Commit 181926e9 authored by suhuiguang's avatar suhuiguang

1.报检规则增加不予处理

parent ccaea804
...@@ -2,22 +2,23 @@ package com.yeejoin.amos.boot.module.jyjc.biz.action; ...@@ -2,22 +2,23 @@ package com.yeejoin.amos.boot.module.jyjc.biz.action;
import com.alibaba.fastjson.JSON; 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.toolkit.Wrappers; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.jyjc.api.enums.InspectionCompanyType; import com.yeejoin.amos.boot.module.jyjc.api.enums.InspectionCompanyType;
import com.yeejoin.amos.boot.module.jyjc.api.enums.LicenceTypeEnum; import com.yeejoin.amos.boot.module.jyjc.api.enums.LicenceTypeEnum;
import com.yeejoin.amos.boot.module.jyjc.api.enums.OpenBizTypeEnum; import com.yeejoin.amos.boot.module.jyjc.api.enums.OpenBizTypeEnum;
import com.yeejoin.amos.boot.module.jyjc.api.enums.TopicEnum; import com.yeejoin.amos.boot.module.jyjc.api.enums.TopicEnum;
import com.yeejoin.amos.boot.module.jyjc.biz.rule.InspectionEquipInfo; import com.yeejoin.amos.boot.module.jyjc.biz.rule.InspectionEquipInfo;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.RuleCommonServiceImpl;
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.TzBaseUnitLicence; import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseUnitLicence;
import com.yeejoin.amos.boot.module.ymt.api.entity.UseInfo;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseUnitLicenceMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseUnitLicenceMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.UseInfoMapper;
import com.yeejoin.amos.component.rule.config.RuleConfig; import com.yeejoin.amos.component.rule.config.RuleConfig;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttException;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
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.component.emq.EmqKeeper; import org.typroject.tyboot.component.emq.EmqKeeper;
...@@ -26,6 +27,7 @@ import java.time.LocalDate; ...@@ -26,6 +27,7 @@ import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -39,26 +41,26 @@ public class RuleActionHandler { ...@@ -39,26 +41,26 @@ public class RuleActionHandler {
private final EmqKeeper emqKeeper; private final EmqKeeper emqKeeper;
private final TzBaseUnitLicenceMapper baseUnitLicenceMapper; private final TzBaseUnitLicenceMapper baseUnitLicenceMapper;
private final TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper; private final TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper;
private final UseInfoMapper useInfoMapper; private final RuleCommonServiceImpl ruleCommonService;
/** private final RedissonClient redissonClient;
* 特殊独立的区县 private RedisUtils redisUtils;
*/
private static final String[] EXCLUSION_CITY_REGIONS = {"610403", "610581"};
/** /**
* 省特检院公司code * 省特检院等特殊公司code
*/ */
@Value("${province.inspection.company.code:126100004352004822}") @Value("${special.inspection.company.code:126100004352004822,12100000400001774F,91340100MA8QN8Q40G}")
private String provinceInspectionCompanyCode; private String specialInspectionCompanyCode;
public RuleActionHandler(EmqKeeper emqKeeper, TzBaseUnitLicenceMapper baseUnitLicenceMapper, public RuleActionHandler(EmqKeeper emqKeeper, TzBaseUnitLicenceMapper baseUnitLicenceMapper,
TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper, TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper,
UseInfoMapper useInfoMapper) { RuleCommonServiceImpl ruleCommonService, RedissonClient redissonClient, RedisUtils redisUtils) {
this.emqKeeper = emqKeeper; this.emqKeeper = emqKeeper;
this.baseUnitLicenceMapper = baseUnitLicenceMapper; this.baseUnitLicenceMapper = baseUnitLicenceMapper;
this.tzBaseEnterpriseInfoMapper = tzBaseEnterpriseInfoMapper; this.tzBaseEnterpriseInfoMapper = tzBaseEnterpriseInfoMapper;
this.useInfoMapper = useInfoMapper; this.ruleCommonService = ruleCommonService;
this.redissonClient = redissonClient;
this.redisUtils = redisUtils;
} }
/** /**
...@@ -75,15 +77,39 @@ public class RuleActionHandler { ...@@ -75,15 +77,39 @@ public class RuleActionHandler {
public void filterInspectionOrgAction(Object bizObj, String itemCode, Boolean isMatchArea, String defaultInspectionCode, String legalInspectionCodes, String inspectionCompanyType, Boolean isMatchItem) { public void filterInspectionOrgAction(Object bizObj, String itemCode, Boolean isMatchArea, String defaultInspectionCode, String legalInspectionCodes, String inspectionCompanyType, Boolean isMatchItem) {
log.info("收到首次提交的检验机构匹配规则回调:请求变量参数:{},核对项目编码:{},是否进行属地过滤:{},默认的检验机构code:{}, 法定的检验机构code:{}, 法定的检验机构code: {},是否需要匹配核准代码:{}", bizObj, itemCode, isMatchArea, defaultInspectionCode, legalInspectionCodes, inspectionCompanyType, isMatchItem); log.info("收到首次提交的检验机构匹配规则回调:请求变量参数:{},核对项目编码:{},是否进行属地过滤:{},默认的检验机构code:{}, 法定的检验机构code:{}, 法定的检验机构code: {},是否需要匹配核准代码:{}", bizObj, itemCode, isMatchArea, defaultInspectionCode, legalInspectionCodes, inspectionCompanyType, isMatchItem);
InspectionEquipInfo inspectionEquipInfo = (InspectionEquipInfo) bizObj; InspectionEquipInfo inspectionEquipInfo = (InspectionEquipInfo) bizObj;
// 规则不支持或者的关系消息会重复故去重处理
RLock lock = redissonClient.getLock(this.buildLockKey("filterInspectionOrgAction", inspectionEquipInfo.getUuid()));
try { try {
boolean isLocked = lock.tryLock(0, 180, TimeUnit.SECONDS);
if (!isLocked) {
log.warn("规则回填重复丢弃:请求变量参数:{},核对项目编码:{},是否进行属地过滤:{},默认的检验机构code:{}, 法定的检验机构code:{}, 法定的检验机构code: {},是否需要匹配核准代码:{}", bizObj, itemCode, isMatchArea, defaultInspectionCode, legalInspectionCodes, inspectionCompanyType, isMatchItem);
return;
}
if (redisUtils.hasKey(this.buildRedisDataKey("filterInspectionOrgAction", inspectionEquipInfo.getUuid()))) {
log.warn("规则回填重复丢弃:请求变量参数:{},核对项目编码:{},是否进行属地过滤:{},默认的检验机构code:{}, 法定的检验机构code:{}, 法定的检验机构code: {},是否需要匹配核准代码:{}", bizObj, itemCode, isMatchArea, defaultInspectionCode, legalInspectionCodes, inspectionCompanyType, isMatchItem);
return;
}
redisUtils.set(this.buildRedisDataKey("filterInspectionOrgAction", inspectionEquipInfo.getUuid()), inspectionEquipInfo.getUuid(), 3600);
// 1.获取所有的符合资质条件的单位许可信息 // 1.获取所有的符合资质条件的单位许可信息
List<TzBaseUnitLicence> unitLicenceList = getBaseUnitLicenceList(itemCode, isMatchItem); List<TzBaseUnitLicence> unitLicenceList = getBaseUnitLicenceList(itemCode, isMatchItem);
// 2.匹配过滤机构信息,默认检验机构(目前检测没配置规则,后续检测也需要配置规则时,需要规则那回调方法新增参数,区分检验还是检测) // 2.匹配过滤机构信息,默认检验机构(目前检测没配置规则,后续检测也需要配置规则时,需要规则那回调方法新增参数,区分检验还是检测)
List<TzBaseEnterpriseInfoDto> tzBaseEnterpriseInfoList = getInspectionUnitListForFirstCommit(unitLicenceList, isMatchArea, inspectionEquipInfo.getRecord(), OpenBizTypeEnum.JY.getCode(), defaultInspectionCode, legalInspectionCodes); List<TzBaseEnterpriseInfoDto> tzBaseEnterpriseInfoList = getInspectionUnitListForFirstCommit(unitLicenceList, isMatchArea, inspectionEquipInfo, OpenBizTypeEnum.JY.getCode(), defaultInspectionCode, legalInspectionCodes);
publishMqttMessage(inspectionEquipInfo.getComponentKey(), tzBaseEnterpriseInfoList); publishMqttMessage(inspectionEquipInfo.getComponentKey(), tzBaseEnterpriseInfoList);
} catch (MqttException e) { } catch (MqttException | InterruptedException e) {
log.error("Error publishing MQTT message: {}", e.getMessage()); log.error("Error publishing MQTT message: {}", e.getMessage());
} finally {
if (lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
} }
private String buildLockKey(String type, String uuid) {
return String.format("%s-%s", type, uuid);
}
private String buildRedisDataKey(String type, String uuid) {
return String.format("RECEIVED-UUID-RULE:%s-%s", type, uuid);
} }
...@@ -104,7 +130,7 @@ public class RuleActionHandler { ...@@ -104,7 +130,7 @@ public class RuleActionHandler {
// 1.获取所有的符合资质条件的单位许可信息 // 1.获取所有的符合资质条件的单位许可信息
List<TzBaseUnitLicence> unitLicenceList = getBaseUnitLicenceList(itemCode, isMatchItem); List<TzBaseUnitLicence> unitLicenceList = getBaseUnitLicenceList(itemCode, isMatchItem);
// 2.匹配过滤机构信息,默认检验机构(目前检测没配置规则,后续检测也需要配置规则时,需要规则那回调方法新增参数,区分检验还是检测) // 2.匹配过滤机构信息,默认检验机构(目前检测没配置规则,后续检测也需要配置规则时,需要规则那回调方法新增参数,区分检验还是检测)
List<TzBaseEnterpriseInfoDto> tzBaseEnterpriseInfoList = getInspectionUnitListForNoAccept(unitLicenceList, isMatchArea, inspectionEquipInfo.getRecord(), OpenBizTypeEnum.JY.getCode(), defaultInspectionCode, legalInspectionCodes, inspectionCompanyType); List<TzBaseEnterpriseInfoDto> tzBaseEnterpriseInfoList = getInspectionUnitListForNoAccept(unitLicenceList, isMatchArea, inspectionEquipInfo, OpenBizTypeEnum.JY.getCode(), defaultInspectionCode, legalInspectionCodes, inspectionCompanyType);
publishMqttMessage(inspectionEquipInfo.getComponentKey(), tzBaseEnterpriseInfoList); publishMqttMessage(inspectionEquipInfo.getComponentKey(), tzBaseEnterpriseInfoList);
} catch (MqttException e) { } catch (MqttException e) {
log.error("Error publishing MQTT message: {}", e.getMessage()); log.error("Error publishing MQTT message: {}", e.getMessage());
...@@ -128,9 +154,9 @@ public class RuleActionHandler { ...@@ -128,9 +154,9 @@ public class RuleActionHandler {
return tzBaseUnitLicences; return tzBaseUnitLicences;
} }
private List<TzBaseEnterpriseInfoDto> getInspectionUnitListForNoAccept(List<TzBaseUnitLicence> unitLicenceList, Boolean isMatchArea, String record, String openBizType, String defaultInspectionCode, String legalInspectionCodes, String inspectionCompanyType) { private List<TzBaseEnterpriseInfoDto> getInspectionUnitListForNoAccept(List<TzBaseUnitLicence> unitLicenceList, Boolean isMatchArea, InspectionEquipInfo inspectionEquipInfo, String openBizType, String defaultInspectionCode, String legalInspectionCodes, String inspectionCompanyType) {
// 是否进行属地过滤 // 是否进行属地过滤
String areaCode = isMatchArea ? this.getArea(record) : ""; String areaCode = isMatchArea ? inspectionEquipInfo.getAreaCode() : "";
// 所有符合单位的code // 所有符合单位的code
List<String> unitCodes = unitLicenceList.stream().map(TzBaseUnitLicence::getUnitCode).collect(Collectors.toList()); List<String> unitCodes = unitLicenceList.stream().map(TzBaseUnitLicence::getUnitCode).collect(Collectors.toList());
List<TzBaseEnterpriseInfoDto> matchEnterpriseInfos = new ArrayList<>(); List<TzBaseEnterpriseInfoDto> matchEnterpriseInfos = new ArrayList<>();
...@@ -154,15 +180,15 @@ public class RuleActionHandler { ...@@ -154,15 +180,15 @@ public class RuleActionHandler {
if (matchEnterpriseInfos.isEmpty()) { if (matchEnterpriseInfos.isEmpty()) {
log.info("指定的默认的检验机构未匹配到,将返回所有的检验机构包括第三方和法定检验机构,省特检院除外"); log.info("指定的默认的检验机构未匹配到,将返回所有的检验机构包括第三方和法定检验机构,省特检院除外");
matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCode(null, null, openBizType); matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCode(null, null, openBizType);
matchEnterpriseInfos = matchEnterpriseInfos.stream().filter(c -> !provinceInspectionCompanyCode.contains(c.getUseCode())).collect(Collectors.toList()); matchEnterpriseInfos = matchEnterpriseInfos.stream().filter(c -> !specialInspectionCompanyCode.contains(c.getUseCode())).collect(Collectors.toList());
log.info("指定的默认的检验机构未匹配到,将返回所有的检验机构包括第三方和法定检验机构,数据为:{}", matchEnterpriseInfos); log.info("指定的默认的检验机构未匹配到,将返回所有的检验机构包括第三方和法定检验机构,数据为:{}", matchEnterpriseInfos);
} }
return matchEnterpriseInfos; return matchEnterpriseInfos;
} }
private List<TzBaseEnterpriseInfoDto> getInspectionUnitListForFirstCommit(List<TzBaseUnitLicence> unitLicenceList, Boolean isMatchArea, String record, String openBizType, String defaultInspectionCode, String legalInspectionCodes) { private List<TzBaseEnterpriseInfoDto> getInspectionUnitListForFirstCommit(List<TzBaseUnitLicence> unitLicenceList, Boolean isMatchArea, InspectionEquipInfo inspectionEquipInfo, String openBizType, String defaultInspectionCode, String legalInspectionCodes) {
// 是否进行属地过滤 // 是否进行属地过滤
String areaCode = isMatchArea ? this.getArea(record) : ""; String areaCode = isMatchArea ? inspectionEquipInfo.getAreaCode() : "";
// 所有符合单位的code // 所有符合单位的code
List<String> unitCodes = unitLicenceList.stream() List<String> unitCodes = unitLicenceList.stream()
.map(TzBaseUnitLicence::getUnitCode) .map(TzBaseUnitLicence::getUnitCode)
...@@ -183,25 +209,11 @@ public class RuleActionHandler { ...@@ -183,25 +209,11 @@ public class RuleActionHandler {
if (matchEnterpriseInfos.isEmpty()) { if (matchEnterpriseInfos.isEmpty()) {
log.info("指定的默认的检验机构未匹配到,将返回所有的检验机构包括第三方和法定检验机构,省特检院除外"); log.info("指定的默认的检验机构未匹配到,将返回所有的检验机构包括第三方和法定检验机构,省特检院除外");
matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCode(null, null, openBizType); matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCode(null, null, openBizType);
matchEnterpriseInfos = matchEnterpriseInfos.stream().filter(c -> !provinceInspectionCompanyCode.contains(c.getUseCode())).collect(Collectors.toList()); matchEnterpriseInfos = matchEnterpriseInfos.stream().filter(c -> !specialInspectionCompanyCode.contains(c.getUseCode())).collect(Collectors.toList());
} }
return matchEnterpriseInfos; return matchEnterpriseInfos;
} }
private String getArea(String record) {
UseInfo equipUseInfo = useInfoMapper.selectOne(Wrappers.<UseInfo>lambdaQuery().select(UseInfo::getCity, UseInfo::getCounty).eq(UseInfo::getRecord, record));
if (equipUseInfo == null) {
return "";
}
// 特殊地区特殊处理,目前有韩城、杨凌,原因行政区划上是有层级的,但是业务办理时,他们与所在地市是同级别的
if (StringUtils.isEmpty(equipUseInfo.getCity()) || StringUtils.isEmpty(equipUseInfo.getCounty())) {
return "";
}
if (Arrays.asList(EXCLUSION_CITY_REGIONS).contains(equipUseInfo.getCounty())) {
return equipUseInfo.getCounty();
}
return equipUseInfo.getCity();
}
private void publishMqttMessage(String componentKey, Object message) throws MqttException { private void publishMqttMessage(String componentKey, Object message) throws MqttException {
log.info("报检规则推送到web主题:{}:,消息内容为:{}", String.format(TopicEnum.INSPECTION_LIST_PUSH.getTopic(), componentKey), JSON.toJSONString(message)); log.info("报检规则推送到web主题:{}:,消息内容为:{}", String.format(TopicEnum.INSPECTION_LIST_PUSH.getTopic(), componentKey), JSON.toJSONString(message));
...@@ -216,7 +228,7 @@ public class RuleActionHandler { ...@@ -216,7 +228,7 @@ public class RuleActionHandler {
public List<TzBaseEnterpriseInfoDto> getInspectionUnitList(List<TzBaseUnitLicence> unitLicenceList, Boolean isMatchArea, String record, String openBizType) { public List<TzBaseEnterpriseInfoDto> getInspectionUnitList(List<TzBaseUnitLicence> unitLicenceList, Boolean isMatchArea, String record, String openBizType) {
// 是否进行属地过滤 // 是否进行属地过滤
String areaCode = isMatchArea ? this.getArea(record) : ""; String areaCode = isMatchArea ? ruleCommonService.getArea(record) : "";
// 所有符合单位的code // 所有符合单位的code
List<String> unitCodes = unitLicenceList.stream().map(TzBaseUnitLicence::getUnitCode).collect(Collectors.toList()); List<String> unitCodes = unitLicenceList.stream().map(TzBaseUnitLicence::getUnitCode).collect(Collectors.toList());
List<TzBaseEnterpriseInfoDto> matchEnterpriseInfos = new ArrayList<>(); List<TzBaseEnterpriseInfoDto> matchEnterpriseInfos = new ArrayList<>();
......
...@@ -13,10 +13,10 @@ import com.yeejoin.amos.boot.module.jyjc.api.model.InspectionEquipInfoModel; ...@@ -13,10 +13,10 @@ import com.yeejoin.amos.boot.module.jyjc.api.model.InspectionEquipInfoModel;
import com.yeejoin.amos.boot.module.jyjc.biz.event.listener.InspectionApplicationPushEventListener; import com.yeejoin.amos.boot.module.jyjc.biz.event.listener.InspectionApplicationPushEventListener;
import com.yeejoin.amos.boot.module.jyjc.biz.listener.message.BizMessage; import com.yeejoin.amos.boot.module.jyjc.biz.listener.message.BizMessage;
import com.yeejoin.amos.boot.module.jyjc.biz.rule.InspectionEquipInfo; import com.yeejoin.amos.boot.module.jyjc.biz.rule.InspectionEquipInfo;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.RuleCommonServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.entity.RegistrationInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.RegistrationInfo;
import com.yeejoin.amos.boot.module.ymt.api.mapper.RegistrationInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.RegistrationInfoMapper;
import com.yeejoin.amos.component.robot.AmosRequestContext; import com.yeejoin.amos.component.robot.AmosRequestContext;
import com.yeejoin.amos.component.rule.RuleTrigger;
import com.yeejoin.amos.feign.rule.Rule; import com.yeejoin.amos.feign.rule.Rule;
import com.yeejoin.amos.feign.rule.model.FactBaseModel; import com.yeejoin.amos.feign.rule.model.FactBaseModel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -53,12 +53,13 @@ public class InspectionOrgRefreshListener extends EmqxListener { ...@@ -53,12 +53,13 @@ public class InspectionOrgRefreshListener extends EmqxListener {
@Value("${inspection.rule.project-name:报检规则}") @Value("${inspection.rule.project-name:报检规则}")
private String ruleName; private String ruleName;
@Autowired @Autowired
private EmqKeeper emqKeeper; private EmqKeeper emqKeeper;
@Autowired
private RuleTrigger ruleTrigger;
@Autowired @Autowired
private AmosRequestContext amosRequestContext; private AmosRequestContext amosRequestContext;
@Autowired @Autowired
private RegistrationInfoMapper registrationInfoMapper; private RegistrationInfoMapper registrationInfoMapper;
...@@ -74,13 +75,14 @@ public class InspectionOrgRefreshListener extends EmqxListener { ...@@ -74,13 +75,14 @@ public class InspectionOrgRefreshListener extends EmqxListener {
@Autowired @Autowired
Sequence sequence; Sequence sequence;
@Autowired private static final int REPEAT_TIME = 2;
private static final int repeatTime = 2;
@Autowired @Autowired
RedisUtils redisUtils; RedisUtils redisUtils;
@Autowired
RuleCommonServiceImpl ruleCommonService;
@Override @Override
public void processMessage(String topic, MqttMessage message) { public void processMessage(String topic, MqttMessage message) {
if (log.isInfoEnabled()) { if (log.isInfoEnabled()) {
...@@ -105,10 +107,10 @@ public class InspectionOrgRefreshListener extends EmqxListener { ...@@ -105,10 +107,10 @@ public class InspectionOrgRefreshListener extends EmqxListener {
BizMessage bizMessage = BLOCKING_QUEUE.take(); BizMessage bizMessage = BLOCKING_QUEUE.take();
// 解决前端组件在属性变化时重复发送两次问题 // 解决前端组件在属性变化时重复发送两次问题
if (!redisUtils.hasKey(bizMessage.getTopic())) { if (!redisUtils.hasKey(bizMessage.getTopic())) {
redisUtils.set(bizMessage.getTopic(), true, repeatTime); redisUtils.set(bizMessage.getTopic(), true, REPEAT_TIME);
processBizMessage(bizMessage); processBizMessage(bizMessage);
} else { } else {
log.warn("消息在{}秒内重复,", repeatTime); log.warn("消息在{}秒内重复,", REPEAT_TIME);
} }
} catch (Exception e) { } catch (Exception e) {
log.error("数据处理失败", e); log.error("数据处理失败", e);
...@@ -133,21 +135,31 @@ public class InspectionOrgRefreshListener extends EmqxListener { ...@@ -133,21 +135,31 @@ public class InspectionOrgRefreshListener extends EmqxListener {
inspectionEquipInfo.setRecord(equipInfoModel.getRecord()); inspectionEquipInfo.setRecord(equipInfoModel.getRecord());
inspectionEquipInfo.setBizType(getCategoryByType(JYJCTypeEnum.of(inspectionEquipInfo.getInspectionType()))); inspectionEquipInfo.setBizType(getCategoryByType(JYJCTypeEnum.of(inspectionEquipInfo.getInspectionType())));
inspectionEquipInfo.setUuid(sequence.nextId() + ""); inspectionEquipInfo.setUuid(sequence.nextId() + "");
inspectionEquipInfo.setRequestType(this.buildRequestType(equipInfoModel));
inspectionEquipInfo.setTechParams(this.getTechParams(registrationInfo)); inspectionEquipInfo.setTechParams(this.getTechParams(registrationInfo));
inspectionEquipInfo.setAreaCode(ruleCommonService.getArea(equipInfoModel.getRecord()));
JyjcInspectionApplicationNoAcceptLog jyjcInspectionApplicationNoAcceptLog = getLastNoAcceptLog(equipInfoModel);
inspectionEquipInfo.setRequestType(this.buildRequestType(equipInfoModel, jyjcInspectionApplicationNoAcceptLog));
inspectionEquipInfo.setLastNoAcceptInspectionCode(this.buildLastNoAcceptInspectionCode(jyjcInspectionApplicationNoAcceptLog));
touchRuleWithApi(inspectionEquipInfo); touchRuleWithApi(inspectionEquipInfo);
} }
private String buildLastNoAcceptInspectionCode(JyjcInspectionApplicationNoAcceptLog jyjcInspectionApplicationNoAcceptLog) {
if (jyjcInspectionApplicationNoAcceptLog != null) {
return jyjcInspectionApplicationNoAcceptLog.getInspectionUnitCode();
}
return "";
}
private Map<String, Object> getTechParams(RegistrationInfo registrationInfo) { private Map<String, Object> getTechParams(RegistrationInfo registrationInfo) {
return applicationPushEventListener.populateEquipInfoWithTechParams(registrationInfo.getEquList(), registrationInfo.getRecord()); return applicationPushEventListener.populateEquipInfoWithTechParams(registrationInfo.getEquList(), registrationInfo.getRecord());
} }
private String buildRequestType(InspectionEquipInfoModel equipInfoModel) { private String buildRequestType(InspectionEquipInfoModel equipInfoModel, JyjcInspectionApplicationNoAcceptLog jyjcInspectionApplicationNoAcceptLog) {
// 工作台发起申请 // 工作台发起申请
if (StringUtils.isEmpty(equipInfoModel.getAppSeq())) { if (StringUtils.isEmpty(equipInfoModel.getAppSeq())) {
return RequestTypeEnum.FIRST_REQUEST.getCode(); return RequestTypeEnum.FIRST_REQUEST.getCode();
} }
JyjcInspectionApplicationNoAcceptLog jyjcInspectionApplicationNoAcceptLog = getLastNoAcceptLog(equipInfoModel);
// 没有不予受理请求记录 // 没有不予受理请求记录
if (jyjcInspectionApplicationNoAcceptLog == null) { if (jyjcInspectionApplicationNoAcceptLog == null) {
return RequestTypeEnum.FIRST_REQUEST.getCode(); return RequestTypeEnum.FIRST_REQUEST.getCode();
...@@ -159,7 +171,7 @@ public class InspectionOrgRefreshListener extends EmqxListener { ...@@ -159,7 +171,7 @@ public class InspectionOrgRefreshListener extends EmqxListener {
private JyjcInspectionApplicationNoAcceptLog getLastNoAcceptLog(InspectionEquipInfoModel equipInfoModel) { private JyjcInspectionApplicationNoAcceptLog getLastNoAcceptLog(InspectionEquipInfoModel equipInfoModel) {
LambdaQueryWrapper<JyjcInspectionApplicationNoAcceptLog> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<JyjcInspectionApplicationNoAcceptLog> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(JyjcInspectionApplicationNoAcceptLog::getApplicationSeq, equipInfoModel.getAppSeq()); wrapper.eq(JyjcInspectionApplicationNoAcceptLog::getApplicationSeq, equipInfoModel.getAppSeq());
wrapper.orderByDesc(JyjcInspectionApplicationNoAcceptLog::getNoAcceptDate); wrapper.orderByDesc(JyjcInspectionApplicationNoAcceptLog::getRecDate);
wrapper.last("limit 1"); wrapper.last("limit 1");
wrapper.select(JyjcInspectionApplicationNoAcceptLog::getApplicationSeq, JyjcInspectionApplicationNoAcceptLog::getInspectionUnitCode); wrapper.select(JyjcInspectionApplicationNoAcceptLog::getApplicationSeq, JyjcInspectionApplicationNoAcceptLog::getInspectionUnitCode);
return inspectionApplicationNoAcceptLogMapper.selectOne(wrapper); return inspectionApplicationNoAcceptLogMapper.selectOne(wrapper);
...@@ -172,22 +184,6 @@ public class InspectionOrgRefreshListener extends EmqxListener { ...@@ -172,22 +184,6 @@ public class InspectionOrgRefreshListener extends EmqxListener {
.eq(RegistrationInfo::getRecord, record)); .eq(RegistrationInfo::getRecord, record));
} }
private void touchRuleWithMsg(InspectionEquipInfo inspectionEquipInfo) {
if (log.isInfoEnabled()) {
log.info("发送规则的消息对象:{}", toJSONString(inspectionEquipInfo));
}
RequestContext.setToken(amosRequestContext.getToken());
RequestContext.setAppKey(amosRequestContext.getAppKey());
RequestContext.setProduct(amosRequestContext.getProduct());
// 2.调用规则
try {
ruleTrigger.publish(inspectionEquipInfo, ruleName + "/" + inspectionEquipInfo.getBizType(), null);
} catch (Exception e) {
log.error("调用规则触发获取报检规则失败", e);
}
}
private void touchRuleWithApi(InspectionEquipInfo inspectionEquipInfo) { private void touchRuleWithApi(InspectionEquipInfo inspectionEquipInfo) {
if (log.isInfoEnabled()) { if (log.isInfoEnabled()) {
log.info("发送规则的消息对象:{}", toJSONString(inspectionEquipInfo)); log.info("发送规则的消息对象:{}", toJSONString(inspectionEquipInfo));
......
...@@ -51,4 +51,7 @@ public class InspectionEquipInfo implements Serializable { ...@@ -51,4 +51,7 @@ public class InspectionEquipInfo implements Serializable {
@ApiModelProperty(value = "最近不受理检验机构code") @ApiModelProperty(value = "最近不受理检验机构code")
private String lastNoAcceptInspectionCode; private String lastNoAcceptInspectionCode;
@ApiModelProperty(value = "所在区域")
private String areaCode;
} }
...@@ -177,6 +177,12 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -177,6 +177,12 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
private static final String SUMMIT_TYPE = "0"; private static final String SUMMIT_TYPE = "0";
/**
* 省特检院等特殊公司code
*/
@Value("${shanxi.tjy.code:126100004352004822}")
private String shanxiCompanyCode;
@Autowired @Autowired
RestHighLevelClient restHighLevelClient; RestHighLevelClient restHighLevelClient;
...@@ -565,6 +571,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -565,6 +571,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
public Map<String, Object> selectBySeq(Long sequenceNbr) { public Map<String, Object> selectBySeq(Long sequenceNbr) {
JyjcInspectionApplicationModel model = this.getBaseMapper().selectDataBySeq(sequenceNbr); JyjcInspectionApplicationModel model = this.getBaseMapper().selectDataBySeq(sequenceNbr);
int times = noAcceptLogService.count(new LambdaQueryWrapper<JyjcInspectionApplicationNoAcceptLog>().eq(JyjcInspectionApplicationNoAcceptLog::getApplicationSeq, sequenceNbr).eq(JyjcInspectionApplicationNoAcceptLog::getInspectionUnitCode,shanxiCompanyCode));
Map<String, Object> map = BeanUtil.beanToMap(model); Map<String, Object> map = BeanUtil.beanToMap(model);
List<Map<String, Object>> dataByApplicationSeq = jyjcInspectionApplicationAttachmentService.getBaseMapper().getDataByApplicationSeq(sequenceNbr); List<Map<String, Object>> dataByApplicationSeq = jyjcInspectionApplicationAttachmentService.getBaseMapper().getDataByApplicationSeq(sequenceNbr);
Map<String, Object> attMap = new HashMap<>(); Map<String, Object> attMap = new HashMap<>();
...@@ -599,6 +606,8 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -599,6 +606,8 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
map.put("equip", arrayList); map.put("equip", arrayList);
} }
map.putAll(attMap); map.putAll(attMap);
// 陕西特检验院不予首次的次数
map.put("sytjybyslcs",times);
this.setPlanData(sequenceNbr, map); this.setPlanData(sequenceNbr, map);
return map; return map;
} }
...@@ -869,7 +878,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -869,7 +878,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
task.setTaskId(taskId); task.setTaskId(taskId);
task.setComment(params.getOrDefault("comments", "").toString()); task.setComment(params.getOrDefault("comments", "").toString());
HashMap<String, Object> map = new HashMap<>(); HashMap<String, Object> map = new HashMap<>();
map.put("approvalStatus", "1"); map.put("approvalStatus", "8");
task.setVariable(map); task.setVariable(map);
//执行流程 //执行流程
task.setNextExecuteUserCompanyCode(model.getInspectionUnitCode()); task.setNextExecuteUserCompanyCode(model.getInspectionUnitCode());
...@@ -1063,7 +1072,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec ...@@ -1063,7 +1072,7 @@ public class JyjcInspectionApplicationServiceImpl extends BaseService<JyjcInspec
TaskModelDto modelDto = new TaskModelDto(); TaskModelDto modelDto = new TaskModelDto();
BeanUtil.copyProperties(taskV2Model, modelDto); BeanUtil.copyProperties(taskV2Model, modelDto);
modelDto.setNextExecuteUser(model.getNextExecuteIds()); modelDto.setNextExecuteUser(model.getNextExecuteIds());
if (model.getStatus().equals(FlowStatusEnum.REJECTED.getCode() + "") || model.getStatus().equals(FlowStatusEnum.NO_ACCEPT.getCode() + "")) { if (model.getStatus().equals(FlowStatusEnum.REJECTED.getCode() + "")) {
modelDto.setPageType("edit"); modelDto.setPageType("edit");
} }
TaskMessageDto obj = new TaskMessageDto(); TaskMessageDto obj = new TaskMessageDto();
......
package com.yeejoin.amos.boot.module.jyjc.biz.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yeejoin.amos.boot.module.ymt.api.entity.UseInfo;
import com.yeejoin.amos.boot.module.ymt.api.mapper.UseInfoMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import java.util.Arrays;
/**
* @author Administrator
*/
@Component
public class RuleCommonServiceImpl {
private UseInfoMapper useInfoMapper;
/**
* 特殊独立的区县
*/
private static final String[] EXCLUSION_CITY_REGIONS = {"610403", "610581"};
public RuleCommonServiceImpl(UseInfoMapper useInfoMapper) {
this.useInfoMapper = useInfoMapper;
}
public String getArea(String record) {
UseInfo equipUseInfo = useInfoMapper.selectOne(Wrappers.<UseInfo>lambdaQuery().select(UseInfo::getCity, UseInfo::getCounty).eq(UseInfo::getRecord, record));
if (equipUseInfo == null) {
return "";
}
// 特殊地区特殊处理,目前有韩城、杨凌,原因行政区划上是有层级的,但是业务办理时,他们与所在地市是同级别的
if (StringUtils.isEmpty(equipUseInfo.getCity()) || StringUtils.isEmpty(equipUseInfo.getCounty())) {
return "";
}
if (Arrays.asList(EXCLUSION_CITY_REGIONS).contains(equipUseInfo.getCounty())) {
return equipUseInfo.getCounty();
}
return equipUseInfo.getCity();
}
}
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