bug修复

This commit is contained in:
GUO 2024-05-11 09:08:21 +08:00
parent c72a2808ec
commit d7dd028707
7 changed files with 196 additions and 154 deletions

View File

@ -2,6 +2,7 @@ package com.zhgd.xmgl.modules.video.controller;
import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTypeCountVO;
import com.zhgd.xmgl.modules.video.service.IAiStatisticService; import com.zhgd.xmgl.modules.video.service.IAiStatisticService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
@ -45,7 +46,7 @@ public class AiStatisticController {
@ApiImplicitParam(name = "sn", value = "公司或项目sn", paramType = "body", required = true, dataType = "String"), @ApiImplicitParam(name = "sn", value = "公司或项目sn", paramType = "body", required = true, dataType = "String"),
}) })
@PostMapping("/selectAiAnalyseHardWareAlarmTypeCount") @PostMapping("/selectAiAnalyseHardWareAlarmTypeCount")
public Result<Map<String, Object>> selectAiAnalyseHardWareAlarmTypeCount(@RequestBody Map<String, Object> map) { public Result<AiAnalyseHardWareAlarmTypeCountVO> selectAiAnalyseHardWareAlarmTypeCount(@RequestBody Map<String, Object> map) {
return Result.success(aiStatisticService.selectAiAnalyseHardWareAlarmTypeCount(map)); return Result.success(aiStatisticService.selectAiAnalyseHardWareAlarmTypeCount(map));
} }

View File

@ -181,5 +181,17 @@ public class AiAnalyseHardWareAlarmRecord implements Serializable {
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "AI扣分规则") @ApiModelProperty(value = "AI扣分规则")
private XzAiDeductRule aiDeductRule; private XzAiDeductRule aiDeductRule;
@TableField(exist = false)
@ApiModelProperty(value = "报警数量")
private Integer alarmNum;
@TableField(exist = false)
@ApiModelProperty(value = "日期")
private String date;
@TableField(exist = false)
@ApiModelProperty(value = "今日报警数量")
private Integer alarmNumToday;
@TableField(exist = false)
@ApiModelProperty(value = "今日较昨日报警数量")
private Integer subYesterday;
} }

View File

@ -0,0 +1,12 @@
package com.zhgd.xmgl.modules.video.entity.vo;
import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord;
import lombok.Data;
import java.util.List;
@Data
public class AiAnalyseHardWareAlarmTypeCountVO {
private List<AiAnalyseHardWareAlarmRecord> alarmList;
private Integer totalAlarmNum;
}

View File

@ -6,7 +6,6 @@ import com.zhgd.annotation.DataScope;
import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.base.entity.vo.SectorOneVo; import com.zhgd.xmgl.base.entity.vo.SectorOneVo;
import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord; import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord;
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTrendVo;
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -36,7 +35,7 @@ public interface AiAnalyseHardWareAlarmRecordMapper extends BaseMapper<AiAnalyse
List<SectorOneVo> getAiAnalyseHardWareAlarmTotal(Map<String, Object> map); List<SectorOneVo> getAiAnalyseHardWareAlarmTotal(Map<String, Object> map);
List<Map<String, Object>> selectAiAnalyseHardWareAlarmTypeCount(Map<String, Object> map); List<AiAnalyseHardWareAlarmRecord> selectAiAnalyseHardWareAlarmTypeCount(Map<String, Object> map);
List<Map<String, Object>> selectProjectAiAlarmCountList(Map<String, Object> map); List<Map<String, Object>> selectProjectAiAlarmCountList(Map<String, Object> map);

View File

