From a40e6a45b2207a9b172b7687ce6e4fe7da8b9ac6 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期二, 03 十二月 2024 16:46:49 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/funingyunwei

---
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                        |   24 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwProject.java                        |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskRecordServiceImpl.java |   47 ++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolLineService.java                |    7 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java                         |   21 +
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolTask.java                     |    5 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwBuilding.java                       |    6 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolLineCloudController.java               |    9 +
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolTaskCloudController.java               |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolPointServiceImpl.java      |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java           |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java         |   16 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java       |   13 +
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolScheme.java                   |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java     |   19 +-
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwRoom.java                           |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwRoomServiceImpl.java             |   33 +++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java             |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwFloorServiceImpl.java            |   10 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwDeviceService.java                    |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwWorkorder.java                      |   20 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java  |   31 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java         |   24 +-
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java          |   32 +++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/YwDeviceDataVO.java                      |   32 +++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java         |   22 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwDeviceRecord.java                   |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwLinePointServiceImpl.java        |    7 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolLineServiceImpl.java       |   33 +++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRevenue.java                |    5 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceRecordServiceImpl.java     |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceServiceImpl.java           |   41 ++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwWorkorderServiceImpl.java        |   17 +
 33 files changed, 429 insertions(+), 79 deletions(-)

diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
index 56af6c6..50b0d9d 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -1359,12 +1359,12 @@
      * 鎿嶄綔绫诲瀷 0宸ュ崟鍒涘缓 1鎸囨淳 2澶勭悊 3鍚堝悓鍒涘缓 4鍚堝悓鍙樻洿 5鍚堝悓閫�绉�
      */
     public  enum YwLogType{
-        WORKORDER_CREATE(0, "宸ュ崟鍒涘缓", "宸ュ崟鍒涘缓"),
-        WORKORDER_DISPATCH(1, "宸ュ崟鎸囨淳", "宸ュ崟鎸囨淳"),
-        WORKORDER_DEAL(2, "宸ュ崟澶勭悊 ", "宸ュ崟澶勭悊 "),
-        CONTRACT_CREATE(3, "鍚堝悓鏂板缓 ", "鏂板缓 "),
-        CONTRACT_UPDATE(4, "鍚堝悓鍙樻洿 ", "鍙樻洿 "),
-        CONTRACT_BACK(5, "鍚堝悓閫�绉� ", "閫�绉� "),
+        WORKORDER_CREATE(0, "鍒涘缓宸ュ崟", "鍒涘缓宸ュ崟"),
+        WORKORDER_DISPATCH(1, "鍒嗘淳宸ュ崟", "鍒嗘淳宸ュ崟"),
+        WORKORDER_DEAL(2, "澶勭悊宸ュ崟", "澶勭悊宸ュ崟"),
+        CONTRACT_CREATE(3, "鍚堝悓鏂板缓", "鏂板缓"),
+        CONTRACT_UPDATE(4, "鍚堝悓鍙樻洿", "鍙樻洿"),
+        CONTRACT_BACK(5, "鍚堝悓閫�绉�", "閫�绉�"),
 
         ;
         // 鎴愬憳鍙橀噺
@@ -1423,4 +1423,16 @@
 
 
     }
+
+    //閭鏍煎紡鐨勯獙璇�
+    public static boolean validEmail(String email) {
+        Pattern p = Pattern.compile("[a-zA-Z0-9]+@[A-Za-z0-9]+\\.[a-z0-9]");
+        Matcher m = p.matcher(email);
+        if(m.find()){
+            return true;
+        } else {
+            return false;
+        }
+    }
+
 }
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolLineCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolLineCloudController.java
index f49f495..f3a191f 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolLineCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolLineCloudController.java
@@ -70,6 +70,15 @@
         return ApiResponse.success(null);
     }
 
+    @ApiOperation("鏇存柊鐘舵��")
+    @PostMapping("/updateStatusById")
+    @CloudRequiredPermission("business:ywpatrolline:update")
+    public ApiResponse updateStatusById(@RequestBody YwPatrolLine ywPatrolLine,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        ywPatrolLine.setLoginUserInfo(this.getLoginUser(token));
+        ywPatrolLineService.updateStatusById(ywPatrolLine);
+        return ApiResponse.success(null);
+    }
+
     @ApiOperation("鍒嗛〉鏌ヨ")
     @PostMapping("/page")
     @CloudRequiredPermission("business:ywpatrolline:query")
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolTaskCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolTaskCloudController.java
index ad901bc..8e9b33e 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolTaskCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolTaskCloudController.java
@@ -92,8 +92,6 @@
             }
 
         }
-
-
         ExcelExporter.build(YwPatrolTask.class).export(ywPatrolTaskService.findPage(pageWrap).getRecords(), "杩愮淮宸℃浠诲姟淇℃伅琛�", response);
     }
 
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java
index c04cf08..57fd3dd 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java
@@ -3,12 +3,17 @@
 import com.alibaba.fastjson.JSONObject;
 import com.doumee.api.BaseController;
 import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.config.annotation.CloudRequiredPermission;
 import com.doumee.config.annotation.LoginNoRequired;
 import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.model.ApiResponse;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.FtpUtil;
 import com.doumee.core.utils.aliyun.ALiYunUtil;
+import com.doumee.dao.business.YwDeviceMapper;
+import com.doumee.dao.business.vo.YwDeviceDataVO;
+import com.doumee.service.business.YwDeviceService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -28,10 +33,8 @@
 import java.awt.*;
 import java.awt.image.BufferedImage;
 import java.io.*;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
