From a2299a6d4a6f99e9c11132138f5d3e9ec68f03ea Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 06 六月 2025 19:19:34 +0800
Subject: [PATCH] 开发更新

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java |  274 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 228 insertions(+), 46 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java
index e941edb..e456e57 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java
@@ -28,6 +28,7 @@
 import org.apache.commons.lang3.StringUtils;
 import org.checkerframework.checker.units.qual.C;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
@@ -66,11 +67,17 @@
     private YwContractMapper ywContractMapper;
 
     @Autowired
+    private YwAccountMapper ywAccountMapper;
+
+    @Autowired
     private MemberMapper memberMapper;
 
     @Autowired
     private YwTempConfigMapper ywTempConfigMapper;
 
+
+    @Value("${zip_file_path}")
+    private String zipFilePath;
 
     @Override
     public Integer create(YwContractBill ywContractBill) {
@@ -225,6 +232,17 @@
                 ywContractBill.getReceivableFee().subtract(ywContractBill.getActReceivableFee())
         );
 
+        if(Constants.equalsInteger(ywContractBill.getStatus(),Constants.ZERO)
+                && (Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.ZERO)
+                || Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.TWO)
+                || Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.THREE)
+                || Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.FOUR))
+                && Utils.Date.getEnd(ywContractBill.getPlanPayDate()).getTime() < System.currentTimeMillis()){
+            ywContractBill.setIsOverdue(Constants.ONE);
+        }else{
+            ywContractBill.setIsOverdue(Constants.ZERO);
+        }
+
         //鎴挎簮鏁版嵁
         ywContractBill.setYwContractRoomList(
                 ywContractRoomMapper.selectJoinList(YwContractRoom.class,new MPJLambdaWrapper<YwContractRoom>()
@@ -232,8 +250,8 @@
                 .selectAs(YwProject::getName,YwRoom::getProjectName)
                 .selectAs(YwFloor::getName,YwRoom::getFloorName)
                 .selectAs(YwBuilding::getName,YwRoom::getBuildingName)
-                .selectAs(YwRoom::getCode,YwContractRoom::getRoomName)
-                .selectAs(YwRoom::getArea,YwContractRoom::getArea)
+                .selectAs(YwRoom::getRoomNum,YwContractRoom::getRoomName)
+                .selectAs(YwRoom::getRentArea,YwContractRoom::getArea)
                 .leftJoin(YwRoom.class,YwRoom::getId,YwContractRoom::getRoomId)
                 .leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor)
                 .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId)
@@ -338,7 +356,7 @@
                 || Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.TWO)
                 || Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.THREE)
                 || Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.FOUR))
