From ce7964aba19721cebdd9eb7d475ac651a6dca6bf Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期二, 09 七月 2024 09:24:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml                       |    2 
 ycl-server/src/main/java/com/ycl/platform/service/ITMonitorService.java             |    2 
 ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java       |    7 ++
 ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java                |    2 
 ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderBatchAuditingForm.java |   36 ++++++++++++
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java    |   51 ++++++++++++++++
 ycl-server/src/main/java/com/ycl/platform/controller/TMonitorController.java        |    4 +
 ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java             |    7 ++
 ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml                        |   15 +++-
 ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java     |    7 +
 10 files changed, 120 insertions(+), 13 deletions(-)

diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderBatchAuditingForm.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderBatchAuditingForm.java
new file mode 100644
index 0000000..f0059e8
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/WorkOrderBatchAuditingForm.java
@@ -0,0 +1,36 @@
+package com.ycl.platform.domain.form;
+
+import enumeration.general.WorkOrderStatusEnum;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 宸ュ崟瀹℃牳琛ㄥ崟
+ *
+ * @author锛歺p
+ * @date锛�2024/3/6 8:59
+ */
+@Data
+public class WorkOrderBatchAuditingForm {
+
+    /**
+     * 瀹℃牳缁撴灉
+     */
+    @NotBlank(message = "瀹℃牳缁撴灉涓嶈兘涓虹┖")
+    private WorkOrderStatusEnum auditingResult;
+
+    /**
+     * 瀹℃牳璇存槑
+     */
+    private String auditingRemark;
+
+    /**
+     * 鏁呴殰绫诲瀷
+     */
+    @NotBlank(message = "鏁呴殰绫诲瀷涓嶈兘涓虹┖")
+    private String errorType;
+
+}
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/TMonitorController.java b/ycl-server/src/main/java/com/ycl/platform/controller/TMonitorController.java
index 436efa6..f1b7859 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/TMonitorController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/TMonitorController.java
@@ -104,7 +104,9 @@
     @GetMapping("/getVideoCount/{cameraFunType}")
     public AjaxResult getVideoCount(@PathVariable String cameraFunType)
     {
-        return success(tMonitorService.getVideoCount(cameraFunType));
+        TMonitor tMonitor = new TMonitor();
+        tMonitor.setCameraFunType(cameraFunType);
+        return success(tMonitorService.getVideoCount(tMonitor));
     }
 
     /**
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java b/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
index 29b973e..e7037c6 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
@@ -56,6 +56,13 @@
         return workOrderService.auditing(form);
     }
 
+    @PutMapping("/batchAuditing")
+    @ApiOperation(value = "瀹℃牳", notes = "宸ュ崟鎵归噺瀹℃牳")
+    @PreAuthorize("@ss.hasPermi('work:order:audit')")
+    public Result batchAuditing(@RequestBody @Validated(Update.class) WorkOrderBatchAuditingForm form) {
+        return workOrderService.batchAuditing(form);
+    }
+
     @PutMapping("/yw-condition")
     @ApiOperation(value = "杩愮淮鎯呭喌", notes = "杩愮淮鎯呭喌")
     public Result ywCondition(@RequestBody @Validated(Update.class) WorkOrderYWConditionForm form) {
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
index dc55616..0132e86 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
@@ -68,7 +68,7 @@
      * @param cameraFunType 绫诲瀷
      * @return 缁熻鏁�
      */
-    Map<String, String> getVideoCount(String cameraFunType);
+    Map<String, String> getVideoCount(TMonitor tMonitor);
 
     Map<String, String> recoveryException();
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ITMonitorService.java b/ycl-server/src/main/java/com/ycl/platform/service/ITMonitorService.java
index 2c26fd4..da3f76a 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/ITMonitorService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/ITMonitorService.java
@@ -68,7 +68,7 @@
      * @param cameraFunType 鎽勫儚澶村姛鑳界被鍨嬶紝鐢ㄤ簬绛涢�夎棰戙��
      * @return 杩斿洖涓�涓寘鍚棰戞暟閲忕殑Map瀵硅薄锛屽叾涓璳ey涓虹粺璁℃寚鏍囷紝value涓哄搴斿姛鑳界被鍨嬩笅鐨勭粺璁℃暟閲忋��
      */
