From a28e0d402702e69e0e75b0c902835239d21bfb6f Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期四, 21 十一月 2024 14:19:01 +0800
Subject: [PATCH] 设备、巡检任务业务

---
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                    |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolLine.java                 |   10 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwDeviceRecordService.java          |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwDeviceMapper.java                     |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolLineService.java            |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwDeviceService.java                |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwLinePoint.java                  |    6 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwDeviceRecordCloudController.java         |    2 
 server/system_service/src/main/java/com/doumee/dao/system/model/Multifile.java                              |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolPoint.java                |   38 ++
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolLineCloudController.java           |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolPointServiceImpl.java  |  165 ++++++++---
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwDeviceRecord.java               |   55 ++-
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolPointService.java           |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolLineServiceImpl.java   |  142 ++++++---
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwDevice.java                     |   13 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceRecordServiceImpl.java |  146 ++++++---
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolPointCloudController.java          |    9 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwDeviceCloudController.java               |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceServiceImpl.java       |  182 ++++++++----
 20 files changed, 554 insertions(+), 237 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 68b1003..201033d 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
@@ -48,13 +48,14 @@
     public static final String PLATFORM ="PLATFORM" ;
     public static final String POWER_MINUTE ="POWER_MINUTE" ;
     public static final String SPECIAL_COMPANY_ID ="SPECIAL_COMPANY_ID" ;
+    public static final String YW_DEVICE ="YW_DEVICE" ;
+    public static final String YW_PATROL ="YW_PATROL" ;
 
     public static final String RESERVATION_TOTAL_NUM ="RESERVATION_TOTAL_NUM" ;
     public static final String SIGN_IN_PLACE_LAT ="SIGN_IN_PLACE_LAT" ;
     public static final String SIGN_IN_PLACE_LNT ="SIGN_IN_PLACE_LNT" ;
     public static final String SIGN_IN_PLACE_DISTANCE ="SIGN_IN_PLACE_DISTANCE" ;
     public static final String SIGN_IN_QRCODE ="SIGN_IN_QRCODE" ;
-
 
     //琚嫓璁夸汉淇℃伅鏍¢獙鏂瑰紡锛�0鎵嬫満鍙峰崟鐙牎楠� 1鎵嬫満鍙峰拰濮撳悕缁勫悎鏍¢獙锛�
     public static final String BEVISITED_USER_VALID = "BEVISITED_USER_VALID";
@@ -1214,6 +1215,9 @@
         HIDDEN_DANGER_DEAL_AFTER(2, "闅愭偅闅忔墜鎷嶅鐞嗗悗 ", "闅愭偅闅忔墜鎷嶅鐞嗗悗 "),
         YW_WORKORDER_PROBLEM(3, "杩愮淮宸ュ崟闂闄勪欢 ", "杩愮淮宸ュ崟闂闄勪欢 "),
         YW_WORKORDER_DEAL(4, "杩愮淮宸ュ崟澶勭悊闄勪欢 ", "杩愮淮宸ュ崟澶勭悊闄勪欢 "),
+        FN_DEVICE_FILE(5, "闃滃畞鏈嶅姟骞冲彴璁惧绫诲瀷鍥剧墖 ", "闃滃畞鏈嶅姟骞冲彴璁惧绫诲瀷鍥剧墖 "),
+        FN_DEVICE_RECORD_FILE(6, "闃滃畞鏈嶅姟骞冲彴杩愮淮璁板綍鍥剧墖 ", "闃滃畞鏈嶅姟骞冲彴杩愮淮璁板綍鍥剧墖 "),
+        FN_PATROL_POINT_FILE(7, "宸℃鐐归檮浠� ", "宸℃鐐归檮浠� "),
         ;
         // 鎴愬憳鍙橀噺
         private String name;
diff --git a/server/system_service/src/main/java/com/doumee/dao/system/model/Multifile.java b/server/system_service/src/main/java/com/doumee/dao/system/model/Multifile.java
index adfdfc3..add8c58 100644
--- a/server/system_service/src/main/java/com/doumee/dao/system/model/Multifile.java
+++ b/server/system_service/src/main/java/com/doumee/dao/system/model/Multifile.java
@@ -63,8 +63,8 @@
     @ExcelColumn(name="绫诲瀷0鍥剧墖 1瑙嗛 2鍏朵粬")
     private Integer type;
 
-    @ApiModelProperty(value = "鍏宠仈瀵硅薄绫诲瀷 0闅愭偅鐜板満鎯呭喌 1闅愭偅澶勭悊鍓嶆儏鍐� 2闅愭偅澶勭悊鍚庢儏鍐� 3闅愭偅閫�鍥炶鏄� 4浼氳瀹ゆ枃浠�", example = "1")
-    @ExcelColumn(name="鍏宠仈瀵硅薄绫诲瀷 0闅愭偅鐜板満鎯呭喌 1闅愭偅澶勭悊鍓嶆儏鍐� 2闅愭偅澶勭悊鍚庢儏鍐� 3闅愭偅閫�鍥炶鏄� 4浼氳瀹ゆ枃浠�")
+    @ApiModelProperty(value = "鍏宠仈瀵硅薄绫诲瀷 0闅愭偅鐜板満鎯呭喌 1闅愭偅澶勭悊鍓嶆儏鍐� 2闅愭偅澶勭悊鍚庢儏鍐� 3闅愭偅閫�鍥炶鏄� 4浼氳瀹ゆ枃浠� 5闃滃畞璁惧鍥剧墖 6闃滃畞璁惧杩愮淮鍥剧墖", example = "1")
+    @ExcelColumn(name="鍏宠仈瀵硅薄绫诲瀷 0闅愭偅鐜板満鎯呭喌 1闅愭偅澶勭悊鍓嶆儏鍐� 2闅愭偅澶勭悊鍚庢儏鍐� 3闅愭偅閫�鍥炶鏄� 4浼氳瀹ゆ枃浠�  5闃滃畞璁惧鍥剧墖 6闃滃畞璁惧杩愮淮鍥剧墖")
     private Integer objType;
 
     @ApiModelProperty(value = "鏂囦欢鍦板潃")
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwDeviceCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwDeviceCloudController.java
index 649a158..44bd24c 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwDeviceCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwDeviceCloudController.java
@@ -90,6 +90,6 @@
     @GetMapping("/{id}")
     @CloudRequiredPermission("business:ywdevice:query")
     public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
-        return ApiResponse.success(ywDeviceService.findById(id));
+        return ApiResponse.success(ywDeviceService.getDetail(id));
     }
 }
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwDeviceRecordCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwDeviceRecordCloudController.java
index ed91db8..5ac8760 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwDeviceRecordCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwDeviceRecordCloudController.java
@@ -90,6 +90,6 @@
     @GetMapping("/{id}")
     @CloudRequiredPermission("business:ywdevicerecord:query")
     public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