+import java.util.List;
 
 /**
  * @author Eva.Caesar Liu
@@ -48,6 +51,16 @@
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
 
+    @Autowired
+    private YwDeviceService ywDeviceService;
+
+    @ApiOperation("鑾峰彇杩愮淮璁惧鎯呭喌")
+    @GetMapping("/getDeviceData")
+    public ApiResponse<YwDeviceDataVO> getDeviceData() {
+        return ApiResponse.success(ywDeviceService.getYwDeviceData());
+    }
+
+
     @ApiOperation(value = "涓婁紶", notes = "涓婁紶", httpMethod = "POST", position = 6)
     @ApiImplicitParams({
         @ApiImplicitParam(name = "folder", value = "鏂囦欢澶�", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
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 da312b2..0da0eea 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,13 +102,13 @@
     @ExcelColumn(name="鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)")
     private Integer projectId;
 
+    @ApiModelProperty(value = "鍙嫑鍟嗘埧婧愭暟")
+    @TableField(exist = false)
+    private Integer roomRentNum;
     @ApiModelProperty(value = "鎴挎簮鏁�")
     @TableField(exist = false)
     private Integer roomNum;
     @ApiModelProperty(value = "椤圭洰鍚嶇О")
     @TableField(exist = false)
     private String projectName;
-    @ApiModelProperty(value = "鍙嫑鍟嗘埧婧愭暟")
-    @TableField(exist = false)
-    private Integer roomeRentNum;
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRevenue.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRevenue.java
index b4cf96f..bc41654 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRevenue.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRevenue.java
@@ -104,6 +104,11 @@
     private String accountTitle;
 
 
+    @ApiModelProperty(value = "璐﹀崟绫诲瀷", example = "1" , hidden = true)
+    @TableField(exist = false)
+    private Integer billType;
+
+
     @ApiModelProperty(value = "鍒涘缓浜哄悕绉�")
     @ExcelColumn(name="鍒涘缓浜�",index = 9,width = 10)
     @TableField(exist = false)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwDeviceRecord.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwDeviceRecord.java
index f9c5638..1ab32e6 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwDeviceRecord.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwDeviceRecord.java
@@ -71,7 +71,7 @@
     private String content;
 
     @ApiModelProperty(value = "杩愮淮鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date dealDate;
 
     @ApiModelProperty(value = "璁惧鍚嶇О")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolScheme.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolScheme.java
index da2ec27..4f8b83a 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolScheme.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolScheme.java
@@ -78,7 +78,7 @@
     @ApiModelProperty(value = "澶勭悊澶囨敞")
     private String dealInfo;
 
-    @ApiModelProperty(value = "寰幆鍛ㄦ湡  0姣忓ぉ 1姣忓懆 2姣忓ぉ", example = "1")
+    @ApiModelProperty(value = "寰幆鍛ㄦ湡  0姣忓ぉ 1姣忓懆 2姣忔湀", example = "1")
     private Integer circleType;
 
     @ApiModelProperty(value = "寰幆閲嶅瑙勫垯 1-31锛屽涓嫳鏂囬�楀彿闅斿紑")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolTask.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolTask.java
index e093dac..69f6075 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolTask.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolTask.java
@@ -103,6 +103,11 @@
     @TableField(exist = false)
     private String userName;
 
+
+    @ApiModelProperty(value = "浠诲姟鐘舵�侊細澶氫釜浠�,鍒嗗壊 0寰呭紑濮� 1杩涜涓� 2宸茶秴鏈� 3宸插畬鎴� 4宸插彇娑�")
+    @TableField(exist = false)
+    private String queryStatus;
+
     @ApiModelProperty(value = "璁″垝缂栧彿")
     @ExcelColumn(name="璁″垝缂栧彿",index = 1,width = 6)
     @TableField(exist = false)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwProject.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwProject.java
index dd0675c..57bd3da 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwProject.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwProject.java
@@ -10,6 +10,8 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -81,7 +83,10 @@
     private Integer roomNum;
     @ApiModelProperty(value = "鍙嫑鍟嗘埧婧愭暟")
     @TableField(exist = false)
-    private Integer roomeRentNum;
+    private Integer roomRentNum;
+    @ApiModelProperty(value = "绠$悊闈㈢Н")
+    @TableField(exist = false)
+    private BigDecimal area;
     @ApiModelProperty(value = "鍩庡競鍚嶇О")
     @TableField(exist = false)
     private String cityName;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwRoom.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwRoom.java
index 8474876..8dee35e 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwRoom.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwRoom.java
@@ -106,6 +106,10 @@
     @ExcelColumn(name="鎵�灞炴ゼ瀹囩紪鐮侊紙鍏宠仈yw_building)")
     private Integer buildingId;
 
+    @ApiModelProperty(value = "绉熻祦鐘舵�侊細0=寰呯璧侊紱1=宸茬璧� ;2=鏈紑鍚璧�", example = "1")
+    @TableField(exist = false)
+    private Integer leaseStatus;
+
     @ApiModelProperty(value = "椤圭洰鍚嶇О")
     @TableField(exist = false)
     private String projectName;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwWorkorder.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwWorkorder.java
index 708a111..e0c3601 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwWorkorder.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwWorkorder.java
@@ -35,7 +35,7 @@
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
     @ExcelColumn(name="鍒涘缓鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createDate;
 
     @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
@@ -73,7 +73,7 @@
 
     @ApiModelProperty(value = "涓婇棬鏃堕棿")
     @ExcelColumn(name="涓婇棬鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date getDate;
 
     @ApiModelProperty(value = "鎵�灞為」鐩紪鐮侊紙鍏宠仈yw_project)", example = "1")
@@ -101,7 +101,7 @@
 
     @ApiModelProperty(value = "鎻愭姤鏃堕棿")
     @ExcelColumn(name="鎻愭姤鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date submitDate;
 
     @ApiModelProperty(value = "宸ュ崟鍒嗙被缂栫爜(鍏宠仈category锛�", example = "1")
@@ -126,7 +126,7 @@
 
     @ApiModelProperty(value = "鍒嗘淳鏃堕棿")
     @ExcelColumn(name="鍒嗘淳鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date dispatchDate;
 
     @ApiModelProperty(value = "鍒嗘淳澶勭悊璇存槑")
@@ -139,7 +139,7 @@
 
     @ApiModelProperty(value = "澶勭悊鏃堕棿")
     @ExcelColumn(name="澶勭悊鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date dealDate;
 
     @ApiModelProperty(value = "澶勭悊澶囨敞")
@@ -152,6 +152,10 @@
     @ApiModelProperty(value = "椤圭洰鍚嶇О")
     @TableField(exist = false)
     private String projectName;
+
+    @ApiModelProperty(value = "浠诲姟鐘舵�侊細澶氫釜浠�,鍒嗗壊  0寰呭鐞� 1宸插垎娲� 2宸插鐞�")
+    @TableField(exist = false)
+    private String queryStatus;
 
     @ApiModelProperty(value = "妤煎畤鍚嶇О")
     @TableField(exist = false)
@@ -168,9 +172,15 @@
     @ApiModelProperty(value = "鎻愭姤浜哄鍚�")
     @TableField(exist = false)
     private String creatorName;
+    @ApiModelProperty(value = "鎻愭姤浜虹數璇�")
+    @TableField(exist = false)
+    private String creatorMobile;
     @ApiModelProperty(value = "澶勭悊浜哄鍚�")
     @TableField(exist = false)
     private String dealUserName;
+    @ApiModelProperty(value = "澶勭悊浜虹粍缁�")
+    @TableField(exist = false)
+    private String dealUserCompany;
     @ApiModelProperty(value = "绫诲埆鍚嶇О")
     @TableField(exist = false)
     private String categoryName;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/YwDeviceDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/YwDeviceDataVO.java
new file mode 100644
index 0000000..319e8f3
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/YwDeviceDataVO.java
@@ -0,0 +1,32 @@
+package com.doumee.dao.business.vo;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/12/2 10:02
+ */
+@Data
+public class YwDeviceDataVO {
+
+    @ApiModelProperty(value = "璁惧鎬绘暟", example = "1")
+    private Integer totalNum = 0 ;
+
+    @ApiModelProperty(value = "鍦ㄤ繚璁惧鏁�", example = "1")
+    private Integer qualityNum = 0 ;
+
+    @ApiModelProperty(value = "姝e父璁惧鏁�", example = "1")
+    private Integer normalNum = 0 ;
+
+    @ApiModelProperty(value = "鎹熷潖璁惧鏁�", example = "1")
+    private Integer abnormalNum = 0 ;
+
+    @ApiModelProperty(value = "鎶ュ簾璁惧鎬绘暟", example = "1")
+    private Integer scrapNum = 0 ;
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwDeviceService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwDeviceService.java
index 8a27715..4e5501e 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwDeviceService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwDeviceService.java
@@ -4,6 +4,8 @@
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.dao.business.model.YwDevice;
+import com.doumee.dao.business.vo.YwDeviceDataVO;
+
 import java.util.List;
 
 /**
@@ -97,4 +99,8 @@
     long count(YwDevice ywDevice);
 
     YwDevice getDetail(Integer id);
+
+
+    YwDeviceDataVO getYwDeviceData();
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolLineService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolLineService.java
index 658c5eb..2e28408 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolLineService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolLineService.java
@@ -50,6 +50,13 @@
     void updateById(YwPatrolLine ywPatrolLine);
 
     /**
+     * 鏇存柊鐘舵��
+     * @param ywPatrolLine
+     */
+    void updateStatusById(YwPatrolLine ywPatrolLine);
+
+
+    /**
      * 鎵归噺涓婚敭鏇存柊
      *
      * @param ywPatrolLines 瀹炰綋闆�
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 6de45a4..bdbf056 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
@@ -191,6 +191,7 @@
     private void checkUnique(Category category){
         QueryWrapper<Category> wrapper = new QueryWrapper<>();
         wrapper.lambda()
+                .eq(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 f8c6d15..ad6f19c 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
@@ -2118,6 +2118,9 @@
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
+        if(StringUtils.isNotBlank(member.getEmail())&&!Constants.validEmail(member.getEmail())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇峰~鍐欐纭殑email");
+        }
         LoginUserInfo loginUserInfo = member.getLoginUserInfo();
         member.setCreator(loginUserInfo.getId());
         member.setCreateDate(new Date());
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 b5003c3..612f09e 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
@@ -8,8 +8,10 @@
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.YwBuildingMapper;
+import com.doumee.dao.business.YwFloorMapper;
 import com.doumee.dao.business.YwProjectMapper;
 import com.doumee.dao.business.model.YwBuilding;
+import com.doumee.dao.business.model.YwFloor;
 import com.doumee.dao.business.model.YwProject;
 import com.doumee.service.business.YwBuildingService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -36,6 +38,8 @@
     private YwBuildingMapper ywBuildingMapper;
     @Autowired
     private YwProjectMapper ywProjectMapper;
+    @Autowired
+    private YwFloorMapper ywFloorMapper;
 
     @Override
     public Integer create(YwBuilding model) {
@@ -58,6 +62,12 @@
 
     @Override
     public void deleteById(Integer id, LoginUserInfo user) {
+        //鏌ヨ妤煎畤涓嬬殑鏁版嵁
+        if(ywFloorMapper.selectCount(new QueryWrapper<YwFloor>().lambda().eq(YwFloor::getIsdeleted,Constants.ZERO)
+                .eq(YwFloor::getBuildingId,id))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"妤煎畤涓瓨鍦ㄦゼ灞傛暟鎹�!");
+        };
+
         YwBuilding model = new YwBuilding();
         model.setId(id);
         model.setEditDate(new Date());
@@ -101,7 +111,17 @@
 
     @Override
     public YwBuilding findById(Integer id) {
-        return ywBuildingMapper.selectById(id);
+
+
+        MPJLambdaWrapper<YwBuilding> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(YwBuilding.class )
+                .selectAs(YwProject::getName,YwBuilding::getProjectName)
+                .leftJoin(YwProject.class,YwProject::getId,YwBuilding::getProjectId)
+                .eq(YwBuilding::getId,id)
+                .last(" limit 1 ")
+        ;
+
+        return ywBuildingMapper.selectJoinOne(YwBuilding.class, queryWrapper);
     }
 
     @Override
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 8843a63..cdfdf12 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
@@ -30,10 +30,7 @@
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -392,6 +389,7 @@
         IPage<YwContractRevenue> iPage = ywContractRevenueMapper.selectJoinPage(page,YwContractRevenue.class,
                 queryWrapper.selectAll(YwContractRevenue.class)
                         .selectAs(YwContractBill::getCode,YwContractRevenue::getBillCode)
+                        .selectAs(YwContractBill::getType,YwContractRevenue::getBillType)
                          .selectAs(YwContract::getCode,YwContractRevenue::getContractCode)
                         .selectAs(YwCustomer::getName,YwContractRevenue::getCustomerName)
                         .selectAs(SystemUser::getRealname,YwContractRevenue::getRealname)
@@ -418,6 +416,17 @@
             if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractRoomList)){
                 StringBuilder roomPathName = new StringBuilder();
                 for (YwContractRoom ywContractRoom:ywContractRoomList) {
+                    if(Constants.equalsInteger(ywContractRevenue.getBillType(),Constants.ZERO)){
+                        if(!(Constants.equalsInteger(ywContractRevenue.getContractId(),ywContractRoom.getContractId())
+                        && Constants.equalsInteger(ywContractRoom.getType(),Constants.ZERO))){
+                            continue;
+                        }
+                    }else{
+                        if(!(Constants.equalsInteger(ywContractRevenue.getBillId(),ywContractRoom.getContractId())
+                                && Constants.equalsInteger(ywContractRoom.getType(),Constants.ONE))){
+                            continue;
+                        }
+                    }
                     if(StringUtils.isNotBlank(ywContractRoom.getProjectName())){
                         roomPathName.append(ywContractRoom.getProjectName()+"/");
                     }
@@ -447,24 +456,30 @@
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractRevenueList)){
             //鑾峰彇鎵�鏈夋暟鎹�
             List<Integer> billIdList = ywContractRevenueList.stream().map(i->i.getBillId()).collect(Collectors.toList());
+            List<Integer> contractIdList = ywContractRevenueList.stream().map(i->i.getContractId()).collect(Collectors.toList());
             if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(billIdList)){
                 List<YwContractRoom> ywContractRoomList  = ywContractRoomMapper.selectJoinList(YwContractRoom.class,new MPJLambdaWrapper<YwContractRoom>()
                         .selectAll(YwContractRoom.class)
                         .selectAs(YwProject::getName,YwRoom::getProjectName)
                         .selectAs(YwFloor::getName,YwRoom::getFloorName)
                         .selectAs(YwBuilding::getName,YwRoom::getBuildingName)
-                        .selectAs(YwRoom::getName,YwContractRoom::getRoomName)
+                        .selectAs(YwRoom::getCode,YwContractRoom::getRoomName)
                         .leftJoin(YwRoom.class,YwRoom::getId,YwContractRoom::getRoomId)
                         .leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor)
                         .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId)
                         .leftJoin(YwBuilding.class,YwBuilding::getId,YwRoom::getBuildingId)
-                        .in(YwContractRoom::getContractId,billIdList)
-                        .eq(YwContractRoom::getType,Constants.ONE)
+                        .and(i->i.in(YwContractRoom::getContractId,billIdList).eq(YwContractRoom::getType,Constants.ONE)
+                                .or().in(YwContractRoom::getContractId,contractIdList).eq(YwContractRoom::getType,Constants.ZERO)
+                        )
+//                        .in(YwContractRoom::getContractId,billIdList)
+//                        .eq(YwContractRoom::getType,Constants.ONE)
                 );
                 if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractRoomList)){
                     for (YwContractRevenue ywContractRevenue:ywContractRevenueList) {
                         ywContractRevenue.setYwContractRoomList(
-                                ywContractRoomList.stream().filter(i->Constants.equalsInteger(i.getContractId(),ywContractRevenue.getBillId())).collect(Collectors.toList())
+                                ywContractRoomList.stream().filter(i->
+                                        Constants.equalsInteger(i.getContractId(),ywContractRevenue.getBillId())||Constants.equalsInteger(i.getContractId(),ywContractRevenue.getContractId()))
+                                        .collect(Collectors.toList())
                         );
                     }
                 }
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 4795aa6..002e6bd 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
@@ -87,7 +87,6 @@
         dealMultifileBiz(model);//澶勭悊闄勪欢淇℃伅
         dealRoomsForContract(model);//澶勭悊鎴挎簮鍏宠仈琛�
         dealLogBiz(model,Constants.YwLogType.CONTRACT_CREATE,model.getLoginUserInfo().getRealname(),"銆�"+model.getRemark().replace("鍚堝悓鎽樿锛�","")+"銆�");//璁板綍鏂板缓鏃ュ織
-
         return model.getId();
     }
 
@@ -194,7 +193,7 @@
             }
             for(YwContractDetail d :model.getWyDetailList()){
                 if(  d.getStartDate() == null
-                        ||d.getEditDate() == null
+                        ||d.getEndDate() == null
                         ||d.getPrice() == null
                         ||d.getCircleType() == null
                         || d.getCircleType()>6
@@ -237,9 +236,9 @@
 
         String str = "";
         //璧风鏃�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}";
+        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;
         }
@@ -253,10 +252,10 @@
                 .replace("{param2}",model.getTotalArea().intValue()+"")
                 .replace("{param3}",Constants.getPayTypeByNum(model.getZlPayType()))
                 .replace("{param4}",Constants.formatBigdecimal(model.getZlFirstPrice()).intValue()+"")
-                .replace("{param5}",Constants.getUnitTypeByNum(model.getZlFirstCircle())
+                .replace("{param5}",Constants.getUnitTypeByNum(model.getZlFirstCircle()))
                 .replace("{param6}",Constants.getPayTypeByNum(model.getWyPayType()))
                 .replace("{param7}",Constants.formatBigdecimal(model.getWyFirstPrice()).intValue()+"")
-                .replace("{param8}",Constants.getUnitTypeByNum(model.getWyFirstCircle())));
+                .replace("{param8}",Constants.getUnitTypeByNum(model.getWyFirstCircle()));
         return  str;
     }
     private String getbackRentRemarkByParam(YwContract model) {
@@ -649,15 +648,12 @@
         }
         int num =1;
         for(int i=0;i<billList1.size();i++){
-            if(Constants.equalsInteger( billList1.get(i).getCostType(),Constants.ZERO)){
-                billList1.get(i).setSortnum(num++);
-            }
+            billList1.get(i).setSortnum(num);
+            num++;
         }
-          num =1;
         for(int i=0;i<billList2.size();i++){
-            if(Constants.equalsInteger( billList2.get(i).getCostType(),Constants.ONE)){
-                billList2.get(i).setSortnum(num++);
-            }
+            billList2.get(i).setSortnum(num);
+            num++;
         }
         if(model.getId()!=null){
             ywContractBillMapper.insert(billList1);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java
index 303b8f0..1fc2a89 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java
@@ -61,6 +61,9 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         LoginUserInfo loginUserInfo = ywCustomer.getLoginUserInfo();
+        if(StringUtils.isNotBlank(ywCustomer.getEmail())&&!Constants.validEmail(ywCustomer.getEmail())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇峰~鍐欐纭殑email");
+        }
         ywCustomer.setStatus(Constants.ZERO);
         ywCustomer.setIsdeleted(Constants.ZERO);
         ywCustomer.setCreator(loginUserInfo.getId());
@@ -108,6 +111,14 @@
 
     @Override
     public void deleteById(Integer id, LoginUserInfo user) {
+
+        //鏌ヨ瀹㈡埛淇℃伅涓嬫槸鍚﹀瓨鍦ㄤ汉鍛樹俊鎭�
+        if(memberMapper.selectCount(new QueryWrapper<Member>().lambda().eq(Member::getType,Constants.memberType.customer)
+                        .eq(Member::getCustomerId,id)
+                .eq(Member::getIsdeleted,Constants.ZERO))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪浜哄憳淇℃伅鏈垹闄わ紝璇峰厛鍒犻櫎瀹㈡埛涓嬩汉鍛樹俊鎭�!");
+        }
+
         ywCustomerMapper.deleteById(id);
     }
 
@@ -122,6 +133,11 @@
         if (CollectionUtils.isEmpty(ids)) {
             return;
         }
+        if(memberMapper.selectCount(new QueryWrapper<Member>().lambda().eq(Member::getType,Constants.memberType.customer)
+                .in(Member::getCustomerId,ids)
+                .eq(Member::getIsdeleted,Constants.ZERO))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪浜哄憳淇℃伅鏈垹闄わ紝璇峰厛鍒犻櫎瀹㈡埛涓嬩汉鍛樹俊鎭�!");
+        }
         ywCustomerMapper.deleteBatchIds(ids);
     }
 
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 fe1395d..7d19c2c 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
@@ -125,6 +125,7 @@
                         .selectAs(SystemUser::getMobile,YwDeviceRecord::getMobile)
                         .selectAs(Company::getName,YwDeviceRecord::getCompanyName)
                         .selectAs(YwDevice::getName,YwDeviceRecord::getDeviceName)
+                        .selectAs(YwDevice::getCode,YwDeviceRecord::getDeviceCode)
                         .leftJoin(SystemUser.class,SystemUser::getId,YwDeviceRecord::getUserId)
                         .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
                         .leftJoin(YwDevice.class,YwDevice::getId,YwDeviceRecord::getDeviceId)
@@ -132,7 +133,7 @@
                         .last(" limit  1 ")
         );
         List<Multifile> multifiles = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda()
-                .eq(Multifile::getObjId,id).eq(Multifile::getObjType,Constants.MultiFile.FN_DEVICE_RECORD_FILE));
+                .eq(Multifile::getObjId,id).eq(Multifile::getObjType,Constants.MultiFile.FN_DEVICE_RECORD_FILE.getKey()));
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifiles)) {
             String path = systemDictDataBiz.queryByCode(Constants.FTP, Constants.FTP_RESOURCE_PATH).getCode()
                     + systemDictDataBiz.queryByCode(Constants.FTP, Constants.YW_DEVICE).getCode();
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceServiceImpl.java
index 70cac05..2f9f45b 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceServiceImpl.java
@@ -10,11 +10,15 @@
 import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.YwDeviceMapper;
+import com.doumee.dao.business.YwDeviceRecordMapper;
 import com.doumee.dao.business.model.Category;
 import com.doumee.dao.business.model.YwDevice;
+import com.doumee.dao.business.model.YwDeviceRecord;
+import com.doumee.dao.business.vo.YwDeviceDataVO;
 import com.doumee.dao.system.MultifileMapper;
 import com.doumee.dao.system.model.Multifile;
 import com.doumee.dao.system.model.SystemUser;
+import com.doumee.service.business.YwDeviceRecordService;
 import com.doumee.service.business.YwDeviceService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -31,6 +35,7 @@
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * 杩愮淮璁惧淇℃伅琛⊿ervice瀹炵幇
@@ -47,6 +52,8 @@
     private SystemDictDataBiz systemDictDataBiz;
     @Autowired
     private MultifileMapper multifileMapper;
+    @Autowired
+    private YwDeviceRecordMapper ywDeviceRecordMapper;
 
     @Autowired
     private RedisTemplate<String,Object> redisTemplate;
@@ -86,10 +93,15 @@
 
     @Override
     public void deleteById(Integer id, LoginUserInfo user) {
-        ywDeviceMapper.update(new UpdateWrapper<YwDevice>().lambda().set(YwDevice::getIsdeleted,Constants.ONE)
+        //鏌ヨ璁惧鏄惁瀛樺湪杩愮淮璁板綍
+        if(ywDeviceRecordMapper.selectCount(new QueryWrapper<YwDeviceRecord>().lambda().eq(YwDeviceRecord::getDeviceId,id).eq(YwDeviceRecord::getIsdeleted,Constants.ZERO))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠璁惧瀛樺湪杩愮淮璁板綍锛屾棤娉曞垹闄�");
+        };
+        ywDeviceMapper.update(new UpdateWrapper<YwDevice>()
+                .lambda().set(YwDevice::getIsdeleted,Constants.ONE)
                 .set(YwDevice::getEditDate, DateUtil.getCurrDateTime())
                 .set(YwDevice::getEditor,user.getId())
-                .eq(YwDevice::getId,user.getId())
+                .eq(YwDevice::getId,id)
         );
     }
 
@@ -161,7 +173,8 @@
     @Override
     public YwDevice getDetail(Integer id) {
         YwDevice ywDevice = ywDeviceMapper.selectById(id);
-        Multifile multifile = multifileMapper.selectOne(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,id).eq(Multifile::getObjType,Constants.MultiFile.FN_DEVICE_FILE).last(" limit 1"));
+        Multifile multifile = multifileMapper.selectOne(new QueryWrapper<Multifile>().lambda()
+                .eq(Multifile::getObjId,id).eq(Multifile::getObjType,Constants.MultiFile.FN_DEVICE_FILE.getKey()).last(" limit 1"));
         if(Objects.nonNull(multifile)){
             String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
                     +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_DEVICE).getCode();
@@ -208,4 +221,26 @@
         QueryWrapper<YwDevice> wrapper = new QueryWrapper<>(ywDevice);
         return ywDeviceMapper.selectCount(wrapper);
     }
+
+
+
+    @Override
+    public YwDeviceDataVO getYwDeviceData(){
+        YwDeviceDataVO ywDeviceDataVO = new YwDeviceDataVO();
+        List<YwDevice> ywDeviceList = ywDeviceMapper.selectList(new QueryWrapper<YwDevice>().lambda().eq(YwDevice::getIsdeleted,Constants.ZERO));
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywDeviceList)){
+            ywDeviceDataVO.setQualityNum(ywDeviceList.size());
+            ywDeviceDataVO.setTotalNum(ywDeviceList.size());
+            ywDeviceDataVO.setNormalNum(ywDeviceList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ZERO)).collect(Collectors.toList()).size());
+            ywDeviceDataVO.setAbnormalNum(ywDeviceList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ONE)).collect(Collectors.toList()).size());
+            ywDeviceDataVO.setScrapNum(ywDeviceList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.TWO)).collect(Collectors.toList()).size());
+        }
+        return ywDeviceDataVO;
+    }
+
+
+
 }
+
+
+
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwFloorServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwFloorServiceImpl.java
index b3b74de..0f75d69 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwFloorServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwFloorServiceImpl.java
@@ -9,6 +9,7 @@
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.YwBuildingMapper;
 import com.doumee.dao.business.YwFloorMapper;
+import com.doumee.dao.business.YwRoomMapper;
 import com.doumee.dao.business.model.YwBuilding;
 import com.doumee.dao.business.model.YwFloor;
 import com.doumee.dao.business.model.YwRoom;
@@ -36,6 +37,8 @@
     private YwFloorMapper ywFloorMapper;
     @Autowired
     private YwBuildingMapper ywBuildingMapper;
+    @Autowired
+    private YwRoomMapper ywRoomMapper;
 
     @Override
     public Integer create(YwFloor model) {
@@ -59,6 +62,13 @@
 
     @Override
     public void deleteById(Integer id, LoginUserInfo user) {
+        //鏌ヨ妤煎眰涓嬬殑鏁版嵁
+        if(ywRoomMapper.selectCount(new QueryWrapper<YwRoom>().lambda().eq(YwRoom::getIsdeleted,Constants.ZERO)
+                .eq(YwRoom::getFloor,id))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"妤煎眰瀛樺湪鎴块棿鏁版嵁!");
+        };
+
+
         YwFloor model = new YwFloor();
         model.setId(id);
         model.setEditDate(new Date());
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwLinePointServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwLinePointServiceImpl.java
index 76fb7ed..dde41ee 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwLinePointServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwLinePointServiceImpl.java
@@ -1,11 +1,16 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.YwLinePointMapper;
+import com.doumee.dao.business.YwPatrolSchemeMapper;
 import com.doumee.dao.business.model.YwLinePoint;
+import com.doumee.dao.business.model.YwPatrolScheme;
 import com.doumee.service.business.YwLinePointService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -28,6 +33,7 @@
     @Autowired
     private YwLinePointMapper ywLinePointMapper;
 
+
     @Override
     public Integer create(YwLinePoint ywLinePoint) {
         ywLinePointMapper.insert(ywLinePoint);
@@ -36,6 +42,7 @@
 
     @Override
     public void deleteById(Integer id, LoginUserInfo user) {
+
         ywLinePointMapper.deleteById(id);
     }
 
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 51e298f..217d7c4 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
@@ -9,6 +9,7 @@
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.YwLinePointMapper;
 import com.doumee.dao.business.YwPatrolLineMapper;
+import com.doumee.dao.business.YwPatrolSchemeMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.service.business.YwPatrolLineService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -22,9 +23,8 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 杩愮淮宸℃璺嚎淇℃伅琛⊿ervice瀹炵幇
@@ -40,6 +40,8 @@
     @Autowired
     private YwLinePointMapper ywLinePointMapper;
 
+    @Autowired
+    private YwPatrolSchemeMapper ywPatrolSchemeMapper;
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
     public Integer create(YwPatrolLine ywPatrolLine) {
@@ -56,8 +58,12 @@
         ywPatrolLine.setStatus(Constants.ZERO);
         ywPatrolLineMapper.insert(ywPatrolLine);
         //寰幆澶勭悊 瀛愰泦鏁版嵁
-
         List<YwLinePoint> ywLinePointList = ywPatrolLine.getLinePointList();
+        //鏄惁瀛樺湪鐩稿悓鏁版嵁
+        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(),"瀛樺湪鐩稿悓宸℃鐐�!");
+        }
         for (YwLinePoint ywLinePoint:ywLinePointList) {
             if(Objects.isNull(ywLinePoint)
             || Objects.isNull(ywLinePoint.getPointId())
@@ -77,6 +83,11 @@
 
     @Override
     public void deleteById(Integer id, LoginUserInfo user) {
+        //鏌ヨ鏄惁瀛樺湪宸℃璁″垝
+        if(ywPatrolSchemeMapper.selectCount(new QueryWrapper<YwPatrolScheme>().lambda().eq(YwPatrolScheme::getIsdeleted, Constants.ZERO)
+                .eq(YwPatrolScheme::getLineId,id))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠宸℃绾胯矾宸茶浣跨敤锛屾棤娉曞垹闄�");
+        };
         ywPatrolLineMapper.deleteById(id);
     }
 
@@ -111,6 +122,11 @@
                 .eq(YwLinePoint::getLineId,ywPatrolLine.getId()));
         //寰幆澶勭悊 瀛愰泦鏁版嵁
         List<YwLinePoint> ywLinePointList = ywPatrolLine.getLinePointList();
+        //鏄惁瀛樺湪鐩稿悓鏁版嵁
+        Set<Integer> setIds = new HashSet<Integer>(ywLinePointList.stream().map(i->i.getLineId()).collect(Collectors.toList()));
+        if(setIds.size()!=ywLinePointList.size()){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鐩稿悓宸℃鐐�!");
+        }
         for (YwLinePoint ywLinePoint:ywLinePointList) {
             if(Objects.isNull(ywLinePoint)
                     || Objects.isNull(ywLinePoint.getPointId())
@@ -128,6 +144,15 @@
     }
 
     @Override
+    public void updateStatusById(YwPatrolLine ywPatrolLine) {
+        YwPatrolLine model = new YwPatrolLine();
+        model.setId(ywPatrolLine.getId());
+        model.setStatus(ywPatrolLine.getStatus());
+        ywPatrolLineMapper.updateById(model);
+    }
+
+
+    @Override
     public void updateByIdInBatch(List<YwPatrolLine> ywPatrolLines) {
         if (CollectionUtils.isEmpty(ywPatrolLines)) {
             return;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolPointServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolPointServiceImpl.java
index 06e51e0..548644c 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolPointServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolPointServiceImpl.java
@@ -161,12 +161,14 @@
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         Multifile multifile = multifileMapper.selectOne(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,id)
-                .eq(Multifile::getObjType,Constants.MultiFile.FN_PATROL_POINT_FILE).last(" limit 1"));
+                .eq(Multifile::getObjType,Constants.MultiFile.FN_PATROL_POINT_FILE.getKey()).orderByDesc(Multifile::getId).last(" limit 1"));
         if(Objects.nonNull(multifile) && StringUtils.isNotBlank(multifile.getFileurl())){
             String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
                     +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_PATROL).getCode();
             ywPatrolPoint.setFileFullUrl(path + multifile.getFileurl());
+            ywPatrolPoint.setFileUrl(multifile.getFileurl());
         }
+
         return ywPatrolPoint;
     }
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java
index 6f532e1..3ac66ba 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java
@@ -94,7 +94,9 @@
     public void createThreeDaysData(YwPatrolScheme ywPatrolScheme){
         //寰幆鐢熸垚涓夊ぉ鍐呯殑鏁版嵁
         for (int i = 0; i < 3; i++) {
-            Date schemeDate = DateUtil.getXDayAfterDate(new Date(),i);
+            Date schemeDate = DateUtil.getXDayAfterDate(
+                    DateUtil.StringToDate(
+                    DateUtil.getDate(new Date(),"yyyy-MM-dd"),"yyyy-MM-dd"),i);
             this.createTask(schemeDate,ywPatrolScheme);
         }
     }
@@ -105,8 +107,8 @@
      * @param ywPatrolScheme
      */
     public void createTask(Date schemeDate,YwPatrolScheme ywPatrolScheme){
-        if(ywPatrolScheme.getStartDate().getTime() > schemeDate.getTime()
-            || ywPatrolScheme.getEndDate().getTime() < schemeDate.getTime() ){
+        if(!(ywPatrolScheme.getStartDate().getTime() <= schemeDate.getTime()
+            && ywPatrolScheme.getEndDate().getTime() >= schemeDate.getTime()) ){
             return;
         }
         if(Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.ONE)){
@@ -116,16 +118,15 @@
                 return;
             }
             List<String> weeks = Arrays.asList(ywPatrolScheme.getCircleDays().split(","));
-            String weekStr = weeks.stream().filter(i->Constants.equalsInteger(Integer.valueOf(i),week.getNumber())).findFirst().get();
-            if(StringUtils.isBlank(weekStr)){
+            if(weeks.stream().filter(i->Constants.equalsInteger(Integer.valueOf(i),week.getNumber())).collect(Collectors.toList()).size()<=Constants.ZERO){
                 return;
             }
-        }else{
+
+        }else if(Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.TWO)){
             //姣忔湀鏍规嵁鏃ユ湡鐢熸垚 鏍规嵁鏃ユ湡鑾峰彇鏄摢澶�
             List<String> days = Arrays.asList(ywPatrolScheme.getCircleDays().split(","));
-            String dayStr = DateUtil.getFomartDate(schemeDate,"dd");
-            Optional<String>  optional = days.stream().filter(i->StringUtils.equals(i,dayStr)).findAny();
-            if(Objects.isNull(optional)){
+            Integer dayStr = Integer.valueOf(DateUtil.getFomartDate(schemeDate,"dd"));
+            if(days.stream().filter(i->i.equals(dayStr.toString())).collect(Collectors.toList()).size()<=Constants.ZERO){
                 return;
             }
         }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskRecordServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskRecordServiceImpl.java
index 2c6f8d7..6fb3725 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskRecordServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskRecordServiceImpl.java
@@ -9,8 +9,7 @@
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.YwContractRevenueMapper;
-import com.doumee.dao.business.YwPatrolTaskRecordMapper;
+import com.doumee.dao.business.*;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.system.MultifileMapper;
 import com.doumee.dao.system.model.Multifile;
@@ -45,9 +44,17 @@
     @Autowired
     private MultifileMapper multifileMapper;
 
+    @Autowired
+    private YwDeviceMapper ywDeviceMapper;
+
+    @Autowired
+    private YwPatrolPointMapper ywPatrolPointMapper;
 
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
+
+    @Autowired
+    private YwPatrolTaskMapper ywPatrolTaskMapper;
 
 
 
@@ -117,9 +124,12 @@
         queryWrapper.selectAll(YwPatrolTaskRecord.class)
                 .selectAs(YwPatrolPoint::getName,YwPatrolTaskRecord::getPointName)
                 .selectAs(YwPatrolPoint::getContent,YwPatrolTaskRecord::getContent)
+                .selectAs(SystemUser::getRealname,YwPatrolTaskRecord::getRealname)
                 .leftJoin(YwPatrolPoint.class,YwPatrolPoint::getId,YwPatrolTaskRecord::getPointId)
                 .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolTaskRecord::getDealUserId)
                 .eq(YwPatrolScheme::getIsdeleted, Constants.ZERO)
+                .eq(Objects.nonNull(model) && Objects.nonNull(model.getTaskId()),YwPatrolTaskRecord::getTaskId, model.getTaskId())
+                .eq(Objects.nonNull(model) && Objects.nonNull(model.getDealUserId()),YwPatrolTaskRecord::getDealUserId, model.getDealUserId())
                 .like(StringUtils.isNotBlank(model.getPointName()),YwPatrolPoint::getName,model.getPointName())
                 .eq(Objects.nonNull(model) && Objects.nonNull(model.getStatus()) , YwPatrolTaskRecord::getStatus,model.getStatus())
                 .orderByDesc(YwPatrolScheme::getCreateDate)
@@ -140,7 +150,7 @@
     public void patrolData(YwPatrolTaskRecord ywPatrolTaskRecord) {
         if(Objects.isNull(ywPatrolTaskRecord)
         || Objects.isNull(ywPatrolTaskRecord.getId())
-        || Objects.isNull(ywPatrolTaskRecord.getDealStatus())){
+        ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         LoginUserInfo loginUserInfo = ywPatrolTaskRecord.getLoginUserInfo();
@@ -151,9 +161,23 @@
         if(!Constants.equalsInteger(model.getStatus(),Constants.ZERO)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏁版嵁鐘舵�佸凡娴佽浆");
         }
-
+        YwPatrolPoint ywPatrolPoint = ywPatrolPointMapper.selectById(model.getPointId());
+        if(Objects.isNull(ywPatrolPoint)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        YwDevice ywDevice = ywDeviceMapper.selectById(ywPatrolPoint.getDeviceId());
+        if(Objects.isNull(ywDevice)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        YwPatrolTask ywPatrolTask = ywPatrolTaskMapper.selectById(model.getTaskId());
+        if(Objects.isNull(ywPatrolTask)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(ywPatrolTask.getStartDate().getTime()>System.currentTimeMillis()){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈埌宸℃鏃堕棿鏃犳硶杩涜璇ユ搷浣�");
+        }
         ywPatrolTaskRecordMapper.update(null,new UpdateWrapper<YwPatrolTaskRecord>().lambda()
-                .set(YwPatrolTaskRecord::getDealStatus,ywPatrolTaskRecord.getDealStatus())
+                .set(YwPatrolTaskRecord::getDealStatus,ywDevice.getStatus())
                 .set(YwPatrolTaskRecord::getEditor,loginUserInfo.getId())
                 .set(YwPatrolTaskRecord::getEditDate, DateUtil.getCurrDateTime())
                 .set(YwPatrolTaskRecord::getDealDate, DateUtil.getCurrDateTime())
@@ -162,6 +186,19 @@
                 .set(YwPatrolTaskRecord::getDealInfo, ywPatrolTaskRecord.getDealInfo())
                 .eq(YwPatrolTaskRecord::getId,ywPatrolTaskRecord.getId()));
 
+        if(ywPatrolTaskRecordMapper.selectCount(new QueryWrapper<YwPatrolTaskRecord>().lambda()
+                .eq(YwPatrolTaskRecord::getTaskId,ywPatrolTask.getId())
+                .ne(YwPatrolTaskRecord::getId,ywPatrolTaskRecord.getId()))==Constants.ZERO){
+            ywPatrolTask.setStatus(Constants.THREE);
+        }else{
+            ywPatrolTask.setStatus(Constants.ONE);
+        }
+        //鏌ヨ鏄惁瀛樺湪鍏朵粬鏈�
+       ywPatrolTaskMapper.update(null,new UpdateWrapper<YwPatrolTask>().lambda().eq(YwPatrolTask::getId,ywPatrolTask.getId())
+               .set(YwPatrolTask::getStatus,ywPatrolTask.getStatus())
+               .set(YwPatrolTask::getEditDate,DateUtil.getCurrDateTime())
+               .set(YwPatrolTask::getEditor,loginUserInfo.getId())
+       );
         //闄勪欢鏁版嵁
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywPatrolTaskRecord.getMultifileList())){
             for (Multifile multifile:ywPatrolTaskRecord.getMultifileList()) {
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java
index 8ec0422..651d6f1 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java
@@ -94,6 +94,10 @@
                 .eq(YwPatrolTask::getId,id)
                 .last(" limit 1 "))
         ;
+        if(Constants.equalsInteger(ywPatrolTask.getStatus(),Constants.TWO) &&
+                ywPatrolTask.getEndDate().getTime()<System.currentTimeMillis()){
+            ywPatrolTask.setStatus(Constants.TWO);
+        }
         return ywPatrolTask;
     }
 
@@ -141,12 +145,21 @@
                 .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolTask::getDealUserId)
                 .leftJoin(YwPatrolScheme.class,YwPatrolScheme::getId,YwPatrolTask::getSchemeId)
                 .eq(YwPatrolTask::getIsdeleted, Constants.ZERO)
+                .eq(Objects.nonNull(model.getStatus()) && !Constants.equalsInteger(model.getStatus(),Constants.TWO),YwPatrolTask::getStatus, model.getStatus())
+                .apply(Objects.nonNull(model.getStatus()) && Constants.equalsInteger(model.getStatus(),Constants.TWO)," t.status = 1 and t.END_DATE > now() ")
+                .apply(StringUtils.isNotBlank(model.getQueryStatus())," find_in_set(t.status ,'"+model.getQueryStatus()+"') ")
                 .like(StringUtils.isNotBlank(model.getPlanTitle()),YwPatrolScheme::getTitle,model.getPlanTitle())
                 .ge(Objects.nonNull(model.getStartDate()), YwPatrolTask::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getStartDate()))
                 .le(Objects.nonNull(model.getEndDate()),YwPatrolTask::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getEndDate()))
                 .orderByDesc(YwPatrolTask::getId)
         ;
         IPage<YwPatrolTask> iPage = ywPatrolTaskMapper.selectJoinPage(page,YwPatrolTask.class,queryWrapper);
+        for (YwPatrolTask ywPatrolTask:iPage.getRecords()) {
+            if(Constants.equalsInteger(ywPatrolTask.getStatus(),Constants.TWO) &&
+             ywPatrolTask.getEndDate().getTime()<System.currentTimeMillis()){
+                ywPatrolTask.setStatus(Constants.TWO);
+            }
+        }
         return PageData.from(iPage);
     }
 
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 7c9d35f..b5dfdb8 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
@@ -1,5 +1,7 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
@@ -19,6 +21,7 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.StringUtils;
 import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +31,7 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 杩愮淮椤圭洰淇℃伅琛⊿ervice瀹炵幇
