Commit 0bf15a31 authored by tianbo's avatar tianbo

Merge branch 'develop_tzs_register' of…

Merge branch 'develop_tzs_register' of http://36.40.66.175:5000/moa/amos-boot-biz into develop_tzs_register
parents 17c7602f 8a83e568
package com.yeejoin.amos.boot.module.jg.api.dto;
import cn.hutool.core.date.DateUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.util.Date;
/**
* @author Administrator
* code 生成参数类
*/
@Data
@ApiModel(value = "code生成参数类")
public class CodeGenerateDto {
@ApiModelProperty(value = "设备种类")
private String equList;
@ApiModelProperty(value = "设备类别")
private String equCategory;
@ApiModelProperty(value = "设备品种")
private String equDefine;
@ApiModelProperty(value = "制造日期")
private Date produceDate;
@ApiModelProperty(value = "审批机构所在地行政区域代码")
private String receiveCompanyCode;
/**
* 获取年
* @return 制造日期所在年
*/
public String getYear() {
return DateUtil.year(produceDate) + "";
}
/**
* 获得设备基本代码
* @return 设备基本代码
*/
public String getEquipBaseCode() {
return StringUtils.isNotEmpty(equDefine) ? equDefine : equCategory;
}
}
......@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.jg.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.ymt.api.entity.EquipmentCategory;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
......@@ -53,5 +54,12 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
List<String> refreshTheDetailsDataOfCompletedUsageRegistration(String since);
/**
* 按照 地市或者区县查询所在的地市code
* @param receiveCompanyCode 地市或者区县code
* @param exclusionIds 需要排除的区县
* @return 地市code
*/
String selectCityCompanyCode(@Param("receiveCompanyCode") String receiveCompanyCode, @Param("exclusionIds") String[] exclusionIds);
}
......@@ -318,5 +318,17 @@
WHERE "status" = '已完成'
AND "audit_pass_date" <![CDATA[<=]]> #{since}
</select>
<select id="selectCityCompanyCode" resultType="string">
SELECT
c.company_code
FROM "privilege_company" c
where
c.company_code like concat(left(#{receiveCompanyCode}, 4), '%')
and c.level ='prefecture-level'
and c.company_type ='监管机构'
<foreach collection="exclusionIds" item="id" separator="" open="" close="">
and c.company_code != #{id}
</foreach>
limit 1
</select>
</mapper>
......@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jg.api.dto.CodeGenerateDto;
import com.yeejoin.amos.boot.module.jg.api.dto.UseFlagParamDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgRegistrationHistory;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationMapper;
......@@ -14,6 +15,7 @@ import com.yeejoin.amos.boot.module.jg.api.service.IJgInstallationNoticeService;
import com.yeejoin.amos.boot.module.jg.biz.service.ICommonService;
import com.yeejoin.amos.boot.module.jg.biz.service.IPdfService;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgRegistrationHistoryServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.utils.CodeUtil;
import com.yeejoin.amos.boot.module.ymt.api.entity.EquipmentCategory;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.feign.systemctl.Systemctl;
......@@ -55,6 +57,9 @@ public class CommonController extends BaseController {
@Autowired
JgUseRegistrationMapper jgUseRegistrationMapper;
@Autowired
CodeUtil codeUtil;
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/getChildren")
@ApiOperation(httpMethod = "GET", value = "通过设备种类code获取设备类别", notes = "通过设备种类code获取设备类别")
......@@ -462,4 +467,18 @@ public class CommonController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/test-code")
@ApiOperation(httpMethod = "GET", value = "code生成", notes = "code生成")
public ResponseModel<String> codeTest() {
CodeGenerateDto codeGenerateDto = new CodeGenerateDto();
codeGenerateDto.setEquList("2100");
codeGenerateDto.setEquCategory("2110");
codeGenerateDto.setEquDefine("2111");
codeGenerateDto.setProduceDate(new Date());
codeGenerateDto.setReceiveCompanyCode("610202");
return ResponseHelper.buildResponse(codeUtil.generateEquipmentCode(codeGenerateDto));
}
}
......@@ -607,6 +607,9 @@ public class CommonServiceImpl implements ICommonService {
case "inspection":
type = "检验检测机构";
break;
case "all":
type = "all";
break;
}
return commonMapper.getUnitListByType(type);
}
......
......@@ -25,10 +25,12 @@ import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationMapper;
import com.yeejoin.amos.boot.module.jg.api.service.IJgUseRegistrationService;
import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.service.ICommonService;
import com.yeejoin.amos.boot.module.jg.biz.utils.CodeUtil;
import com.yeejoin.amos.boot.module.jg.flc.api.fegin.WorkFlowFeignService;
import com.yeejoin.amos.boot.module.ymt.api.common.StringUtil;
import com.yeejoin.amos.boot.module.ymt.api.entity.*;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquCodeTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.*;
......@@ -102,6 +104,10 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
private IdxBizJgOtherInfoMapper otherInfoMapper;
@Autowired
private JgUseRegistrationEqMapper jgRelationEquipMapper;
@Autowired
private ProduceInfoMapper produceInfoMapper;
@Autowired
private IdxBizJgRegisterInfoServiceImpl idxBizJgRegisterInfoService;
@Autowired
......@@ -113,6 +119,9 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
@Autowired
private RedissonClient redissonClient;
@Autowired
CodeUtil codeUtil;
/**
* @param auditPassDate 通过时间
* @param exportParamsMap 参数map
......@@ -543,7 +552,6 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
lambdaSelect.eq(JgRegistrationHistory::getCurrentDocumentId, String.valueOf(sequenceNbr));
JgRegistrationHistory jgRegistrationHistory = jgRegistrationHistoryService.getBaseMapper().selectOne(lambdaSelect);
JSONObject mapData = JSONObject.parseObject(jgRegistrationHistory.getChangeData());
// 其他信息
LambdaQueryWrapper<IdxBizJgOtherInfo> lambdaOth = new QueryWrapper<IdxBizJgOtherInfo>().lambda();
lambdaOth.eq(IdxBizJgOtherInfo::getRecord, String.valueOf(mapData.get("equipId")));
......@@ -563,6 +571,8 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
LambdaUpdateWrapper<IdxBizJgRegisterInfo> lambda = new UpdateWrapper<IdxBizJgRegisterInfo>().lambda();
lambda.eq(IdxBizJgRegisterInfo::getRecord, registerInfo.getRecord());
lambda.set(true, IdxBizJgRegisterInfo::getUseOrgCode, code);
// 新增页面选择无设备代码后,在审批通过后自动生成设备代码
this.justGenerateEquCode(lambda, registerInfo, jgUseRegistration.getReceiveCompanyCode(), mapData, jgRegistrationHistory);
idxBizJgRegisterInfoService.update(lambda);
}
// 使用信息
......@@ -590,6 +600,38 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
return jgUseRegistration;
}
/**
* 系统类型的code 自动生成设备代码
* @param lambda lambda
* @param registerInfo 注册信息
* @param receiveCompanyCode 接收机构行政区划代码
* @param mapData 历史数据
* @param jgRegistrationHistory 历史数据行数据
*/
private void justGenerateEquCode(LambdaUpdateWrapper<IdxBizJgRegisterInfo> lambda, IdxBizJgRegisterInfo registerInfo, String receiveCompanyCode, JSONObject mapData, JgRegistrationHistory jgRegistrationHistory) {
if(EquCodeTypeEnum.SYSTEM_GENERATED.getCode().equals(registerInfo.getEquCodeType())){
// 更新注册信息表的设备代码字段
String equCode = this.getEquCode(registerInfo,receiveCompanyCode);
registerInfo.setEquCode(equCode);
mapData.put("equCode", equCode);
lambda.set(true, IdxBizJgRegisterInfo::getEquCode, equCode);
// 更新新生成的历史数据的设备代码
jgRegistrationHistory.setChangeData(JSON.toJSONString(mapData));
jgRegistrationHistoryService.updateById(jgRegistrationHistory);
}
}
private String getEquCode(IdxBizJgRegisterInfo registerInfo, String receiveCompanyCode){
ProduceInfo produceInfo = produceInfoMapper.selectOne(new LambdaQueryWrapper<ProduceInfo>().eq(AbstractEquipBaseEntity::getRecord,registerInfo.getRecord()));
CodeGenerateDto codeGenerateDto = new CodeGenerateDto();
codeGenerateDto.setEquList(registerInfo.getEquList());
codeGenerateDto.setEquCategory(registerInfo.getEquCategory());
codeGenerateDto.setEquDefine(registerInfo.getEquDefine());
codeGenerateDto.setProduceDate(produceInfo.getProduceDate());
codeGenerateDto.setReceiveCompanyCode(receiveCompanyCode);
return codeUtil.generateEquipmentCode(codeGenerateDto);
}
public void updateEsData(String usePlace, JSONObject dataMap, IdxBizJgOtherInfo otherInfo, JgUseRegistration jgUseRegistration) {
// 属地监管部门拆分
String orgBranch = (String) dataMap.getOrDefault("orgBranchCode", "_");
......@@ -607,6 +649,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
param.put("EQU_STATE", 1);
param.put("ORG_BRANCH_CODE", split[0]);
param.put("ORG_BRANCH_NAME", split[1]);
param.put("EQU_CODE", dataMap.get("equCode"));
param.put("USE_ORG_CODE", jgUseRegistration.getUseRegistrationCode());
objMap.put((String) dataMap.get("equipId"), param);
tzsServiceFeignClient.commonUpdateEsDataByIds(objMap);
......
package com.yeejoin.amos.boot.module.jg.biz.utils;
import com.yeejoin.amos.boot.module.jg.api.dto.CodeGenerateDto;
import com.yeejoin.amos.boot.module.jg.api.mapper.CommonMapper;
import org.redisson.api.RBucket;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Component;
import java.util.Arrays;
/**
* @author Administrator
*/
@Component
public class CodeUtil {
private RedissonClient redissonClient;
private CommonMapper commonMapper;
/**
* 特殊独立的区县
*/
private static String[] EXCLUSION_CITY_REGIONS = {"610403", "610581"};
public CodeUtil(RedissonClient redissonClient, CommonMapper commonMapper) {
this.redissonClient = redissonClient;
this.commonMapper = commonMapper;
}
/**
* 按照特种设备代码规范生成 设备代码
*
* @param codeGenerateDto 生成代码需要的数据
* @return 设备基本代码(4位)+ 行政区域代码(6位)+制造年份(4位)+ 制造顺序号(4位)
*/
public String generateEquipmentCode(CodeGenerateDto codeGenerateDto) {
// 根据区县或者地市级的接收机构代码获取地市级的行政区域代码
String regionCode = this.getCityRegionCode(codeGenerateDto.getReceiveCompanyCode());
// 并发锁处理
String lockKey = this.buildLockKey(codeGenerateDto.getEquipBaseCode(), regionCode, codeGenerateDto.getYear());
RLock rLock = redissonClient.getLock(lockKey);
try {
rLock.lock();
// 获取当前已经使用过的序列号
RBucket<Long> rBucket = redissonClient.getBucket(this.buildManufactureNumberKey(lockKey));
// 初始化逻辑,初始化为0(编号1开始)
if (rBucket.get() == null) {
rBucket.set(0L);
}
long currentNumber = rBucket.get();
long nextNumber = currentNumber + 1;
// 使用后redis序列号+1
rBucket.set(nextNumber);
return this.buildEquipmentCode(codeGenerateDto.getEquipBaseCode(), regionCode, codeGenerateDto.getYear(), nextNumber);
} finally {
if (rLock.isHeldByCurrentThread()) {
rLock.unlock();
}
}
}
/**
* 获取地市级的行政审批区域代码
*
* @param receiveCompanyCode 接收机构的行政区域代码
* @return 地市级行政审批区域代码
*/
private String getCityRegionCode(String receiveCompanyCode) {
// 需求《需要注意的是其中的行政区域代码直到地市一级,西咸、杨凌、韩城用自己的》,西咸组织机构独立的所以不需要单独排除
if (Arrays.asList(EXCLUSION_CITY_REGIONS).contains(receiveCompanyCode)) {
return receiveCompanyCode;
} else {
return commonMapper.selectCityCompanyCode(receiveCompanyCode, EXCLUSION_CITY_REGIONS);
}
}
private String buildEquipmentCode(String equipBaseCode, String regionCode, String year, long nextNumber) {
String manufactureNumber = longCode2StrCode(nextNumber);
return String.format("%s%s%s%s", equipBaseCode, regionCode, year, manufactureNumber);
}
private String longCode2StrCode(long nextNumber) {
if (nextNumber >= 10000) {
char prefix = (char) ('A' + (nextNumber - 10000) / 1000);
return prefix + "" + String.format("%03d", (nextNumber - 10000) % 1000);
} else {
return String.format("%04d", nextNumber);
}
}
private String buildManufactureNumberKey(String lockKey) {
return "MANUFACTURE_NUMBER_KEY:" + lockKey;
}
private String buildLockKey(String equipBaseCode, String regionCode, String year) {
return equipBaseCode + regionCode + year;
}
}
......@@ -70,4 +70,9 @@ public class TzsBaseIndividuality extends BaseEntity {
@TableField("enterprise_id")
private Long enterpriseId;
/**
* 证件照片
*/
@TableField("identification_photo")
private String identificationPhoto;
}
package com.yeejoin.amos.boot.module.tcm.api.mapper;
import com.yeejoin.amos.boot.module.tcm.api.dto.TzIndividualityDto;
import com.yeejoin.amos.boot.module.tcm.api.entity.TzsBaseIndividuality;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
......@@ -11,4 +12,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface TzsBaseIndividualityMapper extends BaseMapper<TzsBaseIndividuality> {
TzIndividualityDto getIndividualityInfo(Long sequenceNbr);
}
......@@ -65,8 +65,16 @@ public class IdxBizJgRegisterInfo extends TzsBaseEntity {
@TableField("\"REGISTER_STATE\"")
private String registerState;
/**
*
* 设备代码类型手工输入(1)、系统自动生成(2)
*/
@TableField("\"EQU_CODE_TYPE\"")
private String equCodeType;
/**
* 设备代码
*/
@TableField("\"EQU_CODE\"")
private String equCode;
......
......@@ -64,6 +64,13 @@ public class RegistrationInfo extends AbstractEquipBaseEntity {
@TableField(value ="\"REGISTER_STATE\"")
private String registerState;
/**
* 设备代码类型手工输入(1)、系统自动生成(2)
*/
@TableField("\"EQU_CODE_TYPE\"")
private String equCodeType;
/**
* * 设备代码
* */
......
package com.yeejoin.amos.boot.module.ymt.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author Administrator
* 设备code 类型枚举
*/
@AllArgsConstructor
@Getter
public enum EquCodeTypeEnum {
/**
* 设备code类型
*/
INPUT("手工输入", "1"),
SYSTEM_GENERATED("系统生成", "2");
private String name;
private String code;
}
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