From 2a0d7762b0113bba17bd50203360ec669aa20b18 Mon Sep 17 00:00:00 2001
From: renkang <8417338+k94314517@user.noreply.gitee.com>
Date: 星期三, 04 十二月 2024 19:44:10 +0800
Subject: [PATCH] 客户资料 巡检任务业务

---
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwBuilding.java                      |    4 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java          |    6 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java        |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java            |    1 
 server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java                                     |    8 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolLineServiceImpl.java      |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java    |   18 ++++--
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java |   60 ++++++++++++++++----
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceRecordServiceImpl.java    |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/ProjectDataVO.java                      |    4 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java        |   33 +++++++---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java         |    3 
 12 files changed, 109 insertions(+), 35 deletions(-)

diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java b/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java
index 630334d..df82f83 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java
@@ -44,7 +44,10 @@
      */
     public static DateCompare dayCompare(Date fromDateOrigin,Date toDateOrigin,Date freeStart,Date freeEnd){
         //寮�濮嬫椂闂村線鍚庡欢浼革紝闄ゅ幓鏈夋晥鏃舵湡
-        Date fromDate = DateUtil.addDaysToDate(fromDateOrigin,getIntersectingDays(fromDateOrigin,DateUtil.addDaysToDate(toDateOrigin,1),freeStart,DateUtil.addDaysToDate(freeEnd,1)));
+        Date fromDate = DateUtil.addDaysToDate(fromDateOrigin,getIntersectingDays(fromDateOrigin,DateUtil.addDaysToDate(toDateOrigin,1),
+                freeStart,
+                Objects.isNull(freeEnd)?null:DateUtil.addDaysToDate(freeEnd,1))
+        );
         if(toDateOrigin.getTime()<  fromDate.getTime()){
             return DateCompare.builder().day(0).month(0).year(0).yearFloat(new BigDecimal(0)).monthFloat(new BigDecimal(0)).build();
         }
@@ -141,6 +144,9 @@
     }
 
     public static int getIntersectingDays(Date start1, Date end1, Date start2, Date end2) {
+        if(Objects.isNull(start2)||Objects.isNull(end2)){
+            return 0;
+        }
         Date earlierStart = DateUtil.daysBetweenDates(start1,start2)>0? start1 : start2;
         Date laterEnd =  DateUtil.daysBetweenDates(end2,end1)>0 ? end1 : end2;
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwBuilding.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwBuilding.java
index 0da0eea..5fca146 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwBuilding.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwBuilding.java
@@ -102,6 +102,10 @@
     @ExcelColumn(name="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)")
     private Integer projectId;
 
+    @ApiModelProperty(value = "绠$悊闈㈢Н")
+    @TableField(exist = false)
+    private BigDecimal manageArea;
+
     @ApiModelProperty(value = "鍙嫑鍟嗘埧婧愭暟")
     @TableField(exist = false)
     private Integer roomRentNum;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/ProjectDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/ProjectDataVO.java
index f292cb0..ba8b2d3 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/ProjectDataVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/ProjectDataVO.java
@@ -4,6 +4,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -21,6 +22,9 @@
     @ApiModelProperty(value = "涓氬姟鍚嶇О")
     private String name;
 
+    @ApiModelProperty(value = "闈㈢Н")
+    private BigDecimal area;
+
     @ApiModelProperty(value = "鐖剁骇涓婚敭")
     private Integer pId;
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
index bdbf056..e75dac5 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -135,7 +135,9 @@
         Utils.MP.blankToNull(pageWrap.getModel());
         queryWrapper.lambda().eq(Category::getIsdeleted,Constants.ZERO)
                 .eq(Objects.nonNull(pageWrap.getModel().getType()),Category::getType,pageWrap.getModel().getType())
-                .isNull(Category::getParentId);
+                .isNull(Category::getParentId)
+                .orderByAsc(Category::getSortnum)
+        ;
         PageData<Category> categoryPageData = PageData.from(categoryMapper.selectPage(page, queryWrapper));
         //鏌ヨ鎵�鏈変簩绾ф暟鎹�
         List<Category> categoryList = categoryMapper.selectList(
@@ -191,7 +193,7 @@
     private void checkUnique(Category category){
         QueryWrapper<Category> wrapper = new QueryWrapper<>();
         wrapper.lambda()
-                .eq(Objects.nonNull(category.getId()),Category::getId,category.getId())
+                .ne(Objects.nonNull(category.getId()),Category::getId,category.getId())
                 .eq(Category::getIsdeleted,Constants.ZERO)
                 .eq(Category::getType,category.getType())
                 .eq(Category::getName,category.getName());
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 85e4aac..534d629 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -2209,6 +2209,7 @@
                 .and(Objects.nonNull(model)&&StringUtils.isNotBlank(model.getName()),i->i.like(Member::getName,model.getName()).or().like(
                         Member::getPhone,model.getName()
                 ))
+                .orderByDesc(Member::getCreateDate)
         );
         return PageData.from(iPage);
     }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java
index 612f09e..ac034cb 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java
@@ -147,7 +147,8 @@
         Utils.MP.blankToNull(pageWrap.getModel());
         pageWrap.getModel().setIsdeleted(Constants.ZERO);
         queryWrapper.select(" (select count(1) from yw_room a where a.isdeleted=0 and a.BUILDING_ID=t.id) as roomNum "+
-                ",(select count(1) from yw_room a where a.isdeleted=0 and a.BUILDING_ID=t.id and a.IS_INVESTMENT=1) as roomRentNum");
+                ",(select count(1) from yw_room a where a.isdeleted=0 and a.BUILDING_ID=t.id and a.IS_INVESTMENT=1) as roomRentNum " +
+                ", ( select ifnull(sum(a.RENT_AREA),0) from  yw_room a where a.isdeleted=0 and a.BUILDING_ID=t.id ) as manageArea");
         if (pageWrap.getModel().getId() != null) {
             queryWrapper.eq(YwBuilding::getId, pageWrap.getModel().getId());
         }
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 0c3e1dc..471d18f 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
@@ -189,7 +189,8 @@
     public YwContractBill getDetail(Integer id) {
         YwContractBill ywContractBill = ywContractBillMapper.selectJoinOne(YwContractBill.class,
                 new MPJLambdaWrapper<YwContractBill>().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 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)
                         .selectAs(Company::getName,YwContractBill::getCompanyName)
@@ -279,7 +280,8 @@
         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 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)
                     .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
@@ -300,8 +302,9 @@
                     .like(Objects.nonNull(model)&&StringUtils.isNotBlank(model.getContractCode()),
                             YwContract::getCode,model.getContractCode())
                 .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())) )
-        ;
+                .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()) {
             //闇�鏀堕噾棰�
@@ -460,7 +463,8 @@
     public List<YwContractBill> getCanBackBill(YwContractBill model) {
         List<YwContractBill> list = ywContractBillMapper.selectJoinList(YwContractBill.class,
                 new MPJLambdaWrapper<YwContractBill>().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 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)
                         .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
@@ -469,7 +473,9 @@
                         .in(YwContractBill::getCostType,Constants.ZERO,Constants.ONE,Constants.FOUR,Constants.FIVE,7)
                         .eq(Objects.nonNull(model)&&Objects.nonNull(model.getContractId()),
                                 YwContractBill::getContractId,model.getContractId())
-                        .le(Objects.nonNull(model)&&Objects.nonNull(model.getPlanPayDateEnd()),YwContractBill::getStartDate, Utils.Date.getEnd(model.getPlanPayDateEnd())) )
+                        .and(Objects.nonNull(model)&&Objects.nonNull(model.getPlanPayDateEnd()),
+                                i->i.le(YwContractBill::getStartDate, Utils.Date.getEnd(model.getPlanPayDateEnd())).or()
+                        .in(YwContractBill::getPayStatus,Constants.ONE,Constants.TWO) ))
                 ;
 
         for (YwContractBill ywContractBill:list) {
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java
index cdfdf12..e2e4461 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java
@@ -24,6 +24,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.transaction.annotation.Transactional;
@@ -125,7 +126,7 @@
         BigDecimal waitPayTotal = BigDecimal.ZERO;
         //鏃犱粯娆捐褰� 鍒欎负鍒濇鏀粯 鏍规嵁璐﹀崟绫诲瀷 鍒ゆ柇鏄敮鍑� / 鏀跺叆
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(ywContractRevenueList)){
-            ywContractRevenue.setRevenueType(ywContractBill.getType());
+            ywContractRevenue.setRevenueType(ywContractBill.getBillType());
             if(ywContractRevenue.getActReceivableFee().compareTo(ywContractBill.getReceivableFee())>Constants.ZERO){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇疯緭鍏ユ纭殑閲戦锛�");
             }else  if(ywContractRevenue.getActReceivableFee().compareTo(ywContractBill.getReceivableFee())==Constants.ZERO){
@@ -135,19 +136,39 @@
             }
         }else{
             //鑾峰彇宸叉敮浠樼殑鎬婚噾棰� 锛堝彲鑳芥湁鏀跺叆 鏈夋敮鍑猴級
-            payTotal = ywContractRevenueList.stream().map(i->i.getActReceivableFee().multiply(
-                    BigDecimal.valueOf(Constants.equalsInteger(ywContractRevenue.getRevenueType(),Constants.ZERO)?Constants.ONE:-Constants.ONE))
-            ).reduce(BigDecimal.ZERO,BigDecimal::add);
-            //鑾峰彇寰呮敮浠樻閲戦 濡傛灉璐﹀崟绫诲瀷涓烘敮鍑� 鎴� 锛堣处鍗曠被鍨嬩负鏀跺叆 涓� 寰呮敮浠橀噾棰� 灏忎簬 0锛� 鍒欎负鏀粯
-            waitPayTotal = ywContractBill.getReceivableFee().subtract(payTotal);
-            //濡傛灉寰呮敮浠橀噾棰� 澶т簬 0  鍒欐槸 鏀跺叆 鍚﹀垯鏄敮鍑� 鍏朵粬鐘舵�� 涓哄紓甯革紒
-            if(waitPayTotal.compareTo(BigDecimal.ZERO)>Constants.ZERO){
-                ywContractRevenue.setRevenueType(Constants.ZERO);
-            }else if(waitPayTotal.compareTo(BigDecimal.ZERO)<Constants.ZERO){
-                ywContractRevenue.setRevenueType(Constants.ONE);
+            if(Constants.equalsInteger(ywContractBill.getBillType(),Constants.ZERO)){
+                payTotal = ywContractRevenueList.stream().map(i->
+                        i.getActReceivableFee().multiply(
+                                BigDecimal.valueOf(Constants.equalsInteger(i.getRevenueType(),Constants.ZERO)?Constants.ONE:-Constants.ONE))
+                ).reduce(BigDecimal.ZERO,BigDecimal::add);
+                //鑾峰彇寰呮敮浠樻閲戦 濡傛灉璐﹀崟绫诲瀷涓烘敮鍑� 鎴� 锛堣处鍗曠被鍨嬩负鏀跺叆 涓� 寰呮敮浠橀噾棰� 灏忎簬 0锛� 鍒欎负鏀粯
+                waitPayTotal = ywContractBill.getReceivableFee().subtract(payTotal);
+                //濡傛灉寰呮敮浠橀噾棰� 澶т簬 0  鍒欐槸 鏀跺叆 鍚﹀垯鏄敮鍑� 鍏朵粬鐘舵�� 涓哄紓甯革紒
+                if(waitPayTotal.compareTo(BigDecimal.ZERO)>Constants.ZERO){
+                    ywContractRevenue.setRevenueType(Constants.ZERO);
+                }else if(waitPayTotal.compareTo(BigDecimal.ZERO)<Constants.ZERO){
+                    ywContractRevenue.setRevenueType(Constants.ONE);
+                }else{
+                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏀舵敮閲戦寮傚父!璇疯仈绯荤鐞嗗憳");
+                }
             }else{
-                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏀舵敮閲戦寮傚父!璇疯仈绯荤鐞嗗憳");
+                payTotal = ywContractRevenueList.stream().map(i->
+                        i.getActReceivableFee().multiply(
+                                BigDecimal.valueOf(Constants.equalsInteger(i.getRevenueType(),Constants.ZERO)?-Constants.ONE:Constants.ONE))
+                ).reduce(BigDecimal.ZERO,BigDecimal::add);
+                //鑾峰彇寰呮敮浠樻閲戦 濡傛灉璐﹀崟绫诲瀷涓烘敮鍑� 鎴� 锛堣处鍗曠被鍨嬩负鏀跺叆 涓� 寰呮敮浠橀噾棰� 灏忎簬 0锛� 鍒欎负鏀粯
+                waitPayTotal = ywContractBill.getReceivableFee().subtract(payTotal);
+                //濡傛灉寰呮敮浠橀噾棰� 澶т簬 0  鍒欐槸 鏀跺叆 鍚﹀垯鏄敮鍑� 鍏朵粬鐘舵�� 涓哄紓甯革紒
+                if(waitPayTotal.compareTo(BigDecimal.ZERO)>Constants.ZERO){
+                    ywContractRevenue.setRevenueType(Constants.ONE);
+                }else if(waitPayTotal.compareTo(BigDecimal.ZERO)<Constants.ZERO){
+                    ywContractRevenue.setRevenueType(Constants.ZERO);
+                }else{
+                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏀舵敮閲戦寮傚父!璇疯仈绯荤鐞嗗憳");
+                }
             }
+
+
             //寰呮敮浠樼殑娴佹按 濡傛灉涓烘敹鍏� 鍒欐瘮瀵� 閲戦鍊�  濡傛灉鏄敮鍑� 鍒欒幏鍙栫粷瀵瑰�� 杩涜瀵规瘮
             if(Constants.equalsInteger(ywContractRevenue.getRevenueType(),Constants.ZERO)){
                 //濡傛灉鏀粯閲戦 澶т簬 寰呮敮浠橀噾棰� 鍒欐彁绀哄紓甯� 濡傛灉鏀粯閲戦灏忎簬 寰呮敮浠橀噾棰� 鍒欑姸鎬佷笉鍙樺寲 鍏朵粬鐘舵�� 寮傚父
@@ -167,6 +188,21 @@
         }
         ywContractRevenueMapper.insert(ywContractRevenue);
         ywContractBillMapper.updateById(ywContractBill);
+        //濡傛灉璐﹀崟瀹岀粨锛屽垯鏌ヨ鍚堝悓涓嬪紑鍚腑鐨勮处鍗曟槸鍚﹀瓨鍦ㄩ��娆句腑 濡傛灉涓嶅瓨鍦ㄥ垯鏍囪鍚堝悓宸查��娆�
+        if(Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.ONE)){
+            if( ywContractBillMapper
+                    .selectCount(new QueryWrapper<YwContractBill>().lambda().eq(YwContractBill::getContractId,ywContractBill.getContractId())
+                            .ne(YwContractBill::getId,ywContractBill.getId())
+                    .eq(YwContractBill::getStatus,Constants.ZERO)
+                                    .in(YwContractBill::getPayStatus,Constants.ZERO,Constants.FOUR, Constants.TWO,Constants.THREE)
+                    ) == Constants.ZERO){
+                ywContractMapper.update(new UpdateWrapper<YwContract>().lambda()
+                        .set(YwContract::getStatus,Constants.FOUR)
+                        .set(YwContract::getEditDate,DateUtil.getCurrDateTime())
+                        .eq(YwContract::getId,ywContractBill.getContractId())
+                );
+            }
+        }
         //瀛樺偍闄勪欢淇℃伅
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractRevenue.getMultifileList())){
             for (Multifile multifile:ywContractRevenue.getMultifileList()) {
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 b6d5a9f..94da9a9 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
@@ -189,7 +189,7 @@
             if(!(model.getZlFreeEndDate()==null &&  model.getZlFreeStartDate()==null) && (
                     (model.getZlFreeEndDate()!=null &&  model.getZlFreeStartDate()==null)
                             ||(model.getZlFreeEndDate()==null &&  model.getZlFreeStartDate()!=null)
-                            ||model.getZlFreeEndDate().getTime()<= model.getZlFreeStartDate().getTime())
+                            ||model.getZlFreeEndDate().getTime()< model.getZlFreeStartDate().getTime())
             ){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨姝g‘鐨勭璧佹潯娆惧厤绉熸湡淇℃伅锛�");
             }
@@ -242,7 +242,7 @@
                 ){
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇锋寜椤甸潰瑕佹眰濉啓鐗╀笟鏉℃淇℃伅!");
                 }