@ -9,21 +9,21 @@
<select id="queryAiAnalyseHardWareAlarmPageListTwo" <select id="queryAiAnalyseHardWareAlarmPageListTwo"
resultMap="queryAiAnalyseHardWareAlarmPageListTwoRm"> resultMap="queryAiAnalyseHardWareAlarmPageListTwoRm">
SELECT a.*, SELECT a.*,
'安全部' as department_name, '安全部' as department_name,
s.real_name, s.real_name,
group_concat(wi.worker_name) as worker_info_str group_concat(wi.worker_name) as worker_info_str
FROM ai_analyse_hard_ware_alarm_record a FROM ai_analyse_hard_ware_alarm_record a
LEFT JOIN system_user s ON a.rectification_person_id = s.user_id LEFT JOIN system_user s ON a.rectification_person_id = s.user_id
LEFT join department_info di on s.department = di.department_name LEFT join department_info di on s.department = di.department_name
left join worker_info_to_ai_analyse_hard_ware_alarm_record witaahwar on a.id = left join worker_info_to_ai_analyse_hard_ware_alarm_record witaahwar on a.id =
witaahwar.ai_analyse_hard_ware_alarm_record_id witaahwar.ai_analyse_hard_ware_alarm_record_id
left join worker_info wi on wi.id = witaahwar.worker_info_id left join worker_info wi on wi.id = witaahwar.worker_info_id
WHERE a.project_sn = #{param.projectSn} WHERE a.project_sn = #{param.projectSn}
<if test="param.pushPersonId != null"> <if test="param.pushPersonId != null">
and find_in_set(#{param.pushPersonId}, a.push_person_ids) and find_in_set(#{param.pushPersonId}, a.push_person_ids)
</if> </if>
<if test="param.hardwareId != null and param.hardwareId != ''"> <if test="param.hardwareId != null and param.hardwareId != ''">
and a.hardware_id like concat('%',#{param.hardwareId},'%') and a.hardware_id like concat('%', #{param.hardwareId}, '%')
</if> </if>
<if test="param.id != null and param.id != ''"> <if test="param.id != null and param.id != ''">
and a.id = #{param.id} and a.id = #{param.id}
@ -47,24 +47,31 @@
AND a.create_time &lt;= #{param.endTime} AND a.create_time &lt;= #{param.endTime}
</if> </if>
<if test="param.enterpriseId != null and param.enterpriseId != ''"> <if test="param.enterpriseId != null and param.enterpriseId != ''">
and a.hardware_id in ( and a.hardware_id in (select ai_analyse_hard_ware_record.hardware_id
select ai_analyse_hard_ware_record.hardware_id from ai_analyse_hard_ware_record where id in ( from ai_analyse_hard_ware_record
select distinct qrtaah.ai_analyse_hard_ware_record_id from quality_region_to_ai_analyse_hard qrtaah join where id in (select distinct qrtaah.ai_analyse_hard_ware_record_id
quality_region_to_enterprise qrte on qrte.quality_region_id=qrtaah.quality_region_id from quality_region_to_ai_analyse_hard qrtaah
where qrte.enterprise_id = #{param.enterpriseId} OR qrte.enterprise_id IN ( SELECT DISTINCT t.enterprise_id join
FROM quality_region_to_enterprise qrte
(SELECT t.id FROM project_enterprise t WHERE t.enterprise_id = #{param.enterpriseId}) t2 join on qrte.quality_region_id = qrtaah.quality_region_id
project_enterprise where qrte.enterprise_id = #{param.enterpriseId}
t on find_in_set( t2.id, ancestors ) ) OR qrte.enterprise_id IN (SELECT DISTINCT t.enterprise_id
)) FROM (SELECT t.id
FROM project_enterprise t
WHERE t.enterprise_id = #{param.enterpriseId}) t2
join
project_enterprise t
on find_in_set(t2.id, ancestors))))
</if> </if>
<if test="param.qualityRegionId != null and param.qualityRegionId != ''"> <if test="param.qualityRegionId != null and param.qualityRegionId != ''">
and a.hardware_id in( and a.hardware_id in (select ai_analyse_hard_ware_record.hardware_id
select ai_analyse_hard_ware_record.hardware_id from ai_analyse_hard_ware_record where id in ( from ai_analyse_hard_ware_record
select distinct h.ai_analyse_hard_ware_record_id from quality_region_to_ai_analyse_hard h where where id in (select distinct h.ai_analyse_hard_ware_record_id
h.quality_region_id = #{param.qualityRegionId} OR h.quality_region_id IN ( SELECT t.id FROM quality_region t from quality_region_to_ai_analyse_hard h
WHERE find_in_set(#{param.qualityRegionId}, ancestors) )) where h.quality_region_id = #{param.qualityRegionId}
) OR h.quality_region_id IN (SELECT t.id
FROM quality_region t
WHERE find_in_set(#{param.qualityRegionId}, ancestors))))
</if> </if>
<if test="param.handleDone != null and param.handleDone != '' or param.handleDone == true"> <if test="param.handleDone != null and param.handleDone != '' or param.handleDone == true">
AND a.handle_done = #{param.handleDone} AND a.handle_done = #{param.handleDone}
@ -138,14 +145,14 @@
</select> </select>
<select id="selectAiAnalyseHardWareAlarmList" <select id="selectAiAnalyseHardWareAlarmList"
resultType="com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord"> resultType="com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord">
SELECT a.*,group_concat(wi.worker_name) workerInfoStr SELECT a.*, group_concat(wi.worker_name) workerInfoStr
FROM ai_analyse_hard_ware_alarm_record a FROM ai_analyse_hard_ware_alarm_record a
left join worker_info_to_ai_analyse_hard_ware_alarm_record witaahwar on a.id = left join worker_info_to_ai_analyse_hard_ware_alarm_record witaahwar on a.id =
witaahwar.ai_analyse_hard_ware_alarm_record_id witaahwar.ai_analyse_hard_ware_alarm_record_id
left join worker_info wi on wi.id = witaahwar.worker_info_id left join worker_info wi on wi.id = witaahwar.worker_info_id
where a.project_sn = #{projectSn} where a.project_sn = #{projectSn}
<if test="workerName != null and workerName != ''"> <if test="workerName != null and workerName != ''">
and wi.worker_name like concat('%',#{workerName},'%') and wi.worker_name like concat('%', #{workerName}, '%')
</if> </if>
<include refid="queryAlarmTime"> <include refid="queryAlarmTime">
</include> </include>
@ -170,25 +177,27 @@
<select id="getAiAnalyseHardWareAlarmTotal" <select id="getAiAnalyseHardWareAlarmTotal"
resultType="com.zhgd.xmgl.base.entity.vo.SectorOneVo"> resultType="com.zhgd.xmgl.base.entity.vo.SectorOneVo">
SELECT di.name, SELECT di.name,
count(a.id) count, count(a.id) count,
di.data enumType di.data enumType
FROM dictionary_item di FROM dictionary_item di
LEFT JOIN ai_analyse_hard_ware_alarm_record a on a.alarm_type = di.data and a.project_sn = #{projectSn} LEFT JOIN ai_analyse_hard_ware_alarm_record a on a.alarm_type = di.data and a.project_sn = #{projectSn}
<include refid="queryAlarmTime"> <include refid="queryAlarmTime">
</include> </include>
where di.dictionary_encoding = 'ai_analyse_hard_ware_alarm_record_type' where di.dictionary_encoding = 'ai_analyse_hard_ware_alarm_record_type'
group by di.data group by di.data
order by count desc order by count desc
</select> </select>
<select id="selectAiAnalyseHardWareAlarmTypeCount" resultType="java.util.Map" parameterType="java.util.Map"> <select id="selectAiAnalyseHardWareAlarmTypeCount"
resultType="com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord" parameterType="java.util.Map">
SELECT w1.alarm_type alarmType, SELECT w1.alarm_type alarmType,
COUNT(1) alarmNum COUNT(1) alarmNum,
DATE_FORMAT(w1.create_time, '%Y-%m-%d') date
from ai_analyse_hard_ware_alarm_record w1 from ai_analyse_hard_ware_alarm_record w1
INNER JOIN project a ON w1.project_sn = a.project_sn INNER JOIN project a ON w1.project_sn = a.project_sn
LEFT JOIN company cp ON a.company_sn = cp.company_sn LEFT JOIN company cp ON a.company_sn = cp.company_sn
INNER JOIN company b ON cp.parent_id = b.company_id INNER JOIN company b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id Left JOIN company f ON b.parent_id = f.company_id
where w1.create_time &gt;= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00') where w1.create_time &gt;= CONCAT(DATE_FORMAT(DATE_SUB(now(), interval 1 day), '%Y-%m-%d'), ' 00:00:00')
<if test="companyType == '1'.toString()"> <if test="companyType == '1'.toString()">
and f.headquarters_sn = #{sn} and f.headquarters_sn = #{sn}
</if> </if>
@ -204,20 +213,20 @@
<if test="companyType == '5'.toString()"> <if test="companyType == '5'.toString()">
and cp.company_sn = #{sn} and cp.company_sn = #{sn}
</if> </if>
group by w1.alarm_type group by w1.alarm_type, DATE_FORMAT(w1.create_time, '%Y-%m-%d')
</select> </select>
<select id="selectProjectAiAlarmCountList" resultType="java.util.Map" parameterType="java.util.Map"> <select id="selectProjectAiAlarmCountList" resultType="java.util.Map" parameterType="java.util.Map">
SELECT a.project_sn projectSn, SELECT a.project_sn projectSn,
a.project_name projectName, a.project_name projectName,
IFNULL(tp.alarm_num, 0) alarmNum IFNULL(tp.alarm_num, 0) alarmNum
FROM project a FROM project a
INNER JOIN company cp ON a.company_sn = cp.company_sn INNER JOIN company cp ON a.company_sn = cp.company_sn
Left JOIN company b ON cp.parent_id = b.company_id Left JOIN company b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id Left JOIN company f ON b.parent_id = f.company_id
LEFT JOIN (SELECT project_sn, COUNT(1) alarm_num LEFT JOIN (SELECT project_sn, COUNT(1) alarm_num
from ai_analyse_hard_ware_alarm_record from ai_analyse_hard_ware_alarm_record
WHERE create_time >= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00') WHERE create_time >= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00')
GROUP BY project_sn) tp ON a.project_sn = tp.project_sn GROUP BY project_sn) tp ON a.project_sn = tp.project_sn
<where> <where>
<if test="companyType == '1'.toString()"> <if test="companyType == '1'.toString()">
and f.headquarters_sn = #{sn} and f.headquarters_sn = #{sn}
@ -255,16 +264,16 @@
, c.project_name name , c.project_name name
</if> </if>
FROM company a FROM company a
LEFT JOIN company b ON b.parent_id = a.company_id LEFT JOIN company b ON b.parent_id = a.company_id
LEFT JOIN company cp ON b.company_id = cp.parent_id LEFT JOIN company cp ON b.company_id = cp.parent_id
LEFT JOIN project c ON cp.company_sn = c.company_sn LEFT JOIN project c ON cp.company_sn = c.company_sn
LEFT JOIN (SELECT project_sn, COUNT(1) alarm_num LEFT JOIN (SELECT project_sn, COUNT(1) alarm_num
from ai_analyse_hard_ware_alarm_record from ai_analyse_hard_ware_alarm_record
WHERE create_time >= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00') WHERE create_time >= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00')
GROUP BY project_sn) tp ON c.project_sn = tp.project_sn GROUP BY project_sn) tp ON c.project_sn = tp.project_sn
<if test="companyType == '1'.toString()"> <if test="companyType == '1'.toString()">
WHERE a.headquarters_sn = #{sn} WHERE a.headquarters_sn = #{sn}
AND a.company_type = 2 AND a.company_type = 2
GROUP BY a.company_id GROUP BY a.company_id
</if> </if>
<if test="companyType == '2'.toString()"> <if test="companyType == '2'.toString()">
@ -287,10 +296,10 @@
<select id="selectAiAlarmRecordList" resultType="com.zhgd.jeecg.common.mybatis.EntityMap"> <select id="selectAiAlarmRecordList" resultType="com.zhgd.jeecg.common.mybatis.EntityMap">
SELECT w1.*, a.project_name SELECT w1.*, a.project_name
from ai_analyse_hard_ware_alarm_record w1 from ai_analyse_hard_ware_alarm_record w1
INNER JOIN project a ON w1.project_sn = a.project_sn INNER JOIN project a ON w1.project_sn = a.project_sn
LEFT JOIN company cp ON a.company_sn = cp.company_sn LEFT JOIN company cp ON a.company_sn = cp.company_sn
INNER JOIN company b ON cp.parent_id = b.company_id INNER JOIN company b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id Left JOIN company f ON b.parent_id = f.company_id
<where> <where>
<if test="companyType == '1'.toString()"> <if test="companyType == '1'.toString()">
and f.headquarters_sn = #{sn} and f.headquarters_sn = #{sn}
@ -315,16 +324,16 @@
<select id="selectTotalAiAlarmCount" resultType="java.lang.Integer"> <select id="selectTotalAiAlarmCount" resultType="java.lang.Integer">
SELECT IFNULL(SUM(IFNULL(tp.alarm_num, 0)), 0) alarmNum SELECT IFNULL(SUM(IFNULL(tp.alarm_num, 0)), 0) alarmNum
FROM company a FROM company a
LEFT JOIN company b ON b.parent_id = a.company_id LEFT JOIN company b ON b.parent_id = a.company_id
LEFT JOIN company cp ON b.company_id = cp.parent_id LEFT JOIN company cp ON b.company_id = cp.parent_id
LEFT JOIN project c ON cp.company_sn = c.company_sn LEFT JOIN project c ON cp.company_sn = c.company_sn
LEFT JOIN (SELECT project_sn, COUNT(1) alarm_num LEFT JOIN (SELECT project_sn, COUNT(1) alarm_num
from ai_analyse_hard_ware_alarm_record from ai_analyse_hard_ware_alarm_record
WHERE create_time >= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00') WHERE create_time >= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00')
GROUP BY project_sn) tp ON c.project_sn = tp.project_sn GROUP BY project_sn) tp ON c.project_sn = tp.project_sn
<if test="companyType == '1'.toString()"> <if test="companyType == '1'.toString()">
WHERE a.headquarters_sn = #{sn} WHERE a.headquarters_sn = #{sn}
AND a.company_type = 2 AND a.company_type = 2
</if> </if>
<if test="companyType == '2'.toString()"> <if test="companyType == '2'.toString()">
WHERE a.company_sn=#{sn} WHERE a.company_sn=#{sn}
@ -341,23 +350,22 @@
</select> </select>
<select id="selectTotalAiDevCount" resultType="java.util.Map"> <select id="selectTotalAiDevCount" resultType="java.util.Map">
SELECT IFNULL(SUM(IFNULL(d.totalDev, 0)), 0) totalVideoDev, SELECT IFNULL(SUM(IFNULL(d.totalDev, 0)), 0) totalVideoDev,
IFNULL(SUM(IFNULL(d.aiDevNum, 0)), 0) aiDevNum IFNULL(SUM(IFNULL(d.aiDevNum, 0)), 0) aiDevNum
FROM company a FROM company a
LEFT JOIN company b ON b.parent_id = a.company_id LEFT JOIN company b ON b.parent_id = a.company_id
LEFT JOIN company cp ON b.company_id = cp.parent_id LEFT JOIN company cp ON b.company_id = cp.parent_id
LEFT JOIN project c ON cp.company_sn = c.company_sn LEFT JOIN project c ON cp.company_sn = c.company_sn
LEFT JOIN (SELECT t2.project_sn, LEFT JOIN (SELECT t2.project_sn,
COUNT(1) totalDev, COUNT(1) totalDev,
SUM((case when t1.device_state = 1 then 1 else 0 end)) devOnline, SUM((case when t1.device_state = 1 then 1 else 0 end)) devOnline,
SUM((case when t1.ai_function_type = 1 then 1 else 0 end)) aiDevNum SUM((case when t1.ai_function_type = 1 then 1 else 0 end)) aiDevNum
FROM video_item t1 FROM video_item t1
INNER JOIN project_video_config t2 ON t2.id = t1.video_id INNER JOIN project_video_config t2 ON t2.id = t1.video_id
WHERE t2.is_enable = 1 WHERE t2.is_enable = 1
GROUP BY t2.project_sn GROUP BY t2.project_sn) d ON c.project_sn = d.project_sn
) d ON c.project_sn = d.project_sn
<if test="companyType == '1'.toString()"> <if test="companyType == '1'.toString()">
WHERE a.headquarters_sn = #{sn} WHERE a.headquarters_sn = #{sn}
AND a.company_type = 2 AND a.company_type = 2
</if> </if>
<if test="companyType == '2'.toString()"> <if test="companyType == '2'.toString()">
WHERE a.company_sn=#{sn} WHERE a.company_sn=#{sn}
@ -374,41 +382,40 @@
order by totalDev desc order by totalDev desc
</select> </select>
<select id="selectProjectAiStatisticList" resultType="java.util.Map"> <select id="selectProjectAiStatisticList" resultType="java.util.Map">
SELECT IFNULL(tp.alarm_num, 0) alarmNum, SELECT IFNULL(tp.alarm_num, 0) alarmNum,
IFNULL(d.videoDevNum, 0) videoDevNum, IFNULL(d.videoDevNum, 0) videoDevNum,
IFNULL(d.aiDevNum, 0) aiDevNum, IFNULL(d.aiDevNum, 0) aiDevNum,
round(IFNULL(TRUNCATE(IFNULL(d.aiDevNum, 0) / IFNULL(d.videoDevNum, 0), 4), 0) * 100, 2) ratioValue, round(IFNULL(TRUNCATE(IFNULL(d.aiDevNum, 0) / IFNULL(d.videoDevNum, 0), 4), 0) * 100, 2) ratioValue,
c.project_name projectName c.project_name projectName
<if test="companyType == '1'.toString()"> <if test="companyType == '1'.toString()">
, ,
a.company_name companyName a.company_name companyName
</if> </if>
<if test="companyType == '2'.toString()"> <if test="companyType == '2'.toString()">
, ,
b.company_name companyName b.company_name companyName
</if> </if>
<if test="companyType == '3'.toString()"> <if test="companyType == '3'.toString()">
, ,
cp.company_name companyName cp.company_name companyName
</if> </if>
<if test="companyType == '4'.toString() or companyType == '5'.toString()"> <if test="companyType == '4'.toString() or companyType == '5'.toString()">
, ,
cp.company_name companyName cp.company_name companyName
</if> </if>
FROM company a FROM company a
INNER JOIN company b ON b.parent_id = a.company_id INNER JOIN company b ON b.parent_id = a.company_id
INNER JOIN company cp ON b.company_id = cp.parent_id INNER JOIN company cp ON b.company_id = cp.parent_id
INNER JOIN project c ON cp.company_sn = c.company_sn INNER JOIN project c ON cp.company_sn = c.company_sn
LEFT JOIN (SELECT t2.project_sn, LEFT JOIN (SELECT t2.project_sn,
COUNT(1) videoDevNum, COUNT(1) videoDevNum,
SUM((case when t1.ai_function_type = 1 then 1 else 0 end)) aiDevNum SUM((case when t1.ai_function_type = 1 then 1 else 0 end)) aiDevNum
FROM video_item t1 FROM video_item t1
INNER JOIN project_video_config t2 ON t2.id = t1.video_id INNER JOIN project_video_config t2 ON t2.id = t1.video_id
WHERE t2.is_enable = 1 WHERE t2.is_enable = 1
GROUP BY t2.project_sn GROUP BY t2.project_sn) d ON c.project_sn = d.project_sn
) d ON c.project_sn = d.project_sn LEFT JOIN (SELECT project_sn, COUNT(1) alarm_num
LEFT JOIN (SELECT project_sn, COUNT(1) alarm_num from ai_analyse_hard_ware_alarm_record
from ai_analyse_hard_ware_alarm_record
WHERE create_time >= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00') WHERE create_time >= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00')
<if test="alarmType != null and alarmType != ''"> <if test="alarmType != null and alarmType != ''">
and alarm_type = #{alarmType} and alarm_type = #{alarmType}
@ -417,7 +424,7 @@
<where> <where>
<if test="companyType == '1'.toString()"> <if test="companyType == '1'.toString()">
and a.headquarters_sn = #{sn} and a.headquarters_sn = #{sn}
AND a.company_type = 2 AND a.company_type = 2
</if> </if>
<if test="projectName != null and projectName != ''"> <if test="projectName != null and projectName != ''">
and c.project_name like CONCAT(CONCAT('%', #{projectName}), '%') and c.project_name like CONCAT(CONCAT('%', #{projectName}), '%')
@ -480,19 +487,19 @@
SELECT id, SELECT id,
project_sn, project_sn,
hardware_name, hardware_name,
hardware_id, hardware_id,
image_url, image_url,
alarm_type, alarm_type,
location, location,
create_time, create_time,
rectification_person_id, rectification_person_id,
status, status,
request_rectification_date, request_rectification_date,
update_date, update_date,
push_person_ids, push_person_ids,
correct_time, correct_time,
correct_image, correct_image,
correct_remark correct_remark
from ai_analyse_hard_ware_alarm_record from ai_analyse_hard_ware_alarm_record
WHERE location = #{location} WHERE location = #{location}
ORDER BY id DESC ORDER BY id DESC
@ -500,19 +507,20 @@
</select> </select>
<select id="getViolatorList" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerInfo"> <select id="getViolatorList" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerInfo">
select wi.* from worker_info_to_ai_analyse_hard_ware_alarm_record witaahwar select wi.*
join worker_info wi on wi.id = witaahwar.worker_info_id from worker_info_to_ai_analyse_hard_ware_alarm_record witaahwar
where witaahwar.ai_analyse_hard_ware_alarm_record_id=#{aiAnalyseHardWareAlarmRecordId} join worker_info wi on wi.id = witaahwar.worker_info_id
where witaahwar.ai_analyse_hard_ware_alarm_record_id = #{aiAnalyseHardWareAlarmRecordId}
</select> </select>
<select id="violatorListSort" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerInfo"> <select id="violatorListSort" resultType="com.zhgd.xmgl.modules.worker.entity.WorkerInfo">
select wi.worker_name,count(*) count select wi.worker_name, count(*) count
from worker_info_to_ai_analyse_hard_ware_alarm_record witaahwar from worker_info_to_ai_analyse_hard_ware_alarm_record witaahwar
join worker_info wi on wi.id = witaahwar.worker_info_id join worker_info wi on wi.id = witaahwar.worker_info_id
<if test="handleResult != null and handleResult != ''"> <if test="handleResult != null and handleResult != ''">
join ai_analyse_hard_ware_alarm_record aahwar on aahwar.id = witaahwar.ai_analyse_hard_ware_alarm_record_id join ai_analyse_hard_ware_alarm_record aahwar on aahwar.id = witaahwar.ai_analyse_hard_ware_alarm_record_id
</if> </if>
where wi.project_sn=#{projectSn} where wi.project_sn = #{projectSn}
<if test="handleResult != null and handleResult != ''"> <if test="handleResult != null and handleResult != ''">
and aahwar.handle_result = #{handleResult} and aahwar.handle_result = #{handleResult}
</if> </if>
@ -523,22 +531,21 @@
<!--@mbg.generated--> <!--@mbg.generated-->
insert into ai_analyse_hard_ware_alarm_record insert into ai_analyse_hard_ware_alarm_record
(id, project_sn, hardware_name, hardware_id, image_url, alarm_type, `location`, create_time, (id, project_sn, hardware_name, hardware_id, image_url, alarm_type, `location`, create_time,
rectification_person_id, push_person_ids, `status`, correct_image, correct_remark, rectification_person_id, push_person_ids, `status`, correct_image, correct_remark,
correct_time, request_rectification_date, update_date, handle_result, `desc`, handle_done correct_time, request_rectification_date, update_date, handle_result, `desc`, handle_done)
)
values values
<foreach collection="list" item="item" separator=","> <foreach collection="list" item="item" separator=",">
(#{item.id,jdbcType=BIGINT}, #{item.projectSn,jdbcType=VARCHAR}, #{item.hardwareName,jdbcType=VARCHAR}, (#{item.id,jdbcType=BIGINT}, #{item.projectSn,jdbcType=VARCHAR}, #{item.hardwareName,jdbcType=VARCHAR},
#{item.hardwareId,jdbcType=VARCHAR}, #{item.imageUrl,jdbcType=VARCHAR}, #{item.alarmType,jdbcType=TINYINT}, #{item.hardwareId,jdbcType=VARCHAR}, #{item.imageUrl,jdbcType=VARCHAR}, #{item.alarmType,jdbcType=TINYINT},
#{item.location,jdbcType=VARCHAR}, #{item.createTime,jdbcType=VARCHAR}, #{item.location,jdbcType=VARCHAR}, #{item.createTime,jdbcType=VARCHAR},
#{item.rectificationPersonId,jdbcType=BIGINT}, #{item.rectificationPersonId,jdbcType=BIGINT},
#{item.pushPersonIds,jdbcType=VARCHAR}, #{item.status,jdbcType=TINYINT}, #{item.pushPersonIds,jdbcType=VARCHAR}, #{item.status,jdbcType=TINYINT},
#{item.correctImage,jdbcType=VARCHAR}, #{item.correctImage,jdbcType=VARCHAR},
#{item.correctRemark,jdbcType=VARCHAR}, #{item.correctTime,jdbcType=VARCHAR}, #{item.correctRemark,jdbcType=VARCHAR}, #{item.correctTime,jdbcType=VARCHAR},
#{item.requestRectificationDate,jdbcType=VARCHAR}, #{item.requestRectificationDate,jdbcType=VARCHAR},
#{item.updateDate,jdbcType=TIMESTAMP}, #{item.handleResult,jdbcType=INTEGER}, #{item.updateDate,jdbcType=TIMESTAMP}, #{item.handleResult,jdbcType=INTEGER},
#{item.desc,jdbcType=LONGVARCHAR}, #{item.desc,jdbcType=LONGVARCHAR},
#{item.handleDone,jdbcType=INTEGER}) #{item.handleDone,jdbcType=INTEGER})
</foreach> </foreach>
</insert> </insert>
</mapper> </mapper>

View File

@ -1,6 +1,7 @@
package com.zhgd.xmgl.modules.video.service; package com.zhgd.xmgl.modules.video.service;
import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTypeCountVO;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -9,7 +10,7 @@ public interface IAiStatisticService {
Map<String,Object> selectAiDevCount(Map<String, Object> map); Map<String,Object> selectAiDevCount(Map<String, Object> map);
Map<String,Object> selectAiAnalyseHardWareAlarmTypeCount(Map<String, Object> map); AiAnalyseHardWareAlarmTypeCountVO selectAiAnalyseHardWareAlarmTypeCount(Map<String, Object> map);
List<Map<String, Object>> selectProjectAiAlarmCountList(Map<String, Object> map); List<Map<String, Object>> selectProjectAiAlarmCountList(Map<String, Object> map);

View File

@ -1,12 +1,14 @@
package com.zhgd.xmgl.modules.video.service.impl; package com.zhgd.xmgl.modules.video.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.basicdata.entity.Company; import com.zhgd.xmgl.modules.basicdata.entity.Company;
import com.zhgd.xmgl.modules.basicdata.service.ICompanyService; import com.zhgd.xmgl.modules.basicdata.service.ICompanyService;
import com.zhgd.xmgl.modules.basicdata.service.impl.DictionaryItemServiceImpl; import com.zhgd.xmgl.modules.basicdata.service.impl.DictionaryItemServiceImpl;
import com.zhgd.xmgl.modules.basicdata.service.impl.DictionaryServiceImpl; import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord;
import com.zhgd.xmgl.modules.video.entity.vo.AiAnalyseHardWareAlarmTypeCountVO;
import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareAlarmRecordMapper; import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareAlarmRecordMapper;
import com.zhgd.xmgl.modules.video.mapper.VideoItemMapper; import com.zhgd.xmgl.modules.video.mapper.VideoItemMapper;
import com.zhgd.xmgl.modules.video.service.IAiStatisticService; import com.zhgd.xmgl.modules.video.service.IAiStatisticService;
@ -16,9 +18,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/** /**
* @program: wisdomSite * @program: wisdomSite
@ -62,20 +67,25 @@ public class AiStatisticServiceImpl implements IAiStatisticService {
DictionaryItemServiceImpl dictionaryItemService; DictionaryItemServiceImpl dictionaryItemService;
@Override @Override
public Map<String, Object> selectAiAnalyseHardWareAlarmTypeCount(Map<String, Object> param) { public AiAnalyseHardWareAlarmTypeCountVO selectAiAnalyseHardWareAlarmTypeCount(Map<String, Object> param) {
Map<String, Object> data = new HashMap<>();
Map<String, Object> map = companyService.getCompanyType(param); Map<String, Object> map = companyService.getCompanyType(param);
//dictionaryService.queryList() List<AiAnalyseHardWareAlarmRecord> alarmList = aiAnalyseHardWareAlarmRecordMapper.selectAiAnalyseHardWareAlarmTypeCount(map);
List<Map<String, Object>> alarmList = aiAnalyseHardWareAlarmRecordMapper.selectAiAnalyseHardWareAlarmTypeCount(map); Map<String, List<AiAnalyseHardWareAlarmRecord>> dateMap = alarmList.stream().collect(Collectors.groupingBy(AiAnalyseHardWareAlarmRecord::getDate));
List<AiAnalyseHardWareAlarmRecord> todayList = dateMap.get(DateUtil.today());
List<AiAnalyseHardWareAlarmRecord> yesterdayList = dateMap.get(DateUtil.formatDate(DateUtil.offsetDay(new Date(), -1)));
Map<Integer, AiAnalyseHardWareAlarmRecord> todayMap = todayList.stream().collect(Collectors.toMap(AiAnalyseHardWareAlarmRecord::getAlarmType, Function.identity(), (aiAnalyseHardWareAlarmRecord, aiAnalyseHardWareAlarmRecord2) -> aiAnalyseHardWareAlarmRecord));
Map<Integer, AiAnalyseHardWareAlarmRecord> yesterdayMap = yesterdayList.stream().collect(Collectors.toMap(AiAnalyseHardWareAlarmRecord::getAlarmType, Function.identity(), (aiAnalyseHardWareAlarmRecord, aiAnalyseHardWareAlarmRecord2) -> aiAnalyseHardWareAlarmRecord));
Integer totalAlarmNum = 0; Integer totalAlarmNum = 0;
if (CollUtil.isNotEmpty(alarmList)) { if (CollUtil.isNotEmpty(alarmList)) {
for (Map<String, Object> dev : alarmList) { for (AiAnalyseHardWareAlarmRecord dev : alarmList) {
totalAlarmNum = totalAlarmNum + MapUtils.getInteger(dev, "alarmNum"); totalAlarmNum = totalAlarmNum + dev.getAlarmNum();
} }
} }
data.put("alarmList", alarmList); AiAnalyseHardWareAlarmTypeCountVO vo = new AiAnalyseHardWareAlarmTypeCountVO();
data.put("totalAlarmNum", totalAlarmNum); vo.setAlarmList(alarmList);
return data; vo.setTotalAlarmNum(totalAlarmNum);
return vo;
} }
@Override @Override