-        return ApiResponse.success(ywDeviceRecordService.findById(id));
+        return ApiResponse.success(ywDeviceRecordService.getDetail(id));
     }
 }
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 8d5a2d0..f49f495 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
@@ -90,6 +90,6 @@
     @GetMapping("/{id}")
     @CloudRequiredPermission("business:ywpatrolline:query")
     public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
-        return ApiResponse.success(ywPatrolLineService.findById(id));
+        return ApiResponse.success(ywPatrolLineService.getDetail(id));
     }
 }
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolPointCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolPointCloudController.java
index 2c5f5f2..af02236 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolPointCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolPointCloudController.java
@@ -78,6 +78,13 @@
         return ApiResponse.success(ywPatrolPointService.findPage(pageWrap));
     }
 
+    @ApiOperation("鍒楄〃鏌ヨ")
+    @PostMapping("/list")
+    @CloudRequiredPermission("business:ywpatrolpoint:query")
+    public ApiResponse<List<YwPatrolPoint>> list (@RequestBody YwPatrolPoint ywPatrolPoint,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        return ApiResponse.success(ywPatrolPointService.findList(ywPatrolPoint));
+    }
+
     @ApiOperation("瀵煎嚭Excel")
     @PostMapping("/exportExcel")
     @CloudRequiredPermission("business:ywpatrolpoint:exportExcel")
@@ -90,6 +97,6 @@
     @GetMapping("/{id}")
     @CloudRequiredPermission("business:ywpatrolpoint:query")
     public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
-        return ApiResponse.success(ywPatrolPointService.findById(id));
+        return ApiResponse.success(ywPatrolPointService.getDetail(id));
     }
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwDeviceMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwDeviceMapper.java
index 9b4ea71..54deb3c 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwDeviceMapper.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwDeviceMapper.java
@@ -2,6 +2,7 @@
 
 import com.github.yulichang.base.MPJBaseMapper;
 import com.doumee.dao.business.model.YwDevice;
+import com.github.yulichang.base.mapper.MPJJoinMapper;
 
 /**
  * @author 姹熻箘韫�
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwDevice.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwDevice.java
index c5da317..cff24ae 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwDevice.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwDevice.java
@@ -1,7 +1,9 @@
 package com.doumee.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import com.doumee.core.model.LoginUserModel;
+import com.doumee.dao.system.model.Multifile;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.IdType;
@@ -93,4 +95,15 @@
     @ExcelColumn(name="鎵�鍦ㄤ綅缃�")
     private String addr;
 
+    @ApiModelProperty(value = "鍒嗙被鍚嶇О")
+    @TableField(exist = false)
+    private String categoryName;
+
+    @ApiModelProperty(value = "绠$悊鍛樺悕绉�")
+    @TableField(exist = false)
+    private String realName;
+
+    @ApiModelProperty(value = "闄勪欢淇℃伅")
+    @TableField(exist = false)
+    private Multifile multifile;
 }
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 7bc54e8..9cacb9e 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
@@ -1,7 +1,9 @@
 package com.doumee.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import com.doumee.core.model.LoginUserModel;
+import com.doumee.dao.system.model.Multifile;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.IdType;
@@ -10,6 +12,7 @@
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 杩愮淮璁惧杩愮淮璁板綍琛�
@@ -23,63 +26,87 @@
 
     @TableId(type = IdType.AUTO)
     @ApiModelProperty(value = "涓婚敭", example = "1")
-    @ExcelColumn(name="涓婚敭")
     private Integer id;
 
     @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
     private Integer creator;
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿",index = 5, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date createDate;
 
     @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
     private Integer editor;
 
     @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    @ExcelColumn(name="鏇存柊鏃堕棿")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date editDate;
 
     @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
-    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
     private Integer isdeleted;
 
     @ApiModelProperty(value = "澶囨敞")
-    @ExcelColumn(name="澶囨敞")
     private String remark;
 
     @ApiModelProperty(value = "鐘舵�� 0姝e父 1鎹熷潖 2鎶ュ簾", example = "1")
-    @ExcelColumn(name="鐘舵�� 0姝e父 1鎹熷潖 2鎶ュ簾")
+    @ExcelColumn(name="璁惧鐘舵��",index = 3, valueMapping = "0=姝e父;1=鎹熷潖;2=鎶ュ簾;")
     private Integer status;
 
     @ApiModelProperty(value = "璁惧鍨嬪彿", example = "1")
-    @ExcelColumn(name="璁惧鍨嬪彿")
     private Integer modelNo;
 
     @ApiModelProperty(value = "璁惧绫荤紪鐮侊紙绠$悊yw_device锛�", example = "1")
-    @ExcelColumn(name="璁惧绫荤紪鐮侊紙绠$悊yw_device锛�")
     private Integer deviceId;
 
     @ApiModelProperty(value = "杩愮淮浜哄憳缂栫爜缂栫爜(鍏宠仈system_user)", example = "1")
-    @ExcelColumn(name="杩愮淮浜哄憳缂栫爜缂栫爜(鍏宠仈system_user)")
     private Integer userId;
 
     @ApiModelProperty(value = "渚涘簲鍟�")
-    @ExcelColumn(name="渚涘簲鍟�")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date company;
 
     @ApiModelProperty(value = "鎯呭喌璇存槑")
-    @ExcelColumn(name="鎯呭喌璇存槑")
+    @ExcelColumn(name="杩愮淮澶囨敞",index = 4)
     private String content;
 
     @ApiModelProperty(value = "杩愮淮鏃堕棿")
-    @ExcelColumn(name="杩愮淮鏃堕棿")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date dealDate;
 
+    @ApiModelProperty(value = "璁惧鍚嶇О")
+    @ExcelColumn(name="璁惧鍚嶇О",index = 2)
+    @TableField(exist = false)
+    private String deviceName;
+
+    @ApiModelProperty(value = "璁惧缂栧彿")
+    @ExcelColumn(name="璁惧缂栧彿",index = 1)
+    @TableField(exist = false)
+    private String deviceCode;
+
+    @ApiModelProperty(value = "杩愮淮浜哄悕绉�")
+    @ExcelColumn(name="杩愮淮浜�",index = 0)
+    @TableField(exist = false)
+    private String realName;
+
+    @ApiModelProperty(value = "杩愮淮浜虹粍缁囧悕绉�")
+    @TableField(exist = false)
+    private String companyName;
+
+    @ApiModelProperty(value = "杩愮淮浜烘墜鏈哄彿")
+    @TableField(exist = false)
+    private String mobile;
+
+    @ApiModelProperty(value = "寮�濮嬫棩鏈� yyyy-MM-dd")
+    @TableField(exist = false)
+    private Date startDate;
+
+    @ApiModelProperty(value = "缁撴潫鏃ユ湡 yyyy-MM-dd")
+    @TableField(exist = false)
+    private Date endDate;
+
+    @ApiModelProperty(value = "闄勪欢淇℃伅")
+    @TableField(exist = false)
+    private List<Multifile> multifileList;
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwLinePoint.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwLinePoint.java
index 3251367..54cc29c 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwLinePoint.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwLinePoint.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import com.doumee.core.model.LoginUserModel;
 import io.swagger.annotations.ApiModel;
@@ -68,4 +69,9 @@
     @ExcelColumn(name="鏄惁鎵爜鎵撳崱 0涓嶉渶瑕� 1闇�瑕�")
     private Integer needScancode;
 
+    @ApiModelProperty(value = "宸℃鐐瑰悕绉�")
+    @TableField(exist = false)
+    private String pointName;
+
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolLine.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolLine.java
index a3d00d9..48a9942 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolLine.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolLine.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import com.doumee.core.model.LoginUserModel;
 import io.swagger.annotations.ApiModel;
@@ -10,6 +11,7 @@
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 杩愮淮宸℃璺嚎淇℃伅琛�
@@ -68,4 +70,12 @@
     @ExcelColumn(name="鍥炬爣")
     private String imgurl;
 
+    @ApiModelProperty(value = "宸℃鐐规暟閲�")
+    @TableField(exist = false)
+    private Integer lineAmount;
+
+    @ApiModelProperty(value = "宸℃鐐�")
+    @TableField(exist = false)
+    private List<YwLinePoint> linePointList;
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolPoint.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolPoint.java
index 451de6c..e1e0d05 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolPoint.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolPoint.java
@@ -1,7 +1,9 @@
 package com.doumee.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import com.doumee.core.model.LoginUserModel;
+import com.doumee.dao.system.model.Multifile;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.IdType;
@@ -10,6 +12,7 @@
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 杩愮淮宸℃鐐逛俊鎭〃
@@ -76,4 +79,39 @@
     @ExcelColumn(name="鍦板潃")
     private String addr;
 
+    @ApiModelProperty(value = "缂栫爜")
+    @ExcelColumn(name="缂栫爜")
+    private String code;
+
+    @ApiModelProperty(value = "缁忓害")
+    @ExcelColumn(name="缁忓害")
+    private String longitude;
+
+    @ApiModelProperty(value = "绾害")
+    @ExcelColumn(name="绾害")
+    private String latitude;
+
+    @ApiModelProperty(value = "鍐呭")
+    @ExcelColumn(name="鍐呭")
+    private String content;
+
+    @ApiModelProperty(value = "宸℃璁惧锛堝叧鑱� yw_device锛�", example = "1")
+    @ExcelColumn(name="宸℃璁惧锛堝叧鑱� yw_device锛�")
+    private Integer deviceId;
+
+    @ApiModelProperty(value = "鍖哄煙鍚嶇О")
+    @TableField(exist = false)
+    private String areaName;
+
+    @ApiModelProperty(value = "璁惧鍚嶇О")
+    @TableField(exist = false)
+    private String deviceName;
+
+    @ApiModelProperty(value = "闄勪欢淇℃伅")
+    @TableField(exist = false)
+    private Multifile multifile;
+
+    @ApiModelProperty(value = "杩囨护鏁版嵁")
+    @TableField(exist = false)
+    private List<Integer> idLists;
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwDeviceRecordService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwDeviceRecordService.java
index 2e1d881..fb6c6fa 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwDeviceRecordService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwDeviceRecordService.java
@@ -95,4 +95,6 @@
      * @return long
      */
     long count(YwDeviceRecord ywDeviceRecord);