-            && ywContractBill.getPlanPayDate().getTime() < System.currentTimeMillis()){
+            && Utils.Date.getEnd(ywContractBill.getPlanPayDate()).getTime() < System.currentTimeMillis()){
                 ywContractBill.setIsOverdue(Constants.ONE);
             }else{
                 ywContractBill.setIsOverdue(Constants.ZERO);
@@ -385,6 +403,8 @@
         IPage<YwContractBill> iPage = ywContractBillMapper.selectJoinPage(page,YwContractBill.class,
                 queryWrapper.selectAll(YwContractBill.class)
                         .select(" ( select ifnull( sum( CASE WHEN t.bill_type = 0 and yw.REVENUE_TYPE = 0 THEN yw.ACT_RECEIVABLE_FEE when  t.bill_type = 0 and yw.REVENUE_TYPE = 1 then -yw.ACT_RECEIVABLE_FEE  when t.bill_type = 1 and 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 = t.id and yw.status = 0 and yw.isdeleted = 0 ) as  actReceivableFee  ")
+                        .select(" ifnull((select s.status  from sms_email s where s.OBJ_ID = t.id and s.OBJ_TYPE = 2 order by s.CREATE_DATE desc  limit 1 ),0)  ",YwContractBill::getIsSendEmail)
+                        .select(" ifnull((select s.status  from sms_email s where s.OBJ_ID = t.id and s.OBJ_TYPE = 1 order by s.CREATE_DATE desc  limit 1 ),0)  ",YwContractBill::getIsSendSms)
                         .selectAs(YwContract::getCode,YwContractBill::getContractCode)
                         .selectAs(YwCustomer::getName,YwContractBill::getCustomerName)
                         .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
@@ -398,12 +418,12 @@
                                 YwContractBill::getBillType,model.getBillType())
                         .eq(Objects.nonNull(model)&&Objects.nonNull(model.getPayStatus()),
                                 YwContractBill::getPayStatus,model.getPayStatus())
-                        .in(Objects.nonNull(model)&&Objects.nonNull(model.getPayStatus()),
-                                YwContractBill::getPayStatus,Constants.ZERO,Constants.THREE,Constants.TWO,Constants.FOUR)
+                        .in(YwContractBill::getPayStatus,Constants.ZERO,Constants.TWO,Constants.THREE)
                         .eq(Objects.nonNull(model)&&Objects.nonNull(model.getType()),
                                 YwContractBill::getType,model.getType())
                         .le(Objects.nonNull(model)&&Objects.nonNull(model.getIsOverdue())&&Constants.equalsInteger(model.getIsOverdue(),Constants.ONE),
                                 YwContractBill::getPlanPayDate, DateUtil.getCurrDateTime())
+                        .lt(YwContractBill::getPlanPayDate, DateUtil.getDate(new Date(),"yyyy-MM-dd"))
                         .eq(Objects.nonNull(model)&&Objects.nonNull(model.getIsOverdue())&&Constants.equalsInteger(model.getIsOverdue(),Constants.ONE),
                                 YwContractBill::getStatus, Constants.ZERO)
                         .ge(Objects.nonNull(model)&&Objects.nonNull(model.getPlanPayDateStart()),YwContractBill::getPlanPayDate, Utils.Date.getStart(model.getPlanPayDateStart()))
@@ -448,7 +468,7 @@
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBillList)){
             //鑾峰彇鎵�鏈夋暟鎹�
             List<Integer> billIdList = ywContractBillList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).map(i->i.getId()).collect(Collectors.toList());
-            List<Integer> contractIdList = ywContractBillList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).map(i->i.getContractId()).collect(Collectors.toList());
+            List<Integer> contractIdList = ywContractBillList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)||Constants.equalsInteger(i.getType(),Constants.TWO)).map(i->i.getContractId()).collect(Collectors.toList());
             List<YwContractRoom> ywContractRoomList  = new ArrayList<>();
             if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(billIdList)){
                 ywContractRoomList.addAll( ywContractRoomMapper.selectJoinList(YwContractRoom.class,new MPJLambdaWrapper<YwContractRoom>()
@@ -456,7 +476,7 @@
                         .selectAs(YwProject::getName,YwRoom::getProjectName)
                         .selectAs(YwFloor::getName,YwRoom::getFloorName)
                         .selectAs(YwBuilding::getName,YwRoom::getBuildingName)
-                        .selectAs(YwRoom::getCode,YwContractRoom::getRoomName)
+                        .selectAs(YwRoom::getRoomNum,YwContractRoom::getRoomName)
                         .leftJoin(YwRoom.class,YwRoom::getId,YwContractRoom::getRoomId)
                         .leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor)
                         .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId)
@@ -472,7 +492,7 @@
                         .selectAs(YwProject::getName,YwRoom::getProjectName)
                         .selectAs(YwFloor::getName,YwRoom::getFloorName)
                         .selectAs(YwBuilding::getName,YwRoom::getBuildingName)
-                        .selectAs(YwRoom::getCode,YwContractRoom::getRoomName)
+                        .selectAs(YwRoom::getRoomNum,YwContractRoom::getRoomName)
                         .leftJoin(YwRoom.class,YwRoom::getId,YwContractRoom::getRoomId)
                         .leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor)
                         .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId)
@@ -593,6 +613,7 @@
             .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
             .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId)
             .eq(YwContractBill::getIsdeleted,Constants.ZERO)
+            .eq(YwContractBill::getStatus,Constants.ZERO)
             .in(YwContractBill::getPayStatus,Constants.ZERO,Constants.TWO,Constants.THREE,Constants.FOUR)
             .eq(YwContractBill::getContractId,contractId)
             .orderByDesc(YwContractBill::getId);
@@ -682,12 +703,14 @@
                     .selectAs(YwContractDetail::getType,YwContractBill::getDetailType)
                     .selectAs(YwContract::getZlPayType,YwContractBill::getZlPayType)
                     .selectAs(YwContract::getWyPayType,YwContractBill::getWyPayType)
