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

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

parent 8f568fbd
......@@ -85,6 +85,7 @@ import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -2173,20 +2174,24 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
}
List<Map<String, Object>> stations = response.getResult();
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);
for (Map<String, String> queryMap : queryMaps) {
String missStatus = queryMap.get("missStatus");
if (Objects.equals(missStatus, "有漏检")) {
missNum.incrementAndGet();
}
if (Objects.equals(missStatus, "无漏检")) {
noMissNum.incrementAndGet();
}
doneNum.incrementAndGet();
}
return new HashMap<String, Number>() {{
this.put("done", doneNum.intValue());
this.put("undone", stations.size() - doneNum.intValue());
this.put("miss", missNum);
this.put("noMiss", doneNum.intValue() - missNum.intValue());
this.put("noMiss", noMissNum);
}};
}
......@@ -2217,6 +2222,8 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
record.put("bizOrgCode", station.get("bizOrgCode"));
record.put("bizOrgName", station.get("bizOrgName"));
record.put("time", date);
record.put("beginTime", '-');
record.put("endTime", '-');
record.put("patrolStatus", "未开展");
record.put("allCount", 0);
record.put("missPointCount", 0);
......@@ -2233,11 +2240,17 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
queryMap.put("patrolStatus", "已开展");
int totalValue = Integer.parseInt(queryMap.getOrDefault("allCount", "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
queryMap.put("missPointRate", getPercent((float) missPointCount, (float) 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());
}
......@@ -2250,6 +2263,8 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
record.put("bizOrgCode", station.get("bizOrgCode"));
record.put("bizOrgName", station.get("bizOrgName"));
record.put("time", date);
record.put("beginTime", '-');
record.put("endTime", '-');
record.put("patrolStatus", "未开展");
record.put("allCount", 0);
record.put("missPointCount", 0);
......@@ -2310,4 +2325,22 @@ public class PlanTaskServiceImpl implements IPlanTaskService {
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 @@
SELECT
*
FROM (
SELECT
LEFT(t.org_code, 18) AS bizOrgCode,
SELECT LEFT
( t.org_code, 18 ) AS bizOrgCode,
u.biz_org_name AS bizOrgName,
DATE_FORMAT( t.check_date, '%Y-%m-%d' ) AS time,
IFNULL(SUM( t.point_num ), 0) AS allCount,
IFNULL(SUM(IF(t.finish_status = 3, t.point_num, 0)), 0) AS missPointCount,
IFNULL(SUM(IF(t.finish_status = 2, t.point_num, 0)), 0) AS finishCount,
IFNULL(
(
SELECT
SUM(TIMESTAMPDIFF(MINUTE, t.begin_time, d.executor_date))
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
DATE_FORMAT( t.begin_time, '%Y-%m-%d %H:%i' ) AS beginTime,
DATE_FORMAT( t.end_time, '%Y-%m-%d %H:%i' ) AS endTime,
IFNULL( SUM( t.point_num ), 0 ) AS allCount,
( 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 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,
( 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 cb_org_usr u on u.biz_org_code = left(t.org_code, 18)
WHERE
DATE_FORMAT( t.check_date, '%Y-%m-%d' ) = #{date}
p_plan_task t
LEFT JOIN cb_org_usr u ON u.biz_org_code = LEFT ( t.org_code, 18 )
<where>
<if test="bizOrgCode != null and bizOrgCode != ''">
AND t.org_code LIKE CONCAT(#{bizOrgCode}, '%')
</if>
<if test="date != null and date != ''">
AND DATE_FORMAT( t.check_date, '%Y-%m-%d' ) = #{date}
</if>
</where>
GROUP BY
LEFT(t.org_code, 18)
LEFT ( t.org_code, 18 ),t.id
) t
<where>
<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