+
+    YwDeviceRecord getDetail(Integer id);
 }
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 4b82d39..8a27715 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
@@ -95,4 +95,6 @@
      * @return long
      */
     long count(YwDevice ywDevice);
+
+    YwDevice getDetail(Integer id);
 }
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 96ad10e..658c5eb 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
@@ -95,4 +95,6 @@
      * @return long
      */
     long count(YwPatrolLine ywPatrolLine);
+
+    YwPatrolLine getDetail(Integer id);
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolPointService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolPointService.java
index 35ca914..8be507c 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolPointService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolPointService.java
@@ -95,4 +95,6 @@
      * @return long
      */
     long count(YwPatrolPoint ywPatrolPoint);
+
+    YwPatrolPoint getDetail(Integer id);
 }
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 7d0be5b..2cab8a2 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
@@ -1,21 +1,35 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.biz.system.SystemDictDataBiz;
+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.YwDeviceRecordMapper;
+import com.doumee.dao.business.model.Company;
+import com.doumee.dao.business.model.YwCustomer;
+import com.doumee.dao.business.model.YwDevice;
 import com.doumee.dao.business.model.YwDeviceRecord;
+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.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.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 杩愮淮璁惧杩愮淮璁板綍琛⊿ervice瀹炵幇
@@ -27,10 +41,38 @@
 
     @Autowired
     private YwDeviceRecordMapper ywDeviceRecordMapper;
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+    @Autowired
+    private MultifileMapper multifileMapper;
+
 
     @Override
     public Integer create(YwDeviceRecord ywDeviceRecord) {
+        if(Objects.isNull(ywDeviceRecord)
+        || Objects.isNull(ywDeviceRecord.getDeviceId())
+        || Objects.isNull(ywDeviceRecord.getStatus())
+        || StringUtils.isBlank(ywDeviceRecord.getContent())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        LoginUserInfo loginUserInfo = ywDeviceRecord.getLoginUserInfo();
+        ywDeviceRecord.setCreateDate(new Date());
+        ywDeviceRecord.setCreator(loginUserInfo.getId());
+        ywDeviceRecord.setIsdeleted(Constants.ZERO);
         ywDeviceRecordMapper.insert(ywDeviceRecord);
+
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywDeviceRecord.getMultifileList())){
+            List<Multifile> multifiles = ywDeviceRecord.getMultifileList();
+            for (Multifile multifile:multifiles) {
+                multifile.setCreator(loginUserInfo.getId());
+                multifile.setCreateDate(new Date());
+                multifile.setIsdeleted(Constants.ZERO);
+                multifile.setObjType(Constants.MultiFile.FN_DEVICE_RECORD_FILE.getKey());
+                multifile.setObjId(ywDeviceRecord.getId());
+            }
+            multifileMapper.insert(multifiles);
+        }
         return ywDeviceRecord.getId();
     }
 
@@ -73,6 +115,36 @@
         return ywDeviceRecordMapper.selectById(id);
     }
 
