Commit 77080f17 authored by 刘林's avatar 刘林

fix:(jg):气瓶单位变更功能开发代码合并

parent 6b318c5e
......@@ -219,4 +219,22 @@ public class JgChangeRegistrationUnitDto extends BaseDto {
@ApiModelProperty(value = "属地监管部门")
private String orgBranchName;
@ApiModelProperty(value = "设备类别代码")
private String equCategoryCode;
@ApiModelProperty(value = "安全管理员")
private String safetyManager;
@ApiModelProperty(value = "安全管理员电话")
private String phone;
@ApiModelProperty(value = "产权单位seq")
private String estateUnitSeq;
@ApiModelProperty(value = "投用日期")
private String useDate;
@ApiModelProperty(value = "设备使用场所")
private String usePlace;
}
package com.yeejoin.amos.boot.module.jg.api.dto;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -151,4 +150,7 @@ public class JgUseRegistrationManageDto extends BaseDto {
@ApiModelProperty("证书打印标记")
private String certificatePrintTag;
@ApiModelProperty("登记证号类型:0-系统生成,1-手动录入")
private String registrationType;
}
......@@ -239,6 +239,17 @@ public class JgChangeRegistrationUnit extends BaseEntity {
@TableField(exist = false)
private String equDefine;
/**
* 设备品种代码
*/
@TableField(exist = false)
private String equDefineCode;
/**
* 设备类别
*/
@TableField(exist = false)
private String equCategory;
/**
*工作流下一节点任务id
*/
@TableField(value = "next_task_id")
......@@ -331,4 +342,40 @@ public class JgChangeRegistrationUnit extends BaseEntity {
*/
@TableField(value = "org_branch_name")
private String orgBranchName;
/**
* 设备类别编码
*/
@TableField("equ_category_code")
private String equCategoryCode;
/**
* 安全管理员
*/
@TableField("safety_manager")
private String safetyManager;
/**
* 安全管理员电话
*/
@TableField("phone")
private String phone;
/**
* 产权单位seq
*/
@TableField("estate_unit_seq")
private String estateUnitSeq;
/**
* 投用日期
*/
@TableField("use_date")
private String useDate;
/**
* 设备使用场所
*/
@TableField("use_place")
private String usePlace;
}
package com.yeejoin.amos.boot.module.jg.api.entity;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import lombok.*;
import lombok.experimental.Accessors;
import java.util.Date;
/**
......@@ -247,4 +247,10 @@ public class JgUseRegistrationManage extends BaseEntity {
*/
@TableField("certificate_print_tag")
private String certificatePrintTag;
/**
* 登记证号类型:0-系统生成,1-手动录入
*/
@TableField("registration_type")
private String registrationType;
}
......@@ -352,5 +352,14 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
List<Map<String, String>> queryRecentlyReceiveCompanyCode(String record);
Integer countEquipInUseTimesForXaElevator(String record);
/**
* 统计设备被引用的次数(只有存在就算引用-作废除外)
*
* @param records 设备唯一标识
* @return 被引用次数 > 0 则设备不可删除
*/
List<CountDto> countEquipInUseTimesWithOutZFBatch(@Param("records") List<String> records);
}
......@@ -22,6 +22,65 @@
</if>
</select>
<select id="countEquipInUseTimesWithOutZFBatch" resultType="com.yeejoin.amos.boot.biz.common.dto.CountDto">
select
sum(inUseNumber) longValue,
record as keyStr
from (
select
count(1) as inUseNumber,
b.equ_id AS record
from
tzs_jg_use_registration a,
tzs_jg_use_registration_eq b
where
a.sequence_nbr = b.equip_transfer_id
and b.equ_id = ANY(ARRAY[
<foreach collection="records" item="record" separator=",">
#{record}
</foreach>
])
and a.is_delete = 0
and ( a.status <![CDATA[ <> ]]> '已作废')
GROUP BY b.equ_id
UNION ALL
select
count(1) as inUseNumber,
b.equ_id AS record
from
tzs_jg_installation_notice a,
tzs_jg_installation_notice_eq b
where
a.sequence_nbr = b.equip_transfer_id
and b.equ_id = ANY(ARRAY[
<foreach collection="records" item="record" separator=",">
#{record}
</foreach>
])
and a.is_delete = 0
and (a.notice_status <![CDATA[ <> ]]> '6617')
GROUP BY b.equ_id
UNION ALL
select
count(1) as inUseNumber,
b.equ_id AS record
from
tzs_jg_vehicle_information a,
tzs_jg_vehicle_information_eq b
where
a.sequence_nbr = b.vehicle_id
and b.equ_id = ANY(ARRAY[
<foreach collection="records" item="record" separator=",">
#{record}
</foreach>
])
and a.is_delete = 0
and (a.status <![CDATA[ <> ]]> '已作废')
GROUP BY b.equ_id
)
GROUP BY record
</select>
<select id="getUnitInfoListByType" resultType="java.util.Map">
SELECT sequence_nbr AS useCode,
CASE
......
......@@ -67,12 +67,14 @@
<if test="dto.isDoBusiness != null and dto.isDoBusiness != ''">
and tjurm.is_do_business = #{dto.isDoBusiness}
</if>
<!--登记证号类型:0-系统生成,1-手动录入-->
<if test="dto.registrationType != null and dto.registrationType != ''">
and tjurm.registration_type = #{dto.registrationType}
</if>
<!--系统数据刷库后,regType可以不用-->
<if test="dto.regType != null and dto.regType != '' ">
AND EXISTS (
SELECT 1
FROM tzs_jg_use_registration ur
WHERE ur.use_registration_code = tjurm.use_registration_code
AND ur.reg_type IN (0, 2)
SELECT 1 FROM tzs_jg_use_registration ur WHERE ur.use_registration_code = tjurm.use_registration_code AND ur.reg_type IN (0, 2)
)
</if>
ORDER BY tjurm.create_date DESC
......
......@@ -1303,11 +1303,18 @@
</otherwise>
</choose>
</if>
<if test="jsonObject.useUnitCreditCode != null and jsonObject.useUnitCreditCode != '' and jsonObject.record == null">
<choose>
<!--气瓶单位变更使用登记证号 + 单位信用代码联合查询 -->
<when test="jsonObject.useRegistCode != null and jsonObject.useRegistCode != ''">
and ri."USE_ORG_CODE" = #{jsonObject.useRegistCode}
and ui."USE_UNIT_CREDIT_CODE" = #{jsonObject.useUnitCreditCode}
</when>
<!-- 否则根据社会信用代码查询(仅限未登记的) -->
<when test="jsonObject.useUnitCreditCode != null and jsonObject.useUnitCreditCode != '' and jsonObject.record == null">
and ui."USE_UNIT_CREDIT_CODE" = #{jsonObject.useUnitCreditCode}
-- 限制 没有做过使用登记的
and (ri."USE_ORG_CODE" is null or ri."USE_ORG_CODE" = '')
</if>
</when>
</choose>
<choose>
<when test="jsonObject.record != null and jsonObject.record != ''">
and ui."RECORD" = #{jsonObject.record}
......
......@@ -246,12 +246,12 @@ public class IdxBizJqEquipmentRegisterController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/equip/page")
@ApiOperation(httpMethod = "GET", value = "单位办理设备列表查询", notes = "单位办理设备列表查询")
@FieldMapping({@FieldMapping.FieldMap(sourceField = "useUnitSeq", targetField = "useUnitCreditCode", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitCreditInfoBySeq"),})
public ResponseModel<Page<JSONObject>> queryEquipPage(@RequestParam Map<String, Object> queryMap) {
JSONObject jsonObject = new JSONObject(queryMap);
return ResponseHelper.buildResponse(idxBizJgRegisterInfoService.queryForUnitEquipmentPage(jsonObject));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/equipCanUsedByVessel/page")
@ApiOperation(httpMethod = "GET", value = "查询车用气瓶可进行选择的设备列表", notes = "查询车用气瓶可进行选择的设备列表")
......
......@@ -9,7 +9,6 @@ import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.common.biz.utils.CommonResponseUtil;
import com.yeejoin.amos.boot.module.jg.api.dto.JgChangeRegistrationUnitDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgChangeRegistrationUnit;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.CommonServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgChangeRegistrationUnitServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -40,8 +39,6 @@ public class JgChangeRegistrationUnitController extends BaseController {
@Autowired
JgChangeRegistrationUnitServiceImpl jgChangeRegistrationUnitServiceImpl;
@Autowired
CommonServiceImpl commonService;
/**
* 新增
......@@ -53,7 +50,6 @@ public class JgChangeRegistrationUnitController extends BaseController {
@ApiOperation(httpMethod = "POST", value = "新增单位变更", notes = "新增单位变更")
public ResponseModel<String> save(@RequestParam String submitType, @RequestBody JSONObject model) {
ReginParams reginParams = getSelectedOrgInfo();
jgChangeRegistrationUnitServiceImpl.saveNotice(submitType, model, reginParams);
return ResponseHelper.buildResponse("");
}
......@@ -115,12 +111,10 @@ public class JgChangeRegistrationUnitController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/details")
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个单位变更", notes = "根据sequenceNbr查询单个单位变更")
public ResponseModel<Map<String,
Map<String, Object>>> selectOne(@RequestParam("sequenceNbr") Long sequenceNbr) {
public ResponseModel<Map<String, Map<String, Object>>> selectOne(@RequestParam("sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(jgChangeRegistrationUnitServiceImpl.queryBySequenceNbr(sequenceNbr, getSelectedOrgInfo()));
}
/**
* 根据sequenceNbr查询详情
*
......@@ -178,7 +172,6 @@ public class JgChangeRegistrationUnitController extends BaseController {
if (Objects.isNull(installationInfo)) {
throw new IllegalArgumentException("参数installationInfo不能为空");
}
ReginParams reginParams = getSelectedOrgInfo();
jgChangeRegistrationUnitServiceImpl.cancel(installationInfo);
return ResponseHelper.buildResponse(installationInfo);
}
......@@ -202,8 +195,7 @@ public class JgChangeRegistrationUnitController extends BaseController {
}
JgChangeRegistrationUnitDto changeRegistrationUnitDto = JSON.parseObject(JSON.toJSONString(installationInfo), JgChangeRegistrationUnitDto.class);
changeRegistrationUnitDto.setProcessAdvice(opinion);
ReginParams reginParams = getSelectedOrgInfo();
jgChangeRegistrationUnitServiceImpl.accept(changeRegistrationUnitDto, op, reginParams);
jgChangeRegistrationUnitServiceImpl.accept(changeRegistrationUnitDto, op);
return ResponseHelper.buildResponse(null);
}
......
......@@ -132,11 +132,11 @@ public class JgChangeVehicleRegistrationUnitController extends BaseController {
@RequestParam(value = "useUnitCreditCode", required = false) String useUnitCreditCode,
@RequestParam(value = "whetherVehicleCylinder") String whetherVehicleCylinder,
@RequestParam(value = "certificateStatus", required = false) String certificateStatus,
@RequestParam(value = "equCategoryCode", required = false) String equCategoryCode,
@RequestParam(value = "useRegistrationCode", required = false) String useRegistrationCode) {
if (ValidationUtil.isEmpty(useUnitCreditCode))
throw new BadRequest("请先选择原使用单位");
if (ValidationUtil.isEmpty(useUnitCreditCode)) throw new BadRequest("请先选择原使用单位");
JgUseRegistrationManageDto dto = new JgUseRegistrationManageDto();
Page<JgUseRegistrationManageDto> page = new Page<JgUseRegistrationManageDto>();
Page<JgUseRegistrationManageDto> page = new Page<>();
page.setCurrent(current);
page.setSize(size);
if (!ValidationUtil.isEmpty(useUnitCreditCode)){
......@@ -149,6 +149,9 @@ public class JgChangeVehicleRegistrationUnitController extends BaseController {
if (!ValidationUtil.isEmpty(certificateStatus)){
dto.setCertificateStatus(certificateStatus);
}
if (!ValidationUtil.isEmpty(equCategoryCode)){
dto.setEquCategoryCode(equCategoryCode);
}
if (!ObjectUtils.isEmpty(useRegistrationCode)){
dto.setUseRegistrationCode(useRegistrationCode);
}
......
......@@ -76,6 +76,7 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static com.yeejoin.amos.boot.module.jg.api.enums.CertificateStatusEnum.YIDENGJI;
import static com.yeejoin.amos.boot.module.jg.biz.edit.core.SubClassFinder.getAllSubClasses;
import static com.yeejoin.amos.boot.module.jg.biz.edit.utils.ReflectiveFieldAccessor.getAllFields;
import static com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgProjectContraptionServiceImplService.PROJECT_CONTRAPTION;
......@@ -827,6 +828,7 @@ public class CommonEquipDataProcessService {
JgUseRegistrationManage jgUseRegistrationManage = jgUseRegistrationManageService.lambdaQuery()
.eq(JgUseRegistrationManage::getUseRegistrationCode, registerInfo.getUseOrgCode())
.eq(JgUseRegistrationManage::getIsDelete, 0)
.eq(JgUseRegistrationManage::getCertificateStatus,YIDENGJI.getName())
.select(JgUseRegistrationManage::getSequenceNbr, JgUseRegistrationManage::getReceiveCompanyCode).one();
result.put("receiveCompanyCode", jgUseRegistrationManage.getReceiveCompanyCode());
}
......
......@@ -39,6 +39,8 @@ import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
import static com.yeejoin.amos.boot.module.jg.api.enums.CertificateStatusEnum.YIDENGJI;
/**
* 单个维护设备-策略实现类
*/
......@@ -77,6 +79,8 @@ public class SingleEquipChangeProcess implements IEquipChangeDataProcessStrategy
if (!ValidationUtil.isEmpty(registerInfoOld.getUseOrgCode())) {
JgUseRegistrationManage jgUseRegistrationManage = commonEquipDataProcessService.getJgUseRegistrationManageService().lambdaQuery()
.eq(JgUseRegistrationManage::getUseRegistrationCode, registerInfoOld.getUseOrgCode())
.eq(JgUseRegistrationManage::getIsDelete,0)
.eq(JgUseRegistrationManage::getCertificateStatus,YIDENGJI.getName())
.select(JgUseRegistrationManage::getSequenceNbr, JgUseRegistrationManage::getReceiveCompanyCode).one();
useInfoOld.setReceiveCompanyCode(jgUseRegistrationManage.getReceiveCompanyCode());
}
......
......@@ -2545,7 +2545,7 @@ public class DataDockServiceImpl {
.auditPassDate(new Date())
.useRegistrationCode(paramsDto.getUseOrgCode())
.certificateNo(commonService.generateCertificateNo(equType, new Date(), paramsDto.getReceiveOrgCode()))
.regType(BusinessTypeEnum.JG_HISTORY_USAGE_REGISTRATION.getName())
.regType("1".equals(useReg.getRegType())? BusinessTypeEnum.JG_HISTORY_USAGE_REGISTRATION.getName():BusinessTypeEnum.JG_USAGE_REGISTRATION.getName())
.certificateStatus("已登记")
.regDate(new Date())
// .equUseAddress()
......@@ -2555,6 +2555,7 @@ public class DataDockServiceImpl {
.manageType("unit")
.isScrap("0")
.version(1)
.registrationType("1".equals(useReg.getRegType()) ? "1" : "0")
.superviseOrgCode(paramsDto.getOrgBranchCode())
.superviseOrgName(paramsDto.getOrgBranchName())
.build();
......@@ -3234,6 +3235,7 @@ public class DataDockServiceImpl {
// 查询企业地址
manage.setUseUnitAddress(this.queryUseUnitAddress(map));
manage.setUseRegistrationCode(jgUseRegistration.getUseRegistrationCode());
manage.setRegistrationType("1".equals(jgUseRegistration.getRegType()) ? "1" : "0");
manage.setUseUnitCreditCode(jgUseRegistration.getUseUnitCreditCode());
manage.setReceiveCompanyCode(jgUseRegistration.getReceiveCompanyCode());
manage.setManageType(jgUseRegistration.getManageType());
......
......@@ -1164,6 +1164,7 @@ public class EquipClaimServiceImpl {
.certificateNo(commonService.generateCertificateNo(equType, new Date(), useReg.getReceiveOrgCode()))
.regType(BusinessTypeEnum.JG_HISTORY_USAGE_REGISTRATION.getName())
.certificateStatus("已登记")
.registrationType("1")
.regDate(new Date())
.createDate(new Date())
.createUserId(userModel.getUserId())
......
......@@ -163,6 +163,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
public static final String PROJECT_CONTRAPTION = "PROJECT_CONTRAPTION";// 工程装置名称
public static final String CREATE_DATE_RANGE = "CREATE_DATE_RANGE";// 创建时间范围查询
public static final String CREATE_DATE = "CREATE_DATE";// 创建时间范围查询
public static final String USE_UNIT_CREDIT_CODE = "useUnitCreditCode";// 创建时间范围查询
/**
* 业务类型 0:单个新增 1:批量导入
*/
......@@ -1122,18 +1123,18 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
// 匹配使用登记证编号
List<Map<String, String>> useRegMapList = commonMapper.useRegCertAccountUniqueWithVehGasCyl(useRegistrationCode, record);
boolean hasUseReg = !useRegMapList.isEmpty();
boolean certificateOfTheEnterprise = hasUseReg ? JSON.toJSONString(useRegMapList).contains(companyCode) : Boolean.FALSE;
boolean certificateOfTheEnterprise = hasUseReg ? toJSONString(useRegMapList).contains(companyCode) : Boolean.FALSE;
// 匹配车辆VIN码
List<Map<String, String>> VINMapList = commonMapper.VINAccountUniqueWithVehGasCyl(VIN, record);
boolean hasVIN = !VINMapList.isEmpty();
boolean VINOfTheEnterprise = hasVIN ? JSON.toJSONString(VINMapList).contains(companyCode) : Boolean.FALSE;
boolean VINOfTheEnterprise = hasVIN ? toJSONString(VINMapList).contains(companyCode) : Boolean.FALSE;
// 无证无VIN 和 本企业的证本企业的VIN 两种情况可以放行
if ((!hasUseReg && !hasVIN) || (certificateOfTheEnterprise && VINOfTheEnterprise)) {
return;
}
if (log.isDebugEnabled()) {
log.info("历史车用气瓶==输入的==>使用登记证编号:{},车辆VIN码:{}", useRegistrationCode, VIN);
log.info("历史车用气瓶==匹配到的==>使用登记证编号:{},车辆VIN码:{}", JSON.toJSONString(useRegMapList), JSON.toJSONString(VINMapList));
log.info("历史车用气瓶==匹配到的==>使用登记证编号:{},车辆VIN码:{}", toJSONString(useRegMapList), toJSONString(VINMapList));
log.info("历史车用气瓶====>是否本企业使用登记证编号:{},是否本企业车辆VIN码:{}", certificateOfTheEnterprise, VINOfTheEnterprise);
}
// 本企业存在证 + 无VIN 无证 + 本企业存在VIN
......@@ -1247,17 +1248,33 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
/**
* 删除校验,被引用时不可删除
*
* @param records
* @param records 设备record集合
*/
private void checkForDelete(List<String> records) {
for (String record : records) {
Boolean isUsed = commonService.checkEquipIsUsed(record);
if (isUsed) {
String msg = getTipMsgString(record);
List<CountDto> useCounts = commonMapper.countEquipInUseTimesWithOutZFBatch(records);
Map<String, Long> recordUseNumMap = useCounts.stream().collect(Collectors.toMap(CountDto::getKeyStr, CountDto::getLongValue));
long sum = recordUseNumMap.values().stream().reduce(0L,Long::sum);
if(sum > 0){
String msg = getTipMsgString(recordUseNumMap, records);
throw new BadRequest(msg);
}
}
private String getTipMsgString(Map<String, Long> recordUseNumMap, List<String> records) {
List<String> inUsedNames = new ArrayList<>();
List<String> recordsInUsed = recordUseNumMap.entrySet().stream().filter(e->e.getValue() > 0).map(Map.Entry::getKey).collect(Collectors.toList());
Map<String, String> recordNameMap = idxBizJgRegisterInfoService.list(new LambdaQueryWrapper<IdxBizJgRegisterInfo>()
.in(IdxBizJgRegisterInfo::getRecord, recordsInUsed)
.select(IdxBizJgRegisterInfo::getRecord, IdxBizJgRegisterInfo::getProductName))
.stream().collect(Collectors.toMap(IdxBizJgRegisterInfo::getRecord, IdxBizJgRegisterInfo::getProductName));
for (String record : recordsInUsed) {
inUsedNames.add(recordNameMap.get(record));
}
if (records.size() > 1) {
return String.format("选择的设备:%s,已经在业务办理中,不能删除,请先取消勾选!", String.join("、", inUsedNames));
} else {
return "设备已经在业务办理中,不能删除!";
}
}
private Boolean checkEquipIsCanDelete(String record) {
......@@ -1265,11 +1282,6 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
return !commonService.checkEquipIsUsed(record);
}
private String getTipMsgString(String record) {
IdxBizJgRegisterInfo registerInfo = this.getOne(new QueryWrapper<IdxBizJgRegisterInfo>().eq("RECORD", record));
return String.format("存在业务办理中的设备,设备代码:%s", registerInfo.getEquCode());
}
/**
* 查询设备注册信息详情
*
......@@ -1514,7 +1526,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
String whetherVehicleCylinderStr = (String)objMap.get("WHETHER_VEHICLE_CYLINDER");
String equCategoryStr = (String)objMap.get("EQU_CATEGORY");
if(CylinderTypeEnum.CYLINDER.getCode().equals(equCategoryStr)){
if(CylinderTypeEnum.SPECIAL_CYLINDER.getCode().equals(equDefineStr)){
if(SPECIAL_CYLINDER.getCode().equals(equDefineStr)){
if("1".equals(whetherVehicleCylinderStr)){
equDefineStr="23T0_1";
}else if("0".equals(whetherVehicleCylinderStr)){
......@@ -1892,7 +1904,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
String whetherVehicleCylinderStr = (String)objMap.get("WHETHER_VEHICLE_CYLINDER");
if(CylinderTypeEnum.CYLINDER.getCode().equals(equCategoryStr)){
if(CylinderTypeEnum.SPECIAL_CYLINDER.getCode().equals(equDefineStr)){
if(SPECIAL_CYLINDER.getCode().equals(equDefineStr)){
if("1".equals(whetherVehicleCylinderStr)){
equDefineStr="23T0_1";
}else if("0".equals(whetherVehicleCylinderStr)){
......@@ -3065,7 +3077,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
List<IdxBizJgUseInfo> useInfoListByEquIds = idxBizJgUseInfoService.getUseInfoListByEquIds(equIds);
Map<String, String> equAddressMap = new HashMap<>();
if (!ValidationUtil.isEmpty(useInfoListByEquIds)) {
equAddressMap = useInfoListByEquIds.stream().collect(Collectors.toMap(IdxBizJgUseInfo::getRecord,
equAddressMap = useInfoListByEquIds.stream().collect(Collectors.toMap(
IdxBizJgUseInfo::getRecord,
useInfo -> {
String fulladdress = "";
if (!ValidationUtil.isEmpty(useInfo.getProvinceName())) {
......@@ -3084,8 +3097,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
fulladdress += useInfo.getAddress();
}
return fulladdress;
}
)
},
(v1, v2) -> v1)
);
}
......@@ -3105,7 +3118,8 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
String fullAddress = equAddressMap.get(item.getString(SEQUENCE_NBR));
item.put("ADDRESS", !ValidationUtil.isEmpty(fullAddress) ? fullAddress : "");
item.put("CAN_EDIT", this.checkEquipIsCanEdit(item.getString(SEQUENCE_NBR)));
item.put("CAN_DELETE", this.checkEquipIsCanDelete(item.getString(SEQUENCE_NBR)));
// TODO 未纳管设备删除使用此字段,调整为前端始终显示删除按钮
// item.put("CAN_DELETE", this.checkEquipIsCanDelete(item.getString(SEQUENCE_NBR)));
// 单位类型区分是监管还是企业
item.put("companyType", companyLevel);
// 区分新增设备、历史有证设备、历史无证设备,与使用登记一致:0-新设备、1-历史有证设备、2-历史无证设备
......@@ -3574,24 +3588,24 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
String companyTypeStr = companyInfoMap.get("companyType").toString();
// 使用信息
IdxBizJgUseInfo useInfo = JSON.parseObject(JSON.toJSONString(equipmentInfoForm), IdxBizJgUseInfo.class);
IdxBizJgUseInfo useInfo = JSON.parseObject(toJSONString(equipmentInfoForm), IdxBizJgUseInfo.class);
// 设计信息
IdxBizJgDesignInfo designInfo = JSON.parseObject(JSON.toJSONString(equipmentInfoForm), IdxBizJgDesignInfo.class);
IdxBizJgDesignInfo designInfo = JSON.parseObject(toJSONString(equipmentInfoForm), IdxBizJgDesignInfo.class);
// 制造信息
IdxBizJgFactoryInfo factoryInfo = JSON.parseObject(JSON.toJSONString(equipmentInfoForm), IdxBizJgFactoryInfo.class);
IdxBizJgFactoryInfo factoryInfo = JSON.parseObject(toJSONString(equipmentInfoForm), IdxBizJgFactoryInfo.class);
// 施工信息
IdxBizJgConstructionInfo constructionInfo = JSON.parseObject(JSON.toJSONString(equipmentInfoForm), IdxBizJgConstructionInfo.class);
IdxBizJgConstructionInfo constructionInfo = JSON.parseObject(toJSONString(equipmentInfoForm), IdxBizJgConstructionInfo.class);
// 注册登记信息
IdxBizJgRegisterInfo registerInfo = JSON.parseObject(JSON.toJSONString(equipmentInfoForm), IdxBizJgRegisterInfo.class);
IdxBizJgRegisterInfo registerInfo = JSON.parseObject(toJSONString(equipmentInfoForm), IdxBizJgRegisterInfo.class);
// 监督管理
IdxBizJgSupervisionInfo supervisionInfo = JSON.parseObject(JSON.toJSONString(equipmentInfoForm), IdxBizJgSupervisionInfo.class);
IdxBizJgSupervisionInfo supervisionInfo = JSON.parseObject(toJSONString(equipmentInfoForm), IdxBizJgSupervisionInfo.class);
// 其他信息
IdxBizJgOtherInfo otherInfo = JSON.parseObject(JSON.toJSONString(equipmentInfoForm), IdxBizJgOtherInfo.class);
IdxBizJgOtherInfo otherInfo = JSON.parseObject(toJSONString(equipmentInfoForm), IdxBizJgOtherInfo.class);
// 检验检测 【新增时】 固定式压力容器(2100)和 气瓶(2300)可以添加检验检测信息
if (ADD.equals(submitType) || isCopy) {
// 历史无证设备创建且是检验信息齐全时才创建检验信息
if (dataSource.contains("jg_his_black") && InspectIsInPeriodEnum.IN_PERIOD_YES.getValue().equals(registerInfo.getInInspectionPeriod())) {
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = JSON.parseObject(JSON.toJSONString(equipmentInfoForm), IdxBizJgInspectionDetectionInfo.class);
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = JSON.parseObject(toJSONString(equipmentInfoForm), IdxBizJgInspectionDetectionInfo.class);
inspectionDetectionInfo.setRecord(record);
inspectionDetectionInfo.setRecDate(date);
if (inspectionDetectionInfo.getNextInspectDate() != null) {
......@@ -3600,7 +3614,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
inspectionDetectionInfo.setSequenceNbr(null);
iIdxBizJgInspectionDetectionInfoService.saveOrUpdateData(inspectionDetectionInfo);
} else if (CylinderTypeEnum.CYLINDER.getCode().equals(equCategory) || "2100".equals(equCategory)) {
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = JSON.parseObject(JSON.toJSONString(equipmentInfoForm), IdxBizJgInspectionDetectionInfo.class);
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = JSON.parseObject(toJSONString(equipmentInfoForm), IdxBizJgInspectionDetectionInfo.class);
List<Map<String, Object>> inspectionAndTestingInstitutions = commonService.getUnitListByType("inspection", "gasCylindersForCars", false);
Optional<Map<String, Object>> optional = inspectionAndTestingInstitutions.stream().filter(x -> x.get("useCode").equals(inspectionDetectionInfo.getInspectOrgCode())).findFirst();
Map<String, Object> mapOrDefault = optional.orElse(Collections.emptyMap());
......@@ -3616,7 +3630,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
} else {
if(dataSource.contains("jg_his_black") && InspectIsInPeriodEnum.IN_PERIOD_YES.getValue().equals(registerInfo.getInInspectionPeriod())){
// 历史无证设备编辑时,只有在选择检验信息齐全时,才更新或者插入检验信息数据[在原本检验信息齐全,而在编辑时选择不齐全时,不修改原有的检验信息]
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = JSON.parseObject(JSON.toJSONString(equipmentInfoForm), IdxBizJgInspectionDetectionInfo.class);
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = JSON.parseObject(toJSONString(equipmentInfoForm), IdxBizJgInspectionDetectionInfo.class);
inspectionDetectionInfo.setRecord(record);
inspectionDetectionInfo.setRecDate(date);
if (inspectionDetectionInfo.getNextInspectDate() != null) {
......@@ -3626,7 +3640,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
iIdxBizJgInspectionDetectionInfoService.saveOrUpdateData(inspectionDetectionInfo);
} else if (CylinderTypeEnum.CYLINDER.getCode().equals(equCategory) || "2100".equals(equCategory)) {
//更新时 固定式压力容器(2100)和 气瓶(2300)可以更新检验检测信息
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = JSON.parseObject(JSON.toJSONString(equipmentInfoForm), IdxBizJgInspectionDetectionInfo.class);
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = JSON.parseObject(toJSONString(equipmentInfoForm), IdxBizJgInspectionDetectionInfo.class);
List<Map<String, Object>> inspectionAndTestingInstitutions = commonService.getUnitListByType("inspection", "gasCylindersForCars", false);
Optional<Map<String, Object>> optional = inspectionAndTestingInstitutions.stream().filter(x -> x.get("useCode").equals(inspectionDetectionInfo.getInspectOrgCode())).findFirst();
Map<String, Object> mapOrDefault = optional.orElse(Collections.emptyMap());
......@@ -3797,7 +3811,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
if (params instanceof IdxBizJgTechParamsElevator) {
equipmentParamsForm.put("ELEVATOR_SEQ", ((IdxBizJgTechParamsElevator) params).getSequenceNbr());
}
IdxBizJgTechParamsElevator elevator = JSON.parseObject(JSON.toJSONString(equipmentParamsForm), IdxBizJgTechParamsElevator.class);
IdxBizJgTechParamsElevator elevator = JSON.parseObject(toJSONString(equipmentParamsForm), IdxBizJgTechParamsElevator.class);
if (!ValidationUtil.isEmpty(elevator)) {
elevator.setRecord(record);
elevator.setRecDate(date);
......@@ -3810,7 +3824,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
if (params instanceof IdxBizJgTechParamsVehicle) {
equipmentParamsForm.put("VEHICLE_SEQ", ((IdxBizJgTechParamsVehicle) params).getSequenceNbr());
}
IdxBizJgTechParamsVehicle vehicle = JSON.parseObject(JSON.toJSONString(equipmentParamsForm), IdxBizJgTechParamsVehicle.class);
IdxBizJgTechParamsVehicle vehicle = JSON.parseObject(toJSONString(equipmentParamsForm), IdxBizJgTechParamsVehicle.class);
if (!ValidationUtil.isEmpty(vehicle)) {
vehicle.setRecord(record);
vehicle.setRecDate(date);
......@@ -3830,7 +3844,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
if (params instanceof IdxBizJgTechParamsRopeway) {
equipmentParamsForm.put("ROPEWAY_SEQ", ((IdxBizJgTechParamsRopeway) params).getSequenceNbr());
}
IdxBizJgTechParamsRopeway ropeway = JSON.parseObject(JSON.toJSONString(equipmentParamsForm), IdxBizJgTechParamsRopeway.class);
IdxBizJgTechParamsRopeway ropeway = JSON.parseObject(toJSONString(equipmentParamsForm), IdxBizJgTechParamsRopeway.class);
if (!ValidationUtil.isEmpty(ropeway)) {
ropeway.setRecord(record);
ropeway.setRecDate(date);
......@@ -3849,7 +3863,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
if (params instanceof IdxBizJgTechParamsRides) {
equipmentParamsForm.put("RIDES_SEQ", ((IdxBizJgTechParamsRides) params).getSequenceNbr());
}
IdxBizJgTechParamsRides rides = JSON.parseObject(JSON.toJSONString(equipmentParamsForm), IdxBizJgTechParamsRides.class);
IdxBizJgTechParamsRides rides = JSON.parseObject(toJSONString(equipmentParamsForm), IdxBizJgTechParamsRides.class);
if (!ValidationUtil.isEmpty(rides)) {
rides.setRecord(record);
rides.setRecDate(date);
......@@ -3862,7 +3876,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
if (params instanceof IdxBizJgTechParamsBoiler) {
equipmentParamsForm.put("BOILER_SEQ", ((IdxBizJgTechParamsBoiler) params).getSequenceNbr());
}
IdxBizJgTechParamsBoiler boiler = JSON.parseObject(JSON.toJSONString(equipmentParamsForm), IdxBizJgTechParamsBoiler.class);
IdxBizJgTechParamsBoiler boiler = JSON.parseObject(toJSONString(equipmentParamsForm), IdxBizJgTechParamsBoiler.class);
if (!ValidationUtil.isEmpty(boiler)) {
boiler.setRecord(record);
boiler.setRecDate(date);
......@@ -3880,7 +3894,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
if (params instanceof IdxBizJgTechParamsVessel) {
equipmentParamsForm.put("VESSEL_SEQ", ((IdxBizJgTechParamsVessel) params).getSequenceNbr());
}
IdxBizJgTechParamsVessel vessel = JSON.parseObject(JSON.toJSONString(equipmentParamsForm), IdxBizJgTechParamsVessel.class);
IdxBizJgTechParamsVessel vessel = JSON.parseObject(toJSONString(equipmentParamsForm), IdxBizJgTechParamsVessel.class);
if (!ValidationUtil.isEmpty(vessel)) {
vessel.setRecord(record);
vessel.setRecDate(date);
......@@ -3906,7 +3920,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
if (params instanceof IdxBizJgTechParamsPipeline) {
equipmentParamsForm.put("PIPELINE_SEQ", ((IdxBizJgTechParamsPipeline) params).getSequenceNbr());
}
IdxBizJgTechParamsPipeline pipeline = JSON.parseObject(JSON.toJSONString(equipmentParamsForm), IdxBizJgTechParamsPipeline.class);
IdxBizJgTechParamsPipeline pipeline = JSON.parseObject(toJSONString(equipmentParamsForm), IdxBizJgTechParamsPipeline.class);
if (!ValidationUtil.isEmpty(pipeline)) {
pipeline.setRecord(record);
pipeline.setRecDate(date);
......@@ -3925,7 +3939,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
if (params instanceof IdxBizJgTechParamsLifting) {
equipmentParamsForm.put("LIFTING_SEQ", ((IdxBizJgTechParamsLifting) params).getSequenceNbr());
}
IdxBizJgTechParamsLifting lifting = JSON.parseObject(JSON.toJSONString(equipmentParamsForm), IdxBizJgTechParamsLifting.class);
IdxBizJgTechParamsLifting lifting = JSON.parseObject(toJSONString(equipmentParamsForm), IdxBizJgTechParamsLifting.class);
if (!ValidationUtil.isEmpty(lifting)) {
lifting.setRecord(record);
lifting.setRecDate(date);
......@@ -4068,22 +4082,32 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
@Override
public Page<JSONObject> queryForUnitEquipmentPage(JSONObject jsonObject) {
ReginParams reginParams = JSON.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
String useUnitCreditCode = reginParams.getCompany().getCompanyCode();
// 使用单位为个人时候 特殊处理
if (useUnitCreditCode.split("_").length > 1) {
useUnitCreditCode = useUnitCreditCode.split("_")[1];
String useUnitCreditCode = Objects.toString(jsonObject.get(USE_UNIT_CREDIT_CODE), "");
String[] recordList = null;
if (ValidationUtil.isEmpty(useUnitCreditCode)) {
String redisVal = String.valueOf(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())));
if (StringUtils.isNotEmpty(redisVal)) {
ReginParams params = JSON.parseObject(redisVal, ReginParams.class);
useUnitCreditCode = Optional.ofNullable(params)
.map(ReginParams::getCompany)
.map(CompanyBo::getCompanyCode)
.orElse("");
useUnitCreditCode = useUnitCreditCode.contains("_") ? useUnitCreditCode.split("_")[1] : useUnitCreditCode;
}
jsonObject.put("useUnitCreditCode", useUnitCreditCode);
Page<JSONObject> page = new Page<>(jsonObject.getLong("number"), jsonObject.getLong("size"));
Set<String> records = EquipUsedCheckStrategyContext.getUsedStrategy("useRegistration").getEquipInFlow(useUnitCreditCode);
String[] recordList = ValidationUtil.isEmpty(records) ? null : records.toArray(new String[records.size()]);
recordList= ValidationUtil.isEmpty(records) ? null : records.toArray(new String[records.size()]);
} else {
useUnitCreditCode = useUnitCreditCode.contains("_") ? useUnitCreditCode.split("_")[0] : useUnitCreditCode;
}
jsonObject.put(USE_UNIT_CREDIT_CODE, useUnitCreditCode);
Page<JSONObject> page = new Page<>(jsonObject.getLong("number"), jsonObject.getLong("size"));
if ("2300".equals(jsonObject.get(EQU_CATEGORY_CODE))) {// 气瓶
List<DictionarieValueModel> fillingMedium = Systemctl.dictionarieClient.dictValues("FILLING_MEDIUM").getResult();
Map<String, Object> fillingMediumMap = fillingMedium.stream().collect(Collectors.toMap(DictionarieValueModel::getDictDataKey, DictionarieValueModel::getDictDataValue));
Page<JSONObject> result = jgUseRegistrationMapper.queryForUnitVesselEquipmentPage(page, jsonObject, recordList);
result.getRecords().forEach(i -> {
i.put("chargingMedium", Optional.ofNullable(fillingMediumMap.get(i.get("chargingMedium"))).orElse(""));
i.put("chargingMedium", MapUtil.getStr(fillingMediumMap, "chargingMedium", ""));
i.put("sequenceNbr", MapUtil.getStr(i, "record"));
i.put("productPhoto", JSONArray.parseArray(i.getString("productPhoto")));
i.put("cylinderStampAttachment", JSONArray.parseArray(i.getString("cylinderStampAttachment")));
i.put("informationSituation",InformationManageTypeEnum.getName(i.getString("informationSituation")));
......@@ -4346,7 +4370,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
}
for (Map<String, Object> item : dataList) {
if (key.equals(item.get("key"))) {
return JSON.toJSONString(item.get("value"));
return toJSONString(item.get("value"));
}
}
return null;
......@@ -4378,7 +4402,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
EquipmentInfoDto equipInfoDto = this.createEquipmentInfoDto(equipmentInfoForm, jgVehicleInformationMapper);
// 登记证记录表主键
Long changeRecordId = sequence.nextId();
List<EquipInfoCylinderExcelDto> equipInfoCylinderExcelDtoList = JSON.parseArray(JSON.toJSONString(attachmentUpload.get(EQU_LISTS)), EquipInfoCylinderExcelDto.class);
List<EquipInfoCylinderExcelDto> equipInfoCylinderExcelDtoList = JSON.parseArray(toJSONString(attachmentUpload.get(EQU_LISTS)), EquipInfoCylinderExcelDto.class);
// 属地监管部门
String orgBranchCode = equipInfoDto.getOrgBranchCode();
String orgBranchName = equipInfoDto.getOrgBranchName();
......@@ -4907,7 +4931,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
lambda.eq(JgRegistrationHistory::getIsDelete, false);
lambda.eq(JgRegistrationHistory::getRegistrationClass, "使用登记");
Integer integer = jgRegistrationHistoryService.getBaseMapper().selectCount(lambda);
jgRegistrationHistory.setChangeData(JSON.toJSONString(map));
jgRegistrationHistory.setChangeData(toJSONString(map));
if (integer > 0) {
jgRegistrationHistoryService.update(jgRegistrationHistory, lambda);
} else {
......@@ -4979,6 +5003,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
company.getCompanyCode().split("_")[1] : company.getCompanyCode());
jgUseRegistrationManage.setReceiveCompanyCode(equipInfoDto.getReceiveOrgCode());
jgUseRegistrationManage.setCertificateNo(generateCertificateNo(equipInfoDto, new Date(), equipInfoDto.getReceiveOrgCode()));
jgUseRegistrationManage.setRegistrationType("1");
jgUseRegistrationManageService.save(jgUseRegistrationManage);
return jgUseRegistrationManage;
}
......@@ -5047,7 +5072,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
ReadRowHolder readRowHolder = context.readRowHolder();
int rowIndex = readRowHolder.getRowIndex() + 1;
try {
log.info("解析第{}行数据:{}", rowIndex, JSON.toJSONString(data));
log.info("解析第{}行数据:{}", rowIndex, toJSONString(data));
// 检查各字段是否为空,如果为空则追加错误信息
checkNotBlank(data.getProductName(), "设备名称不能为空;", result);
//checkNotBlank(data.getBrandName(), "品牌名称不能为空;", result);
......@@ -5123,7 +5148,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
}
} catch (Exception e) {
log.error(String.format("行索引数: [%s] -> 失败的 Excel 数据: [%s]", rowIndex, JSON.toJSONString(data)), e);
log.error(String.format("行索引数: [%s] -> 失败的 Excel 数据: [%s]", rowIndex, toJSONString(data)), e);
throw e;
}
return result;
......@@ -5664,7 +5689,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
contextWrapper.apply();
Map<String, Map<String, Object>> details = idxBizJgProjectContraptionService.details(seq);
Map<String, Object> objectMap = details.get(EQUIP_INFO_FORM_ID);
JSONArray pipeList = JSON.parseArray(JSON.toJSONString(objectMap.get(PIPELINE_LIST)));
JSONArray pipeList = JSON.parseArray(toJSONString(objectMap.get(PIPELINE_LIST)));
// 列表有条数据,详情没有管道信息的情况
if (pipeList.isEmpty()) {
JSONObject jsonObject = new JSONObject();
......@@ -5676,7 +5701,7 @@ public class IdxBizJgRegisterInfoServiceImpl extends BaseService<IdxBizJgRegiste
resultArray.add(jsonObject);
}
pipeList.forEach(pipeEqu -> {
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(pipeEqu));
JSONObject jsonObject = JSON.parseObject(toJSONString(pipeEqu));
for (Map.Entry<String, Object> entry : objectMap.entrySet()) {
if (!PIPELINE_LIST.equals(entry.getKey())) {
jsonObject.put(entry.getKey(), entry.getValue());
......
......@@ -1135,6 +1135,7 @@ public class JgChangeRegistrationTransferServiceImpl extends BaseService<JgChang
registrationManageNew.setSuperviseOrgCode(orgBranchArray[0]);
registrationManageNew.setSuperviseOrgName(StringUtil.isNotEmpty(orgBranchName) ? orgBranchName : orgBranchArray[1]);
}
registrationManageNew.setRegistrationType("0");
// 添加到新列表中
newRegistrationList.add(registrationManageNew);
......
......@@ -8,8 +8,10 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.olym.shaded.org.apache.commons.collections4.MapUtils;
import com.yeejoin.amos.boot.biz.common.annotation.ResultFieldMapping;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
......@@ -18,6 +20,7 @@ import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
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.SnowflakeIdUtil;
import com.yeejoin.amos.boot.module.common.api.enums.CylinderTypeEnum;
import com.yeejoin.amos.boot.module.common.biz.refresh.DataRefreshEvent;
import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.entity.*;
......@@ -41,6 +44,7 @@ import com.yeejoin.amos.boot.module.ymt.api.mapper.*;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import com.yeejoin.amos.feign.systemctl.model.TaskV2Model;
import com.yeejoin.amos.feign.workflow.Workflow;
import com.yeejoin.amos.feign.workflow.model.*;
......@@ -50,6 +54,7 @@ import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
......@@ -67,6 +72,7 @@ import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import java.util.stream.Stream;
......@@ -83,6 +89,8 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
private static final String SUBMIT_TYPE_FLOW = "1";
private static final String PROCESS_DEFINITION_KEY = "unitChange";
private static final String TABLE_PAGE_ID = "1734141426742095873";
private static final String RECORD = "record";
private static final String SEQUENCE_NBR = "sequenceNbr";
private static final String EQU_CODE_CC = "5000";
private final List<String> NOT_FLOWING_STATE = Arrays.asList("使用单位待提交", "一级受理已驳回", "使用单位已撤回", "已作废", "已完成");
......@@ -199,6 +207,9 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
@Autowired
private IdxBizJgSupervisionInfoMapper idxBizJgSupervisionInfoMapper;
@Autowired
private CommonMapper commonMapper;
/**
* 根据sequenceNbr查询:1、查询单位变更信息,2、查询使用登记证列表
*
......@@ -207,9 +218,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
* @return 单位变更
*/
@Override
@ResultFieldMapping({
@ResultFieldMapping.ResultFieldMap(sourceField = "changeRegisInfo.useUnitCreditCode", targetField = "changeRegisInfo.useUnitSeq", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitInfoByCreditCode")
})
@ResultFieldMapping({@ResultFieldMapping.ResultFieldMap(sourceField = "changeRegisInfo.useUnitCreditCode", targetField = "changeRegisInfo.useUnitSeq", serviceClass = CommonServiceImpl.class, queryMethod = "queryUnitInfoByCreditCode")})
public Map<String, Map<String, Object>> queryBySequenceNbr(Long sequenceNbr, ReginParams selectedOrgInfo) {
// 单位变更信息
JgChangeRegistrationUnit notice = JgChangeRegistrationUnitMapper.selectById(sequenceNbr);
......@@ -256,6 +265,12 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
}
changeInfo.put("projectContraptionList", jsonArray);
}
}
if (CylinderTypeEnum.CYLINDER.getCode().equals(notice.getEquCategoryCode())) {
changeInfo.put("deviceList", JSON.parse(historyServiceOne.getChangeData()));
if (!ValidationUtil.isEmpty(notice.getSafetyManager())) {
changeInfo.put("safetyManagerName", notice.getSafetyManager().split("_")[1]);
}
} else {
changeInfo.put("registrationList", JSON.parse(historyServiceOne.getChangeData()));
}
......@@ -335,6 +350,8 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
}
if (PipelineEnum.PRESSURE_PIPELINE.getCode().equals(noticeDto.getEquListCode())) {
dealProjectContraptionToUpdate(submitType, noticeDto, op, reginParams);
} else if (CylinderTypeEnum.CYLINDER.getCode().equals(noticeDto.getEquCategoryCode())) {
this.dealCylinderToUpdate(submitType, noticeDto, op, reginParams);
} else {
// 字段转换
this.convertField(noticeDto);
......@@ -344,9 +361,9 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
throw new BadRequest("使用登记证不能为空");
}
//根据使用登记证查询设备
List<Long> registrationIdList = registrationList.stream().filter(v -> v.containsKey("sequenceNbr") &&
ObjectUtils.isNotEmpty(v.get("sequenceNbr")) && canConvertToLong(v.get("sequenceNbr").toString()))
.map(v -> Long.parseLong(v.get("sequenceNbr").toString())).collect(Collectors.toList());
List<Long> registrationIdList = registrationList.stream().filter(v -> v.containsKey(SEQUENCE_NBR) &&
ObjectUtils.isNotEmpty(v.get(SEQUENCE_NBR)) && canConvertToLong(v.get(SEQUENCE_NBR).toString()))
.map(v -> Long.parseLong(v.get(SEQUENCE_NBR).toString())).collect(Collectors.toList());
// 获取单位变更设备列表
if (CollectionUtils.isEmpty(registrationIdList)) {
throw new BadRequest("使用登记证不能为空");
......@@ -512,6 +529,510 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
}
}
private void dealCylinderToUpdate(String submitType, JgChangeRegistrationUnitDto changeRegistrationUnitDto, String op, ReginParams reginParams) {
// 字段转换
this.convertField(changeRegistrationUnitDto);
// 获取单位变更设备列表
List<Map<String, Object>> deviceList = changeRegistrationUnitDto.getDeviceList();
if (CollectionUtils.isEmpty(deviceList)) {
throw new BadRequest("请选择设备后提交");
}
if (SUBMIT_TYPE_FLOW.equals(submitType)) { //放在最后面防止前面有异常
//如果是提交,用于校验设备是否已经在流程中,如果不在标记设备已经在流程中
CompanyBo company = reginParams.getCompany();
deviceList.forEach(jsonObject -> EquipUsedCheckStrategyContext.getUsedStrategy(PROCESS_DEFINITION_KEY)
.equipRepeatUsedCheck(String.valueOf(jsonObject.get(RECORD)),
CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType()) ? company.getCompanyCode().split("_")[1] : company.getCompanyCode()));
}
ArrayList<String> roleListAll = new ArrayList<>();
ArrayList<String> roleListNext = new ArrayList<>();
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
// 发起流程
if (!StringUtils.hasText(changeRegistrationUnitDto.getInstanceId())) {
List<ProcessTaskDTO> processTasks = new ArrayList<>();
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
List<ActWorkflowStartDTO> list = new ArrayList<>();
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey(PROCESS_DEFINITION_KEY);
dto.setBusinessKey(String.valueOf(new Date().getTime()));
dto.setCompleteFirstTask(true);
list.add(dto);
actWorkflowBatchDTO.setProcess(list);
dto.setNextExecuteUserCompanyCode(changeRegistrationUnitDto.getReceiveCompanyCode());
processTasks = cmWorkflowService.startBatch(actWorkflowBatchDTO);
String instanceId = processTasks.get(0).getProcessInstance().getId();
String nextTaskId = processTasks.get(0).getNextTask().get(0).getId();
String taskname = processTasks.get(0).getNextTask().get(0).getName();
this.buildRoleList(processTasks, roleListNext, roleListAll);
List<WorkflowResultDto> workflowResultDtos = commonServiceImpl.buildWorkFlowInfo(processTasks);
String nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds();
JgChangeRegistrationUnit notice = new JgChangeRegistrationUnit();
BeanUtils.copyProperties(changeRegistrationUnitDto, notice);
notice.setChangeCertificate(changeRegistrationUnitDto.getChangeCertificate());
notice.setRemark(changeRegistrationUnitDto.getRemark());
if (!ObjectUtils.isEmpty(notice.getInstanceStatus())) {
notice.setInstanceStatus(notice.getInstanceStatus() + "," + roleListAll);
} else {
notice.setInstanceStatus(String.join(",", roleListAll));
}
notice.setInstanceId(instanceId);
notice.setNextTaskId(nextTaskId);
notice.setPromoter(RequestContext.getExeUserId());
notice.setNextExecutorIds(String.join(",", roleListNext));
notice.setStatus(WorkFlowStatusEnum.UNITCHANGE_RECEIVE.getPass());
notice.setNextExecuteUserIds(nextUserIds);
setNewUnitInfo(reginParams, notice);
JgChangeRegistrationUnitMapper.updateById(notice);
commonServiceImpl.deleteTasksByRelationId(notice.getSequenceNbr() + "");
createTaskModel(notice, taskname, "1", nextUserIds);
commonServiceImpl.saveExecuteFlowData2Redis(notice.getInstanceId(), buildInstanceRuntimeData(notice));
} else {
ArrayList<String> roleList = new ArrayList<>();
String taskId = changeRegistrationUnitDto.getNextTaskId();
//组装信息
TaskResultDTO task = new TaskResultDTO();
task.setResultCode("approvalStatus");
task.setTaskId(taskId);
task.setComment("");
HashMap<String, Object> map = new HashMap<>();
map.put("approvalStatus", op);
if (!ObjectUtils.isEmpty(changeRegistrationUnitDto.getInstanceStatus()) &&
(changeRegistrationUnitDto.getStatus().equals(WorkFlowStatusEnum.UNIT_RENAME_SUBMIT.getReject()) ||
changeRegistrationUnitDto.getStatus().equals(WorkFlowStatusEnum.UNIT_RENAME_SUBMIT.getRollBack()))) {
map.put("approvalStatus", "提交");
}
task.setVariable(map);
//执行流程
task.setNextExecuteUserCompanyCode(changeRegistrationUnitDto.getReceiveCompanyCode());
ProcessTaskDTO processTaskDTO = cmWorkflowService.completeOrReject(taskId, task, op);
JgChangeRegistrationUnit bean = new JgChangeRegistrationUnit();
BeanUtils.copyProperties(changeRegistrationUnitDto, bean);
String taskCode = FlowStatusEnum.TO_BE_FINISHED.getName();
String taskName1 = "";
String nextTaskId = "";
this.buildRoleList(Collections.singletonList(processTaskDTO), roleList, roleListAll);
List<WorkflowResultDto> workflowResultDtos = commonServiceImpl.buildWorkFlowInfo(Collections.singletonList(processTaskDTO));
String nextUserIds = workflowResultDtos.get(0).getNextExecutorUserIds();
if (processTaskDTO != null && processTaskDTO.getNextTask() != null && !processTaskDTO.getNextTask().isEmpty()) {
taskCode = processTaskDTO.getNextTask().get(0).getKey();
taskName1 = processTaskDTO.getNextTask().get(0).getName();
nextTaskId = processTaskDTO.getNextTask().get(0).getId();
}
bean.setNextExecutorIds(String.join(",", roleList));
if (!ObjectUtils.isEmpty(bean.getInstanceStatus())) {
bean.setInstanceStatus(bean.getInstanceStatus() + "," + String.join(",", roleList));
} else {
bean.setInstanceStatus(String.join(",", roleList));
}
bean.setNextTaskId(nextTaskId);
bean.setPromoter(RequestContext.getExeUserId());
bean.setStatus(WorkFlowStatusEnum.getMessage(taskCode).getPass());
executeOneStep(bean, taskName1, nextUserIds, op);
bean.setNextExecuteUserIds(nextUserIds);
setNewUnitInfo(reginParams, bean);
JgChangeRegistrationUnitMapper.updateById(bean);
commonServiceImpl.saveExecuteFlowData2Redis(bean.getInstanceId(), buildInstanceRuntimeData(bean));
}
} else {
JgChangeRegistrationUnit bean = new JgChangeRegistrationUnit();
BeanUtils.copyProperties(changeRegistrationUnitDto, bean);
setNewUnitInfo(reginParams, bean);
JgChangeRegistrationUnitMapper.updateById(bean);
}
List<JgChangeRegistrationUnitEq> jgRelationEquipList = new ArrayList<>();
deviceList.forEach(device -> {
JgChangeRegistrationUnitEq unitEq = new JgChangeRegistrationUnitEq();
unitEq.setRegistrationCertificate(changeRegistrationUnitDto.getUseRegistrationCertificate());
unitEq.setEquId(Objects.toString(device.get(RECORD)));
unitEq.setUnitChangeRegistrationId(changeRegistrationUnitDto.getSequenceNbr().toString());
unitEq.setDeviceInfo(JSONObject.toJSONString(device));//设备信息json
jgRelationEquipList.add(unitEq);
});
JgRegistrationHistory jgRegistrationHistory = new JgRegistrationHistory();
//登记类别
jgRegistrationHistory.setRegistrationClass("单位变更登记");
jgRegistrationHistory.setCurrentDocumentId(changeRegistrationUnitDto.getApplyNo());
//使用登记证历史数据
jgRegistrationHistory.setChangeData(JSON.toJSONString(deviceList));
//先删除之前设备关系数据,在插入最新设备关系数据
registrationUnitEqService.getBaseMapper().delete(new LambdaQueryWrapper<JgChangeRegistrationUnitEq>()
.eq(JgChangeRegistrationUnitEq::getUnitChangeRegistrationId, changeRegistrationUnitDto.getSequenceNbr()));
registrationUnitEqService.saveBatch(jgRelationEquipList);
//先删除之前未提交的历史使用登记证信息,在插入最新的使用登记证信息
registrationHistoryService.getBaseMapper().delete(new LambdaQueryWrapper<JgRegistrationHistory>()
.eq(JgRegistrationHistory::getCurrentDocumentId, changeRegistrationUnitDto.getApplyNo()));
registrationHistoryService.save(jgRegistrationHistory);
}
/**
* 气瓶单位变更业务
* @param submitType 提交类型
* @param dto 提交参数
* @param op
* @param reginParams
*/
private void saveOrUpdateCylinder(String submitType, JgChangeRegistrationUnitDto dto, String op, ReginParams reginParams) {
// 1️⃣ 字段转换与前置校验
convertField(dto);
validateDeviceList(dto.getDeviceList());
// 2️⃣ 获取申请编号
List<String> applyNoList = resolveApplyNo(dto);
dto.setApplyNo(applyNoList.get(0));
// 3️⃣ 校验设备是否正在流程中
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
validateEquipUsed(dto.getDeviceList(), reginParams);
}
// 4️⃣ 流程逻辑统一处理
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
handleFlow(dto, op, reginParams);
} else {
handleSaveOnly(dto, reginParams);
}
// 5️⃣ 保存设备关系与历史
saveUnitEquipAndHistory(dto);
}
private void validateDeviceList(List<Map<String, Object>> deviceList) {
if (CollectionUtils.isEmpty(deviceList)) {
throw new BadRequest("请选择设备后提交");
}
}
private List<String> resolveApplyNo(JgChangeRegistrationUnitDto dto) {
if (ValidationUtil.isEmpty(dto.getApplyNo())) {
return Optional.ofNullable(
tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.DWBG.getCode(), 1)
).filter(r -> r.getStatus() == HttpStatus.OK.value() && CollUtil.isNotEmpty(r.getResult()))
.map(ResponseModel::getResult)
.orElseThrow(() -> new BadRequest("生成申请变更单位编码失败!"));
}
return Collections.singletonList(dto.getApplyNo());
}
private void validateEquipUsed(List<Map<String, Object>> deviceList, ReginParams reginParams) {
CompanyBo company = reginParams.getCompany();
String companyCode = CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType())
? company.getCompanyCode().split("_")[1]
: company.getCompanyCode();
deviceList.forEach(json -> EquipUsedCheckStrategyContext
.getUsedStrategy(PROCESS_DEFINITION_KEY)
.equipRepeatUsedCheck(String.valueOf(json.get(RECORD)), companyCode));
}
private void handleFlow(JgChangeRegistrationUnitDto dto, String op, ReginParams reginParams) {
if (!StringUtils.hasText(dto.getInstanceId())) {
startNewFlow(dto, reginParams);
} else {
updateExistingFlow(dto, op, reginParams);
}
}
private void startNewFlow(JgChangeRegistrationUnitDto dto, ReginParams reginParams) {
ActWorkflowStartDTO startDTO = new ActWorkflowStartDTO();
startDTO.setProcessDefinitionKey(PROCESS_DEFINITION_KEY);
startDTO.setBusinessKey(String.valueOf(System.currentTimeMillis()));
startDTO.setCompleteFirstTask(true);
startDTO.setNextExecuteUserCompanyCode(dto.getReceiveCompanyCode());
ActWorkflowBatchDTO batch = new ActWorkflowBatchDTO();
batch.setProcess(Collections.singletonList(startDTO));
List<ProcessTaskDTO> processTasks = cmWorkflowService.startBatch(batch);
ProcessTaskDTO first = processTasks.get(0);
String instanceId = first.getProcessInstance().getId();
String nextTaskId = first.getNextTask().get(0).getId();
String taskName = first.getNextTask().get(0).getName();
ArrayList<String> roleListAll = new ArrayList<>();
ArrayList<String> roleListNext = new ArrayList<>();
buildRoleList(processTasks, roleListNext, roleListAll);
List<WorkflowResultDto> workflowInfos = commonServiceImpl.buildWorkFlowInfo(processTasks);
String nextUserIds = workflowInfos.get(0).getNextExecutorUserIds();
JgChangeRegistrationUnit entity = new JgChangeRegistrationUnit();
BeanUtils.copyProperties(dto, entity);
entity.setInstanceId(instanceId);
entity.setNextTaskId(nextTaskId);
entity.setPromoter(RequestContext.getExeUserId());
entity.setNextExecutorIds(String.join(",", roleListNext));
entity.setNextExecuteUserIds(nextUserIds);
entity.setStatus(WorkFlowStatusEnum.UNITCHANGE_RECEIVE.getPass());
entity.setInstanceStatus(String.join(",", roleListAll));
setNewUnitInfo(reginParams, entity);
JgChangeRegistrationUnitMapper.updateById(entity);
commonServiceImpl.deleteTasksByRelationId(entity.getSequenceNbr() + "");
createTaskModel(entity, taskName, "1", nextUserIds);
commonServiceImpl.saveExecuteFlowData2Redis(entity.getInstanceId(), buildInstanceRuntimeData(entity));
}
private void handleProcessUpdate(JgChangeRegistrationUnitDto dto, ProcessTaskDTO processTask, String op, ReginParams reginParams) {
ArrayList<String> roleList = new ArrayList<>();
ArrayList<String> roleListAll = new ArrayList<>();
buildRoleList(Collections.singletonList(processTask), roleList, roleListAll);
List<WorkflowResultDto> workflowInfos = commonServiceImpl.buildWorkFlowInfo(Collections.singletonList(processTask));
String nextUserIds = workflowInfos.get(0).getNextExecutorUserIds();
String taskCode = FlowStatusEnum.TO_BE_FINISHED.getName();
String taskName = "";
String nextTaskId = "";
if (processTask.getNextTask() != null && !processTask.getNextTask().isEmpty()) {
taskCode = processTask.getNextTask().get(0).getKey();
taskName = processTask.getNextTask().get(0).getName();
nextTaskId = processTask.getNextTask().get(0).getId();
}
JgChangeRegistrationUnit entity = new JgChangeRegistrationUnit();
BeanUtils.copyProperties(dto, entity);
entity.setNextTaskId(nextTaskId);
entity.setPromoter(RequestContext.getExeUserId());
entity.setNextExecutorIds(String.join(",", roleList));
entity.setNextExecuteUserIds(nextUserIds);
entity.setInstanceStatus(String.join(",", roleListAll));
entity.setStatus(WorkFlowStatusEnum.getMessage(taskCode).getPass());
executeOneStep(entity, taskName, nextUserIds, op);
setNewUnitInfo(reginParams, entity);
JgChangeRegistrationUnitMapper.updateById(entity);
commonServiceImpl.saveExecuteFlowData2Redis(entity.getInstanceId(), buildInstanceRuntimeData(entity));
}
private void updateExistingFlow(JgChangeRegistrationUnitDto dto, String op, ReginParams reginParams) {
String taskId = dto.getNextTaskId();
TaskResultDTO task = new TaskResultDTO();
task.setResultCode("approvalStatus");
task.setTaskId(taskId);
task.setComment("");
HashMap<String, Object> variable = new HashMap<>();
variable.put("approvalStatus", op);
if (!ObjectUtils.isEmpty(dto.getInstanceStatus())
&& (WorkFlowStatusEnum.UNIT_RENAME_SUBMIT.getReject().equals(dto.getStatus())
|| WorkFlowStatusEnum.UNIT_RENAME_SUBMIT.getRollBack().equals(dto.getStatus()))) {
variable.put("approvalStatus", "提交");
}
task.setVariable(variable);
task.setNextExecuteUserCompanyCode(dto.getReceiveCompanyCode());
ProcessTaskDTO processTask = cmWorkflowService.completeOrReject(taskId, task, op);
handleProcessUpdate(dto, processTask, op, reginParams);
}
private void handleSaveOnly(JgChangeRegistrationUnitDto dto, ReginParams reginParams) {
JgChangeRegistrationUnit entity = new JgChangeRegistrationUnit();
BeanUtils.copyProperties(dto, entity);
setNewUnitInfo(reginParams, entity);
JgChangeRegistrationUnitMapper.updateById(entity);
}
private void saveUnitEquipAndHistory(JgChangeRegistrationUnitDto dto) {
List<Map<String, Object>> deviceList = dto.getDeviceList();
List<JgChangeRegistrationUnitEq> unitEqs = deviceList.stream().map(device -> {
JgChangeRegistrationUnitEq eq = new JgChangeRegistrationUnitEq();
eq.setRegistrationCertificate(dto.getUseRegistrationCertificate());
eq.setEquId(String.valueOf(device.get(RECORD)));
eq.setUnitChangeRegistrationId(dto.getSequenceNbr().toString());
eq.setDeviceInfo(JSONObject.toJSONString(device));
return eq;
}).collect(Collectors.toList());
registrationUnitEqService.remove(new LambdaQueryWrapper<JgChangeRegistrationUnitEq>()
.eq(JgChangeRegistrationUnitEq::getUnitChangeRegistrationId, dto.getSequenceNbr()));
registrationUnitEqService.saveBatch(unitEqs);
JgRegistrationHistory history = new JgRegistrationHistory();
history.setRegistrationClass("单位变更登记");
history.setCurrentDocumentId(dto.getApplyNo());
history.setChangeData(JSON.toJSONString(deviceList));
registrationHistoryService.remove(new LambdaQueryWrapper<JgRegistrationHistory>()
.eq(JgRegistrationHistory::getCurrentDocumentId, dto.getApplyNo()));
registrationHistoryService.save(history);
}
/**
* 气瓶单位变更业务新增
* @param submitType
* @param changeRegistrationUnitDto
* @param reginParams
*/
private void dealCylinderToSave(String submitType, JgChangeRegistrationUnitDto changeRegistrationUnitDto, ReginParams reginParams) {
String[] taskName = new String[]{"流程结束"};
// 字段转换
this.convertField(changeRegistrationUnitDto);
// 获取单位变更设备列表
List<Map<String, Object>> deviceList = changeRegistrationUnitDto.getDeviceList();
if (CollectionUtils.isEmpty(deviceList)) {
throw new BadRequest("请选择设备后提交");
}
String applyNo = changeRegistrationUnitDto.getApplyNo();
List<String> applyNoList = ValidationUtil.isEmpty(applyNo)
? Optional.ofNullable(tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.DWBG.getCode(), 1))
.filter(r -> r.getStatus() == HttpStatus.OK.value() && !CollectionUtils.isEmpty(r.getResult()))
.map(ResponseModel::getResult)
.orElseThrow(() -> new BadRequest("生成申请变更单位编码失败!"))
: Collections.singletonList(applyNo);
if (SUBMIT_TYPE_FLOW.equals(submitType)) {//放在最后面防止前面有异常
//如果是提交,用于校验设备是否已经在流程中,如果不在标记设备已经在流程中
CompanyBo company = reginParams.getCompany();
deviceList.forEach(jsonObject -> EquipUsedCheckStrategyContext.getUsedStrategy(PROCESS_DEFINITION_KEY)
.equipRepeatUsedCheck(String.valueOf(jsonObject.get(RECORD)),
CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType()) ?
company.getCompanyCode().split("_")[1] :
company.getCompanyCode()));
}
ArrayList<String> roleListFirst = new ArrayList<>();
List<String> instanceIdList = new ArrayList<>();
List<String> nextExecutorUserIds = new ArrayList<>();
List<String> taskIds = new ArrayList<>();
List<WorkflowResultDto> workflowResultDtos = new ArrayList<>();
String nextExecutorRoleIds = "";
// 判断当前是否为提交
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
//发起流程
ActWorkflowBatchDTO actWorkflowBatchDTO = new ActWorkflowBatchDTO();
List<ActWorkflowStartDTO> list = new ArrayList<>();
ActWorkflowStartDTO dto = new ActWorkflowStartDTO();
dto.setProcessDefinitionKey(PROCESS_DEFINITION_KEY);
dto.setBusinessKey(String.valueOf(new Date().getTime()));
dto.setNextExecuteUserCompanyCode(changeRegistrationUnitDto.getReceiveCompanyCode());
dto.setCompleteFirstTask(true);
list.add(dto);
actWorkflowBatchDTO.setProcess(list);
List<ProcessTaskDTO> processTaskDTOS = cmWorkflowService.startBatch(actWorkflowBatchDTO);
workflowResultDtos = commonServiceImpl.buildWorkFlowInfo(processTaskDTOS);
nextExecutorRoleIds = workflowResultDtos.get(0).getNextExecutorRoleIds();
nextExecutorUserIds.add(workflowResultDtos.get(0).getNextExecutorUserIds());
for (WorkflowResultDto processTaskDTO : workflowResultDtos) {
instanceIdList.add(processTaskDTO.getInstanceId());
taskIds.add(processTaskDTO.getNextTaskId());
}
}
String finalNextExecutorRoleIds = nextExecutorRoleIds;
CompanyBo companyBo = commonServiceImpl.getOneCompany(changeRegistrationUnitDto.getReceiveCompanyCode());
changeRegistrationUnitDto.setApplyNo(applyNoList.get(0));
changeRegistrationUnitDto.setReceiveCompanyOrgCode(companyBo.getOrgCode());
changeRegistrationUnitDto.setReceiveOrgCode(companyBo.getCompanyCode());
changeRegistrationUnitDto.setCreateUserId(RequestContext.getExeUserId());
changeRegistrationUnitDto.setApplyDate(new Date());
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
changeRegistrationUnitDto.setNextExecutorIds(finalNextExecutorRoleIds);
changeRegistrationUnitDto.setInstanceStatus(String.join(",", roleListFirst));
changeRegistrationUnitDto.setPromoter(reginParams.getUserModel().getUserId());
changeRegistrationUnitDto.setStatus(taskName[0]);
}
if (!CollectionUtils.isEmpty(nextExecutorUserIds)) {
changeRegistrationUnitDto.setNextExecuteUserIds(nextExecutorUserIds.get(0));
}
if (!CollectionUtils.isEmpty(instanceIdList)) {
changeRegistrationUnitDto.setInstanceId(instanceIdList.get(0));
changeRegistrationUnitDto.setStatus(WorkFlowStatusEnum.UNITCHANGE_RECEIVE.getPass());
} else {
changeRegistrationUnitDto.setStatus(WorkFlowStatusEnum.UNITCHANGE_SUBMIT.getPass());
}
if (!CollectionUtils.isEmpty(taskIds)) {
changeRegistrationUnitDto.setNextTaskId(taskIds.get(0));
}
changeRegistrationUnitDto.setSequenceNbr(sequence.nextId());
changeRegistrationUnitDto.setCreateDate(new Date());
changeRegistrationUnitDto.setCreateUserName(reginParams.getUserModel().getRealName());
changeRegistrationUnitDto.setUseRegistCode(changeRegistrationUnitDto.getUseRegistCode());
Optional.of(deviceList)
.filter(list -> !list.isEmpty())
.map(list -> list.get(0).get("equListName"))
.map(Object::toString)
.ifPresent(changeRegistrationUnitDto::setEquList);
JgChangeRegistrationUnit registrationUnit = new JgChangeRegistrationUnit();
BeanUtils.copyProperties(changeRegistrationUnitDto, registrationUnit);
setNewUnitInfo(reginParams, registrationUnit);
JgChangeRegistrationUnitMapper.insert(registrationUnit);
List<TaskModelDto> modelDtos = new ArrayList<>();
if (SUBMIT_TYPE_FLOW.equals(submitType)) {
TaskModelDto taskModelDto = new TaskModelDto();
TaskMessageDto ta = new TaskMessageDto();
ta.setInstanceId(registrationUnit.getInstanceId());
ta.setStatus(registrationUnit.getStatus());
ta.setPromoter(registrationUnit.getPromoter());
ta.setNextExecuteUserIds(registrationUnit.getNextExecuteUserIds());
ta.setSequenceNbr(registrationUnit.getSequenceNbr());
ta.setNextTaskId(registrationUnit.getNextTaskId());
taskModelDto.setModel(ta);
taskModelDto.setFlowCreateDate(new Date());
taskModelDto.setTaskName(workflowResultDtos.get(0).getNextTaskName());
taskModelDto.setFlowCode(registrationUnit.getNextTaskId());
taskModelDto.setTaskContent(this.buildTaskContent(registrationUnit));
taskModelDto.setTaskCode(registrationUnit.getApplyNo());
taskModelDto.setTaskType(BusinessTypeEnum.JG_COMPANY_CHANGE_REGISTRATION.getCode());
taskModelDto.setTaskTypeLabel(BusinessTypeEnum.JG_COMPANY_CHANGE_REGISTRATION.getName());
taskModelDto.setRelationId(registrationUnit.getInstanceId());
taskModelDto.setExecuteUserIds(workflowResultDtos.get(0).getNextExecutorUserIds());
taskModelDto.setTaskStatusLabel("未处理");
taskModelDto.setFlowStatus(commonServiceImpl.getDictionaryCodeByName(WorkFlowStatusEnum.UNITCHANGE_RECEIVE.getPass()));
taskModelDto.setFlowStatusLabel(WorkFlowStatusEnum.UNITCHANGE_RECEIVE.getPass());
taskModelDto.setStartUserId(RequestContext.getExeUserId());
taskModelDto.setStartUser(workflowResultDtos.get(0).getStartUserName());
taskModelDto.setStartUserCompanyName(reginParams.getCompany().getCompanyName());
taskModelDto.setStartDate(new Date());
taskModelDto.setNextExecuteUser(workflowResultDtos.get(0).getNextExecutorRoleIds());
modelDtos.add(taskModelDto);
} else {
TaskModelDto taskModelDto = new TaskModelDto();
//行数据
taskModelDto.setModel(registrationUnit);
//摘要 按原有规则组装
taskModelDto.setTaskContent(this.buildTaskContent(registrationUnit));
//申请单号
taskModelDto.setTaskCode(registrationUnit.getApplyNo());
//业务类型枚举code值
taskModelDto.setTaskType(BusinessTypeEnum.JG_COMPANY_CHANGE_REGISTRATION.getCode());
////业务主键
taskModelDto.setRelationId(registrationUnit.getSequenceNbr() + "");
modelDtos.add(taskModelDto);
// }
}
commonServiceImpl.saveExecuteFlowData2Redis(registrationUnit.getInstanceId(), buildInstanceRuntimeData(registrationUnit));
commonServiceImpl.buildTaskModel(modelDtos);
List<JgChangeRegistrationUnitEq> jgRelationEquipList = new ArrayList<>();
deviceList.forEach(device -> {
JgChangeRegistrationUnitEq unitEq = new JgChangeRegistrationUnitEq();
unitEq.setRegistrationCertificate(changeRegistrationUnitDto.getUseRegistrationCertificate());
unitEq.setEquId(Objects.toString(device.get(RECORD)));
unitEq.setUnitChangeRegistrationId(registrationUnit.getSequenceNbr().toString());//单位变更业务主键
unitEq.setDeviceInfo(JSONObject.toJSONString(device));//设备信息json
jgRelationEquipList.add(unitEq);
});
JgRegistrationHistory jgRegistrationHistory = new JgRegistrationHistory();
//登记类别
jgRegistrationHistory.setRegistrationClass("单位变更登记");
jgRegistrationHistory.setCurrentDocumentId(registrationUnit.getApplyNo());
//使用登记证历史数据
jgRegistrationHistory.setChangeData(JSONObject.toJSONString(deviceList));
//先删除之前设备关系数据,在插入最新设备关系数据
registrationUnitEqService.getBaseMapper().delete(new LambdaQueryWrapper<JgChangeRegistrationUnitEq>()
.eq(JgChangeRegistrationUnitEq::getUnitChangeRegistrationId, registrationUnit.getSequenceNbr()));
registrationUnitEqService.saveBatch(jgRelationEquipList);
//先删除之前未提交的历史使用登记证信息,在插入最新的使用登记证信息
registrationHistoryService.getBaseMapper().delete(new LambdaQueryWrapper<JgRegistrationHistory>()
.eq(JgRegistrationHistory::getCurrentDocumentId, registrationUnit.getApplyNo()));
registrationHistoryService.save(jgRegistrationHistory);
}
/**
* 更新装置的单位变更
*
......@@ -534,7 +1055,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
for (Map<String, Object> objectMap : projectContraptionList) {
if (objectMap.containsKey("useRegistrationCode") && ObjectUtils.isNotEmpty(objectMap.get("useRegistrationCode"))) {
registrationNoList.add(objectMap.get("useRegistrationCode").toString());
useRegistrationCodeMap.put(objectMap.get("sequenceNbr").toString(), objectMap.get("useRegistrationCode").toString());
useRegistrationCodeMap.put(objectMap.get(SEQUENCE_NBR).toString(), objectMap.get("useRegistrationCode").toString());
}
}
//查询装置下的管道信息
......@@ -547,11 +1068,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
CompanyBo company = reginParams.getCompany();
deviceList.forEach(jsonObject -> EquipUsedCheckStrategyContext.getUsedStrategy(PROCESS_DEFINITION_KEY)
.equipRepeatUsedCheck(String.valueOf(jsonObject.get("record")),
CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType()) ?
company.getCompanyCode().split("_")[
1
] :
company.getCompanyCode()));
CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType()) ? company.getCompanyCode().split("_")[1] : company.getCompanyCode()));
}
ArrayList<String> roleListAll = new ArrayList<>();
ArrayList<String> roleListNext = new ArrayList<>();
......@@ -822,6 +1339,9 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
String[] taskName = new String[]{"流程结束"};
// 字段转换
convertField(model);
if (CylinderTypeEnum.CYLINDER.getCode().equals(model.getEquCategoryCode())) {
this.dealCylinderToSave(submitType, model, reginParams);
} else{
// 获取单位变更使用登记证列表
List<Map<String, Object>> registrationList = model.getRegistrationList();
if (CollectionUtils.isEmpty(registrationList)) {
......@@ -831,9 +1351,9 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
List<Long> registrationIdList = new ArrayList<>();//使用登记证id
List<String> registrationNoList = new ArrayList<>();//使用登记证编号
for (Map<String, Object> objectMap : registrationList) {
if (objectMap.containsKey("sequenceNbr") && ObjectUtils.isNotEmpty(objectMap.get("sequenceNbr"))
&& canConvertToLong(objectMap.get("sequenceNbr").toString())) {
registrationIdList.add(Long.parseLong(objectMap.get("sequenceNbr").toString()));
if (objectMap.containsKey(SEQUENCE_NBR) && ObjectUtils.isNotEmpty(objectMap.get(SEQUENCE_NBR))
&& canConvertToLong(objectMap.get(SEQUENCE_NBR).toString())) {
registrationIdList.add(Long.parseLong(objectMap.get(SEQUENCE_NBR).toString()));
}
if (objectMap.containsKey("useRegistrationCode") && ObjectUtils.isNotEmpty(objectMap.get("useRegistrationCode"))) {
registrationNoList.add(objectMap.get("useRegistrationCode").toString());
......@@ -842,9 +1362,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
if (CollectionUtils.isEmpty(registrationIdList)) {
throw new BadRequest("使用登记证不能为空");
}
List<JSONObject> deviceList = registrationManageService.queryEquByCertificateSeqList(registrationIdList);
// 获取单位变更设备列表
if (CollectionUtils.isEmpty(deviceList)) {
throw new BadRequest("使用登记证下无设备");
......@@ -1010,6 +1528,8 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
.eq(JgRegistrationHistory::getCurrentDocumentId, registrationUnit.getApplyNo()));
registrationHistoryService.save(jgRegistrationHistory);
return Collections.singletonList(model);
}
return Collections.singletonList(model);
} catch (BadRequest | LocalBadRequest e) {
log.error(e.getMessage(), e);
this.rollBackForDelRedisData();
......@@ -1023,6 +1543,8 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
}
}
private void rollBackForDelRedisData() {
FlowingEquipRedisContext.getContext().forEach(e -> {
EquipUsedCheckStrategyContext.getUsedStrategy(PROCESS_DEFINITION_KEY).delDataForCheckWithKey(e.getData(), e.getRedisKey());
......@@ -1143,6 +1665,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
model.setReceiveOrgName(receiveOrgCodeList[1]);
}
}
this.setEquAddress(model);
}
......@@ -1243,14 +1766,13 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
/**
* @param dto
* @param op void
* @param reginParams
* @description 执行流程
* @author wangguo
* @date 2024/7/18 11:00
**/
@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 6000000)
@Transactional(rollbackFor = Exception.class)
public void accept(JgChangeRegistrationUnitDto dto, String op, ReginParams reginParams) {
public void accept(JgChangeRegistrationUnitDto dto, String op) {
String lockKey = CommonServiceImpl.buildJgExecuteLockKey(dto.getInstanceId());
RLock lock = redissonClient.getLock(lockKey);
try {
......@@ -1322,6 +1844,10 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
//如果是工业管道 如果工程装置对应一个证就直接变更给新单位;如果工程装置对应证下还有其他装置就变更后直接给新单位再重新生成一个登记证号;如果两个工程装置对应同一个使用登记证变更后生成两个新的登记证
if (PipelineEnum.PRESSURE_PIPELINE.getCode().equals(dto.getEquListCode())) {
this.dealProjectContraption(dto, nextTaskId, registration, op);
}
//气瓶单位变更,如果新单位没有证,则生成新的使用登记证,如果新单位有证且是系统生成的证,则选择增补到已有的证下面同时,更新设备其他信息
else if(CylinderTypeEnum.CYLINDER.getCode().equals(dto.getEquCategoryCode())) {
this.dealCylinderAuditPassData(dto, nextTaskId, registration, op);
} else {
// 生成新的使用登记编号,使用登记证 修改设备的使用登记信息表,使用单位名称,使用单位统一信用代码,使用登记证编号,更新ES
LambdaQueryWrapper<JgChangeRegistrationUnitEq> queryWrapper = new LambdaQueryWrapper<>();
......@@ -1421,7 +1947,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
// 更新历史表中一二级审批车牌号
history.setChangeData(JSONObject.toJSONString(dto.getRegistrationList()));
registrationHistoryService.updateById(history);
List<String> ids = historyJson.stream().map(v -> JSON.parseObject(v.toString()).getString("sequenceNbr")).collect(Collectors.toList());
List<String> ids = historyJson.stream().map(v -> JSON.parseObject(v.toString()).getString(SEQUENCE_NBR)).collect(Collectors.toList());
List<JgUseRegistrationManage> list = useRegistrationManageService.lambdaQuery().in(BaseEntity::getSequenceNbr, ids).list();
// 用来存放新生成的登记证
List<JgUseRegistrationManage> newList = new ArrayList<>();
......@@ -1448,6 +1974,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
// 新证属性重置
newManage.setCertificateStatus("已登记");
newManage.setVersion(1);
newManage.setRegistrationType("0");
newManage.setEquUseAddress(registration.getEquAddress());
// 如果 equListCode = 5000,则设置车牌号
if (EQU_CODE_CC.equals(registrationManage.getEquListCode())) {
......@@ -1548,6 +2075,241 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
}
}
/**
* 处理气瓶单位变更三级审核完成后数据
*/
private void dealCylinderAuditPassData(JgChangeRegistrationUnitDto dto, String nextTaskId, JgChangeRegistrationUnit registration, String op) {
List<Map<String, Object>> deviceList = dto.getDeviceList();
if (CollUtil.isEmpty(deviceList)) {
throw new BadRequest("设备列表不能为空!");
}
// 1. 更新代办
registration.setNextTaskId(nextTaskId);
TaskV2Model taskV2Model = updateTaskModel(registration, op);
// 2. 确定使用登记证代码(优先复用已有,否者生成)
AtomicReference<Boolean> existedRegistrationFlag = new AtomicReference<>(Boolean.FALSE);
String useRegistrationCode = findOrGenerateUseRegistrationCode(dto, registration, deviceList, existedRegistrationFlag);
// 3. ES批量更新参数 & 需要变更的设备列表
List<String> records = new ArrayList<>(deviceList.size());
Map<String, Map<String, Object>> esUpdateMap = new HashMap<>();
// 4. 更新产权单位信息
TzBaseEnterpriseInfo enterpriseInfo = Optional.ofNullable(dto.getEstateUnitSeq())
.filter(ObjectUtils::isNotEmpty)
.map(tzBaseEnterpriseInfoMapper::selectById)
.orElse(null);
// 提取设备信息(只取第一个)
if (CollUtil.isNotEmpty(deviceList)) {
Map<String, Object> first = deviceList.get(0);
registration.setEquCategory(MapUtils.getString(first, "equCategoryName"));
registration.setEquDefine(MapUtils.getString(first, "equDefineName"));
registration.setEquDefineCode(MapUtils.getString(first, "equDefine"));
}
// 5.更新useInfo、属地、注册信息,准备ES更新内容
for (Map<String, Object> device : deviceList) {
String record = MapUtils.getString(device, RECORD);
records.add(record);
IdxBizJgUseInfo useInfo = fetchUseInfoByRecord(record);
if (useInfo != null) {
updateUseInfoFields(useInfo, dto, registration, enterpriseInfo);
useInfoMapper.updateById(useInfo);
}
// 更新属地
if (!ObjectUtils.isEmpty(dto.getOrgBranchCode())) {
updateSupervisionInfo(record, registration);
}
// 更新注册表中 useOrgCode
updateRegisterInfo(record, useRegistrationCode);
// 准备 ES 更新参数
Map<String, Object> esParams = buildEsUpdateParams(useInfo, registration, useRegistrationCode);
esUpdateMap.put(record, esParams);
}
// 6. 批量调用ES更新
if (!esUpdateMap.isEmpty()) {
tzsServiceFeignClient.commonUpdateEsDataByIds(esUpdateMap);
}
// 7. 新增或更新使用登记证管理表
upsertUseRegistrationManage(registration, useRegistrationCode, existedRegistrationFlag.get());
// // 8. 发送变更消息、保存变更记录、创建设备履历等后置处理
// this.sendDataRefreshMsg(registration);
// this.saveRecord(registration);
this.createResume(records, registration, taskV2Model.getRoutePath());
//
// // 9. 更新主表并刷新 redis 实时流程数据
// JgChangeRegistrationUnitMapper.updateById(registration);
// commonServiceImpl.saveExecuteFlowData2Redis(dto.getInstanceId(), this.buildInstanceRuntimeData(registration));
//
// // 10. 删除重复使用标识
// this.delRepeatUseEquipData(registration.getApplyNo(), registration.getStatus(), registration.getNewUseUnitCreditCode());
}
private String findOrGenerateUseRegistrationCode(JgChangeRegistrationUnitDto dto, JgChangeRegistrationUnit registration,
List<Map<String, Object>> deviceList, AtomicReference<Boolean> existedFlag) {
// 查询新单位存在的已登记使用登记证(只取以 "瓶30" 开头的)系统生成的证号
JgUseRegistrationManageDto queryDto = new JgUseRegistrationManageDto();
queryDto.setCertificateStatus(CertificateStatusEnum.YIDENGJI.getName());
queryDto.setRegistrationType("0");
queryDto.setUseUnitCreditCode(registration.getNewUseUnitCreditCode());
List<JgUseRegistrationManageDto> found = jgUseRegistrationManageMapper.queryByUseUnitCreditCode(queryDto);
if (!CollectionUtils.isEmpty(found)) {
for (JgUseRegistrationManageDto m : found) {
String code = m.getUseRegistrationCode();
if (StringUtils.hasText(code) && code.startsWith("瓶30")) {
existedFlag.set(Boolean.TRUE);
return code;
}
}
}
// 若企业没有系统生成的使用登记证,则生成(使用第一个设备ID)
String firstRecord = Objects.toString(deviceList.get(0).get(RECORD), null);
return commonServiceImpl.generateRegistrationCode(firstRecord, dto.getReceiveCompanyCode(), true);
}
private IdxBizJgUseInfo fetchUseInfoByRecord(String record) {
LambdaQueryWrapper<IdxBizJgUseInfo> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(IdxBizJgUseInfo::getRecord, record);
return useInfoMapper.selectOne(wrapper);
}
private void updateUseInfoFields(IdxBizJgUseInfo useInfo, JgChangeRegistrationUnitDto dto, JgChangeRegistrationUnit registration,
TzBaseEnterpriseInfo enterpriseInfo) {
if (enterpriseInfo != null) {
useInfo.setEstateUnitCreditCode(enterpriseInfo.getUseUnitCode())
.setEstateUnitName(enterpriseInfo.getUseUnit());
}
String safetyManager = Optional.ofNullable(registration.getSafetyManager())
.map(s -> s.split("_"))
.filter(arr -> arr.length > 1)
.map(arr -> arr[1])
.orElse("");
useInfo.setPhone(registration.getPhone());
useInfo.setUseUnitCreditCode(registration.getNewUseUnitCreditCode());
useInfo.setUseUnitName(registration.getNewUseUnitName());
useInfo.setSafetyManager(safetyManager);
useInfo.setUsePlace(registration.getUsePlace());
// 地区/地址字段回填(保持原字段赋值顺序与语义)
useInfo.setProvinceName("陕西省")
.setProvince(dto.getProvince())
.setCity(dto.getCity())
.setCityName(getRegionNameByCode("city", dto.getCity()))
.setCounty(dto.getCounty())
.setCountyName(getRegionNameByCode("region", dto.getCounty()))
.setFactoryUseSiteStreet(dto.getStreet())
.setStreetName(getRegionNameByCode("street", dto.getStreet()))
.setAddress(dto.getFullAddress())
.setUseDate(dto.getUseDate());
}
private void updateSupervisionInfo(String record, JgChangeRegistrationUnit registration) {
// 查询上级公司信息(保留原逻辑)
HashMap<String, Object> parentMessage = (HashMap<String, Object>) Privilege.companyClient.queryByOrgcode(registration.getOrgBranchCode()).getResult();
CompanyModel parentModel = JSON.parseObject(JSON.toJSONString(parentMessage.get("compnay")), CompanyModel.class);
IdxBizJgSupervisionInfo supervision = new IdxBizJgSupervisionInfo();
supervision.setOrgBranchCode(registration.getOrgBranchCode());
supervision.setOrgBranchName(registration.getOrgBranchName());
supervision.setCompanyOrgBranchCode(parentModel.getCompanyCode());
LambdaQueryWrapper<IdxBizJgSupervisionInfo> eq = new QueryWrapper<IdxBizJgSupervisionInfo>().lambda()
.eq(IdxBizJgSupervisionInfo::getRecord, record);
idxBizJgSupervisionInfoMapper.update(supervision, eq);
}
private void updateRegisterInfo(String record, String useRegistrationCode) {
LambdaUpdateWrapper<IdxBizJgRegisterInfo> update = new UpdateWrapper<IdxBizJgRegisterInfo>().lambda()
.eq(IdxBizJgRegisterInfo::getRecord, record)
.set(true, IdxBizJgRegisterInfo::getUseOrgCode, useRegistrationCode);
idxBizJgRegisterInfoService.update(update);
}
private Map<String, Object> buildEsUpdateParams(IdxBizJgUseInfo useInfo, JgChangeRegistrationUnit registration, String useRegistrationCode) {
Map<String, Object> params = new HashMap<>();
params.put("USE_UNIT_CREDIT_CODE", registration.getNewUseUnitCreditCode());
params.put("USE_UNIT_NAME", registration.getNewUseUnitName());
params.put("REC_DATE", new Date());
if (useInfo != null) {
params.put("USE_PLACE", joinWithSeparator("/", useInfo.getProvinceName(), useInfo.getCityName(), useInfo.getCountyName(), useInfo.getStreetName()));
params.put("USE_PLACE_CODE", joinWithSeparator("#", useInfo.getProvince(), useInfo.getCity(), useInfo.getCounty(), useInfo.getFactoryUseSiteStreet()));
}
params.put("ORG_BRANCH_CODE", registration.getOrgBranchCode());
params.put("ORG_BRANCH_NAME", registration.getOrgBranchName());
params.put("USE_ORG_CODE", useRegistrationCode);
return params;
}
private void upsertUseRegistrationManage(JgChangeRegistrationUnit registration, String useRegistrationCode, boolean existed) {
Map<String, String> equType = new HashMap<>();
equType.put("equListCode", registration.getEquListCode());
equType.put("equCategoryCode", registration.getEquCategoryCode());
if (existed) {
// 查询并更新已有管理表记录
LambdaQueryWrapper<JgUseRegistrationManage> q = new LambdaQueryWrapper<>();
q.eq(JgUseRegistrationManage::getUseRegistrationCode, useRegistrationCode)
.isNotNull(JgUseRegistrationManage::getUseRegistrationCode)
.eq(JgUseRegistrationManage::getCertificateStatus, "已登记")
.eq(BaseEntity::getIsDelete, false);
JgUseRegistrationManage manage = useRegistrationManageService.getBaseMapper().selectOne(q);
if (manage != null) {
manage.setAuditPassDate(registration.getAuditPassDate());
manage.setVersion(manage.getVersion() + 1);
manage.setChangeReason(BusinessTypeEnum.JG_COMPANY_CHANGE_REGISTRATION.getName());
manage.setRecUserId(registration.getCreateUserId());
useRegistrationManageService.updateById(manage);
}
} else {
// 新增证管理信息
JgUseRegistrationManage newManage = new JgUseRegistrationManage();
newManage.setSequenceNbr(sequence.nextId());
newManage.setUseRegistrationCode(useRegistrationCode);
newManage.setUseUnitName(registration.getNewUseUnitName());
newManage.setUseUnitCreditCode(registration.getNewUseUnitCreditCode());
newManage.setReceiveOrgName(registration.getReceiveOrgName());
newManage.setReceiveCompanyCode(registration.getReceiveOrgCode());
newManage.setAuditPassDate(registration.getAuditPassDate());
newManage.setVersion(1);
newManage.setRegType("单位变更登记");
newManage.setRegistrationType("0");
newManage.setManageType("unit");
newManage.setApplyNo(registration.getApplyNo());
newManage.setEquUseAddress(registration.getEquAddress());
newManage.setRegDate(new Date());
newManage.setEquList(registration.getEquList());
newManage.setEquListCode(registration.getEquListCode());
newManage.setEquCategory(registration.getEquCategory());
newManage.setEquCategoryCode(registration.getEquCategoryCode());
newManage.setEquDefine(registration.getEquDefine());
newManage.setEquDefineCode(registration.getEquDefineCode());
newManage.setCertificateStatus(CertificateStatusEnum.YIDENGJI.getName());
newManage.setChangeReason(BusinessTypeEnum.JG_COMPANY_CHANGE_REGISTRATION.getName());
newManage.setRecUserName(registration.getCreateUserName());
newManage.setRecUserId(registration.getCreateUserId());
newManage.setRecDate(new Date());
newManage.setCreateUserId(registration.getCreateUserId());
newManage.setCreateDate(new Date());
if (!ObjectUtils.isEmpty(registration.getNewUseUnitCreditCode())) {
TzBaseEnterpriseInfo info = tzBaseEnterpriseInfoMapper.selectOne(new QueryWrapper<TzBaseEnterpriseInfo>().eq("use_unit_code", registration.getNewUseUnitCreditCode()));
if (info != null) {
newManage.setUseUnitAddress(info.getAddress());
}
}
newManage.setSuperviseOrgCode(registration.getOrgBranchCode());
newManage.setSuperviseOrgName(registration.getOrgBranchName());
newManage.setCertificateNo(commonServiceImpl.generateCertificateNo(equType, new Date(), registration.getReceiveCompanyCode()));
useRegistrationManageService.save(newManage);
}
}
private void updateUseInfoAddress(IdxBizJgUseInfo useInfo, JgChangeRegistrationUnit registration) {
useInfo.setProvince(registration.getProvince());
useInfo.setCity(registration.getCity());
......@@ -1605,7 +2367,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
List<String> projectContraptionIds = new ArrayList<>();
for (Map<String, Object> map : projectContraptionList) {
String useRegistrationCode = (String) map.get("useRegistrationCode");
String sequenceNbr = (String) map.get("sequenceNbr");
String sequenceNbr = (String) map.get(SEQUENCE_NBR);
projectContraptionIds.add(sequenceNbr);
String estateUnitSeq = String.valueOf(map.get("estateUnitName"));
TzBaseEnterpriseInfo enterpriseInfo = (estateUnitSeq != null && !estateUnitSeq.isEmpty())
......@@ -1706,6 +2468,8 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
}
}
registrationManage.setRecUserId(registration.getCreateUserId());
registrationManage.setRegistrationType("0");
registrationManage.setRegType(BusinessTypeEnum.JG_USAGE_REGISTRATION.getName());
useRegistrationManageService.save(registrationManage);
//更新装置表
idxBizJgProjectContraption.setUseRegistrationCode(code);
......@@ -1840,11 +2604,19 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
projectContraptionIdList.add(parseObject.get("sequenceNbr").toString());
}
}
if (CollectionUtils.isEmpty(registrationIdList)) {
return;
}
List<String> records = new ArrayList<>();
String equListCode = JSON.parseObject(registrationList.get(0).toString()).getString("equList");
JSONObject firstObj = registrationList.stream()
.findFirst()
.map(Object::toString)
.map(JSON::parseObject)
.orElse(new JSONObject());
String equListCode = Optional.ofNullable(firstObj.getString("equList"))
.filter(ObjectUtils::isNotEmpty)
.orElse(null);
String equCategoryCode = Optional.ofNullable(firstObj.getString("equCategory"))
.filter(ObjectUtils::isNotEmpty)
.orElse(null);
if (PipelineEnum.PRESSURE_PIPELINE.getCode().equals(equListCode)) {
JgChangeRegistrationUnit registrationUnit = this.lambdaQuery().eq(JgChangeRegistrationUnit::getApplyNo, applyNo)
.eq(JgChangeRegistrationUnit::getIsDelete, false)
......@@ -1859,6 +2631,14 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
changeRegistrationUnitEqs.forEach(item -> records.add(item.getEquId()));
}
}
} else if (CylinderTypeEnum.CYLINDER.getCode().equals(equCategoryCode)) {
records.addAll(registrationList.stream()
.map(Object::toString)
.map(JSON::parseObject)
.map(obj -> obj.getString("sequenceNbr"))
.filter(ObjectUtils::isNotEmpty)
.collect(Collectors.toList())
);
} else {
List<JSONObject> equList = registrationManageService.queryEquByCertificateSeqList(registrationIdList);
// 获取单位变更设备列表
......@@ -2183,7 +2963,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
.map(JgScrapCancelEq::getEquId)
.collect(Collectors.toList());
// 查询单子下的所有使用登记证的seq
List<Long> certificateSeq = JSONArray.parseArray(JSON.toJSONString(JSONObject.parseObject(history.getChangeData()).get("certificates"))).stream().map(item -> Long.valueOf((String) JSONObject.parseObject(JSONObject.toJSONString(item)).get("sequenceNbr"))).collect(Collectors.toList());
List<Long> certificateSeq = JSONArray.parseArray(JSON.toJSONString(JSONObject.parseObject(history.getChangeData()).get("certificates"))).stream().map(item -> Long.valueOf((String) JSONObject.parseObject(JSONObject.toJSONString(item)).get(SEQUENCE_NBR))).collect(Collectors.toList());
// 使用登记证下的所有设备
List<JSONObject> equJSONList = registrationManageService.queryEquByCertificateSeqList(certificateSeq);
// 过滤出未入库的设备
......@@ -2297,7 +3077,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
.collect(Collectors.toList());
// 查询单子下的所有使用登记证的seq
List<Long> certificateSeq = JSONArray.parseArray(history.getChangeData()).stream().map(item -> Long.valueOf((String) JSONObject.parseObject(JSONObject.toJSONString(item)).get("sequenceNbr"))).collect(Collectors.toList());
List<Long> certificateSeq = JSONArray.parseArray(history.getChangeData()).stream().map(item -> Long.valueOf((String) JSONObject.parseObject(JSONObject.toJSONString(item)).get(SEQUENCE_NBR))).collect(Collectors.toList());
// 使用登记证下的所有设备
List<JSONObject> equJSONList = registrationManageService.queryEquByCertificateSeqList(certificateSeq);
// 过滤出未入库的设备
......@@ -2386,7 +3166,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
for (Map<String, Object> objectMap : projectContraptionList) {
if (objectMap.containsKey("useRegistrationCode") && ObjectUtils.isNotEmpty(objectMap.get("useRegistrationCode"))) {
registrationNoList.add(objectMap.get("useRegistrationCode").toString());
useRegistrationCodeMap.put(objectMap.get("sequenceNbr").toString(), objectMap.get("useRegistrationCode").toString());
useRegistrationCodeMap.put(objectMap.get(SEQUENCE_NBR).toString(), objectMap.get("useRegistrationCode").toString());
}
}
//查询装置下的管道信息
......@@ -2560,7 +3340,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
*/
public List<Map<String, Object>> queryPipelineList(List<Map<String, Object>> projectContraptionList) {
List<Map<String, Object>> result = new ArrayList<>();
projectContraptionList.forEach(item -> result.addAll(projectContraptionService.getBaseMapper().selectEquipList((String) item.get("sequenceNbr"))));
projectContraptionList.forEach(item -> result.addAll(projectContraptionService.getBaseMapper().selectEquipList((String) item.get(SEQUENCE_NBR))));
return result;
}
......@@ -2603,7 +3383,7 @@ public class JgChangeRegistrationUnitServiceImpl extends BaseService<JgChangeReg
}
historyJson.forEach(item -> {
JSONObject jsonObject = JSON.parseObject(item.toString());
if (sequenceNbr.equals(jsonObject.getString("sequenceNbr"))) {
if (sequenceNbr.equals(jsonObject.getString(SEQUENCE_NBR))) {
projectContraptionDetail.putAll(jsonObject);
}
});
......
......@@ -568,6 +568,7 @@ public class JgChangeVehicleRegistrationUnitServiceImpl extends BaseService<JgCh
// 生成新的使用登记证编号
String code = this.generateVehicleUseRegistrationCode(receiveCompanyCode, manage.getEquDefineCode());
manage.setUseRegistrationCode(code);
manage.setRegistrationType("0");
// 更新设备使用登记证信息
LambdaQueryWrapper<IdxBizJgRegisterInfo> lambda = new QueryWrapper<IdxBizJgRegisterInfo>().lambda();
lambda.in(IdxBizJgRegisterInfo::getRecord, collect);
......
......@@ -840,6 +840,7 @@ public class JgEnableDisableServiceImpl extends BaseService<JgEnableDisableDto,
resultMap.put("sequenceNbr", enableDisable.getSequenceNbr());
resultMap.put("applyNo", enableDisable.getApplyNo());
resultMap.put("auditStatus", enableDisable.getAuditStatus());
resultMap.put("useUnitCreditCode", enableDisable.getUseUnitCreditCode());
commonService.convertStringToJsonobject(resultMap, new String[]{"otherAccessories"});
new FillingEditPermForCurrentUser(new JSONObject(resultMap), company, BusinessTypeEnum.JG_EQUIPMENT_START_STOP).getData();
return resultMap;
......
......@@ -900,6 +900,7 @@ public class JgMaintenanceContractServiceImpl extends BaseService<JgMaintenanceC
}
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 6000000)
public JgMaintenanceContract cancelApplication(Long sequenceNbr, String cancelReason) {
JgMaintenanceContract maintenanceContract = this.getById(sequenceNbr);
// 1.更新为已作废
......
......@@ -242,6 +242,7 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
jgUseRegistrationManage.setManageType(useRegistration.getManageType());
jgUseRegistrationManage.setUseUnitAddress(!ValidationUtil.isEmpty(enterpriseInfo) ? (String) enterpriseInfo.get("address") : "");
jgUseRegistrationManage.setUseRegistrationCode(useRegistration.getUseRegistrationCode());
jgUseRegistrationManage.setRegistrationType("1".equals(useRegistration.getRegType()) ? "1" : "0");
jgUseRegistrationManage.setUseUnitCreditCode(useRegistration.getUseUnitCreditCode());
jgUseRegistrationManage.setReceiveCompanyCode(useRegistration.getReceiveCompanyCode());
jgUseRegistrationManage.setCertificateNo(commonServiceImpl.generateCertificateNo(equType, useRegistration.getAuditPassDate(), useRegistration.getReceiveCompanyCode()));
......@@ -285,6 +286,7 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
jgUseRegistrationManage.setCarNumber(vehicleInformation.getCarNumber());
jgUseRegistrationManage.setUseUnitAddress(!ValidationUtil.isEmpty(enterpriseInfo) ? (String) enterpriseInfo.get("address") : "");
jgUseRegistrationManage.setUseRegistrationCode(vehicleInformation.getUseRegistrationCode());
jgUseRegistrationManage.setRegistrationType("1".equals(vehicleInformation.getRegType()) ? "1" : "0");
jgUseRegistrationManage.setUseUnitCreditCode(vehicleInformation.getUseUnitCreditCode());
jgUseRegistrationManage.setReceiveCompanyCode(vehicleInformation.getReceiveCompanyCode());
jgUseRegistrationManage.setGasNum(vehicleInformation.getGasNum());
......@@ -736,7 +738,7 @@ public class JgUseRegistrationManageServiceImpl extends BaseService<JgUseRegistr
}
List<JSONObject> deviceList = this.queryEquByCertificate(manage);
if (ValidationUtil.isEmpty(deviceList)) {
throw new BadRequest("设备信息为空,导出失败!");
throw new BadRequest("使用登记证下无设备,导出失败!");
}
Map<String, Object> params = buildExportParams(manage, deviceList);
JSONObject tagJson = Optional.ofNullable(manage.getCertificatePrintTag())
......
......@@ -1689,6 +1689,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
jgUseRegistrationManage.setUseUnitCreditCode(jgUseRegistration.getUseUnitCreditCode());
jgUseRegistrationManage.setReceiveCompanyCode(jgUseRegistration.getReceiveCompanyCode());
jgUseRegistrationManage.setManageType(jgUseRegistration.getManageType());
jgUseRegistrationManage.setRegistrationType("1".equals(jgUseRegistration.getRegType()) ? "1" : "0");
jgUseRegistrationManage.setCertificateNo(commonServiceImpl.generateCertificateNo(equType, new Date(), jgUseRegistration.getReceiveCompanyCode()));
this.setSuperviseOrgInfo(jgUseRegistrationManage, jgUseRegistration);
jgUseRegistrationManageService.save(jgUseRegistrationManage);
......
......@@ -1489,7 +1489,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
}
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 6000000)
public JgVehicleInformation cancelApplication(Long sequenceNbr, String cancelReason) {
JgVehicleInformation vehicleInformation = this.getById(sequenceNbr);
// 0.作废校验
......@@ -1786,6 +1786,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
jgUseRegistrationManage.setCertificateNo(commonService.generateCertificateNo(equType, new Date(), jgVehicleInformation.getReceiveCompanyCode()));
jgUseRegistrationManage.setSuperviseOrgName(jgVehicleInformation.getOrgBranchName());
jgUseRegistrationManage.setSuperviseOrgCode(jgVehicleInformation.getOrgBranchCode());
jgUseRegistrationManage.setRegistrationType("1".equals(jgVehicleInformation.getRegType())? "1": "0");
jgUseRegistrationManageService.save(jgUseRegistrationManage);
}
......
......@@ -402,6 +402,7 @@ public class ShCarServiceImpl extends BaseService<ShCar, ShCar, ShCarMapper> imp
.carNumber(jgVehicleInformation.getCarNumber())
.createDate(new Date())
.gasNum(equList.size())
.registrationType("1".equals(jgVehicleInformation.getRegType()) ? "1" : "0")
.useUnitAddress(jgVehicleInformation.getUseUnitAddress())
.manageType("unit")
.isScrap("0")
......
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