Commit b0a6ef0e authored by tianbo's avatar tianbo

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

# Conflicts: # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/controller/DataHandlerController.java # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/impl/DataHandlerServiceImpl.java # amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/impl/SafetyProblemTracingServiceImpl.java
parents bfaa0b55 58b6f1d2
package com.yeejoin.amos.boot.module.common.biz.service.impl;
import org.apache.commons.lang.ArrayUtils;
import org.elasticsearch.action.search.ClearScrollRequest;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchScrollRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.search.Scroll;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
@Component
public class EsSearchServiceImpl {
final
RestHighLevelClient restHighLevelClient;
/**
* 批次大小
*/
private static final int SIZE = 5000;
/**
* 滚动时间间隔
*/
private static final long SCROLL_TIMEOUT = 5;
public EsSearchServiceImpl(RestHighLevelClient restHighLevelClient) {
this.restHighLevelClient = restHighLevelClient;
}
/**
* 构建SearchResponse - 批量处理版本
*
* @param indices 索引
* @param query queryBuilder
* @param batchSize 批次大小
* @param consumer 处理每批次数据的消费者
* @throws Exception e
*/
public void searchResponseInBatch(String indices, QueryBuilder query, int batchSize, Consumer<List<SearchHit>> consumer) throws Exception {
SearchRequest request = new SearchRequest(indices);
Scroll scroll = new Scroll(TimeValue.timeValueMinutes(SCROLL_TIMEOUT));
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(query);
int searchSize = ValidationUtil.isEmpty(batchSize) ? SIZE : batchSize;
sourceBuilder.size(searchSize);
request.scroll(scroll);
request.source(sourceBuilder);
List<String> scrollIdList = new ArrayList<>();
SearchResponse searchResponse = restHighLevelClient.search(request, RequestOptions.DEFAULT);
String scrollId = searchResponse.getScrollId();
SearchHit[] hits = searchResponse.getHits().getHits();
// 只有当scrollId不为空且不在列表中时才添加
if (scrollId != null && !scrollIdList.contains(scrollId)) {
scrollIdList.add(scrollId);
}
try {
while (ArrayUtils.isNotEmpty(hits)) {
// 处理当前批次数据
consumer.accept(Arrays.asList(hits));
if (hits.length < searchSize) {
break;
}
SearchScrollRequest searchScrollRequest = new SearchScrollRequest(scrollId);
searchScrollRequest.scroll(scroll);
SearchResponse searchScrollResponse = restHighLevelClient.scroll(searchScrollRequest, RequestOptions.DEFAULT);
scrollId = searchScrollResponse.getScrollId();
hits = searchScrollResponse.getHits().getHits();
// 只有当scrollId不为空且不在列表中时才添加
if (scrollId != null && !scrollIdList.contains(scrollId)) {
scrollIdList.add(scrollId);
}
}
} finally {
// 只有当scrollIdList不为空时才执行清理操作
if (!scrollIdList.isEmpty()) {
ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
clearScrollRequest.setScrollIds(scrollIdList);
restHighLevelClient.clearScroll(clearScrollRequest, RequestOptions.DEFAULT);
}
}
}
/**
* 构建SearchResponse
*
* @param indices 索引
* @param query queryBuilder
* @param fun 返回函数
* @param <T> 返回类型
* @return List, 可以使用fun转换为T结果
* @throws Exception e
*/
public <T> List<T> searchResponse(String indices, QueryBuilder query, Function<SearchHit, T> fun) throws Exception {
List<T> result = new ArrayList<>();
// 复用批量处理方法,将结果收集到列表中
searchResponseInBatch(indices, query, SIZE, hits -> {
for (SearchHit hit : hits) {
result.add(fun.apply(hit));
}
});
return result;
}
}
...@@ -336,5 +336,13 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> { ...@@ -336,5 +336,13 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
*/ */
@Select("SELECT count(1) from tzs_user_equip where user_seq = #{userSeq}") @Select("SELECT count(1) from tzs_user_equip where user_seq = #{userSeq}")
Integer queryUserBindEquNum(@Param("userSeq") String userSeq); Integer queryUserBindEquNum(@Param("userSeq") String userSeq);
/**
* 根据设备RECORD查询最近一次安装告知或使用登记或车用气瓶登记的接收机构代码
*
* @param record
* @return
*/
List<Map<String, String>> queryRecentlyReceiveCompanyCode(String record);
} }
...@@ -3148,4 +3148,34 @@ ...@@ -3148,4 +3148,34 @@
ORDER BY ORDER BY
tjri.rec_date ASC tjri.rec_date ASC
</select> </select>
<select id="queryRecentlyReceiveCompanyCode" resultType="java.util.Map">
SELECT * FROM (
SELECT n.receive_org_credit_code AS receiveCompanyCode, n.handle_date AS passedDate
FROM tzs_jg_installation_notice_eq eq
LEFT JOIN tzs_jg_installation_notice n ON n.sequence_nbr = eq.equip_transfer_id
WHERE eq.equ_id = #{record}
ORDER BY n.handle_date DESC
) t1
UNION ALL
SELECT * FROM (
SELECT n.receive_company_code AS receiveCompanyCode, n.audit_pass_date AS passedDate
FROM tzs_jg_use_registration_eq eq
LEFT JOIN tzs_jg_use_registration n ON n.sequence_nbr = eq.equip_transfer_id
WHERE eq.equ_id = #{record}
ORDER BY n.audit_pass_date DESC
) t2
UNION ALL
SELECT * FROM (
SELECT n.receive_company_code AS receiveCompanyCode, n.audit_pass_date AS passedDate
FROM tzs_jg_vehicle_information_eq eq
LEFT JOIN tzs_jg_vehicle_information n ON n.sequence_nbr = eq.vehicle_id
WHERE eq.equ_id = #{record}
ORDER BY n.audit_pass_date DESC
) t3
</select>
</mapper> </mapper>
...@@ -1144,7 +1144,6 @@ ...@@ -1144,7 +1144,6 @@
<if test="jsonObject.DATA_SOURCE == null or jsonObject.DATA_SOURCE == ''"> <if test="jsonObject.DATA_SOURCE == null or jsonObject.DATA_SOURCE == ''">
and ui."DATA_SOURCE" like 'jg%' and ui."DATA_SOURCE" like 'jg%'
</if> </if>
-- 保证使用单位选择设备时(record为null) 能选择到本单位的设备 并且 监管单位在查看时(record 不为null)可以匹配到所有的设备
<if test="jsonObject.useUnitCreditCode != null and jsonObject.useUnitCreditCode != '' and jsonObject.record == null"> <if test="jsonObject.useUnitCreditCode != null and jsonObject.useUnitCreditCode != '' and jsonObject.record == null">
and ui."USE_UNIT_CREDIT_CODE" = #{jsonObject.useUnitCreditCode} and ui."USE_UNIT_CREDIT_CODE" = #{jsonObject.useUnitCreditCode}
</if> </if>
...@@ -1291,7 +1290,6 @@ ...@@ -1291,7 +1290,6 @@
</otherwise> </otherwise>
</choose> </choose>
</if> </if>
-- 保证使用单位选择设备时(record为null) 能选择到本单位的设备 并且 监管单位在查看时(record 不为null)可以匹配到所有的设备
<if test="jsonObject.useUnitCreditCode != null and jsonObject.useUnitCreditCode != '' and jsonObject.record == null"> <if test="jsonObject.useUnitCreditCode != null and jsonObject.useUnitCreditCode != '' and jsonObject.record == null">
and ui."USE_UNIT_CREDIT_CODE" = #{jsonObject.useUnitCreditCode} and ui."USE_UNIT_CREDIT_CODE" = #{jsonObject.useUnitCreditCode}
-- 限制 没有做过使用登记的 -- 限制 没有做过使用登记的
...@@ -1348,7 +1346,6 @@ ...@@ -1348,7 +1346,6 @@
<if test="jsonObject.informationManageCode != null and jsonObject.informationManageCode != ''"> <if test="jsonObject.informationManageCode != null and jsonObject.informationManageCode != ''">
and oi.INFORMATION_MANAGE_CODE like concat('%',#{jsonObject.informationManageCode},'%') and oi.INFORMATION_MANAGE_CODE like concat('%',#{jsonObject.informationManageCode},'%')
</if> </if>
-- 保证使用单位选择设备时(record为null) 能选择到本单位的设备 并且 监管单位在查看时(record 不为null)可以匹配到所有的设备
<if test="jsonObject.useUnitCreditCode != null and jsonObject.useUnitCreditCode != '' and jsonObject.record == null"> <if test="jsonObject.useUnitCreditCode != null and jsonObject.useUnitCreditCode != '' and jsonObject.record == null">
and ui."USE_UNIT_CREDIT_CODE" = #{jsonObject.useUnitCreditCode} and ui."USE_UNIT_CREDIT_CODE" = #{jsonObject.useUnitCreditCode}
</if> </if>
...@@ -1400,7 +1397,6 @@ ...@@ -1400,7 +1397,6 @@
<if test="jsonObject.informationManageCode != null and jsonObject.informationManageCode != ''"> <if test="jsonObject.informationManageCode != null and jsonObject.informationManageCode != ''">
and oi.INFORMATION_MANAGE_CODE like concat('%',#{jsonObject.informationManageCode},'%') and oi.INFORMATION_MANAGE_CODE like concat('%',#{jsonObject.informationManageCode},'%')
</if> </if>
-- 保证使用单位选择设备时(record为null) 能选择到本单位的设备 并且 监管单位在查看时(record 不为null)可以匹配到所有的设备
<if test="jsonObject.useUnitCreditCode != null and jsonObject.useUnitCreditCode != '' and jsonObject.record == null"> <if test="jsonObject.useUnitCreditCode != null and jsonObject.useUnitCreditCode != '' and jsonObject.record == null">
and ui."USE_UNIT_CREDIT_CODE" = #{jsonObject.useUnitCreditCode} and ui."USE_UNIT_CREDIT_CODE" = #{jsonObject.useUnitCreditCode}
</if> </if>
...@@ -1607,7 +1603,7 @@ ...@@ -1607,7 +1603,7 @@
A.audit_status LIKE'%已完成%' A.audit_status LIKE'%已完成%'
AND b.supervise_org_code LIKE concat ( #{orgCode}, '%' ) AND b.supervise_org_code LIKE concat ( #{orgCode}, '%' )
AND A.apply_type = 'SB_TY' AND A.apply_type = 'SB_TY'
AND A.rec_date > CURDATE ( ) - 30 AND A.audit_pass_date > CURDATE ( ) - 30
) )
) )
GROUP BY GROUP BY
...@@ -1636,7 +1632,7 @@ ...@@ -1636,7 +1632,7 @@
A.audit_status LIKE'%已完成%' A.audit_status LIKE'%已完成%'
AND b.supervise_org_code LIKE concat ( #{orgCode}, '%' ) AND b.supervise_org_code LIKE concat ( #{orgCode}, '%' )
AND A.cancel_type = #{cancelType} AND A.cancel_type = #{cancelType}
AND A.rec_date > CURDATE ( ) - 30 AND A.audit_pass_date > CURDATE ( ) - 30
) )
) )
GROUP BY GROUP BY
......
...@@ -109,7 +109,8 @@ ...@@ -109,7 +109,8 @@
tjvi.cancel_reason as cancelReason, tjvi.cancel_reason as cancelReason,
tjvi.reg_type as regType, tjvi.reg_type as regType,
tjvi.org_branch_code as orgBranchCode, tjvi.org_branch_code as orgBranchCode,
tjvi.org_branch_name as orgBranchName tjvi.org_branch_name as orgBranchName,
tjvi.identification_code as identificationCode
from tzs_jg_vehicle_information tjvi from tzs_jg_vehicle_information tjvi
</sql> </sql>
......
...@@ -103,16 +103,17 @@ public class PressureVesselListener extends AnalysisEventListener<EquipInfoCylin ...@@ -103,16 +103,17 @@ public class PressureVesselListener extends AnalysisEventListener<EquipInfoCylin
if ("1".equals(data.getEquCodeType())) { if ("1".equals(data.getEquCodeType())) {
checkNotBlank(data.getEquCode(), "设备代码不能为空"); checkNotBlank(data.getEquCode(), "设备代码不能为空");
String equCode = data.getEquCode(); String equCode = data.getEquCode();
if (equCode.matches("[a-zA-Z0-9]+")) { if (equCode.length() <= 16) {
if (equCode.length() <= 17) { result.append("设备代码不能小于16位");
result.append("设备代码不能小于17位");
} }
if (equCode.length() >= 20) { if (equCode.length() >= 22) {
result.append("设备代码不能大于20位"); result.append("设备代码不能大于22位");
}
} else {
result.append("设备代码不能包含特殊字符");
} }
// 去掉设备代码不能有特殊字符校验
// if (equCode.matches("[a-zA-Z0-9]+")) {
// } else {
// result.append("设备代码不能包含特殊字符");
// }
if (equCodeList.contains(data.getEquCode())) { if (equCodeList.contains(data.getEquCode())) {
result.append("设备代码不能重复;"); result.append("设备代码不能重复;");
} }
......
...@@ -383,4 +383,11 @@ public class DataHandlerController extends BaseController { ...@@ -383,4 +383,11 @@ public class DataHandlerController extends BaseController {
Integer dealNum = dataHandlerService.initTank2Es(); Integer dealNum = dataHandlerService.initTank2Es();
return ResponseHelper.buildResponse(dealNum); return ResponseHelper.buildResponse(dealNum);
} }
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/handleDataQualityScore")
@ApiOperation(httpMethod = "POST", value = "修复es中未正常生成数据等级的数据", notes = "修复es中未正常生成数据等级的数据")
public ResponseModel<String> handleDataQualityScore() {
return ResponseHelper.buildResponse(dataHandlerService.handleDataQualityScore2());
}
} }
\ No newline at end of file
...@@ -7,10 +7,7 @@ import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgInstallationNoticeServ ...@@ -7,10 +7,7 @@ import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgInstallationNoticeServ
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.component.event.RestEventTrigger; import org.typroject.tyboot.component.event.RestEventTrigger;
import org.typroject.tyboot.core.foundation.enumeration.UserType; import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation; import org.typroject.tyboot.core.restful.doc.TycloudOperation;
...@@ -88,4 +85,17 @@ public class JgInstallationByWorkFlowController { ...@@ -88,4 +85,17 @@ public class JgInstallationByWorkFlowController {
jgInstallationNoticeServiceImpl.accept(jgInstallationNoticeDto, op); jgInstallationNoticeServiceImpl.accept(jgInstallationNoticeDto, op);
return ResponseHelper.buildResponse(null); return ResponseHelper.buildResponse(null);
} }
/**
* 处理安装告知流程结束,业务未结束单子问题
* @param applyNo 申请单号
* @return s
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/handleNoticeWrongData")
@ApiOperation(httpMethod = "POST", value = "处理安装告知流程结束,业务未结束单子问题", notes = "处理安装告知流程结束,业务未结束单子问题")
public ResponseModel<Object> handleNoticeWrongData(@RequestParam("applyNo") String applyNo) {
jgInstallationNoticeServiceImpl.handleNoticeWrongData(applyNo);
return ResponseHelper.buildResponse("ok");
}
} }
...@@ -155,4 +155,16 @@ public class JgScrapCancelController extends BaseController { ...@@ -155,4 +155,16 @@ public class JgScrapCancelController extends BaseController {
} }
/**
* 处理设备报废注销流程结束,业务未结束单子问题
* @param applyNo 申请单号
* @return s
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/handleNoticeWrongData")
@ApiOperation(httpMethod = "POST", value = "处理设备报废注销流程结束,业务未结束单子问题", notes = "处理设备报废注销流程结束,业务未结束单子问题")
public ResponseModel<Object> handleScrapCancelWrongData(@RequestParam("applyNo") String applyNo) {
jgScrapCancelService.handleScrapCancelWrongData(applyNo);
return ResponseHelper.buildResponse("ok");
}
} }
...@@ -248,4 +248,19 @@ public class JgVehicleInformationController extends BaseController { ...@@ -248,4 +248,19 @@ public class JgVehicleInformationController extends BaseController {
public ResponseModel<Object> saveOrUpdateHisData(@RequestBody JSONObject map) { public ResponseModel<Object> saveOrUpdateHisData(@RequestBody JSONObject map) {
return ResponseHelper.buildResponse(jgVehicleInformationServiceImpl.saveOrUpdateHisData(map)); return ResponseHelper.buildResponse(jgVehicleInformationServiceImpl.saveOrUpdateHisData(map));
} }
/**
* 处理车用气瓶流程结束,业务未结束单子问题
* @param applyNo 申请单号
* @param equDefineCode 设备品种code
* @return s
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/handleVehicleWrongData")
@ApiOperation(httpMethod = "POST", value = "处理车用气瓶流程结束,业务未结束单子问题", notes = "处理车用气瓶流程结束,业务未结束单子问题")
public ResponseModel<Object> handleVehicleWrongData(@RequestParam("applyNo") String applyNo,
@RequestParam("equDefineCode") String equDefineCode) {
jgVehicleInformationServiceImpl.handleVehicleWrongData(applyNo, equDefineCode);
return ResponseHelper.buildResponse("ok");
}
} }
...@@ -122,7 +122,8 @@ public class ShCarController extends BaseController { ...@@ -122,7 +122,8 @@ public class ShCarController extends BaseController {
record.setClaimedFlag("是"); record.setClaimedFlag("是");
JgUseRegistrationManage manage = jgUseRegistrationManageServiceImpl.getBaseMapper() JgUseRegistrationManage manage = jgUseRegistrationManageServiceImpl.getBaseMapper()
.selectOne(new LambdaQueryWrapper<JgUseRegistrationManage>() .selectOne(new LambdaQueryWrapper<JgUseRegistrationManage>()
.eq(JgUseRegistrationManage::getUseRegistrationCode, record.getUseRegistrationCode())); .eq(JgUseRegistrationManage::getUseRegistrationCode, record.getUseRegistrationCode())
.eq(JgUseRegistrationManage::getIsDelete, false));
record.setCertificateSeq(manage != null ? String.valueOf(manage.getSequenceNbr()) : null); record.setCertificateSeq(manage != null ? String.valueOf(manage.getSequenceNbr()) : null);
} else if ("0".equals(record.getClaimedFlag())) { } else if ("0".equals(record.getClaimedFlag())) {
record.setClaimedFlag("否"); record.setClaimedFlag("否");
......
...@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.equip; ...@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.biz.edit.process.equip;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.google.common.collect.Maps;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo; import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity; import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity;
import com.yeejoin.amos.boot.module.common.api.dao.EsEquipmentDao; import com.yeejoin.amos.boot.module.common.api.dao.EsEquipmentDao;
...@@ -17,6 +18,7 @@ import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.strategy.HandleRes ...@@ -17,6 +18,7 @@ import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.strategy.HandleRes
import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.strategy.IEquipChangeDataProcessStrategy; import com.yeejoin.amos.boot.module.jg.biz.edit.process.equip.strategy.IEquipChangeDataProcessStrategy;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgRegisterInfoServiceImpl; import com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgRegisterInfoServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.entity.*; import com.yeejoin.amos.boot.module.ymt.api.entity.*;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquCodeTypeEnum;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -33,10 +35,7 @@ import org.typroject.tyboot.core.foundation.utils.ValidationUtil; ...@@ -33,10 +35,7 @@ import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest; import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/** /**
* 单个维护设备-策略实现类 * 单个维护设备-策略实现类
...@@ -81,6 +80,8 @@ public class SingleEquipChangeProcess implements IEquipChangeDataProcessStrategy ...@@ -81,6 +80,8 @@ public class SingleEquipChangeProcess implements IEquipChangeDataProcessStrategy
CommonEquipDataProcessService.castMap2Bean(changeJson, factoryInfoNew); CommonEquipDataProcessService.castMap2Bean(changeJson, factoryInfoNew);
factoryInfoNew.setSequenceNbr(factoryInfoOld.getSequenceNbr()); factoryInfoNew.setSequenceNbr(factoryInfoOld.getSequenceNbr());
beforeCheckForEquCode(factoryInfoOld, registerInfoNew);
IdxBizJgDesignInfo designInfoOld = commonEquipDataProcessService.getIdxBizJgDesignInfoMapper().selectOne(new LambdaQueryWrapper<IdxBizJgDesignInfo>().eq(IdxBizJgDesignInfo::getRecord, record)); IdxBizJgDesignInfo designInfoOld = commonEquipDataProcessService.getIdxBizJgDesignInfoMapper().selectOne(new LambdaQueryWrapper<IdxBizJgDesignInfo>().eq(IdxBizJgDesignInfo::getRecord, record));
IdxBizJgDesignInfo designInfoNew = BeanUtil.copyProperties(designInfoOld, IdxBizJgDesignInfo.class); IdxBizJgDesignInfo designInfoNew = BeanUtil.copyProperties(designInfoOld, IdxBizJgDesignInfo.class);
CommonEquipDataProcessService.castMap2Bean(changeJson, designInfoNew); CommonEquipDataProcessService.castMap2Bean(changeJson, designInfoNew);
...@@ -298,4 +299,33 @@ public class SingleEquipChangeProcess implements IEquipChangeDataProcessStrategy ...@@ -298,4 +299,33 @@ public class SingleEquipChangeProcess implements IEquipChangeDataProcessStrategy
return DefaultBizDataChangeHandler.ModelType.singleEquip; return DefaultBizDataChangeHandler.ModelType.singleEquip;
} }
private void beforeCheckForEquCode(IdxBizJgFactoryInfo factoryInfoOld, IdxBizJgRegisterInfo registerInfoNew) {
// 如果是用户输入的设备代码,则校验设备代码唯一性
if (EquCodeTypeEnum.INPUT.getCode().equals(registerInfoNew.getEquCodeType())) {
LinkedHashMap<String, String> params = Maps.newLinkedHashMap();
params.put("EQU_CODE", registerInfoNew.getEquCode());
params.put("SEQUENCE_NBR", registerInfoNew.getSequenceNbr());
commonEquipDataProcessService.getJgRegisterInfoService().checkEquCodeUniqueness(params);
}
// 如果生成设备代码类型是系统生成并且没有值,则系统重新生成设备代码
if (EquCodeTypeEnum.SYSTEM_GENERATED.getCode().equals(registerInfoNew.getEquCodeType()) && registerInfoNew.getEquCode() == null) {
String receiveCompanyCode = registerInfoNew.getOrganizationCode();
JSONObject companyTypeObj = commonEquipDataProcessService.getJgRegisterInfoService().getCompanyType();
if (companyTypeObj != null && !"company".equals(companyTypeObj.getString("level"))) {
// 编辑账号为接收机构人员时,receiveCompanyCode取到地市级的接收机构代码
receiveCompanyCode = commonEquipDataProcessService.getJgUseRegistrationService().getCodeUtil().getCityRegionCode(companyTypeObj.getString("companyCode"));
}
if (companyTypeObj != null && "company".equals(companyTypeObj.getString("level"))) {
// 编辑账号企业人员时,receiveCompanyCode最近一次使用登记或者安装告知或者车用气瓶登记单据的接收机构代码
List<Map<String, String>> recentlyReceiveCompanyCode = commonEquipDataProcessService.getCommonMapper().queryRecentlyReceiveCompanyCode(registerInfoNew.getRecord());
if (!recentlyReceiveCompanyCode.isEmpty()) {
// 按passedDate倒叙排序后取最新的一个
recentlyReceiveCompanyCode.sort(Comparator.comparing(map -> map.get("passedDate"), Comparator.reverseOrder()));
receiveCompanyCode = commonEquipDataProcessService.getJgUseRegistrationService().getCodeUtil().getCityRegionCode(recentlyReceiveCompanyCode.get(0).get("receiveCompanyCode"));
}
}
String equCode = commonEquipDataProcessService.getJgRegisterInfoService().getEquCode(registerInfoNew, factoryInfoOld, receiveCompanyCode);
registerInfoNew.setEquCode(equCode);
}
}
} }
...@@ -3,7 +3,6 @@ package com.yeejoin.amos.boot.module.jg.biz.event.publisher; ...@@ -3,7 +3,6 @@ package com.yeejoin.amos.boot.module.jg.biz.event.publisher;
import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware; import org.springframework.context.ApplicationEventPublisherAware;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
......
...@@ -26,6 +26,15 @@ public interface TzsServiceFeignClient { ...@@ -26,6 +26,15 @@ public interface TzsServiceFeignClient {
ResponseModel<Map<String, Object>> createCode(@RequestBody Map<String, Object> map); ResponseModel<Map<String, Object>> createCode(@RequestBody Map<String, Object> map);
/** /**
* 批量创建监管码-设备导入用
*
* @param map 请求体
* @return
*/
@RequestMapping(value = "/equipment-category/createSupervisoryCodeBatch", method = RequestMethod.POST)
ResponseModel<List<Map<String, String>>> createCodeBatch(@RequestBody Map<String, Object> map);
/**
* 创建监管码及96333 * 创建监管码及96333
* *
* @param paramMap 请求体 * @param paramMap 请求体
......
...@@ -3,20 +3,17 @@ package com.yeejoin.amos.boot.module.jg.biz.handler.strategy; ...@@ -3,20 +3,17 @@ package com.yeejoin.amos.boot.module.jg.biz.handler.strategy;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory; import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory;
import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.jg.api.entity.SafetyProblemTracing; import com.yeejoin.amos.boot.module.jg.api.entity.SafetyProblemTracing;
import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemStatusEnum; import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemStatusEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemTypeEnum; import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgOtherInfoServiceImpl; import com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgOtherInfoServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.SafetyProblemTracingServiceImpl; import com.yeejoin.amos.boot.module.jg.biz.service.impl.SafetyProblemTracingServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgOtherInfo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
...@@ -63,40 +60,17 @@ public class EquipmentProblemStrategy implements ProblemHandleStrategy { ...@@ -63,40 +60,17 @@ public class EquipmentProblemStrategy implements ProblemHandleStrategy {
.list().stream().map(SafetyProblemTracing::getSourceId).collect(Collectors.toCollection(HashSet::new)); .list().stream().map(SafetyProblemTracing::getSourceId).collect(Collectors.toCollection(HashSet::new));
// 确定无未处理问题的设备列表 // 确定无未处理问题的设备列表
List<String> resolvedRecords = equipRecords.stream() Set<String> resolvedRecords = equipRecords.stream()
.filter(record -> !problemEquipIds.contains(record)) .filter(record -> !problemEquipIds.contains(record))
.collect(Collectors.toCollection(ArrayList::new)); .collect(Collectors.toCollection(HashSet::new));
// 更新无未处理问题的设备状态 // 更新无未处理问题的设备状态
if (!ValidationUtil.isEmpty(resolvedRecords)) { if (!ValidationUtil.isEmpty(resolvedRecords)) {
log.info("可更新状态的设备record:---> {}", resolvedRecords); log.info("可更新状态的设备record:---> {}", resolvedRecords);
updateOtherTableAndES(resolvedRecords); safetyProblemTracingService.updateOtherTableAndES(resolvedRecords);
} }
log.info("安全追溯-设备问题处理完成!"); log.info("安全追溯-设备问题处理完成!");
} }
/**
* 更新Other表和ES状态(提取公共方法)
*/
private void updateOtherTableAndES(List<String> records) {
// 更新Other表
idxBizJgOtherInfoService.lambdaUpdate()
.set(IdxBizJgOtherInfo::getStatus, SafetyProblemStatusEnum.HANDLED.getCode())
.in(IdxBizJgOtherInfo::getRecord, records)
.update();
// 更新ES状态(添加异常处理)
try {
Iterable<ESEquipmentCategoryDto> esEquipmentIter = esEquipmentCategory.findAllById(records);
esEquipmentIter.forEach(dto ->
dto.setProblemStatus(SafetyProblemStatusEnum.HANDLED.getCode()));
esEquipmentCategory.saveAll(esEquipmentIter);
log.info("ES状态更新成功,记录数:{}", records.size());
} catch (Exception e) {
log.error("ES状态更新失败,设备record:{},错误原因:{}", records, e.getMessage(), e);
}
}
} }
...@@ -25,6 +25,7 @@ import lombok.RequiredArgsConstructor; ...@@ -25,6 +25,7 @@ import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.*; import java.util.*;
...@@ -59,6 +60,9 @@ public class EquipQualityScoreUpdateService extends DefaultQualityScoreUpdateSer ...@@ -59,6 +60,9 @@ public class EquipQualityScoreUpdateService extends DefaultQualityScoreUpdateSer
MatchItemDto matchItemDto = MatchItemDto.builder().build(); MatchItemDto matchItemDto = MatchItemDto.builder().build();
IdxBizJgUseInfo useInfo = getIdxBizJgUseInfo(record); IdxBizJgUseInfo useInfo = getIdxBizJgUseInfo(record);
IdxBizJgRegisterInfo registerInfo = getIdxBizJgRegisterInfo(record); IdxBizJgRegisterInfo registerInfo = getIdxBizJgRegisterInfo(record);
if (ValidationUtil.isEmpty(useInfo) || ValidationUtil.isEmpty(registerInfo)) {
return 0;
}
matchItemDto.setBizType(bizType); matchItemDto.setBizType(bizType);
matchItemDto.setEquList(registerInfo.getEquList()); matchItemDto.setEquList(registerInfo.getEquList());
matchItemDto.setEquCategory(registerInfo.getEquCategory()); matchItemDto.setEquCategory(registerInfo.getEquCategory());
...@@ -92,6 +96,9 @@ public class EquipQualityScoreUpdateService extends DefaultQualityScoreUpdateSer ...@@ -92,6 +96,9 @@ public class EquipQualityScoreUpdateService extends DefaultQualityScoreUpdateSer
} }
private void sendDataRefreshMsgEquip(List<String> records) { private void sendDataRefreshMsgEquip(List<String> records) {
if (ValidationUtil.isEmpty(records)) {
return;
}
eventPublisher.publish(new DataRefreshEvent(this, records, DataRefreshEvent.DataType.equipment.name(), DataRefreshEvent.Operation.UPDATE)); eventPublisher.publish(new DataRefreshEvent(this, records, DataRefreshEvent.DataType.equipment.name(), DataRefreshEvent.Operation.UPDATE));
} }
......
...@@ -4,6 +4,8 @@ import cn.hutool.core.bean.BeanUtil; ...@@ -4,6 +4,8 @@ import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory;
import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.common.biz.constats.Constants; import com.yeejoin.amos.boot.module.common.biz.constats.Constants;
import com.yeejoin.amos.boot.module.common.biz.refresh.DataRefreshEvent; import com.yeejoin.amos.boot.module.common.biz.refresh.DataRefreshEvent;
import com.yeejoin.amos.boot.module.jg.api.dto.ReminderItemDto; import com.yeejoin.amos.boot.module.jg.api.dto.ReminderItemDto;
...@@ -22,6 +24,7 @@ import lombok.RequiredArgsConstructor; ...@@ -22,6 +24,7 @@ import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
...@@ -45,6 +48,8 @@ public class ProjectQualityScoreUpdateService extends DefaultQualityScoreUpdateS ...@@ -45,6 +48,8 @@ public class ProjectQualityScoreUpdateService extends DefaultQualityScoreUpdateS
@Value("${grade.calculation.strategy:MAX_GRADE}") @Value("${grade.calculation.strategy:MAX_GRADE}")
private String activeStrategy; private String activeStrategy;
private final ESEquipmentCategory equipmentCategoryDao;
@Override @Override
public Boolean support(EquipCreateOrEditEvent.EquipType equipType) { public Boolean support(EquipCreateOrEditEvent.EquipType equipType) {
return EquipCreateOrEditEvent.EquipType.project.equals(equipType); return EquipCreateOrEditEvent.EquipType.project.equals(equipType);
...@@ -52,6 +57,9 @@ public class ProjectQualityScoreUpdateService extends DefaultQualityScoreUpdateS ...@@ -52,6 +57,9 @@ public class ProjectQualityScoreUpdateService extends DefaultQualityScoreUpdateS
private Integer getReminderLevel(String bizType, String projectContraptionId) { private Integer getReminderLevel(String bizType, String projectContraptionId) {
IdxBizJgProjectContraption projectContraption = idxBizJgProjectContraptionService.getById(projectContraptionId); IdxBizJgProjectContraption projectContraption = idxBizJgProjectContraptionService.getById(projectContraptionId);
if (ValidationUtil.isEmpty(projectContraption)) {
return 0;
}
MatchItemDto matchItemDto = MatchItemDto.builder().build(); MatchItemDto matchItemDto = MatchItemDto.builder().build();
matchItemDto.setBizType(bizType); matchItemDto.setBizType(bizType);
matchItemDto.setEquList(projectContraption.getEquList()); matchItemDto.setEquList(projectContraption.getEquList());
...@@ -73,6 +81,9 @@ public class ProjectQualityScoreUpdateService extends DefaultQualityScoreUpdateS ...@@ -73,6 +81,9 @@ public class ProjectQualityScoreUpdateService extends DefaultQualityScoreUpdateS
* @param projectContraptionIds 装置ids * @param projectContraptionIds 装置ids
*/ */
private void sendDataRefreshMsg(Set<String> projectContraptionIds) { private void sendDataRefreshMsg(Set<String> projectContraptionIds) {
if (ValidationUtil.isEmpty(projectContraptionIds)) {
return;
}
List<IdxBizJgUseInfo> useInfos = idxBizJgUseInfoService.list(new LambdaQueryWrapper<IdxBizJgUseInfo>() List<IdxBizJgUseInfo> useInfos = idxBizJgUseInfoService.list(new LambdaQueryWrapper<IdxBizJgUseInfo>()
.in(IdxBizJgUseInfo::getProjectContraptionId, projectContraptionIds) .in(IdxBizJgUseInfo::getProjectContraptionId, projectContraptionIds)
.select(IdxBizJgUseInfo::getRecord)); .select(IdxBizJgUseInfo::getRecord));
...@@ -101,6 +112,14 @@ public class ProjectQualityScoreUpdateService extends DefaultQualityScoreUpdateS ...@@ -101,6 +112,14 @@ public class ProjectQualityScoreUpdateService extends DefaultQualityScoreUpdateS
updateWrapper2.eq(IdxBizJgUseInfo::getProjectContraptionId, projectContraptionId); updateWrapper2.eq(IdxBizJgUseInfo::getProjectContraptionId, projectContraptionId);
updateWrapper2.set(IdxBizJgUseInfo::getDataQualityScore, level); updateWrapper2.set(IdxBizJgUseInfo::getDataQualityScore, level);
idxBizJgUseInfoService.update(updateWrapper2); idxBizJgUseInfoService.update(updateWrapper2);
List<ESEquipmentCategoryDto> projectEquips = equipmentCategoryDao.findAllByProjectContraptionId(projectContraptionId);
if (!ValidationUtil.isEmpty(projectEquips)) {
for (ESEquipmentCategoryDto esEquipmentCategoryDto : projectEquips) {
esEquipmentCategoryDto.setDataQualityScore(level);
}
equipmentCategoryDao.saveAll(projectEquips);
}
}); });
} }
......
...@@ -3246,7 +3246,7 @@ public class CommonServiceImpl implements ICommonService { ...@@ -3246,7 +3246,7 @@ public class CommonServiceImpl implements ICommonService {
*/ */
public String castDataQualityScore2Name(String dataQualityScore, Boolean isIntoManagement){ public String castDataQualityScore2Name(String dataQualityScore, Boolean isIntoManagement){
String name = dataDictTypeHandler.handle(DATA_QUALITY_SCORE, dataQualityScore); String name = dataDictTypeHandler.handle(DATA_QUALITY_SCORE, dataQualityScore);
return name == null ? (isIntoManagement == null || !isIntoManagement) ? "二类" : "一类" : name; return name == null ? "三类" : name;
} }
public void setDataQualityScore2Json(Map<String, Object> result, String bizId, BusinessTypeEnum businessTypeEnum) { public void setDataQualityScore2Json(Map<String, Object> result, String bizId, BusinessTypeEnum businessTypeEnum) {
......
...@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Sets;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo; import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
...@@ -27,7 +28,9 @@ import com.yeejoin.amos.boot.module.jg.api.enums.CompanyTypeEnum; ...@@ -27,7 +28,9 @@ import com.yeejoin.amos.boot.module.jg.api.enums.CompanyTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.UseRegisterCancelEquipEnum; import com.yeejoin.amos.boot.module.jg.api.enums.UseRegisterCancelEquipEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationEqMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationEqMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgVehicleInformationMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.JgVehicleInformationMapper;
import com.yeejoin.amos.boot.module.jg.biz.event.publisher.EventPublisher;
import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient; import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.reminder.core.event.EquipCreateOrEditEvent;
import com.yeejoin.amos.boot.module.jg.biz.service.*; import com.yeejoin.amos.boot.module.jg.biz.service.*;
import com.yeejoin.amos.boot.module.jg.biz.utils.CodeUtil; import com.yeejoin.amos.boot.module.jg.biz.utils.CodeUtil;
import com.yeejoin.amos.boot.module.ymt.api.entity.*; import com.yeejoin.amos.boot.module.ymt.api.entity.*;
...@@ -40,7 +43,6 @@ import com.yeejoin.amos.feign.privilege.model.AgencyUserModel; ...@@ -40,7 +43,6 @@ import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import io.seata.spring.annotation.GlobalTransactional; import io.seata.spring.annotation.GlobalTransactional;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.queryparser.classic.QueryParser;
import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchResponse;
...@@ -148,6 +150,7 @@ public class EquipClaimServiceImpl { ...@@ -148,6 +150,7 @@ public class EquipClaimServiceImpl {
private final CodeUtil codeUtil; private final CodeUtil codeUtil;
private final TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper; private final TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper;
private final EventPublisher eventPublisher;
/** /**
* 当前登录人信息 * 当前登录人信息
...@@ -261,6 +264,15 @@ public class EquipClaimServiceImpl { ...@@ -261,6 +264,15 @@ public class EquipClaimServiceImpl {
pBuilder.must(QueryBuilders.wildcardQuery(EQU_CODE, "*" + QueryParser.escape(test.toLowerCase()) + "*")); pBuilder.must(QueryBuilders.wildcardQuery(EQU_CODE, "*" + QueryParser.escape(test.toLowerCase()) + "*"));
boolMust.must(pBuilder); boolMust.must(pBuilder);
} }
// 出厂编号模糊查询
if (!ObjectUtils.isEmpty(params.getString(FACTORY_NUM))) {
BoolQueryBuilder pBuilder = QueryBuilders.boolQuery();
String factoryNum = params.getString(FACTORY_NUM);
// 使用match_phrase进行精确匹配
pBuilder.must(QueryBuilders.matchPhraseQuery(FACTORY_NUM, factoryNum));
boolMust.must(pBuilder);
}
// 使用单位 名称模糊查询 // 使用单位 名称模糊查询
if (!ObjectUtils.isEmpty(params.getString(USE_UNIT_NAME))) { if (!ObjectUtils.isEmpty(params.getString(USE_UNIT_NAME))) {
BoolQueryBuilder pBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder pBuilder = QueryBuilders.boolQuery();
...@@ -904,6 +916,9 @@ public class EquipClaimServiceImpl { ...@@ -904,6 +916,9 @@ public class EquipClaimServiceImpl {
jgRegisterInfoService.saveOrUpdateEquParams(new LinkedHashMap<>(equipInfo), new LinkedHashMap<>(equipParams), equList, record, timestamp, "edit"); jgRegisterInfoService.saveOrUpdateEquParams(new LinkedHashMap<>(equipInfo), new LinkedHashMap<>(equipParams), equList, record, timestamp, "edit");
// 更新es // 更新es
jgRegisterInfoService.checkEsData(record); jgRegisterInfoService.checkEsData(record);
eventPublisher.publish(new EquipCreateOrEditEvent(this, BusinessTypeEnum.JG_NEW_EQUIP.name(), Sets.newHashSet(record), EquipCreateOrEditEvent.EquipType.equip));
} }
/** /**
...@@ -1513,6 +1528,8 @@ public class EquipClaimServiceImpl { ...@@ -1513,6 +1528,8 @@ public class EquipClaimServiceImpl {
} }
equipInfo.put(PIPELINE_LIST, pipelineList); equipInfo.put(PIPELINE_LIST, pipelineList);
esEquipmentCategory.saveAll(esEquipmentCategoryList); esEquipmentCategory.saveAll(esEquipmentCategoryList);
eventPublisher.publish(new EquipCreateOrEditEvent(this, BusinessTypeEnum.JG_NEW_PROJECT.name(), Sets.newHashSet(projectContraption.getSequenceNbr() + ""), EquipCreateOrEditEvent.EquipType.project));
} }
/** /**
......
...@@ -211,7 +211,7 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg ...@@ -211,7 +211,7 @@ public class JgChangeRegistrationNameServiceImpl extends BaseService<JgChangeReg
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 600000)
public JgChangeRegistrationName save(String submitType, Map<String, JSONObject> jgRegistrationInfoMap) { public JgChangeRegistrationName save(String submitType, Map<String, JSONObject> jgRegistrationInfoMap) {
try { try {
ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class); ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
......
...@@ -47,7 +47,7 @@ public class JgResumeInfoServiceImpl extends BaseService<JgResumeInfoDto, JgResu ...@@ -47,7 +47,7 @@ public class JgResumeInfoServiceImpl extends BaseService<JgResumeInfoDto, JgResu
return info; return info;
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
this.baseMapper.insertBatchSomeColumn(jgResumeInfoCollection,500); this.baseMapper.insertBatchSomeColumn(jgResumeInfoCollection,200);
} }
/** /**
......
...@@ -197,7 +197,7 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc ...@@ -197,7 +197,7 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
@SuppressWarnings({"Duplicates", "rawtypes"}) @SuppressWarnings({"Duplicates", "rawtypes"})
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 600000)
public JgScrapCancelDto save(String submitType, Map<String, Object> mapParams) { public JgScrapCancelDto save(String submitType, Map<String, Object> mapParams) {
try { try {
ReginParams reginParams = this.getSelectedOrgInfo(); ReginParams reginParams = this.getSelectedOrgInfo();
...@@ -865,7 +865,7 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc ...@@ -865,7 +865,7 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 600000)
public void flowExecute(String equList, Long id, String instanceId, String operate, String comment, String nextTaskId) { public void flowExecute(String equList, Long id, String instanceId, String operate, String comment, String nextTaskId) {
String lockKey = CommonServiceImpl.buildJgExecuteLockKey(instanceId); String lockKey = CommonServiceImpl.buildJgExecuteLockKey(instanceId);
RLock lock = redissonClient.getLock(lockKey); RLock lock = redissonClient.getLock(lockKey);
...@@ -1131,4 +1131,30 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc ...@@ -1131,4 +1131,30 @@ public class JgScrapCancelServiceImpl extends BaseService<JgScrapCancelDto, JgSc
commonService.saveExecuteFlowData2Redis(jgScrapCancel.getInstanceId(), this.buildInstanceRuntimeData(jgScrapCancel)); commonService.saveExecuteFlowData2Redis(jgScrapCancel.getInstanceId(), this.buildInstanceRuntimeData(jgScrapCancel));
} }
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class)
public void handleScrapCancelWrongData(String applyNo) {
JgScrapCancel jgScrapCancel = this.baseMapper.selectOne(new LambdaQueryWrapper<JgScrapCancel>()
.in(JgScrapCancel::getApplyNo, applyNo)
.eq(JgScrapCancel::getIsDelete, 0));
WorkflowResultDto workflowResultDto = new WorkflowResultDto();
workflowResultDto.setNextExecutorRoleIds(jgScrapCancel.getNextExecuteIds());
workflowResultDto.setNextTaskCode("已完成");
workflowResultDto.setNextTaskId(jgScrapCancel.getNextTaskId());
workflowResultDto.setNextExecutorUserIds(jgScrapCancel.getNextExecuteUserIds());
jgScrapCancel.setNextExecuteUserIds("");
jgScrapCancel.setNextTaskId(jgScrapCancel.getNextTaskId());
JgScrapCancelDto scrapCancelDto = new JgScrapCancelDto();
BeanUtils.copyProperties(jgScrapCancel, scrapCancelDto);
scrapCancelDto.setAuditStatus(FlowStatusEnum.TO_BE_FINISHED.getName());
// 更新代办
TaskV2Model taskV2Model = updateTaskModel(scrapCancelDto, "0");
// 修改业务信息
updateInfoOther(jgScrapCancel, taskV2Model.getRoutePath());
// 发送数据变更消息
this.sendDataRefreshMsg(jgScrapCancel);
// 创建设备履历
this.createResume(jgScrapCancel, taskV2Model.getRoutePath());
}
} }
...@@ -2019,8 +2019,11 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -2019,8 +2019,11 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
param.put("NEXT_INSPECT_DATE", this.castDate2TimeStr(dataMap.getString("nextInspectDate"))); param.put("NEXT_INSPECT_DATE", this.castDate2TimeStr(dataMap.getString("nextInspectDate")));
param.put("USE_INNER_CODE", useInfo.getUseInnerCode()); param.put("USE_INNER_CODE", useInfo.getUseInnerCode());
param.put("IS_INTO_MANAGEMENT", true); param.put("IS_INTO_MANAGEMENT", true);
param.put("USE_PLACE_CODE", jsonObject.get("province") + "#" + jsonObject.get("city") + "#" + jsonObject.get("county") + "#" + jsonObject.get("factoryUseSiteStreet")); param.put("USE_PLACE_CODE", jsonObject == null ? "" :
param.put("USE_SITE_CODE", String.valueOf(jsonObject.get("usePlace"))); String.join("#",String.valueOf(jsonObject.getOrDefault("province", "")), String.valueOf(jsonObject.getOrDefault("city", "")),
String.valueOf(jsonObject.getOrDefault("county", "")), String.valueOf(jsonObject.getOrDefault("factoryUseSiteStreet", "")))
);
param.put("USE_SITE_CODE", jsonObject == null ? "" : String.valueOf(jsonObject.getOrDefault("usePlace", "")));
param.put("ORG_BRANCH_CODE", split[0]); param.put("ORG_BRANCH_CODE", split[0]);
param.put("ORG_BRANCH_NAME", split[1]); param.put("ORG_BRANCH_NAME", split[1]);
param.put("USC_UNIT_CREDIT_CODE", ""); param.put("USC_UNIT_CREDIT_CODE", "");
......
...@@ -1098,8 +1098,20 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -1098,8 +1098,20 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
} }
public Page<Map<String, Object>> getPageList(JgVehicleInformationDto dto, String sort, Page<Map<String, Object>> page, List<String> roleIds, String client) { public Page<Map<String, Object>> getPageList(JgVehicleInformationDto dto, String sort, Page<Map<String, Object>> page, List<String> roleIds, String client) {
try {
SortVo sortMap = commonService.sortFieldConversion(sort); SortVo sortMap = commonService.sortFieldConversion(sort);
return this.baseMapper.getListPage(page, sortMap, dto, roleIds, client); return this.baseMapper.getListPage(page, sortMap, dto, roleIds, client);
} catch (Exception ex) {
String msg = ex.getMessage() == null ? "" : ex.getMessage();
if (msg.contains("eyibc decrypt error")
|| msg.contains("EYIBCException")
|| msg.contains("olym jdbc error")
|| msg.contains("数据非法")
|| msg.contains("decrypt error, code: -65")) {
throw new BadRequest("数据完整性被破坏(解密失败),请联系管理员。");
}
throw new BadRequest("系统内部错误,请联系管理员。");
}
} }
private void updateEquipMessage(JgVehicleInformation jgVehicleInformation, JSONObject map, IdxBizJgRegisterInfo registerInfo, IdxBizJgOtherInfo otherInfo) { private void updateEquipMessage(JgVehicleInformation jgVehicleInformation, JSONObject map, IdxBizJgRegisterInfo registerInfo, IdxBizJgOtherInfo otherInfo) {
...@@ -2533,4 +2545,17 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -2533,4 +2545,17 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
public boolean countUseTimesForInvalid(Object code) { public boolean countUseTimesForInvalid(Object code) {
return jgVehicleInformationMapper.countUseTimesForInvalid(code) <= 0; return jgVehicleInformationMapper.countUseTimesForInvalid(code) <= 0;
} }
public void handleVehicleWrongData(String applyNo, String equDefineCode) {
JgVehicleInformation vehicleInformation = jgVehicleInformationMapper.selectOne(new LambdaQueryWrapper<JgVehicleInformation>()
.in(JgVehicleInformation::getApplyNo, applyNo)
.eq(JgVehicleInformation::getIsDelete, 0)
.ne(JgVehicleInformation::getStatus, "已作废"));
WorkflowResultDto workflowResultDto = new WorkflowResultDto();
workflowResultDto.setNextExecutorRoleIds(vehicleInformation.getNextExecuteIds());
workflowResultDto.setNextTaskCode("已完成");
workflowResultDto.setNextTaskId(vehicleInformation.getNextTaskId());
workflowResultDto.setNextExecutorUserIds(vehicleInformation.getNextExecuteUserIds());
this.updateData(vehicleInformation.getSequenceNbr(), "0", workflowResultDto, Boolean.FALSE, equDefineCode);
}
} }
\ No newline at end of file
...@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON; ...@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory; import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory;
import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto; import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto;
...@@ -270,13 +271,7 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -270,13 +271,7 @@ public class SafetyProblemTracingGenServiceImpl{
correctData.addAll(inspectionSet); correctData.addAll(inspectionSet);
} }
idxBizJgOtherInfoService.lambdaUpdate().set(IdxBizJgOtherInfo::getStatus, null) safetyProblemTracingService.updateOtherTableAndES(Sets.newHashSet(correctData));
.in(IdxBizJgOtherInfo::getRecord, correctData).update();
Iterable<ESEquipmentCategoryDto> equipEsDtoIter = esEquipmentCategory.findAllById(correctData);
for (ESEquipmentCategoryDto equipEsDto : equipEsDtoIter) {
equipEsDto.setProblemStatus(null);
}
esEquipmentCategory.saveAll(equipEsDtoIter);
logger.info("设备维保备案和检验超期数据修正完成,更新数据:{}条", correctData.size()); logger.info("设备维保备案和检验超期数据修正完成,更新数据:{}条", correctData.size());
} }
...@@ -304,6 +299,7 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -304,6 +299,7 @@ public class SafetyProblemTracingGenServiceImpl{
safetyProblemTracingService.lambdaUpdate() safetyProblemTracingService.lambdaUpdate()
.set(SafetyProblemTracing::getProblemStatusCode, SafetyProblemStatusEnum.HANDLED.getCode()) .set(SafetyProblemTracing::getProblemStatusCode, SafetyProblemStatusEnum.HANDLED.getCode())
.set(SafetyProblemTracing::getProblemStatus, SafetyProblemStatusEnum.HANDLED.getName()) .set(SafetyProblemTracing::getProblemStatus, SafetyProblemStatusEnum.HANDLED.getName())
.set(SafetyProblemTracing::getRecDate, new Date())
.in(SafetyProblemTracing::getSourceId, outOfMaintenanceEquipIds) .in(SafetyProblemTracing::getSourceId, outOfMaintenanceEquipIds)
.eq(SafetyProblemTracing::getProblemTypeCode, SafetyProblemTypeEnum.WBCQ.getProblemTypeCode()) .eq(SafetyProblemTracing::getProblemTypeCode, SafetyProblemTypeEnum.WBCQ.getProblemTypeCode())
.eq(SafetyProblemTracing::getIsDelete,Boolean.FALSE) .eq(SafetyProblemTracing::getIsDelete,Boolean.FALSE)
...@@ -335,6 +331,7 @@ public class SafetyProblemTracingGenServiceImpl{ ...@@ -335,6 +331,7 @@ public class SafetyProblemTracingGenServiceImpl{
safetyProblemTracingService.lambdaUpdate() safetyProblemTracingService.lambdaUpdate()
.set(SafetyProblemTracing::getProblemStatusCode, SafetyProblemStatusEnum.HANDLED.getCode()) .set(SafetyProblemTracing::getProblemStatusCode, SafetyProblemStatusEnum.HANDLED.getCode())
.set(SafetyProblemTracing::getProblemStatus, SafetyProblemStatusEnum.HANDLED.getName()) .set(SafetyProblemTracing::getProblemStatus, SafetyProblemStatusEnum.HANDLED.getName())
.set(SafetyProblemTracing::getRecDate, new Date())
.in(SafetyProblemTracing::getSourceId, outOfInspectionEquipIds) .in(SafetyProblemTracing::getSourceId, outOfInspectionEquipIds)
.eq(SafetyProblemTracing::getProblemTypeCode, SafetyProblemTypeEnum.JYCQ.getProblemTypeCode()) .eq(SafetyProblemTracing::getProblemTypeCode, SafetyProblemTypeEnum.JYCQ.getProblemTypeCode())
.eq(SafetyProblemTracing::getIsDelete,Boolean.FALSE) .eq(SafetyProblemTracing::getIsDelete,Boolean.FALSE)
......
...@@ -19,13 +19,10 @@ import com.yeejoin.amos.boot.module.jg.api.dto.SafetyProblemTracingDto; ...@@ -19,13 +19,10 @@ import com.yeejoin.amos.boot.module.jg.api.dto.SafetyProblemTracingDto;
import com.yeejoin.amos.boot.module.jg.api.entity.SafetyProblemTracing; import com.yeejoin.amos.boot.module.jg.api.entity.SafetyProblemTracing;
import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemSourceTypeEnum; import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemSourceTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemStatusEnum; import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemStatusEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.CommonMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.CommonMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.SafetyProblemTracingMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.SafetyProblemTracingMapper;
import com.yeejoin.amos.boot.module.jg.api.service.ISafetyProblemTracingService; import com.yeejoin.amos.boot.module.jg.api.service.ISafetyProblemTracingService;
import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgRegisterInfoService; import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgRegisterInfoService;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgInspectionDetectionInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgMaintenanceRecordInfo;
import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -48,6 +45,7 @@ import static org.springframework.jdbc.object.BatchSqlUpdate.DEFAULT_BATCH_SIZE; ...@@ -48,6 +45,7 @@ import static org.springframework.jdbc.object.BatchSqlUpdate.DEFAULT_BATCH_SIZE;
* @date 2024-05-21 * @date 2024-05-21
*/ */
@Service @Service
@Slf4j
public class SafetyProblemTracingServiceImpl extends BaseService<SafetyProblemTracingDto, SafetyProblemTracing, SafetyProblemTracingMapper> implements ISafetyProblemTracingService { public class SafetyProblemTracingServiceImpl extends BaseService<SafetyProblemTracingDto, SafetyProblemTracing, SafetyProblemTracingMapper> implements ISafetyProblemTracingService {
@Autowired @Autowired
...@@ -55,6 +53,12 @@ public class SafetyProblemTracingServiceImpl extends BaseService<SafetyProblemTr ...@@ -55,6 +53,12 @@ public class SafetyProblemTracingServiceImpl extends BaseService<SafetyProblemTr
@Autowired @Autowired
DataDictionaryServiceImpl iDataDictionaryService; DataDictionaryServiceImpl iDataDictionaryService;
@Autowired
IdxBizJgOtherInfoServiceImpl idxBizJgOtherInfoService;
@Autowired
ESEquipmentCategory esEquipmentCategory;
private static Map<String, String> regionCodeOrgCodeMap = new ConcurrentHashMap<>(); private static Map<String, String> regionCodeOrgCodeMap = new ConcurrentHashMap<>();
@Autowired @Autowired
CommonMapper commonMapper; CommonMapper commonMapper;
...@@ -294,4 +298,26 @@ public class SafetyProblemTracingServiceImpl extends BaseService<SafetyProblemTr ...@@ -294,4 +298,26 @@ public class SafetyProblemTracingServiceImpl extends BaseService<SafetyProblemTr
this.saveOrUpdateBatch(safetyProblemTracings); this.saveOrUpdateBatch(safetyProblemTracings);
} }
} }
/**
* 更新Other表和ES状态(提取公共方法)
*/
public void updateOtherTableAndES(Set<String> records) {
// 更新Other表
idxBizJgOtherInfoService.lambdaUpdate()
.set(IdxBizJgOtherInfo::getStatus, SafetyProblemStatusEnum.HANDLED.getCode())
.in(IdxBizJgOtherInfo::getRecord, records)
.update();
// 更新ES状态(添加异常处理)
try {
Iterable<ESEquipmentCategoryDto> esEquipmentIter = esEquipmentCategory.findAllById(records);
esEquipmentIter.forEach(dto ->
dto.setProblemStatus(SafetyProblemStatusEnum.HANDLED.getCode()));
esEquipmentCategory.saveAll(esEquipmentIter);
log.info("ES状态更新成功,记录数:{}", records.size());
} catch (Exception e) {
log.error("ES状态更新失败,设备record:{},错误原因:{}", records, e.getMessage(), e);
}
}
} }
\ No newline at end of file
...@@ -83,7 +83,7 @@ public class CodeUtil { ...@@ -83,7 +83,7 @@ public class CodeUtil {
* @param receiveCompanyCode 接收机构的行政区域代码 * @param receiveCompanyCode 接收机构的行政区域代码
* @return 地市级行政审批区域代码 * @return 地市级行政审批区域代码
*/ */
private String getCityRegionCode(String receiveCompanyCode) { public String getCityRegionCode(String receiveCompanyCode) {
// 需求《需要注意的是其中的行政区域代码直到地市一级,西咸、杨凌、韩城用自己的》,西咸组织机构独立的所以不需要单独排除 // 需求《需要注意的是其中的行政区域代码直到地市一级,西咸、杨凌、韩城用自己的》,西咸组织机构独立的所以不需要单独排除
if (Arrays.asList(EXCLUSION_CITY_REGIONS).contains(receiveCompanyCode)) { if (Arrays.asList(EXCLUSION_CITY_REGIONS).contains(receiveCompanyCode)) {
return receiveCompanyCode; return receiveCompanyCode;
......
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
FROM FROM
"tz_jyjc_opening_application" "tz_jyjc_opening_application"
where where
status = '6616') a, status = '已完成') a,
tz_base_enterprise_info b, tz_base_enterprise_info b,
(select cert_no, min(expiry_date) as expiry_date, unit_code, cert_type_code from tz_base_unit_licence GROUP BY cert_no,unit_code,cert_type_code) l (select cert_no, min(expiry_date) as expiry_date, unit_code, cert_type_code from tz_base_unit_licence GROUP BY cert_no,unit_code,cert_type_code) l
where where
...@@ -123,7 +123,7 @@ ...@@ -123,7 +123,7 @@
tz_base_enterprise_info ei tz_base_enterprise_info ei
where where
oa.unit_code = ei.use_unit_code oa.unit_code = ei.use_unit_code
and oa.status = 6616 and oa.status = '已完成'
</select> </select>
<select id="queryJyjcOpeningApplicationListByIds" <select id="queryJyjcOpeningApplicationListByIds"
resultType="com.yeejoin.amos.boot.module.jyjc.api.vo.JyjcOpeningApplicationVo"> resultType="com.yeejoin.amos.boot.module.jyjc.api.vo.JyjcOpeningApplicationVo">
......
...@@ -344,13 +344,12 @@ ...@@ -344,13 +344,12 @@
ur.rec_date ur.rec_date
</select> </select>
<select id="certificateCountByOrgCode" resultType="java.lang.Long"> <select id="certificateCountByOrgCode" resultType="java.lang.Long">
SELECT COUNT SELECT
(1) COUNT (1)
FROM FROM
tzs_jg_use_registration_manage A tzs_jg_use_registration_manage A
INNER JOIN privilege_company C ON A.receive_company_code = C.company_code
WHERE WHERE
C.org_code LIKE concat ( #{orgCode}, '%' ) A.supervise_org_code LIKE concat ( #{orgCode}, '%' )
and A.certificate_status = '已登记' and A.certificate_status = '已登记'
and A.is_delete = 0 and A.is_delete = 0
</select> </select>
...@@ -367,17 +366,15 @@ ...@@ -367,17 +366,15 @@
WHERE WHERE
T.status = '已完成' T.status = '已完成'
AND T.is_delete = 0 AND T.is_delete = 0
AND T.receive_company_org_code LIKE CONCAT ( #{orgCode}, '%' ) UNION ALL AND T.supervision_org_code LIKE CONCAT ( #{orgCode}, '%' ) UNION ALL
SELECT COUNT SELECT COUNT
( 1 ) ( 1 )
FROM FROM
tzs_jg_vehicle_information T, tzs_jg_vehicle_information T
privilege_company pc
WHERE WHERE
T.status = '已完成' T.status = '已完成'
AND T.is_delete = 0 AND T.is_delete = 0
AND T.receive_company_code = pc.company_code AND T.org_branch_code LIKE concat ( #{orgCode}, '%' )
AND pc.org_code LIKE concat ( #{orgCode}, '%' )
) )
</select> </select>
<select id="over15yearsCount" resultType="java.lang.Long"> <select id="over15yearsCount" resultType="java.lang.Long">
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
((b.supervise_org_code != '50' and b.supervise_org_code LIKE CONCAT (#{orgCode}, '%')) ((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 ('%', #{regionCode}, '%'))) or (b.supervise_org_code = '50' and b.office_region LIKE CONCAT ('%', #{regionCode}, '%')))
AND (b.unit_type LIKE '%检验机构%' OR b.unit_type LIKE '%检测机构%') AND (b.unit_type LIKE '%检验机构%' OR b.unit_type LIKE '%检测机构%')
AND b.unit_type NOT LIKE '%检验检测机构%'
</select> </select>
<select id="countAllRegThirdInspectCompany" resultType="java.lang.Long"> <select id="countAllRegThirdInspectCompany" resultType="java.lang.Long">
SELECT SELECT
...@@ -25,6 +26,7 @@ ...@@ -25,6 +26,7 @@
#{code} #{code}
</foreach> </foreach>
AND (b.unit_type LIKE '%检验机构%' OR b.unit_type LIKE '%检测机构%') AND (b.unit_type LIKE '%检验机构%' OR b.unit_type LIKE '%检测机构%')
AND b.unit_type NOT LIKE '%检验检测机构%'
</select> </select>
<select id="countAllOpenBizInspectCompany" resultType="java.lang.Long"> <select id="countAllOpenBizInspectCompany" resultType="java.lang.Long">
SELECT SELECT
...@@ -34,7 +36,7 @@ ...@@ -34,7 +36,7 @@
tz_base_enterprise_info b tz_base_enterprise_info b
WHERE WHERE
a.unit_code = b.use_unit_code a.unit_code = b.use_unit_code
AND a.status = 6616 AND a.status = '已完成'
and and
(( b.supervise_org_code != '50' AND b.supervise_org_code LIKE CONCAT ( #{orgCode}, '%' ) ) (( 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 ( '%', #{regionCode}, '%' ))) OR ( b.supervise_org_code = '50' AND b.office_region LIKE CONCAT ( '%', #{regionCode}, '%' )))
......
package com.yeejoin.amos.boot.module.statistcs.biz.init; package com.yeejoin.amos.boot.module.statistcs.biz.init;
import com.yeejoin.amos.boot.module.statistcs.biz.service.impl.AQZSDPStatisticsServiceImpl; import com.yeejoin.amos.boot.module.statistcs.biz.service.impl.JGDPStatisticsServiceImpl;
import com.yeejoin.amos.boot.module.statistcs.biz.service.impl.StCommonServiceImpl; import com.yeejoin.amos.boot.module.statistcs.biz.service.impl.StCommonServiceImpl;
import com.yeejoin.amos.component.robot.AmosRequestContext; import com.yeejoin.amos.component.robot.AmosRequestContext;
import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationArguments;
...@@ -16,12 +16,14 @@ public class DataInitAfterRuning implements ApplicationRunner { ...@@ -16,12 +16,14 @@ public class DataInitAfterRuning implements ApplicationRunner {
private StCommonServiceImpl stCommonService; private StCommonServiceImpl stCommonService;
private JGDPStatisticsServiceImpl jgdpStatisticsService;
private AmosRequestContext amosRequestContext; private AmosRequestContext amosRequestContext;
public DataInitAfterRuning(StCommonServiceImpl stCommonService, AmosRequestContext amosRequestContext) { public DataInitAfterRuning(StCommonServiceImpl stCommonService, AmosRequestContext amosRequestContext, JGDPStatisticsServiceImpl jgdpStatisticsService) {
this.stCommonService = stCommonService; this.stCommonService = stCommonService;
this.amosRequestContext = amosRequestContext; this.amosRequestContext = amosRequestContext;
this.jgdpStatisticsService = jgdpStatisticsService;
} }
@Override @Override
...@@ -31,5 +33,6 @@ public class DataInitAfterRuning implements ApplicationRunner { ...@@ -31,5 +33,6 @@ public class DataInitAfterRuning implements ApplicationRunner {
RequestContext.setProduct(amosRequestContext.getProduct()); RequestContext.setProduct(amosRequestContext.getProduct());
RequestContext.setToken(amosRequestContext.getToken()); RequestContext.setToken(amosRequestContext.getToken());
stCommonService.init(); stCommonService.init();
jgdpStatisticsService.init();
} }
} }
package com.yeejoin.amos.boot.module.statistcs.biz.service.impl; package com.yeejoin.amos.boot.module.statistcs.biz.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -14,12 +13,13 @@ import com.yeejoin.amos.boot.module.common.api.dto.LegendDataDto; ...@@ -14,12 +13,13 @@ import com.yeejoin.amos.boot.module.common.api.dto.LegendDataDto;
import com.yeejoin.amos.boot.module.common.api.enums.IssueMainBodyEnum; import com.yeejoin.amos.boot.module.common.api.enums.IssueMainBodyEnum;
import com.yeejoin.amos.boot.module.common.api.enums.IssueProblemLevelEnum; import com.yeejoin.amos.boot.module.common.api.enums.IssueProblemLevelEnum;
import com.yeejoin.amos.boot.module.common.api.enums.IssueTypeEnum; import com.yeejoin.amos.boot.module.common.api.enums.IssueTypeEnum;
import com.yeejoin.amos.boot.module.common.api.enums.StatisticalAnalysisEnum;
import com.yeejoin.amos.boot.module.common.biz.service.impl.TZSCommonServiceImpl;
import com.yeejoin.amos.boot.module.jg.api.enums.DPMapStatisticsItemEnum; import com.yeejoin.amos.boot.module.jg.api.enums.DPMapStatisticsItemEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemStatusEnum; import com.yeejoin.amos.boot.module.jg.api.enums.SafetyProblemStatusEnum;
import com.yeejoin.amos.boot.module.statistics.api.dto.EquipQuestionNumCountDto; import com.yeejoin.amos.boot.module.statistics.api.dto.EquipQuestionNumCountDto;
import com.yeejoin.amos.boot.module.statistics.api.dto.SafetyProblemTracingDto; import com.yeejoin.amos.boot.module.statistics.api.dto.SafetyProblemTracingDto;
import com.yeejoin.amos.boot.module.statistics.api.dto.SecurityIndexCountItemDto; import com.yeejoin.amos.boot.module.statistics.api.dto.SecurityIndexCountItemDto;
import com.yeejoin.amos.boot.module.statistics.api.enums.StatisticalAnalysisEnum;
import com.yeejoin.amos.boot.module.statistics.api.mapper.AQZSDPStatisticsMapper; import com.yeejoin.amos.boot.module.statistics.api.mapper.AQZSDPStatisticsMapper;
import com.yeejoin.amos.boot.module.statistics.api.mapper.CylinderStatisticsMapper; import com.yeejoin.amos.boot.module.statistics.api.mapper.CylinderStatisticsMapper;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum;
...@@ -101,6 +101,8 @@ public class AQZSDPStatisticsServiceImpl { ...@@ -101,6 +101,8 @@ public class AQZSDPStatisticsServiceImpl {
private StCommonServiceImpl stCommonService; private StCommonServiceImpl stCommonService;
private TZSCommonServiceImpl tstCommonService;
private JGDPStatisticsServiceImpl jgDPStatisticsService; private JGDPStatisticsServiceImpl jgDPStatisticsService;
private DataDictionaryMapper dataDictionaryMapper; private DataDictionaryMapper dataDictionaryMapper;
...@@ -109,7 +111,15 @@ public class AQZSDPStatisticsServiceImpl { ...@@ -109,7 +111,15 @@ public class AQZSDPStatisticsServiceImpl {
private ComprehensiveStatisticalAnalysisServiceImpl statisticalAnalysisService; private ComprehensiveStatisticalAnalysisServiceImpl statisticalAnalysisService;
public AQZSDPStatisticsServiceImpl(RestHighLevelClient restHighLevelClient, AQZSDPStatisticsMapper statisticsMapper, TzBaseEnterpriseInfoMapper enterpriseInfoMapper, TzsUserInfoMapper userInfoMapper, CylinderStatisticsMapper cylinderStatisticsMapper, StCommonServiceImpl stCommonService, DataDictionaryMapper dataDictionaryMapper, JGDPStatisticsServiceImpl jgDPStatisticsService) { public AQZSDPStatisticsServiceImpl(RestHighLevelClient restHighLevelClient,
AQZSDPStatisticsMapper statisticsMapper,
TzBaseEnterpriseInfoMapper enterpriseInfoMapper,
TzsUserInfoMapper userInfoMapper,
CylinderStatisticsMapper cylinderStatisticsMapper,
StCommonServiceImpl stCommonService,
DataDictionaryMapper dataDictionaryMapper,
JGDPStatisticsServiceImpl jgDPStatisticsService,
TZSCommonServiceImpl tstCommonService) {
this.restHighLevelClient = restHighLevelClient; this.restHighLevelClient = restHighLevelClient;
this.statisticsMapper = statisticsMapper; this.statisticsMapper = statisticsMapper;
this.enterpriseInfoMapper = enterpriseInfoMapper; this.enterpriseInfoMapper = enterpriseInfoMapper;
...@@ -118,6 +128,7 @@ public class AQZSDPStatisticsServiceImpl { ...@@ -118,6 +128,7 @@ public class AQZSDPStatisticsServiceImpl {
this.stCommonService = stCommonService; this.stCommonService = stCommonService;
this.dataDictionaryMapper = dataDictionaryMapper; this.dataDictionaryMapper = dataDictionaryMapper;
this.jgDPStatisticsService = jgDPStatisticsService; this.jgDPStatisticsService = jgDPStatisticsService;
this.tstCommonService = tstCommonService;
} }
...@@ -501,8 +512,16 @@ public class AQZSDPStatisticsServiceImpl { ...@@ -501,8 +512,16 @@ public class AQZSDPStatisticsServiceImpl {
List<String> enumNameList = IssueTypeEnum.getEnumNameListByMainBody("1"); List<String> enumNameList = IssueTypeEnum.getEnumNameListByMainBody("1");
String orgCode = stCommonService.getAndSetOrgCode(dpFilterParamDto.getCityCode()); String orgCode = stCommonService.getAndSetOrgCode(dpFilterParamDto.getCityCode());
if (orgCode != null) { if (orgCode != null) {
List<CountDto> countDtos = statisticsMapper.selectByOrgAndProblemType(orgCode, enumNameList, dpFilterParamDto, IssueMainBodyEnum.PERSON.getCode(), null); BoolQueryBuilder overdueQuery = new BoolQueryBuilder();
countDtos.forEach(t -> dataMap.put(t.getKeyStr(), t.getLongValue())); overdueQuery.must(QueryBuilders.prefixQuery("superviseOrgCode", orgCode));
tstCommonService.buildExpiryDateQueryBuilder(overdueQuery, "overdue", "licenses", "licenses.expiryDate");
Long overNumber = stCommonService.getNestedQueryStatisticCount(overdueQuery, StatisticalAnalysisEnum.person.getKey(), "licenses", "expiryDate");
BoolQueryBuilder nearQuery = new BoolQueryBuilder();
nearQuery.must(QueryBuilders.prefixQuery("superviseOrgCode", orgCode));
tstCommonService.buildExpiryDateQueryBuilder(nearQuery, "near", "licenses", "licenses.expiryDate");
Long nearNumber = stCommonService.getNestedQueryStatisticCount(nearQuery, StatisticalAnalysisEnum.person.getKey(), "licenses", "expiryDate");
dataMap.put(IssueTypeEnum.LICENSE_OVERDUE_PERSON.getName(), overNumber);
dataMap.put(IssueTypeEnum.LICENSE_EXPIRY_PERSON.getName(), nearNumber);
} }
for (int i = 0; i < enumNameList.size(); i++) { for (int i = 0; i < enumNameList.size(); i++) {
xdata.add(enumNameList.get(i)); xdata.add(enumNameList.get(i));
...@@ -891,7 +910,7 @@ public class AQZSDPStatisticsServiceImpl { ...@@ -891,7 +910,7 @@ public class AQZSDPStatisticsServiceImpl {
dpFilterParamDto.setBeginDate(cn.hutool.core.date.DateUtil.offsetDay(new Date(), -30).toDateStr()); dpFilterParamDto.setBeginDate(cn.hutool.core.date.DateUtil.offsetDay(new Date(), -30).toDateStr());
} }
if (StringUtils.isEmpty(dpFilterParamDto.getEndDate())) { if (StringUtils.isEmpty(dpFilterParamDto.getEndDate())) {
dpFilterParamDto.setEndDate(DateUtil.today()); dpFilterParamDto.setEndDate(cn.hutool.core.date.DateUtil.offsetDay(new Date(), -1).toDateStr());
} }
} }
...@@ -910,7 +929,7 @@ public class AQZSDPStatisticsServiceImpl { ...@@ -910,7 +929,7 @@ public class AQZSDPStatisticsServiceImpl {
result.put("total", hasSupervisoryCodeEquipCount); result.put("total", hasSupervisoryCodeEquipCount);
//2.压力管道长度统计 //2.压力管道长度统计
// stCommonService.staticsCenterMapCountDataForPipeline(result, orgCode,true, false); // stCommonService.staticsCenterMapCountDataForPipeline(result, orgCode,true, false);
jgDPStatisticsService.staticsCenterMapCountPipLine(result, orgCode, true); jgDPStatisticsService.staticsCenterMapCountPipLine(result, orgCode, true, false);
//3.单位数量统计 //3.单位数量统计
// 单位统计修改为查询es // 单位统计修改为查询es
// this.staticsCenterMapCountDataForCompany(result, orgCode, dpFilterParamDto.getCityCode()); // this.staticsCenterMapCountDataForCompany(result, orgCode, dpFilterParamDto.getCityCode());
...@@ -1024,7 +1043,7 @@ public class AQZSDPStatisticsServiceImpl { ...@@ -1024,7 +1043,7 @@ public class AQZSDPStatisticsServiceImpl {
stCommonService.staticsCenterMapCountDataForEquip(result, cylinderNum, orgCode,true,true, false); stCommonService.staticsCenterMapCountDataForEquip(result, cylinderNum, orgCode,true,true, false);
// 2. 压力管道长度统计 // 2. 压力管道长度统计
// stCommonService.staticsCenterMapCountDataForPipeline(result, orgCode,true, false); // stCommonService.staticsCenterMapCountDataForPipeline(result, orgCode,true, false);
jgDPStatisticsService.staticsCenterMapCountPipLine(result, orgCode, true); jgDPStatisticsService.staticsCenterMapCountPipLine(result, orgCode, true, false);
//3.单位数量统计 //3.单位数量统计
// 单位统计修改为查询es // 单位统计修改为查询es
// this.staticsCenterMapCountDataForCompany(result, orgCode, dpFilterParamDto.getCityCode()); // this.staticsCenterMapCountDataForCompany(result, orgCode, dpFilterParamDto.getCityCode());
......
...@@ -20,6 +20,7 @@ import com.yeejoin.amos.boot.biz.common.utils.RequestContextWrapper; ...@@ -20,6 +20,7 @@ import com.yeejoin.amos.boot.biz.common.utils.RequestContextWrapper;
import com.yeejoin.amos.boot.module.common.api.dao.EsEquipmentDao; import com.yeejoin.amos.boot.module.common.api.dao.EsEquipmentDao;
import com.yeejoin.amos.boot.module.common.api.dto.TechParamItem; import com.yeejoin.amos.boot.module.common.api.dto.TechParamItem;
import com.yeejoin.amos.boot.module.common.api.entity.ESEquipmentInfo; import com.yeejoin.amos.boot.module.common.api.entity.ESEquipmentInfo;
import com.yeejoin.amos.boot.module.common.api.enums.StatisticalAnalysisEnum;
import com.yeejoin.amos.boot.module.common.api.enums.UnitTypeNewEnum; import com.yeejoin.amos.boot.module.common.api.enums.UnitTypeNewEnum;
import com.yeejoin.amos.boot.module.common.biz.service.impl.TZSCommonServiceImpl; import com.yeejoin.amos.boot.module.common.biz.service.impl.TZSCommonServiceImpl;
import com.yeejoin.amos.boot.module.common.biz.utils.TechParamUtil; import com.yeejoin.amos.boot.module.common.biz.utils.TechParamUtil;
...@@ -3357,7 +3358,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -3357,7 +3358,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
.minimumShouldMatch(1); .minimumShouldMatch(1);
} else if (UnitCategoryEnum.filling.getCode().equals(type)) { } else if (UnitCategoryEnum.filling.getCode().equals(type)) {
boolMust.must(QueryBuilders.wildcardQuery("unitType.keyword", "*" + UnitTypeEnum.czdw.getName() + "*")); boolMust.must(QueryBuilders.wildcardQuery("unitType.keyword", "*" + UnitTypeEnum.czdw.getName() + "*"));
} else if ("inspection".equals(type)) { } else if (UnitCategoryEnum.inspection.getCode().equals(type)) {
boolMust.should(QueryBuilders.wildcardQuery("unitType.keyword", "*" + UnitTypeEnum.jyjg.getName() + "*")) boolMust.should(QueryBuilders.wildcardQuery("unitType.keyword", "*" + UnitTypeEnum.jyjg.getName() + "*"))
.should(QueryBuilders.wildcardQuery("unitType.keyword", "*" + UnitTypeEnum.jcjg.getName() + "*")) .should(QueryBuilders.wildcardQuery("unitType.keyword", "*" + UnitTypeEnum.jcjg.getName() + "*"))
.minimumShouldMatch(1); .minimumShouldMatch(1);
......
...@@ -7,8 +7,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -7,8 +7,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.common.api.enums.StatisticalAnalysisEnum;
import com.yeejoin.amos.boot.module.common.api.enums.UnitTypeEnum; import com.yeejoin.amos.boot.module.common.api.enums.UnitTypeEnum;
import com.yeejoin.amos.boot.module.statistics.api.enums.StatisticalAnalysisEnum;
import com.yeejoin.amos.boot.module.statistics.api.mapper.EnterpriseBizMapper; import com.yeejoin.amos.boot.module.statistics.api.mapper.EnterpriseBizMapper;
import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseEnterpriseInfoDto; import com.yeejoin.amos.boot.module.ymt.api.dto.TzBaseEnterpriseInfoDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.PageParam; import com.yeejoin.amos.boot.module.ymt.api.entity.PageParam;
......
...@@ -4,8 +4,9 @@ import cn.hutool.core.util.StrUtil; ...@@ -4,8 +4,9 @@ import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamForDetailDto; import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamForDetailDto;
import com.yeejoin.amos.boot.module.common.api.enums.StatisticalAnalysisEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.SafetyProblemTracingMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.SafetyProblemTracingMapper;
import com.yeejoin.amos.boot.module.statistics.api.enums.StatisticalAnalysisEnum; import com.yeejoin.amos.boot.module.statistics.api.enums.InformationManageTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum;
import com.yeejoin.amos.feign.systemctl.model.RegionModel; import com.yeejoin.amos.feign.systemctl.model.RegionModel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -50,6 +51,7 @@ public class EquipmentStaticsServiceImpl { ...@@ -50,6 +51,7 @@ public class EquipmentStaticsServiceImpl {
private static final String EQUSTATE = "EQU_STATE"; private static final String EQUSTATE = "EQU_STATE";
private static final String SUPERVISORYCODE = "SUPERVISORY_CODE"; private static final String SUPERVISORYCODE = "SUPERVISORY_CODE";
private static final String INFORMATIONSITUATION = "INFORMATION_SITUATION";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
...@@ -284,6 +286,11 @@ public class EquipmentStaticsServiceImpl { ...@@ -284,6 +286,11 @@ public class EquipmentStaticsServiceImpl {
} else { } else {
dto2.put("IS_SUPERVISORY_CODE", "未赋码"); dto2.put("IS_SUPERVISORY_CODE", "未赋码");
} }
if (!ValidationUtil.isEmpty(dto2.get(INFORMATIONSITUATION))) {
String string = dto2.get(INFORMATIONSITUATION).toString();
String informationSituation = InformationManageTypeEnum.getName(string);
dto2.put(INFORMATIONSITUATION, informationSituation);
}
list.add(dto2); list.add(dto2);
} }
total = response.getInternalResponse().hits().getTotalHits().value; total = response.getInternalResponse().hits().getTotalHits().value;
...@@ -373,7 +380,7 @@ public class EquipmentStaticsServiceImpl { ...@@ -373,7 +380,7 @@ public class EquipmentStaticsServiceImpl {
* 设备类别 * 设备类别
*/ */
if (StrUtil.isNotEmpty(dpFilterParamForDetailDto.getEquCategory())) { if (StrUtil.isNotEmpty(dpFilterParamForDetailDto.getEquCategory())) {
boolMust.must(QueryBuilders.wildcardQuery("EQU_CATEGORY", "*" + dpFilterParamForDetailDto.getEquCategory() + "*")); boolMust.must(QueryBuilders.termQuery("EQU_CATEGORY_CODE", dpFilterParamForDetailDto.getEquCategory()));
} }
if (!CollectionUtils.isEmpty(dpFilterParamForDetailDto.getNextInspectionDate())) { if (!CollectionUtils.isEmpty(dpFilterParamForDetailDto.getNextInspectionDate())) {
......
...@@ -37,7 +37,6 @@ import com.yeejoin.amos.boot.module.statistcs.biz.utils.QueryBuilderUtils; ...@@ -37,7 +37,6 @@ import com.yeejoin.amos.boot.module.statistcs.biz.utils.QueryBuilderUtils;
import com.yeejoin.amos.boot.module.statistcs.factory.EnhancedDynamicQueryBuilder; import com.yeejoin.amos.boot.module.statistcs.factory.EnhancedDynamicQueryBuilder;
import com.yeejoin.amos.boot.module.statistics.api.dto.*; import com.yeejoin.amos.boot.module.statistics.api.dto.*;
import com.yeejoin.amos.boot.module.statistics.api.enums.RegulatoryUnitLevelEnum; import com.yeejoin.amos.boot.module.statistics.api.enums.RegulatoryUnitLevelEnum;
import com.yeejoin.amos.boot.module.statistics.api.enums.StatisticalAnalysisEnum;
import com.yeejoin.amos.boot.module.statistics.api.mapper.CylinderBusinessStatisticsMapper; import com.yeejoin.amos.boot.module.statistics.api.mapper.CylinderBusinessStatisticsMapper;
import com.yeejoin.amos.boot.module.statistics.api.mapper.JGStatisticsMapper; import com.yeejoin.amos.boot.module.statistics.api.mapper.JGStatisticsMapper;
import com.yeejoin.amos.boot.module.statistics.api.mapper.ZLStatisticsMapper; import com.yeejoin.amos.boot.module.statistics.api.mapper.ZLStatisticsMapper;
...@@ -285,6 +284,11 @@ public class JGDPStatisticsServiceImpl { ...@@ -285,6 +284,11 @@ public class JGDPStatisticsServiceImpl {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
public void init() {
DPFilterParamDto dpFilterParamDto = new DPFilterParamDto();
dpFilterParamDto.setCityCode("610000");
this.centerMapCountForGlobalNoSupervisoryCode(dpFilterParamDto);
}
private List<LegendDataDto> buildLegendDataList() { private List<LegendDataDto> buildLegendDataList() {
List<LegendDataDto> legendDataDtos = new ArrayList<>(); List<LegendDataDto> legendDataDtos = new ArrayList<>();
...@@ -397,7 +401,7 @@ public class JGDPStatisticsServiceImpl { ...@@ -397,7 +401,7 @@ public class JGDPStatisticsServiceImpl {
//2.压力管道长度统计 //2.压力管道长度统计
// 修改为查询es // 修改为查询es
// stCommonService.staticsCenterMapCountDataForPipeline(result, orgCode, true, false); // stCommonService.staticsCenterMapCountDataForPipeline(result, orgCode, true, false);
this.staticsCenterMapCountPipLine(result, orgCode, true); this.staticsCenterMapCountPipLine(result, orgCode, true, false);
//3.单位数量统计 //3.单位数量统计
this.staticsCenterMapCountDataForCompany(result, orgCode, dpFilterParamDto.getCityCode()); this.staticsCenterMapCountDataForCompany(result, orgCode, dpFilterParamDto.getCityCode());
//4.人员数量统计 //4.人员数量统计
...@@ -416,7 +420,7 @@ public class JGDPStatisticsServiceImpl { ...@@ -416,7 +420,7 @@ public class JGDPStatisticsServiceImpl {
//1.8大类设备数量统计,压力容器里包括气瓶所以需要特殊处理,在统计压力容器时去掉气瓶的数量 //1.8大类设备数量统计,压力容器里包括气瓶所以需要特殊处理,在统计压力容器时去掉气瓶的数量
stCommonService.staticsCenterMapCountDataForEquip(result, cylinderNum, orgCode, false, true, false); stCommonService.staticsCenterMapCountDataForEquip(result, cylinderNum, orgCode, false, true, false);
//2.压力管道长度统计 //2.压力管道长度统计
this.staticsCenterMapCountPipLine(result, orgCode, false); this.staticsCenterMapCountPipLine(result, orgCode, false, false);
// stCommonService.staticsCenterMapCountDataForPipeline(result, orgCode, false, false); // stCommonService.staticsCenterMapCountDataForPipeline(result, orgCode, false, false);
return result; return result;
} }
...@@ -434,7 +438,7 @@ public class JGDPStatisticsServiceImpl { ...@@ -434,7 +438,7 @@ public class JGDPStatisticsServiceImpl {
// 2. 压力管道长度统计 // 2. 压力管道长度统计
// 修改为查询es // 修改为查询es
//stCommonService.staticsCenterMapCountDataForPipeline(result, orgCode, true, false); //stCommonService.staticsCenterMapCountDataForPipeline(result, orgCode, true, false);
this.staticsCenterMapCountPipLine(result, orgCode, true); this.staticsCenterMapCountPipLine(result, orgCode, true, false);
// 3. 人员数量统计 // 3. 人员数量统计
this.staticsCenterMapCountDataForPerson(result, dpFilterParamDto, orgCode); this.staticsCenterMapCountDataForPerson(result, dpFilterParamDto, orgCode);
return result; return result;
...@@ -492,15 +496,21 @@ public class JGDPStatisticsServiceImpl { ...@@ -492,15 +496,21 @@ public class JGDPStatisticsServiceImpl {
} }
public void staticsCenterMapCountPipLine(Map<String, Object> result, String orgCode, Boolean isMatchSupervisoryCode) { public void staticsCenterMapCountPipLine(Map<String, Object> result, String orgCode, Boolean isMatchSupervisoryCode,Boolean isOrgBranchCodeExactMatch) {
SearchRequest request = new SearchRequest(); SearchRequest request = new SearchRequest();
SearchSourceBuilder builder = new SearchSourceBuilder(); SearchSourceBuilder builder = new SearchSourceBuilder();
request.indices(StatisticalAnalysisEnum.equip.getKey()); request.indices(StatisticalAnalysisEnum.equip.getKey());
BigDecimal pipeLong; BigDecimal pipeLong;
BoolQueryBuilder pipeLengthQuery = new BoolQueryBuilder(); BoolQueryBuilder pipeLengthQuery = new BoolQueryBuilder();
pipeLengthQuery.must(QueryBuilders.prefixQuery("ORG_BRANCH_CODE", orgCode));
pipeLengthQuery.must(QueryBuilders.existsQuery("pipeLength")); pipeLengthQuery.must(QueryBuilders.existsQuery("pipeLength"));
if (isOrgBranchCodeExactMatch) {
// 按照管辖机构区域信息精确查询
pipeLengthQuery.must(QueryBuilders.termQuery("ORG_BRANCH_CODE", orgCode));
} else {
// 按照管辖机构区域信息模糊查询
pipeLengthQuery.must(QueryBuilders.prefixQuery("ORG_BRANCH_CODE", orgCode)); pipeLengthQuery.must(QueryBuilders.prefixQuery("ORG_BRANCH_CODE", orgCode));
}
if (isMatchSupervisoryCode) { if (isMatchSupervisoryCode) {
pipeLengthQuery.must(existsQuery("SUPERVISORY_CODE")); pipeLengthQuery.must(existsQuery("SUPERVISORY_CODE"));
pipeLengthQuery.mustNot(QueryBuilders.termQuery("SUPERVISORY_CODE", "")); pipeLengthQuery.mustNot(QueryBuilders.termQuery("SUPERVISORY_CODE", ""));
...@@ -1100,14 +1110,14 @@ public class JGDPStatisticsServiceImpl { ...@@ -1100,14 +1110,14 @@ public class JGDPStatisticsServiceImpl {
public List<Map<String, Object>> equStateCount(DPFilterParamDto dpFilterParamDto) { public List<Map<String, Object>> equStateCount(DPFilterParamDto dpFilterParamDto) {
List<Map<String, Object>> resultList; List<Map<String, Object>> resultList;
SearchRequest request = new SearchRequest(); SearchRequest request = new SearchRequest();
request.indices("idx_biz_view_jg_all"); request.indices(StatisticalAnalysisEnum.equip.getKey());
BoolQueryBuilder boolMust = QueryBuilders.boolQuery(); BoolQueryBuilder boolMust = QueryBuilders.boolQuery();
String orgCode = stCommonService.getAndSetOrgCode(dpFilterParamDto.getCityCode()); String orgCode = stCommonService.getAndSetOrgCode(dpFilterParamDto.getCityCode());
if (orgCode == null) { if (orgCode == null) {
return this.setDefaultEquStateCount(); return this.setDefaultEquStateCount();
} }
// 按照管辖机构区域信息模糊查询 // 按照管辖机构区域信息模糊查询
boolMust.must(QueryBuilders.wildcardQuery("ORG_BRANCH_CODE.keyword", QueryParser.escape(orgCode) + "*")); boolMust.must(QueryBuilders.prefixQuery("ORG_BRANCH_CODE", QueryParser.escape(orgCode)));
//已赋码 //已赋码
boolMust.must(QueryBuilders.existsQuery("SUPERVISORY_CODE")); boolMust.must(QueryBuilders.existsQuery("SUPERVISORY_CODE"));
boolMust.mustNot(QueryBuilders.termQuery("SUPERVISORY_CODE", "null")); boolMust.mustNot(QueryBuilders.termQuery("SUPERVISORY_CODE", "null"));
...@@ -1844,7 +1854,7 @@ public class JGDPStatisticsServiceImpl { ...@@ -1844,7 +1854,7 @@ public class JGDPStatisticsServiceImpl {
result.put("total", hasSupervisoryCodeEquipCount); result.put("total", hasSupervisoryCodeEquipCount);
// 2.压力管道长度统计 // 2.压力管道长度统计
// stCommonService.staticsCenterMapCountDataForPipeline(result, orgCode, true, false); // stCommonService.staticsCenterMapCountDataForPipeline(result, orgCode, true, false);
this.staticsCenterMapCountPipLine(result, orgCode, true); this.staticsCenterMapCountPipLine(result, orgCode, true, false);
// 3.已纳管设备总数 // 3.已纳管设备总数
this.staticsCenterMapCountDataForEquipIsManage(result); this.staticsCenterMapCountDataForEquipIsManage(result);
// 4.登记证总数 // 4.登记证总数
...@@ -3889,7 +3899,8 @@ public class JGDPStatisticsServiceImpl { ...@@ -3889,7 +3899,8 @@ public class JGDPStatisticsServiceImpl {
countItemDto.setGl(String.valueOf(data.get(DPMapStatisticsItemEnum.BOILERS.getCode()))); countItemDto.setGl(String.valueOf(data.get(DPMapStatisticsItemEnum.BOILERS.getCode())));
countItemDto.setYlrq(String.valueOf(data.get(DPMapStatisticsItemEnum.PRESSURE_VESSELS.getCode()))); countItemDto.setYlrq(String.valueOf(data.get(DPMapStatisticsItemEnum.PRESSURE_VESSELS.getCode())));
// 2. 压力管道长度统计 // 2. 压力管道长度统计
countItemDto.setYlgd(stCommonService.staticsCenterMapCountDataForPipeline(data, orgCode, true, isOrgBranchCodeExactMatch)); this.staticsCenterMapCountPipLine(data, orgCode, true,isOrgBranchCodeExactMatch);
// countItemDto.setYlgd(stCommonService.staticsCenterMapCountDataForPipeline(data, orgCode, true, isOrgBranchCodeExactMatch));
// 如果是地市数据则计算上线率,上线率=系统已有数据/最新期底数x100% // 如果是地市数据则计算上线率,上线率=系统已有数据/最新期底数x100%
if ("610000".equals(r.getParentRegionCode())) { if ("610000".equals(r.getParentRegionCode())) {
Map<String, Object> baselineMap = baselineData.stream().filter(d -> d.get("city_code").equals(regionCode)).findFirst().orElse(null); Map<String, Object> baselineMap = baselineData.stream().filter(d -> d.get("city_code").equals(regionCode)).findFirst().orElse(null);
......
...@@ -109,6 +109,8 @@ public class JYJCDPStatisticsServiceImpl { ...@@ -109,6 +109,8 @@ public class JYJCDPStatisticsServiceImpl {
private JGDPStatisticsServiceImpl jgDPStatisticsService; private JGDPStatisticsServiceImpl jgDPStatisticsService;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
/** /**
* 法定检验机构名单 * 法定检验机构名单
*/ */
...@@ -548,7 +550,7 @@ public class JYJCDPStatisticsServiceImpl { ...@@ -548,7 +550,7 @@ public class JYJCDPStatisticsServiceImpl {
result.put("total", hasSupervisoryCodeEquipCount); result.put("total", hasSupervisoryCodeEquipCount);
// 3.压力管道统计 // 3.压力管道统计
// stCommonService.staticsCenterMapCountDataForPipeline(result, orgCode,true, false); // stCommonService.staticsCenterMapCountDataForPipeline(result, orgCode,true, false);
jgDPStatisticsService.staticsCenterMapCountPipLine(result, orgCode, true); jgDPStatisticsService.staticsCenterMapCountPipLine(result, orgCode, true, false);
// 4.报检数量统计 // 4.报检数量统计
this.staticsCenterMapCountDataReporting(result, dpFilterParamDto); this.staticsCenterMapCountDataReporting(result, dpFilterParamDto);
// 5.检验检测临期设备数数量统计 // 5.检验检测临期设备数数量统计
...@@ -566,6 +568,12 @@ public class JYJCDPStatisticsServiceImpl { ...@@ -566,6 +568,12 @@ public class JYJCDPStatisticsServiceImpl {
private void countAllRegInspectCompany(Map<String, Object> result, String orgCode, String regionCode) { private void countAllRegInspectCompany(Map<String, Object> result, String orgCode, String regionCode) {
Long num = jyjcStatisticsMapper.countAllRegInspectCompany(orgCode,regionCode); Long num = jyjcStatisticsMapper.countAllRegInspectCompany(orgCode,regionCode);
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
// Long num = stCommonService.getStatisticCount();
result.put("inspectionAgencyCount", num); result.put("inspectionAgencyCount", num);
} }
...@@ -591,22 +599,19 @@ public class JYJCDPStatisticsServiceImpl { ...@@ -591,22 +599,19 @@ public class JYJCDPStatisticsServiceImpl {
private void staticsCenterMapCountDataTemporary(Map<String, Object> result, DPFilterParamDto dpFilterParamDto) { private void staticsCenterMapCountDataTemporary(Map<String, Object> result, DPFilterParamDto dpFilterParamDto) {
long num = 0; long num = 0;
CountRequest request = new CountRequest(); CountRequest request = new CountRequest();
request.indices("idx_biz_view_jg_all"); request.indices(StatisticalAnalysisEnum.equip.getKey());
BoolQueryBuilder boolMust = QueryBuilders.boolQuery(); BoolQueryBuilder boolMust = QueryBuilders.boolQuery();
String orgCode = stCommonService.getAndSetOrgCode(dpFilterParamDto.getCityCode()); String orgCode = stCommonService.getAndSetOrgCode(dpFilterParamDto.getCityCode());
// 按照管辖机构区域信息模糊查询 // 按照管辖机构区域信息模糊查询
boolMust.must(QueryBuilders.wildcardQuery("ORG_BRANCH_CODE.keyword", QueryParser.escape(orgCode) + "*")); boolMust.must(QueryBuilders.prefixQuery("ORG_BRANCH_CODE", orgCode));
//已赋码 //已赋码
boolMust.must(QueryBuilders.existsQuery("SUPERVISORY_CODE")); boolMust.must(QueryBuilders.existsQuery("SUPERVISORY_CODE"));
boolMust.mustNot(QueryBuilders.termQuery("SUPERVISORY_CODE","null")); boolMust.mustNot(QueryBuilders.termQuery("SUPERVISORY_CODE","null"));
//状态为已认领 //状态为已认领
String[] status = {"草稿","已拒领","待认领"}; String[] status = {"草稿","已拒领","待认领"};
boolMust.mustNot(QueryBuilders.termsQuery("STATUS",Arrays.asList(status))); boolMust.mustNot(QueryBuilders.termsQuery("STATUS",Arrays.asList(status)));
// 且下次检验日期大于等于当天 // 大于等于当天 下次检验日期 <= 当前天+30天 即为临期
long currentDayTime = DateUtil.parse(DateUtil.today(), "yyy-MM-dd").getTime(); boolMust.filter(QueryBuilders.rangeQuery("NEXT_INSPECT_DATE").gte(LocalDate.now().format(formatter)).lte(LocalDate.now().plusDays(30).format(formatter)));
// 且查询 下次检验日期 <= 当前天+30天 极为临期
long currentDayAfter30DayTime = DateUtil.offsetDay(DateUtil.parse(DateUtil.today(), "yyy-MM-dd"), 30).getTime();
boolMust.must(QueryBuilders.rangeQuery("NEXT_INSPECT_DATE").gte(currentDayTime).lte(currentDayAfter30DayTime));
// 且8大类,目的去掉脏数据 // 且8大类,目的去掉脏数据
boolMust.must(QueryBuilders.termsQuery("EQU_LIST_CODE",StCommonServiceImpl.getEquipmentCategory().stream().map(EquipmentCategoryDto::getCode).collect(Collectors.toList()))); boolMust.must(QueryBuilders.termsQuery("EQU_LIST_CODE",StCommonServiceImpl.getEquipmentCategory().stream().map(EquipmentCategoryDto::getCode).collect(Collectors.toList())));
request.query(boolMust); request.query(boolMust);
...@@ -826,17 +831,17 @@ public class JYJCDPStatisticsServiceImpl { ...@@ -826,17 +831,17 @@ public class JYJCDPStatisticsServiceImpl {
// 1.检验检测临期设备数数量统计 // 1.检验检测临期设备数数量统计
result.put("approach", staticsCenterMapCountDataForJyTimeTemporary(dpFilterParamDto, equipmentCategoryDtos)); result.put("approach", staticsCenterMapCountDataForJyTimeTemporary(dpFilterParamDto, equipmentCategoryDtos));
// 2.检验检测超期设备数数量统计 // 2.检验检测超期设备数数量统计
result.put("overdue", staticsCenterMapCountDataForJyTimeOverdueNew(dpFilterParamDto, equipmentCategoryDtos)); result.put("overdue", staticsCenterMapCountDataForJyTimeOverdue(dpFilterParamDto, equipmentCategoryDtos));
} }
private List<Long> staticsCenterMapCountDataForJyTimeTemporary(DPFilterParamDto dpFilterParamDto, List<EquipmentCategoryDto> equipmentCategoryDtos) { private List<Long> staticsCenterMapCountDataForJyTimeTemporary(DPFilterParamDto dpFilterParamDto, List<EquipmentCategoryDto> equipmentCategoryDtos) {
List<Long> seresData = new ArrayList<>(); List<Long> seresData = new ArrayList<>();
SearchRequest request = new SearchRequest(); SearchRequest request = new SearchRequest();
request.indices("idx_biz_view_jg_all"); request.indices(StatisticalAnalysisEnum.equip.getKey());
BoolQueryBuilder boolMust = QueryBuilders.boolQuery(); BoolQueryBuilder boolMust = QueryBuilders.boolQuery();
String orgCode = stCommonService.getAndSetOrgCode(dpFilterParamDto.getCityCode()); String orgCode = stCommonService.getAndSetOrgCode(dpFilterParamDto.getCityCode());
// 按照管辖机构区域信息模糊查询 // 按照管辖机构区域信息模糊查询
boolMust.must(QueryBuilders.wildcardQuery("ORG_BRANCH_CODE.keyword", QueryParser.escape(orgCode) + "*")); boolMust.must(QueryBuilders.prefixQuery("ORG_BRANCH_CODE", orgCode));
//已赋码 //已赋码
boolMust.must(QueryBuilders.existsQuery("SUPERVISORY_CODE")); boolMust.must(QueryBuilders.existsQuery("SUPERVISORY_CODE"));
boolMust.mustNot(QueryBuilders.termQuery("SUPERVISORY_CODE","null")); boolMust.mustNot(QueryBuilders.termQuery("SUPERVISORY_CODE","null"));
...@@ -844,9 +849,7 @@ public class JYJCDPStatisticsServiceImpl { ...@@ -844,9 +849,7 @@ public class JYJCDPStatisticsServiceImpl {
String[] status = {"草稿","已拒领","待认领"}; String[] status = {"草稿","已拒领","待认领"};
boolMust.mustNot(QueryBuilders.termsQuery("STATUS",Arrays.asList(status))); boolMust.mustNot(QueryBuilders.termsQuery("STATUS",Arrays.asList(status)));
// 且下次检验日期大于等于当天 且查询 下次检验日期 <= 当前天+30天 即为临期 // 且下次检验日期大于等于当天 且查询 下次检验日期 <= 当前天+30天 即为临期
long currentDayTime = DateUtil.parse(DateUtil.today(), "yyy-MM-dd").getTime(); boolMust.filter(QueryBuilders.rangeQuery("NEXT_INSPECT_DATE").gte(LocalDate.now().format(formatter)).lte(LocalDate.now().plusDays(30).format(formatter)));
long currentDayAfter30DayTime = DateUtil.offsetDay(DateUtil.parse(DateUtil.today(), "yyy-MM-dd"), 30).getTime();
boolMust.must(QueryBuilders.rangeQuery("NEXT_INSPECT_DATE").gte(currentDayTime).lte(currentDayAfter30DayTime));
// 且8大类,目的去掉脏数据 // 且8大类,目的去掉脏数据
boolMust.must(QueryBuilders.termsQuery("EQU_LIST_CODE",StCommonServiceImpl.getEquipmentCategory().stream().map(EquipmentCategoryDto::getCode).collect(Collectors.toList()))); boolMust.must(QueryBuilders.termsQuery("EQU_LIST_CODE",StCommonServiceImpl.getEquipmentCategory().stream().map(EquipmentCategoryDto::getCode).collect(Collectors.toList())));
SearchSourceBuilder builder = new SearchSourceBuilder(); SearchSourceBuilder builder = new SearchSourceBuilder();
...@@ -894,23 +897,22 @@ public class JYJCDPStatisticsServiceImpl { ...@@ -894,23 +897,22 @@ public class JYJCDPStatisticsServiceImpl {
private List<Long> staticsCenterMapCountDataForJyTimeOverdue(DPFilterParamDto dpFilterParamDto, List<EquipmentCategoryDto> equipmentCategoryDtos) { private List<Long> staticsCenterMapCountDataForJyTimeOverdue(DPFilterParamDto dpFilterParamDto, List<EquipmentCategoryDto> equipmentCategoryDtos) {
List<Long> seresData = new ArrayList<>(); List<Long> seresData = new ArrayList<>();
SearchRequest request = new SearchRequest(); SearchRequest request = new SearchRequest();
request.indices("idx_biz_view_jg_all"); request.indices(StatisticalAnalysisEnum.equip.getKey());
BoolQueryBuilder boolMust = QueryBuilders.boolQuery(); BoolQueryBuilder boolMust = QueryBuilders.boolQuery();
// 区域信息模糊查询 // 区域信息模糊查询
String orgCode = stCommonService.getAndSetOrgCode(dpFilterParamDto.getCityCode()); String orgCode = stCommonService.getAndSetOrgCode(dpFilterParamDto.getCityCode());
// 按照管辖机构区域信息模糊查询 // 按照管辖机构区域信息模糊查询
boolMust.must(QueryBuilders.wildcardQuery("ORG_BRANCH_CODE.keyword", QueryParser.escape(orgCode) + "*")); boolMust.must(QueryBuilders.prefixQuery("ORG_BRANCH_CODE", orgCode));
//已赋码 //已赋码
boolMust.must(QueryBuilders.existsQuery("SUPERVISORY_CODE")); boolMust.must(QueryBuilders.existsQuery("SUPERVISORY_CODE"));
boolMust.mustNot(QueryBuilders.termQuery("SUPERVISORY_CODE","null")); boolMust.mustNot(QueryBuilders.termQuery("SUPERVISORY_CODE", "null"));
//状态为已认领 //状态为已认领
String[] status = {"草稿","已拒领","待认领"}; String[] status = {"草稿", "已拒领", "待认领"};
boolMust.mustNot(QueryBuilders.termsQuery("STATUS",Arrays.asList(status))); boolMust.mustNot(QueryBuilders.termsQuery("STATUS", Arrays.asList(status)));
// 查询下次检验日期小于当前天的设备,即为超期检验超期设备 // 查询下次检验日期小于当前天的设备,即为超期检验超期设备
long currentDayTime = DateUtil.parse(DateUtil.now(), "yyy-MM-dd").getTime(); boolMust.filter(QueryBuilders.rangeQuery("NEXT_INSPECT_DATE").lt(LocalDate.now().format(formatter)));
boolMust.must(QueryBuilders.rangeQuery("NEXT_INSPECT_DATE").lt(currentDayTime));
// 且8大类,目的去掉脏数据 // 且8大类,目的去掉脏数据
boolMust.must(QueryBuilders.termsQuery("EQU_LIST_CODE",StCommonServiceImpl.getEquipmentCategory().stream().map(EquipmentCategoryDto::getCode).collect(Collectors.toList()))); boolMust.must(QueryBuilders.termsQuery("EQU_LIST_CODE", StCommonServiceImpl.getEquipmentCategory().stream().map(EquipmentCategoryDto::getCode).collect(Collectors.toList())));
SearchSourceBuilder builder = new SearchSourceBuilder(); SearchSourceBuilder builder = new SearchSourceBuilder();
builder.query(boolMust); builder.query(boolMust);
TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms("count_by_equ_list_code").field("EQU_LIST_CODE"); TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms("count_by_equ_list_code").field("EQU_LIST_CODE");
......
...@@ -10,8 +10,8 @@ import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamDto; ...@@ -10,8 +10,8 @@ import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamDto;
import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamForDetailDto; import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamForDetailDto;
import com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum; import com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.common.api.enums.ReginStepEnum; import com.yeejoin.amos.boot.module.common.api.enums.ReginStepEnum;
import com.yeejoin.amos.boot.module.common.api.enums.StatisticalAnalysisEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.DPMapStatisticsItemEnum; import com.yeejoin.amos.boot.module.jg.api.enums.DPMapStatisticsItemEnum;
import com.yeejoin.amos.boot.module.statistics.api.enums.StatisticalAnalysisEnum;
import com.yeejoin.amos.boot.module.statistics.api.mapper.CommonBaseMapper; import com.yeejoin.amos.boot.module.statistics.api.mapper.CommonBaseMapper;
import com.yeejoin.amos.boot.module.statistics.api.mapper.ZLStatisticsMapper; import com.yeejoin.amos.boot.module.statistics.api.mapper.ZLStatisticsMapper;
import com.yeejoin.amos.boot.module.statistics.api.vo.EquCategoryVo; import com.yeejoin.amos.boot.module.statistics.api.vo.EquCategoryVo;
...@@ -32,10 +32,14 @@ import org.elasticsearch.client.core.CountResponse; ...@@ -32,10 +32,14 @@ import org.elasticsearch.client.core.CountResponse;
import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.filter.Filter;
import org.elasticsearch.search.aggregations.bucket.nested.Nested;
import org.elasticsearch.search.aggregations.bucket.nested.NestedAggregationBuilder;
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.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -281,8 +285,9 @@ public class StCommonServiceImpl { ...@@ -281,8 +285,9 @@ public class StCommonServiceImpl {
SearchSourceBuilder builder = new SearchSourceBuilder(); SearchSourceBuilder builder = new SearchSourceBuilder();
builder.query(boolMust); builder.query(boolMust);
// 默认size为10 ,数据库有脏数据,所以需要多查询一些 // 默认size为10 ,数据库有脏数据,所以需要多查询一些
TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms("count_by_equ_list_code").field("EQU_LIST_CODE").size(20); TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms("count_by_equ_list_code").field("EQU_LIST_CODE").size(15);
builder.aggregation(aggregationBuilder); builder.aggregation(aggregationBuilder);
builder.size(0);
request.source(builder); request.source(builder);
try { try {
SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT); SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
...@@ -314,6 +319,45 @@ public class StCommonServiceImpl { ...@@ -314,6 +319,45 @@ public class StCommonServiceImpl {
return (long)result.getOrDefault(DPMapStatisticsItemEnum.TOTAL.getCode(), 0L); return (long)result.getOrDefault(DPMapStatisticsItemEnum.TOTAL.getCode(), 0L);
} }
public Long getStatisticCount(BoolQueryBuilder builder, String index) {
CountRequest countRequest = new CountRequest();
countRequest.indices(index);
CountResponse response = null;
countRequest.query(builder);
try {
response = restHighLevelClient.count(countRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
throw new RuntimeException(e);
}
return ObjectUtils.isEmpty(response) ? 0 : response.getCount();
}
public Long getNestedQueryStatisticCount(BoolQueryBuilder builder, String index, String nestedFiled, String filterFiled) {
SearchRequest searchRequest = new SearchRequest(index);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
// 构建嵌套聚合
NestedAggregationBuilder nestedAgg = AggregationBuilders.nested(nestedFiled, nestedFiled)
.subAggregation(
AggregationBuilders.filter(filterFiled + "_count", builder)
);
sourceBuilder.aggregation(nestedAgg);
sourceBuilder.size(0); // 只要聚合结果,不要文档
searchRequest.source(sourceBuilder);
long count = 0;
try {
SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
// 解析结果
Nested nestedAggResult = response.getAggregations().get(nestedFiled);
Filter dateRangeFilter = nestedAggResult.getAggregations().get(filterFiled + "_count");
count = dateRangeFilter.getDocCount();
} catch (IOException e) {
throw new RuntimeException(e);
}
return count;
}
/** /**
* 统计已赋码设备数量 * 统计已赋码设备数量
* @param orgCode * @param orgCode
......
...@@ -126,6 +126,12 @@ public class KrjyydqkServiceImpl implements IZBGLService { ...@@ -126,6 +126,12 @@ public class KrjyydqkServiceImpl implements IZBGLService {
itemResult.put(key.getKey(), key.getValue() + " / " + BigDecimal.valueOf(key.getValue()).divide(BigDecimal.valueOf(sum.get()), 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).stripTrailingZeros().toPlainString() + "%"); itemResult.put(key.getKey(), key.getValue() + " / " + BigDecimal.valueOf(key.getValue()).divide(BigDecimal.valueOf(sum.get()), 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).stripTrailingZeros().toPlainString() + "%");
} }
}); });
} else {
itemResult.put("lessNum", "0");
itemResult.put("greaterNum", "0");
itemResult.put("levelOne", "0");
itemResult.put("levelTwo", "0");
itemResult.put("levelThree", "0");
} }
itemResult.put("area",r.getRegionName()); itemResult.put("area",r.getRegionName());
itemResult.put("sequenceNbr", UUID.fastUUID().toString()); itemResult.put("sequenceNbr", UUID.fastUUID().toString());
......
...@@ -17,12 +17,12 @@ import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamDto; ...@@ -17,12 +17,12 @@ import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamDto;
import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamForDetailDto; import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamForDetailDto;
import com.yeejoin.amos.boot.module.common.api.entity.AlertStatistics; import com.yeejoin.amos.boot.module.common.api.entity.AlertStatistics;
import com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum; import com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.common.api.enums.StatisticalAnalysisEnum;
import com.yeejoin.amos.boot.module.common.api.enums.UnitTypeEnum; import com.yeejoin.amos.boot.module.common.api.enums.UnitTypeEnum;
import com.yeejoin.amos.boot.module.common.api.enums.UserPostEnum; import com.yeejoin.amos.boot.module.common.api.enums.UserPostEnum;
import com.yeejoin.amos.boot.module.statistcs.biz.utils.JsonUtils; import com.yeejoin.amos.boot.module.statistcs.biz.utils.JsonUtils;
import com.yeejoin.amos.boot.module.statistcs.biz.utils.QueryBuilderUtils; import com.yeejoin.amos.boot.module.statistcs.biz.utils.QueryBuilderUtils;
import com.yeejoin.amos.boot.module.statistics.api.enums.InformationManageTypeEnum; import com.yeejoin.amos.boot.module.statistics.api.enums.InformationManageTypeEnum;
import com.yeejoin.amos.boot.module.statistics.api.enums.StatisticalAnalysisEnum;
import com.yeejoin.amos.boot.module.statistics.api.feign.TzsServiceFeignClient; import com.yeejoin.amos.boot.module.statistics.api.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.statistics.api.mapper.AlertStatisticsMapper; import com.yeejoin.amos.boot.module.statistics.api.mapper.AlertStatisticsMapper;
import com.yeejoin.amos.boot.module.statistics.api.mapper.TzsCustomFilterMapper; import com.yeejoin.amos.boot.module.statistics.api.mapper.TzsCustomFilterMapper;
...@@ -890,8 +890,15 @@ public class ZLDPStatisticsServiceImpl { ...@@ -890,8 +890,15 @@ public class ZLDPStatisticsServiceImpl {
boolMust.must(QueryBuilders.prefixQuery("ORG_BRANCH_CODE", orgCode)); boolMust.must(QueryBuilders.prefixQuery("ORG_BRANCH_CODE", orgCode));
} }
if (!ObjectUtils.isEmpty(map.getString("CODE96333"))) {
boolMust.must(QueryBuilders.wildcardQuery("CODE96333", "*" + map.getString("CODE96333") + "*"));
}
if (!ObjectUtils.isEmpty(map.getString("SUPERVISORY_CODE"))) {
boolMust.must(QueryBuilders.wildcardQuery("SUPERVISORY_CODE", "*" + map.getString("SUPERVISORY_CODE") + "*"));
}
if (!ObjectUtils.isEmpty(map.getString("ORG_BRANCH_CODE"))) { if (!ObjectUtils.isEmpty(map.getString("ORG_BRANCH_CODE"))) {
// boolMust.must(QueryBuilders.wildcardQuery("ORG_BRANCH_CODE.keyword", QueryParser.escape(map.getString("ORG_BRANCH_CODE")) + "*"));
boolMust.must(QueryBuilders.prefixQuery("ORG_BRANCH_CODE", map.getString("ORG_BRANCH_CODE"))); boolMust.must(QueryBuilders.prefixQuery("ORG_BRANCH_CODE", map.getString("ORG_BRANCH_CODE")));
} }
......
...@@ -204,6 +204,7 @@ public class TzBaseEnterpriseInfoServiceImpl ...@@ -204,6 +204,7 @@ public class TzBaseEnterpriseInfoServiceImpl
@Override @Override
public IPage<TzBaseEnterpriseInfoDto> page(PageParam pageParam, TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto, String sort) { public IPage<TzBaseEnterpriseInfoDto> page(PageParam pageParam, TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto, String sort) {
try {
List<String> orgCodeList = new ArrayList<>(); List<String> orgCodeList = new ArrayList<>();
if (tzBaseEnterpriseInfoDto.getSuperviseKey() != null) { if (tzBaseEnterpriseInfoDto.getSuperviseKey() != null) {
FeignClientResult<CompanyModel> result = Privilege.companyClient FeignClientResult<CompanyModel> result = Privilege.companyClient
...@@ -224,6 +225,17 @@ public class TzBaseEnterpriseInfoServiceImpl ...@@ -224,6 +225,17 @@ public class TzBaseEnterpriseInfoServiceImpl
} }
SortVo sortMap = userInfoService.sortFieldConversion(sort); SortVo sortMap = userInfoService.sortFieldConversion(sort);
return this.baseMapper.pageList(page, tzBaseEnterpriseInfoDto, orgCodeList, sortMap); return this.baseMapper.pageList(page, tzBaseEnterpriseInfoDto, orgCodeList, sortMap);
} catch (Exception ex) {
String msg = ex.getMessage() == null ? "" : ex.getMessage();
if (msg.contains("eyibc decrypt error")
|| msg.contains("EYIBCException")
|| msg.contains("olym jdbc error")
|| msg.contains("数据非法")
|| msg.contains("decrypt error, code: -65")) {
throw new BadRequest("数据完整性被破坏(解密失败),请联系管理员。");
}
throw new BadRequest("系统内部错误,请联系管理员。");
}
} }
@Override @Override
...@@ -1032,6 +1044,7 @@ public class TzBaseEnterpriseInfoServiceImpl ...@@ -1032,6 +1044,7 @@ public class TzBaseEnterpriseInfoServiceImpl
@Override @Override
public IPage<TzBaseEnterpriseInfoDto> getInfoById(Long sequenceNbr, String companyCode) { public IPage<TzBaseEnterpriseInfoDto> getInfoById(Long sequenceNbr, String companyCode) {
try {
TzBaseEnterpriseInfo tzBaseEnterpriseInfo = this.getById(sequenceNbr); TzBaseEnterpriseInfo tzBaseEnterpriseInfo = this.getById(sequenceNbr);
TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto = detailById(tzBaseEnterpriseInfo); TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto = detailById(tzBaseEnterpriseInfo);
...@@ -1046,6 +1059,17 @@ public class TzBaseEnterpriseInfoServiceImpl ...@@ -1046,6 +1059,17 @@ public class TzBaseEnterpriseInfoServiceImpl
Page<TzBaseEnterpriseInfoDto> page = new Page<>(1, 10); Page<TzBaseEnterpriseInfoDto> page = new Page<>(1, 10);
page.setRecords(Arrays.asList(tzBaseEnterpriseInfoDto)); page.setRecords(Arrays.asList(tzBaseEnterpriseInfoDto));
return page; return page;
} catch (Exception ex) {
String msg = ex.getMessage() == null ? "" : ex.getMessage();
if (msg.contains("eyibc decrypt error")
|| msg.contains("EYIBCException")
|| msg.contains("olym jdbc error")
|| msg.contains("数据非法")
|| msg.contains("decrypt error, code: -65")) {
throw new BadRequest("数据完整性被破坏(解密失败),请联系管理员。");
}
throw new BadRequest("系统内部错误,请联系管理员。");
}
} }
private TzBaseEnterpriseInfoDto detailById(TzBaseEnterpriseInfo tzBaseEnterpriseInfo) { private TzBaseEnterpriseInfoDto detailById(TzBaseEnterpriseInfo tzBaseEnterpriseInfo) {
......
...@@ -1085,6 +1085,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -1085,6 +1085,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
} }
public Page<UserPermissionDto> getUserByPermission(long current, long size, String type, UserPermissionDto filter, String sort) { public Page<UserPermissionDto> getUserByPermission(long current, long size, String type, UserPermissionDto filter, String sort) {
try {
Page<UserPermissionDto> permissionDtoPage = new Page<>(current, size); Page<UserPermissionDto> permissionDtoPage = new Page<>(current, size);
List<String> post = this.getPostByType(type); List<String> post = this.getPostByType(type);
SortVo sortMap = this.sortFieldConversion(sort); SortVo sortMap = this.sortFieldConversion(sort);
...@@ -1103,6 +1104,17 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI ...@@ -1103,6 +1104,17 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
d.setPermissionStatus(this.castNoPermissionData(type, d.getPermissionStatus())); d.setPermissionStatus(this.castNoPermissionData(type, d.getPermissionStatus()));
}); });
return result; return result;
} catch (Exception ex) {
String msg = ex.getMessage() == null ? "" : ex.getMessage();
if (msg.contains("eyibc decrypt error")
|| msg.contains("EYIBCException")
|| msg.contains("olym jdbc error")
|| msg.contains("数据非法")
|| msg.contains("decrypt error, code: -65")) {
throw new BadRequest("数据完整性被破坏(解密失败),请联系管理员。");
}
throw new BadRequest("系统内部错误,请联系管理员。");
}
} }
private String castNoPermissionData(String type, String permissionStatus) { private String castNoPermissionData(String type, String permissionStatus) {
......
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.yeejoin.amos.boot.module.common.api.mapper.CustomBaseMapper;
import com.yeejoin.amos.boot.module.ymt.api.entity.SupervisoryCodeInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.SupervisoryCodeInfo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
/** /**
...@@ -12,9 +11,10 @@ import java.util.List; ...@@ -12,9 +11,10 @@ import java.util.List;
* @author system_generator * @author system_generator
* @date 2021-10-20 * @date 2021-10-20
*/ */
public interface SupervisoryCodeInfoMapper extends BaseMapper<SupervisoryCodeInfo> { public interface SupervisoryCodeInfoMapper extends CustomBaseMapper<SupervisoryCodeInfo> {
void updateStatus(@Param("superviseCodeList") List<String> superviseCodeList); void updateStatus(@Param("superviseCodeList") List<String> superviseCodeList);
void updateStatusBySuperviseCode(String superviseCode); void updateStatusBySuperviseCode(String superviseCode);
} }
...@@ -23,6 +23,8 @@ public interface IEquipmentCategoryService { ...@@ -23,6 +23,8 @@ public interface IEquipmentCategoryService {
Map<String, String> createSupervisorCode(Map<String, Object> map); Map<String, String> createSupervisorCode(Map<String, Object> map);
List<Map<String, String>> createSupervisoryCodeBatch(Map<String, Object> map);
List<LinkedHashMap> getTree(); List<LinkedHashMap> getTree();
List<LinkedHashMap> creatTree(); List<LinkedHashMap> creatTree();
......
...@@ -51,6 +51,12 @@ public interface IGenerateCodeService { ...@@ -51,6 +51,12 @@ public interface IGenerateCodeService {
* @return 7位监管编码生成 * @return 7位监管编码生成
*/ */
String createSupervisoryCode(String key); String createSupervisoryCode(String key);
/**
* 监管编码生成(7位)-导入批量生成
* @param key key
* @return 7位监管编码生成
*/
List<String> createSupervisoryCodeBatch(String key, int batchSize);
String initCode(); String initCode();
} }
...@@ -76,6 +76,8 @@ ...@@ -76,6 +76,8 @@
<select id="selectDataById" resultType="java.util.Map"> <select id="selectDataById" resultType="java.util.Map">
SELECT SEQUENCE_NBR, SELECT SEQUENCE_NBR,
REC_DATE, REC_DATE,
CREATE_DATE,
DATA_QUALITY_SCORE,
ORG_BRANCH_NAME, ORG_BRANCH_NAME,
ORG_BRANCH_CODE, ORG_BRANCH_CODE,
USE_UNIT_NAME, USE_UNIT_NAME,
......
...@@ -735,7 +735,7 @@ ...@@ -735,7 +735,7 @@
v2.REC_DATE v2.REC_DATE
FROM "idx_biz_jg_other_info" v1 FROM "idx_biz_jg_other_info" v1
LEFT JOIN "biz_jg_supervisory_code" v2 on v1.SUPERVISORY_CODE = v2.SUPERVISORY_CODE LEFT JOIN "biz_jg_supervisory_code" v2 on v1.SUPERVISORY_CODE = v2.SUPERVISORY_CODE
WHERE v1."SUPERVISORY_CODE" ~ 'X31' AND v1."CODE96333" ~ '^32' WHERE v1."SUPERVISORY_CODE" ~ 'X3' AND v1."CODE96333" ~ '^32'
AND v2.create_status = '1' AND v2.create_status = '1'
ORDER BY v2."REC_DATE" DESC ORDER BY v2."REC_DATE" DESC
</select> </select>
......
...@@ -12,4 +12,14 @@ ...@@ -12,4 +12,14 @@
<update id="updateStatusBySuperviseCode"> <update id="updateStatusBySuperviseCode">
update biz_jg_supervisory_code set status = '1' where supervisory_code = #{superviseCode} update biz_jg_supervisory_code set status = '1' where supervisory_code = #{superviseCode}
</update> </update>
<insert id="insertBatchSomeColumn" parameterType="java.util.List">
INSERT INTO biz_jg_supervisory_code
(sequence_nbr, supervisory_code, code96333, status, create_status)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.sequenceNbr}, #{item.supervisoryCode}, #{item.code96333}, #{item.status}, #{item.createStatus})
</foreach>
</insert>
</mapper> </mapper>
\ No newline at end of file
...@@ -276,6 +276,19 @@ public class EquipmentCategoryController extends BaseController { ...@@ -276,6 +276,19 @@ public class EquipmentCategoryController extends BaseController {
} }
/** /**
* 批量生成监管码-设备批量导入用
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/createSupervisoryCodeBatch", method = RequestMethod.POST)
@ApiOperation(httpMethod = "POST", value = "批量生成监管码", notes = "生成监管码和96333码")
public ResponseModel<Object> createSupervisoryCodeBatch(@RequestBody Map<String, Object> map) {
return ResponseHelper.buildResponse(equipmentCategoryService.createSupervisoryCodeBatch(map));
}
/**
* 修改数据状态是否显示编辑按钮 * 修改数据状态是否显示编辑按钮
* *
* @return * @return
......
...@@ -10,6 +10,7 @@ import com.google.common.collect.Lists; ...@@ -10,6 +10,7 @@ import com.google.common.collect.Lists;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil;
import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory; import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory;
import com.yeejoin.amos.boot.module.common.api.dao.EsEquipmentDao; import com.yeejoin.amos.boot.module.common.api.dao.EsEquipmentDao;
import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto; import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto;
...@@ -35,6 +36,7 @@ import com.yeejoin.amos.component.feign.utils.FeignUtil; ...@@ -35,6 +36,7 @@ import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.privilege.Privilege; import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.CompanyModel; import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.queryparser.classic.QueryParser;
import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchRequest;
...@@ -289,6 +291,9 @@ public class EquipmentCategoryServiceImpl extends BaseService<EquipmentCategoryD ...@@ -289,6 +291,9 @@ public class EquipmentCategoryServiceImpl extends BaseService<EquipmentCategoryD
private String startCode; private String startCode;
@Autowired @Autowired
private SnowflakeIdUtil sequence;
@Autowired
private RedisUtils redisUtils; private RedisUtils redisUtils;
// 一码通checkCode中redis key过期时间 // 一码通checkCode中redis key过期时间
private long time = 300l; private long time = 300l;
...@@ -467,6 +472,84 @@ public class EquipmentCategoryServiceImpl extends BaseService<EquipmentCategoryD ...@@ -467,6 +472,84 @@ public class EquipmentCategoryServiceImpl extends BaseService<EquipmentCategoryD
return codeMap; return codeMap;
} }
/**
* 批量生成监管码
*/
@Override
public List<Map<String, String>> createSupervisoryCodeBatch(Map<String, Object> map) {
String city, county, equipCategory, isNotXiXian, code96333, superviseCode;
int batchSize = 1;
// 获取对应行政区划
city = String.valueOf(map.get("cityCode"));
county = String.valueOf(map.get("countyCode"));
code96333 = String.valueOf(map.get("code96333"));
superviseCode = String.valueOf(map.get("superviseCode"));
// 获取对应设备分类
equipCategory = String.valueOf(map.get("equCategory"));
if ("null".equals(equipCategory) || "null".equals(city) || "null".equals(county)) {
throw new BadRequest("请求参数不全,请查看参数中是否携带 cityCode、countyCode、equCategory 三个参数及对应值");
}
isNotXiXian = Optional.ofNullable(map.get("isXiXian")).orElse("0").toString();
batchSize = (int) Optional.ofNullable(map.get("batchSize")).orElse(1);
// 生成码
List<Map<String, String>> codeMapList = creatBatchCode(isNotXiXian, city, county, equipCategory, code96333, superviseCode, batchSize);
if (ObjectUtils.isEmpty(codeMapList)) {
throw new BadRequest("该请求参数未生成监管码或96333码,请核对参数");
}
return codeMapList;
}
/**
* 批量生成监管码
*/
public List<Map<String, String>> creatBatchCode(String isNotXiXian,
String city,
String county,
String equipCategory,
String code96333,
String supervisionCode,
int batchSize) {
RLock lock = redissonClient.getLock(LOCK_KEY);
List<Map<String, String>> resultList = new ArrayList<>();
try {
lock.lock();
log.info("加锁成功,开始生成 {} 条监管码", batchSize);
List<String> supervisorList = createSupervisoryCodeBatch(isNotXiXian, city, county, equipCategory, batchSize);
if (CollectionUtils.isEmpty(supervisorList)) {
throw new BadRequest("未生成任何监管码,请检查参数");
}
String equState = EquipmentCategoryEnum.CSZT.getCode();
List<SupervisoryCodeInfo> supervisoryCodeInfoList = new ArrayList<>();
for (String supervisorCode : supervisorList) {
SupervisoryCodeInfo newInfo = new SupervisoryCodeInfo();
newInfo.setSupervisoryCode(supervisorCode);
newInfo.setCode96333(code96333);
newInfo.setCreateStatus("INIT");
newInfo.setStatus(equState);
newInfo.setSequenceNbr(sequence.nextId());
supervisoryCodeInfoList.add(newInfo);
Map<String, String> resultMap = new HashMap<>();
resultMap.put("superviseCode", supervisorCode);
resultMap.put("code96333", "");
resultList.add(resultMap);
}
supervisoryCodeInfoMapper.insertBatchSomeColumn(supervisoryCodeInfoList, 500);
log.info("成功生成 {} 条监管码", resultList.size());
} catch (Exception e) {
log.error("批量生成监管码失败", e);
throw new RuntimeException("批量生成监管码失败: " + e.getMessage(), e);
} finally {
if (lock.isHeldByCurrentThread()) {
lock.unlock();
log.info("释放锁");
}
}
return resultList;
}
@Override @Override
public List<LinkedHashMap> getTree() { public List<LinkedHashMap> getTree() {
List<LinkedHashMap> result = (List<LinkedHashMap>) redisUtils.get(REGULATOR_UNIT_TREE); List<LinkedHashMap> result = (List<LinkedHashMap>) redisUtils.get(REGULATOR_UNIT_TREE);
...@@ -888,6 +971,26 @@ public class EquipmentCategoryServiceImpl extends BaseService<EquipmentCategoryD ...@@ -888,6 +971,26 @@ public class EquipmentCategoryServiceImpl extends BaseService<EquipmentCategoryD
} }
/** /**
* 批量生成监管码-设备批量导入使用
*
* @param city 行政区划市
* @param county 行政区划区
* @return 监管码
*/
public List<String> createSupervisoryCodeBatch(String isNotXiXian, String city, String county, String equipCategory, int batchSize) {
StringBuilder supervisorCode = new StringBuilder();
String division = null;
if (((XIAN.equals(city) || XIAN_YANG.equals(city)) && "1".equals(isNotXiXian))) {
division = "X";
} else {
Map<String, Object> divisionMap = equipmentCategoryMapper.getAdministrativeDivision(EquipmentCategoryEnum.XZQH.getCode(), county);
division = ObjectUtils.isEmpty(divisionMap) ? equipmentCategoryMapper.getAdministrativeDivision(EquipmentCategoryEnum.XZQH.getCode(), city).get("code").toString() : divisionMap.get("code").toString();
}
supervisorCode.append(division).append(equipCategory);
return generateCodeService.createSupervisoryCodeBatch(String.valueOf(supervisorCode), batchSize);
}
/**
* 生成96333电梯识别码 * 生成96333电梯识别码
* *
* @param prefix 电梯码前缀 * @param prefix 电梯码前缀
......
...@@ -105,6 +105,13 @@ public class GenerateCodeServiceImpl implements IGenerateCodeService { ...@@ -105,6 +105,13 @@ public class GenerateCodeServiceImpl implements IGenerateCodeService {
return (key.length() == 5) ? generateSupervisorySequence(key) : "生成码规则不对!"; return (key.length() == 5) ? generateSupervisorySequence(key) : "生成码规则不对!";
} }
public List<String> createSupervisoryCodeBatch(String key, int batchSize) {
if (key == null || key.length() != 5) {
return Collections.singletonList("生成码规则不对!");
}
return generateSupervisorySequenceBatch(key, batchSize);
}
@Override @Override
public String initCode() { public String initCode() {
categoryOtherInfoMapper.selectSupervisorCodeMaxValue().forEach(vo -> categoryOtherInfoMapper.selectSupervisorCodeMaxValue().forEach(vo ->
...@@ -148,6 +155,59 @@ public class GenerateCodeServiceImpl implements IGenerateCodeService { ...@@ -148,6 +155,59 @@ public class GenerateCodeServiceImpl implements IGenerateCodeService {
} }
/** /**
* 批量生成监管码
*
* @param sequenceKey Redis 中存储的序列 key
* @param batchSize 需要生成的数量
* @return 批量生成的顺序码列表
*/
public List<String> generateSupervisorySequenceBatch(String sequenceKey, int batchSize) {
RLock lock = redissonClient.getLock(LOCK_KEY_SUPERVISORY);
try {
boolean locked = lock.tryLock(10, TimeUnit.SECONDS);
log.info("尝试获取锁: {}", locked);
if (locked) {
ValueOperations<String, String> valueOps = redisTemplate.opsForValue();
String currentSequenceStr = valueOps.get(sequenceKey);
// 如果为空,则初始化为0
long currentSequence = (currentSequenceStr != null)
? Long.parseLong(currentSequenceStr)
: this.initRedis(sequenceKey);
log.info("获取《{}》当前顺序码:{}", sequenceKey, currentSequence);
List<String> results = new ArrayList<>(batchSize);
for (int i = 1; i <= batchSize; i++) {
long nextSeq = currentSequence + i;
String formattedSequence = String.format(
GenerateCodeServiceImpl.SUPERVISOR_SEQUENCE_TYPE, nextSeq);
results.add(sequenceKey + "-" + formattedSequence);
}
// 更新 Redis 里的最新顺序号
long newSequence = currentSequence + batchSize;
valueOps.set(sequenceKey, String.valueOf(newSequence));
log.info("更新《{}》顺序码到:{}", sequenceKey, newSequence);
return results;
} else {
throw new RuntimeException("Failed to acquire lock for sequence generation");
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new RuntimeException("Thread interrupted while acquiring lock", e);
} finally {
if (lock.isHeldByCurrentThread()) {
lock.unlock();
log.info("释放锁");
}
}
}
/**
* 监管码为空的话,初始化Redis * 监管码为空的话,初始化Redis
* *
* @param sequenceKey key * @param sequenceKey key
......
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