From d33ec6038e2128d9ddbf130cf05fc309efc6ca8f Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期一, 25 十一月 2024 18:37:43 +0800 Subject: [PATCH] 开发更新 --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java | 257 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 254 insertions(+), 3 deletions(-) diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java index 4d2465c..e8e6bbc 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java @@ -71,7 +71,6 @@ @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public Integer create(YwContract model) { isParamValidCreated(model); - model.setCreator(model.getLoginUserInfo().getId()); model.setIsdeleted(Constants.ZERO); model.setCreateDate(new Date()); @@ -79,12 +78,89 @@ model.setEditDate(model.getCreateDate()); model.setEditor(model.getCreator()); model.setStatus(Constants.ZERO);//寰呮墽琛� + model.setRemark(getRemarlByParam(model)); ywContractMapper.insert(model); dealDetailListBiz(model);//澶勭悊鏉℃淇℃伅 dealMultifileBiz(model);//澶勭悊闄勪欢淇℃伅 dealLogBiz(model,Constants.YwLogType.CONTRACT_CREATE,null,null);//璁板綍鏂板缓鏃ュ織 return model.getId(); } + + private String getRemarlByParam(YwContract model) { + + String str = ""; + YwContractDetail zl = model.getZlDetailList()!=null&&model.getZlDetailList().size()>0?model.getZlDetailList().get(0):null; + YwContractDetail yw = model.getWyDetailList()!=null&&model.getWyDetailList().size()>0?model.getWyDetailList().get(0):null; + //璧风鏃�2024/06/01锛岀璧佹暟涓�500銕°�傞鏈熺璧佷笁鏈堜竴浠橈紝绉熼噾鍗曚环35鍏�/銕÷锋湀銆傞鏈熺墿涓氫笁鏈堜竴浠橈紝鐗╀笟鍗曚环4.3鍏�/銕÷锋湀 + String str0 = "鍚堝悓鎽樿锛氳捣绉熸棩{param1}锛岀璧佹暟涓簕param2}銕°�傞鏈熺璧亄param3}锛岀閲戝崟浠穥param4}鍏儃param5}銆傞鏈熺墿涓歿param6}锛岀墿涓氬崟浠穥param7}{param8}"; + String str1 = "鍚堝悓鎽樿锛氳捣绉熸棩{param1}锛岀璧佹暟涓簕param2}銕°�傞鏈熺璧亄param3}锛岀閲戝崟浠穥param4}鍏儃param5}銆�"; + String str2 = "鍚堝悓鎽樿锛氳捣绉熸棩{param1}锛岄鏈熺墿涓歿param6}锛岀墿涓氬崟浠穥param7}鍏儃param8}"; + if(Constants.equalsInteger(model.getType(),Constants.ZERO)){ + str= str0; + } + if(Constants.equalsInteger(model.getType(),Constants.ONE)){ + str= str1; + } + if(Constants.equalsInteger(model.getType(),Constants.TWO)){ + str= str2; + } + str = str.replace("{param1}",DateUtil.getDateLongSlash(model.getStartDate())) + .replace("{param2}",model.getTotalArea().intValue()+"") + .replace("{param3}",getPayTypeByNum(model.getZlPayType())) + .replace("{param4}",zl!=null&&zl.getPrice()!=null?(zl.getPrice().intValue()+""):"0") + .replace("{param5}",getPayTypeByNum(model.getWyPayType())) + .replace("{param6}",getUnitTypeByNum(zl)) + .replace("{param7}",zl!=null&&yw.getPrice()!=null?(zl.getPrice().intValue()+""):"0") + .replace("{param8}",getUnitTypeByNum(yw)); + return str; + } + private String getbackRentRemarkByParam(YwContract model) { + BigDecimal fee = Constants.formatBigdecimal(model.getBtFee()); + String str = "閫�绉熸憳瑕侊細鍓╀綑鏈粨娓呰处鍗晎param1}浠斤紝鍏抽棴璐﹀崟{param2}浠姐�愰��绉熸棩{param3}锛岄��绉熻垂鐢ㄥ悎璁¢渶{param4}{param5}鍏冦�傘��"; + str = str.replace("{param1}",model.getBtWaitBill()+"") + .replace("{param2}",DateUtil.getDateLongSlash(model.getBtDate())) + .replace("{param3}",fee.compareTo(new BigDecimal(0)) >=0?"鏀�":"浠�") + .replace("{param4}",(fee.compareTo(new BigDecimal(0)) >=0? + Constants.formatBigdecimal(model.getBtFee()).intValue() + :(Constants.formatBigdecimal(model.getBtFee()).intValue() * -1))+"" ); + return str; + } + + private CharSequence getUnitTypeByNum(YwContractDetail zl) { + if(zl==null){ + return ""; + } + // 浠樻鍛ㄦ湡绫诲瀷 0=鍏冩瘡骞崇背澶╋紱1=鍏冩瘡骞崇背鏈堬紱2=鍏冩瘡骞崇背骞达紱3=鍏冩瘡澶╋紱4=鍏冩瘡鏈堬紱5=鍏冩瘡骞达紱6=鍏冩瘡鍦猴紱 + int zlPayType = Constants.formatIntegerNum(zl.getCircleType()); + if(zlPayType == 1){ + return "鍏�/銕÷锋湀"; + }else if(zlPayType == 2){ + return "鍏�/銕÷峰ぉ"; + }else if(zlPayType == 3){ + return "鍏�/澶�"; + }else if(zlPayType == 4){ + return "鍏�/鏈�"; + }else if(zlPayType == 5){ + return "鍏�/骞�"; + }else if(zlPayType == 6){ + return "鍏�/鍦�"; + } + return "鍏�/銕÷峰ぉ"; + } + + private CharSequence getPayTypeByNum(Integer zlPayType) { + //绉熻祦鏀粯鏂瑰紡 0=涓�娆℃�т粯娆撅紱1=姣忎笁涓湀涓�浠橈紱2=鍏釜鏈堜竴浠橈紱3=涓�骞翠竴浠� + if(zlPayType == 1){ + return "3涓湀涓�浠�"; + }else if(zlPayType == 2){ + return "6涓湀涓�浠�"; + }else if(zlPayType == 3){ + return "1骞翠竴浠�"; + } + return "涓�娆℃�т粯娆�"; + } + + /** * 閫�绉熸彁浜� * @param param @@ -94,6 +170,8 @@ @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public Integer backRent(YwContract param){ isParamValidBackRent(param); + param.setEditDate(new Date()); + param.setEditor(param.getLoginUserInfo().getId()); //澶勭悊 dealBackRentBillBiz(param); YwContract update = new YwContract(); @@ -107,12 +185,152 @@ update.setBtType(param.getBtType()); update.setBtUserId(param.getBtUserId()); update.setBtFee(param.getBtFee()); + update.setBtRemark(getbackRentRemarkByParam(param)); ywContractMapper.updateById(update); dealLogBiz(param,Constants.YwLogType.CONTRACT_BACK,null,null); return param.getId(); } private void dealBackRentBillBiz(YwContract param) { + //鏌ヨ鍚堝悓鍏ㄩ儴璐﹀崟淇℃伅 + List<YwContractBill> closeBills = new ArrayList<>();//甯﹀叧闂� + List<YwContractBill> newBills = new ArrayList<>();//鏂扮殑璐﹀崟 + List<YwContractBill> noBills = new ArrayList<>();//涓嶉渶瑕佺粨绠楃殑璐﹀崟 + List<YwContractBill> yjBills = new ArrayList<>();//鎶奸噾璐﹀崟 + List<YwContractBill> canBills = new ArrayList<>();//鍙��绉熶慨鏀规暟鎹� + List<YwContractBill> allBills = ywContractBillMapper.selectList(new QueryWrapper<YwContractBill>(). + select("*," + + "( select ifnull(sum(yw.ACT_RECEIVABLE_FEE),0) from yw_contract_revenue yw where yw.bill_id = yw_contract_bill.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee " ) + .lambda(). + eq(YwContractBill::getIsdeleted,Constants.ZERO) + .eq(YwContractBill::getContractId,param.getId())); + if(allBills!=null && allBills.size()>0){ + for(YwContractBill bill: allBills){ + //浠樻鐘舵�侊細0=寰呮敹娆撅紱1=宸茬粨娓咃紱2=閮ㄥ垎缁撴竻锛�3=寰呬粯娆撅紱4=寰呴��娆撅紱5=宸插叧闂� + // 濡傛灉鏄娂閲戞垨鑰呬繚璇侀噾锛屼笉鏀寔閫�娆撅紝淇濇寔鍘熸潵鐨勭姸鎬侊紝 0=绉熻祦璐癸紱1=鐗╀笟璐癸紱2=绉熻祦鎶奸噾锛�3=鐗╀笟鎶奸噾锛�4=姘寸數璐癸紱5=鏉傞」璐癸紱6=鍏朵粬;7=淇濊瘉閲� + if(Constants.equalsInteger(Constants.THREE,bill.getCostType()) + || Constants.equalsInteger(Constants.FOUR,bill.getCostType()) + ||Constants.equalsInteger(Constants.SEVEN,bill.getCostType())){ + //鎶奸噾鍜屼繚璇侀噾 + yjBills.add(bill); + continue; + } + if(Constants.equalsInteger(bill.getPayStatus(),Constants.ZERO) + ||Constants.equalsInteger(bill.getPayStatus(),Constants.THREE)){ + if(bill.getStartDate().getTime()>param.getEditDate().getTime()){ + //濡傛灉杩樻病寮�濮嬶紝璐﹀崟鐩存帴鍏抽棴 + closeBills.add(bill); + noBills.add(bill); + }else{ + canBills.add(bill); + } + }else if(Constants.equalsInteger(bill.getPayStatus(),Constants.ONE) ){ + if(bill.getEndDate().getTime()<param.getEditDate().getTime()){ + //濡傛灉宸茬粨娓咃紝璐﹀崟鐩存帴鍏抽棴 + noBills.add(bill); + }else{ + canBills.add(bill); + } + }else if(Constants.equalsInteger(bill.getPayStatus(),Constants.TWO) ){ + canBills.add(bill); + } + } + } + if(closeBills.size()>0){ + //鐩存帴鍏抽棴鍏抽棴璐﹀崟 + for(YwContractBill b : closeBills){ + b.setStatus(Constants.ONE); + b.setEditDate(param.getEditDate()); + b.setEditor(param.getEditor()); + //鍏抽棴璁㈠崟 + ywContractBillMapper.updateById(b); + } + } + int yjNoBills =0; + if(yjBills.size()>0){ + // 濡傛灉鏄娂閲戞垨鑰呬繚璇侀噾锛屼笉鏀寔閫�娆撅紝淇濇寔鍘熸潵鐨勭姸鎬侊紝 0=绉熻祦璐癸紱1=鐗╀笟璐癸紱2=绉熻祦鎶奸噾锛�3=鐗╀笟鎶奸噾锛�4=姘寸數璐癸紱5=鏉傞」璐癸紱6=鍏朵粬;7=淇濊瘉閲� + for(YwContractBill bill : yjBills){ + if(!Constants.equalsInteger(bill.getPayStatus(),Constants.ONE) ){ + //濡傛灉鏄湭缁撴竻鎶奸噾 + yjNoBills ++; + } + } + } + BigDecimal totalBackFee = new BigDecimal(0); + if(canBills.size()>0){ + //鐩存帴鍏抽棴鍏抽棴璐﹀崟 + for(YwContractBill b : canBills){ + BigDecimal fee = new BigDecimal(0); + YwContractBill editBill = getEditBillFromListByParam(b,param.getCanBackRentBills()); + if(editBill != null){ + //浠樻鐘舵�侊細0=寰呮敹娆撅紱1=宸茬粨娓咃紱2=閮ㄥ垎缁撴竻锛�3=寰呬粯娆撅紱4=寰呴��娆撅紱5=宸插叧闂� + //濡傛灉璐﹀崟淇℃伅鍋氫簡缂栬緫锛岄噾棰濊绠� 瀹炴敹閲戦 鍜� 淇敼鍚庡簲鏀堕噾棰濅綔瀵规瘮锛屽垽鏂槸鍚﹀簲璇ラ��娆� + fee = Constants.formatBigdecimal(b.getActReceivableFee()).subtract(editBill.getReceivableFee()); + if(fee.compareTo(new BigDecimal(0))== 0){ + //濡傛灉璐圭敤姝eソ锛屽垯淇敼璐﹀崟淇℃伅涓哄凡缁撴竻 + b.setStatus(Constants.ONE); + }else if(fee.compareTo(new BigDecimal(0))> 0){ + //濡傛灉闇�瑕佽繘琛岄��娆撅紝鏇存柊璐﹀崟淇℃伅涓哄緟閫�娆� + b.setStatus(Constants.FOUR); + }else if(fee.compareTo(new BigDecimal(0)) < 0){ + //濡傛灉璐﹀崟杩樻湁娆惧緟鏀讹紝鍒欎繚鎸佺姸鎬佷笉鍙� + } + } + b.setEditDate(param.getEditDate()); + b.setEditor(param.getEditor()); + b.setBtActDate(param.getBtActDate()); + b.setBtDate(param.getBtDate()); + b.setBtFee(fee); + b.setBtInfo(param.getBtInfo()); + b.setBtUserId(param.getBtUserId()); + b.setBtSignDate(param.getBtSignDate()); + b.setBtType(param.getBtType()); + //鍏抽棴璁㈠崟 + ywContractBillMapper.updateById(b); + totalBackFee = totalBackFee.add(fee);//绱閫�娆鹃噾棰� + } + } + if(param.getAddBillList()!=null && param.getAddBillList().size()>0){ + for(YwContractBill addBill : param.getAddBillList()){ + addBill.setIsdeleted(Constants.ZERO); + addBill.setContractId(param.getId()); + addBill.setType(Constants.ONE); + addBill.setStatus(Constants.ZERO); + if(Constants.equalsInteger(addBill.getBillType(),Constants.ZERO)){ + //濡傛灉鏄敹娆� + totalBackFee = totalBackFee.add(Constants.formatBigdecimal(addBill.getActReceivableFee())); + addBill.setPayStatus(Constants.ZERO); + addBill.setBtFee(Constants.formatBigdecimal(addBill.getActReceivableFee())); + }else{ + //濡傛灉鏄粯娆� + addBill.setPayStatus(Constants.THREE); + addBill.setBtFee(Constants.formatBigdecimal(addBill.getActReceivableFee()).multiply(new BigDecimal(-1))); + } + totalBackFee = totalBackFee.add(Constants.formatBigdecimal(addBill.getBtFee())); + addBill.setEditDate(param.getEditDate()); + addBill.setEditor(param.getEditor()); + addBill.setBtActDate(param.getBtActDate()); + addBill.setBtDate(param.getBtDate()); + addBill.setBtInfo(param.getBtInfo()); + addBill.setBtUserId(param.getBtUserId()); + addBill.setBtSignDate(param.getBtSignDate()); + addBill.setBtType(param.getBtType()); + newBills.add(addBill); + } + ywContractBillMapper.insert(param.getAddBillList());//鎵归噺鎻掑叆鏁版嵁 + } + param.setBtWaitBill(canBills.size() + newBills.size()+yjNoBills);//鏈竻绠楃殑璐﹀崟鏁伴噺 + param.setBtCLoseBill(closeBills.size()); + param.setBtFee(totalBackFee); + } + + private YwContractBill getEditBillFromListByParam(YwContractBill b, List<YwContractBill> canBackRentBills) { + for(YwContractBill d : canBackRentBills){ + if(Constants.equalsInteger(b.getId(),d.getId())){ + return d; + } + } + return null; } private void isParamValidBackRent(YwContract param) { @@ -138,11 +356,14 @@ if(bill.getCostType() == null ||bill.getFeeType() == null ||bill.getReceivableFee() == null + ||bill.getReceivableFee().compareTo(new BigDecimal(0)) < 1 ||bill.getCompanyId() == null ||bill.getPlanPayDate() == null - ||(Constants.equalsInteger(bill.getFeeType(),Constants.ZERO) + ||bill.getBillType() == null + ||(Constants.equalsInteger(bill.getBillType(),Constants.ZERO) + &&Constants.equalsInteger(bill.getFeeType(),Constants.ZERO) && (bill.getStartDate() ==null || bill.getEndDate() ==null) )){ - + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇锋寜瑕佹眰濉啓鑷缓璐﹀崟淇℃伅锛�"); } } } @@ -626,6 +847,10 @@ if(rooms.size() != rooms.size()){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝瀛樺湪鏃犳晥鐨勬埧婧愪俊鎭紒"); } + model.setTotalArea(new BigDecimal(0)); + for(YwRoom r : rooms){ + model.setTotalArea(model.getTotalArea().add(Constants.formatBigdecimal(r.getArea()))); + } YwCustomer customer = customerMapper.selectById(model.getRenterId()); if(customer ==null || Constants.equalsInteger(customer.getIsdeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝閫夋嫨绉熷淇℃伅涓嶅瓨鍦紝璇疯繑鍥炲埛鏂伴噸璇曪紒"); @@ -762,6 +987,32 @@ .eq( YwContractBill::getContractId,model.getId()) .eq(YwContractBill::getIsdeleted,Constants.ZERO) .orderByAsc(YwContractBill::getSortnum,YwContractBill::getCreateDate))); + model.setCanBackRentBills(new ArrayList<>()); + long nowStart = Utils.Date.getStart(new Date()).getTime(); + long nowEnd = Utils.Date.getEnd(new Date()).getTime(); + if(model.getBillList()!=null && model.getBillList().size()>0){ + for(YwContractBill bill: model.getBillList()){ + //浠樻鐘舵�侊細0=寰呮敹娆撅紱1=宸茬粨娓咃紱2=閮ㄥ垎缁撴竻锛�3=寰呬粯娆撅紱4=寰呴��娆撅紱5=宸插叧闂� + if(Constants.equalsInteger(bill.getPayStatus(),Constants.ZERO) + ||Constants.equalsInteger(bill.getPayStatus(),Constants.THREE)){ + if(bill.getStartDate().getTime()>nowEnd){ + //濡傛灉杩樻病寮�濮嬶紝璐﹀崟鐩存帴鍏抽棴 + continue; + } + model.getCanBackRentBills().add(bill); + + }else if(Constants.equalsInteger(bill.getPayStatus(),Constants.ONE) ){ + if(bill.getEndDate().getTime()<nowStart){ + //濡傛灉宸茬粨娓咃紝璐﹀崟鐩存帴鍏抽棴 + continue; + } + model.getCanBackRentBills().add(bill); + }else if(Constants.equalsInteger(bill.getPayStatus(),Constants.TWO) ){ + model.getCanBackRentBills().add(bill); + } + } + } + } return model; -- Gitblit v1.9.3