From 5f7f52e93266dc8795ad1543b333a64444c22727 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Wed, 28 Sep 2022 11:05:47 +0800
Subject: [PATCH] 修正加工表数据统计结果,取消user,detail接口的访问权限

---
 src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml            |    4 
 src/main/java/org/springblade/modules/recovery/mapper/RecoveryMapper.xml    |   62 ++++++++++++++------
 src/main/java/org/springblade/modules/process/mapper/ProcessMapper.xml      |   94 +++++++++++++++++++-----------
 src/main/java/org/springblade/modules/system/controller/UserController.java |    2 
 4 files changed, 104 insertions(+), 58 deletions(-)

diff --git a/src/main/java/org/springblade/modules/process/mapper/ProcessMapper.xml b/src/main/java/org/springblade/modules/process/mapper/ProcessMapper.xml
index 287e5f0..abbab9e 100644
--- a/src/main/java/org/springblade/modules/process/mapper/ProcessMapper.xml
+++ b/src/main/java/org/springblade/modules/process/mapper/ProcessMapper.xml
@@ -23,7 +23,7 @@
 
 
     <select id="selectProcessPage" resultMap="processResultMap">
-        SELECT 	DISTINCT  p.id,
+        SELECT DISTINCT p.id,
         p.strain_id,
         p.land_id,
         p.sale_time,
@@ -42,7 +42,7 @@
         LEFT JOIN (SELECT mm.id,mm.machining_type FROM sys_machining mm) a ON a.id = p.parent_id
         WHERE p.is_deleted = 0
         <if test="process.farmId!=null and process.farmId!=''">
