Commit c8027751 authored by 韩桐桐's avatar 韩桐桐

fix(jg):历史车用气瓶设备新增及登记处理使用登记证重复无法录入的问题

parent d6fbde09
...@@ -203,5 +203,25 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> { ...@@ -203,5 +203,25 @@ public interface CommonMapper extends BaseMapper<EquipmentCategory> {
*/ */
Integer countBizNumAfterUseReg(@Param("record") String record); Integer countBizNumAfterUseReg(@Param("record") String record);
/**
* 车用气瓶-使用登记证编号全库唯一校验
*
* @param useRegistrationCode 使用登记证编号
* @param record 设备record
* @return 匹配到的数据,包含设备的企业信息
*/
List<Map<String, String>> useRegCertAccountUniqueWithVehGasCyl(@Param("useRegistrationCode") String useRegistrationCode,
@Param("record") String record);
/**
* 车用气瓶-车辆VIN全库唯一校验
*
* @param VIN 车辆VIN码
* @param record 设备record
* @return 匹配到的数据,包含设备的企业信息
*/
List<Map<String, String>> VINAccountUniqueWithVehGasCyl(@Param("VIN") String VIN,
@Param("record") String record);
} }
...@@ -2516,4 +2516,38 @@ ...@@ -2516,4 +2516,38 @@
ne.record = #{record} ne.record = #{record}
) )
</select> </select>
<select id="useRegCertAccountUniqueWithVehGasCyl" resultType="java.util.Map">
SELECT jui."USE_UNIT_CREDIT_CODE" as useUnitCreditCode
FROM idx_biz_jg_register_info jri
LEFT JOIN idx_biz_jg_other_info joi ON joi."RECORD" = jri."RECORD"
LEFT JOIN idx_biz_jg_use_info jui ON jui."RECORD" = jri."RECORD"
<where>
<if test="useRegistrationCode != null and useRegistrationCode != ''">
jri."USE_ORG_CODE" = #{useRegistrationCode}
</if>
<if test="record != null and record != ''">
AND jri."RECORD" != #{record}
</if>
AND joi.CLAIM_STATUS = '已认领'
</where>
</select>
<select id="VINAccountUniqueWithVehGasCyl" resultType="java.util.Map">
SELECT jui."USE_UNIT_CREDIT_CODE" as useUnitCreditCode
FROM idx_biz_jg_register_info jri
LEFT JOIN idx_biz_jg_use_info jui ON jui."RECORD" = jri."RECORD"
LEFT JOIN idx_biz_jg_other_info joi ON joi."RECORD" = jri."RECORD"
LEFT JOIN idx_biz_jg_tech_params_vessel jtpv ON jtpv."RECORD" = jri."RECORD"
<where>
<if test="VIN != null and VIN != ''">
AND jtpv."VIN" = #{VIN}
</if>
<if test="record != null and record != ''">
AND jri."RECORD" != #{record}
</if>
AND joi.CLAIM_STATUS = '已认领'
</where>
</select>
</mapper> </mapper>
...@@ -677,6 +677,7 @@ ...@@ -677,6 +677,7 @@
ui."USE_INNER_CODE" useInnerCode, ui."USE_INNER_CODE" useInnerCode,
ri."EQU_CODE" equCode, ri."EQU_CODE" equCode,
ri."EQU_LIST" equList, ri."EQU_LIST" equList,
ri."USE_ORG_CODE" useOrgCode,
(select name from tz_equipment_category where code = ri."EQU_LIST") equListName, (select name from tz_equipment_category where code = ri."EQU_LIST") equListName,
ri."EQU_CATEGORY" equCategory, ri."EQU_CATEGORY" equCategory,
(select name from tz_equipment_category where code = ri."EQU_CATEGORY") equCategoryName, (select name from tz_equipment_category where code = ri."EQU_CATEGORY") equCategoryName,
...@@ -691,6 +692,7 @@ ...@@ -691,6 +692,7 @@
(select name from cb_data_dictionary where code = pv."CHARGING_MEDIUM" and type = 'FILLING_MEDIUM') chargingMedium, (select name from cb_data_dictionary where code = pv."CHARGING_MEDIUM" and type = 'FILLING_MEDIUM') chargingMedium,
pv."NOMINAL_WORKING_PRESSURE" nominalWorkingPressure, pv."NOMINAL_WORKING_PRESSURE" nominalWorkingPressure,
pv."SINGLE_BOTTLE_VOLUME" singleBottleVolume, pv."SINGLE_BOTTLE_VOLUME" singleBottleVolume,
pv."VIN" vin,
to_char((select INSPECT_DATE from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY REC_DATE DESC limit 1), 'YYYY-MM-DD') inspectDate, to_char((select INSPECT_DATE from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY REC_DATE DESC limit 1), 'YYYY-MM-DD') inspectDate,
to_char((select NEXT_INSPECT_DATE from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY REC_DATE DESC limit 1), 'YYYY-MM-DD') nextInspectDate to_char((select NEXT_INSPECT_DATE from idx_biz_jg_inspection_detection_info where "RECORD" = ui."RECORD" ORDER BY REC_DATE DESC limit 1), 'YYYY-MM-DD') nextInspectDate
FROM FROM
...@@ -749,6 +751,12 @@ ...@@ -749,6 +751,12 @@
<if test="jsonObject.record != null and jsonObject.record != ''"> <if test="jsonObject.record != null and jsonObject.record != ''">
and ui."RECORD" = #{jsonObject.record} and ui."RECORD" = #{jsonObject.record}
</if> </if>
<if test="jsonObject.useRegistrationCode != null and jsonObject.useRegistrationCode != ''">
and ri."USE_ORG_CODE" = #{jsonObject.useRegistrationCode}
</if>
<if test="jsonObject.identificationCode != null and jsonObject.identificationCode != ''">
and pv."VIN" = #{jsonObject.identificationCode}
</if>
<if test="jsonObject.record == null"> <if test="jsonObject.record == null">
and not exists(SELECT 1 FROM tzs_jg_vehicle_information v, tzs_jg_vehicle_information_eq ve WHERE and not exists(SELECT 1 FROM tzs_jg_vehicle_information v, tzs_jg_vehicle_information_eq ve WHERE
v.sequence_nbr = ve.vehicle_id AND ve.equ_id = ui."RECORD" and v.status !='使用单位待提交' and v.status v.sequence_nbr = ve.vehicle_id AND ve.equ_id = ui."RECORD" and v.status !='使用单位待提交' and v.status
......
...@@ -8,8 +8,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -8,8 +8,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo; import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary; import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
...@@ -17,6 +18,7 @@ import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity; ...@@ -17,6 +18,7 @@ import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity;
import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl; import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil;
import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory; import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory;
import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto; import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.jg.api.dto.*; import com.yeejoin.amos.boot.module.jg.api.dto.*;
...@@ -1767,25 +1769,44 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -1767,25 +1769,44 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class)
public List<JgVehicleInformation> saveOrUpdateHisData(JSONObject map) { public List<JgVehicleInformation> saveOrUpdateHisData(JSONObject map) {
// 使用登记证编号 // 使用登记证编号
String useRegistrationCode1 = String.valueOf(map.get("useRegistrationCode")).trim(); String useRegistrationCode = String.valueOf(map.get("useRegistrationCode")).trim();
// 车辆VIN码
String identificationCode = String.valueOf(map.get("identificationCode")).trim();
String equipId = String.valueOf(map.get("equipId")); String equipId = String.valueOf(map.get("equipId"));
//校验使用登记证编号的唯一性 // 表单设备列表
Boolean used = commonService.useRegistrationCertificateAccountUnique(useRegistrationCode1, equipId); List<Map<String, Object>> equipmentLists = new ObjectMapper()
if (used){ .convertValue(map.get("equipmentLists"), new TypeReference<List<Map<String, Object>>>() {
throw new BadRequest("使用登记证编号已存在!"); });
} // 设备列表判空 + 选择同一充装介质的设备
Optional.ofNullable(equipmentLists)
.filter(list -> !list.isEmpty())
.filter(list -> list.stream().map(v -> (String) v.get("chargingMedium")).distinct().count() == 1)
.orElseThrow(() -> new BadRequest(CollectionUtils.isEmpty(equipmentLists) ? "请选择设备信息!" : "请选择相同充装介质设备!"));
// 确保车用气瓶使用信息中填写的【使用登记证编号】【车辆VIN】与列表所选择设备的一致
Optional.of(equipmentLists)
.filter(eqLists -> {
boolean isSameChargingMedium = eqLists.stream().map(v -> (String) v.get("useOrgCode")).distinct().count() == 1;
boolean isSameVin = eqLists.stream().map(v -> (String) v.get("vin")).distinct().count() == 1;
String firstUseOrgCode = (String) eqLists.stream().findFirst().orElseThrow(() -> new BadRequest("设备列表为空,无法获取第一个设备信息")).get("useOrgCode");
String firstVin = (String) eqLists.stream().findFirst().orElseThrow(() -> new BadRequest("设备列表为空,无法获取第一个设备信息")).get("vin");
boolean isOrgCodeConsistent = useRegistrationCode.equals(firstUseOrgCode);
boolean isVinConsistent = identificationCode.equals(firstVin);
return isSameChargingMedium && isSameVin && isOrgCodeConsistent && isVinConsistent;
})
.orElseThrow(() -> new BadRequest("使用登记证号、车辆VIN码与所选设备不一致,请重新选择设备!"));
// 校验使用登记证编号的唯一性 ====> 20241202 任务ID 32776 将校验前置到了新增历史设备阶段
// Boolean used = commonService.useRegistrationCertificateAccountUnique(useRegistrationCode, equipId);
// if (used){
// throw new BadRequest("使用登记证编号已存在!");
// }
// 检测是否三环系统中的车用气瓶数据 不让三环系统数据通过设备新增方式进来 // 检测是否三环系统中的车用气瓶数据 不让三环系统数据通过设备新增方式进来
// this.checkIsSanSystemHanData(map); // this.checkIsSanSystemHanData(map);
//使用登记证编号判断是否使用未来系统生成编号 //使用登记证编号判断是否使用未来系统生成编号
idxBizJgRegisterInfoService.checkUseRegistrationCode(useRegistrationCode1,"vehicle"); idxBizJgRegisterInfoService.checkUseRegistrationCode(useRegistrationCode, "vehicle");
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())) + "", ReginParams.class); ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())) + "", ReginParams.class);
JgVehicleInformationDto vehicleInfoDto = JSON.parseObject(JSON.toJSONString(map), JgVehicleInformationDto.class); JgVehicleInformationDto vehicleInfoDto = JSON.parseObject(JSON.toJSONString(map), JgVehicleInformationDto.class);
List<Map<String, Object>> equipmentLists = (List<Map<String, Object>>) map.get("equipmentLists");
if (CollectionUtils.isEmpty(equipmentLists) ||
equipmentLists.stream().map(v -> (String) v.get("chargingMedium")).distinct().count() != 1) {
throw new BadRequest(CollectionUtils.isEmpty(equipmentLists) ? "请选择设备信息!" : "请选择相同充装介质设备!");
}
List<IdxBizJgInspectionDetectionInfo> inspectionDetectionInfoList = idxBizJgInspectionDetectionInfoService.checkInspectionInfo( List<IdxBizJgInspectionDetectionInfo> inspectionDetectionInfoList = idxBizJgInspectionDetectionInfoService.checkInspectionInfo(
equipmentLists.stream() equipmentLists.stream()
...@@ -1932,13 +1953,13 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform ...@@ -1932,13 +1953,13 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
lambda.eq(JgVehicleInformationEq::getVehicleId, vehicleInformation.getSequenceNbr()); lambda.eq(JgVehicleInformationEq::getVehicleId, vehicleInformation.getSequenceNbr());
jgVehicleInformationEqService.getBaseMapper().delete(lambda); jgVehicleInformationEqService.getBaseMapper().delete(lambda);
this.getBaseMapper().updateById(vehicleInformation); this.getBaseMapper().updateById(vehicleInformation);
JgUseRegistrationManage useRegistrationCode = jgUseRegistrationManageService.lambdaQuery() JgUseRegistrationManage useRegistrationManage = jgUseRegistrationManageService.lambdaQuery()
.eq(JgUseRegistrationManage::getUseRegistrationCode, vehicleInformation.getUseRegistrationCode()) .eq(JgUseRegistrationManage::getUseRegistrationCode, vehicleInformation.getUseRegistrationCode())
.eq(JgUseRegistrationManage::getIsDelete, 0) .eq(JgUseRegistrationManage::getIsDelete, 0)
.one(); .one();
if (useRegistrationCode != null) { if (useRegistrationManage != null) {
useRegistrationCode.setCarNumber(vehicleInformation.getCarNumber()); useRegistrationManage.setCarNumber(vehicleInformation.getCarNumber());
jgUseRegistrationManageService.updateById(useRegistrationCode); jgUseRegistrationManageService.updateById(useRegistrationManage);
} }
} }
......
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