-                if(d.getEndDate().getTime()<= d.getStartDate().getTime()){
+                if(d.getEndDate().getTime()< d.getStartDate().getTime()){
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鐗╀笟鏉℃鏈夋晥鏈熺粨鏉熸椂闂翠笉寰楁棭浜庡紑濮嬫椂闂达紒");
                 }
                 if(!Constants.equalsInteger(model.getWyPayType(),Constants.ZERO) &&
@@ -303,9 +303,10 @@
         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?
+                .replace("{param2}",Integer.toString(model.getBtCLoseBill()))
+                .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))+"" );
         return  str;
@@ -505,6 +506,8 @@
                     addBill.setBtFee(Constants.formatBigdecimal(addBill.getActReceivableFee()).multiply(new BigDecimal(-1)));
                 }
                 totalBackFee = totalBackFee.add(Constants.formatBigdecimal(addBill.getBtFee()));
+                addBill.setCreator(param.getEditor());
+                addBill.setCreateDate(param.getEditDate());
                 addBill.setEditDate(param.getEditDate());
                 addBill.setEditor(param.getEditor());
                 addBill.setBtActDate(param.getBtActDate());
@@ -532,12 +535,18 @@
                         yjBill.setEditDate(param.getEditDate());
                         yjBill.setEditor(param.getEditor());
                         yjBill.setReceivableFee(BigDecimal.ZERO);