@@ -53,6 +57,15 @@
 
     @Override
     public Integer create(YwProject  model) {
+        if(Objects.isNull(model)
+        || StringUtils.isBlank(model.getName())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        if(ywProjectMapper.selectCount(new QueryWrapper<YwProject>().lambda()
+                .eq(YwProject::getName,model.getName())
+                .eq(YwProject::getIsdeleted,Constants.ZERO))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"銆�"+model.getName()+"銆戝凡瀛樺湪!");
+        }
         model.setCreator(model.getLoginUserInfo().getId());
         model.setIsdeleted(Constants.ZERO);
         model.setCreateDate(new Date());
@@ -65,6 +78,11 @@
 
     @Override
     public void deleteById(Integer id, LoginUserInfo user) {
+        //鏌ヨ椤圭洰涓嬬殑鏁版嵁
+        if(ywBuildingMapper.selectCount(new QueryWrapper<YwBuilding>().lambda().eq(YwBuilding::getIsdeleted,Constants.ZERO)
+                .eq(YwBuilding::getProjectId,id))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"椤圭洰涓嬪瓨鍦ㄦゼ瀹囨暟鎹�!");
+        };
         YwProject model = new YwProject();
         model.setId(id);
         model.setEditDate(new Date());
@@ -91,6 +109,17 @@
 
     @Override
     public void updateById(YwProject model) {
+        if(Objects.isNull(model)
+                || Objects.isNull(model.getId())
+                || StringUtils.isBlank(model.getName())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        if(ywProjectMapper.selectCount(new QueryWrapper<YwProject>().lambda()
+                .eq(YwProject::getName,model.getName())
+                .ne(YwProject::getId,model.getId())
+                .eq(YwProject::getIsdeleted,Constants.ZERO))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"銆�"+model.getName()+"銆戝凡瀛樺湪!");
+        }
         model.setEditDate(new Date());
         model.setEditor(model.getLoginUserInfo().getId());
         ywProjectMapper.updateById(model);
@@ -131,7 +160,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.PROJECT_ID=yw_project.id) as roomNum"+
-                ",(select count(1) from yw_room a where a.isdeleted=0 and a.PROJECT_ID=yw_project.id and a.IS_INVESTMENT=1) as roomRentNum");
+                ",(select count(1) from yw_room a where a.isdeleted=0 and a.PROJECT_ID=yw_project.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.PROJECT_ID=yw_project.id ) as area");
         if (pageWrap.getModel().getId() != null) {
             queryWrapper.lambda().eq(YwProject::getId, pageWrap.getModel().getId());
         }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwRoomServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwRoomServiceImpl.java
