Commit 24b8a436 authored by suhuiguang's avatar suhuiguang

1.按照宝鸡特检院增加报检返回字段及结果接收调整

parent 06089ffb
......@@ -82,4 +82,9 @@ public class JyjcInspectionResultDataModel {
*/
private String traceId;
/**
* 设备唯一标识,record--首检时需要,此时设备无监管码及设备代码
*/
private String equipId;
}
......@@ -114,6 +114,8 @@ public class InspectionApplicationPushEventListener implements ApplicationListen
@Autowired
JgUseRegistrationManageMapper jgUseRegistrationManageMapper;
@Autowired
IdxBizJgDesignInfoMapper designInfoMapper;
/**
......@@ -215,9 +217,11 @@ public class InspectionApplicationPushEventListener implements ApplicationListen
// 注册信息
this.setRegisterInfo(equipData, e.getEquipUnicode());
// 制造信息
this.setProductData(equipData,e.getEquipUnicode());
this.setProductData(equipData, e.getEquipUnicode());
// 设计信息
this.setDesignInfo(equipData, e.getEquipUnicode());
// 维保单位信息
this.setMaintenanceInfo(equipData,e.getEquipUnicode());
this.setMaintenanceInfo(equipData, e.getEquipUnicode());
// 单个查询执行,原因数据量较大 in 慢
this.setOtherInfo(equipData, e.getEquipUnicode(), applicationModel.getInspectionType());
// 单个查询执行,原因数据量较大 in 慢
......@@ -226,11 +230,20 @@ public class InspectionApplicationPushEventListener implements ApplicationListen
}).collect(Collectors.toList());
}
private void setDesignInfo(InspectionEquipData equipData, String equipUnicode) {
IdxBizJgDesignInfo designInfo = designInfoMapper.selectOne(new LambdaQueryWrapper<IdxBizJgDesignInfo>()
.eq(IdxBizJgDesignInfo::getRecord, equipUnicode)
.select(IdxBizJgDesignInfo::getRecord, IdxBizJgDesignInfo::getDesignUseDate));
if (designInfo != null) {
equipData.setDesignUseDate(designInfo.getDesignUseDate());
}
}
private void setMaintenanceInfo(InspectionEquipData equipData, String equipUnicode) {
MaintenanceInfo maintenanceInfo = maintenanceInfoMapper.selectOne(new LambdaQueryWrapper<MaintenanceInfo>()
.eq(AbstractEquipBaseEntity::getRecord, equipUnicode)
.select(MaintenanceInfo::getRecord,MaintenanceInfo::getMeUnitCreditCode,MaintenanceInfo::getMeUnitName));
if(maintenanceInfo != null){
.select(MaintenanceInfo::getRecord, MaintenanceInfo::getMeUnitCreditCode, MaintenanceInfo::getMeUnitName));
if (maintenanceInfo != null) {
equipData.setMeUnitCreditCode(maintenanceInfo.getMeUnitCreditCode());
equipData.setMeUnitName(maintenanceInfo.getMeUnitName());
}
......@@ -239,7 +252,7 @@ public class InspectionApplicationPushEventListener implements ApplicationListen
private void setUseInfo(InspectionEquipData equipData, String equipUnicode) {
IdxBizJgUseInfo idxBizJgUseInfo = useInfoMapper.selectOne(
new LambdaQueryWrapper<IdxBizJgUseInfo>()
.eq(IdxBizJgUseInfo::getRecord, equipUnicode)
.eq(IdxBizJgUseInfo::getRecord, equipUnicode)
);
equipData.setUseInnerCode(idxBizJgUseInfo.getUseInnerCode());
equipData.setAddress(getAddressByRecord(idxBizJgUseInfo));
......@@ -253,7 +266,7 @@ public class InspectionApplicationPushEventListener implements ApplicationListen
private void setRegisterInfo(InspectionEquipData equipData, String equipUnicode) {
LambdaQueryWrapper<IdxBizJgRegisterInfo> wrapper = new LambdaQueryWrapper<>();
wrapper.select(IdxBizJgRegisterInfo::getEquType,IdxBizJgRegisterInfo::getRecord);
wrapper.select(IdxBizJgRegisterInfo::getEquType, IdxBizJgRegisterInfo::getRecord);
wrapper.eq(IdxBizJgRegisterInfo::getRecord, equipUnicode);
wrapper.select(IdxBizJgRegisterInfo::getRecord,
IdxBizJgRegisterInfo::getEquType,
......@@ -280,8 +293,8 @@ public class InspectionApplicationPushEventListener implements ApplicationListen
}
private void setProductData(InspectionEquipData equipData, String record) {
IdxBizJgFactoryInfo idxBizJgFactoryInfo = factoryInfoMapper.selectOne(new LambdaQueryWrapper<IdxBizJgFactoryInfo>().eq(IdxBizJgFactoryInfo::getRecord,record));
if(idxBizJgFactoryInfo != null) {
IdxBizJgFactoryInfo idxBizJgFactoryInfo = factoryInfoMapper.selectOne(new LambdaQueryWrapper<IdxBizJgFactoryInfo>().eq(IdxBizJgFactoryInfo::getRecord, record));
if (idxBizJgFactoryInfo != null) {
equipData.setFactoryNum(idxBizJgFactoryInfo.getFactoryNum());
equipData.setProduceUnitCreditCode(idxBizJgFactoryInfo.getProduceUnitCreditCode());
equipData.setProduceUnitName(idxBizJgFactoryInfo.getProduceUnitName());
......
......@@ -41,6 +41,7 @@ import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.*;
import com.yeejoin.amos.feign.systemctl.model.DictionarieModel;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
......@@ -53,6 +54,7 @@ import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.orm.entity.BaseEntity;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
......@@ -417,37 +419,73 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
@Transactional(rollbackFor = Exception.class)
public List<JyjcInspectionResultDataModel> receivePushResultData(List<JyjcInspectionResultDataModel> resultDataModels) {
log.info("收到检验检测厂商推送的结果数据:{}", JSONArray.toJSONString(resultDataModels));
// 1.组织数据
Map<String, JyjcInspectionResult> resultListMap = queryWaitUpdateResultList(resultDataModels);
// 1.数据合法性检查
this.checkMustFieldIsValid(resultDataModels);
// 2.组织数据
List<JyjcInspectionResult> resultList = queryResultList(resultDataModels);
// key为{record}, value为{JyjcInspectionResult},首次检验时,设备无监管码,用record作为设备标识,可适用与所有的检验结果的接收
Map<String, JyjcInspectionResult> recordResultMap = getRecordKeyResultMap(resultList);
// key为{supervisoryCode}, value为{JyjcInspectionResult} ,适用于非首次检验之外的检验结果接收
Map<String, JyjcInspectionResult> superviseCodeKeyResultMap = getSuperviseCodeKeyResultMap(resultList);
List<JyjcInspectionResult> updateResultList = new ArrayList<>();
List<JyjcInspectionResultAttachment> resultAttachments = new ArrayList<>();
List<JyjcInspectionResultParam> resultParams = new ArrayList<>();
resultDataModels.forEach(r -> {
// 填充主表数据
this.fillResultData(r, resultListMap.get(r.getApplicationNo() + ":" + r.getSupervisoryCode()));
// 填充附件数据
this.fillResultAttachmentData(r, resultListMap.get(r.getApplicationNo() + ":" + r.getSupervisoryCode()), resultAttachments);
// 填充技术参数数据
this.fillResultParamData(r, resultListMap.get(r.getApplicationNo() + ":" + r.getSupervisoryCode()), resultParams);
JyjcInspectionResult result = this.getJyjcInspectionResult(r,recordResultMap, superviseCodeKeyResultMap);
if(result != null) {
// 填充主表数据
this.fillResultData(r, result, updateResultList);
// 填充附件数据
this.fillResultAttachmentData(r, result, resultAttachments);
// 填充技术参数数据
this.fillResultParamData(r, result, resultParams);
}
});
// 2.批量保存主表数据
this.updateBatchById(resultListMap.values());
// 3.批量保存子表数据
deleteAndCreateSubTable(resultListMap, resultAttachments, resultParams);
// 4.异步更新最新一次检验信息
eventPublisher.publish(new UseInfoSaveToDbEvent(this, new ArrayList<>(resultListMap.values())));
// 5.异步更新设备的检验检测信息
eventPublisher.publish(new InspectionDetectionSaveToDbEvent(this, new ArrayList<>(resultListMap.values())));
// 3.数据入库
if(!updateResultList.isEmpty()){
// 3.1 批量保存主表数据
this.updateBatchById(updateResultList);
// 3.2 批量保存子表数据
deleteAndCreateSubTable(updateResultList, resultAttachments, resultParams);
// 3.3 异步更新最新一次检验信息
eventPublisher.publish(new UseInfoSaveToDbEvent(this, new ArrayList<>(updateResultList)));
// 4.4 异步更新设备的检验检测信息
eventPublisher.publish(new InspectionDetectionSaveToDbEvent(this, new ArrayList<>(updateResultList)));
}
return resultDataModels;
}
private void deleteAndCreateSubTable(Map<String, JyjcInspectionResult> resultListMap, List<JyjcInspectionResultAttachment> resultAttachments, List<JyjcInspectionResultParam> resultParams) {
List<JyjcInspectionResult> resultList = new ArrayList<>(resultListMap.values());
private void checkMustFieldIsValid(List<JyjcInspectionResultDataModel> resultDataModels) {
int i = 0;
for(JyjcInspectionResultDataModel resultDataModel : resultDataModels){
i++;
if(StringUtils.isEmpty(resultDataModel.getEquipId()) && StringUtils.isEmpty(resultDataModel.getSupervisoryCode())){
throw new BadRequest("第" + i + "条数据存在问题,supervisoryCode和equipId不能同时为空!");
}
}
}
private JyjcInspectionResult getJyjcInspectionResult(JyjcInspectionResultDataModel resultDataModel,
Map<String, JyjcInspectionResult> recordResultMap ,
Map<String, JyjcInspectionResult> superviseCodeKeyResultMap){
if(StringUtils.isNotEmpty(resultDataModel.getEquipId())){
return recordResultMap.get(resultDataModel.getApplicationNo() + ":" + resultDataModel.getEquipId());
}
if(StringUtils.isNotEmpty(resultDataModel.getSupervisoryCode())){
return superviseCodeKeyResultMap.get(resultDataModel.getApplicationNo() + ":" + resultDataModel.getSupervisoryCode());
}
return null;
}
private void deleteAndCreateSubTable(List<JyjcInspectionResult> resultList, List<JyjcInspectionResultAttachment> resultAttachments, List<JyjcInspectionResultParam> resultParams) {
List<Long> resultIds = resultList.stream().map(BaseEntity::getSequenceNbr).collect(Collectors.toList());
if (resultAttachments.size() > 0) {
if (!resultAttachments.isEmpty()) {
attachmentService.remove(new LambdaQueryWrapper<JyjcInspectionResultAttachment>().in(JyjcInspectionResultAttachment::getResultSeq, resultIds));
attachmentService.saveBatch(resultAttachments);
}
if (resultParams.size() > 0) {
if (!resultParams.isEmpty()) {
resultParamService.remove(new LambdaQueryWrapper<JyjcInspectionResultParam>().in(JyjcInspectionResultParam::getResultSeq, resultIds));
resultParamService.saveBatch(resultParams);
}
......@@ -486,7 +524,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
});
}
private void fillResultData(JyjcInspectionResultDataModel r, JyjcInspectionResult jyjcInspectionResult) {
private void fillResultData(JyjcInspectionResultDataModel r, JyjcInspectionResult jyjcInspectionResult, List<JyjcInspectionResult> updateResultList) {
jyjcInspectionResult.setResultStatus(ResultStatusEnum.YES_RESULT.getCode());
jyjcInspectionResult.setLicenseNumber(r.getLicenseNumber());
jyjcInspectionResult.setResultNo(r.getResultNo());
......@@ -501,6 +539,7 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
jyjcInspectionResult.setNonConformance(JSON.toJSONString(r.getNonConformance()));
jyjcInspectionResult.setRemark("同步数据");
jyjcInspectionResult.setTraceId(r.getTraceId());
updateResultList.add(jyjcInspectionResult);
}
private String getUserSeqByPersonCode(String innerPersonCode) {
......@@ -512,14 +551,19 @@ public class JyjcInspectionResultServiceImpl extends BaseService<JyjcInspectionR
return "";
}
private Map<String, JyjcInspectionResult> queryWaitUpdateResultList(List<JyjcInspectionResultDataModel> resultDataModels) {
private Map<String, JyjcInspectionResult> getSuperviseCodeKeyResultMap(List<JyjcInspectionResult> resultList) {
return resultList.stream().filter(r-> StringUtils.isNotEmpty(r.getSupervisoryCode())).collect(Collectors.toMap((c) -> c.getApplicationNo() + ":" + c.getSupervisoryCode(), Function.identity()));
}
private Map<String, JyjcInspectionResult> getRecordKeyResultMap(List<JyjcInspectionResult> resultList) {
return resultList.stream().collect(Collectors.toMap((c) -> c.getApplicationNo() + ":" + c.getEquipUnicode(), Function.identity()));
}
private List<JyjcInspectionResult> queryResultList(List<JyjcInspectionResultDataModel> resultDataModels) {
List<String> applicationNos = resultDataModels.stream().map(JyjcInspectionResultDataModel::getApplicationNo).collect(Collectors.toList());
List<String> supervisoryCodes = resultDataModels.stream().map(JyjcInspectionResultDataModel::getSupervisoryCode).collect(Collectors.toList());
LambdaQueryWrapper<JyjcInspectionResult> wrapper = new LambdaQueryWrapper<>();
wrapper.in(JyjcInspectionResult::getApplicationNo, applicationNos);
wrapper.in(JyjcInspectionResult::getSupervisoryCode, supervisoryCodes);
List<JyjcInspectionResult> resultList = this.list(wrapper);
return resultList.stream().collect(Collectors.toMap((c) -> c.getApplicationNo() + ":" + c.getSupervisoryCode(), Function.identity()));
return this.list(wrapper);
}
public List<DictionarieModel> inspectTypeListByPerson(ReginParams selectedOrgInfo) {
......
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