From f1864f6d2d85b49fc901b22e9f6759a5d0fb360b Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期二, 26 十一月 2024 09:33:03 +0800 Subject: [PATCH] 开发更新 --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java | 329 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 310 insertions(+), 19 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 bf37d57..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,34 +78,295 @@ 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 model + * @param param * @return */ @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) - public Integer backRent(YwContract model){ - isParamValidCreated(model); + public Integer backRent(YwContract param){ + isParamValidBackRent(param); + param.setEditDate(new Date()); + param.setEditor(param.getLoginUserInfo().getId()); + //澶勭悊 + dealBackRentBillBiz(param); + YwContract update = new YwContract(); + update.setEditDate(new Date()); + update.setEditor(param.getLoginUserInfo().getId()); + update.setBtActDate(update.getEditDate()); + update.setBtActUserId(update.getEditor()); + update.setStatus(Constants.THREE); + update.setBtInfo(param.getBtInfo()); + update.setBtDate(param.getBtDate()); + 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(); + } - 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);//寰呮墽琛� - ywContractMapper.insert(model); - dealDetailListBiz(model);//澶勭悊鏉℃淇℃伅 - dealMultifileBiz(model);//澶勭悊闄勪欢淇℃伅 - dealLogBiz(model,Constants.YwLogType.CONTRACT_CREATE,null,null);//璁板綍鏂板缓鏃ュ織 - return model.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) { + if(param.getId()==null + || param.getBtType() == null + || param.getBtDate() == null + || param.getBtUserId() == null + || param.getBtSignDate() == null + ||StringUtils.isBlank( param.getBtInfo())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + YwContract model = ywContractMapper.selectById(param.getId()); + if(model==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝鍚堝悓淇℃伅涓嶅瓨鍦紝璇疯繑鍥炲垪琛ㄥ埛鏂伴噸璇曪紒"); + } + + SystemUser user = systemUserMapper.selectById(param.getUserId()); + if(user ==null || (user.getDeleted()!=null&& user.getDeleted() )){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝缁忓姙浜轰俊鎭笉瀛樺湪锛�"); + } + if(param.getAddBillList()!=null && param.getAddBillList().size()>0){ + for(YwContractBill bill: param.getAddBillList()){ + if(bill.getCostType() == null + ||bill.getFeeType() == null + ||bill.getReceivableFee() == null + ||bill.getReceivableFee().compareTo(new BigDecimal(0)) < 1 + ||bill.getCompanyId() == null + ||bill.getPlanPayDate() == null + ||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(),"瀵逛笉璧凤紝璇锋寜瑕佹眰濉啓鑷缓璐﹀崟淇℃伅锛�"); + } + } + } } private void dealDetailListBiz(YwContract model) { @@ -211,10 +471,10 @@ bill.setStatus(Constants.ZERO); bill.setStartDate(model.getStartDate()); bill.setEndDate(model.getEndDate()); - bill.setType(type); + bill.setType(Constants.ZERO); + bill.setCostType(type); bill.setTotleFee(type==Constants.THREE?model.getZlDeposit():model.getWyDeposit());//鎶奸噾璐圭敤 bill.setSortnum(0); - bill.setTitle(type==Constants.THREE?"绉熻祦鎶奸噾":"鐗╀笟鎶奸噾" ); return bill; } @@ -416,7 +676,8 @@ bill.setContractId(model.getId()); bill.setStatus(Constants.ZERO); bill.setDetailId(d.getId()); - bill.setType(d.getType()); + bill.setCostType(d.getType()); + bill.setType(Constants.ZERO); return bill; } @@ -586,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(),"瀵逛笉璧凤紝閫夋嫨绉熷淇℃伅涓嶅瓨鍦紝璇疯繑鍥炲埛鏂伴噸璇曪紒"); @@ -722,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