-                    .select(" ( select ifnull(sum(r.rent_area),0) from yw_room y left join yw_contract_room yr on y.id = yr.room_id where yr.contract_id = t.contract_id and y.IS_INVESTMENT = 0 and yr.type = 0 )  " , YwContractBill::getTotalArea)
+                    .select(" ( select ifnull(sum(y.rent_area),0) from yw_room y left join yw_contract_room yr on y.id = yr.room_id where yr.contract_id = t.contract_id and y.IS_INVESTMENT = 1 and yr.type = 0 )  " , YwContractBill::getTotalArea)
+                    .select(" ( select ifnull( sum( CASE WHEN t.bill_type = 0 and yw.REVENUE_TYPE = 0 THEN yw.ACT_RECEIVABLE_FEE when  t.bill_type = 0 and yw.REVENUE_TYPE = 1 then -yw.ACT_RECEIVABLE_FEE  when t.bill_type = 1 and 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 = t.id and yw.status = 0 and yw.isdeleted = 0 ) as  actReceivableFee  ")
                     .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
                     .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId)
                     .leftJoin(YwContractDetail.class,YwContractDetail::getId,YwContractBill::getDetailId)
                     .in(YwContractBill::getId,billIds)
             );
+            this.dealRoomDetail(ywContractBillList);
             List<YwTempConfig> ywTempConfigList = ywTempConfigMapper.selectList(new QueryWrapper<YwTempConfig>().lambda().eq(YwTempConfig::getIsdeleted,Constants.ZERO));
             if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(ywTempConfigList)){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈煡璇㈠埌妯℃澘閰嶇疆椤�,璇疯仈绯荤鐞嗗憳");
@@ -700,7 +723,7 @@
             }
             List<File> fileList = new ArrayList<>();
             for (YwContractBill ywContractBill:ywContractBillList) {
-                this.dealTempData(tempList,ywContractBill,loginUserInfo);
+                List<YwTempConfig> dealList = this.dealTempData(tempList,ywContractBill,loginUserInfo);
                 String fileName =  "鍌垂閫氱煡鍗昣" +ywContractBill.getCode() +"_" + System.currentTimeMillis()+".docx";
                 YwTempConfig ywTempConfig = new YwTempConfig();
                 if(Constants.equalsInteger(ywContractBill.getType(),Constants.ZERO)){
@@ -717,7 +740,7 @@
                 if(Objects.isNull(ywTempConfig)){
                     throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"妯℃澘淇℃伅寮傚父,璇疯仈绯荤鐞嗗憳");
                 }
-                String path = ExcelReplaceCommon.modifyWordTemplate(ywTempConfig.getUrl(),tempList,fileName);
+                String path = ExcelReplaceCommon.modifyWordTemplate(ywTempConfig.getUrl(),dealList,fileName,zipFilePath);
                 File f = new File(path);
                 if(f !=null && f.isFile()){
                     fileList.add(f);
@@ -739,9 +762,13 @@
     }
 
 
-    public void dealTempData(List<YwTempConfig> ywTempConfigList , YwContractBill ywContractBill, LoginUserInfo loginUserInfo){
+    public List<YwTempConfig> dealTempData(List<YwTempConfig> ywTempConfigList , YwContractBill ywContractBill, LoginUserInfo loginUserInfo){
         //鏌ヨ鏀舵敮璐﹀彿鏁版嵁
+        YwAccount ywAccount = ywAccountMapper.selectOne(new QueryWrapper<YwAccount>().lambda().eq(YwAccount::getIsdeleted,Constants.ZERO).eq(YwAccount::getStatus,Constants.ZERO).eq(YwAccount::getCompanyId,ywContractBill.getCompanyId())
+                        .orderByDesc(YwAccount::getId)
+                .last(" limit 1 "));
 
+        List<YwTempConfig> dealList = new ArrayList<>();
         for (YwTempConfig y:ywTempConfigList) {
             if(y.getTitle().equals("${璐圭敤鍚嶇О}")&&Objects.nonNull(ywContractBill.getCostType())){
                 //璐圭敤绫诲瀷锛�0=绉熻祦璐癸紱1=鐗╀笟璐癸紱2=绉熻祦鎶奸噾锛�3=鐗╀笟鎶奸噾锛�4=姘寸數璐癸紱5=鏉傞」璐癸紱6=鍏朵粬; 7=淇濊瘉閲�
@@ -798,21 +825,21 @@
                     y.setUrl("鍏冩瘡骞崇背澶�");
                 }else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){
                     y.setUrl("鍏冩瘡骞崇背鏈�");
-                }else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){
+                }else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.TWO)){
                     y.setUrl("鍏冩瘡骞崇背骞�");
-                } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){
+                } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.THREE)){
                     y.setUrl("鍏冩瘡澶�");
-                } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){
+                } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.FOUR)){
                     y.setUrl("鍏冩瘡鏈�");
-                } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){
+                } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.FIVE)){
                     y.setUrl("鍏冩瘡骞�");
-                } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){
+                } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.SIX)){
                     y.setUrl("鍏冩瘡鍦�");
                 }
             }else if(y.getTitle().equals("${搴旀敹鏃ユ湡}")&&Objects.nonNull(ywContractBill.getPlanPayDate())){
                 y.setUrl(DateUtil.formatDate(ywContractBill.getPlanPayDate(),"yyyy-MM-dd"));
             }else if(y.getTitle().equals("${搴旀敹閲戦}")&&Objects.nonNull(ywContractBill.getReceivableFee())){
-                y.setUrl(ywContractBill.getReceivableFee().toString());
+                y.setUrl((ywContractBill.getReceivableFee().subtract(ywContractBill.getActReceivableFee())).setScale(2).toString());
             }else if(y.getTitle().equals("${璐﹀崟澶囨敞}")){
                 if(StringUtils.isNotBlank(ywContractBill.getRemark())){
                     y.setUrl(ywContractBill.getRemark());
@@ -821,7 +848,7 @@
                 }
             }else if(y.getTitle().equals("${绉熷鍚嶇О}")&&StringUtils.isNotBlank(ywContractBill.getCustomerName())){
                 y.setUrl(ywContractBill.getCustomerName());
-            }else if(y.getTitle().equals("${妤煎畤/妤煎眰/鎴挎簮}")){
+            }else if(y.getTitle().equals("${鎴块棿淇℃伅}")){
                 if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBill.getYwContractRoomList())){
                     StringBuilder roomPathName = new StringBuilder();
                     for (YwContractRoom ywContractRoom:ywContractBill.getYwContractRoomList()) {
@@ -846,21 +873,37 @@
             }else if(y.getTitle().equals("${绉熻祦闈㈢Н}")&&Objects.nonNull(ywContractBill.getTotalArea())){
                 y.setUrl(ywContractBill.getTotalArea().toString());
             }else if(y.getTitle().equals("${鎵�灞炲叕鍙歌处鎴峰悕绉皚")){
-                y.setUrl("鎵�灞炲叕鍙歌处鎴峰悕绉�");
+                if(Objects.nonNull(ywAccount)&&StringUtils.isNotBlank(ywAccount.getName())){
+                    y.setUrl(ywAccount.getName());
+                }else{
+                    y.setUrl("-");
+                }
             }else if(y.getTitle().equals("${鎵�灞炲叕鍙搁摱琛岃处鍙穧")){
                 y.setUrl("鎵�灞炲叕鍙搁摱琛岃处鍙�");
+                if(Objects.nonNull(ywAccount)&&StringUtils.isNotBlank(ywAccount.getName())){
+                    y.setUrl(ywAccount.getName());
+                }else{
+                    y.setUrl("-");
+                }
             }else if(y.getTitle().equals("${鎵�灞炲叕鍙稿紑鎴烽摱琛寎")){
-                y.setUrl("鎵�灞炲叕鍙稿紑鎴烽摱琛�");
+                if(Objects.nonNull(ywAccount)&&StringUtils.isNotBlank(ywAccount.getBankNo())){
+                    y.setUrl(ywAccount.getBankNo());
+                }else{
+                    y.setUrl("-");
+                }
             }else if(y.getTitle().equals("${閫氱煡鍗曠敓鎴愭棩鏈焳")){
                 y.setUrl(DateUtil.formatDate(new Date(),"yyyy-MM-dd"));
-            }else if(y.getTitle().equals("${褰撳墠鐢ㄦ埛濮撳悕}")){
+            }else if(y.getTitle().equals("${鍒惰〃浜哄悕绉皚")){
                 y.setUrl(loginUserInfo.getRealname());
             }
+            dealList.add(y);
         }