-    Map<String, String> getVideoCount(String cameraFunType);
+    Map<String, String> getVideoCount(TMonitor tMonitor);
 
     Map<String, String> recoveryException();
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
index 3a271d1..eead1af 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
@@ -73,6 +73,13 @@
     Result auditing(WorkOrderAuditingForm form);
 
     /**
+     * 鎵归噺瀹℃牳
+     * @param form 宸ュ崟
+     * @return 缁撴灉
+     */
+    Result batchAuditing(WorkOrderBatchAuditingForm form);
+
+    /**
      * 杩愮淮鎯呭喌
      * @param form
      * @return
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
index 9d2d0a0..57e65f8 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
@@ -1,5 +1,6 @@
 package com.ycl.platform.service.impl;
 
+import annotation.DataScope;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.platform.domain.entity.TMonitor;
 import com.ycl.platform.domain.vo.TMonitorVO;
@@ -42,6 +43,7 @@
      * @return 璁惧璧勪骇
      */
     @Override
+    @DataScope(deptAlias = "d",userAlias = "u")
     public List<TMonitorVO> selectTMonitorList(TMonitor tMonitor)
     {
         return tMonitorMapper.selectTMonitorList(tMonitor);
@@ -96,8 +98,9 @@
     }
 
     @Override
-    public Map<String, String> getVideoCount(String cameraFunType) {
-        return tMonitorMapper.getVideoCount(cameraFunType);
+    @DataScope(deptAlias = "d",userAlias = "u")
+    public Map<String, String> getVideoCount(TMonitor tMonitor) {
+        return tMonitorMapper.getVideoCount(tMonitor);
     }
 
     @Override
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
index d50ec03..67a558c 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -1,5 +1,6 @@
 package com.ycl.platform.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
@@ -13,6 +14,7 @@
 import com.ycl.platform.domain.vo.WorkOrderVO;
 import com.ycl.platform.mapper.*;
 import com.ycl.platform.service.NotifyService;
+import com.ycl.platform.service.WorkOrderAuditingRecordService;
 import com.ycl.platform.service.WorkOrderService;
 import com.ycl.system.Result;
 import com.ycl.system.model.LoginUser;
@@ -28,10 +30,12 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
+import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
 import java.time.LocalDateTime;
 import java.time.ZoneId;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
@@ -51,6 +55,7 @@
     private final YwUnitMapper ywUnitMapper;
     private final YwPeopleMapper ywPeopleMapper;
     private final WorkOrderAuditingRecordMapper workOrderAuditingRecordMapper;
+    private final WorkOrderAuditingRecordService workOrderAuditingRecordService;
     private final WorkOrderYwConditionRecordMapper workOrderYwConditionRecordMapper;
     private final NotifyService notifyService;
     private final WorkOrderDistributeRecordMapper workOrderDistributeRecordMapper;
@@ -123,6 +128,49 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
+    public Result batchAuditing(WorkOrderBatchAuditingForm form) {
+        // 鏍规嵁鏁呴殰绫诲瀷鑾峰彇鍒楄〃
+        List<WorkOrder> list = new LambdaQueryChainWrapper<>(baseMapper)
+                .in(WorkOrder::getStatus, WorkOrderStatusEnum.YW_HANDLE.getValue())
+                .eq(WorkOrder::getErrorType, form.getErrorType())
+                .select(WorkOrder::getId, WorkOrder::getUnitId, WorkOrder::getWorkOrderNo)
+                .list();
+        if (list.isEmpty()) {
+            return Result.error("娌℃湁宸ュ崟鍙互瀹℃牳");
+        }
+        List<Integer> ids = list.stream().map(WorkOrder::getId).collect(Collectors.toList());
+        // 宸ュ崟鐘舵��
+        LambdaUpdateWrapper<WorkOrder> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+        lambdaUpdateWrapper.in(WorkOrder::getId, ids);
+        lambdaUpdateWrapper.set(WorkOrder::getStatus, form.getAuditingResult());
+        baseMapper.update(lambdaUpdateWrapper);
+        // 娣诲姞澶氭潯瀹℃牳璁板綍
+        List<WorkOrderAuditingRecord> workOrderAuditingRecords = new ArrayList<>();
+        for (Integer id : ids) {
+            WorkOrderAuditingRecord workOrderAuditingRecord = new WorkOrderAuditingRecord();
+            workOrderAuditingRecord.setWorkOrderId(id);
+            workOrderAuditingRecord.setAuditingUser(SecurityUtils.getLoginUser().getUserId().intValue());
+            workOrderAuditingRecord.setResult(form.getAuditingResult().getDesc());
+            workOrderAuditingRecord.setRemark(form.getAuditingRemark());
+            workOrderAuditingRecords.add(workOrderAuditingRecord);
+        }
+        workOrderAuditingRecordService.saveBatch(workOrderAuditingRecords);
+        // 娣诲姞鏂伴�氱煡
+        List<Notify> notifies = new ArrayList<>();
+        for (WorkOrder workOrder : list) {
+            Notify notify = Notify.genEntityByUnit(NotifyTypeEnum.WORK_ORDER,
+                    form.getAuditingResult().getDesc(),
+                    workOrder.getUnitId(),
+                    UrgentLevelEnum.WARNING,
+                    workOrder.getWorkOrderNo());
+            notifies.add(notify);
+        }
+        notifyService.saveBatch(notifies);
+        return Result.ok("鎿嶄綔鎴愬姛");
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
     public Result ywCondition(WorkOrderYWConditionForm form) {
         WorkOrder workOrder = baseMapper.selectById(form.getId());
         if (Objects.isNull(workOrder)) {
@@ -148,8 +196,7 @@
                 new LambdaQueryChainWrapper<>(workOrderYwConditionRecordMapper)
                         .eq(WorkOrderYwConditionRecord::getWorkOrderId, id)
                         .orderByAsc(WorkOrderYwConditionRecord::getCreateTime)
-                        .last("limit 1")
-                        .one());
+                        .list());
     }
 
     @Override
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
index e75c2f6..e23dd08 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -49,8 +49,8 @@
 
     <select id="selectTMonitorList" resultType="com.ycl.platform.domain.vo.TMonitorVO">
         select id, serial_number, name, site_type, mac_addr, ip, camera_fun_type, longitude, latitude, camera_capture_area, on_state, civil_code, integrated_device, camera_brand, address, net_working, public_security, installed_time, management_unit, mu_contact_info, storage_days
-        , monitor_azimuth, scene_photo_addr, model, site_vulgo, camera_type, camera_light_type, encoded_format, camera_dept, hybm, lxbm, reason, default_order,recovery,recovery_time,sd.dept_name from t_monitor m
-        left join sys_dept sd on m.dept_id = sd.dept_id
+        , monitor_azimuth, scene_photo_addr, model, site_vulgo, camera_type, camera_light_type, encoded_format, camera_dept, hybm, lxbm, reason, default_order,recovery,recovery_time,d.dept_name from t_monitor m
+        left join sys_dept d on m.dept_id = d.dept_id
         <where>
             <if test="serialNumber != null  and serialNumber != ''"> and serial_number = #{serialNumber}</if>
             <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
@@ -86,8 +86,9 @@
             <if test="defaultOrder != null "> and default_order = #{defaultOrder}</if>
             <if test="recovery != null "> and recovery = #{recovery}</if>
             <if test="recoveryTime != null "> and recovery_time = #{recoveryTime}</if>
-            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="deptId != null "> and m.dept_id = #{deptId}</if>
         </where>
+        ${params.dataScope}
     </select>
 
     <select id="selectTMonitorById" parameterType="Long" resultMap="TMonitorResult">
@@ -236,8 +237,12 @@
                IFNULL(ROUND(SUM(IF(on_state = 1, 1, 0)) / count(*) * 100, 2), 0) as viewsPercentage,
                -1                                                                as totalFace,
                -1                                                                as totalCar
-        FROM t_monitor
-        WHERE camera_fun_type like concat('%', #{cameraFunType}, '%')
+        FROM t_monitor m
+         left join sys_dept d on m.dept_id = d.dept_id
+        <where>
+            camera_fun_type like concat('%', #{cameraFunType}, '%')
+        </where>
+        ${params.dataScope}
     </select>
 
     <select id="recoveryException" resultType="java.util.Map">
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
index 364b380..5b6c6f0 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -32,7 +32,7 @@
             <if test="query.status != null">
                 AND wo.status = #{query.status}
             </if>
-            <if test="query.errorType != null and query.errType != ''">
+            <if test="query.errorType != null and query.errorType != ''">
                 AND wo.error_type = #{query.errorType}
             </if>
             <if test="query.start != null">

--
Gitblit v1.8.0