Browse Source

三单状态

wangxuan 8 months ago
parent
commit
2d484b712d

+ 1 - 1
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxPmqManagementDistributionDetailDao.java

@@ -28,7 +28,7 @@ public interface ZhcxPmqManagementDistributionDetailDao extends BaseMapper<ZhcxP
      * @param id 第二层id
      * @return 未关闭的数量
      */
-    String getNotClosedStateInThirdFloorByPid(@Param("id") String id);
+    String getNotClosedStateInThirdFloorByPid(@Param("id") String id,@Param("projectid") String projectid);
 
     /**
      * 根据pid查询第三层未关闭的数量

+ 4 - 1
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxPmqManagementDistributionDetailServiceImpl.java

@@ -60,8 +60,11 @@ public class ZhcxPmqManagementDistributionDetailServiceImpl extends ServiceImpl<
     public R updateClosedStateInSecondFloor(String id) {
         ZhcxPmqManagementRecoredDo recoredDo = managementRecoredService.getById(id);
         if(Objects.isNull(recoredDo)){return R.error("主表2数据异常");}
+        // 获取项目id
+        ZhcxPmqManagementDo managementDo = managementService.getById(recoredDo.getPmqmid());
+        if(Objects.isNull(managementDo)){return R.error("主表数据异常");}
         // 根据pid获取第三层未关闭的数量
-        String closeStatus = baseMapper.getNotClosedStateInThirdFloorByPid(id);
+        String closeStatus = baseMapper.getNotClosedStateInThirdFloorByPid(id,managementDo.getProjectid());
         // 更新第二层表的状态
         recoredDo.setClosestatus(closeStatus);
         managementRecoredService.updateById(recoredDo);

+ 71 - 19
business-common/src/main/resources/mybatis/business/ZhcxPmqManagementDistributionDetailDao.xml

@@ -26,25 +26,77 @@
         FROM DUAL;
     </select>
     <select id="getNotClosedStateInThirdFloorByPid" resultType="java.lang.String">
-        SELECT CASE
-                   WHEN (SELECT COUNT(*)
-                         FROM INCONTROL.ZHCX_PMQ_MANAGEMENT_DISTRIBUTION_DETAIL x
-                         WHERE PID = #{id}
-                           AND DELETED = '0') = 0 THEN '未关闭'
-                   WHEN EXISTS (SELECT 1
-                                FROM INCONTROL.ZHCX_PMQ_MANAGEMENT_DISTRIBUTION_DETAIL x
-                                WHERE PID = #{id}
-                                  AND DELETED = '0'
-                                  AND (STATUS IS NULL
-                                    OR STATUS = '未关闭')) THEN '未关闭'
-                   WHEN NOT EXISTS (SELECT 1
-                                    FROM INCONTROL.ZHCX_PMQ_MANAGEMENT_DISTRIBUTION_DETAIL x
-                                    WHERE PID = #{id}
-                                      AND DELETED = '0'
-                                      AND STATUS != 'NA') THEN 'NA'
-                   ELSE '已关闭'
-                   END AS CLOSESTATUS
-        FROM DUAL;
+        SELECT
+            CASE
+                WHEN SUM( CASE WHEN e.STATUS = '已关闭' THEN 1 ELSE 0 END ) = COUNT(*) THEN '已关闭'
+                WHEN SUM( CASE WHEN e.STATUS = '未关闭' OR e.STATUS IS NULL THEN 1 ELSE 0 END ) > 0 THEN '未关闭'
+                WHEN (  SUM( CASE WHEN e.STATUS = '已关闭' THEN 1 ELSE 0 END ) > 0 AND SUM( CASE WHEN e.STATUS != '已关闭' THEN 1 ELSE 0 END ) = COUNT(*) - SUM( CASE WHEN e.STATUS = '已关闭' THEN 1 ELSE 0 END )) THEN '已关闭'
+                WHEN SUM( CASE WHEN e.STATUS = 'NA' THEN 1 ELSE 0 END ) = COUNT(*) THEN 'NA'
+                ELSE THEN '未关闭'
+        END AS STATUS
+FROM
+		INCONTROL.ZHCX_PROJECT_DEVICE_NUMBER n
+JOIN INCONTROL.ZHCX_PROJECT_MANAGE p ON p.ID = n.PID AND p.DELETED = '0'
+LEFT JOIN (
+	SELECT
+			t.MACHINEID,
+			WM_CONCAT (t.ID) AS ID,
+			t.PID,
+			t.PROJECTID,
+			t.MACHINENO,
+		CASE
+			WHEN SUM( CASE WHEN t.STATUS = '已关闭' THEN 1 ELSE 0 END ) = COUNT(*) THEN '已关闭'
+			WHEN SUM( CASE WHEN t.STATUS = '未关闭' THEN 1 ELSE 0 END ) > 0 THEN '未关闭'
+			WHEN (  SUM( CASE WHEN t.STATUS = '已关闭' THEN 1 ELSE 0 END ) > 0
+				AND SUM( CASE WHEN t.STATUS != '已关闭' THEN 1 ELSE 0 END ) = COUNT(*) - SUM( CASE WHEN t.STATUS = '已关闭' THEN 1 ELSE 0 END )) THEN '已关闭'
+			WHEN SUM( CASE WHEN t.STATUS = 'NA' THEN 1 ELSE 0 END ) = COUNT(*) THEN 'NA'
+			ELSE THEN '未关闭'
+		END AS STATUS
+	FROM
+		(
+		SELECT
+			x.ID,
+			x.PID,
+			x.PROJECTID,
+			x.MACHINEID,
+			x.MACHINENO,
+			CASE WHEN x.STATUS IS NULL THEN '未关闭'
+				WHEN x.STATUS = 'NA' THEN 'NA'
+				WHEN x.STATUS = '已关闭' THEN '已关闭'
+				ELSE '未关闭'
+			END AS STATUS
+		FROM
+			INCONTROL.ZHCX_PMQ_MANAGEMENT_DISTRIBUTION_DETAIL x
+		WHERE x.PID = #{id} AND x.DELETED = '0'
+		) AS t
+	GROUP BY
+								t.MACHINEID,
+								t.PID,
+								t.PROJECTID,
+								t.MACHINENO
+	) e ON e.PROJECTID = p.ID AND n.ID = e.MACHINEID
+WHERE n.DELETED = '0' AND p.ID = #{projectid}
+ORDER BY
+	TO_NUMBER (REPLACE ( n.DEVICE_NUMBER,'#','' ))
+--         SELECT CASE
+--                    WHEN (SELECT COUNT(*)
+--                          FROM INCONTROL.ZHCX_PMQ_MANAGEMENT_DISTRIBUTION_DETAIL x
+--                          WHERE PID = #{id}
+--                            AND DELETED = '0') = 0 THEN '未关闭'
+--                    WHEN EXISTS (SELECT 1
+--                                 FROM INCONTROL.ZHCX_PMQ_MANAGEMENT_DISTRIBUTION_DETAIL x
+--                                 WHERE PID = #{id}
+--                                   AND DELETED = '0'
+--                                   AND (STATUS IS NULL
+--                                     OR STATUS = '未关闭')) THEN '未关闭'
+--                    WHEN NOT EXISTS (SELECT 1
+--                                     FROM INCONTROL.ZHCX_PMQ_MANAGEMENT_DISTRIBUTION_DETAIL x
+--                                     WHERE PID = #{id}
+--                                       AND DELETED = '0'
+--                                       AND STATUS != 'NA') THEN 'NA'
+--                    ELSE '已关闭'
+--                    END AS CLOSESTATUS
+--         FROM DUAL;
     </select>
 
     <select id="getNotClosedStateInSecondHalfFloorByPid" resultType="java.lang.String">