+        return dealList;
     }
 
 
-    public void sendSmsEmail(List<YwSmsEmailBillCallDTO> ywSmsEmailBillCallDTOList,LoginUserInfo loginUserInfo){
+    @Override
+    public void sendSmsEmail(List<YwSmsEmailBillCallDTO> ywSmsEmailBillCallDTOList,SmsEmailServiceImpl smsEmailService,LoginUserInfo loginUserInfo){
         if(CollectionUtils.isEmpty(ywSmsEmailBillCallDTOList)){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
@@ -874,12 +917,15 @@
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(tempList)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈煡璇㈠埌妯℃澘閰嶇疆椤�,璇疯仈绯荤鐞嗗憳");
         }
+        Optional<YwTempConfig> smsTempConfigOptional = ywTempConfigList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).findAny();
+        Optional<YwTempConfig> emailTempConfigOptional = ywTempConfigList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).findAny();
         for (YwSmsEmailBillCallDTO ywSmsEmailBillCallDTO:ywSmsEmailBillCallDTOList) {
             if(Objects.isNull(ywSmsEmailBillCallDTO)
-            || Objects.isNull(ywSmsEmailBillCallDTO.getBillId())
+                    || Objects.isNull(ywSmsEmailBillCallDTO.getBillId())
                     || Objects.isNull(ywSmsEmailBillCallDTO.getUserId())
-            ||Objects.isNull(ywSmsEmailBillCallDTO.getSendEmail())
-                    || Objects.isNull(ywSmsEmailBillCallDTO.getSendSms())){
+                    ||Objects.isNull(ywSmsEmailBillCallDTO.getSendEmail())
+                    || Objects.isNull(ywSmsEmailBillCallDTO.getSendSms())
+            ){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST);
             }
 