index b41d0ca..8cf6dd7 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwRoomServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwRoomServiceImpl.java
@@ -8,17 +8,17 @@
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.YwBuildingMapper;
+import com.doumee.dao.business.YwContractRoomMapper;
 import com.doumee.dao.business.YwRoomMapper;
-import com.doumee.dao.business.model.YwBuilding;
-import com.doumee.dao.business.model.YwFloor;
-import com.doumee.dao.business.model.YwProject;
-import com.doumee.dao.business.model.YwRoom;
+import com.doumee.dao.business.YwWorkorderMapper;
+import com.doumee.dao.business.model.*;
 import com.doumee.service.business.YwRoomService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -38,6 +38,10 @@
     private YwRoomMapper ywRoomMapper;
     @Autowired
     private YwBuildingMapper ywBuildingMapper;
+    @Autowired
+    private YwContractRoomMapper ywContractRoomMapper;
+    @Autowired
+    private YwWorkorderMapper ywWorkorderMapper;
 
     @Override
     public Integer create(YwRoom model) {
@@ -61,6 +65,16 @@
 
     @Override
     public void deleteById(Integer id, LoginUserInfo user) {
+        if(ywContractRoomMapper.selectCount(new QueryWrapper<YwContractRoom>()
+                .lambda().eq(YwContractRoom::getIsdeleted,Constants.ZERO)
+                .eq(YwContractRoom::getRoomId,id))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎴块棿淇℃伅宸蹭娇鐢�,鏃犳硶杩涜鍒犻櫎!");
+        };
+        if(ywWorkorderMapper.selectCount(new QueryWrapper<YwWorkorder>()
+                .lambda().eq(YwWorkorder::getIsdeleted,Constants.ZERO)
+                .eq(YwWorkorder::getRoomId,id))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎴块棿淇℃伅宸蹭娇鐢�,鏃犳硶杩涜鍒犻櫎!");
+        };
         YwRoom model = new YwRoom();
         model.setId(id);
         model.setEditDate(new Date());
@@ -136,6 +150,9 @@
                 .selectAs(YwProject::getName,YwRoom::getProjectName)
                 .selectAs(YwFloor::getName,YwRoom::getFloorName)
                 .selectAs(YwBuilding::getName,YwRoom::getBuildingName)
+                .select(" select case when y1.status = 3 then now() BETWEEN y1.START_DATE and y1.BT_DATE else now() BETWEEN y1.START_DATE and y1.END_DATE END  " +
+                        "from yw_contract y1 left join yw_contract_room y2 on y1.id = y2.CONTRACT_ID and y2.TYPE = 0  " +
+                        "where y1.`STATUS` <> 4  and y2.room_id = t.id order by y1.create_date desc  limit 1   ",YwRoom::getLeaseStatus)
                 .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId)
                 .leftJoin(YwBuilding.class,YwBuilding::getId,YwRoom::getBuildingId)
                 .leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor);