-                        yjBill.setPayStatus(Constants.FOUR);
+                        if(bill.getActReceivableFee().compareTo(BigDecimal.ZERO)==Constants.ZERO){
+                            yjBill.setPayStatus(Constants.FIVE);
+                            yjBill.setStatus(Constants.ONE);
+                        }else{
+                            yjBill.setPayStatus(Constants.FOUR);
+                            yjNoBills ++;
+                        }
                         yjBill.setPlanPayDate(canBill.getPlanPayDate());
                         ywContractBillMapper.updateById(yjBill);
                     }
                 }
-                yjNoBills ++;
+
             }
         }
         param.setBtWaitBill(canBills.size() + newBills.size()+yjNoBills);//鏈竻绠楃殑璐﹀崟鏁伴噺
@@ -917,6 +926,7 @@
             bill.setTotleFee(getTotalFeeByStartEnd(model,d,bill,freeStart,freeEnd));
             bill.setReceivableFee(bill.getTotleFee());
             bill.setBillType(Constants.ZERO);
+            bill.setCompanyId(model.getCompanyId());
             list.add(bill);
         }
         return list;
@@ -1036,7 +1046,7 @@
             if(!(model.getZlFreeEndDate()==null &&  model.getZlFreeStartDate()==null) && (
                         (model.getZlFreeEndDate()!=null &&  model.getZlFreeStartDate()==null)
                         ||(model.getZlFreeEndDate()==null &&  model.getZlFreeStartDate()!=null)
-                        ||model.getZlFreeEndDate().getTime()<= model.getZlFreeStartDate().getTime())
+                        ||model.getZlFreeEndDate().getTime()< model.getZlFreeStartDate().getTime())
                   ){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨姝g‘鐨勭璧佹潯娆惧厤绉熸湡淇℃伅锛�");
             }
