Commit 78944699 authored by 麻笑宇's avatar 麻笑宇

安全追溯大屏提交

parent aa6eccaf
package com.yeejoin.amos.boot.module.common.api.enums;
import lombok.Getter;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
@Getter
public enum IssueProblemLevelEnum {
LEVEL_ONE("一级","1"),
LEVEL_TWO("二级","2"),
LEVEL_THREE("三级","3"),
;
String name;
String code;
private IssueProblemLevelEnum(String name, String code) {
this.name = name;
this.code = code;
}
public static List<HashMap<String,String>> getEnumList() {
List<HashMap<String, String>> list = new ArrayList<>();
for (IssueProblemLevelEnum testEnum : EnumSet.allOf(IssueProblemLevelEnum.class)) {
HashMap<String, String> map = new HashMap<>();
map.put(testEnum.name,testEnum.code.toString());
list.add(map);
}
return list;
}
}
...@@ -19,4 +19,16 @@ public interface DPStatisticsMapper { ...@@ -19,4 +19,16 @@ public interface DPStatisticsMapper {
List<Map<String, Object>> getIssueCountByMonth(@Param("orgCode") String orgCode, @Param("year") String year, @Param("status") String status); List<Map<String, Object>> getIssueCountByMonth(@Param("orgCode") String orgCode, @Param("year") String year, @Param("status") String status);
List<Map<String, Object>> getIssueCountByDate(@Param("orgCode") String orgCode, @Param("year") String year, @Param("status") String status); List<Map<String, Object>> getIssueCountByDate(@Param("orgCode") String orgCode, @Param("year") String year, @Param("status") String status);
int countByOrgCode(@Param("orgCode") String orgCode, @Param("now") String now);
List<Map<String, String>> getOrgCodeAndCompanyCodesByCompanyCodes(@Param("regionCodes") List<Integer> regionCodes);
List<Map<String, Object>> countByOrgCodes(@Param("orgCodes") List<String> orgCodes, @Param("now") String now);
List<Map<String, Object>> issueMonthList(@Param("orgCode") String orgCode, @Param("time") String time);
List<Map<String, Object>> issueProblemLevelCount(@Param("orgCode") String orgCode, @Param("time") String time);
List<Map<String, Object>> issueCompanyTop(@Param("orgCode") String orgCode, @Param("time") String time);
} }
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
tzs_safety_problem_tracing tzs_safety_problem_tracing
WHERE WHERE
governing_body_org_code LIKE concat ( #{orgCode}, '%' ) governing_body_org_code LIKE concat ( #{orgCode}, '%' )
AND create_date &gt;= #{startDate} AND problem_time &gt;= #{startDate}
AND source_type IN AND source_type IN
<foreach collection="mainBodyNameList" item="item" separator="," open="(" close=")"> <foreach collection="mainBodyNameList" item="item" separator="," open="(" close=")">
#{item} #{item}
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
tzs_safety_problem_tracing tzs_safety_problem_tracing
WHERE WHERE
governing_body_org_code LIKE concat ( #{orgCode}, '%' ) governing_body_org_code LIKE concat ( #{orgCode}, '%' )
AND create_date &gt;= #{startDate} AND problem_time &gt;= #{startDate}
AND source_type = #{sourceType} AND source_type = #{sourceType}
AND problem_type IN AND problem_type IN
<foreach collection="enumNameList" item="item" separator="," open="(" close=")"> <foreach collection="enumNameList" item="item" separator="," open="(" close=")">
...@@ -46,35 +46,109 @@ ...@@ -46,35 +46,109 @@
<select id="getIssueCountByMonth" resultType="java.util.Map"> <select id="getIssueCountByMonth" resultType="java.util.Map">
SELECT COUNT SELECT COUNT
( 1 ), ( 1 ),
DATE_FORMAT(create_date,'%Y-%m') AS time DATE_FORMAT(problem_time,'%Y-%m') AS time
FROM FROM
tzs_safety_problem_tracing tzs_safety_problem_tracing
WHERE WHERE
governing_body_org_code LIKE concat ( #{orgCode}, '%' ) governing_body_org_code LIKE concat ( #{orgCode}, '%' )
AND DATE_FORMAT(create_date,'%Y') = #{year} AND DATE_FORMAT(problem_time,'%Y') = #{year}
<if test="null != status"> <if test="null != status">
AND problem_status_code = #{status} AND problem_status_code = #{status}
</if> </if>
GROUP BY GROUP BY
DATE_FORMAT(create_date,'%Y-%m') DATE_FORMAT(problem_time,'%Y-%m')
</select> </select>
<select id="getIssueCountByDate" resultType="java.util.Map"> <select id="getIssueCountByDate" resultType="java.util.Map">
SELECT COUNT SELECT COUNT
( 1 ), ( 1 ),
DATE_FORMAT(create_date,'%Y-%m-%d') AS time DATE_FORMAT(problem_time,'%Y-%m-%d') AS time
FROM FROM
tzs_safety_problem_tracing tzs_safety_problem_tracing
WHERE WHERE
governing_body_org_code LIKE concat ( #{orgCode}, '%' ) governing_body_org_code LIKE concat ( #{orgCode}, '%' )
AND DATE_FORMAT(create_date,'%Y-%m-%d') &gt;= #{year} AND DATE_FORMAT(problem_time,'%Y-%m-%d') &gt;= #{year}
<if test="null != status"> <if test="null != status">
AND problem_status_code = #{status} AND problem_status_code = #{status}
</if> </if>
GROUP BY GROUP BY
DATE_FORMAT(create_date,'%Y-%m-%d') DATE_FORMAT(problem_time,'%Y-%m-%d')
</select>
<select id="countByOrgCode" resultType="java.lang.Integer">
SELECT COUNT
( 1 )
FROM
tzs_safety_problem_tracing
WHERE
governing_body_org_code LIKE concat ( #{orgCode}, '%' )
AND DATE_FORMAT(problem_time,'%Y-%m') &gt;= #{now}
</select>
<select id="getOrgCodeAndCompanyCodesByCompanyCodes" resultType="java.util.Map">
select org_code AS orgCode,company_code AS companyCode from privilege_company where company_code in
<foreach collection="regionCodes" item="regionCode" separator="," open="(" close=")">
#{regionCode} :: VARCHAR
</foreach>
</select>
<select id="countByOrgCodes" resultType="java.util.Map">
SELECT COUNT
( 1 ),
governing_body_org_code AS orgCode
FROM
tzs_safety_problem_tracing
WHERE
DATE_FORMAT(problem_time,'%Y-%m') &gt;= #{now}
AND
<foreach collection="orgCodes" item="orgCode" separator="OR" open="(" close=")">
governing_body_org_code LIKE concat ( #{orgCode}, '%' )
</foreach>
GROUP BY
governing_body_org_code
</select>
<select id="issueMonthList" resultType="java.util.Map">
SELECT
sequence_nbr AS sequenceNbr,
source_type AS sourceType,
problem_type AS problemType,
problem_time AS problemTime
FROM
tzs_safety_problem_tracing
WHERE
governing_body_org_code LIKE concat ( #{orgCode}, '%' )
AND DATE_FORMAT ( problem_time, '%Y-%m' ) = #{time}
</select>
<select id="issueProblemLevelCount" resultType="java.util.Map">
SELECT
COUNT
( 1 ),
problem_level AS problemLevel
FROM
tzs_safety_problem_tracing
WHERE
governing_body_org_code LIKE concat ( #{orgCode}, '%' )
AND DATE_FORMAT(problem_time,'%Y') = #{time}
AND problem_level IS NOT NULL
GROUP BY
problem_level
ORDER BY
problem_level_code
</select>
<select id="issueCompanyTop" resultType="java.util.Map">
SELECT COUNT
( 1 ),
principal_unit AS principalUnit,
governing_body AS governingBody
FROM
tzs_safety_problem_tracing
WHERE
governing_body_org_code LIKE concat ( #{orgCode}, '%' )
AND DATE_FORMAT ( problem_time, '%Y' ) = #{time}
AND problem_level IS NOT NULL
GROUP BY
principal_unit_code
ORDER BY
COUNT DESC
LIMIT 10
</select> </select>
</mapper> </mapper>
...@@ -158,4 +158,64 @@ public class CylinderStatisticsController { ...@@ -158,4 +158,64 @@ public class CylinderStatisticsController {
Map<String, Object> result = service.issueCountByDay(regionCode.toString()); Map<String, Object> result = service.issueCountByDay(regionCode.toString());
return ResponseHelper.buildResponse(result); return ResponseHelper.buildResponse(result);
}; };
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "当前区域数据统计")
@PostMapping(value = "/issueCountByCityCode")
public ResponseModel<Map<String, Object>> issueCountByCityCode(@RequestBody Map<String, Object> map ) throws Exception {
Object regionCode = map.get("cityCode");
if (ObjectUtils.isEmpty(regionCode)) {
regionCode = "610000";
}
Map<String, Object> result = service.issueCountByCityCode(regionCode.toString());
return ResponseHelper.buildResponse(result);
};
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "当前区域子区域数据统计")
@PostMapping(value = "/issueChildrenCityCount")
public ResponseModel<List<Map<String, Object>>> issueChildrenCityCount(@RequestBody Map<String, Object> map ) throws Exception {
Object regionCode = map.get("cityCode");
if (ObjectUtils.isEmpty(regionCode)) {
regionCode = "610000";
}
List<Map<String, Object>> result = service.issueChildrenCityCount(regionCode.toString());
return ResponseHelper.buildResponse(result);
};
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "当月问题列表(主体类型、问题类型、问题时间、操作)")
@PostMapping(value = "/issueMonthList")
public ResponseModel<List<Map<String, Object>>> issueMonthList(@RequestBody Map<String, Object> map ) throws Exception {
Object regionCode = map.get("cityCode");
if (ObjectUtils.isEmpty(regionCode)) {
regionCode = "610000";
}
List<Map<String, Object>> result = service.issueMonthList(regionCode.toString());
return ResponseHelper.buildResponse(result);
};
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "当年问题等级分类统计")
@PostMapping(value = "/issueProblemLevelCount")
public ResponseModel<Map<String, Object>> issueProblemLevelCount(@RequestBody Map<String, Object> map ) throws Exception {
Object regionCode = map.get("cityCode");
if (ObjectUtils.isEmpty(regionCode)) {
regionCode = "610000";
}
Map<String, Object> result = service.issueProblemLevelCount(regionCode.toString());
return ResponseHelper.buildResponse(result);
};
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "按问题类型排名top 10")
@PostMapping(value = "/issueCompanyTop")
public ResponseModel<List<Map<String, Object>>> issueCompanyTop(@RequestBody Map<String, Object> map ) throws Exception {
Object regionCode = map.get("cityCode");
if (ObjectUtils.isEmpty(regionCode)) {
regionCode = "610000";
}
List<Map<String, Object>> result = service.issueCompanyTop(regionCode.toString());
return ResponseHelper.buildResponse(result);
};
} }
...@@ -23,6 +23,7 @@ import com.yeejoin.amos.feign.privilege.model.CompanyModel; ...@@ -23,6 +23,7 @@ import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.systemctl.Systemctl; import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.RegionModel; import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import joptsimple.internal.Strings; import joptsimple.internal.Strings;
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RequestOptions;
...@@ -50,6 +51,7 @@ import java.time.LocalDate; ...@@ -50,6 +51,7 @@ import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -834,7 +836,7 @@ public class CylinderAreaDataServiceImpl extends BaseService<CylinderAreaDataDto ...@@ -834,7 +836,7 @@ public class CylinderAreaDataServiceImpl extends BaseService<CylinderAreaDataDto
list1.add(mainBodyNameList.get(i)); list1.add(mainBodyNameList.get(i));
List<Map<String, Object>> maps = statisticsMapper.selectByOrgAndMainBody(orgCode, list1, startDate, "1"); List<Map<String, Object>> maps = statisticsMapper.selectByOrgAndMainBody(orgCode, list1, startDate, "1");
if(maps.size() > 0){ if(maps.size() > 0){
problemRate.add(new DecimalFormat("0.00").format(Double.parseDouble(dataMap.get(mainBodyNameList.get(i)).toString()) / Double.parseDouble(maps.get(0).get("count").toString()))); problemRate.add(new DecimalFormat("0.00").format( Double.parseDouble(maps.get(0).get("count").toString()) / Double.parseDouble(dataMap.get(mainBodyNameList.get(i)).toString())));
}else{ }else{
problemRate.add("0"); problemRate.add("0");
} }
...@@ -985,9 +987,9 @@ public class CylinderAreaDataServiceImpl extends BaseService<CylinderAreaDataDto ...@@ -985,9 +987,9 @@ public class CylinderAreaDataServiceImpl extends BaseService<CylinderAreaDataDto
List<Object> problemCount = new ArrayList<>(); List<Object> problemCount = new ArrayList<>();
List<Object> processedRate = new ArrayList<>(); List<Object> processedRate = new ArrayList<>();
List<Object> xdata = new ArrayList<>(); List<Object> xdata = new ArrayList<>();
for(int i = 1; i <= 12; i++){ for(int i = 0; i < 12; i++){
xdata.add(i+"月");
String time = LocalDate.now().minusMonths(i).format(DateTimeFormatter.ofPattern("yyyy-MM")); String time = LocalDate.now().minusMonths(i).format(DateTimeFormatter.ofPattern("yyyy-MM"));
xdata.add(time);
if(allIssueMap.get(time) == null){ if(allIssueMap.get(time) == null){
problemCount.add("0"); problemCount.add("0");
processedRate.add("0"); processedRate.add("0");
...@@ -1000,6 +1002,7 @@ public class CylinderAreaDataServiceImpl extends BaseService<CylinderAreaDataDto ...@@ -1000,6 +1002,7 @@ public class CylinderAreaDataServiceImpl extends BaseService<CylinderAreaDataDto
} }
} }
} }
Collections.reverse(xdata);
Collections.reverse(problemCount); Collections.reverse(problemCount);
Collections.reverse(processedRate); Collections.reverse(processedRate);
resultMap.put("xdata",xdata); resultMap.put("xdata",xdata);
...@@ -1039,8 +1042,8 @@ public class CylinderAreaDataServiceImpl extends BaseService<CylinderAreaDataDto ...@@ -1039,8 +1042,8 @@ public class CylinderAreaDataServiceImpl extends BaseService<CylinderAreaDataDto
List<Object> processedRate = new ArrayList<>(); List<Object> processedRate = new ArrayList<>();
List<Object> xdata = new ArrayList<>(); List<Object> xdata = new ArrayList<>();
for(int i = 0; i < 29; i++){ for(int i = 0; i < 29; i++){
xdata.add(LocalDate.now().minusDays(i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); String time = LocalDate.now().minusDays(i).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
String time = LocalDate.now().minusMonths(i).format(DateTimeFormatter.ofPattern("yyyy-MM")); xdata.add(time);
if(allIssueMap.get(time) == null){ if(allIssueMap.get(time) == null){
problemCount.add("0"); problemCount.add("0");
processedRate.add("0"); processedRate.add("0");
...@@ -1061,4 +1064,91 @@ public class CylinderAreaDataServiceImpl extends BaseService<CylinderAreaDataDto ...@@ -1061,4 +1064,91 @@ public class CylinderAreaDataServiceImpl extends BaseService<CylinderAreaDataDto
resultMap.put("processedRate",processedRate); resultMap.put("processedRate",processedRate);
return resultMap; return resultMap;
} }
public Map<String, Object> issueCountByCityCode(String cityCode) {
String orgCode = getAndSetOrgCode(cityCode);
String now = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"));
int count = statisticsMapper.countByOrgCode(orgCode,now);
Map<String,Object> resultMap = new HashMap<>();
resultMap.put("issueCount",count);
return resultMap;
}
public List<Map<String, Object>> issueChildrenCityCount(String cityCode) throws Exception {
List<RegionModel> regionModels = setRegionIfRootParent(cityCode);
List<Integer> regionCodeList = regionModels.stream().map(m -> m.getRegionCode()).collect(Collectors.toList());
List<Map<String, String>> orgCodeAndCompanyCodesByCompanyCodes = statisticsMapper.getOrgCodeAndCompanyCodesByCompanyCodes(regionCodeList);
List<String> orgCodes = orgCodeAndCompanyCodesByCompanyCodes.stream().map(m -> m.get("orgCode")).collect(Collectors.toList());
String now = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"));
Map<String,String> orgCodeAndCompanyCodesMap = new HashMap<>();
orgCodeAndCompanyCodesByCompanyCodes.stream().forEach(t->{
orgCodeAndCompanyCodesMap.put(t.get("companyCode"),t.get("orgCode"));
});
List<Map<String, Object>> list = statisticsMapper.countByOrgCodes(orgCodes,now);
Map<String,Object> dataMap = new HashMap<>();
list.stream().forEach(t->{
dataMap.put(t.get("orgCode").toString(),t.get("count"));
});
List<Map<String,Object>> resultList = new ArrayList<>();
for(RegionModel regionModel : regionModels){
Map<String,Object> map = new HashMap<>();
AtomicInteger count = new AtomicInteger();
map.put("regionCode",regionModel.getRegionCode());
map.put("regionName",regionModel.getRegionName());
if(StringUtils.isNotBlank(orgCodeAndCompanyCodesMap.get(regionModel.getRegionCode()+""))){
dataMap.forEach((k, v)->{
if(k.startsWith(orgCodeAndCompanyCodesMap.get(regionModel.getRegionCode()+""))){
if(null != v){
count.addAndGet(Integer.valueOf(v+""));
}
}
});
}
map.put("issueCount",count);
resultList.add(map);
}
return resultList;
}
public List<Map<String, Object>> issueMonthList(String cityCode) {
String orgCode = getAndSetOrgCode(cityCode);
String time = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"));
List<Map<String,Object>> list = statisticsMapper.issueMonthList(orgCode,time);
return list;
}
public Map<String, Object> issueProblemLevelCount(String cityCode) {
Map<String,Object> resultMap = new HashMap<>();
String orgCode = getAndSetOrgCode(cityCode);
String time = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy"));
List<Map<String,Object>> list = statisticsMapper.issueProblemLevelCount(orgCode,time);
List<Object> xdata = new ArrayList<>();
List<Object> ydata = new ArrayList<>();
for(int i = 0; i < list.size(); i++){
xdata.add(list.get(i).get("problemLevel"));
ydata.add(list.get(i).get("count"));
}
resultMap.put("xdata",xdata);
resultMap.put("ydata",ydata);
return resultMap;
}
public List<Map<String, Object>> issueCompanyTop(String cityCode) {
List<Map<String,Object>> resultList = new ArrayList<>();
String orgCode = getAndSetOrgCode(cityCode);
String time = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy"));
List<Map<String,Object>> list = statisticsMapper.issueCompanyTop(orgCode,time);
for(int i = 0; i < list.size(); i++){
Map<String,Object> map = new HashMap<>();
map.put("sequenceNbr",(i+1)+"");
map.put("region",list.get(i).get("governingBody"));
map.put("company",list.get(i).get("principalUnit"));
map.put("count",list.get(i).get("count"));
resultList.add(map);
}
return resultList;
}
} }
\ No newline at end of file
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