@@ -204,7 +221,13 @@
             queryWrapper.eq(YwRoom::getBuildingId, pageWrap.getModel().getBuildingId());
         }
         queryWrapper.orderByAsc(YwRoom::getRoomNum);
-        return PageData.from(ywRoomMapper.selectJoinPage(page,YwRoom.class, queryWrapper));
+        IPage<YwRoom> iPage = ywRoomMapper.selectJoinPage(page,YwRoom.class, queryWrapper);
+        for (YwRoom ywRoom:iPage.getRecords()) {
+            if(Constants.equalsInteger(ywRoom.getIsInvestment(),Constants.ZERO)){
+                ywRoom.setLeaseStatus(Constants.TWO);
+            }
+        }
+        return PageData.from(iPage);
     }
 
     @Override
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwWorkorderServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwWorkorderServiceImpl.java
index 3d2b0b5..81d8e1e 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwWorkorderServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwWorkorderServiceImpl.java
@@ -323,18 +323,25 @@
         MPJLambdaWrapper<YwWorkorder> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper.selectAll(YwWorkorder.class )
                 .selectAs(SystemUser::getRealname,YwWorkorder::getDealUserName)
+                .selectAs(Company::getName,YwWorkorder::getDealUserCompany)
                 .select("t3.realname",YwWorkorder::getCreatorName)