@@ -1065,7 +1075,7 @@
                         Constants.equalsInteger(d.getCircleType(),Constants.SIX)){
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绉熻祦鏉℃鍙湁閫夋嫨涓�娆℃�т粯娆炬椂锛屾墠鑳介�夋嫨璇ユ寜姣忓満鏀惰垂锛�");
                 }
-                if(model.getZlFirstCircle() == null){//棣栨湡淇℃伅
+                if(model.getZlFirstPrice() == null){//棣栨湡淇℃伅
                     model.setZlFirstPrice(d.getPrice());
                     model.setZlFirstCircle(d.getCircleType());
                 }
@@ -1114,7 +1124,7 @@
                         Constants.equalsInteger(d.getCircleType(),Constants.SIX)){
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鐗╀笟鏉℃鍙湁閫夋嫨涓�娆℃�т粯娆炬椂锛屾墠鑳介�夋嫨璇ユ寜姣忓満鏀惰垂锛�");
                 }
-                if(model.getWyFirstCircle() == null){
+                if(model.getWyFirstPrice() == null){
                     //棣栨湡淇℃伅
                     model.setWyFirstPrice(d.getPrice());
                     model.setWyFirstCircle(d.getCircleType());
@@ -1278,7 +1288,8 @@
             //鏌ヨ璐﹀崟闆嗗悎
             model.setBillList(ywContractBillMapper.selectJoinList(YwContractBill.class,new MPJLambdaWrapper<YwContractBill>()
                             .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 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  ")
                             .eq(  YwContractBill::getContractId,model.getId())
                             .eq(YwContractBill::getIsdeleted,Constants.ZERO)
                             .orderByAsc(YwContractBill::getSortnum,YwContractBill::getCreateDate)));
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceRecordServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceRecordServiceImpl.java
index 7d19c2c..9118073 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceRecordServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceRecordServiceImpl.java
@@ -180,6 +180,7 @@
                         .ge(Objects.nonNull(model.getStartDate()),YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getStartDate()))
                         .le(Objects.nonNull(model.getEndDate()),YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getEndDate()))
                         .eq(YwDeviceRecord::getIsdeleted,Constants.ZERO)
