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

fix(jg):延炼八大类设备导入

parent af793dfb
......@@ -11,7 +11,7 @@ import java.util.Map;
public class EquCategoryConverter implements Converter<String> {
private static final Map<String, String> equipmentMap = new HashMap<>();
public static final Map<String, String> equipmentMap = new HashMap<>();
static {
// 填充映射关系
......@@ -80,4 +80,13 @@ public class EquCategoryConverter implements Converter<String> {
public CellData convertToExcelData(String o, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
return new CellData("");
}
public static String getKeyByValue(String value) {
for (Map.Entry<String, String> entry : equipmentMap.entrySet()) {
if (entry.getValue().equals(value)) {
return entry.getKey();
}
}
return null;
}
}
......@@ -108,4 +108,13 @@ public class EquDefineConverter implements Converter<String> {
public CellData convertToExcelData(String o, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
return new CellData("");
}
public static String getKeyByValue(String value) {
for (Map.Entry<String, String> entry : equipmentMap.entrySet()) {
if (entry.getValue().equals(value)) {
return entry.getKey();
}
}
return null;
}
}
......@@ -58,5 +58,13 @@ public class DataDockController {
}
return ResponseHelper.buildResponse(dataDockService.dataCheckAndImportEquipmentData(remark, file));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/delete")
@ApiOperation(httpMethod = "POST", value = "八大类历史设备导入shanchu", notes = "八大类历史设备导入shachu")
public Object importData() {
dataDockService.delete();
return ResponseHelper.buildResponse("ok");
}
}
......@@ -12,6 +12,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.jg.api.converter.EquCategoryConverter;
import com.yeejoin.amos.boot.module.jg.api.converter.EquDefineConverter;
import com.yeejoin.amos.boot.module.jg.api.dto.EquipInfoExcelDto;
import com.yeejoin.amos.boot.module.jg.biz.service.*;
import com.yeejoin.amos.boot.module.ymt.api.entity.*;
......@@ -86,33 +88,57 @@ public class DataDockServiceImpl {
return Boolean.TRUE;
}
private void saveEquipmentDataInTransaction(Map<String, Object> equ, String dataSource, String remark) {
public void saveEquipmentDataInTransaction(Map<String, Object> equ, String dataSource, String remark) {
try {
transactionTemplate.execute(status -> {
String record = UUID.randomUUID().toString();
String equList = String.valueOf(equ.get("equList"));
// 压力管道保存 工程装置表信息 必须在saveUseInfo之前进行,需要提前生成工程装置id
saveProjectContraption(equ, equList);
// 保存到设备表
saveUseInfo(equ, record, dataSource, remark);
saveDesignInfo(equ, record);
saveFactoryInfo(equ, record);
saveRegisterInfo(equ, record, equList);
saveSupervisionInfo(equ, record);
saveOtherInfo(equ, record, equList);
// 保存技术参数
saveTechParams(equ, record, equList);
// 保存到ES
saveEquInfoToEs(record);
return null;
});
// transactionTemplate.execute(status -> {
String record = UUID.randomUUID().toString();
String equList = String.valueOf(equ.get("equList"));
// 压力管道保存 工程装置表信息 必须在saveUseInfo之前进行,需要提前生成工程装置id
saveProjectContraption(equ, equList);
// 保存到设备表
saveUseInfo(equ, record, dataSource, remark);
saveDesignInfo(equ, record);
saveFactoryInfo(equ, record);
saveRegisterInfo(equ, record, equList);
saveSupervisionInfo(equ, record);
saveOtherInfo(equ, record, equList);
// 保存技术参数
saveTechParams(equ, record, equList);
// 保存到ES
saveEquInfoToEs(record);
// return null;
// });
} catch (Exception e) {
e.printStackTrace();
log.error("{}数据:保存时出现异常,对应数据:{}", dataSource, JSONObject.toJSONString(equ));
log.error("异常信息:{}", e.getMessage());
throw new RuntimeException(e);
}
}
public void delete() {
List<String> records = idxBizJgUseInfoService.lambdaQuery().select(IdxBizJgUseInfo::getRecord).likeRight(IdxBizJgUseInfo::getRemark, "延炼").list()
.stream().map(IdxBizJgUseInfo::getRecord).collect(Collectors.toList());
// saveProjectContraption(equ, equList);
idxBizJgUseInfoService.getBaseMapper().delete(new LambdaQueryWrapper<IdxBizJgUseInfo>().in(IdxBizJgUseInfo::getRecord, records));
idxBizJgDesignInfoService.getBaseMapper().delete(new LambdaQueryWrapper<IdxBizJgDesignInfo>().in(IdxBizJgDesignInfo::getRecord, records));
idxBizJgFactoryInfoService.getBaseMapper().delete(new LambdaQueryWrapper<IdxBizJgFactoryInfo>().in(IdxBizJgFactoryInfo::getRecord, records));
idxBizJgRegisterInfoServiceImpl.getBaseMapper().delete(new LambdaQueryWrapper<IdxBizJgRegisterInfo>().in(IdxBizJgRegisterInfo::getRecord, records));
idxBizJgSupervisionInfoService.getBaseMapper().delete(new LambdaQueryWrapper<IdxBizJgSupervisionInfo>().in(IdxBizJgSupervisionInfo::getRecord, records));
iIdxBizJgTechParamsLiftingService.getBaseMapper().delete(new LambdaQueryWrapper<IdxBizJgTechParamsLifting>().in(IdxBizJgTechParamsLifting::getRecord, records));
iIdxBizJgTechParamsVehicleService.getBaseMapper().delete(new LambdaQueryWrapper<IdxBizJgTechParamsVehicle>().in(IdxBizJgTechParamsVehicle::getRecord, records));
iIdxBizJgTechParamsBoilerService.getBaseMapper().delete(new LambdaQueryWrapper<IdxBizJgTechParamsBoiler>().in(IdxBizJgTechParamsBoiler::getRecord, records));
iIdxBizJgTechParamsVesselService.getBaseMapper().delete(new LambdaQueryWrapper<IdxBizJgTechParamsVessel>().in(IdxBizJgTechParamsVessel::getRecord, records));
iIdxBizJgTechParamsPipelineService.getBaseMapper().delete(new LambdaQueryWrapper<IdxBizJgTechParamsPipeline>().in(IdxBizJgTechParamsPipeline::getRecord, records));
iIdxBizJgTechParamsRidesService.getBaseMapper().delete(new LambdaQueryWrapper<IdxBizJgTechParamsRides>().in(IdxBizJgTechParamsRides::getRecord, records));
iIdxBizJgTechParamsRopewayService.getBaseMapper().delete(new LambdaQueryWrapper<IdxBizJgTechParamsRopeway>().in(IdxBizJgTechParamsRopeway::getRecord, records));
iIdxBizJgTechParamsElevatorService.getBaseMapper().delete(new LambdaQueryWrapper<IdxBizJgTechParamsElevator>().in(IdxBizJgTechParamsElevator::getRecord, records));
records.forEach(record -> this.saveEquInfoToEs(record));
}
/**
* 保存工程装置表信息
*/
......@@ -129,7 +155,7 @@ public class DataDockServiceImpl {
.eq(IdxBizJgProjectContraption::getUseUnitCreditCode, useUnitCode)
.eq(IdxBizJgProjectContraption::getUseUnitName, useUnit)
.eq(IdxBizJgProjectContraption::getProjectContraption, proConName)
.one();
.list().stream().findFirst().orElse(null);
projectContraption.setRecDate(new Date());
......@@ -141,9 +167,9 @@ public class DataDockServiceImpl {
projectContraption.setEquList(equList);
projectContraption.setEquListName(EquipmentClassifityEnum.getNameByCode(equList));
projectContraption.setEquCategory((String) equ.get("equCategory"));
projectContraption.setEquCategoryName(EquipmentClassifityEnum.getNameByCode((String) equ.get("equCategory")));
projectContraption.setEquCategoryName(EquCategoryConverter.getKeyByValue((String) equ.get("equCategory")));
projectContraption.setEquDefine((String) equ.get("equDefine"));
projectContraption.setEquDefineName(EquipmentClassifityEnum.getNameByCode((String) equ.get("equDefine")));
projectContraption.setEquDefineName(EquDefineConverter.getKeyByValue((String) equ.get("equDefine")));
projectContraption.setPipelineLength(Double.parseDouble((String) equ.get("pipeLength")));
projectContraption.setUseRegistrationCode((String) equ.get("useOrgCode"));
projectContraption.setIsIntoManagement(Boolean.FALSE);
......@@ -168,6 +194,7 @@ public class DataDockServiceImpl {
* @param record
*/
private void saveUseInfo(Map<String, Object> equ, String record, String dataSource, String remark) {
log.error("数据===>{}", JSONObject.toJSONString(equ));
IdxBizJgUseInfo useInfo = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgUseInfo.class);
if (!ValidationUtil.isEmpty(useInfo)) {
useInfo.setRecDate(new Date());
......@@ -190,6 +217,7 @@ public class DataDockServiceImpl {
* @param record
*/
private void saveDesignInfo(Map<String, Object> equ, String record) {
log.error("数据===>{}", JSONObject.toJSONString(equ));
IdxBizJgDesignInfo designInfo = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgDesignInfo.class);
if (!ValidationUtil.isEmpty(designInfo)) {
designInfo.setRecord(record);
......@@ -205,6 +233,7 @@ public class DataDockServiceImpl {
* @param record
*/
private void saveFactoryInfo(Map<String, Object> equ, String record) {
log.error("数据===>{}", JSONObject.toJSONString(equ));
IdxBizJgFactoryInfo factoryInfo = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgFactoryInfo.class);
if (!ValidationUtil.isEmpty(factoryInfo)) {
factoryInfo.setRecord(record);
......@@ -220,6 +249,7 @@ public class DataDockServiceImpl {
* @param record
*/
private void saveRegisterInfo(Map<String, Object> equ, String record, String equList) {
log.error("数据===>{}", JSONObject.toJSONString(equ));
IdxBizJgRegisterInfo registerInfo = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgRegisterInfo.class);
if (!ValidationUtil.isEmpty(registerInfo)) {
registerInfo.setRecord(record);
......@@ -239,8 +269,10 @@ public class DataDockServiceImpl {
* @param record
*/
private void saveSupervisionInfo(Map<String, Object> equ, String record) {
log.error("数据===>{}", JSONObject.toJSONString(equ));
IdxBizJgSupervisionInfo supervisionInfo = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgSupervisionInfo.class);
if (!ValidationUtil.isEmpty(supervisionInfo)) {
log.error("数据===hou>{}", JSONObject.toJSONString(supervisionInfo));
if (!ObjectUtils.isEmpty(supervisionInfo)) {
supervisionInfo.setRecord(record);
supervisionInfo.setRecDate(new Date());
idxBizJgSupervisionInfoService.save(supervisionInfo);
......@@ -254,6 +286,7 @@ public class DataDockServiceImpl {
* @param record
*/
private void saveOtherInfo(Map<String, Object> equ, String record, String equList) {
log.error("数据===>{}", JSONObject.toJSONString(equ));
IdxBizJgOtherInfo otherInfo = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgOtherInfo.class);
if (!ValidationUtil.isEmpty(otherInfo)) {
otherInfo.setRecord(record);
......@@ -300,6 +333,7 @@ public class DataDockServiceImpl {
* @param record
*/
private void saveLiftingParams(Map<String, Object> equ, String record) {
log.error("数据===>{}", JSONObject.toJSONString(equ));
IdxBizJgTechParamsLifting equipTechParamLifting = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsLifting.class);
if (!ValidationUtil.isEmpty(equipTechParamLifting)) {
equipTechParamLifting.setRecord(record);
......@@ -315,6 +349,7 @@ public class DataDockServiceImpl {
* @param record
*/
private void saveVehicleParams(Map<String, Object> equ, String record) {
log.error("数据===>{}", JSONObject.toJSONString(equ));
IdxBizJgTechParamsVehicle equipTechParamVehicle = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsVehicle.class);
if (!ValidationUtil.isEmpty(equipTechParamVehicle)) {
equipTechParamVehicle.setRecord(record);
......@@ -330,6 +365,7 @@ public class DataDockServiceImpl {
* @param record
*/
private void saveBoilerParams(Map<String, Object> equ, String record) {
log.error("数据===>{}", JSONObject.toJSONString(equ));
IdxBizJgTechParamsBoiler equipTechParamBoiler = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsBoiler.class);
if (!ValidationUtil.isEmpty(equipTechParamBoiler)) {
equipTechParamBoiler.setRecord(record);
......@@ -345,6 +381,7 @@ public class DataDockServiceImpl {
* @param record
*/
private void saveVesselParams(Map<String, Object> equ, String record) {
log.error("数据===>{}", JSONObject.toJSONString(equ));
IdxBizJgTechParamsVessel equipTechParamVessel = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsVessel.class);
if (!ValidationUtil.isEmpty(equipTechParamVessel)) {
equipTechParamVessel.setRecord(record);
......@@ -360,6 +397,7 @@ public class DataDockServiceImpl {
* @param record
*/
private void savePipelineParams(Map<String, Object> equ, String record) {
log.error("数据===>{}", JSONObject.toJSONString(equ));
IdxBizJgTechParamsPipeline equipTechParamPipeline = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsPipeline.class);
if (!ValidationUtil.isEmpty(equipTechParamPipeline)) {
equipTechParamPipeline.setWallThickness(String.valueOf(equ.get("wallThickness_YLGD")));
......@@ -380,6 +418,7 @@ public class DataDockServiceImpl {
* @param record
*/
private void saveRidesParams(Map<String, Object> equ, String record) {
log.error("数据===>{}", JSONObject.toJSONString(equ));
IdxBizJgTechParamsRides equipTechParamRides = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsRides.class);
if (!ValidationUtil.isEmpty(equipTechParamRides)) {
equipTechParamRides.setRecord(record);
......@@ -398,6 +437,7 @@ public class DataDockServiceImpl {
* @param record
*/
private void saveRopewayParams(Map<String, Object> equ, String record) {
log.error("数据===>{}", JSONObject.toJSONString(equ));
IdxBizJgTechParamsRopeway equipTechParamRopeway = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsRopeway.class);
if (!ValidationUtil.isEmpty(equipTechParamRopeway)) {
equipTechParamRopeway.setRecord(record);
......@@ -413,6 +453,7 @@ public class DataDockServiceImpl {
* @param record
*/
private void saveElevatorParams(Map<String, Object> equ, String record) {
log.error("数据===>{}", JSONObject.toJSONString(equ));
IdxBizJgTechParamsElevator equipTechParamElevator = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsElevator.class);
if (!ValidationUtil.isEmpty(equipTechParamElevator)) {
equipTechParamElevator.setRecord(record);
......@@ -444,7 +485,7 @@ public class DataDockServiceImpl {
* @return
*/
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class)
// @GlobalTransactional(rollbackFor = Exception.class)
public Object dataCheckAndImportEquipmentData(String remark, MultipartFile file) {
List<EquipInfoExcelDto> equipInfoExcelDtos;
......@@ -496,7 +537,9 @@ public class DataDockServiceImpl {
public void invoke(EquipInfoExcelDto data, AnalysisContext context) {
// 数据检查
checkExcelData(sheetName, data, context, sheetError);
useInnerCodeList.add(data.getUseInnerCode());
// if (!ValidationUtil.isEmpty(data.getUseInnerCode())) {
// useInnerCodeList.add(data.getUseInnerCode());
// }
equCodeList.add(data.getEquCode());
useOrgCodeList.add(data.getUseOrgCode());
dataList.add(data);
......@@ -627,26 +670,28 @@ public class DataDockServiceImpl {
// 基本信息
checkNotBlank(data.getEquList(), "设备种类不能为空;", rowError);
checkNotBlank(data.getEquCategory(), "设备类别不能为空;", rowError);
checkNotBlank(data.getUseInnerCode(), "单位内编号不能为空;", rowError);
if (useInnerCodeList.contains(data.getUseInnerCode())) {
rowError.append("单位内编号不能重复;");
}
checkNotBlank(data.getEquType(), "设备型号不能为空;", rowError);
// checkNotBlank(data.getUseInnerCode(), "单位内编号不能为空;", rowError);
// if (useInnerCodeList.contains(data.getUseInnerCode())) {
// rowError.append("单位内编号不能重复;");
// }
// checkNotBlank(data.getEquType(), "设备型号不能为空;", rowError);
if (!isYLGD) {
checkNotBlank(data.getProductName(), "产品名称不能为空;", rowError);
checkNotBlank(data.getEquCodeType(), "有无设备代码不能为空;", rowError);
if ("1".equals(data.getEquCodeType())) {
checkNotBlank(data.getEquCode(), "设备代码不能为空;", rowError);
String equCode = data.getEquCode();
if (equCode.matches("[a-zA-Z0-9]+")) {
if (equCode.length() <= 17) {
rowError.append("设备代码不能小于17位;");
}
if (equCode.length() >= 20) {
rowError.append("设备代码不能大于20位;");
if (!StringUtils.isEmpty(equCode)) {
if (equCode.matches("[a-zA-Z0-9]+")) {
// if (equCode.length() < 17) {
// rowError.append("设备代码不能小于17位;");
// }
// if (equCode.length() > 20) {
// rowError.append("设备代码不能大于20位;");
// }
} else {
rowError.append("设备代码不能包含特殊字符;");
}
} else {
rowError.append("设备代码不能包含特殊字符;");
}
if (equCodeList.contains(data.getEquCode())) {
rowError.append("设备代码不能重复;");
......@@ -681,7 +726,7 @@ public class DataDockServiceImpl {
.eq(IdxBizJgProjectContraption::getUseUnitCreditCode, useUnitCode)
.eq(IdxBizJgProjectContraption::getUseUnitName, useUnit)
.eq(IdxBizJgProjectContraption::getProjectContraption, proConName)
.one();
.list().stream().findFirst().orElse(null);
Optional.ofNullable(oldContraption).ifPresent(old -> {
List<String> pipelineNumberList = idxBizJgProjectContraptionServiceImpl.getBaseMapper()
.selectEquipList(String.valueOf(old.getSequenceNbr()))
......@@ -766,7 +811,7 @@ public class DataDockServiceImpl {
if (!this.useOrgCodeRegularMatching(data)) {
rowError.append("使用登记证编号格式不正确;");
}
if (useOrgCodeList.contains(data.getUseOrgCode())) {
if (!isYLGD && useOrgCodeList.contains(data.getUseOrgCode())) {
rowError.append("使用登记证编号不能重复;");
}
try {
......@@ -784,49 +829,102 @@ public class DataDockServiceImpl {
checkNotBlank(data.getUseUnit(), "使用单位名称不能为空;", rowError);
// 设计信息 电梯、场车、起重机械无"设计信息"
if (!isDT && !isCC && !isQZJX) {
if (ValidationUtil.isEmpty(data.getDesignUnitCreditCode()) || ValidationUtil.isEmpty(data.getDesignUnitName()) || ValidationUtil.isEmpty(data.getDesignUseDate()) || ValidationUtil.isEmpty(data.getDesignDate())) {
data.setDesignIsComplete("2");
} else {
data.setDesignIsComplete("1");
}
// checkNotBlank(data.getDesignUnitCreditCode(), "设计单位统一社会信用代码不能为空;", rowError);
Optional.ofNullable(data.getDesignUnitCreditCode()).ifPresent(v -> checkCreditCode(v, "设计单位统一社会信用代码格式不正确;", rowError));
// checkNotBlank(data.getDesignUnitName(), "设计单位名称不能为空;", rowError);
// checkNotBlank(data.getDesignUseDate(), "设计使用年限不能为空;", rowError);
Optional.ofNullable(data.getDesignUseDate()).ifPresent(v -> checkDateFormatNumber(v, "设计使用年限不能为数字以外的其他类型;", rowError));
// Optional.ofNullable(data.getDesignUseDate()).ifPresent(v -> checkDateFormatNumber(v, "设计使用年限不能为数字以外的其他类型;", rowError));
if (!ValidationUtil.isEmpty(data.getDesignUseDate())) {
data.setDesignUseDate(data.getDesignUseDate().replace("年", "").replace("/", ""));
}
// checkNotBlank(data.getDesignDate(), "设计日期不能为空;", rowError);
Optional.ofNullable(data.getDesignDate()).ifPresent(v -> checkDateFormatCorrect(v, "设计日期格式不正确;", rowError));
Optional.ofNullable(data.getAppraisalDate()).ifPresent(v -> checkDateFormatCorrect(v, "设计文件鉴定日期格式不正确;", rowError));
if (!ValidationUtil.isEmpty(data.getDesignDate())) {
if ("—".equals(data.getDesignDate().trim()) || "/".equals(data.getDesignDate().trim())) {
data.setDesignDate(null);
return;
}
data.setDesignDate(data.getDesignDate().trim().replace("—", ""));
String formattedDate = checkDateFormatCorrect(data.getDesignDate().trim(), "设计日期格式不正确;", rowError);
if (formattedDate != null) {
data.setDesignDate(formattedDate);
}
}
if (!ValidationUtil.isEmpty(data.getAppraisalDate())) {
data.setAppraisalDate(data.getAppraisalDate().trim().replace("—", ""));
String formattedDate = checkDateFormatCorrect(data.getAppraisalDate().trim(), "设计文件鉴定日期格式不正确;", rowError);
if (formattedDate != null) {
data.setAppraisalDate(formattedDate);
}
}
if (ValidationUtil.isEmpty(data.getDesignUnitCreditCode()) || ValidationUtil.isEmpty(data.getDesignUnitName()) || ValidationUtil.isEmpty(data.getDesignUseDate()) || ValidationUtil.isEmpty(data.getDesignDate())) {
data.setDesignIsComplete("2");
} else {
data.setDesignIsComplete("1");
}
}
// 制造信息
if (!isYLGD) {
if (ValidationUtil.isEmpty(data.getProduceUnitCreditCode()) || ValidationUtil.isEmpty(data.getProduceUnitName()) || ValidationUtil.isEmpty(data.getProduceLicenseNum()) || ValidationUtil.isEmpty(data.getFactoryNum()) || ValidationUtil.isEmpty(data.getProduceDate())) {
data.setFactoryIsComplete("2");
} else {
data.setFactoryIsComplete("1");
}
// checkNotBlank(data.getProduceUnitCreditCode(), "制造单位统一社会信用代码不能为空;", rowError);
Optional.ofNullable(data.getProduceUnitCreditCode()).ifPresent(v -> checkCreditCode(v, "制造单位统一社会信用代码格式不正确;", rowError));
// checkNotBlank(data.getProduceUnitName(), "制造单位名称不能为空;", rowError);
// checkNotBlank(data.getProduceLicenseNum(), "制造许可编号不能为空;", rowError);
// checkNotBlank(data.getFactoryNum(), "出厂编号/产品编码不能为空;", rowError);
// checkNotBlank(data.getProduceDate(), "制造日期不能为空;", rowError);
Optional.ofNullable(data.getProduceDate()).ifPresent(v -> checkDateFormatCorrect(v, "制造日期格式不正确;", rowError));
if (!ValidationUtil.isEmpty(data.getProduceDate())) {
data.setProduceDate(data.getProduceDate().trim().replace("—", ""));
String formattedDate = checkDateFormatCorrect(data.getProduceDate().trim(), "制造日期格式不正确;", rowError);
if (formattedDate != null) {
data.setProduceDate(formattedDate);
}
}
if (ValidationUtil.isEmpty(data.getProduceUnitCreditCode()) || ValidationUtil.isEmpty(data.getProduceUnitName()) || ValidationUtil.isEmpty(data.getProduceLicenseNum()) || ValidationUtil.isEmpty(data.getFactoryNum()) || ValidationUtil.isEmpty(data.getProduceDate())) {
data.setFactoryIsComplete("2");
} else {
data.setFactoryIsComplete("1");
}
}
}
/**
* 检查上传Excel中的日期格式是否正确
* 检查并格式化上传Excel中的日期格式
*
* @param date 待检查数据
* @param errorMessage 错误内容
* @param rowError 错误集
* @return 格式化后的日期字符串,如果格式不正确则返回null
*/
private void checkDateFormatCorrect(String date, String errorMessage, StringBuffer rowError) {
if (!date.matches("\\d{4}-\\d{2}-\\d{2}")) {
private String checkDateFormatCorrect(String date, String errorMessage, StringBuffer rowError) {
String res = date.trim().replace("/", "-").replace(".", "-")
.replace("年", "-").replace("月", "-").replace("日", "");
// 处理不同格式的日期
// 2017-12
if (res.matches("\\d{4}\\-\\d{2}")) {
res = res + "-01";
}
// 2017-1
if (res.matches("\\d{4}\\-\\d{1}")) {
res = res.substring(0, res.length() - 1) + "0" + res.substring(res.length() - 1) + "-01";
}
// 2023-5-5
if (res.matches("\\d{4}\\-\\d{1}\\-\\d{1}")) {
res = res.substring(0, res.length() - 3) + "0" + res.substring(res.length() - 3, res.length() - 1) + "0" + res.substring(res.length() - 1);
}
// 2023-5-15
if (res.matches("\\d{4}\\-\\d{1}\\-\\d{2}")) {
res = res.substring(0, res.length() - 4) + "0" + res.substring(res.length() - 4);
}
if (!res.matches("\\d{4}-\\d{2}-\\d{2}")) {
rowError.append(errorMessage);
return null;
}
return res;
}
/**
......@@ -915,9 +1013,9 @@ public class DataDockServiceImpl {
* @param rowError
*/
private void YLRQTechnicalParamsCheck(EquipInfoExcelDto data, StringBuffer rowError) {
checkNotBlank(data.getSingleBottleVolume(), "单瓶容积不能为空;", rowError);
checkNotBlank(data.getChargingMedium(), "充装介质不能为空;", rowError);
checkNotBlank(data.getNominalWorkingPressure(), "公称工作压力不能为空;", rowError);
// checkNotBlank(data.getSingleBottleVolume(), "单瓶容积不能为空;", rowError);
// checkNotBlank(data.getChargingMedium(), "充装介质不能为空;", rowError);
// checkNotBlank(data.getNominalWorkingPressure(), "公称工作压力不能为空;", rowError);
}
/**
......@@ -984,8 +1082,8 @@ public class DataDockServiceImpl {
* @return 匹配通过true,反之false
*/
private Boolean useOrgCodeRegularMatching(EquipInfoExcelDto data) {
String useOrgCode = data.getUseOrgCode();
String useOrgCode = data.getUseOrgCode().replace("(", "(").replace(")", ")");
data.setUseOrgCode(useOrgCode);
// 梯00陕A00000(24) 起11陕K0127(15)
String rule01 = "^[\\u4e00-\\u9fa5][0-9A-Z]{2}陕[A-Z0-9]{4,}\\(\\d{2}\\)$";
boolean flage01 = Pattern.matches(rule01, useOrgCode);
......@@ -1102,8 +1200,20 @@ public class DataDockServiceImpl {
String rule29 = "^[\\u4e00-\\u9fa5]{1}[0-9]{1}[A-Z]{1,2}[0-9]{4}$";
boolean flage29 = Pattern.matches(rule29, useOrgCode);
// T20090311
String rule30 = "^[A-Za-z]\\d{4}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])$";
boolean flage30 = Pattern.matches(rule30, useOrgCode);
// 容2MS陕JI0487
String rule31 = "^容\\d[A-Z]{2}陕[A-Z]{2}\\d{4}$";
boolean flage31 = Pattern.matches(rule31, useOrgCode);
// 3MR陕J0032
String rule32 = "^\\d[A-Z]{2}陕[A-Z]\\d{4}$";
boolean flage32 = Pattern.matches(rule32, useOrgCode);
return flage01 || flage02 || flage03 || flage04 || flage05 || flage06 || flage07 || flage08 || flage09 || flage10 || flage11 || flage12 || flage13 || flage14 || flage15 || flage16 || flage17 || flage18 || flage19 || flage20 || flage21 || flage22 || flage23 || flage24 || flage25 || flage26 || flage27 || flage28 || flage29;
return flage01 || flage02 || flage03 || flage04 || flage05 || flage06 || flage07 || flage08 || flage09 || flage10 || flage11 || flage12 || flage13 || flage14 || flage15 || flage16 || flage17 || flage18 || flage19 || flage20 || flage21 || flage22 || flage23 || flage24 || flage25 || flage26 || flage27 || flage28 || flage29 || flage30 || flage31 || flage32;
}
......@@ -1122,19 +1232,21 @@ public class DataDockServiceImpl {
* @param equipInfoExcelDtos
*/
public void batchSaveEquipmentData(String remark, List<EquipInfoExcelDto> equipInfoExcelDtos) {
int batchSize = 1000;
int totalSize = equipInfoExcelDtos.size();
for (int i = 0; i < totalSize; i += batchSize) {
List<EquipInfoExcelDto> batch = equipInfoExcelDtos.subList(i, Math.min(totalSize, i + batchSize));
try {
CompletableFuture.allOf(batch.stream().map(equ -> CompletableFuture.runAsync(
() -> this.saveEquipmentDataInTransaction((Map<String, Object>) JSON.parseObject(JSON.toJSONString(equ), Map.class), "jg_his", remark)
)
).toArray(CompletableFuture[]::new)).join();
} catch (Exception e) {
log.error("数据上传,保存设备数据失败: {}", e.getMessage());
throw new BadRequest("数据上传,保存设备数据失败!");
}
}
equipInfoExcelDtos.forEach(equ -> this.saveEquipmentDataInTransaction((Map<String, Object>) JSON.parseObject(JSON.toJSONString(equ), Map.class), "jg_his", remark));
// int batchSize = 1000;
// int totalSize = equipInfoExcelDtos.size();
// for (int i = 0; i < totalSize; i += batchSize) {
// List<EquipInfoExcelDto> batch = equipInfoExcelDtos.subList(i, Math.min(totalSize, i + batchSize));
// try {
// CompletableFuture.allOf(batch.stream().map(equ -> CompletableFuture.runAsync(
// () -> this.saveEquipmentDataInTransaction((Map<String, Object>) JSON.parseObject(JSON.toJSONString(equ), Map.class), "jg_his", remark)
// )
// ).toArray(CompletableFuture[]::new)).join();
// } catch (Exception e) {
// log.error("数据上传,保存设备数据失败: {}", e.getMessage());
// throw new BadRequest("数据上传,保存设备数据失败!");
// }
// }
}
}
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