+                .select("t3.mobile",YwWorkorder::getCreatorMobile)
+                .select("t9.name",YwWorkorder::getCreatorCompany)
                 .selectAs(Category::getName,YwWorkorder::getCategoryName)
                 .selectAs(YwRoom::getName,YwWorkorder::getRoomName)
                 .selectAs(YwRoom::getRoomNum,YwWorkorder::getRoomNum)
                 .selectAs(YwFloor::getName,YwWorkorder::getFloorName)
                 .selectAs(YwBuilding::getName,YwWorkorder::getBuildingName)
+                .selectAs(YwProject::getName,YwWorkorder::getProjectName)
                 .leftJoin(SystemUser.class,SystemUser::getId,YwWorkorder::getDealUserId)
                 .leftJoin(Category.class,Category::getId,YwWorkorder::getCateId)
                 .leftJoin(SystemUser.class,SystemUser::getId,YwWorkorder::getCreator)
+                .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
                 .leftJoin(YwRoom.class,YwRoom::getId,YwWorkorder::getRoomId)
                 .leftJoin(YwFloor.class,YwFloor::getId,YwWorkorder::getFloorId)
                 .leftJoin(YwBuilding.class,YwBuilding::getId,YwWorkorder::getBuildingId)
+                .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId)
+                .leftJoin(" company t9 on t9.id = t1.company_id  ")
                 .eq(YwWorkorder::getId,id);
         YwWorkorder model = ywWorkorderMapper.selectJoinOne(YwWorkorder.class,queryWrapper);
         initFiles(model);//璇诲彇闄勪欢淇℃伅