+                        .orderByDesc(YwDeviceRecord::getCreateDate)
         );
         return PageData.from(iPage);
     }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolLineServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolLineServiceImpl.java
index 217d7c4..a40d68f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolLineServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolLineServiceImpl.java
@@ -106,6 +106,7 @@
     }
 
     @Override
+    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
     public void updateById(YwPatrolLine ywPatrolLine) {
         if(Objects.isNull(ywPatrolLine)
                 || StringUtils.isBlank(ywPatrolLine.getName())
@@ -123,7 +124,7 @@
         //寰幆澶勭悊 瀛愰泦鏁版嵁
         List<YwLinePoint> ywLinePointList = ywPatrolLine.getLinePointList();
         //鏄惁瀛樺湪鐩稿悓鏁版嵁
-        Set<Integer> setIds = new HashSet<Integer>(ywLinePointList.stream().map(i->i.getLineId()).collect(Collectors.toList()));
+        Set<Integer> setIds = new HashSet<Integer>(ywLinePointList.stream().map(i->i.getPointId()).collect(Collectors.toList()));
         if(setIds.size()!=ywLinePointList.size()){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鐩稿悓宸℃鐐�!");
         }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java
index 7fb54c0..2e2061a 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java
@@ -297,7 +297,8 @@
         for (YwRoom data:ywRoomList) {
             ProjectDataVO projectDataVO = new ProjectDataVO();
             BeanUtils.copyProperties(data,projectDataVO);
-            projectDataVO.setName(data.getCode() + " " + data.getArea().setScale(2, BigDecimal.ROUND_HALF_UP) +"銕�");
+            projectDataVO.setName(data.getRoomNum());
+            projectDataVO.setArea(data.getRentArea().setScale(2, BigDecimal.ROUND_HALF_UP));
             projectDataVO.setPId(data.getFloor());
             projectDataVO.setLv(Constants.THREE);
             projectDataVOList.add(projectDataVO);

--
Gitblit v1.9.3