Commit dae2ba70 authored by 韩桐桐's avatar 韩桐桐

Merge remote-tracking branch 'origin/develop_tzs_bugfix' into develop_tzs_bugfix

parents 2a179985 0e995ba4
package com.yeejoin.amos.api.openapi.controller;
import com.yeejoin.amos.api.common.restful.utils.ResponseHelper;
import com.yeejoin.amos.api.common.restful.utils.ResponseModel;
import com.yeejoin.amos.api.openapi.face.service.OpenapiBizTokenService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
......@@ -10,15 +16,9 @@ import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import com.yeejoin.amos.api.common.restful.utils.ResponseHelper;
import com.yeejoin.amos.api.common.restful.utils.ResponseModel;
import com.yeejoin.amos.api.openapi.face.service.OpenapiBizTokenService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.validation.constraints.NotBlank;
/**
*
* <pre>
* 企业数据对接票据管理
* </pre>
......@@ -29,34 +29,21 @@ import io.swagger.annotations.ApiOperation;
@RestController
@RequestMapping(value = "/bizToken")
@Api(tags = "bizToken-企业数据对接票据管理")
public class OpenapiBizTokenController
{
private static final Logger logger = LogManager.getLogger(OpenapiBizTokenController.class);
@Autowired
private OpenapiBizTokenService openapiBizTokenService;
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(value = "申请登录令牌")
@GetMapping(value = "/applyToken")
public ResponseModel<String> applyToken (
@RequestParam String appId) throws Exception
{
logger.info("appId信息:",appId);
String appToken = openapiBizTokenService.getByAppId(appId);
logger.info("appToken信息:",appToken);
return ResponseHelper.buildResponse(appToken);
}
// @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
// @ApiOperation(value = "获取APPID")
// @GetMapping(value = "/getAppId")
// public ResponseModel<String> getAppId (
// @RequestParam String companyCode) throws Exception
// {
// String appId = DesUtil.encode(companyCode, Constant.SECRETKEY);
// logger.info("appId信息:",appId);
// return ResponseHelper.buildResponse(appId);
// }
//
@Validated
public class OpenapiBizTokenController {
private static final Logger logger = LogManager.getLogger(OpenapiBizTokenController.class);
@Autowired
private OpenapiBizTokenService openapiBizTokenService;
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(value = "申请登录令牌")
@GetMapping(value = "/applyToken")
public ResponseModel<String> applyToken(
@NotBlank(message = "appId不能为空") @RequestParam String appId) {
logger.info("appId信息:{}", appId);
String appToken = openapiBizTokenService.getByAppId(appId);
logger.info("appToken信息:{}", appToken);
return ResponseHelper.buildResponse(appToken);
}
}
......@@ -2,12 +2,11 @@ package com.yeejoin.amos.boot.module.jg.api.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.jg.api.dto.JgEquipInsuranceDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgUseRegistrationDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgEquipInsurance;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.jg.api.vo.SortVo;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
......@@ -24,4 +23,7 @@ public interface JgEquipInsuranceMapper extends BaseMapper<JgEquipInsurance> {
@Param("dto") JgEquipInsuranceDto dto);
JgEquipInsuranceDto getDetailById(@Param("sequenceNbr") Long sequenceNbr);
@MapKey("orgCode")
List<Map<String, Object>> getEquipInsuranceTotal(@Param("orgCode") String orgCode);
}
......@@ -14,7 +14,7 @@
tjei.insurance_number as insuranceNumber,
tjei.insurance_expiration_date as insuranceExpirationDate,
date_format(tjei.rec_date,'%Y-%m-%d') as recDate,
jri.ORGANIZATION_NAME as receiveOrgName,
ibjsi.ORG_BRANCH_NAME as receiveOrgName,
jri.USE_ORG_CODE as useRegistrationCode,
ibjui.USE_UNIT_NAME as useUnitName,
ibjui.USE_INNER_CODE as useInnerCode,
......@@ -27,6 +27,7 @@
LEFT JOIN idx_biz_jg_register_info jri on tjei.equ_id = jri.RECORD
LEFT JOIN idx_biz_jg_use_info ibjui on tjei.equ_id = ibjui.RECORD
LEFT JOIN idx_biz_jg_factory_info ibjfi on tjei.equ_id = ibjfi.RECORD
LEFT JOIN idx_biz_jg_supervision_info ibjsi ON tjei.equ_id = ibjsi.RECORD
</sql>
<select id="getListPage" resultType="com.yeejoin.amos.boot.module.jg.api.dto.JgEquipInsuranceDto">
......@@ -61,4 +62,17 @@
<include refid="page-list"/>
where tjei.sequence_nbr = #{sequenceNbr} and tjei.is_delete = 0
</select>
<select id="getEquipInsuranceTotal" resultType="map">
SELECT
COALESCE(SUM(CASE WHEN jri.EQU_LIST = '3000' THEN 1 ELSE 0 END), 0) AS elevatorInsuranceCount,
COALESCE(SUM(CASE WHEN jri.EQU_CATEGORY = '2300' THEN 1 ELSE 0 END), 0) AS cylinderInsuranceCount
FROM
tzs_jg_equip_insurance tjei
LEFT JOIN idx_biz_jg_supervision_info ibjsi ON tjei.equ_id = ibjsi.RECORD
LEFT JOIN idx_biz_jg_register_info jri ON tjei.equ_id = jri.RECORD
WHERE
tjei.is_delete = 0
AND ibjsi.ORG_BRANCH_CODE LIKE CONCAT(#{orgCode}, '%');
</select>
</mapper>
......@@ -35,6 +35,8 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
......@@ -63,6 +65,13 @@ public class JgEquipInsuranceServiceImpl extends BaseService<JgEquipInsurance,Jg
private static final String INDEX_NAME = "idx_biz_view_jg_all";
public static final String REGION_CODE = "regionCode";
public static final String REGION_NAME = "regionName";
public static final String ELEVATOR = "elevator";
public static final String CYLINDER = "cylinder";
public static final String ELEVATOR_INSURANCE_COUNT = "elevatorInsuranceCount";
public static final String CYLINDER_INSURANCE_COUNT = "cylinderInsuranceCount";
public static final String ELEVATOR_INSURANCE_RATE = "elevatorInsuranceRate";
public static final String CYLINDER_INSURANCE_RATE = "cylinderInsuranceRate";
private static final Map<String, String> regionCodeOrgCodeMap = new ConcurrentHashMap<>();
......@@ -134,8 +143,7 @@ public class JgEquipInsuranceServiceImpl extends BaseService<JgEquipInsurance,Jg
public Map<String, Object> countLiabilityInsuranceStatisticsByCity() {
List<RegionModel> regionModelList = Systemctl.regionClient.queryByLevel("2").getResult();
List<Map<String, Object>> esQueryResults = processAsync(regionModelList, this::esQuery);
List<Map<String, Object>> insuranceResults = processAsync(regionModelList, this::getInsurance);
return assemblingHistogramData(esQueryResults, insuranceResults);
return assemblingHistogramData(esQueryResults);
}
// 公共方法,用于异步处理逻辑
......@@ -148,13 +156,6 @@ public class JgEquipInsuranceServiceImpl extends BaseService<JgEquipInsurance,Jg
.collect(Collectors.toList());
}
private Map<String, Object> getInsurance(RegionModel regionModel) {
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("ELEVATOR_INSURANCE", "");
resultMap.put("CYLINDER_INSURANCE", "");
return resultMap;
}
public String getAndSetOrgCode(String cityCode) {
String orgCode = regionCodeOrgCodeMap.get(cityCode);
if (orgCode == null) {
......@@ -194,67 +195,93 @@ public class JgEquipInsuranceServiceImpl extends BaseService<JgEquipInsurance,Jg
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
// 获取所有聚合结果
Filters aggregation = searchResponse.getAggregations().get("equipmentCount");
return getStringObjectMap(regionModel, aggregation);
List<Map<String, Object>> equipInsuranceMap = this.baseMapper.getEquipInsuranceTotal(orgCode);
return getStringObjectMap(regionModel, aggregation, equipInsuranceMap);
} catch (IOException e) {
e.printStackTrace();
}
return Collections.emptyMap();
}
private static Map<String, Object> getStringObjectMap(RegionModel regionModel, Filters aggregation) {
private static Map<String, Object> getStringObjectMap(RegionModel regionModel, Filters aggregation, List<Map<String, Object>> equipInsuranceMap) {
long elevatorCount = 0;
long gasCylinderCount = 0;
long cylinderCount = 0;
BigDecimal elevatorInsuranceRate;
BigDecimal cylinderInsuranceRate;
// 遍历 bucket 获取电梯和气瓶的总数
for (Filters.Bucket bucket : aggregation.getBuckets()) {
String key = bucket.getKeyAsString();
long docCount = bucket.getDocCount();
if ("电梯".equals(key)) {
elevatorCount = docCount;
} else if ("气瓶".equals(key)) {
gasCylinderCount = docCount;
cylinderCount = docCount;
}
}
// 将Long类型的值转换为BigDecimal
BigDecimal cylinderInsuranceCount = BigDecimal.valueOf((Long) equipInsuranceMap.get(0).get(CYLINDER_INSURANCE_COUNT));
BigDecimal elevatorInsuranceCount = BigDecimal.valueOf((Long) equipInsuranceMap.get(0).get(ELEVATOR_INSURANCE_COUNT));
// 计算保险覆盖率,避免除以零的情况
elevatorInsuranceRate = elevatorCount == 0 ? BigDecimal.ZERO :
elevatorInsuranceCount.divide(BigDecimal.valueOf(elevatorCount), 2, RoundingMode.HALF_UP);
cylinderInsuranceRate = cylinderCount == 0 ? BigDecimal.ZERO :
cylinderInsuranceCount.divide(BigDecimal.valueOf(cylinderCount), 2, RoundingMode.HALF_UP);
// 构建结果Map
Map<String, Object> resultMap = new HashMap<>();
resultMap.put(REGION_CODE, regionModel.getRegionCode());
resultMap.put("REGION_NAME", regionModel.getRegionName());
resultMap.put("ELEVATOR", elevatorCount);
resultMap.put("CYLINDER", gasCylinderCount);
resultMap.put(REGION_NAME, regionModel.getRegionName());
resultMap.put(ELEVATOR, elevatorCount);
resultMap.put(CYLINDER, cylinderCount);
resultMap.put(ELEVATOR_INSURANCE_RATE, elevatorInsuranceRate);
resultMap.put(CYLINDER_INSURANCE_RATE, cylinderInsuranceRate);
return resultMap;
}
private static Map<String, Object> assemblingHistogramData(List<Map<String, Object>> esQueryResults,List<Map<String, Object>> insuranceResults) {
private static Map<String, Object> assemblingHistogramData(List<Map<String, Object>> esQueryResults) {
// 组装数据
Map<String, Object> result = new HashMap<>();
List<Map<String, Object>> seriesData = new ArrayList<>();
List<Map<String, Object>> barSeriesData = new ArrayList<>();
List<Map<String, Object>> lineSeriesData = new ArrayList<>();
List<String> axisData = new ArrayList<>();
List<String> cylinderDataList = new ArrayList<>();
List<String> elevatorDataList = new ArrayList<>();
List<String> cylinderDataListRate = new ArrayList<>();
List<String> elevatorDataListRate = new ArrayList<>();
esQueryResults.forEach(x -> {
axisData.add(String.valueOf(x.get("regionName")));
cylinderDataList.add(String.valueOf(x.get("CYLINDER")));
elevatorDataList.add(String.valueOf(x.get("ELEVATOR")));
axisData.add(String.valueOf(x.get(REGION_NAME)));
cylinderDataList.add(String.valueOf(x.get(CYLINDER)));
elevatorDataList.add(String.valueOf(x.get(ELEVATOR)));
elevatorDataListRate.add(String.valueOf(x.get(ELEVATOR_INSURANCE_RATE)));
cylinderDataListRate.add(String.valueOf(x.get(CYLINDER_INSURANCE_RATE)));
});
HashMap<String, Object> temMap1 = new HashMap<>();
temMap1.put("data", elevatorDataList);
temMap1.put("name", "电梯");
temMap1.put("type", "bar");
HashMap<String, Object> temMap2 = new HashMap<>();
temMap1.put("data", cylinderDataList);
temMap1.put("name", "气瓶");
temMap2.put("data", cylinderDataList);
temMap2.put("name", "气瓶");
temMap2.put("type", "bar");
HashMap<String, Object> temMap3 = new HashMap<>();
temMap1.put("data", elevatorDataListRate);
temMap1.put("name", "电梯覆盖率");
temMap3.put("data", elevatorDataListRate);
temMap3.put("name", "电梯覆盖率");
temMap3.put("type", "line");
HashMap<String, Object> temMap4 = new HashMap<>();
temMap2.put("data", cylinderDataListRate);
temMap2.put("name", "气瓶覆盖率");
seriesData.add(temMap1);
seriesData.add(temMap2);
seriesData.add(temMap3);
seriesData.add(temMap4);
result.put("seriesData", seriesData);
temMap4.put("data", cylinderDataListRate);
temMap4.put("name", "气瓶覆盖率");
temMap4.put("type", "line");
barSeriesData.add(temMap1);
barSeriesData.add(temMap2);
lineSeriesData.add(temMap3);
lineSeriesData.add(temMap4);
result.put("axisData", axisData);
result.put("barSeriesData", barSeriesData);
result.put("lineSeriesData", lineSeriesData);
return result;
}
}
\ No newline at end of file
......@@ -2586,6 +2586,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
private void invalidUseRegistrationCertificate(JgUseRegistration jgUseRegistration) {
Integer count = jgUseRegistrationMapper.selectCount(new LambdaQueryWrapper<JgUseRegistration>()
.eq(JgUseRegistration::getUseRegistrationCode, jgUseRegistration.getUseRegistrationCode())
.ne(JgUseRegistration::getStatus, "已作废")
.eq(JgUseRegistration::getIsDelete, false));
// 一证对应多条使用登记单时,不作废证
if (count > 1) {
......
......@@ -1414,7 +1414,9 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
*/
private void invalidUseRegistrationCertificate(JgVehicleInformation jgVehicleInformation) {
Integer count = this.baseMapper.selectCount(new LambdaQueryWrapper<JgVehicleInformation>()
.eq(JgVehicleInformation::getUseRegistrationCode, jgVehicleInformation.getUseRegistrationCode()));
.eq(JgVehicleInformation::getUseRegistrationCode, jgVehicleInformation.getUseRegistrationCode())
.ne(JgVehicleInformation::getStatus, "已作废")
.eq(JgVehicleInformation::getIsDelete, false));
// 一证对应多条使用登记单时,不作废证
if (count > 1) {
return;
......
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