Commit d957a4a2 authored by suhuiguang's avatar suhuiguang

Merge branch 'develop_tzs_register_to_0715' of…

Merge branch 'develop_tzs_register_to_0715' of http://36.40.66.175:5000/moa/amos-boot-biz into develop_tzs_register_to_0715
parents 9b9dc441 7a6b3a56
......@@ -81,6 +81,12 @@ public interface JyjcInspectionApplicationMapper extends BaseMapper<JyjcInspecti
* @return CountDto
*/
CountDto queryAppByEquListForReporting(@Param("orgCode") String orgCode, @Param("dto") DPFilterParamDto dpFilterParamDto);
Long queryAllFlowingAndFinishedCount(@Param("orgCode") String orgCode, @Param("dpFilterParamDto") DPFilterParamDto dpFilterParamDto);
Long queryAllPendingAndFinishedCount(@Param("orgCode") String orgCode, @Param("dpFilterParamDto") DPFilterParamDto dpFilterParamDto);
Long queryAllFinishedCount(@Param("orgCode") String orgCode, @Param("dpFilterParamDto") DPFilterParamDto dpFilterParamDto);
}
......@@ -296,4 +296,43 @@
and date_le(CAST(a.application_date as date),#{dto.endDate})
</if>
</select>
<select id="queryAllFlowingAndFinishedCount" resultType="java.lang.Long">
SELECT
count(1)
FROM
"tz_jyjc_inspection_application" a,
tz_base_enterprise_info b
where
a.inspection_unit_code= b.use_unit_code
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 ('%', #{dpFilterParamDto.cityCode}, '%')))
and a.status != '6610' and a.status != '6615'
and date_ge(CAST(a.application_date as date),#{dpFilterParamDto.beginDate})
and date_le(CAST(a.application_date as date),#{dpFilterParamDto.endDate})
</select>
<select id="queryAllPendingAndFinishedCount" resultType="java.lang.Long">
SELECT
count(1)
FROM
tz_jyjc_inspection_application a,
tz_base_enterprise_info b
where
a.inspection_unit_code= b.use_unit_code
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 ('%', #{dpFilterParamDto.cityCode}, '%')))
and a.status = '6616'
and EXISTS (select 1 from tz_jyjc_inspection_result r where ( r.result_status='1' or r.result_status='2') and a.application_no = r.application_no)
and date_ge(CAST(a.accept_date as date),#{dpFilterParamDto.beginDate}) and date_le(CAST(a.accept_date as date),#{dpFilterParamDto.endDate})
</select>
<select id="queryAllFinishedCount" resultType="java.lang.Long">
SELECT
count(1)
FROM
tz_jyjc_inspection_application a,
tz_base_enterprise_info b
where
a.inspection_unit_code= b.use_unit_code
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 ('%', #{dpFilterParamDto.cityCode}, '%')))
and a.status = '6616'
and EXISTS (select 1 from tz_jyjc_inspection_result r where r.result_status='2' and a.application_no = r.application_no)
and date_ge(CAST(a.accept_date as date),#{dpFilterParamDto.beginDate}) and date_le(CAST(a.accept_date as date),#{dpFilterParamDto.endDate})
</select>
</mapper>
......@@ -32,4 +32,6 @@ public interface ZLStatisticsMapper {
Long countCompanyForCertDateTimeOut(@Param("dto") DPFilterParamDto dpFilterParamDto, @Param("orgCode") String orgCode, @Param("limitDate") String limitDate);
Long countCompanyForCertDateTemporary(@Param("dto")DPFilterParamDto dpFilterParamDto, @Param("orgCode") String orgCode, @Param("limitDate") String limitDate);
Long getEquipTotal(@Param("cityCode") String cityCode);
}
......@@ -97,6 +97,10 @@
a.expiry_date >= current_date
and a.expiry_date <![CDATA[<=]]> #{limitDate}
</select>
<select id="getEquipTotal" resultType="java.lang.Long">
select equip_num from tzs_equip_claim_statistics where city_code = #{cityCode}
</select>
</mapper>
......@@ -100,6 +100,29 @@ public class JYJCDPStatisticsController {
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "大屏-检验检测-各检验类型业务数量统计/待检数量统计(新)", notes = "大屏-检验检测-各检验类型业务数量统计/待检数量统计(新)")
@PostMapping(value = "/queryAllInspectApp")
public ResponseModel<Map<String, Object>> queryAllInspectApp(@Validated @RequestBody DPFilterParamDto dpFilterParamDto, BindingResult result) {
List<FieldError> fieldErrors = result.getFieldErrors();
if (!fieldErrors.isEmpty()) {
throw new BadRequest(fieldErrors.get(0).getDefaultMessage());
}
return ResponseHelper.buildResponse(statisticsService.queryAllInspectApp(dpFilterParamDto));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "大屏-检验检测-近30日业务办理量/办结率统计", notes = "大屏-检验检测-近30日业务办理量/办结率统计")
@PostMapping(value = "/endRate")
public ResponseModel<Map<String, Object>> endRate(@Validated @RequestBody DPFilterParamDto dpFilterParamDto, BindingResult result) {
List<FieldError> fieldErrors = result.getFieldErrors();
if (!fieldErrors.isEmpty()) {
throw new BadRequest(fieldErrors.get(0).getDefaultMessage());
}
return ResponseHelper.buildResponse(statisticsService.endRate(dpFilterParamDto));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "大屏-检验检测-按机构进行检验时效统计Top10排名", notes = "大屏-检验检测-按机构进行检验时效统计Top10排名")
@PostMapping(value = "/timeliness/top")
public ResponseModel<List<InspectionTimelinesDto>> inspectionTimelinessTopXX(@RequestParam(required = false, defaultValue = "10") String top, @Validated @RequestBody DPFilterParamDto dpFilterParamDto, BindingResult result) {
......
......@@ -92,4 +92,15 @@ public class ZLDPStatisticsController {
}
return ResponseHelper.buildResponse(statisticsService.statisticInfoByRegionAndDate(dpFilterParamDto));
}
/**
* 大屏-总览-左屏-设备纳管率
* @return Map
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/getEquipManagementRateStatistics")
@ApiOperation(httpMethod = "POST", value = "大屏-总览-左屏-设备纳管率", notes = "大屏-总览-左屏-设备纳管率")
public ResponseModel<Map<String, Object>> getEquipManagementRateStatistics(@RequestBody DPFilterParamDto screenDto){
return ResponseHelper.buildResponse(statisticsService.getEquipManagementRateStatistics(screenDto));
}
}
......@@ -424,13 +424,16 @@ public class CylinderDPStatisticsServiceImpl {
return item;
}).collect(Collectors.toList());
Collections.sort(returnList, (o1, o2) -> ((Double)o2.get("stationRate")).compareTo((Double)o1.get("stationRate")));
for(int i = 0;i<returnList.size();i++){
returnList.get(i).put("sequenceNbr",i);
}
return returnList;
}
private Map<String,Object> getStationRate(String orgCode,Map<String,Object> result){
// 气站总数
Long totalNum = cylinderStatisticsMapper.countEnterpriseNumForCylinder(orgCode);
// 已对接总数
// 已对接总数(存在充装业务数据的企业则认为已对接)
Long count = cylinderStatisticsMapper.countEnterpriseUsed(orgCode);
if(totalNum != null && count != null){
......
......@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sun.jna.StringArray;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.dto.CountDto;
import com.yeejoin.amos.boot.biz.common.dto.JyjcInspectionApplicationDto;
......@@ -50,6 +51,7 @@ import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import javax.validation.constraints.NotBlank;
import java.io.IOException;
import java.text.DecimalFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
......@@ -273,6 +275,52 @@ public class JYJCDPStatisticsServiceImpl {
return result;
}
public Map<String, Object> queryAllInspectApp(DPFilterParamDto dpFilterParamDto) {
// 1.查询条件构造未上送时间时,默认查询数据为近一个月数据
this.setDefaultFilter(dpFilterParamDto);
// 2.按照前端约定格式返回数据
Map<String, Object> result = new HashMap<>();
JYJCTypeEnum[] jyjcTypeEnums = JYJCTypeEnum.values();
//2.1 x轴数据构造
result.put("xdata", this.getXDataForInspectBizNumCount(jyjcTypeEnums));
String orgCode = stCommonService.getAndSetOrgCode(dpFilterParamDto.getCityCode());
if(orgCode == null){
return result;
}
//待检数量
List<CountDto> pendingList = inspectionApplicationMapper.queryAllPendingResultInspectApp(orgCode, dpFilterParamDto);
//业务数量
List<CountDto> countDtoList = inspectionApplicationMapper.queryAllFlowingAndFinishedInspectApp(orgCode, dpFilterParamDto);
List<Long> pending = new ArrayList<>();
for (JYJCTypeEnum jyjcTypeEnum : jyjcTypeEnums) {
Long num = pendingList.stream().filter(c -> c.getKeyStr().equals(jyjcTypeEnum.getCode())).mapToLong(CountDto::getLongValue).sum();
pending.add(num);
}
result.put("pending", pending);
List<Long> business = new ArrayList<>();
for (JYJCTypeEnum jyjcTypeEnum : jyjcTypeEnums) {
Long num = countDtoList.stream().filter(c -> c.getKeyStr().equals(jyjcTypeEnum.getCode())).mapToLong(CountDto::getLongValue).sum();
business.add(num);
}
result.put("business", business);
List legendData = new ArrayList<>();
for(int i = 0; i < 2; i++){
Map<String, Object> map = new HashMap<>();
if(i == 0){
map.put("dataKey", "business");
map.put("value", "业务数量");
}else {
map.put("dataKey", "pending");
map.put("value", "待检数量");
}
legendData.add(map);
}
result.put("legendData", legendData);
return result;
}
private void buildYDataForPendingResultInspectApp(Map<String, Object> result, JYJCTypeEnum[] jyjcTypeEnums, DPFilterParamDto dpFilterParamDto, String orgCode) {
List<CountDto> countDtoList = inspectionApplicationMapper.queryAllPendingResultInspectApp(orgCode, dpFilterParamDto);
fillJYJCYData(result, jyjcTypeEnums, countDtoList);
......@@ -620,4 +668,48 @@ public class JYJCDPStatisticsServiceImpl {
});
return jsonObject;
}
public Map<String,Object> endRate(DPFilterParamDto dpFilterParamDto) {
// 1.查询条件构造未上送时间时,默认查询数据为近一个月数据
this.setDefaultFilter(dpFilterParamDto);
// 2.按照前端约定格式返回数据
Map<String, Object> result = new HashMap<>();
JYJCTypeEnum[] jyjcTypeEnums = JYJCTypeEnum.values();
//2.1 x轴数据构造
result.put("xdata", this.getXDataForInspectBizNumCount(jyjcTypeEnums));
String orgCode = stCommonService.getAndSetOrgCode(dpFilterParamDto.getCityCode());
if(orgCode == null){
return result;
}
List ydata = new ArrayList();
//报检数量
Long allCount = inspectionApplicationMapper.queryAllFlowingAndFinishedCount(orgCode, dpFilterParamDto);
ydata.add(allCount);
//受理数量
Long pendingCount = inspectionApplicationMapper.queryAllPendingAndFinishedCount(orgCode, dpFilterParamDto);
ydata.add(pendingCount);
//检验完成
Long finshCount = inspectionApplicationMapper.queryAllFinishedCount(orgCode, dpFilterParamDto);
ydata.add(finshCount);
// 计算比率
double completionRate = 0.0;
if (pendingCount != 0 && finshCount != 0) {
completionRate = (double) finshCount / pendingCount;
}
String[] xdata = {
"报检",
"受理",
"检验完成"
};
// 格式化比率
DecimalFormat df = new DecimalFormat("#,##0.00");
String formattedCompletionRate = df.format(completionRate);
result.put("xdata",xdata);
result.put("ydata",ydata);
result.put("completionRate",formattedCompletionRate);
return result;
}
}
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.statistcs.biz.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.biz.common.dto.CountDto;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamDto;
......@@ -11,11 +12,14 @@ import com.yeejoin.amos.boot.module.common.api.enums.UserPostEnum;
import com.yeejoin.amos.boot.module.statistics.api.mapper.AlertStatisticsMapper;
import com.yeejoin.amos.boot.module.statistics.api.mapper.ZLStatisticsMapper;
import com.yeejoin.amos.boot.module.ymt.api.dto.EquipmentCategoryDto;
import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.core.CountRequest;
import org.elasticsearch.client.core.CountResponse;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.aggregations.AggregationBuilders;
......@@ -26,8 +30,10 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
......@@ -657,4 +663,83 @@ public class ZLDPStatisticsServiceImpl {
private Long getQuestionNumber(String problemType, DPFilterParamDto params, String orgCode) {
return alertStatisticsMapper.countProblemByTypeDateAndOrgCode(problemType, params, orgCode);
}
public Map<String, Object> getEquipManagementRateStatistics(DPFilterParamDto screenDto) {
Map<String, Object> result = new HashMap<>();
List<Map<String, Object>> legendData = new ArrayList<>();
legendData.add(createLegend("设备认领总数", "equipTotal"));
legendData.add(createLegend("设备认领率", "claimRate"));
List<RegionModel> regionList = stCommonService.setRegionIfRootParentAndNoAccessIf3Level("610000");
// 获取区域名称并过滤
List<String> xData = regionList.stream()
.map(RegionModel::getRegionName)
.filter(regionName -> !"西咸新区".equals(regionName))
.collect(Collectors.toList());
// 过滤掉 "西咸新区" 并获取 yData
List<CountDto> yData = getYDataForQZ(regionList);
result.put("legendData", legendData);
result.put("xData", xData);
result.put("equipTotal", yData.stream().map(CountDto::getLongValue).collect(Collectors.toList()));
result.put("claimRate", yData.stream().map(CountDto::getStrValue).collect(Collectors.toList()));
return result;
}
private List<CountDto> getYDataForQZ(List<RegionModel> regionList) {
DecimalFormat decimalFormat = new DecimalFormat("0.00");
return regionList.parallelStream()
.filter(region -> !"西咸新区".equals(region.getRegionName()))
.map(region -> {
CountDto dto = new CountDto();
Long equipTotal = screenMapper.getEquipTotal(region.getRegionCode().toString());
String orgCode = stCommonService.getAndSetOrgCode(region.getRegionCode().toString());
Long equipIsManageNum = staticsCenterMapCountDataForEquipIsManage(orgCode);
// 设置设备总数
dto.setLongValue(equipTotal);
// 计算并设置管理率
String claimRate = calculateClaimRate(equipTotal, equipIsManageNum, decimalFormat);
dto.setStrValue(claimRate);
return dto;
}).collect(Collectors.toList());
}
private Map<String, Object> createLegend(String value, String dataKey) {
return new HashMap<String, Object>() {{
put("value", value);
put("dataKey", dataKey);
}};
}
private String calculateClaimRate(Long equipTotal, Long equipIsManageNum, DecimalFormat decimalFormat) {
if (equipIsManageNum == 0 || equipTotal == 0) {
return "0%";
}
BigDecimal equipTotalDecimal = BigDecimal.valueOf(equipTotal);
BigDecimal equipIsManageDecimal = BigDecimal.valueOf(equipIsManageNum);
BigDecimal claimRate = equipIsManageDecimal.divide(equipTotalDecimal, 4, RoundingMode.HALF_UP)
.multiply(BigDecimal.valueOf(100));
return decimalFormat.format(claimRate) + "%";
}
private Long staticsCenterMapCountDataForEquipIsManage(String orgCode) {
long num = 0;
CountRequest request = new CountRequest();
request.indices("idx_biz_view_jg_all");
BoolQueryBuilder boolMust = QueryBuilders.boolQuery();
// 按照管辖机构区域信息模糊查询
boolMust.must(QueryBuilders.wildcardQuery("ORG_BRANCH_CODE.keyword", QueryParser.escape(orgCode) + "*"));
// 设备类别精确查询气瓶
boolMust.must(QueryBuilders.termQuery("IS_INTO_MANAGEMENT", true));
// 且8大类,目的去掉脏数据
boolMust.must(QueryBuilders.termsQuery("EQU_LIST_CODE", StCommonServiceImpl.getEquipmentCategory().stream().map(EquipmentCategoryDto::getCode).collect(Collectors.toList())));
request.query(boolMust);
try {
CountResponse response = restHighLevelClient.count(request, RequestOptions.DEFAULT);
num = response.getCount();
} catch (IOException e) {
throw new RuntimeException(e);
}
return num;
}
}
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