From d7dca690cedd12e271f0ee0b9050679d73796f5c Mon Sep 17 00:00:00 2001 From: MrShi <1878285526@qq.com> Date: 星期一, 06 一月 2025 09:28:10 +0800 Subject: [PATCH] 1 --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java | 137 +++++++++++++++++++++++++++++---------------- 1 files changed, 88 insertions(+), 49 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 0b19f67..9e3df6e 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 @@ -31,6 +31,7 @@ import org.springframework.util.CollectionUtils; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.temporal.ChronoUnit; import java.util.*; import java.util.stream.Collectors; @@ -74,13 +75,20 @@ @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()); - model.setStatus(Constants.ZERO); model.setEditDate(model.getCreateDate()); model.setEditor(model.getCreator()); - model.setStatus(Constants.ZERO);//寰呮墽琛� + if(model.getStartDate().getTime() > System.currentTimeMillis()){ + model.setStatus(Constants.ZERO); + }else if(model.getStartDate().getTime() <= System.currentTimeMillis() && model.getEndDate().getTime() > System.currentTimeMillis()){ + model.setStatus(Constants.ONE); + }else{ + model.setStatus(Constants.TWO); + } model.setRemark(getRemarlByParam(model)); ywContractMapper.insert(model); dealDetailListBiz(model);//澶勭悊鏉℃淇℃伅 @@ -268,7 +276,7 @@ } model.setTotalArea(new BigDecimal(0)); for(YwRoom r : rooms){ - model.setTotalArea(model.getTotalArea().add(Constants.formatBigdecimal(r.getArea()))); + model.setTotalArea(model.getTotalArea().add(Constants.formatBigdecimal(r.getRentArea()))); } model.setRoomList(rooms); } @@ -307,16 +315,19 @@ .replace("{param3}",DateUtil.getDateLongSlash(model.getBtDate())) .replace("{param4}",fee.compareTo(new BigDecimal(0)) >=0?"鏀�":"浠�") .replace("{param5}",(fee.compareTo(new BigDecimal(0)) >=0? - Constants.formatBigdecimal(model.getBtFee()).intValue() - :(Constants.formatBigdecimal(model.getBtFee()).intValue() * -1))+"" ); + Constants.formatBigdecimal2Float(model.getBtFee()) + :(Constants.formatBigdecimal2Float(model.getBtFee()).multiply(new BigDecimal(-1)))).toString()); return str; } private String getbackRentLogByParam(YwContract model) { BigDecimal fee = Constants.formatBigdecimal(model.getBtFee()); - String str = "銆愰��绉熸棩{param1}锛岄��绉熷師鍥狅細{param2},閫�绉熷崗璁腑缁熻鐨勮垂鐢ㄦ�昏{param3}鍏冦�傘��"; + String str = "銆愰��绉熸棩{param1}锛岄��绉熷師鍥狅細{param2},閫�绉熷崗璁腑缁熻鐨勮垂鐢ㄦ�昏闇�{param4}{param5}鍏冦�傘��"; str = str.replace("{param1}",DateUtil.getDateLongSlash(model.getBtDate())) .replace("{param2}",StringUtils.defaultString(model.getBtInfo(),"")) - .replace("{param3}",Constants.formatBigdecimal2Float(model.getBtFee()).doubleValue()+""); + .replace("{param4}",fee.compareTo(new BigDecimal(0)) >=0?"鏀�":"浠�") + .replace("{param5}",(fee.compareTo(new BigDecimal(0)) >=0? + Constants.formatBigdecimal2Float(model.getBtFee()) + :(Constants.formatBigdecimal2Float(model.getBtFee()).multiply(new BigDecimal(-1)))).toString()); return str; } @@ -353,9 +364,6 @@ update.setBtFee(param.getBtFee()); update.setBtRemark(getbackRentRemarkByParam(param)); ywContractMapper.updateById(update); -// if(1==1){ -// throw new BusinessException(ResponseStatus.NOT_ALLOWED); -// } dealLogBiz(param,Constants.YwLogType.CONTRACT_BACK, param.getLoginUserInfo().getRealname(),getbackRentLogByParam(param)); return param.getId(); } @@ -391,6 +399,7 @@ List<YwContractBill> noBills = new ArrayList<>();//涓嶉渶瑕佺粨绠楃殑璐﹀崟 List<YwContractBill> yjBills = new ArrayList<>();//鎶奸噾璐﹀崟 List<YwContractBill> canBills = new ArrayList<>();//鍙��绉熶慨鏀规暟鎹� + Integer canBillCount = Constants.ZERO; List<YwContractBill> allBills = ywContractBillMapper.selectList(new QueryWrapper<YwContractBill>(). select("*," + "( select ifnull(sum(case when yw.REVENUE_TYPE = 0 then yw.ACT_RECEIVABLE_FEE else -yw.ACT_RECEIVABLE_FEE end),0) from yw_contract_revenue yw where yw.bill_id = yw_contract_bill.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee " ) @@ -410,30 +419,25 @@ } if(Constants.equalsInteger(bill.getPayStatus(),Constants.ZERO) ||Constants.equalsInteger(bill.getPayStatus(),Constants.THREE)){ - if(bill.getStartDate().getTime()<param.getBtDate().getTime()){ + if(bill.getStartDate().getTime()<=param.getBtDate().getTime()){ canBills.add(bill); + canBillCount = canBillCount ++; }else{ //濡傛灉杩樻病寮�濮嬶紝璐﹀崟鐩存帴鍏抽棴 closeBills.add(bill); noBills.add(bill); } -// 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.getStartDate().getTime()>param.getBtDate().getTime()){ -// if(bill.getEndDate().getTime()<param.getEditDate().getTime()){ //濡傛灉宸茬粨娓咃紝璐﹀崟鐩存帴鍏抽棴 noBills.add(bill); }else{ canBills.add(bill); + canBillCount = canBillCount ++; } }else if(Constants.equalsInteger(bill.getPayStatus(),Constants.TWO) ){ canBills.add(bill); + canBillCount = canBillCount ++; } } } @@ -450,25 +454,26 @@ 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()); + fee = editBill.getReceivableFee().subtract(Constants.formatBigdecimal(b.getActReceivableFee())); if(fee.compareTo(new BigDecimal(0))== 0){ //濡傛灉璐圭敤姝eソ锛屽垯淇敼璐﹀崟淇℃伅涓哄凡缁撴竻 b.setPayStatus(Constants.ONE); + canBillCount = canBillCount --; }else if(fee.compareTo(new BigDecimal(0))> 0){ //濡傛灉闇�瑕佽繘琛岄��娆撅紝鏇存柊璐﹀崟淇℃伅涓哄緟閫�娆� b.setPayStatus(Constants.FOUR); }else if(fee.compareTo(new BigDecimal(0)) < 0){ //濡傛灉璐﹀崟杩樻湁娆惧緟鏀讹紝鍒欎繚鎸佺姸鎬佷笉鍙� } + b.setReceivableFee(editBill.getReceivableFee()); } - b.setReceivableFee(editBill.getReceivableFee()); b.setEditDate(param.getEditDate()); b.setEditor(param.getEditor()); b.setBtActDate(param.getBtActDate()); @@ -487,21 +492,25 @@ for(YwContractBill addBill : param.getAddBillList()){ addBill.setIsdeleted(Constants.ZERO); addBill.setContractId(param.getId()); - addBill.setType(Constants.ONE); + addBill.setCreateDate(new Date()); + addBill.setCreator(param.getEditor()); + addBill.setType(Constants.TWO); addBill.setStatus(Constants.ZERO); + addBill.setTotleFee(addBill.getReceivableFee()); + addBill.setCompanyId(param.getCompanyId()); if(Constants.equalsInteger(addBill.getFeeType(),Constants.ONE)){ addBill.setStartDate(addBill.getPlanPayDate()); addBill.setEndDate(addBill.getPlanPayDate()); } if(Constants.equalsInteger(addBill.getBillType(),Constants.ZERO)){ //濡傛灉鏄敹娆� - totalBackFee = totalBackFee.add(Constants.formatBigdecimal(addBill.getActReceivableFee())); +// totalBackFee = totalBackFee.add(Constants.formatBigdecimal(addBill.getActReceivableFee())); addBill.setPayStatus(Constants.ZERO); - addBill.setBtFee(Constants.formatBigdecimal(addBill.getActReceivableFee())); + addBill.setBtFee(Constants.formatBigdecimal(addBill.getReceivableFee())); }else{ //濡傛灉鏄粯娆� addBill.setPayStatus(Constants.THREE); - addBill.setBtFee(Constants.formatBigdecimal(addBill.getActReceivableFee()).multiply(new BigDecimal(-1))); + addBill.setBtFee(Constants.formatBigdecimal(addBill.getReceivableFee()).multiply(new BigDecimal(-1))); } totalBackFee = totalBackFee.add(Constants.formatBigdecimal(addBill.getBtFee())); addBill.setEditDate(param.getEditDate()); @@ -530,15 +539,23 @@ yjBill.setEditDate(param.getEditDate()); yjBill.setEditor(param.getEditor()); yjBill.setReceivableFee(BigDecimal.ZERO); - yjBill.setPayStatus(Constants.FOUR); - yjBill.setPlanPayDate(canBill.getPlanPayDate()); + if(Constants.formatBigdecimal(canBill.getActReceivableFee()).compareTo(new BigDecimal(0)) == 0){ + //鏈敮浠樼殑鎶奸噾锛岀洿鎺ュ叧闂� + yjBill.setStatus(Constants.ONE); + closeBills.add(yjBill); + }else{ + yjBill.setBtFee(Constants.formatBigdecimal(canBill.getActReceivableFee()).multiply(new BigDecimal(-1))); + yjBill.setPayStatus(Constants.FOUR); + yjBill.setPlanPayDate(canBill.getPlanPayDate()); + totalBackFee = totalBackFee.add(Constants.formatBigdecimal(yjBill.getBtFee())); + yjNoBills ++; + } ywContractBillMapper.updateById(yjBill); } } - yjNoBills ++; } } - param.setBtWaitBill(canBills.size() + newBills.size()+yjNoBills);//鏈竻绠楃殑璐﹀崟鏁伴噺 + param.setBtWaitBill(canBillCount + newBills.size()+yjNoBills);//鏈竻绠楃殑璐﹀崟鏁伴噺 param.setBtCLoseBill(closeBills.size()); param.setBtFee(totalBackFee); } @@ -690,12 +707,22 @@ } int num =1; for(int i=0;i<billList1.size();i++){ - billList1.get(i).setSortnum(num); - num++; + if(Constants.formatBigdecimal(billList1.get(i).getReceivableFee()).compareTo(new BigDecimal(0)) == 0){ + billList1.get(i).setPayStatus(Constants.ONE); + } + if(Constants.equalsInteger(billList1.get(i).getCostType(),Constants.ZERO)){ + billList1.get(i).setSortnum(num); + num++; + } } for(int i=0;i<billList2.size();i++){ - billList2.get(i).setSortnum(num); - num++; + if(Constants.formatBigdecimal(billList2.get(i).getReceivableFee()).compareTo(new BigDecimal(0)) == 0){ + billList2.get(i).setPayStatus(Constants.ONE); + } + if(Constants.equalsInteger(billList2.get(i).getCostType(),Constants.ONE)) { + billList2.get(i).setSortnum(num); + num++; + } } if(model.getId()!=null){ ywContractBillMapper.insert(billList1); @@ -841,34 +868,37 @@ BigDecimal totalFee = new BigDecimal(0); DateCompare dateCompare = DateCompare.dayCompare(bill.getStartDate(),bill.getEndDate(),freeStart, freeEnd); if(Constants.equalsInteger(d.getCircleType(),Constants.ZERO)){ - //0=鍏冩瘡骞崇背澶� + //0=鍏冩瘡骞崇背澶� 璐﹀崟閲戦=璐﹀崟鍛ㄦ湡鐨勫ぉ鏁�*绉熻祦闈㈢Н*鍗曚环锛� int days = dateCompare.getDay() ; BigDecimal areas = getAreasNumBYRooms(model.getRoomList()); totalFee = new BigDecimal(days).multiply(areas).multiply(Constants.formatBigdecimal(d.getPrice()));//鎬讳环鏍� }else if(Constants.equalsInteger(d.getCircleType(),Constants.ONE)){ - //1=鍏冩瘡骞崇背鏈� + //1=鍏冩瘡骞崇背鏈� 璐﹀崟閲戦=璐﹀崟鍛ㄦ湡鐨勬湀鏁帮紙寮�濮嬫棩鏈熻绠楄嚜鐒舵湀锛�*绉熻祦闈㈢Н*鍗曚环+涓嶆弧涓�涓湀鐨勫ぉ鏁�*绉熻祦闈㈢Н*鍗曚环*12/365锛� BigDecimal areas = getAreasNumBYRooms(model.getRoomList()); BigDecimal month =dateCompare.getMonthFloat(); totalFee = month.multiply(areas).multiply(Constants.formatBigdecimal(d.getPrice()));//鎬讳环鏍� }else if(Constants.equalsInteger(d.getCircleType(),Constants.TWO)){ - //2=鍏冩瘡骞崇背骞� + //2=鍏冩瘡骞崇背骞� 璐﹀崟閲戦=璐﹀崟鍛ㄦ湡鐨勬湀鏁帮紙寮�濮嬫棩鏈熻绠楄嚜鐒舵湀锛�*鍗曚环*闈㈢Н/12+涓嶆弧涓�涓湀鐨勫ぉ鏁�*绉熻祦闈㈢Н*鍗曚环/365锛� BigDecimal areas = getAreasNumBYRooms(model.getRoomList()); - BigDecimal year = dateCompare.getYearFloat(); - totalFee = year.multiply(areas).multiply(Constants.formatBigdecimal(d.getPrice()));//鎬讳环鏍� + BigDecimal month = new BigDecimal(dateCompare.getMonth()); + totalFee = ((month.multiply(Constants.formatBigdecimal(d.getPrice())).divide(new BigDecimal(12),2, RoundingMode.HALF_UP)) + .add(new BigDecimal(dateCompare.getMonthDays()).multiply(Constants.formatBigdecimal(d.getPrice())).divide(new BigDecimal(365),2, RoundingMode.HALF_UP))) + .multiply(areas);//鎬讳环鏍� }else if(Constants.equalsInteger(d.getCircleType(),Constants.THREE)){ - //3=鍏冩瘡澶� + //3=鍏冩瘡澶� 璐﹀崟閲戦=璐﹀崟鍛ㄦ湡鐨勫ぉ鏁�*鍗曚环锛� int days = dateCompare.getDay() ; totalFee = new BigDecimal(days).multiply(Constants.formatBigdecimal(d.getPrice()));//鎬讳环鏍� }else if(Constants.equalsInteger(d.getCircleType(),Constants.FOUR)){ - //4=鍏冩瘡鏈� + //4=鍏冩瘡鏈� 璐﹀崟閲戦=璐﹀崟鍛ㄦ湡鐨勬湀鏁帮紙寮�濮嬫棩鏈熻绠楄嚜鐒舵湀锛�*鍗曚环+涓嶆弧涓�涓湀鐨勫ぉ鏁�*鍗曚环*12/365 BigDecimal month = dateCompare.getMonthFloat(); totalFee = month.multiply(Constants.formatBigdecimal(d.getPrice()));//鎬讳环鏍� }else if(Constants.equalsInteger(d.getCircleType(),Constants.FIVE)){ - //5=鍏冩瘡骞� - BigDecimal year = dateCompare.getYearFloat(); - totalFee = year.multiply(Constants.formatBigdecimal(d.getPrice()));//鎬讳环鏍� + //5=鍏冩瘡骞� 璐﹀崟閲戦=璐﹀崟鍛ㄦ湡鐨勬湀鏁帮紙寮�濮嬫棩鏈熻绠楄嚜鐒舵湀锛�*鍗曚环*闈㈢Н/12+涓嶆弧涓�涓湀鐨勫ぉ鏁�*绉熻祦闈㈢Н*鍗曚环/365锛� + BigDecimal month = new BigDecimal(dateCompare.getMonth()); + totalFee =( month.multiply(Constants.formatBigdecimal(d.getPrice())).divide(new BigDecimal(12),2, RoundingMode.HALF_UP)) + .add(new BigDecimal(dateCompare.getMonthDays()).multiply(Constants.formatBigdecimal(d.getPrice())).divide(new BigDecimal(365),2, RoundingMode.HALF_UP));//鎬讳环鏍� }else if(Constants.equalsInteger(d.getCircleType(),Constants.SIX)){ - //6=鍏冩瘡鍦� + //6=鍏冩瘡鍦� 璐﹀崟閲戦=鍗曚环锛涘彧鏈夐�夋嫨涓�娆℃�т粯娆炬椂锛屾墠鑳介�夋嫨璇ュ崟浠风淮搴︼紱 totalFee =Constants.formatBigdecimal(d.getPrice()); } if(Constants.equalsInteger(model.getRoundedUp(),Constants.ONE)){ @@ -939,7 +969,7 @@ BigDecimal data= new BigDecimal(0); if(roomList!=null){ for(YwRoom r :roomList){ - data = data.add(Constants.formatBigdecimal(r.getArea())); + data = data.add(Constants.formatBigdecimal(r.getRentArea())); } } @@ -1133,7 +1163,7 @@ } model.setTotalArea(new BigDecimal(0)); for(YwRoom r : rooms){ - model.setTotalArea(model.getTotalArea().add(Constants.formatBigdecimal(r.getArea()))); + model.setTotalArea(model.getTotalArea().add(Constants.formatBigdecimal(r.getRentArea()))); } model.setRoomList(rooms); YwCustomer customer = customerMapper.selectById(model.getRenterId()); @@ -1307,13 +1337,17 @@ } model.setCanBackRentBills(new ArrayList<>()); long nowStart = Utils.Date.getStart(date).getTime(); - long nowEnd = Utils.Date.getEnd(date).getTime(); + long nowEnd = Utils.Date.getDayEnd(date).getTime(); if(model.getBillList()!=null && model.getBillList().size()>0){ for(YwContractBill bill: model.getBillList()){ //浠樻鐘舵�侊細0=寰呮敹娆撅紱1=宸茬粨娓咃紱2=閮ㄥ垎缁撴竻锛�3=寰呬粯娆撅紱4=寰呴��娆撅紱5=宸插叧闂� + if( Constants.formatBigdecimal(bill.getReceivableFee()).compareTo(new BigDecimal(0)) ==0){ + //濡傛灉杩樻病寮�濮嬶紝璐﹀崟鐩存帴鍏抽棴 + continue; + } if(Constants.equalsInteger(bill.getPayStatus(),Constants.ZERO) ||Constants.equalsInteger(bill.getPayStatus(),Constants.THREE)){ - if(bill.getStartDate().getTime()>nowEnd){ + if(bill.getStartDate().getTime()>nowEnd ){ //濡傛灉杩樻病寮�濮嬶紝璐﹀崟鐩存帴鍏抽棴 continue; } @@ -1490,6 +1524,11 @@ queryWrapper.ge(YwContract::getWyFreeEndDate, Utils.Date.getStart(pageWrap.getModel().getWyFreeEndDate())); queryWrapper.le(YwContract::getWyFreeEndDate, Utils.Date.getEnd(pageWrap.getModel().getWyFreeEndDate())); } + + + + + if (pageWrap.getModel().getZlTotalFee() != null) { queryWrapper.eq(YwContract::getZlTotalFee, pageWrap.getModel().getZlTotalFee()); } -- Gitblit v1.9.3