-            AND (sl.farm_id = #{process.farmId} or inv.fps_id = #{process.farmId})
+            AND (sl.farm_id = #{process.farmId} or (inv.fps_id = #{process.farmId} AND p.land_id IS NULL))
         </if>
         <if test="process.strainId !=null and process.strainId !=''">
             and p.strain_id = #{process.strainId}
@@ -71,17 +71,20 @@
     </update>
 
     <select id="statistics" resultType="java.lang.Double">
-    SELECT SUM(p.process_num) AS sum
-    FROM sys_process p
-    LEFT JOIN sys_land land ON land.id = p.land_id
-    LEFT JOIN sys_process_inv inv ON inv.product_id = p.process_id
-    WHERE 1=1 AND p.is_deleted = 0
-    <if test="year!=null and year!=''">
-        and YEAR ( p.sale_time ) = #{year}
-    </if>
-    <if test="farmId!=null and farmId!=''">
-        and (land.farm_id = #{farmId} or inv.fps_id = #{farmId})
-    </if>
+        SELECT SUM(a.process_num)as sum FROM
+        (
+        SELECT DISTINCT p.process_num
+        FROM sys_process p
+        LEFT JOIN sys_land land ON land.id = p.land_id
+        LEFT JOIN sys_process_inv inv ON inv.product_id = p.process_id
+        WHERE 1=1 AND p.is_deleted = 0
+        <if test="year!=null and year!=''">
+            and YEAR ( p.sale_time ) = #{year}
+        </if>
+        <if test="farmId!=null and farmId!=''">
+            and (land.farm_id = #{farmId} or (inv.fps_id = #{farmId} AND p.land_id IS NULL))
+        </if>
+        ) a
     </select>
     <select id="statisticsMonth" resultType="java.util.Map">
         SELECT
@@ -165,17 +168,24 @@
         x.d &lt;= y.last
         AND ADDDATE( y.FIRST, x.d - 1 ) &lt;= CURDATE( )
         ) AS lefttable
-        LEFT JOIN (
-        SELECT
-        IFNULL( sum( process.process_num ), 0 ) AS m,
-        DATE_FORMAT( process.sale_time, '%Y-%c-%d' ) AS gptime
-        FROM
-        sys_process process
-        left join sys_land sl on sl.id = process.land_id
-        WHERE DATE_FORMAT( process.sale_time, '%Y-%m' ) = #{year}
-        and sl.farm_id = #{farmId}
-        GROUP BY
-        gptime
+        LEFT JOIN
+        (
+            SELECT
+                IFNULL( sum( middle.process_num ), 0 ) AS m,
+		        middle.gptime
+		    FROM
+		    (
+                SELECT DISTINCT
+                    process.process_num,
+                    DATE_FORMAT( process.sale_time, '%Y-%c-%d' ) AS gptime
+                 FROM
+                    sys_process process
+                left join sys_land sl on sl.id = process.land_id
+                LEFT JOIN sys_process_inv inv ON inv.product_id = process.process_id
+                WHERE
+                    DATE_FORMAT( process.sale_time, '%Y-%m' ) = #{year}
+                    and (sl.farm_id = #{farmId} OR ( inv.fps_id =  #{farmId} AND process.land_id IS NULL ))
+		    )middle GROUP BY middle.gptime
         ) AS righttable ON DATE_FORMAT( lefttable.date, '%Y-%c-%d' ) = righttable.gptime
         ORDER BY time
 
@@ -199,11 +209,18 @@
                 ) m
                 left join
                 (
-                    select month(p.sale_time) a,sum(p.process_num) b from sys_process p
-                    left join sys_land sl on sl.id = p.land_id
-                    where  year(p.sale_time) = #{year}
-                    and sl.farm_id = #{farmId}
-                    GROUP BY month(p.sale_time)
+                    SELECT middle.a,SUM(middle.process_num) b FROM
+                         (
+                            select DISTINCT
+                                month(p.sale_time) a,
+                                p.process_num
+                            from sys_process p
+                            left join sys_land sl on sl.id = p.land_id
+                            LEFT JOIN sys_process_inv inv ON inv.product_id = p.process_id
+                            where
+                                year(p.sale_time) = #{year}
+                                and (sl.farm_id = #{farmId} OR ( inv.fps_id =  #{farmId} AND p.land_id IS NULL ))
+                        ) middle GROUP BY middle.a
                 ) n
             on m.id = n.a
             order by id
@@ -227,12 +244,19 @@
         ) as a
         LEFT JOIN
         (
-        SELECT HOUR(process.sale_time) AS order_hour, SUM(process.process_num) AS num from sys_process process
-        left join sys_land sl on sl.id = process.land_id
-        WHERE process.sale_time >= str_to_date(concat(#{year},' 00:00:00'),'%Y-%m-%d %T')
-        AND process.sale_time &lt;= str_to_date(concat(#{year},' 23:59:59'),'%Y-%m-%d %T')
-        and sl.farm_id = #{farmId}
-        GROUP BY order_hour
+        SELECT middle.order_hour,SUM(middle.process_num) num FROM
+            (
+                SELECT DISTINCT
+                    HOUR(process.sale_time) AS order_hour,
+                    process.process_num
+                from sys_process process
+                left join sys_land sl on sl.id = process.land_id
+                LEFT JOIN sys_process_inv inv ON inv.product_id = process.process_id
+                WHERE
+                    process.sale_time >= str_to_date(concat(#{year},' 00:00:00'),'%Y-%m-%d %T')
+                    AND process.sale_time &lt;= str_to_date(concat(#{year},' 23:59:59'),'%Y-%m-%d %T')
+                    and (sl.farm_id = #{farmId} OR ( inv.fps_id =  #{farmId} AND process.land_id IS NULL ))
+            ) middle GROUP BY middle.order_hour
         ) b ON a.order_hour=b.order_hour
         ORDER BY a.order_hour
     </select>
diff --git a/src/main/java/org/springblade/modules/recovery/mapper/RecoveryMapper.xml b/src/main/java/org/springblade/modules/recovery/mapper/RecoveryMapper.xml
index 81bcf81..af07b4e 100644
--- a/src/main/java/org/springblade/modules/recovery/mapper/RecoveryMapper.xml
+++ b/src/main/java/org/springblade/modules/recovery/mapper/RecoveryMapper.xml
@@ -66,7 +66,11 @@
         where sr.id = #{recoveryId}
     </select>
     <select id="recoveryStatistics" resultType="org.springblade.modules.recovery.vo.RecoveryVO">
-        SELECT sr.strain_id,SUM(sr.weight) AS weight,sr.dept_id,strain.strain_name,strain.url
+        SELECT
+            sr.strain_id,
+            SUM(sr.weight) AS weight,
+            strain.strain_name,
+            strain.url
         FROM sys_recovery sr
         LEFT JOIN sys_strain strain ON sr.strain_id = strain.id
         WHERE 1=1
@@ -83,24 +87,35 @@
 
         UNION
 
-        SELECT p.process_id,SUM(p.process_num),inv.fps_id,m.machining_type,m.machining_tp
-        FROM sys_process p
-        LEFT JOIN sys_machining m ON p.process_id = m.id
-        LEFT JOIN sys_process_inv inv ON inv.product_id = p.process_id
-        WHERE 1=1 AND p.is_deleted = 0
-        <if test="recovery.deptId !=null and recovery.deptId !=''">
-            AND inv.fps_id = #{recovery.deptId}
-        </if>
-        <if test="recovery.startTime != null and recovery.startTime !=''">
-            AND DATE_FORMAT(p.sale_time,'%Y-%m-%d') &gt;= #{recovery.startTime}
-        </if>
-        <if test="recovery.endTime != null and recovery.endTime !=''">
-            and DATE_FORMAT(p.sale_time,'%Y-%m-%d') &lt;= #{recovery.endTime}
-        </if>
-        GROUP BY p.process_id
+        SELECT a.process_id,SUM(a.process_num),a.machining_type,a.machining_tp FROM
+        (
+            SELECT DISTINCT
+            p.process_id,
+            p.process_num,
+            m.machining_type,
+            m.machining_tp
+            FROM sys_process p
+            LEFT JOIN sys_machining m ON p.process_id = m.id
+            LEFT JOIN sys_land sl ON sl.id = p.land_id
+            LEFT JOIN sys_process_inv inv ON inv.product_id = p.process_id
+            WHERE 1=1 AND p.is_deleted = 0
+            <if test="recovery.deptId !=null and recovery.deptId !=''">
+                AND( sl.farm_id = #{recovery.deptId} OR (inv.fps_id = #{recovery.deptId} AND p.land_id IS NULL))
+            </if>
+            <if test="recovery.startTime != null and recovery.startTime !=''">
+                AND DATE_FORMAT(p.sale_time,'%Y-%m-%d') &gt;= #{recovery.startTime}
+            </if>
+            <if test="recovery.endTime != null and recovery.endTime !=''">
+                and DATE_FORMAT(p.sale_time,'%Y-%m-%d') &lt;= #{recovery.endTime}
+            </if>
+        ) a GROUP BY a.process_id
     </select>
     <select id="recoveryStatisticsx" resultType="org.springblade.modules.recovery.vo.RecoveryVO">
-        SELECT sr.strain_id,SUM(sr.weight) AS weight,sr.dept_id,strain.strain_name,strain.url
+        SELECT
+        sr.strain_id,
+        SUM(sr.weight) AS weight,
+        strain.strain_name,
+        strain.url
         FROM sys_recovery sr
         LEFT JOIN sys_strain strain ON sr.strain_id = strain.id
         WHERE 1=1
@@ -117,13 +132,20 @@
 
         UNION
 
-        SELECT p.process_id,SUM(p.process_num),inv.fps_id,m.machining_type,m.machining_tp
+        SELECT a.process_id,SUM(a.process_num),a.machining_type,a.machining_tp FROM
+        (
+        SELECT DISTINCT
+        p.process_id,
+        p.process_num,
+        m.machining_type,
+        m.machining_tp
         FROM sys_process p
         LEFT JOIN sys_machining m ON p.process_id = m.id
+        LEFT JOIN sys_land sl ON sl.id = p.land_id
         LEFT JOIN sys_process_inv inv ON inv.product_id = p.process_id
         WHERE 1=1 AND p.is_deleted = 0
         <if test="recovery.deptId !=null and recovery.deptId !=''">
-            AND inv.fps_id = #{recovery.deptId}
+            AND( sl.farm_id = #{recovery.deptId} OR (inv.fps_id = #{recovery.deptId} AND p.land_id IS NULL))
         </if>
         <if test="recovery.startTime != null and recovery.startTime !=''">
             AND DATE_FORMAT(p.sale_time,'%Y-%m-%d') &gt;= #{recovery.startTime}
@@ -131,6 +153,6 @@
         <if test="recovery.endTime != null and recovery.endTime !=''">
             and DATE_FORMAT(p.sale_time,'%Y-%m-%d') &lt;= #{recovery.endTime}
         </if>
-        GROUP BY p.process_id
+        ) a GROUP BY a.process_id
     </select>
 </mapper>
diff --git a/src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml b/src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml
index e30f44e..9a28c0f 100644
--- a/src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml
+++ b/src/main/java/org/springblade/modules/sale/mapper/SaleMapper.xml
@@ -173,6 +173,7 @@
             sys_sale sale
             LEFT JOIN sys_district dis ON sale.sale_destination = dis.CODE
             LEFT JOIN sys_land sl ON sl.id = sale.land_id
+            LEFT JOIN sys_process_inv inv ON inv.id = sale.prod_id
         WHERE 1 = 1 AND sale.is_deleted = 0
         <if test="startTime != null and startTime != ''">
             and sale_time &gt;= #{startTime}
@@ -183,9 +184,8 @@
         <if test="startTime == null and endTime == null ">
             and YEAR ( sale_time ) = YEAR ( NOW( ) )
         </if>
-
         <if test="farmId != null and farmId != ''">
-            and sl.farm_id = #{farmId}
+            and (sl.farm_id = #{farmId} or inv.fps_id = #{farmId})
         </if>
         GROUP BY
             dis.NAME,
diff --git a/src/main/java/org/springblade/modules/system/controller/UserController.java b/src/main/java/org/springblade/modules/system/controller/UserController.java
index 88d8fd8..901fd37 100644
--- a/src/main/java/org/springblade/modules/system/controller/UserController.java
+++ b/src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -83,7 +83,7 @@
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "查看详情", notes = "传入id")
 	@GetMapping("/detail")
-	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
+//	@PreAuth(RoleConstant.HAS_ROLE_ADMIN)
 	public R<UserVO> detail(User user) {
 		User detail = userService.getOne(Condition.getQueryWrapper(user));
 		return R.data(UserWrapper.build().entityVO(detail));

--
Gitblit v1.9.3