From b5cf636e0ab19cbfea6c72d36f5629eb10bf2bda Mon Sep 17 00:00:00 2001
From: renkang <8417338+k94314517@user.noreply.gitee.com>
Date: 星期五, 10 一月 2025 14:09:32 +0800
Subject: [PATCH] 客户资料 巡检任务业务

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java |  188 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 186 insertions(+), 2 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 4580e1d..5d59968 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
@@ -7,9 +7,12 @@
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.model.*;
+import com.doumee.dao.business.vo.YwContractBillCallDataVO;
+import com.doumee.dao.business.vo.YwContractBillDataVO;
 import com.doumee.dao.system.MultifileMapper;
 import com.doumee.dao.system.model.Multifile;
 import com.doumee.dao.system.model.SystemUser;
@@ -20,6 +23,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.commons.lang3.StringUtils;
+import org.checkerframework.checker.units.qual.C;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -53,6 +57,9 @@
 
     @Autowired
     private YwContractMapper ywContractMapper;
+
+    @Autowired
+    private MemberMapper memberMapper;
 
 
 
@@ -282,7 +289,6 @@
         YwContractBill model = pageWrap.getModel();
         IPage<YwContractBill> iPage = ywContractBillMapper.selectJoinPage(page,YwContractBill.class,
             queryWrapper.selectAll(YwContractBill.class)
-//                    .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 = t.id and yw.status = 0 and yw.isdeleted = 0 ) as  actReceivableFee  ")
                     .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  ")
                     .selectAs(YwContract::getCode,YwContractBill::getContractCode)
                     .selectAs(YwCustomer::getName,YwContractBill::getCustomerName)
@@ -299,6 +305,10 @@
                             YwContractBill::getPayStatus,model.getPayStatus())
                     .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())
+                    .eq(Objects.nonNull(model)&&Objects.nonNull(model.getIsOverdue())&&Constants.equalsInteger(model.getIsOverdue(),Constants.ONE),
+                            YwContractBill::getStatus, Constants.ZERO)
                     .eq(Objects.nonNull(model)&&Objects.nonNull(model.getContractId()),
                             YwContractBill::getContractId,model.getContractId())
                     .like(Objects.nonNull(model)&&StringUtils.isNotBlank(model.getContractCode()),
@@ -324,6 +334,78 @@
             }else{
                 ywContractBill.setIsOverdue(Constants.ZERO);
             }
