Commit bd8b650d authored by tianbo's avatar tianbo

feat(jg): 新增设备代码生成与校验逻辑

- 修改 getCityRegionCode 方法为 public 以支持跨包调用 - 新增 queryRecentlyReceiveCompanyCode 方法用于查询最近接收机构代码 - 在 SingleEquipChangeProcess 中增加设备代码生成前的校验逻辑 -优化设备代码唯一性检查方式,支持用户输入和系统生成两种模式 - 增加根据公司类型判断设备代码生成规则的逻辑- 完善设备代码生成时对不同场景下接收机构代码获取的处理
parent 09b2e629
...@@ -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>
...@@ -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()) {
// 按receiveCompanyCode倒叙排序后取最新的一个
recentlyReceiveCompanyCode.sort(Comparator.comparing(map -> map.get("receiveCompanyCode"), Comparator.reverseOrder()));
receiveCompanyCode = commonEquipDataProcessService.getJgUseRegistrationService().getCodeUtil().getCityRegionCode(recentlyReceiveCompanyCode.get(0).get("receiveCompanyCode"));
}
}
String equCode = commonEquipDataProcessService.getJgRegisterInfoService().getEquCode(registerInfoNew, factoryInfoOld, receiveCompanyCode);
registerInfoNew.setEquCode(equCode);
}
}
} }
...@@ -58,7 +58,6 @@ import com.yeejoin.amos.component.feign.utils.FeignUtil; ...@@ -58,7 +58,6 @@ import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.feign.systemctl.Systemctl; import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel; import com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel;
import com.yeejoin.amos.feign.systemctl.model.SmsRecordModel; import com.yeejoin.amos.feign.systemctl.model.SmsRecordModel;
import io.seata.spring.annotation.GlobalTransactional;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.javacrumbs.shedlock.spring.annotation.SchedulerLock; import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
...@@ -1059,7 +1058,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -1059,7 +1058,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
// 根据96333码检查唯一性 // 根据96333码检查唯一性
LambdaQueryWrapper<IdxBizJgOtherInfo> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<IdxBizJgOtherInfo> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(IdxBizJgOtherInfo::getCode96333, equipmentInfoForm.get(CODE96333)); wrapper.eq(IdxBizJgOtherInfo::getCode96333, equipmentInfoForm.get(CODE96333));
wrapper.notIn(IdxBizJgOtherInfo::getClaimStatus, "待认领,已拒领,草稿"); wrapper.notIn(IdxBizJgOtherInfo::getClaimStatus, "待认领", "已拒领", "草稿");
wrapper.ne(!ObjectUtils.isEmpty(equipmentInfoForm.get(OTHERINFO_SEQ)), IdxBizJgOtherInfo::getSequenceNbr, equipmentInfoForm.get(OTHERINFO_SEQ)); wrapper.ne(!ObjectUtils.isEmpty(equipmentInfoForm.get(OTHERINFO_SEQ)), IdxBizJgOtherInfo::getSequenceNbr, equipmentInfoForm.get(OTHERINFO_SEQ));
Integer count = otherInfoMapper.selectCount(wrapper); Integer count = otherInfoMapper.selectCount(wrapper);
if (count > 0) { if (count > 0) {
...@@ -2894,7 +2893,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -2894,7 +2893,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
if (!ObjectUtils.isEmpty(map.getString(EQU_CODE))) { if (!ObjectUtils.isEmpty(map.getString(EQU_CODE))) {
BoolQueryBuilder pBuilder = QueryBuilders.boolQuery(); BoolQueryBuilder pBuilder = QueryBuilders.boolQuery();
String test = QueryParser.escape(map.getString(EQU_CODE)); String test = QueryParser.escape(map.getString(EQU_CODE));
pBuilder.must(QueryBuilders.wildcardQuery(EQU_CODE, "*" + QueryParser.escape(test.toLowerCase()) + "*")); pBuilder.must(QueryBuilders.matchPhraseQuery(EQU_CODE, test.toLowerCase()));
boolMust.must(pBuilder); boolMust.must(pBuilder);
} }
// 单位内部编号模糊查询 // 单位内部编号模糊查询
...@@ -5122,7 +5121,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste ...@@ -5122,7 +5121,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
* @param receiveCompanyCode 接收机构 * @param receiveCompanyCode 接收机构
* @return 设备代码 * @return 设备代码
*/ */
private String getEquCode(IdxBizJgRegisterInfo registerInfo, IdxBizJgFactoryInfo factoryInfo, String public String getEquCode(IdxBizJgRegisterInfo registerInfo, IdxBizJgFactoryInfo factoryInfo, String
receiveCompanyCode) { receiveCompanyCode) {
CodeGenerateDto codeGenerateDto = new CodeGenerateDto(); CodeGenerateDto codeGenerateDto = new CodeGenerateDto();
codeGenerateDto.setEquList(registerInfo.getEquList()); codeGenerateDto.setEquList(registerInfo.getEquList());
......
...@@ -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;
......
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