Commit 4859c968 authored by 刘林's avatar 刘林

fix(jg):车用气瓶历史平台登记功能开发

parent ee526b4c
......@@ -219,4 +219,15 @@ public class JgVehicleInformationController extends BaseController {
jgVehicleInformationServiceImpl.handleErrorVehicleForm(applyNo);
return ResponseHelper.buildResponse("申请单【"+applyNo+"】处理成功");
}
/**
* 车用气瓶保存历史数据
* @return ResponseModel
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/saveOrUpdateHisData")
@ApiOperation(httpMethod = "POST", value = "车用气瓶保存历史数据", notes = "车用气瓶保存历史数据")
public ResponseModel<Object> saveOrUpdateHisData(@RequestBody JSONObject map) {
return ResponseHelper.buildResponse(jgVehicleInformationServiceImpl.saveOrUpdateHisData(map));
}
}
......@@ -1231,7 +1231,7 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
}
}
private String getEquCode(IdxBizJgRegisterInfo registerInfo, String receiveCompanyCode) {
public String getEquCode(IdxBizJgRegisterInfo registerInfo, String receiveCompanyCode) {
ProduceInfo produceInfo = produceInfoMapper.selectOne(new LambdaQueryWrapper<ProduceInfo>().eq(AbstractEquipBaseEntity::getRecord, registerInfo.getRecord()));
CodeGenerateDto codeGenerateDto = new CodeGenerateDto();
codeGenerateDto.setEquList(registerInfo.getEquList());
......
......@@ -37,6 +37,7 @@ import com.yeejoin.amos.boot.module.jg.flc.api.fegin.WorkFlowFeignService;
import com.yeejoin.amos.boot.module.ymt.api.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.ymt.api.entity.*;
import com.yeejoin.amos.boot.module.ymt.api.enums.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquCodeTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.*;
......@@ -1422,7 +1423,7 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
changeRecord.setUseUnitCreditCode(jgVehicleInformation.getUseUnitCreditCode());//使用单位统一信用代码
changeRecord.setUseUnitName(jgVehicleInformation.getUseUnitName());//使用单位名称
changeRecord.setEquCategory(registerInfo.getEquCategory());//设备类别编码
changeRecord.setRoutePath(taskV2Model.getRoutePath());
changeRecord.setRoutePath(Optional.ofNullable(taskV2Model).map(TaskV2Model::getRoutePath).orElse(""));
changeRecord.setCreateDate(new Date());
changeRecord.setSequenceNbr(changeRecordId);
certificateChangeRecordService.save(changeRecord);
......@@ -1550,4 +1551,303 @@ public class JgVehicleInformationServiceImpl extends BaseService<JgVehicleInform
}
}
}
/**
* 车用气瓶保存历史数据
*
* @param map map
* @return list
*/
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class)
public List<JgVehicleInformation> saveOrUpdateHisData(JSONObject map) {
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())) + "", ReginParams.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(
equipmentLists.stream()
.map(v -> (String) v.get("record"))
.collect(Collectors.toList())
);
if (inspectionDetectionInfoList.stream().anyMatch(info ->
ObjectUtils.isEmpty(info) || ObjectUtils.isEmpty(info.getInspectType()) ||
ObjectUtils.isEmpty(info.getInspectConclusion()) || ObjectUtils.isEmpty(info.getInspectOrgCode()))) {
throw new BadRequest("请补充设备检验检测信息后提交!");
}
vehicleInfoDto.setNextInspectionDate(inspectionDetectionInfoList.stream()
.map(IdxBizJgInspectionDetectionInfo::getNextInspectDate)
.filter(Objects::nonNull)
.min(Date::compareTo)
.orElse(null));
CompanyBo company = reginParams.getCompany();
vehicleInfoDto.setCreateDate(new Date());
vehicleInfoDto.setPromoter(reginParams.getUserModel().getUserId());
// 车牌号码 字段的唯一性校验
LambdaQueryWrapper<JgVehicleInformation> vehicleInfoWrapper = new LambdaQueryWrapper<JgVehicleInformation>()
.eq(JgVehicleInformation::getCarNumber, vehicleInfoDto.getCarNumber())
.eq(JgVehicleInformation::getIsDelete, false)
.ne(JgVehicleInformation::getStatus, "已作废")
.ne(JgVehicleInformation::getStatus, "使用单位待提交")
.ne(!ValidationUtil.isEmpty(vehicleInfoDto.getSequenceNbr()), JgVehicleInformation::getSequenceNbr, vehicleInfoDto.getSequenceNbr());
Integer count = this.baseMapper.selectCount(vehicleInfoWrapper);
if (count > 0) {
throw new LocalBadRequest("车牌号码已存在,请重新输入!");
}
// 【A109】 车用气瓶登记业务 车辆VIN码 校验唯一性
LambdaQueryWrapper<JgVehicleInformation> informationLambdaQueryWrapper = new LambdaQueryWrapper<JgVehicleInformation>()
.eq(JgVehicleInformation::getIdentificationCode, vehicleInfoDto.getIdentificationCode())
.eq(JgVehicleInformation::getIsDelete, false)
.ne(JgVehicleInformation::getStatus, "已作废")
.ne(JgVehicleInformation::getStatus, "使用单位待提交")
.ne(!ValidationUtil.isEmpty(vehicleInfoDto.getSequenceNbr()), JgVehicleInformation::getSequenceNbr, vehicleInfoDto.getSequenceNbr());
Integer identificationCodeCount = this.baseMapper.selectCount(informationLambdaQueryWrapper);
if (identificationCodeCount > 0) {
throw new BadRequest("车辆VIN码已存在,请重新输入!");
}
// 使用单位信息
if ("个人主体".equals(company.getCompanyType())) {
vehicleInfoDto.setUseUnitName(company.getCompanyName().split("_")[1]);
vehicleInfoDto.setUseUnitCreditCode(company.getCompanyCode().split("_")[1]);
} else {
vehicleInfoDto.setUseUnitName(company.getCompanyName());
vehicleInfoDto.setUseUnitCreditCode(company.getCompanyCode());
}
// 接收单位信息
if (!StringUtils.isEmpty(vehicleInfoDto.getReceiveOrgCode())) {
String[] splitReceiveOrgCode = vehicleInfoDto.getReceiveOrgCode().split("_");
CompanyModel result = Privilege.companyClient.queryByCompanyCode(splitReceiveOrgCode[0]).getResult();
vehicleInfoDto.setReceiveOrgCode(splitReceiveOrgCode[0]);
vehicleInfoDto.setReceiveOrgName(splitReceiveOrgCode[1]);
vehicleInfoDto.setReceiveCompanyCode(result.getCompanyCode());
}
//检验机构信息
if (!StringUtils.isEmpty(vehicleInfoDto.getInspectUnitCreditCode())) {
String[] splitInspectUnitCreditCode = vehicleInfoDto.getInspectUnitCreditCode().split("_");
vehicleInfoDto.setInspectUnitCreditCode(splitInspectUnitCreditCode[0]);
vehicleInfoDto.setInspectUnitName(splitInspectUnitCreditCode[1]);
}
//安装单位信息
if (!StringUtils.isEmpty(vehicleInfoDto.getInstallUnitCode())) {
String[] splitInstallUnitCode = vehicleInfoDto.getInstallUnitCode().split("_");
vehicleInfoDto.setInstallUnitCode(splitInstallUnitCode[0]);
vehicleInfoDto.setInstallUnitName(splitInstallUnitCode[1]);
}
//属地监管部门
if (!StringUtils.isEmpty(vehicleInfoDto.getOrgBranchCode())) {
String[] splitOrgBranchCode = vehicleInfoDto.getOrgBranchCode().split("_");
vehicleInfoDto.setOrgBranchCode(splitOrgBranchCode[0]);
vehicleInfoDto.setOrgBranchName(splitOrgBranchCode[1]);
}
// 安全管理员
Optional.ofNullable(map.getString("safetyManagerId"))
.filter(manager -> manager.contains("_"))
.map(manager -> manager.split("_"))
.ifPresent(data -> {
vehicleInfoDto.setSafetyManagerId(data[0]);
vehicleInfoDto.setSafetyManagerName(data[1]);
});
// 产权单位信息
if (!StringUtils.isEmpty(vehicleInfoDto.getEstateUnitName())) {
String[] data = String.valueOf(map.getString("estateUnitName")).split("_");
vehicleInfoDto.setEstateUnitCreditCode(data[0]);
vehicleInfoDto.setEstateUnitName(data[1]);
}
// 其他附件
if (!ObjectUtils.isEmpty(map.get("otherAccessories"))) {
vehicleInfoDto.setOtherAccessories(JSONObject.toJSONString(map.get("otherAccessories")));
}
JgVehicleInformation vehicleInformation = new JgVehicleInformation();
BeanUtils.copyProperties(vehicleInfoDto, vehicleInformation);
vehicleInformation.setCreateUserId(reginParams.getUserModel().getUserId());
vehicleInformation.setRegDate(new Date());
vehicleInformation.setCreateUserName(reginParams.getUserModel().getRealName());
vehicleInformation.setGasNum(equipmentLists.size());
vehicleInformation.setVolume(String.valueOf(equipmentLists.stream()
.mapToDouble(x -> Double.parseDouble(String.valueOf(x.get("singleBottleVolume"))))
.sum()));
vehicleInformation.setFillingMedium(equipmentLists.get(0).get("chargingMedium") + "");
vehicleInformation.setAuditPassDate(new Date());
// 登记证记录表主键
Long changeRecordId= sequence.nextId();
//新增
if (StringUtils.isEmpty(vehicleInfoDto.getSequenceNbr())) {
ResponseModel<List<String>> listResponseModel = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.SYDJ.getCode(), 1);
if (!ObjectUtils.isEmpty(listResponseModel) && listResponseModel.getStatus() != HttpStatus.OK.value()) {
log.error("车用气瓶使用登记申请单单号获取失败!");
throw new BadRequest("车用气瓶使用登记申请单单号获取失败!");
}
String applyNo = listResponseModel.getResult().get(0);
vehicleInformation.setApplyNo(applyNo);
vehicleInformation.setStatus(FlowStatusEnum.TO_BE_FINISHED.getName());
this.save(vehicleInformation);
} else {
// 删除以前设备关联关系
this.getBaseMapper().updateById(vehicleInformation);
LambdaQueryWrapper<JgVehicleInformationEq> lambda = new QueryWrapper<JgVehicleInformationEq>().lambda();
lambda.eq(JgVehicleInformationEq::getVehicleId, vehicleInformation.getSequenceNbr());
jgVehicleInformationEqService.getBaseMapper().delete(lambda);
// 取第一条设备的注册消息--用来获取这一批设备的设备种类/类别/品种
LambdaQueryWrapper<IdxBizJgRegisterInfo> lambdaReg = new QueryWrapper<IdxBizJgRegisterInfo>().lambda();
lambdaReg.eq(IdxBizJgRegisterInfo::getRecord, String.valueOf(equipmentLists.get(0).get("record")));
IdxBizJgRegisterInfo registerInfo = idxBizJgRegisterInfoMapper.selectOne(lambdaReg);
// 生成证书管理表记录
generateRegistrationManage(vehicleInformation,registerInfo);
// 生成一条tzs_jg_certificate_change_record记录
generateCertificateChangeRecord(vehicleInformation, registerInfo, changeRecordId, null);
this.getBaseMapper().updateById(vehicleInformation);
}
// 更新关联气瓶信息
if (!CollectionUtils.isEmpty(equipmentLists)) {
List<JgVehicleInformationEq> equipList = new ArrayList<>();
equipmentLists.forEach(x -> {
JgVehicleInformationEq equip = new JgVehicleInformationEq();
equip.setEquId(String.valueOf(x.get("record")));
equip.setVehicleId(vehicleInformation.getSequenceNbr() + "");
equipList.add(equip);
jgResumeInfoService.createWithModel(JgResumeInfoDto.builder()
.applyNo(vehicleInformation.getApplyNo())
.businessType(BusinessTypeEnum.JG_VEHICLE_GAS_APPLICATION.getName())
.businessId(vehicleInformation.getSequenceNbr() + "")
.equId(String.valueOf(x.get("record")))
.approvalUnit(vehicleInformation.getReceiveOrgName())
.approvalUnitCode(vehicleInformation.getReceiveOrgCode())
.status("正常")
.build());
// 查询注册信息
LambdaQueryWrapper<IdxBizJgRegisterInfo> queryRegisterWrapper = new QueryWrapper<IdxBizJgRegisterInfo>().lambda();
queryRegisterWrapper.eq(IdxBizJgRegisterInfo::getRecord, String.valueOf(x.get("record")));
IdxBizJgRegisterInfo registerInfo = idxBizJgRegisterInfoMapper.selectOne(queryRegisterWrapper);
registerInfo.setUseOrgCode(vehicleInformation.getUseRegistrationCode());
// 更新注册登记信息表
LambdaUpdateWrapper<IdxBizJgRegisterInfo> updateRegisterWrapper = new UpdateWrapper<IdxBizJgRegisterInfo>().lambda();
// 新增页面选择无设备代码后,在审批通过后自动生成设备代码
this.generateEquCode(updateRegisterWrapper, registerInfo, vehicleInformation.getReceiveCompanyCode());
updateRegisterWrapper.eq(IdxBizJgRegisterInfo::getRecord, registerInfo.getRecord());
updateRegisterWrapper.set(true, IdxBizJgRegisterInfo::getUseOrgCode, vehicleInformation.getUseRegistrationCode());
updateRegisterWrapper.set(IdxBizJgRegisterInfo::getRegisterState, this.getRegCode());
idxBizJgRegisterInfoService.update(updateRegisterWrapper);
// 查询其他信息
LambdaQueryWrapper<IdxBizJgOtherInfo> otherInfoWrapper = new QueryWrapper<IdxBizJgOtherInfo>().lambda();
otherInfoWrapper.eq(IdxBizJgOtherInfo::getRecord, String.valueOf(x.get("record")));
IdxBizJgOtherInfo otherInfo = otherInfoMapper.selectOne(otherInfoWrapper);
// 更新设备信息
this.updateEquipInfo(vehicleInformation, registerInfo, otherInfo, String.valueOf(x.get("record")));
// 更新es
this.updateEquipEsData(vehicleInformation, otherInfo, registerInfo, String.valueOf(x.get("record")));
// 查询设备制造信息
LambdaQueryWrapper<IdxBizJgFactoryInfo> factoryInfoWrapper = new LambdaQueryWrapper<>();
factoryInfoWrapper.eq(IdxBizJgFactoryInfo::getRecord, String.valueOf(x.get("record")));
IdxBizJgFactoryInfo idxBizJgFactoryInfo = idxBizJgFactoryInfoMapper.selectOne(factoryInfoWrapper);
// 生成tzs_jg_certificate_change_record_eq记录
JgCertificateChangeRecordEq changeRecordEq = new JgCertificateChangeRecordEq();
changeRecordEq.setChangeRecordId(String.valueOf(changeRecordId));//登记证记录主键
changeRecordEq.setEquId(registerInfo.getRecord());//设备主键
changeRecordEq.setProductCode(idxBizJgFactoryInfo.getFactoryNum());//产品编号
certificateChangeRecordEqService.save(changeRecordEq);
});
// 保存关联设备信息
jgVehicleInformationEqService.saveBatch(equipList);
}
return Collections.singletonList(vehicleInformation);
}
/**
* 系统类型的code 自动生成设备代码
* @param lambda lambda
* @param registerInfo 注册信息
* @param receiveCompanyCode 接收机构行政区划代码
*/
public void generateEquCode(LambdaUpdateWrapper<IdxBizJgRegisterInfo> lambda, IdxBizJgRegisterInfo registerInfo, String receiveCompanyCode) {
// 新增设备时选择无设备代码且在设备代码为空【未做安装告知(使用登记、安装告知会生成设备代码)】
if (EquCodeTypeEnum.SYSTEM_GENERATED.getCode().equals(registerInfo.getEquCodeType()) && StringUtils.isEmpty(registerInfo.getEquCode())) {
// 更新注册信息表的设备代码字段
String equCode = jgUseRegistrationService.getEquCode(registerInfo, receiveCompanyCode);
registerInfo.setEquCode(equCode);
lambda.set(true, IdxBizJgRegisterInfo::getEquCode, equCode);
}
}
private void updateEquipInfo(JgVehicleInformation jgVehicleInformation, IdxBizJgRegisterInfo registerInfo, IdxBizJgOtherInfo otherInfo, String equId) {
String useOrgCode = jgVehicleInformation.getUseRegistrationCode();
IdxBizJgUseInfo useInfo = new IdxBizJgUseInfo();
// 判断是否为西咸
String isXiXian = XI_XIAN.getCode().equals(jgVehicleInformation.getVehicleApanage()) ? "1" : "0";
jgVehicleInformation.setIsXixian(isXiXian);
useInfo.setIsNotXiXian(isXiXian);
useInfo.setProvince("610000");
useInfo.setIsIntoManagement(Boolean.TRUE);
useInfo.setAddress(jgVehicleInformation.getUseUnitAddress());
LambdaQueryWrapper<IdxBizJgUseInfo> lambda = new QueryWrapper<IdxBizJgUseInfo>().lambda();
lambda.eq(IdxBizJgUseInfo::getRecord, equId);
// 修改设备使用状态为在用
useInfo.setEquState(String.valueOf(EquimentEnum.ZAIYONG.getCode()));
// 更新使用信息
useInfoMapper.update(useInfo, lambda);
// 更新设备监管部门
IdxBizJgSupervisionInfo idxBizJgSupervisionInfo = new IdxBizJgSupervisionInfo();
HashMap<String, Object> parentMessage = (HashMap<String, Object>) Privilege.companyClient.queryByOrgcode(jgVehicleInformation.getOrgBranchCode()).getResult();
// 目前平台返回key为compnay(存在拼写错误)
CompanyModel parentModel = JSON.parseObject(JSON.toJSONString(parentMessage.get("compnay")), CompanyModel.class);
idxBizJgSupervisionInfo.setOrgBranchCode(jgVehicleInformation.getOrgBranchCode());
idxBizJgSupervisionInfo.setOrgBranchName(jgVehicleInformation.getOrgBranchName());
idxBizJgSupervisionInfo.setCompanyOrgBranchCode(parentModel.getCompanyCode());
LambdaQueryWrapper<IdxBizJgSupervisionInfo> eq = new QueryWrapper<IdxBizJgSupervisionInfo>().lambda().eq(IdxBizJgSupervisionInfo::getRecord, equId);
idxBizJgSupervisionInfoMapper.update(idxBizJgSupervisionInfo, eq);
// 更新设备使用登记证
idxBizJgRegisterInfoMapper.updateUseOrgCodeByEquip(equId, useOrgCode);
// 车用气瓶生成监管码
this.createCode(jgVehicleInformation, registerInfo, otherInfo);
}
private void updateEquipEsData(JgVehicleInformation jgVehicleInformation, IdxBizJgOtherInfo otherInfo, IdxBizJgRegisterInfo registerInfo,String equId) {
// 更新es
HashMap<String, Map<String, Object>> objMap = new HashMap<>();
HashMap<String, Object> param = new HashMap<>();
param.put("SUPERVISORY_CODE", otherInfo.getSupervisoryCode());
param.put("USE_UNIT_CREDIT_CODE", jgVehicleInformation.getUseUnitCreditCode());
param.put("USE_UNIT_NAME", jgVehicleInformation.getUseUnitName());
//param.put("ADDRESS", otherInfo.get);
param.put("USE_PLACE", jgVehicleInformation.getUseUnitAddress());
param.put("STATUS", "已认领");
param.put("EQU_STATE", 1);
param.put("IS_INTO_MANAGEMENT", true);
param.put("ORG_BRANCH_CODE", jgVehicleInformation.getOrgBranchCode());
param.put("ORG_BRANCH_NAME", jgVehicleInformation.getOrgBranchName());
param.put("EQU_CODE", registerInfo.getEquCode());
param.put("USE_ORG_CODE", jgVehicleInformation.getUseRegistrationCode());
objMap.put(equId, param);
tzsServiceFeignClient.commonUpdateEsDataByIds(objMap);
}
}
\ No newline at end of file
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