@@ -382,17 +389,22 @@
                 .leftJoin(YwRoom.class,YwRoom::getId,YwWorkorder::getRoomId)
                 .leftJoin(YwFloor.class,YwFloor::getId,YwWorkorder::getFloorId)
                 .leftJoin(YwBuilding.class,YwBuilding::getId,YwWorkorder::getBuildingId)
-                .leftJoin(YwProject.class,YwProject::getId,YwBuilding::getProjectId);
+                .leftJoin(YwProject.class,YwProject::getId,YwBuilding::getProjectId)
+                .apply(StringUtils.isNotBlank(pageWrap.getModel().getQueryStatus())," find_in_set(t.DEAL_STATUS ,'"+pageWrap.getModel().getQueryStatus()+"') ");
         pageWrap.getModel().setIsdeleted(Constants.ZERO);
         Utils.MP.blankToNull(pageWrap.getModel());
         if (pageWrap.getModel().getId() != null) {
             queryWrapper.eq(YwWorkorder::getId, pageWrap.getModel().getId());
+        }
+        if (pageWrap.getModel().getDispatchUserId() != null) {
+            queryWrapper.eq(YwWorkorder::getDispatchUserId, pageWrap.getModel().getDispatchUserId());
         }
         if(Objects.nonNull(pageWrap.getModel().getRoomName())){
             queryWrapper.and(i->i.like(YwFloor::getName,pageWrap.getModel().getRoomName()).or()
                     .like(YwRoom::getRoomNum,pageWrap.getModel().getRoomName())
             );
         }
+
         if (pageWrap.getModel().getCreator() != null) {
             queryWrapper.eq(YwWorkorder::getCreator, pageWrap.getModel().getCreator());
         }
@@ -460,9 +472,6 @@
         }
         if (pageWrap.getModel().getDealStatus() != null) {
             queryWrapper.eq(YwWorkorder::getDealStatus, pageWrap.getModel().getDealStatus());
-        }
-        if (pageWrap.getModel().getDispatchUserId() != null) {
-            queryWrapper.eq(YwWorkorder::getDispatchUserId, pageWrap.getModel().getDispatchUserId());
         }
         if (pageWrap.getModel().getDispatchDate() != null) {
             queryWrapper.ge(YwWorkorder::getDispatchDate, Utils.Date.getStart(pageWrap.getModel().getDispatchDate()));

--
Gitblit v1.9.3