+
+    @Override
+    public YwDeviceRecord getDetail(Integer id) {
+        YwDeviceRecord ywDeviceRecord =  ywDeviceRecordMapper.selectJoinOne(YwDeviceRecord.class,
+                new MPJLambdaWrapper<YwDeviceRecord>()
+                        .selectAll(YwDeviceRecord.class)
+                        .selectAs(SystemUser::getRealname,YwDeviceRecord::getRealName)
+                        .selectAs(SystemUser::getMobile,YwDeviceRecord::getMobile)
+                        .selectAs(Company::getName,YwDeviceRecord::getCompanyName)
+                        .selectAs(YwDevice::getName,YwDeviceRecord::getDeviceName)
+                        .leftJoin(SystemUser.class,SystemUser::getId,YwDeviceRecord::getUserId)
+                        .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
+                        .leftJoin(YwDevice.class,YwDevice::getId,YwDeviceRecord::getDeviceId)
+                        .eq(YwDeviceRecord::getId,id)
+                        .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));
+        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();
+            for (Multifile multifile : multifiles) {
+                multifile.setFileurlFull(path + multifile.getFileurl());
+            }
+            ywDeviceRecord.setMultifileList(multifiles);
+        }
+        return ywDeviceRecord;
+    }
+
+
     @Override
     public YwDeviceRecord findOne(YwDeviceRecord ywDeviceRecord) {
         QueryWrapper<YwDeviceRecord> wrapper = new QueryWrapper<>(ywDeviceRecord);
@@ -88,62 +160,26 @@
     @Override
     public PageData<YwDeviceRecord> findPage(PageWrap<YwDeviceRecord> pageWrap) {
         IPage<YwDeviceRecord> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
-        QueryWrapper<YwDeviceRecord> queryWrapper = new QueryWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
-        if (pageWrap.getModel().getId() != null) {
-            queryWrapper.lambda().eq(YwDeviceRecord::getId, pageWrap.getModel().getId());
-        }
-        if (pageWrap.getModel().getCreator() != null) {
-            queryWrapper.lambda().eq(YwDeviceRecord::getCreator, pageWrap.getModel().getCreator());
-        }
-        if (pageWrap.getModel().getCreateDate() != null) {
-            queryWrapper.lambda().ge(YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
-            queryWrapper.lambda().le(YwDeviceRecord::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
-        }
-        if (pageWrap.getModel().getEditor() != null) {
-            queryWrapper.lambda().eq(YwDeviceRecord::getEditor, pageWrap.getModel().getEditor());
-        }
-        if (pageWrap.getModel().getEditDate() != null) {
-            queryWrapper.lambda().ge(YwDeviceRecord::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
-            queryWrapper.lambda().le(YwDeviceRecord::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
-        }
-        if (pageWrap.getModel().getIsdeleted() != null) {
-            queryWrapper.lambda().eq(YwDeviceRecord::getIsdeleted, pageWrap.getModel().getIsdeleted());
-        }
-        if (pageWrap.getModel().getRemark() != null) {
-            queryWrapper.lambda().eq(YwDeviceRecord::getRemark, pageWrap.getModel().getRemark());
-        }
-        if (pageWrap.getModel().getStatus() != null) {
-            queryWrapper.lambda().eq(YwDeviceRecord::getStatus, pageWrap.getModel().getStatus());
-        }
-        if (pageWrap.getModel().getModelNo() != null) {
-            queryWrapper.lambda().eq(YwDeviceRecord::getModelNo, pageWrap.getModel().getModelNo());
-        }
-        if (pageWrap.getModel().getDeviceId() != null) {
-            queryWrapper.lambda().eq(YwDeviceRecord::getDeviceId, pageWrap.getModel().getDeviceId());
-        }
-        if (pageWrap.getModel().getUserId() != null) {
-            queryWrapper.lambda().eq(YwDeviceRecord::getUserId, pageWrap.getModel().getUserId());
-        }
-        if (pageWrap.getModel().getCompany() != null) {
-            queryWrapper.lambda().ge(YwDeviceRecord::getCompany, Utils.Date.getStart(pageWrap.getModel().getCompany()));
-            queryWrapper.lambda().le(YwDeviceRecord::getCompany, Utils.Date.getEnd(pageWrap.getModel().getCompany()));
-        }
-        if (pageWrap.getModel().getContent() != null) {
-            queryWrapper.lambda().eq(YwDeviceRecord::getContent, pageWrap.getModel().getContent());
-        }
-        if (pageWrap.getModel().getDealDate() != null) {
-            queryWrapper.lambda().ge(YwDeviceRecord::getDealDate, Utils.Date.getStart(pageWrap.getModel().getDealDate()));
-            queryWrapper.lambda().le(YwDeviceRecord::getDealDate, Utils.Date.getEnd(pageWrap.getModel().getDealDate()));
-        }
-        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
-            }
-        }
-        return PageData.from(ywDeviceRecordMapper.selectPage(page, queryWrapper));
+        YwDeviceRecord model = pageWrap.getModel();
+        IPage iPage = ywDeviceRecordMapper.selectJoinPage(page,YwDeviceRecord.class,
+                new MPJLambdaWrapper<YwDeviceRecord>()
+                        .selectAll(YwDeviceRecord.class)
+                        .selectAs(SystemUser::getRealname,YwDeviceRecord::getRealName)
+                        .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)
+                        .eq(YwDeviceRecord::getIsdeleted,Constants.ZERO)
+                        .and(Objects.nonNull(model)&&StringUtils.isNotBlank(model.getDeviceName()),i->i.like(YwDevice::getName,model.getDeviceName()).or().like(YwDevice::getCode,model.getDeviceName()))
+                        .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)
+        );
+        return PageData.from(iPage);
     }
 
     @Override
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 0684415..1b4b13a 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
@@ -1,21 +1,35 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.biz.system.SystemDictDataBiz;
+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.YwDeviceMapper;
+import com.doumee.dao.business.model.Category;
 import com.doumee.dao.business.model.YwDevice;
+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.YwDeviceService;
 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 lombok.extern.java.Log;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 杩愮淮璁惧淇℃伅琛⊿ervice瀹炵幇
@@ -28,15 +42,61 @@
     @Autowired
     private YwDeviceMapper ywDeviceMapper;
 
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+    @Autowired
+    private MultifileMapper multifileMapper;
+
+    @Autowired
+    private RedisTemplate<String,Object> redisTemplate;
+
+
     @Override
     public Integer create(YwDevice ywDevice) {
+        if(Objects.isNull(ywDevice)
+            || StringUtils.isBlank(ywDevice.getName())
+            || StringUtils.isBlank(ywDevice.getCode())
+            || Objects.isNull(ywDevice.getStatus())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        LoginUserInfo loginUserInfo = ywDevice.getLoginUserInfo();
+        if(ywDeviceMapper.selectCount(new QueryWrapper<YwDevice>().lambda().eq(YwDevice::getIsdeleted,Constants.ZERO).eq(YwDevice::getCode,ywDevice.getCode()))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁惧缂栧彿閲嶅!");
+        }
+//        if(StringUtils.isBlank(ywDevice.getCode())){
+//            String code = this.getMaxAutoMaticDeviceCode();
+//            while (ywDeviceMapper.selectCount(new QueryWrapper<YwDevice>().lambda().eq(YwDevice::getIsdeleted,Constants.ZERO).eq(YwDevice::getCode,code))>Constants.ZERO){
+//                code = this.getMaxAutoMaticDeviceCode();
+//            }
+//             ywDevice.setCode(code);
+//        }else{
+//
+//        }
+        ywDevice.setCreateDate(new Date());
+        ywDevice.setCreator(loginUserInfo.getId());
+        ywDevice.setIsdeleted(Constants.ZERO);
         ywDeviceMapper.insert(ywDevice);
+
+        if(Objects.nonNull(ywDevice.getMultifile())){
+            ywDevice.getMultifile().setCreator(loginUserInfo.getId());
+            ywDevice.getMultifile().setCreateDate(new Date());
+            ywDevice.getMultifile().setIsdeleted(Constants.ZERO);
+            ywDevice.getMultifile().setObjType(Constants.MultiFile.FN_DEVICE_FILE.getKey());
+            ywDevice.getMultifile().setObjId(ywDevice.getId());
+            multifileMapper.insert(ywDevice.getMultifile());
+        }
+
         return ywDevice.getId();
     }
 
     @Override
     public void deleteById(Integer id, LoginUserInfo user) {
-        ywDeviceMapper.deleteById(id);
+        ywDeviceMapper.update(new UpdateWrapper<YwDevice>().lambda().set(YwDevice::getIsdeleted,Constants.ONE)
+                .set(YwDevice::getEditDate," now() ")
+                .set(YwDevice::getEditor,user.getId())
+                .eq(YwDevice::getId,user.getId())
+        );
     }
 
     @Override
@@ -55,7 +115,36 @@
 
     @Override
     public void updateById(YwDevice ywDevice) {
+        if(Objects.isNull(ywDevice)
+                || StringUtils.isBlank(ywDevice.getName())
+                || StringUtils.isBlank(ywDevice.getCode())
+                || Objects.isNull(ywDevice.getStatus())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        LoginUserInfo loginUserInfo = ywDevice.getLoginUserInfo();
+        if(ywDeviceMapper.selectCount(new QueryWrapper<YwDevice>().lambda().eq(YwDevice::getIsdeleted,Constants.ZERO)
+                .eq(YwDevice::getCode,ywDevice.getCode())
+                .ne(YwDevice::getId,ywDevice.getId()))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁惧缂栧彿閲嶅!");
+        }
+        ywDevice.setEditDate(new Date());
+        ywDevice.setEditor(loginUserInfo.getId());
         ywDeviceMapper.updateById(ywDevice);
+        multifileMapper.delete(new QueryWrapper<Multifile>().lambda()
+                .eq(Multifile::getObjId,ywDevice.getId())
+                .eq(Multifile::getObjType,Constants.MultiFile.FN_DEVICE_FILE.getKey())
+        );
+        if(Objects.nonNull(ywDevice.getMultifile())){
+            ywDevice.getMultifile().setCreator(loginUserInfo.getId());
+            ywDevice.getMultifile().setCreateDate(new Date());
+            ywDevice.getMultifile().setIsdeleted(Constants.ZERO);
+            ywDevice.getMultifile().setObjType(Constants.MultiFile.FN_DEVICE_FILE.getKey());
+            ywDevice.getMultifile().setObjId(ywDevice.getId());
+            multifileMapper.insert(ywDevice.getMultifile());
+        }
+
+
     }
 
     @Override
@@ -74,6 +163,20 @@
     }
 
     @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"));
+        if(Objects.nonNull(multifile)){
+            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+                    +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_DEVICE).getCode();
+            multifile.setFileurlFull(path + multifile.getFileurl());
+            ywDevice.setMultifile(multifile);
+        }
+        return ywDevice;
+    }
+
+
+    @Override
     public YwDevice findOne(YwDevice ywDevice) {
         QueryWrapper<YwDevice> wrapper = new QueryWrapper<>(ywDevice);
         return ywDeviceMapper.selectOne(wrapper);
@@ -88,70 +191,21 @@
     @Override
     public PageData<YwDevice> findPage(PageWrap<YwDevice> pageWrap) {
         IPage<YwDevice> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
-        QueryWrapper<YwDevice> queryWrapper = new QueryWrapper<>();
+        MPJLambdaWrapper<YwDevice> queryWrapper = new MPJLambdaWrapper<YwDevice>();
         Utils.MP.blankToNull(pageWrap.getModel());
-        if (pageWrap.getModel().getId() != null) {
-            queryWrapper.lambda().eq(YwDevice::getId, pageWrap.getModel().getId());
-        }
-        if (pageWrap.getModel().getCreator() != null) {
-            queryWrapper.lambda().eq(YwDevice::getCreator, pageWrap.getModel().getCreator());
-        }
-        if (pageWrap.getModel().getCreateDate() != null) {
-            queryWrapper.lambda().ge(YwDevice::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
-            queryWrapper.lambda().le(YwDevice::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
-        }
-        if (pageWrap.getModel().getEditor() != null) {
-            queryWrapper.lambda().eq(YwDevice::getEditor, pageWrap.getModel().getEditor());
-        }
-        if (pageWrap.getModel().getEditDate() != null) {
-            queryWrapper.lambda().ge(YwDevice::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
-            queryWrapper.lambda().le(YwDevice::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
-        }
-        if (pageWrap.getModel().getIsdeleted() != null) {
-            queryWrapper.lambda().eq(YwDevice::getIsdeleted, pageWrap.getModel().getIsdeleted());
-        }
-        if (pageWrap.getModel().getName() != null) {
-            queryWrapper.lambda().eq(YwDevice::getName, pageWrap.getModel().getName());
-        }
-        if (pageWrap.getModel().getRemark() != null) {
-            queryWrapper.lambda().eq(YwDevice::getRemark, pageWrap.getModel().getRemark());
-        }
-        if (pageWrap.getModel().getStatus() != null) {
-            queryWrapper.lambda().eq(YwDevice::getStatus, pageWrap.getModel().getStatus());
-        }
-        if (pageWrap.getModel().getSortnum() != null) {
-            queryWrapper.lambda().eq(YwDevice::getSortnum, pageWrap.getModel().getSortnum());
-        }
-        if (pageWrap.getModel().getModelNo() != null) {
-            queryWrapper.lambda().eq(YwDevice::getModelNo, pageWrap.getModel().getModelNo());
-        }
-        if (pageWrap.getModel().getCateId() != null) {
-            queryWrapper.lambda().eq(YwDevice::getCateId, pageWrap.getModel().getCateId());
-        }
-        if (pageWrap.getModel().getUserId() != null) {
-            queryWrapper.lambda().eq(YwDevice::getUserId, pageWrap.getModel().getUserId());
-        }
-        if (pageWrap.getModel().getCompany() != null) {
-            queryWrapper.lambda().ge(YwDevice::getCompany, Utils.Date.getStart(pageWrap.getModel().getCompany()));
-            queryWrapper.lambda().le(YwDevice::getCompany, Utils.Date.getEnd(pageWrap.getModel().getCompany()));
-        }
-        if (pageWrap.getModel().getContent() != null) {
-            queryWrapper.lambda().eq(YwDevice::getContent, pageWrap.getModel().getContent());
-        }
-        if (pageWrap.getModel().getCode() != null) {
-            queryWrapper.lambda().eq(YwDevice::getCode, pageWrap.getModel().getCode());
-        }
-        if (pageWrap.getModel().getAddr() != null) {
-            queryWrapper.lambda().eq(YwDevice::getAddr, pageWrap.getModel().getAddr());
-        }
-        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
-            }
-        }
-        return PageData.from(ywDeviceMapper.selectPage(page, queryWrapper));
+        YwDevice model = pageWrap.getModel();
+        queryWrapper.selectAll(YwDevice.class)
+                .selectAs(Category::getName,YwDevice::getCategoryName)
+                .selectAs(SystemUser::getRealname,YwDevice::getRealName)
+                .leftJoin(Category.class,Category::getId,YwDevice::getCateId)
+                .leftJoin(SystemUser.class,SystemUser::getId,YwDevice::getUserId)
+                .and(Objects.nonNull(model)&&StringUtils.isNotBlank(model.getName()),i->i.like(YwDevice::getName,model.getName()).or().like(YwDevice::getCode,model.getName()))
+                .eq(Objects.nonNull(model.getStatus()),YwDevice::getStatus,model.getStatus())
+                .eq(YwDevice::getIsdeleted,Constants.ZERO)
+                .orderByDesc(YwDevice::getCreateDate)
+        ;
+        IPage iPage = ywDeviceMapper.selectJoinPage(page,YwDevice.class,queryWrapper);
+        return PageData.from(iPage);
     }
 
     @Override
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 cc81d81..80565ec 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
@@ -1,21 +1,30 @@
 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.YwPatrolLineMapper;
-import com.doumee.dao.business.model.YwPatrolLine;
+import com.doumee.dao.business.model.*;
 import com.doumee.service.business.YwPatrolLineService;
 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.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 杩愮淮宸℃璺嚎淇℃伅琛⊿ervice瀹炵幇
@@ -28,9 +37,40 @@
     @Autowired
     private YwPatrolLineMapper ywPatrolLineMapper;
 
+    @Autowired
+    private YwLinePointMapper ywLinePointMapper;
+
     @Override
+    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
     public Integer create(YwPatrolLine ywPatrolLine) {
+        if(Objects.isNull(ywPatrolLine)
+        || StringUtils.isBlank(ywPatrolLine.getName())
+        || com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(ywPatrolLine.getLinePointList())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+
+        LoginUserInfo loginUserInfo = ywPatrolLine.getLoginUserInfo();
+        ywPatrolLine.setCreateDate(new Date());
+        ywPatrolLine.setCreator(loginUserInfo.getId());
+        ywPatrolLine.setIsdeleted(Constants.ZERO);
+        ywPatrolLine.setStatus(Constants.ZERO);
         ywPatrolLineMapper.insert(ywPatrolLine);
+        //寰幆澶勭悊 瀛愰泦鏁版嵁
+
+        List<YwLinePoint> ywLinePointList = ywPatrolLine.getLinePointList();
+        for (YwLinePoint ywLinePoint:ywLinePointList) {
+            if(Objects.isNull(ywLinePoint)
+            || Objects.isNull(ywLinePoint.getPointId())
+            || Objects.isNull(ywLinePoint.getNeedScancode())
+            ){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"宸℃鐐归厤缃敊璇�");
+            }
+            ywLinePoint.setCreateDate(new Date());
+            ywLinePoint.setCreator(loginUserInfo.getId());
+            ywLinePoint.setIsdeleted(Constants.ZERO);
+            ywLinePoint.setLineId(ywLinePoint.getId());
+        }
+        ywLinePointMapper.insert(ywLinePointList);
         return ywPatrolLine.getId();
     }
 
@@ -55,7 +95,34 @@
 
     @Override
     public void updateById(YwPatrolLine ywPatrolLine) {
+        if(Objects.isNull(ywPatrolLine)
+                || StringUtils.isBlank(ywPatrolLine.getName())
+                || com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(ywPatrolLine.getLinePointList())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+
+        LoginUserInfo loginUserInfo = ywPatrolLine.getLoginUserInfo();
+        ywPatrolLine.setEditDate(new Date());
+        ywPatrolLine.setEditor(loginUserInfo.getId());
         ywPatrolLineMapper.updateById(ywPatrolLine);
+        //鍒犻櫎瀛愭暟鎹�
+        ywLinePointMapper.delete(new QueryWrapper<YwLinePoint>().lambda()
+                .eq(YwLinePoint::getLineId,ywPatrolLine.getId()));
+        //寰幆澶勭悊 瀛愰泦鏁版嵁
+        List<YwLinePoint> ywLinePointList = ywPatrolLine.getLinePointList();
+        for (YwLinePoint ywLinePoint:ywLinePointList) {
+            if(Objects.isNull(ywLinePoint)
+                    || Objects.isNull(ywLinePoint.getPointId())
+                    || Objects.isNull(ywLinePoint.getNeedScancode())
+            ){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"宸℃鐐归厤缃敊璇�");
+            }
+            ywLinePoint.setLineId(ywLinePoint.getId());
+            ywLinePoint.setCreateDate(new Date());
+            ywLinePoint.setCreator(loginUserInfo.getId());
+            ywLinePoint.setIsdeleted(Constants.ZERO);
+        }
+        ywLinePointMapper.insert(ywLinePointList);
     }
 
     @Override
@@ -73,6 +140,25 @@
         return ywPatrolLineMapper.selectById(id);
     }
 
+
+    @Override
+    public YwPatrolLine getDetail(Integer id) {
+        YwPatrolLine ywPatrolLine =  ywPatrolLineMapper.selectById(id);
+
+        List<YwLinePoint> ywLinePointList = ywLinePointMapper.selectJoinList(YwLinePoint.class,new MPJLambdaWrapper<YwLinePoint>()
+                .selectAll(YwLinePoint.class)
+                .selectAs(YwPatrolPoint::getName,YwLinePoint::getPointName)
+                .leftJoin(YwPatrolLine.class,YwPatrolLine::getId,YwLinePoint::getPointId)
+                .eq(YwLinePoint::getLineId,id)
+                .orderByAsc(YwLinePoint::getSortnum)
+        );
+
+        ywPatrolLine.setLinePointList(ywLinePointList);
+
+        return ywPatrolLine;
+    }
+
+
     @Override
     public YwPatrolLine findOne(YwPatrolLine ywPatrolLine) {
         QueryWrapper<YwPatrolLine> wrapper = new QueryWrapper<>(ywPatrolLine);
@@ -88,51 +174,17 @@
     @Override
     public PageData<YwPatrolLine> findPage(PageWrap<YwPatrolLine> pageWrap) {
         IPage<YwPatrolLine> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
-        QueryWrapper<YwPatrolLine> queryWrapper = new QueryWrapper<>();
+        MPJLambdaWrapper<YwPatrolLine> queryWrapper = new MPJLambdaWrapper<YwPatrolLine>();
         Utils.MP.blankToNull(pageWrap.getModel());
-        if (pageWrap.getModel().getId() != null) {
-            queryWrapper.lambda().eq(YwPatrolLine::getId, pageWrap.getModel().getId());
-        }
-        if (pageWrap.getModel().getCreator() != null) {
-            queryWrapper.lambda().eq(YwPatrolLine::getCreator, pageWrap.getModel().getCreator());
-        }
-        if (pageWrap.getModel().getCreateDate() != null) {
-            queryWrapper.lambda().ge(YwPatrolLine::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
-            queryWrapper.lambda().le(YwPatrolLine::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
-        }
-        if (pageWrap.getModel().getEditor() != null) {
-            queryWrapper.lambda().eq(YwPatrolLine::getEditor, pageWrap.getModel().getEditor());
-        }
-        if (pageWrap.getModel().getEditDate() != null) {
-            queryWrapper.lambda().ge(YwPatrolLine::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
-            queryWrapper.lambda().le(YwPatrolLine::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
-        }
-        if (pageWrap.getModel().getIsdeleted() != null) {
-            queryWrapper.lambda().eq(YwPatrolLine::getIsdeleted, pageWrap.getModel().getIsdeleted());
-        }
-        if (pageWrap.getModel().getName() != null) {
-            queryWrapper.lambda().eq(YwPatrolLine::getName, pageWrap.getModel().getName());
-        }
-        if (pageWrap.getModel().getRemark() != null) {
-            queryWrapper.lambda().eq(YwPatrolLine::getRemark, pageWrap.getModel().getRemark());
-        }
-        if (pageWrap.getModel().getStatus() != null) {
-            queryWrapper.lambda().eq(YwPatrolLine::getStatus, pageWrap.getModel().getStatus());
-        }
-        if (pageWrap.getModel().getSortnum() != null) {
-            queryWrapper.lambda().eq(YwPatrolLine::getSortnum, pageWrap.getModel().getSortnum());
-        }
-        if (pageWrap.getModel().getImgurl() != null) {
-            queryWrapper.lambda().eq(YwPatrolLine::getImgurl, pageWrap.getModel().getImgurl());
-        }
-        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
-            }
-        }
-        return PageData.from(ywPatrolLineMapper.selectPage(page, queryWrapper));
+        YwPatrolLine model = pageWrap.getModel();
+        queryWrapper.selectAll(YwPatrolLine.class)
+                .select(" ( select count(1) from  yw_line_point y where y.LINE_ID = yw_patrol_line.id ) as lineAmount ")
+                .like(Objects.nonNull(model)&&StringUtils.isNotBlank(model.getName()),YwPatrolLine::getName,model.getName())
+                .eq(YwPatrolLine::getIsdeleted,Constants.ZERO)
+                .orderByDesc(YwPatrolLine::getCreateDate)
+        ;
+        IPage iPage = ywPatrolLineMapper.selectJoinPage(page,YwPatrolLine.class,queryWrapper);
+        return PageData.from(iPage);
     }
 
     @Override
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 0af2a22..948ccf5 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
@@ -1,21 +1,34 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.biz.system.SystemDictDataBiz;
+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.YwPatrolPointMapper;
+import com.doumee.dao.business.model.Category;
+import com.doumee.dao.business.model.YwDevice;
 import com.doumee.dao.business.model.YwPatrolPoint;
+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.YwPatrolPointService;
 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.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 杩愮淮宸℃鐐逛俊鎭〃Service瀹炵幇
@@ -27,16 +40,50 @@
 
     @Autowired
     private YwPatrolPointMapper ywPatrolPointMapper;
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+    @Autowired
+    private MultifileMapper multifileMapper;
 
     @Override
     public Integer create(YwPatrolPoint ywPatrolPoint) {
+        if(Objects.isNull(ywPatrolPoint)
+                || Objects.isNull(ywPatrolPoint.getCode())
+                || Objects.isNull(ywPatrolPoint.getName())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        if(ywPatrolPointMapper.selectCount(new QueryWrapper<YwPatrolPoint>().lambda().eq(YwPatrolPoint::getIsdeleted,Constants.ZERO)
+                .eq(YwPatrolPoint::getCode,ywPatrolPoint.getCode()))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"宸℃鐐圭紪鐮侀噸澶�!");
+        }
+        LoginUserInfo loginUserInfo = ywPatrolPoint.getLoginUserInfo();
+        ywPatrolPoint.setCreateDate(new Date());
+        ywPatrolPoint.setCreator(loginUserInfo.getId());
+        ywPatrolPoint.setIsdeleted(Constants.ZERO);
+        ywPatrolPoint.setStatus(Constants.ZERO);
         ywPatrolPointMapper.insert(ywPatrolPoint);
+
+
+        if(Objects.nonNull(ywPatrolPoint.getMultifile())){
+            ywPatrolPoint.getMultifile().setCreator(loginUserInfo.getId());
+            ywPatrolPoint.getMultifile().setCreateDate(new Date());
+            ywPatrolPoint.getMultifile().setIsdeleted(Constants.ZERO);
+            ywPatrolPoint.getMultifile().setObjType(Constants.MultiFile.FN_PATROL_POINT_FILE.getKey());
+            ywPatrolPoint.getMultifile().setObjId(ywPatrolPoint.getId());
+            multifileMapper.insert(ywPatrolPoint.getMultifile());
+        }
+
         return ywPatrolPoint.getId();
     }
 
     @Override
     public void deleteById(Integer id, LoginUserInfo user) {
-        ywPatrolPointMapper.deleteById(id);
+        ywPatrolPointMapper.update(new UpdateWrapper<YwPatrolPoint>().lambda().set(YwPatrolPoint::getIsdeleted,Constants.ONE)
+                .set(YwPatrolPoint::getEditDate," now() ")
+                .set(YwPatrolPoint::getEditor,user.getId())
+                .eq(YwPatrolPoint::getId,user.getId())
+        );
     }
 
     @Override
@@ -55,7 +102,36 @@
 
     @Override
     public void updateById(YwPatrolPoint ywPatrolPoint) {
+        if(Objects.isNull(ywPatrolPoint)
+                || Objects.isNull(ywPatrolPoint.getId())
+                || Objects.isNull(ywPatrolPoint.getCode())
+                || Objects.isNull(ywPatrolPoint.getName())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        if(ywPatrolPointMapper.selectCount(new QueryWrapper<YwPatrolPoint>().lambda().eq(YwPatrolPoint::getIsdeleted,Constants.ZERO)
+                .eq(YwPatrolPoint::getCode,ywPatrolPoint.getCode()).ne(YwPatrolPoint::getId,ywPatrolPoint.getId()))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"宸℃鐐圭紪鐮侀噸澶�!");
+        }
+        LoginUserInfo loginUserInfo = ywPatrolPoint.getLoginUserInfo();
+        ywPatrolPoint.setEditDate(new Date());
+        ywPatrolPoint.setEditor(loginUserInfo.getId());
         ywPatrolPointMapper.updateById(ywPatrolPoint);
+
+        multifileMapper.delete(new QueryWrapper<Multifile>().lambda()
+                .eq(Multifile::getObjId,ywPatrolPoint.getId())
+                .eq(Multifile::getObjType,Constants.MultiFile.FN_PATROL_POINT_FILE.getKey())
+        );
+
+        if(Objects.nonNull(ywPatrolPoint.getMultifile())){
+            ywPatrolPoint.getMultifile().setCreator(loginUserInfo.getId());
+            ywPatrolPoint.getMultifile().setCreateDate(new Date());
+            ywPatrolPoint.getMultifile().setIsdeleted(Constants.ZERO);
+            ywPatrolPoint.getMultifile().setObjType(Constants.MultiFile.FN_PATROL_POINT_FILE.getKey());
+            ywPatrolPoint.getMultifile().setObjId(ywPatrolPoint.getId());
+            multifileMapper.insert(ywPatrolPoint.getMultifile());
+        }
+
     }
 
     @Override
@@ -74,6 +150,22 @@
     }
 
     @Override
+    public YwPatrolPoint getDetail(Integer id) {
+        YwPatrolPoint ywPatrolPoint = ywPatrolPointMapper.selectById(id);
+        Multifile multifile = multifileMapper.selectOne(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,id)
+                .eq(Multifile::getObjType,Constants.MultiFile.FN_PATROL_POINT_FILE).last(" limit 1"));
+        if(Objects.nonNull(multifile)){
+            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+                    +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_PATROL).getCode();
+            multifile.setFileurlFull(path + multifile.getFileurl());
+            ywPatrolPoint.setMultifile(multifile);
+        }
+        return ywPatrolPoint;
+    }
+
+
+
+    @Override
     public YwPatrolPoint findOne(YwPatrolPoint ywPatrolPoint) {
         QueryWrapper<YwPatrolPoint> wrapper = new QueryWrapper<>(ywPatrolPoint);
         return ywPatrolPointMapper.selectOne(wrapper);
@@ -81,64 +173,33 @@
 
     @Override
     public List<YwPatrolPoint> findList(YwPatrolPoint ywPatrolPoint) {
-        QueryWrapper<YwPatrolPoint> wrapper = new QueryWrapper<>(ywPatrolPoint);
+        QueryWrapper<YwPatrolPoint> wrapper = new QueryWrapper<>();
+        wrapper.lambda().eq(YwPatrolPoint::getIsdeleted,Constants.ZERO);
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywPatrolPoint.getIdLists())){
+            wrapper.lambda().notIn(YwPatrolPoint::getId,ywPatrolPoint.getIdLists());
+        }
         return ywPatrolPointMapper.selectList(wrapper);
     }
   
     @Override
     public PageData<YwPatrolPoint> findPage(PageWrap<YwPatrolPoint> pageWrap) {
         IPage<YwPatrolPoint> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
-        QueryWrapper<YwPatrolPoint> queryWrapper = new QueryWrapper<>();
+        MPJLambdaWrapper<YwPatrolPoint> queryWrapper = new MPJLambdaWrapper<YwPatrolPoint>();
         Utils.MP.blankToNull(pageWrap.getModel());
-        if (pageWrap.getModel().getId() != null) {
-            queryWrapper.lambda().eq(YwPatrolPoint::getId, pageWrap.getModel().getId());
-        }
-        if (pageWrap.getModel().getCreator() != null) {
-            queryWrapper.lambda().eq(YwPatrolPoint::getCreator, pageWrap.getModel().getCreator());
-        }
-        if (pageWrap.getModel().getCreateDate() != null) {
-            queryWrapper.lambda().ge(YwPatrolPoint::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
-            queryWrapper.lambda().le(YwPatrolPoint::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
-        }
-        if (pageWrap.getModel().getEditor() != null) {
-            queryWrapper.lambda().eq(YwPatrolPoint::getEditor, pageWrap.getModel().getEditor());
-        }
-        if (pageWrap.getModel().getEditDate() != null) {
-            queryWrapper.lambda().ge(YwPatrolPoint::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
-            queryWrapper.lambda().le(YwPatrolPoint::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
-        }
-        if (pageWrap.getModel().getIsdeleted() != null) {
-            queryWrapper.lambda().eq(YwPatrolPoint::getIsdeleted, pageWrap.getModel().getIsdeleted());
-        }
-        if (pageWrap.getModel().getName() != null) {
-            queryWrapper.lambda().eq(YwPatrolPoint::getName, pageWrap.getModel().getName());
-        }
-        if (pageWrap.getModel().getRemark() != null) {
-            queryWrapper.lambda().eq(YwPatrolPoint::getRemark, pageWrap.getModel().getRemark());
-        }
-        if (pageWrap.getModel().getStatus() != null) {
-            queryWrapper.lambda().eq(YwPatrolPoint::getStatus, pageWrap.getModel().getStatus());
-        }
-        if (pageWrap.getModel().getSortnum() != null) {
-            queryWrapper.lambda().eq(YwPatrolPoint::getSortnum, pageWrap.getModel().getSortnum());
-        }
-        if (pageWrap.getModel().getImgurl() != null) {
-            queryWrapper.lambda().eq(YwPatrolPoint::getImgurl, pageWrap.getModel().getImgurl());
-        }
-        if (pageWrap.getModel().getAreaId() != null) {
-            queryWrapper.lambda().eq(YwPatrolPoint::getAreaId, pageWrap.getModel().getAreaId());
-        }
-        if (pageWrap.getModel().getAddr() != null) {
-            queryWrapper.lambda().eq(YwPatrolPoint::getAddr, pageWrap.getModel().getAddr());
-        }
-        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
-            }
-        }
-        return PageData.from(ywPatrolPointMapper.selectPage(page, queryWrapper));
+        YwPatrolPoint model = pageWrap.getModel();
+        queryWrapper.selectAll(YwPatrolPoint.class)
+                .selectAs(Category::getName,YwPatrolPoint::getAreaName)
+                .selectAs(YwDevice::getName,YwPatrolPoint::getDeviceName)
+                .leftJoin(Category.class,Category::getId,YwPatrolPoint::getAreaId)
+                .leftJoin(YwDevice.class,YwDevice::getId,YwPatrolPoint::getDeviceId)
+                .and(Objects.nonNull(model)&&StringUtils.isNotBlank(model.getName()),
+                        i->i.like(YwPatrolPoint::getName,model.getName()).or().like(YwPatrolPoint::getCode,model.getName()))
+                .eq(Objects.nonNull(model.getAreaId()),YwPatrolPoint::getAreaId,model.getAreaId())
+                .eq(YwPatrolPoint::getIsdeleted,Constants.ZERO)
+                .orderByDesc(YwPatrolPoint::getCreateDate)
+        ;
+        IPage iPage = ywPatrolPointMapper.selectJoinPage(page,YwPatrolPoint.class,queryWrapper);
+        return PageData.from(iPage);
     }
 
     @Override

--
Gitblit v1.9.3