Commit be42514e authored by 李秀明's avatar 李秀明

消防管控大屏:巡检时间统计维度修改

parent 8f568fbd
...@@ -85,6 +85,7 @@ import java.text.SimpleDateFormat; ...@@ -85,6 +85,7 @@ import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -2173,20 +2174,24 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -2173,20 +2174,24 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
} }
List<Map<String, Object>> stations = response.getResult(); List<Map<String, Object>> stations = response.getResult();
AtomicInteger doneNum = new AtomicInteger(); // 已开展 AtomicInteger doneNum = new AtomicInteger(); // 已开展
AtomicInteger missNum = new AtomicInteger(); // 漏检 AtomicInteger missNum = new AtomicInteger(); // 有漏检
AtomicInteger noMissNum = new AtomicInteger(); // 无漏检
List<Map<String, String>> queryMaps = planTaskMapper.selectPatrolActivityStats(bizOrgCode, date); List<Map<String, String>> queryMaps = planTaskMapper.selectPatrolActivityStats(bizOrgCode, date);
for (Map<String, String> queryMap : queryMaps) { for (Map<String, String> queryMap : queryMaps) {
String missStatus = queryMap.get("missStatus"); String missStatus = queryMap.get("missStatus");
if (Objects.equals(missStatus, "有漏检")) { if (Objects.equals(missStatus, "有漏检")) {
missNum.incrementAndGet(); missNum.incrementAndGet();
} }
if (Objects.equals(missStatus, "无漏检")) {
noMissNum.incrementAndGet();
}
doneNum.incrementAndGet(); doneNum.incrementAndGet();
} }
return new HashMap<String, Number>() {{ return new HashMap<String, Number>() {{
this.put("done", doneNum.intValue()); this.put("done", doneNum.intValue());
this.put("undone", stations.size() - doneNum.intValue()); this.put("undone", stations.size() - doneNum.intValue());
this.put("miss", missNum); this.put("miss", missNum);
this.put("noMiss", doneNum.intValue() - missNum.intValue()); this.put("noMiss", noMissNum);
}}; }};
} }
...@@ -2217,6 +2222,8 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -2217,6 +2222,8 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
record.put("bizOrgCode", station.get("bizOrgCode")); record.put("bizOrgCode", station.get("bizOrgCode"));
record.put("bizOrgName", station.get("bizOrgName")); record.put("bizOrgName", station.get("bizOrgName"));
record.put("time", date); record.put("time", date);
record.put("beginTime", '-');
record.put("endTime", '-');
record.put("patrolStatus", "未开展"); record.put("patrolStatus", "未开展");
record.put("allCount", 0); record.put("allCount", 0);
record.put("missPointCount", 0); record.put("missPointCount", 0);
...@@ -2233,11 +2240,17 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -2233,11 +2240,17 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
queryMap.put("patrolStatus", "已开展"); queryMap.put("patrolStatus", "已开展");
int totalValue = Integer.parseInt(queryMap.getOrDefault("allCount", "0").toString()); int totalValue = Integer.parseInt(queryMap.getOrDefault("allCount", "0").toString());
int missPointCount = Integer.parseInt(queryMap.getOrDefault("missPointCount", "0").toString()); int missPointCount = Integer.parseInt(queryMap.getOrDefault("missPointCount", "0").toString());
int finishCount = Integer.parseInt(queryMap.getOrDefault("finishCount", "0").toString()); int finishPointCount = Integer.parseInt(queryMap.getOrDefault("finishPointCount", "0").toString());
// 获取漏检率:missPointCount / totalValue // 获取漏检率:missPointCount / totalValue
queryMap.put("missPointRate", getPercent((float) missPointCount, (float) totalValue)); queryMap.put("missPointRate", getPercent((float) missPointCount, (float) totalValue));
// 执行进度:finishCount / totalValue // 执行进度:finishCount / totalValue
queryMap.put("finishRate", getPercent((float) finishCount, (float) totalValue)); queryMap.put("finishRate", getPercent((float) finishPointCount, (float) totalValue));
String realStartTime = queryMap.getOrDefault("realStartTime", cn.hutool.core.date.DateUtil.now()).toString();
String realEndTime = queryMap.getOrDefault("realEndTime", cn.hutool.core.date.DateUtil.now()).toString();
long minutesBetween = this.getMinutesBetween(realStartTime, realEndTime);
queryMap.put("totalTime", minutesBetween);
doneStations.add(queryMap.get("bizOrgCode").toString()); doneStations.add(queryMap.get("bizOrgCode").toString());
} }
...@@ -2250,6 +2263,8 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -2250,6 +2263,8 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
record.put("bizOrgCode", station.get("bizOrgCode")); record.put("bizOrgCode", station.get("bizOrgCode"));
record.put("bizOrgName", station.get("bizOrgName")); record.put("bizOrgName", station.get("bizOrgName"));
record.put("time", date); record.put("time", date);
record.put("beginTime", '-');
record.put("endTime", '-');
record.put("patrolStatus", "未开展"); record.put("patrolStatus", "未开展");
record.put("allCount", 0); record.put("allCount", 0);
record.put("missPointCount", 0); record.put("missPointCount", 0);
...@@ -2310,4 +2325,22 @@ public class PlanTaskServiceImpl implements IPlanTaskService { ...@@ -2310,4 +2325,22 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
return null; return null;
} }
} }
/**
* 计算两个时间间隔分钟数
* @param startTime 开始时间 yyyy-MM-dd HH:mm:ss
* @param endTime 结束时间 yyyy-MM-dd HH:mm:ss
*/
public long getMinutesBetween(String startTime, String endTime) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date startDate = sdf.parse(startTime);
Date endDate = sdf.parse(endTime);
long diff = endDate.getTime() - startDate.getTime();
return TimeUnit.MILLISECONDS.toMinutes(diff);
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
} }
...@@ -1780,34 +1780,30 @@ ...@@ -1780,34 +1780,30 @@
SELECT SELECT
* *
FROM ( FROM (
SELECT SELECT LEFT
LEFT(t.org_code, 18) AS bizOrgCode, ( t.org_code, 18 ) AS bizOrgCode,
u.biz_org_name AS bizOrgName, u.biz_org_name AS bizOrgName,
DATE_FORMAT( t.check_date, '%Y-%m-%d' ) AS time, DATE_FORMAT( t.check_date, '%Y-%m-%d' ) AS time,
IFNULL(SUM( t.point_num ), 0) AS allCount, DATE_FORMAT( t.begin_time, '%Y-%m-%d %H:%i' ) AS beginTime,
IFNULL(SUM(IF(t.finish_status = 3, t.point_num, 0)), 0) AS missPointCount, DATE_FORMAT( t.end_time, '%Y-%m-%d %H:%i' ) AS endTime,
IFNULL(SUM(IF(t.finish_status = 2, t.point_num, 0)), 0) AS finishCount, IFNULL( SUM( t.point_num ), 0 ) AS allCount,
IFNULL( ( SELECT COUNT(1) FROM p_plan_task_detail d WHERE d.is_finish != 1 AND d.task_no = t.id ) AS missPointCount,
( ( SELECT COUNT(1) FROM p_plan_task_detail d WHERE d.is_finish = 1 AND d.task_no = t.id ) AS finishPointCount,
SELECT ( SELECT DATE_FORMAT(MIN( d.executor_date ), '%Y-%m-%d %H:%i:%s' ) FROM p_plan_task_detail d WHERE d.is_finish = 1 AND d.task_no = t.id ) AS realStartTime,
SUM(TIMESTAMPDIFF(MINUTE, t.begin_time, d.executor_date)) ( SELECT DATE_FORMAT(MAX( d.executor_date ), '%Y-%m-%d %H:%i:%s' ) FROM p_plan_task_detail d WHERE d.is_finish = 1 AND d.task_no = t.id ) AS realEndTime
FROM
p_plan_task t
LEFT JOIN p_plan_task_detail d ON d.task_no = t.id
WHERE
t.finish_status = 2 AND org_code LIKE LEFT(t.org_code, 18)
AND DATE_FORMAT( t.check_date, '%Y-%m-%d' ) = #{date}
), 0) AS totalTime
FROM FROM
p_plan_task t p_plan_task t
LEFT JOIN cb_org_usr u on u.biz_org_code = left(t.org_code, 18) LEFT JOIN cb_org_usr u ON u.biz_org_code = LEFT ( t.org_code, 18 )
WHERE <where>
DATE_FORMAT( t.check_date, '%Y-%m-%d' ) = #{date}
<if test="bizOrgCode != null and bizOrgCode != ''"> <if test="bizOrgCode != null and bizOrgCode != ''">
AND t.org_code LIKE CONCAT(#{bizOrgCode}, '%') AND t.org_code LIKE CONCAT(#{bizOrgCode}, '%')
</if> </if>
<if test="date != null and date != ''">
AND DATE_FORMAT( t.check_date, '%Y-%m-%d' ) = #{date}
</if>
</where>
GROUP BY GROUP BY
LEFT(t.org_code, 18) LEFT ( t.org_code, 18 ),t.id
) t ) t
<where> <where>
<if test="missStatus == 'miss'"> <if test="missStatus == 'miss'">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment