Commit 0218475f authored by 麻笑宇's avatar 麻笑宇

应急处置/维保单位平均救援时间排名

代码提交
parent f6d1f2db
...@@ -377,13 +377,19 @@ ...@@ -377,13 +377,19 @@
</select> </select>
<select id="getInspectDetailList" resultType="java.util.Map"> <select id="getInspectDetailList" resultType="java.util.Map">
SELECT SELECT
a.sequence_nbr as sequenceNbr,application_unit_name as unitName,inspection_unit_name as receiveOrgName,application_date as createDate,accept_date as handleDate A.sequence_nbr AS sequenceNbr,
A.application_unit_name AS unitName,
A.inspection_unit_name AS receiveOrgName,
A.application_date AS createDate,
A.accept_date AS handleDate,
d.NAME AS inspectionConclusionName
FROM FROM
"tz_jyjc_inspection_application" a, "tz_jyjc_inspection_application"
tz_base_enterprise_info b A LEFT JOIN tz_base_enterprise_info b ON A.inspection_unit_code = b.use_unit_code
LEFT JOIN tz_jyjc_inspection_result ir ON A.application_no = ir.application_no
LEFT JOIN cb_data_dictionary d ON ir.inspection_conclusion = d.code
where where
a.inspection_unit_code= b.use_unit_code ((b.supervise_org_code != '50' and b.supervise_org_code LIKE CONCAT (#{orgCode}, '%')) or (b.supervise_org_code = '50' and b.office_region LIKE CONCAT ('%', #{dto.cityCode}, '%')))
and ((b.supervise_org_code != '50' and b.supervise_org_code LIKE CONCAT (#{orgCode}, '%')) or (b.supervise_org_code = '50' and b.office_region LIKE CONCAT ('%', #{dto.cityCode}, '%')))
and a.status = '6616' and a.status = '6616'
<if test="dto.beginDate != null and dto.beginDate != ''"> <if test="dto.beginDate != null and dto.beginDate != ''">
and date_ge(CAST(a.accept_date as date),#{dto.beginDate}) and date_ge(CAST(a.accept_date as date),#{dto.beginDate})
...@@ -495,7 +501,7 @@ ...@@ -495,7 +501,7 @@
a.application_date as createDate, a.application_date as createDate,
a.accept_date as handleDate, a.accept_date as handleDate,
ir.inspection_conclusion as inspectionConclusion, ir.inspection_conclusion as inspectionConclusion,
d.inspection_conclusion_name as inspectionConclusionName d.name as inspectionConclusionName
FROM FROM
"tz_jyjc_inspection_application" a "tz_jyjc_inspection_application" a
inner join tz_base_enterprise_info b on a.inspection_unit_code = b.use_unit_code inner join tz_base_enterprise_info b on a.inspection_unit_code = b.use_unit_code
...@@ -513,11 +519,13 @@ ...@@ -513,11 +519,13 @@
<if test="dpFilterParamForDetailDto.inspectionUnitName != null and dpFilterParamForDetailDto.inspectionUnitName != ''"> <if test="dpFilterParamForDetailDto.inspectionUnitName != null and dpFilterParamForDetailDto.inspectionUnitName != ''">
and a.inspection_unit_name like CONCAT('%',#{dpFilterParamForDetailDto.inspectionUnitName},'%') and a.inspection_unit_name like CONCAT('%',#{dpFilterParamForDetailDto.inspectionUnitName},'%')
</if> </if>
<if test="dpFilterParamForDetailDto.timeSearchOne.beginDate != null and dpFilterParamForDetailDto.timeSearchOne.beginDate != ''"> <if test="dpFilterParamForDetailDto.timeSearchOne != null and dpFilterParamForDetailDto.timeSearchOne != ''">
and date_ge(CAST(a.application_date as date),#{dpFilterParamForDetailDto.timeSearchOne.beginDate}) <if test="dpFilterParamForDetailDto.timeSearchOne.beginDate != null and dpFilterParamForDetailDto.timeSearchOne.beginDate != ''">
</if> and date_ge(CAST(a.application_date as date),#{dpFilterParamForDetailDto.timeSearchOne.beginDate})
<if test="dpFilterParamForDetailDto.timeSearchOne.endDate != null and dpFilterParamForDetailDto.timeSearchOne.endDate != ''"> </if>
and date_le(CAST(a.application_date as date),#{dpFilterParamForDetailDto.timeSearchOne.endDate}) <if test="dpFilterParamForDetailDto.timeSearchOne.endDate != null and dpFilterParamForDetailDto.timeSearchOne.endDate != ''">
and date_le(CAST(a.application_date as date),#{dpFilterParamForDetailDto.timeSearchOne.endDate})
</if>
</if> </if>
<if test="dpFilterParamForDetailDto.businessType != null and dpFilterParamForDetailDto.businessType != '' and dpFilterParamForDetailDto.businessType != '0' "> <if test="dpFilterParamForDetailDto.businessType != null and dpFilterParamForDetailDto.businessType != '' and dpFilterParamForDetailDto.businessType != '0' ">
and a.inspection_type = #{dpFilterParamForDetailDto.businessType} and a.inspection_type = #{dpFilterParamForDetailDto.businessType}
......
...@@ -170,6 +170,42 @@ public class YJDPStatisticsController { ...@@ -170,6 +170,42 @@ public class YJDPStatisticsController {
} }
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "大屏-应急-维保单位平均救援时间排名下钻列表", notes = "大屏-应急-维保单位平均救援时间排名下钻列表")
@PostMapping(value = "/rankUnitByRescueTimePage")
public ResponseModel<Page<Map<String, Object>>> rankUnitByRescueTimePage(@Validated @RequestBody DPFilterParamForDetailDto dpFilterParamForDetailDto, BindingResult result,
@RequestParam(value = "current", defaultValue = "1") Integer current,
@RequestParam(value = "size", defaultValue = "20") Integer size) {
List<FieldError> fieldErrors = result.getFieldErrors();
if (!fieldErrors.isEmpty()) {
throw new BadRequest(fieldErrors.get(0).getDefaultMessage());
}
Page<Map<String, Object>> page = new Page<>(current,size);
return ResponseHelper.buildResponse(statisticsService.rankUnitByRescueTimePage(page,dpFilterParamForDetailDto));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "大屏-应急-维保单位平均救援时间排名下钻图表", notes = "大屏-应急-维保单位平均救援时间排名下钻图表")
@PostMapping(value = "/rankUnitByRescueTimeDetail")
public ResponseModel<Map<String, Object>> rankUnitByRescueTimeDetail(@Validated @RequestBody DPFilterParamForDetailDto dpFilterParamForDetailDto, BindingResult result) {
List<FieldError> fieldErrors = result.getFieldErrors();
if (!fieldErrors.isEmpty()) {
throw new BadRequest(fieldErrors.get(0).getDefaultMessage());
}
return ResponseHelper.buildResponse(statisticsService.rankUnitByRescueTimeDetail(dpFilterParamForDetailDto));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "大屏-应急-维保单位平均救援时间排名下钻类型", notes = "大屏-应急-维保单位平均救援时间排名下钻类型")
@PostMapping(value = "/rankUnitByRescueTimeType")
public ResponseModel<List<Map<String, Object>>> rankUnitByRescueTimeType(@Validated @RequestBody DPFilterParamForDetailDto dpFilterParamForDetailDto, BindingResult result) {
List<FieldError> fieldErrors = result.getFieldErrors();
if (!fieldErrors.isEmpty()) {
throw new BadRequest(fieldErrors.get(0).getDefaultMessage());
}
return ResponseHelper.buildResponse(statisticsService.rankUnitByRescueTimeType(dpFilterParamForDetailDto));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "大屏-应急-各地市应急事件总数排名", notes = "大屏-应急-各地市应急事件总数排名") @ApiOperation(httpMethod = "POST", value = "大屏-应急-各地市应急事件总数排名", notes = "大屏-应急-各地市应急事件总数排名")
@PostMapping(value = "/regionEventRank") @PostMapping(value = "/regionEventRank")
public ResponseModel<JSONObject> regionEventRank(@Validated @RequestBody DPFilterParamDto dpFilterParamDto, BindingResult result) { public ResponseModel<JSONObject> regionEventRank(@Validated @RequestBody DPFilterParamDto dpFilterParamDto, BindingResult result) {
......
...@@ -17,6 +17,7 @@ import com.yeejoin.amos.boot.module.common.api.entity.AlertRescueStatistics; ...@@ -17,6 +17,7 @@ import com.yeejoin.amos.boot.module.common.api.entity.AlertRescueStatistics;
import com.yeejoin.amos.boot.module.common.api.entity.AlertUseUnitStatistics; import com.yeejoin.amos.boot.module.common.api.entity.AlertUseUnitStatistics;
import com.yeejoin.amos.boot.module.common.api.enums.AlertCallEnum; import com.yeejoin.amos.boot.module.common.api.enums.AlertCallEnum;
import com.yeejoin.amos.boot.module.common.api.enums.BusinessTypeEnum; import com.yeejoin.amos.boot.module.common.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jyjc.api.enums.JYJCTypeEnum;
import com.yeejoin.amos.boot.module.statistics.api.dto.AlertUseUnitStatisticsDto; import com.yeejoin.amos.boot.module.statistics.api.dto.AlertUseUnitStatisticsDto;
import com.yeejoin.amos.boot.module.statistics.api.mapper.AlertRescueStatisticsMapper; import com.yeejoin.amos.boot.module.statistics.api.mapper.AlertRescueStatisticsMapper;
import com.yeejoin.amos.boot.module.statistics.api.mapper.AlertStatisticsMapper; import com.yeejoin.amos.boot.module.statistics.api.mapper.AlertStatisticsMapper;
...@@ -43,6 +44,7 @@ import org.elasticsearch.search.aggregations.AggregationBuilders; ...@@ -43,6 +44,7 @@ import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder; import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.foundation.utils.Bean; import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.DateTimeUtil; import org.typroject.tyboot.core.foundation.utils.DateTimeUtil;
...@@ -306,6 +308,77 @@ public class YJDPStatisticsServiceImpl { ...@@ -306,6 +308,77 @@ public class YJDPStatisticsServiceImpl {
return maps; return maps;
} }
public Page<Map<String, Object>> rankUnitByRescueTimePage(Page<Map<String, Object>> page, DPFilterParamForDetailDto dpFilterParamForDetailDto) {
String orgCode = stCommonService.getAndSetOrgCode(dpFilterParamForDetailDto.getCityCode());
if (orgCode == null) {
return page;
}else {
dpFilterParamForDetailDto.setOrgCode(orgCode);
}
Page<Map<String, Object>> pageList = dispatchTaskMapper.rankUnitByRescueTimePage(page,dpFilterParamForDetailDto);
return pageList;
}
public Map<String, Object> rankUnitByRescueTimeDetail(DPFilterParamForDetailDto dpFilterParamForDetailDto) {
List<RegionModel> regionModels = stCommonService.setRegionIfRootParent(dpFilterParamForDetailDto.getCityCode());
List<Map<String,Object>> result = regionModels.parallelStream().map(r -> {
String orgCode = stCommonService.getAndSetOrgCode(dpFilterParamForDetailDto.getCityCode());
Map<String, Object> itemResult = dispatchTaskMapper.rankUnitByRescueTimeDetail(orgCode);
itemResult.put("xdata",r.getRegionName());
return itemResult;
}).collect(Collectors.toList());
Map<String,Object> returnMap = new HashMap<>();
List<Map<String,Object>> legendData = new ArrayList<>();
for(int i = 0;i<2; i++){
Map<String,Object> map = new HashMap<>();
if(i == 0){
map.put("dataKey","count");
map.put("value","应急时间");
map.put("chartType","bar");
}else{
map.put("dataKey","avgTime");
map.put("value","平均救援时间");
map.put("chartType","line");
}
legendData.add(map);
}
returnMap.put("legendData",legendData);
List xdata = new ArrayList();
List count = new ArrayList();
List avgTime = new ArrayList();
for(int i = 0;i<result.size();i++){
xdata.add(result.get(i).get("xdata"));
count.add(result.get(i).get("count") == null ? 0 : result.get(i).get("count"));
avgTime.add(result.get(i).get("avgTime") == null ? 0 : result.get(i).get("avgTime"));
}
returnMap.put("xdata",xdata);
returnMap.put("count",count);
returnMap.put("avgTime",avgTime);
return returnMap;
}
public List<Map<String, Object>> rankUnitByRescueTimeType(DPFilterParamForDetailDto dpFilterParamForDetailDto) {
List<Map<String,Object>> result = new ArrayList<>();
List<HashMap<String, Object>> list = new ArrayList<>();
HashMap<String, Object> map = new HashMap<>();
map.put("title", "维保单位");
map.put("value", "repairUnit");
list.add(map);
Map<String,Object> resultMap = new HashMap<>();
resultMap.put("title","企业类型");
resultMap.put("value","0");
resultMap.put("children",list);
result.add(resultMap);
return result;
}
public JSONObject regionEventRank(DPFilterParamDto dpFilterParamDto) { public JSONObject regionEventRank(DPFilterParamDto dpFilterParamDto) {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
String orgCodeParent = stCommonService.getAndSetOrgCode(dpFilterParamDto.getCityCode()); String orgCodeParent = stCommonService.getAndSetOrgCode(dpFilterParamDto.getCityCode());
......
package com.yeejoin.amos.boot.module.ymt.api.mapper; package com.yeejoin.amos.boot.module.ymt.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamForDetailDto;
import com.yeejoin.amos.boot.module.ymt.api.dto.MainPersonDto; import com.yeejoin.amos.boot.module.ymt.api.dto.MainPersonDto;
import com.yeejoin.amos.boot.module.ymt.api.dto.WechatMyTaskDto; import com.yeejoin.amos.boot.module.ymt.api.dto.WechatMyTaskDto;
import com.yeejoin.amos.boot.module.ymt.api.dto.WechatMyTaskListDto; import com.yeejoin.amos.boot.module.ymt.api.dto.WechatMyTaskListDto;
...@@ -27,4 +29,8 @@ public interface DispatchTaskMapper extends BaseMapper<DispatchTask> { ...@@ -27,4 +29,8 @@ public interface DispatchTaskMapper extends BaseMapper<DispatchTask> {
List<MainPersonDto> todayTaskPerson(); List<MainPersonDto> todayTaskPerson();
List<Map<String, Object>> rankUnitByRescueTime(@Param("regionCode") String regionCode); List<Map<String, Object>> rankUnitByRescueTime(@Param("regionCode") String regionCode);
Page<Map<String, Object>> rankUnitByRescueTimePage(@Param("page") Page<Map<String, Object>> page, @Param("dpFilterParamForDetailDto") DPFilterParamForDetailDto dpFilterParamForDetailDto);
Map<String, Object> rankUnitByRescueTimeDetail(@Param("orgCode") String orgCode);
} }
...@@ -126,5 +126,82 @@ ...@@ -126,5 +126,82 @@
ORDER BY ORDER BY
avgTime avgTime
</select> </select>
<select id="rankUnitByRescueTimePage" resultType="java.util.Map">
SELECT
tac.city,
tdt.sequence_nbr AS sequenceNbr,
tdt.response_org_name AS maintUnit,
AVG ( TIMESTAMPDIFF ( SECOND, tdt.arrive_time, tdt.save_time ) ) AS avgTime,
COALESCE(u."userCount",0) as userCount,
COALESCE(e."equipCount",0) as equipCount,
l.expiry_date
FROM
tz_dispatch_task tdt
LEFT JOIN tz_alert_called tac ON tdt.alert_id = tac.sequence_nbr
LEFT JOIN tz_base_enterprise_info tbei ON tdt.response_org_id = tbei.sequence_nbr
LEFT JOIN (SELECT * FROM tz_base_unit_licence
GROUP BY unit_code
ORDER BY expiry_date DESC) AS l ON l.unit_code = tbei.use_unit_code
LEFT JOIN (
SELECT
tbei.use_unit_code AS useNnitCode,
COUNT ( 1 ) AS userCount
FROM
tz_base_enterprise_info tbei
INNER JOIN tzs_user_info ui ON tbei.use_unit_code = ui.unit_code
GROUP BY
tbei.use_unit_code
) u ON u."useNnitCode" = tbei.use_unit_code
LEFT JOIN (
SELECT
tbei.use_unit_code AS useNnitCode,
COUNT ( 1 ) AS equipCount
FROM
tz_base_enterprise_info tbei
INNER JOIN idx_biz_jg_use_info jui ON tbei.use_unit_code = jui.USE_UNIT_CREDIT_CODE
LEFT JOIN idx_biz_jg_other_info joi ON joi.RECORD = jui.RECORD
AND joi.SUPERVISORY_CODE IS NOT NULL
AND joi.SUPERVISORY_CODE != ''
AND joi.SUPERVISORY_CODE != 'null'
GROUP BY
tbei.use_unit_code
) e ON e."useNnitCode" = tbei.use_unit_code
WHERE
tac.alarm_type_code = '960'
AND tdt.org_type_code = 'repairUnit'
AND tac.biz_org_code LIKE concat(#{dpFilterParamForDetailDto.orgCode}, '%')
AND tdt.arrive_time IS NOT NULL
AND tdt.save_time IS NOT NULL
<if test="dpFilterParamForDetailDto.companyName != null and dpFilterParamForDetailDto.companyName != '' ">
AND tbei.use_unit LIKE concat ( '%', #{dpFilterParamForDetailDto.companyName}, '%' )
</if>
<if test="dpFilterParamForDetailDto.timeSearchOne != null">
<if test="dpFilterParamForDetailDto.timeSearchOne.beginDate != null and dpFilterParamForDetailDto.timeSearchOne.beginDate != ''">
and date_ge(CAST(tdt.rec_date as date),#{dpFilterParamForDetailDto.timeSearchOne.beginDate})
</if>
<if test="dpFilterParamForDetailDto.timeSearchOne.endDate != null and dpFilterParamForDetailDto.timeSearchOne.endDate != ''">
and date_le(CAST(tdt.rec_date as date),#{dpFilterParamForDetailDto.timeSearchOne.endDate})
</if>
</if>
GROUP BY
tdt.response_org_id
ORDER BY
avgTime
</select>
<select id="rankUnitByRescueTimeDetail" resultType="java.util.Map">
SELECT AVG
( TIMESTAMPDIFF ( SECOND, tdt.arrive_time, tdt.save_time ) ) AS avgTime,
COUNT ( 1 ) AS COUNT
FROM
tz_dispatch_task tdt
LEFT JOIN tz_alert_called tac ON tdt.alert_id = tac.sequence_nbr
LEFT JOIN tz_base_enterprise_info tbei ON tdt.response_org_id = tbei.sequence_nbr
WHERE
tac.alarm_type_code = '960'
AND tdt.org_type_code = 'repairUnit'
AND tac.biz_org_code LIKE concat ( #{orgCode}, '%' )
AND tdt.arrive_time IS NOT NULL
AND tdt.save_time IS NOT NULL
</select>
</mapper> </mapper>
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