+            //妤煎畤鍚嶇О
+            List<YwContractRoom> ywContractRoomList = ywContractBill.getYwContractRoomList();
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractRoomList)){
+                StringBuilder roomPathName = new StringBuilder();
+                for (YwContractRoom ywContractRoom:ywContractRoomList) {
+                    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(";");
+                    }
+                }
+                ywContractBill.setRoomPathName(roomPathName.toString());
+            }
+        }
+
+        return PageData.from(iPage);
+    }
+
+    /**
+     * 閫炬湡璐﹀崟
+     * @param pageWrap
+     * @return
+     */
+    @Override
+    public PageData<YwContractBill> findPageForOverdue(PageWrap<YwContractBill> pageWrap) {
+        IPage<YwContractBill> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        MPJLambdaWrapper<YwContractBill> queryWrapper = new MPJLambdaWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        YwContractBill model = pageWrap.getModel();
+        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  ")
+                        .selectAs(YwContract::getCode,YwContractBill::getContractCode)
+                        .selectAs(YwCustomer::getName,YwContractBill::getCustomerName)
+                        .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
+                        .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId)
+                        .eq(YwContractBill::getIsdeleted,Constants.ZERO)
+                        .like(Objects.nonNull(model)&&StringUtils.isNotBlank(model.getCustomerName()),
+                                YwCustomer::getName,model.getCustomerName())
+                        .eq(Objects.nonNull(model)&&Objects.nonNull(model.getStatus()),
+                                YwContractBill::getStatus,model.getStatus())
+                        .eq(Objects.nonNull(model)&&Objects.nonNull(model.getBillType()),
+                                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)
+                        .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())
+                        .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()))
+                        .le(Objects.nonNull(model)&&Objects.nonNull(model.getPlanPayDateEnd()),YwContractBill::getPlanPayDate, Utils.Date.getEnd(model.getPlanPayDateEnd()))
+                        .orderByDesc(YwContractBill::getId));
+        this.dealRoomDetail(iPage.getRecords());
+        for (YwContractBill ywContractBill:iPage.getRecords()) {
+            //闇�鏀堕噾棰�
+            ywContractBill.setNeedReceivableFee(
+                    ywContractBill.getReceivableFee().subtract(ywContractBill.getActReceivableFee())
+            );
             //妤煎畤鍚嶇О
             List<YwContractRoom> ywContractRoomList = ywContractBill.getYwContractRoomList();
             if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractRoomList)){
@@ -393,7 +475,7 @@
 
             if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractRoomList)){
                 for (YwContractBill ywContractBill:ywContractBillList) {
-                    if(Constants.equalsInteger(ywContractBill.getType(),Constants.ZERO)){
+                    if(Constants.equalsInteger(ywContractBill.getType(),Constants.ZERO) || Constants.equalsInteger(ywContractBill.getType(),Constants.TWO)){
                         ywContractBill.setYwContractRoomList(
                                 ywContractRoomList.stream().filter(i->(Constants.equalsInteger(i.getType(),Constants.TWO)||Constants.equalsInteger(i.getType(),Constants.ZERO))&&Constants.equalsInteger(i.getContractId(),ywContractBill.getContractId())).collect(Collectors.toList())
                         );
@@ -486,4 +568,106 @@
         return list;
     }
 
+
+    @Override
+    public YwContractBillDataVO getWaitDealList(Integer contractId){
+        YwContractBillDataVO ywContractBillDataVO = new YwContractBillDataVO();
+        ywContractBillDataVO.setInAmount(Constants.ZERO);
+        ywContractBillDataVO.setInFee(BigDecimal.ZERO);
+        ywContractBillDataVO.setPayAmount(Constants.ZERO);
+        ywContractBillDataVO.setPayFee(BigDecimal.ZERO);
+        MPJLambdaWrapper<YwContractBill> queryWrapper = new MPJLambdaWrapper<YwContractBill>();
+        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  ")
+            .selectAs(YwContract::getCode,YwContractBill::getContractCode)
+            .selectAs(YwCustomer::getName,YwContractBill::getCustomerName)
+            .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
+            .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId)
+            .eq(YwContractBill::getIsdeleted,Constants.ZERO)
+            .in(YwContractBill::getPayStatus,Constants.ZERO,Constants.TWO,Constants.THREE,Constants.FOUR)
+            .eq(YwContractBill::getContractId,contractId)
+            .orderByDesc(YwContractBill::getId);
+        List<YwContractBill> list = ywContractBillMapper.selectJoinList(YwContractBill.class,queryWrapper);
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){
+            for (YwContractBill ywContractBill:list) {
+                //闇�鏀堕噾棰�
+                ywContractBill.setNeedReceivableFee(
+                        ywContractBill.getReceivableFee().subtract(ywContractBill.getActReceivableFee())
+                );
+                //鏀舵璐﹀崟
+                if(Constants.equalsInteger(ywContractBill.getBillType(),Constants.ZERO)){
+                    //搴旀敹閲戦 灏忎簬 瀹炴敹閲戦 澶氭敹閲戦  搴旇鏄��娆�
+                     if(ywContractBill.getNeedReceivableFee().compareTo(BigDecimal.ZERO)<Constants.ZERO){
+                         ywContractBillDataVO.setPayAmount(ywContractBillDataVO.getPayAmount()+1);
+                         ywContractBillDataVO.setPayFee(ywContractBillDataVO.getPayFee().add(ywContractBill.getNeedReceivableFee().abs()));
+                     }else if(ywContractBill.getNeedReceivableFee().compareTo(BigDecimal.ZERO)>Constants.ZERO){
+                         ywContractBillDataVO.setInAmount(ywContractBillDataVO.getInAmount()+1);
+                         ywContractBillDataVO.setInFee(ywContractBillDataVO.getInFee().add(ywContractBill.getNeedReceivableFee().abs()));
+                     }
+                }else{
+                    //浠樻璐﹀崟
+                    //搴斾粯閲戦 灏忎簬 瀹炰粯閲戦 搴旇鏄粯娆炬
+                    if(ywContractBill.getNeedReceivableFee().compareTo(BigDecimal.ZERO)<Constants.ZERO){
+                        ywContractBillDataVO.setPayAmount(ywContractBillDataVO.getPayAmount()+1);
+                        ywContractBillDataVO.setPayFee(ywContractBillDataVO.getPayFee().add(ywContractBill.getNeedReceivableFee().abs()));
+                    }else{
+                        ywContractBillDataVO.setInAmount(ywContractBillDataVO.getInAmount()+1);
+                        ywContractBillDataVO.setInFee(ywContractBillDataVO.getInFee().add(ywContractBill.getNeedReceivableFee().abs()));
+                    }
+                }
+            }
+            ywContractBillDataVO.setYwContractBillList(list);
+        }
+
+        return ywContractBillDataVO;
+    }
+
+
+
+
+    @Override
+    public List<YwContractBillCallDataVO> getNoticeCustomerData(List<Integer> billIds){
+        List<YwContractBillCallDataVO> ywContractBillCallDataVOList = new ArrayList<>();
+        List<YwContractBill> ywContractBillList = ywContractBillMapper.selectJoinList(YwContractBill.class,new MPJLambdaWrapper<YwContractBill>()
+                .selectAll(YwContractBill.class)
+                .selectAs(YwCustomer::getName,YwContractBill::getCustomerName)
+                .selectAs(YwCustomer::getUserId,YwContractBill::getCustomerUserId)
+                .selectAs(YwCustomer::getId,YwContractBill::getCustomerId)
+                .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
+                .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId)
+                .in(YwContractBill::getId,billIds)
+        );
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(ywContractBillList) ||
+            !Constants.equalsInteger(billIds.size(),ywContractBillList.size())
+        ){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璐﹀崟鏁版嵁閿欒锛岃鍒锋柊閲嶈瘯");
+        }
+        for (YwContractBill ywContractBill:ywContractBillList) {
+            YwContractBillCallDataVO ywContractBillCallDataVO = new YwContractBillCallDataVO();
+            ywContractBillCallDataVO.setBillId(ywContractBill.getId());
+            ywContractBillCallDataVO.setCustomerName(ywContractBill.getCustomerName());
+            ywContractBillCallDataVO.setUserId(ywContractBill.getCustomerUserId());
+            //鏌ヨ瀹㈡埛涓嬬殑鎵�鏈変汉鍛�
+            ywContractBillCallDataVO.setMemberList(
+                memberMapper.selectList(new QueryWrapper<Member>().lambda().eq(Member::getCustomerId,ywContractBill.getCustomerId())
+                        .eq(Member::getIsdeleted,Constants.ZERO))
+            );
+            ywContractBillCallDataVOList.add(ywContractBillCallDataVO);
+        }
+        return ywContractBillCallDataVOList;
+    }
+
+
+    public void downloadCallFeeDoc(List<Integer> billIds){
+        List<YwContractBill> ywContractBillList = ywContractBillMapper.selectJoinList(YwContractBill.class,new MPJLambdaWrapper<YwContractBill>()
+                .selectAll(YwContractBill.class)
+                .selectAs(YwCustomer::getName,YwContractBill::getCustomerName)
+                .selectAs(YwCustomer::getUserId,YwContractBill::getCustomerUserId)
+                .selectAs(YwCustomer::getId,YwContractBill::getCustomerId)
+                .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
+                .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId)
+                .in(YwContractBill::getId,billIds)
+        );
+    }
+
 }

--
Gitblit v1.9.3