@@ -894,41 +940,177 @@
                     .selectAs(YwContractDetail::getType,YwContractBill::getDetailType)
                     .selectAs(YwContract::getZlPayType,YwContractBill::getZlPayType)
                     .selectAs(YwContract::getWyPayType,YwContractBill::getWyPayType)
-                    .select(" ( select ifnull(sum(r.rent_area),0) from yw_room y left join yw_contract_room yr on y.id = yr.room_id where yr.contract_id = t.contract_id and y.IS_INVESTMENT = 0 and yr.type = 0 )  " , YwContractBill::getTotalArea)
+                    .select(" ( select ifnull(sum(y.rent_area),0) from yw_room y left join yw_contract_room yr on y.id = yr.room_id where yr.contract_id = t.contract_id and y.IS_INVESTMENT = 1 and yr.type = 0 )  " , YwContractBill::getTotalArea)
                     .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
                     .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId)
                     .leftJoin(YwContractDetail.class,YwContractDetail::getId,YwContractBill::getDetailId)
                     .eq(YwContractBill::getId,ywSmsEmailBillCallDTO.getBillId())
                     .last( "limit 1" )
             );
-            this.dealTempData(tempList,ywContractBill,loginUserInfo);
+
+            List<YwContractBill> ywContractBillList = new ArrayList<>();
+            ywContractBillList.add(ywContractBill);
+            this.dealRoomDetail(ywContractBillList);
+
+//            this.dealTempData(tempList,ywContractBill,loginUserInfo);
             Member member = memberMapper.selectById(ywSmsEmailBillCallDTO.getUserId());
             if(Objects.isNull(member)){
                 throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀛樺湪鏈煡璇㈠埌鐨勪汉鍛樹俊鎭�");
             }
-
-
+            if(Objects.nonNull(member)){
+                if(Constants.equalsInteger(ywSmsEmailBillCallDTO.getSendSms(),Constants.ONE) && StringUtils.isNotBlank(member.getPhone())
+                 && smsTempConfigOptional.isPresent()){
+                    String content = this.dealTempSmsEmailData(smsTempConfigOptional.get().getTitle(),tempList,ywContractBill,loginUserInfo);
+                    smsEmailService.sendBillSms(content,member.getPhone(),ywContractBill.getId());
+                }
+                if(Constants.equalsInteger(ywSmsEmailBillCallDTO.getSendEmail(),Constants.ONE) && StringUtils.isNotBlank(member.getEmail())
+                        && emailTempConfigOptional.isPresent()){
+                    String content = this.dealTempSmsEmailData(emailTempConfigOptional.get().getTitle(),tempList,ywContractBill,loginUserInfo);
+                    smsEmailService.sendEmail(member.getEmail(),content,ywContractBill.getId());
+                }
+            }
         }
