From 5a62cf2c51da8c1caca1d8bcfdcb97eeda27cc68 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 02 九月 2024 18:16:25 +0800
Subject: [PATCH] 接口权限字符调整、下发页面单位统计工单数优化

---
 ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml                    |   46 +++++++++--------------
 ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java |   14 ++++++-
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java         |    3 +
 ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java |    4 +-
 ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml                    |    3 +
 ycl-server/src/main/java/com/ycl/platform/mapper/YwUnitMapper.java            |    2 
 ycl-server/src/main/java/com/ycl/utils/SecurityUtils.java                     |    5 ++
 ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java |    2 +
 8 files changed, 46 insertions(+), 33 deletions(-)

diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java
index 6f954c5..2b76634 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java
@@ -35,6 +35,9 @@
 
     private List<Integer> peopleIdList;
 
+    @ApiModelProperty("杩愮淮鍗曚綅")
+    private Integer unitId;
+
     @ApiModelProperty("鐘舵��")
     private Integer status;
 
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 33c678f..39216f0 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
@@ -111,7 +111,7 @@
 
     @PostMapping("/distribute/page")
     @ApiOperation(value = "涓嬪彂鍒嗛〉", notes = "涓嬪彂鍒嗛〉")
-    @PreAuthorize("@ss.hasPermi('work:order:distribute')")
+    @PreAuthorize("@ss.hasPermi('work:order:distribute:page')")
     public Result distributePage(@RequestBody DistributeWorkOrderQuery query) {
         return workOrderService.distributePage(query);
     }
@@ -132,7 +132,7 @@
 
     @GetMapping("/{id}")
     @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
-    @PreAuthorize("@ss.hasPermi('work:order:query')")
+    @PreAuthorize("@ss.hasPermi('work:order:detail')")
     public Result detail(@PathVariable("id") String id) {
         return workOrderService.detail(id);
     }
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/YwUnitMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/YwUnitMapper.java
index ef28967..28d0f16 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/YwUnitMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/YwUnitMapper.java
@@ -25,7 +25,7 @@
      * 杩愮淮鍗曚綅鍒楄〃缁熻
      * @return 鏁版嵁
      */
-    List<YwUnitVO> workList(@Param("query") DistributeWorkOrderQuery query);
+    Integer workList(@Param("query") DistributeWorkOrderQuery query);
 
     /**
      * 閫氳繃鐢ㄦ埛ID鏌ユ壘杩愮淮鍗曚綅
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java
index 99893fb..62fb564 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java
@@ -252,6 +252,7 @@
     @Override
     public Result page(ReportQuery query) {
         IPage<ReportVO> page = PageUtil.getPage(query, ReportVO.class);
+        query.setUnitId(SecurityUtils.getUnitId());
         baseMapper.page(page, query);
         List<SysDictData> errorTypeList = dictTypeService.selectDictDataByType("report_error_type");
         Map<String, String> dictMap = errorTypeList.stream().collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel));
@@ -310,6 +311,7 @@
     public List<ReportVO> export(ReportQuery query) {
         IPage<ReportVO> page = PageUtil.getPage(query, ReportVO.class);
         page.setSize(-1);
+        query.setUnitId(SecurityUtils.getUnitId());
         baseMapper.page(page, query);
         List<SysDictData> errorTypeList = dictTypeService.selectDictDataByType("report_error_type");
         Map<String, String> dictMap = errorTypeList.stream().collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel));
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java
index 1b5c7fa..61ebd1f 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java
@@ -216,8 +216,18 @@
 
     @Override
     public Result workList(DistributeWorkOrderQuery query) {
-        List<YwUnitVO> entities = baseMapper.workList(query);
-        return Result.ok().data(entities);
+        List<YwUnit> ywUnits = baseMapper.selectList(null);
+        List<YwUnitVO> lists = ywUnits.stream().map(item -> {
+            YwUnitVO vo = new YwUnitVO();
+            BeanUtils.copyProperties(item, vo);
+            return vo;
+        }).collect(Collectors.toList());
+        for (YwUnitVO ywUnit : lists) {
+            query.setUnitId(ywUnit.getId());
+            Integer workOrderNum = baseMapper.workList(query);
+            ywUnit.setWorkOrderCount(workOrderNum);
+        }
+        return Result.ok().data(lists);
     }
 
     @Override
diff --git a/ycl-server/src/main/java/com/ycl/utils/SecurityUtils.java b/ycl-server/src/main/java/com/ycl/utils/SecurityUtils.java
index d3130fd..c1af0d8 100644
--- a/ycl-server/src/main/java/com/ycl/utils/SecurityUtils.java
+++ b/ycl-server/src/main/java/com/ycl/utils/SecurityUtils.java
@@ -44,6 +44,11 @@
      * */
     public static Integer getUnitId() {
         try {
+            if (isAdmin(getUserId())) {
+                return null;
+            } else if (hasRole("yw_admin")) {
+                return null;
+            }
             return getLoginUser().getUser().getUnitId();
         }
         catch (Exception e)
diff --git a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
index 606dabe..1b7816b 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
@@ -41,6 +41,9 @@
         <if test="query.reportType != null and query.reportType != ''">
             AND r.report_type = #{query.reportType}
         </if>
+        <if test="query.unitId != null">
+            AND r.unit_id = #{query.unitId}
+        </if>
         <if test="query.status != null">
             AND r.status = #{query.status}
         </if>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml
index 8c06409..5f3f169 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml
@@ -33,36 +33,26 @@
         where id = #{id}
     </select>
 
-    <select id="workList" resultType="com.ycl.platform.domain.vo.YwUnitVO">
+    <select id="workList" resultType="integer">
         SELECT
-               u.id AS id, u.unit_name, count(DISTINCT wot.id) AS work_order_count
+               count(*)
         FROM
-            t_yw_unit u
-                LEFT JOIN
-             (
-                SELECT
-                    wo.id,
-                    wo.unit_id
-                FROM
-                    t_work_order wo
-                    INNER JOIN t_monitor tm ON wo.serial_number = tm.serial_number
-                    INNER JOIN t_yw_point yp ON yp.serial_number = wo.serial_number AND yp.deleted = 0
-                    INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no
-                    INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type'
-                    <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">AND da.dict_value in <foreach
-                            collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach>
-                    </if>
-                WHERE
-                    wo.deleted = 0
-                    <if test="query.status != null and query.status != ''">
-                        AND wo.status = #{query.status}
-                    </if>
-                    <if test="query.keyword != null and query.keyword != ''">
-                        AND (tm.name like concat('%', #{query.keyword}, '%') or tm.serial_number like concat('%', #{query.keyword}, '%'))
-                    </if>
-                ) as wot ON wot.unit_id = u.id
-        WHERE u.deleted = 0
-                group by u.id
+            t_work_order wo
+            INNER JOIN t_monitor tm ON wo.serial_number = tm.serial_number AND #{query.unitId}
+            INNER JOIN t_yw_point yp ON yp.serial_number = wo.serial_number AND yp.deleted = 0
+            INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no
+            INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type'
+            <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">AND da.dict_value in <foreach
+                    collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach>
+            </if>
+        WHERE
+            wo.deleted = 0
+            <if test="query.status != null and query.status != ''">
+                AND wo.status = #{query.status}
+            </if>
+            <if test="query.keyword != null and query.keyword != ''">
+                AND (tm.name like concat('%', #{query.keyword}, '%') or tm.serial_number like concat('%', #{query.keyword}, '%'))
+            </if>
     </select>
 
     <insert id="insertYwUnit" parameterType="YwUnit" useGeneratedKeys="true" keyProperty="id">

--
Gitblit v1.8.0