shudonghui 1 year ago
parent
commit
f707d6d614

+ 5 - 2
sop-business/src/main/java/com/qmth/sop/business/service/impl/DeviceMonitorServiceImpl.java

@@ -13,6 +13,8 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 
 /**
@@ -39,9 +41,10 @@ public class DeviceMonitorServiceImpl extends ServiceImpl<DeviceMonitorMapper, S
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
         Map<String, Object> map = this.baseMapper.countByServiceUnit(dpr);
+
         Map<String, Object> count = this.count(null, null);
-        map.putAll(count);
-        return map;
+        count.putAll(map);
+        return count;
     }
 
     @Override

+ 35 - 21
sop-business/src/main/resources/mapper/DeviceMonitorMapper.xml

@@ -36,16 +36,16 @@
     </select>
     <select id="countByServiceUnit" resultType="java.util.Map">
         SELECT
-        sum( CASE WHEN s.`status` = 'PUBLISH' AND l.id IS NOT NULL THEN l.devices ELSE 0 END ) DEVICES,
-        sum( CASE WHEN d.bound = 'OUT' THEN 1 ELSE 0 END ) OUTS
+        sum(  l.devices ) DEVICES
+<!--        sum( CASE WHEN d.bound = 'OUT' THEN 1 ELSE 0 END ) OUTS-->
         FROM
         t_b_service s
         LEFT JOIN t_b_crm c ON c.service_id = s.id
         LEFT JOIN sys_custom cu ON cu.id = c.custom_id
         LEFT JOIN sys_level l ON l.id = cu.level_id
 
-        left join t_b_device_in_out io on io.service_id=s.id
-        left join sys_device d on d.device_code=io.device_no
+<!--        left join t_b_device_in_out io on io.service_id=s.id-->
+<!--        left join sys_device d on d.device_code=io.device_no-->
         <where>
             and s.status !='FINISH'
             <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
@@ -57,28 +57,19 @@
         </where>
     </select>
     <select id="countByServiceUnitDetail" resultType="java.util.Map">
-<!--        SELECT-->
-<!--        s.`name` NAME,sum( l.devices ) devices ,sum(case when d.bound='OUT' then 1 else 0 end ) OUTS-->
-<!--        FROM-->
-<!--        t_b_service s-->
-<!--        LEFT JOIN t_b_crm c ON c.service_id = s.id-->
-<!--        LEFT JOIN sys_custom cu ON cu.id = c.custom_id-->
-<!--        LEFT JOIN sys_level l ON l.id = cu.level_id-->
 
-<!--        left join t_b_device_in_out io on io.service_id=s.id-->
-<!--        left join sys_device d on d.device_code=io.device_no-->
-        SELECT
+
+        SELECT a.*,b.OUTS from (
+
+        SELECT s.id ,
         s.`name` NAME,
-        sum( l.devices ) devices,
-        sum( CASE WHEN d.bound = 'OUT' THEN 1 ELSE 0 END ) OUTS
+        sum(l.devices) devices
+
         FROM
         t_b_service s
-        left join t_b_service_scope ss on ss.service_id=s.id
-        LEFT JOIN t_b_crm c ON c.crm_no = ss.crm_no
+        LEFT JOIN t_b_crm c ON c.service_id = s.id
         LEFT JOIN sys_custom cu ON cu.id = c.custom_id
         LEFT JOIN sys_level l ON l.id = cu.level_id
-        LEFT JOIN t_b_device_in_out io ON io.service_id = s.id
-        LEFT JOIN sys_device d ON d.device_code = io.device_no
         <where>
             and s.status !='FINISH'
             <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
@@ -88,6 +79,29 @@
             </if>
 
         </where>
-        GROUP BY s.`name`
+        GROUP BY s.id ,s.`name`
+        ) a
+        left join
+
+        (SELECT s.id ,
+
+        sum(case when d.bound='OUT' then 1 else 0 end ) OUTS
+
+        FROM
+        t_b_service s
+
+        left join t_b_device_in_out io on io.service_id=s.id
+        left join sys_device d on d.device_code=io.device_no
+        <where>
+            and s.status !='FINISH'
+            <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
+                <if test="dpr.hasBusiness">
+                    AND s.service_lead_id = #{dpr.requestUserId}
+                </if>
+            </if>
+
+        </where>
+        GROUP BY s.id )
+        b on a.id =b.id
     </select>
 </mapper>