+    }
 
 
-        for (YwSmsEmailBillCallDTO ywSmsEmailBillCallDTO:ywSmsEmailBillCallDTOList) {
+    public String  dealTempSmsEmailData(String tempStr,List<YwTempConfig> ywTempConfigList , YwContractBill ywContractBill, LoginUserInfo loginUserInfo){
+        //鏌ヨ鏀舵敮璐﹀彿鏁版嵁
+        YwAccount ywAccount = ywAccountMapper.selectOne(new QueryWrapper<YwAccount>().lambda().eq(YwAccount::getIsdeleted,Constants.ZERO).eq(YwAccount::getStatus,Constants.ZERO).eq(YwAccount::getCompanyId,ywContractBill.getCompanyId())
+                .orderByDesc(YwAccount::getId)
+                .last(" limit 1 ")); 
+        for (YwTempConfig y:ywTempConfigList) {
+            if(y.getTitle().equals("${璐圭敤鍚嶇О}")&&Objects.nonNull(ywContractBill.getCostType())){
+                //璐圭敤绫诲瀷锛�0=绉熻祦璐癸紱1=鐗╀笟璐癸紱2=绉熻祦鎶奸噾锛�3=鐗╀笟鎶奸噾锛�4=姘寸數璐癸紱5=鏉傞」璐癸紱6=鍏朵粬; 7=淇濊瘉閲�
+                if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.ZERO)){
+                    tempStr = tempStr.replace("${璐圭敤鍚嶇О}","绉熻祦璐�");
+                }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.ONE)){
+                    tempStr = tempStr.replace("${璐圭敤鍚嶇О}","鐗╀笟璐�");
+                }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.TWO)){
+                    tempStr = tempStr.replace("${璐圭敤鍚嶇О}","绉熻祦鎶奸噾");
+                }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.THREE)){
+                  tempStr =   tempStr.replace("${璐圭敤鍚嶇О}","鐗╀笟鎶奸噾");
+                }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.FOUR)){
+                  tempStr =   tempStr.replace("${璐圭敤鍚嶇О}","姘寸數璐�");
+                }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.FIVE)){
+                  tempStr =   tempStr.replace("${璐圭敤鍚嶇О}","鏉傞」璐�");
+                }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.SIX)){
+                  tempStr =   tempStr.replace("${璐圭敤鍚嶇О}","鍏朵粬");
+                }else if(Constants.equalsInteger(ywContractBill.getCostType(),Constants.SEVEN)){
+                  tempStr =   tempStr.replace("${璐圭敤鍚嶇О}","淇濊瘉閲�");
+                }
+            }else if(y.getTitle().equals("${璁¤垂鍛ㄦ湡}")){
+                if(Objects.nonNull(ywContractBill.getDetailType())){
+                    if(Constants.equalsInteger(ywContractBill.getDetailType(),Constants.ZERO)){
+                        //绉熻祦鏀粯鏂瑰紡 0=涓�娆℃�т粯娆撅紱1=姣忎笁涓湀涓�浠橈紱2=鍏釜鏈堜竴浠橈紱3=涓�骞翠竴浠�
+                        if(Objects.nonNull(ywContractBill.getZlPayType())){
+                            if(Constants.equalsInteger(ywContractBill.getZlPayType(),Constants.ZERO)){
+                                tempStr = tempStr.replace("${璁¤垂鍛ㄦ湡}","涓�娆℃�т粯娆�");
+                            }else if(Constants.equalsInteger(ywContractBill.getZlPayType(),Constants.ONE)){
+                                tempStr = tempStr.replace("${璁¤垂鍛ㄦ湡}","姣忎笁涓湀涓�浠�");
+                            }else if(Constants.equalsInteger(ywContractBill.getZlPayType(),Constants.TWO)){
+                                tempStr = tempStr.replace("${璁¤垂鍛ㄦ湡}","鍏釜鏈堜竴浠�");
+                            }else if(Constants.equalsInteger(ywContractBill.getZlPayType(),Constants.THREE)){
+                                tempStr = tempStr.replace("${璁¤垂鍛ㄦ湡}","涓�骞翠竴浠�");
+                            }
+                        }
+                    }else{
+                        //鐗╀笟鏀粯鏂瑰紡 0=涓�娆℃�т粯娆撅紱1=姣忎笁涓湀涓�浠橈紱2=鍏釜鏈堜竴浠橈紱3=涓�骞翠竴浠�
+                        if(Objects.nonNull(ywContractBill.getWyPayType())){
+                            if(Constants.equalsInteger(ywContractBill.getWyPayType(),Constants.ZERO)){
+                                tempStr = tempStr.replace("${璁¤垂鍛ㄦ湡}","涓�娆℃�т粯娆�");
+                            }else if(Constants.equalsInteger(ywContractBill.getWyPayType(),Constants.ONE)){
+                                tempStr = tempStr.replace("${璁¤垂鍛ㄦ湡}","姣忎笁涓湀涓�浠�");
+                            }else if(Constants.equalsInteger(ywContractBill.getWyPayType(),Constants.TWO)){
+                                tempStr = tempStr.replace("${璁¤垂鍛ㄦ湡}","鍏釜鏈堜竴浠�");
+                            }else if(Constants.equalsInteger(ywContractBill.getWyPayType(),Constants.THREE)){
+                                tempStr.replace("${璁¤垂鍛ㄦ湡}","涓�骞翠竴浠�");
+                            }
+                        }
+                    }
+                }else{
+                    tempStr = tempStr.replace("${璁¤垂鍛ㄦ湡}","");
+                }
 
-
-
-
-
+            }else if(y.getTitle().equals("${鍗曚环}")&&Objects.nonNull(ywContractBill.getPrice())){
+                tempStr = tempStr.replace("${鍗曚环}",ywContractBill.getPrice().setScale(2).toString());
+            }else if(y.getTitle().equals("${鍗曚綅}")&&Objects.nonNull(ywContractBill.getCircleType())){
+                //浠樻鍛ㄦ湡绫诲瀷 0=鍏冩瘡骞崇背澶�;1=鍏冩瘡骞崇背鏈�;2=鍏冩瘡骞崇背骞�;3=鍏冩瘡澶�;4=鍏冩瘡鏈�;5=鍏冩瘡骞�;6=鍏冩瘡鍦�;
+                if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ZERO)){
+                  tempStr =   tempStr.replace("${鍗曚綅}","鍏冩瘡骞崇背澶�");
+                }else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.ONE)){
+                  tempStr =   tempStr.replace("${鍗曚綅}","鍏冩瘡骞崇背鏈�");
+                }else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.TWO)){
+                  tempStr =   tempStr.replace("${鍗曚綅}","鍏冩瘡骞崇背骞�");
+                } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.THREE)){
+                  tempStr =   tempStr.replace("${鍗曚綅}","鍏冩瘡澶�");
+                } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.FOUR)){
+                  tempStr =   tempStr.replace("${鍗曚綅}","鍏冩瘡鏈�");
+                } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.FIVE)){
+                  tempStr =   tempStr.replace("${鍗曚綅}","鍏冩瘡骞�");
+                } else if(Constants.equalsInteger(ywContractBill.getCircleType(),Constants.SIX)){
+                  tempStr =   tempStr.replace("${鍗曚綅}","鍏冩瘡鍦�");
+                }
+            }else if(y.getTitle().equals("${搴旀敹鏃ユ湡}")&&Objects.nonNull(ywContractBill.getPlanPayDate())){
+                tempStr = tempStr.replace("${搴旀敹鏃ユ湡}",DateUtil.formatDate(ywContractBill.getPlanPayDate(),"yyyy-MM-dd"));
+            }else if(y.getTitle().equals("${搴旀敹閲戦}")&&Objects.nonNull(ywContractBill.getReceivableFee())){
+                tempStr = tempStr.replace("${搴旀敹閲戦}",(ywContractBill.getReceivableFee().subtract(ywContractBill.getActReceivableFee())).setScale(2).toString());
+            }else if(y.getTitle().equals("${璐﹀崟澶囨敞}")){
+                if(StringUtils.isNotBlank(ywContractBill.getRemark())){
+                  tempStr =   tempStr.replace("${璐﹀崟澶囨敞}",ywContractBill.getRemark());
+                }else{
+                  tempStr =   tempStr.replace("${璐﹀崟澶囨敞}","");
+                }
+            }else if(y.getTitle().equals("${绉熷鍚嶇О}")&&StringUtils.isNotBlank(ywContractBill.getCustomerName())){
+                tempStr = tempStr.replace("${绉熷鍚嶇О}",ywContractBill.getCustomerName());
+            }else if(y.getTitle().equals("${鎴块棿淇℃伅}")){
+                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBill.getYwContractRoomList())){
+                    StringBuilder roomPathName = new StringBuilder();
+                    for (YwContractRoom ywContractRoom:ywContractBill.getYwContractRoomList()) {
+                        if(StringUtils.isNotBlank(ywContractRoom.getProjectName())){
+                            roomPathName.append(ywContractRoom.getProjectName()+"/");
+                        }
+                        if(StringUtils.isNotBlank(ywContractRoom.getBuildingName())){
+                            roomPathName.append(ywContractRoom.getBuildingName()+"/");
+                        }
+                        if(StringUtils.isNotBlank(ywContractRoom.getFloorName())){
+                            roomPathName.append(ywContractRoom.getFloorName()+"/");
+                        }
+                        if(StringUtils.isNotBlank(ywContractRoom.getRoomName())){
+                            roomPathName.append(ywContractRoom.getRoomName());
+                        }
+                        if(StringUtils.isNotBlank(roomPathName)){
+                            roomPathName.append(";");
+                        }
+                    }
+                    tempStr = tempStr.replace("${鎴块棿淇℃伅}",roomPathName.toString());
+                }
+            }else if(y.getTitle().equals("${绉熻祦闈㈢Н}")&&Objects.nonNull(ywContractBill.getTotalArea())){
+                tempStr.replace("${绉熻祦闈㈢Н}",ywContractBill.getTotalArea().toString());
+            }else if(y.getTitle().equals("${鎵�灞炲叕鍙歌处鎴峰悕绉皚")){
+                if(Objects.nonNull(ywAccount)&&StringUtils.isNotBlank(ywAccount.getName())){
+                  tempStr =   tempStr.replace("${鎵�灞炲叕鍙歌处鎴峰悕绉皚",ywAccount.getName());
+                }else{
+                  tempStr =   tempStr.replace("${鎵�灞炲叕鍙歌处鎴峰悕绉皚","-");
+                }
+            }else if(y.getTitle().equals("${鎵�灞炲叕鍙搁摱琛岃处鍙穧")){ 
+                if(Objects.nonNull(ywAccount)&&StringUtils.isNotBlank(ywAccount.getName())){
+                  tempStr =   tempStr.replace("${鎵�灞炲叕鍙搁摱琛岃处鍙穧",ywAccount.getName());
+                }else{
+                  tempStr =   tempStr.replace("${鎵�灞炲叕鍙搁摱琛岃处鍙穧","-");
+                }
+            }else if(y.getTitle().equals("${鎵�灞炲叕鍙稿紑鎴烽摱琛寎")){
+                if(Objects.nonNull(ywAccount)&&StringUtils.isNotBlank(ywAccount.getBankNo())){
+                  tempStr =   tempStr.replace("${鎵�灞炲叕鍙稿紑鎴烽摱琛寎",ywAccount.getBankNo());
+                }else{
+                  tempStr =   tempStr.replace("${鎵�灞炲叕鍙稿紑鎴烽摱琛寎","-");
+                }
+            }else if(y.getTitle().equals("${閫氱煡鍗曠敓鎴愭棩鏈焳")){
+                tempStr = tempStr.replace("${閫氱煡鍗曠敓鎴愭棩鏈焳",DateUtil.formatDate(new Date(),"yyyy-MM-dd"));
+            }else if(y.getTitle().equals("${鍒惰〃浜哄悕绉皚")){
+                tempStr = tempStr.replace("${鍒惰〃浜哄悕绉皚",loginUserInfo.getRealname());
+            } 
         }
-
-
-
-
-
-
-
-
-
-
-        
+        return tempStr;
     }
 
 

--
Gitblit v1.9.3