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

feat(jg):八大类历史设备导入-压力管道(未完)

parent 64ee542e
......@@ -75,6 +75,10 @@ public class DictParamsConverter implements Converter<String> {
dictMap.put("液化天然气", "LIQUEFIED_NATURAL_GAS");
dictMap.put("液化石油气", "LIQUEFIED_PETROLEUM_GAS");
dictMap.put("氢气", "HYDROGEN");
dictMap.put("集选", "1");
dictMap.put("并联", "2");
dictMap.put("按钮", "3");
dictMap.put("其他控制方式", "4");
}
@Override
......@@ -101,8 +105,4 @@ public class DictParamsConverter implements Converter<String> {
public CellData convertToExcelData(String o, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
return new CellData("");
}
public static void main(String[] args) {
}
}
\ No newline at end of file
......@@ -11,7 +11,7 @@ import java.util.Map;
public class EquListConverter implements Converter<String> {
private static final Map<String, String> equipmentMap = new HashMap<>();
public static final Map<String, String> equipmentMap = new HashMap<>();
static {
// 填充映射关系
......
......@@ -47,6 +47,11 @@ public class EquipInfoExcelDto extends BaseDto {
@NotBlank(message = "产品名称不能为空")
private String productName;
@ApiModelProperty(value = "管道名称(登记单元)")
@ExcelProperty(value = "管道名称(登记单元)")
@NotBlank(message = "管道名称不能为空")
private String pipeName;
@ApiModelProperty(value = "设备型号")
@ExcelProperty(value = "设备型号")
@NotBlank(message = "设备型号不能为空")
......@@ -70,6 +75,11 @@ public class EquipInfoExcelDto extends BaseDto {
@ExcelProperty(value = "工程(装置)名称")
private String projectContraption;
@ApiModelProperty(value = "工程(装置)编号")
@ExcelProperty(value = "工程(装置)编号")
private String projectContraptionNo;
@ApiModelProperty(value = "是否球罐")
@ExcelProperty(value = "是否球罐", converter = VehicleCylinderConverter.class)
private String whetherSphericalTank;
......
......@@ -35,7 +35,7 @@ public class DataDockController {
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/xi-an/saveEquipmentData")
@ApiOperation(httpMethod = "POST", value = "西安数据对接-设备批量导入", notes = "西安数据对接-导入多个设备的数据文件")
public ResponseModel<?> saveEquipmentData(@RequestBody List<Map<?, ?>> equLists) throws Exception {
public ResponseModel<?> saveEquipmentData(@RequestBody List<Map<String, Object>> equLists) throws Exception {
return ResponseHelper.buildResponse(dataDockService.xiAnSaveEquipmentData(equLists));
}
......
......@@ -2,6 +2,7 @@ package com.yeejoin.amos.boot.module.jg.biz.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.module.ymt.api.entity.IdxBizJgProjectContraption;
......@@ -14,7 +15,7 @@ import java.util.Map;
* @author system_generator
* @date 2024-12-11
*/
public interface IIdxBizJgProjectContraptionService {
public interface IIdxBizJgProjectContraptionService extends IService<IdxBizJgProjectContraption> {
boolean saveOrUpdateData(IdxBizJgProjectContraption projectContraption);
......
......@@ -8,6 +8,7 @@ import com.alibaba.excel.read.metadata.ReadSheet;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
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.dto.EquipInfoExcelDto;
......@@ -34,6 +35,7 @@ import java.sql.Timestamp;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static com.alibaba.fastjson.JSON.toJSONString;
......@@ -41,9 +43,11 @@ import static com.alibaba.fastjson.JSON.toJSONString;
@Service
@RequiredArgsConstructor
public class DataDockServiceImpl {
private final SnowflakeIdUtil sequence;
private final ESEquipmentCategory esEquipmentCategory;
private final CategoryOtherInfoMapper categoryOtherInfoMapper;
private final IIdxBizJgUseInfoService idxBizJgUseInfoService;
private final IIdxBizJgProjectContraptionService idxBizJgProjectContraptionService;
private final IdxBizJgDesignInfoServiceImpl idxBizJgDesignInfoService;
private final IdxBizJgFactoryInfoServiceImpl idxBizJgFactoryInfoService;
private final IdxBizJgRegisterInfoServiceImpl idxBizJgRegisterInfoServiceImpl;
......@@ -57,9 +61,17 @@ public class DataDockServiceImpl {
private final IIdxBizJgTechParamsRidesService iIdxBizJgTechParamsRidesService;
private final IIdxBizJgTechParamsRopewayService iIdxBizJgTechParamsRopewayService;
private final IIdxBizJgTechParamsElevatorService iIdxBizJgTechParamsElevatorService;
private final IdxBizJgProjectContraptionServiceImpl idxBizJgProjectContraptionServiceImpl;
private final TransactionTemplate transactionTemplate;
private final CommonServiceImpl commonService;
private final Map<String, Object> resultError = new HashMap<>();
List<String> useInnerCodeList = new ArrayList<>();// 单位内部编号集合
List<String> equCodeList = new ArrayList<>();// 设备代码集合
List<String> factoryNumList = new ArrayList<>();// 出厂编码集合
List<String> useOrgCodeList = new ArrayList<>();// 使用登记证集合
Map<String, List<String>> projectContraptionMap = new HashMap<>();// 工程装置名称集合
/**
* 西安数据对接-保存设备信息
*
......@@ -68,21 +80,23 @@ public class DataDockServiceImpl {
*/
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class)
public boolean xiAnSaveEquipmentData(List<Map<?, ?>> equLists) {
public boolean xiAnSaveEquipmentData(List<Map<String, Object>> equLists) {
CompletableFuture.allOf(equLists.stream().map(equ -> CompletableFuture.runAsync(() -> saveEquipmentDataInTransaction(equ, "jg_his_xa", null))).toArray(CompletableFuture[]::new)).join();
return Boolean.TRUE;
}
private void saveEquipmentDataInTransaction(Map<?, ?> equ, String dataSource, String remark) {
private 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);
saveRegisterInfo(equ, record, equList);
saveSupervisionInfo(equ, record);
saveOtherInfo(equ, record, equList);
// 保存技术参数
......@@ -99,12 +113,60 @@ public class DataDockServiceImpl {
}
/**
* 保存工程装置表信息
*/
private void saveProjectContraption(Map<String, Object> equ, String equList) {
if (EquipmentClassifityEnum.YLGD.getCode().equals(equList)) {
IdxBizJgProjectContraption projectContraption = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgProjectContraption.class);
if (!ValidationUtil.isEmpty(projectContraption)) {
String useUnitCode = String.valueOf(equ.get("useUnitCode")).trim();// 使用单位Code
String useUnit = String.valueOf(equ.get("useUnit")).trim();// 使用单位名称
String proConName = String.valueOf(equ.get("projectContraption")).trim();// 工程装置名称
// 查询该企业下是否已经有该工程装置名称 有-》追加 update 无-》新增 save
IdxBizJgProjectContraption oldContraption = idxBizJgProjectContraptionService.lambdaQuery()
.eq(IdxBizJgProjectContraption::getUseUnitCreditCode, useUnitCode)
.eq(IdxBizJgProjectContraption::getUseUnitName, useUnit)
.eq(IdxBizJgProjectContraption::getProjectContraption, proConName)
.one();
projectContraption.setRecDate(new Date());
if (ObjectUtils.isEmpty(oldContraption)) { // save
Long sequenceNbr = sequence.nextId();
projectContraption.setSequenceNbr(sequenceNbr);
projectContraption.setUseUnitCreditCode(useUnitCode);
projectContraption.setUseUnitName(useUnit);
projectContraption.setEquList(equList);
projectContraption.setEquListName(EquipmentClassifityEnum.getNameByCode(equList));
projectContraption.setEquCategory((String) equ.get("equCategory"));
projectContraption.setEquCategoryName(EquipmentClassifityEnum.getNameByCode((String) equ.get("equCategory")));
projectContraption.setEquDefine((String) equ.get("equDefine"));
projectContraption.setEquDefineName(EquipmentClassifityEnum.getNameByCode((String) equ.get("equDefine")));
projectContraption.setPipelineLength(Double.parseDouble((String) equ.get("pipeLength")));
projectContraption.setUseRegistrationCode((String) equ.get("useOrgCode"));
projectContraption.setIsIntoManagement(Boolean.FALSE);
idxBizJgProjectContraptionService.save(projectContraption);
equ.put("projectContraptionId", sequenceNbr);
} else { // update
equ.put("projectContraptionId", oldContraption.getSequenceNbr());
projectContraption.setSequenceNbr(oldContraption.getSequenceNbr());
Double oldPipelineLength = oldContraption.getPipelineLength();
projectContraption.setPipelineLength(Double.sum(oldPipelineLength, Double.parseDouble((String) equ.get("pipeLength"))));
idxBizJgProjectContraptionService.updateById(projectContraption);
}
}
}
}
/**
* 保存使用信息表
*
* @param equ
* @param record
*/
private void saveUseInfo(Map<?, ?> equ, String record, String dataSource, String remark) {
private void saveUseInfo(Map<String, Object> equ, String record, String dataSource, String remark) {
IdxBizJgUseInfo useInfo = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgUseInfo.class);
if (!ValidationUtil.isEmpty(useInfo)) {
useInfo.setRecDate(new Date());
......@@ -115,6 +177,7 @@ public class DataDockServiceImpl {
useInfo.setUseUnitCreditCode(String.valueOf(equ.get("useUnitCode")).trim());
useInfo.setUseUnitName(String.valueOf(equ.get("useUnit")).trim());
useInfo.setRemark(remark);
useInfo.setProjectContraptionId(String.valueOf(equ.get("projectContraptionId")));
idxBizJgUseInfoService.save(useInfo);
}
}
......@@ -125,7 +188,7 @@ public class DataDockServiceImpl {
* @param equ
* @param record
*/
private void saveDesignInfo(Map<?, ?> equ, String record) {
private void saveDesignInfo(Map<String, Object> equ, String record) {
IdxBizJgDesignInfo designInfo = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgDesignInfo.class);
if (!ValidationUtil.isEmpty(designInfo)) {
designInfo.setRecord(record);
......@@ -140,7 +203,7 @@ public class DataDockServiceImpl {
* @param equ
* @param record
*/
private void saveFactoryInfo(Map<?, ?> equ, String record) {
private void saveFactoryInfo(Map<String, Object> equ, String record) {
IdxBizJgFactoryInfo factoryInfo = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgFactoryInfo.class);
if (!ValidationUtil.isEmpty(factoryInfo)) {
factoryInfo.setRecord(record);
......@@ -156,12 +219,15 @@ public class DataDockServiceImpl {
* @param equ
* @param record
*/
private void saveRegisterInfo(Map<?, ?> equ, String record) {
private void saveRegisterInfo(Map<String, Object> equ, String record, String equList) {
IdxBizJgRegisterInfo registerInfo = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgRegisterInfo.class);
if (!ValidationUtil.isEmpty(registerInfo)) {
registerInfo.setRecord(record);
registerInfo.setRecDate(new Date());
registerInfo.setRegisterState("6045");
if (EquipmentClassifityEnum.YLGD.getCode().equals(equList)) {
registerInfo.setEquCodeType("2");
}
idxBizJgRegisterInfoServiceImpl.save(registerInfo);
}
}
......@@ -172,7 +238,7 @@ public class DataDockServiceImpl {
* @param equ
* @param record
*/
private void saveSupervisionInfo(Map<?, ?> equ, String record) {
private void saveSupervisionInfo(Map<String, Object> equ, String record) {
IdxBizJgSupervisionInfo supervisionInfo = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgSupervisionInfo.class);
if (!ValidationUtil.isEmpty(supervisionInfo)) {
supervisionInfo.setRecord(record);
......@@ -187,7 +253,7 @@ public class DataDockServiceImpl {
* @param equ
* @param record
*/
private void saveOtherInfo(Map<?, ?> equ, String record, String equList) {
private void saveOtherInfo(Map<String, Object> equ, String record, String equList) {
IdxBizJgOtherInfo otherInfo = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgOtherInfo.class);
if (!ValidationUtil.isEmpty(otherInfo)) {
otherInfo.setRecord(record);
......@@ -207,7 +273,7 @@ public class DataDockServiceImpl {
* @param record
* @param equList
*/
private void saveTechParams(Map<?, ?> equ, String record, String equList) {
private void saveTechParams(Map<String, Object> equ, String record, String equList) {
if (EquipmentClassifityEnum.QZJX.getCode().equals(equList)) {
saveLiftingParams(equ, record);
} else if (EquipmentClassifityEnum.CC.getCode().equals(equList)) {
......@@ -233,7 +299,7 @@ public class DataDockServiceImpl {
* @param equ
* @param record
*/
private void saveLiftingParams(Map<?, ?> equ, String record) {
private void saveLiftingParams(Map<String, Object> equ, String record) {
IdxBizJgTechParamsLifting equipTechParamLifting = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsLifting.class);
if (!ValidationUtil.isEmpty(equipTechParamLifting)) {
equipTechParamLifting.setRecord(record);
......@@ -248,7 +314,7 @@ public class DataDockServiceImpl {
* @param equ
* @param record
*/
private void saveVehicleParams(Map<?, ?> equ, String record) {
private void saveVehicleParams(Map<String, Object> equ, String record) {
IdxBizJgTechParamsVehicle equipTechParamVehicle = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsVehicle.class);
if (!ValidationUtil.isEmpty(equipTechParamVehicle)) {
equipTechParamVehicle.setRecord(record);
......@@ -263,7 +329,7 @@ public class DataDockServiceImpl {
* @param equ
* @param record
*/
private void saveBoilerParams(Map<?, ?> equ, String record) {
private void saveBoilerParams(Map<String, Object> equ, String record) {
IdxBizJgTechParamsBoiler equipTechParamBoiler = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsBoiler.class);
if (!ValidationUtil.isEmpty(equipTechParamBoiler)) {
equipTechParamBoiler.setRecord(record);
......@@ -278,7 +344,7 @@ public class DataDockServiceImpl {
* @param equ
* @param record
*/
private void saveVesselParams(Map<?, ?> equ, String record) {
private void saveVesselParams(Map<String, Object> equ, String record) {
IdxBizJgTechParamsVessel equipTechParamVessel = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsVessel.class);
if (!ValidationUtil.isEmpty(equipTechParamVessel)) {
equipTechParamVessel.setRecord(record);
......@@ -293,7 +359,7 @@ public class DataDockServiceImpl {
* @param equ
* @param record
*/
private void savePipelineParams(Map<?, ?> equ, String record) {
private void savePipelineParams(Map<String, Object> equ, String record) {
IdxBizJgTechParamsPipeline equipTechParamPipeline = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsPipeline.class);
if (!ValidationUtil.isEmpty(equipTechParamPipeline)) {
equipTechParamPipeline.setWallThickness(String.valueOf(equ.get("wallThickness_YLGD")));
......@@ -312,7 +378,7 @@ public class DataDockServiceImpl {
* @param equ
* @param record
*/
private void saveRidesParams(Map<?, ?> equ, String record) {
private void saveRidesParams(Map<String, Object> equ, String record) {
IdxBizJgTechParamsRides equipTechParamRides = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsRides.class);
if (!ValidationUtil.isEmpty(equipTechParamRides)) {
equipTechParamRides.setRecord(record);
......@@ -330,7 +396,7 @@ public class DataDockServiceImpl {
* @param equ
* @param record
*/
private void saveRopewayParams(Map<?, ?> equ, String record) {
private void saveRopewayParams(Map<String, Object> equ, String record) {
IdxBizJgTechParamsRopeway equipTechParamRopeway = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsRopeway.class);
if (!ValidationUtil.isEmpty(equipTechParamRopeway)) {
equipTechParamRopeway.setRecord(record);
......@@ -345,7 +411,7 @@ public class DataDockServiceImpl {
* @param equ
* @param record
*/
private void saveElevatorParams(Map<?, ?> equ, String record) {
private void saveElevatorParams(Map<String, Object> equ, String record) {
IdxBizJgTechParamsElevator equipTechParamElevator = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgTechParamsElevator.class);
if (!ValidationUtil.isEmpty(equipTechParamElevator)) {
equipTechParamElevator.setRecord(record);
......@@ -393,12 +459,6 @@ public class DataDockServiceImpl {
return Boolean.TRUE;
}
private final Map<String, Object> resultError = new HashMap<>();
List<String> useInnerCodeList = new ArrayList<>();// 单位内部编号集合
List<String> equCodeList = new ArrayList<>();// 设备代码集合
List<String> factoryNumList = new ArrayList<>();// 出厂编码集合
List<String> useOrgCodeList = new ArrayList<>();// 使用登记证集合
/**
* excel 文件读取,字段校验
*
......@@ -413,6 +473,7 @@ public class DataDockServiceImpl {
equCodeList.clear();
factoryNumList.clear();
useOrgCodeList.clear();
projectContraptionMap.clear();
try {
InputStream inputStream = file.getInputStream();
......@@ -482,21 +543,21 @@ public class DataDockServiceImpl {
StringBuffer rowError = new StringBuffer();
log.info("开始解析数据,第{}条数据", rowIndex);
// 是否起重机械
boolean isQZJX = !ValidationUtil.isEmpty(data.getEquList()) && "4000".equals(data.getEquList());
boolean isQZJX = !ValidationUtil.isEmpty(data.getEquList()) && EquipmentClassifityEnum.QZJX.getCode().equals(data.getEquList());
// 是否场内机动车辆
boolean isCNJDXL = !ValidationUtil.isEmpty(data.getEquList()) && "5000".equals(data.getEquList());
boolean isCNJDXL = !ValidationUtil.isEmpty(data.getEquList()) && EquipmentClassifityEnum.CC.getCode().equals(data.getEquList());
// 是否锅炉
boolean isGL = !ValidationUtil.isEmpty(data.getEquList()) && "1000".equals(data.getEquList());
boolean isGL = !ValidationUtil.isEmpty(data.getEquList()) && EquipmentClassifityEnum.GL.getCode().equals(data.getEquList());
// 是否压力容器
boolean isYLRQ = !ValidationUtil.isEmpty(data.getEquList()) && "2000".equals(data.getEquList());
boolean isYLRQ = !ValidationUtil.isEmpty(data.getEquList()) && EquipmentClassifityEnum.YLRQ.getCode().equals(data.getEquList());
// 是否压力管道
boolean isYLGD = !ValidationUtil.isEmpty(data.getEquList()) && "8000".equals(data.getEquList());
boolean isYLGD = !ValidationUtil.isEmpty(data.getEquList()) && EquipmentClassifityEnum.YLGD.getCode().equals(data.getEquList());
// 是否大型游乐设施
boolean isDXYNSS = !ValidationUtil.isEmpty(data.getEquList()) && "6000".equals(data.getEquList());
boolean isDXYNSS = !ValidationUtil.isEmpty(data.getEquList()) && EquipmentClassifityEnum.YLSS.getCode().equals(data.getEquList());
// 是否客运索道
boolean isKYSD = !ValidationUtil.isEmpty(data.getEquList()) && "9000".equals(data.getEquList());
boolean isKYSD = !ValidationUtil.isEmpty(data.getEquList()) && EquipmentClassifityEnum.KYSD.getCode().equals(data.getEquList());
// 是否电梯
boolean isDT = !ValidationUtil.isEmpty(data.getEquList()) && "3000".equals(data.getEquList());
boolean isDT = !ValidationUtil.isEmpty(data.getEquList()) && EquipmentClassifityEnum.DT.getCode().equals(data.getEquList());
try {
log.info("解析第{}行数据:{}", rowIndex, JSON.toJSONString(data));
......@@ -556,8 +617,11 @@ public class DataDockServiceImpl {
*/
private void commonFieldCheck(EquipInfoExcelDto data, StringBuffer rowError) {
boolean isPressureVessel = !org.apache.commons.lang3.ObjectUtils.isEmpty(data.getEquList()) && "2000".equals(data.getEquList());// 是否压力容器
boolean isPressurePiping = !org.apache.commons.lang3.ObjectUtils.isEmpty(data.getEquList()) && "8000".equals(data.getEquList());// 是否压力管道
boolean isYLRQ = !ObjectUtils.isEmpty(data.getEquList()) && EquipmentClassifityEnum.YLRQ.getCode().equals(data.getEquList());// 是否压力容器
boolean isYLGD = !ObjectUtils.isEmpty(data.getEquList()) && EquipmentClassifityEnum.YLGD.getCode().equals(data.getEquList());// 是否压力管道
boolean isDT = !ObjectUtils.isEmpty(data.getEquList()) && EquipmentClassifityEnum.DT.getCode().equals(data.getEquList());// 是否电梯
boolean isCC = !ObjectUtils.isEmpty(data.getEquList()) && EquipmentClassifityEnum.CC.getCode().equals(data.getEquList());// 是否场车
boolean isQZJX = !ObjectUtils.isEmpty(data.getEquList()) && EquipmentClassifityEnum.QZJX.getCode().equals(data.getEquList());// 是否起重机械
// 基本信息
checkNotBlank(data.getEquList(), "设备种类不能为空;", rowError);
......@@ -566,35 +630,79 @@ public class DataDockServiceImpl {
if (useInnerCodeList.contains(data.getUseInnerCode())) {
rowError.append("单位内编号不能重复;");
}
checkNotBlank(data.getProductName(), "产品名称不能为空;", rowError);
checkNotBlank(data.getEquType(), "设备型号不能为空;", 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 (!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位;");
}
} else {
rowError.append("设备代码不能包含特殊字符;");
}
if (equCode.length() >= 20) {
rowError.append("设备代码不能大于20位;");
if (equCodeList.contains(data.getEquCode())) {
rowError.append("设备代码不能重复;");
}
this.checkEquCodeUniqueness(data.getEquCode(), rowError);
} else {
rowError.append("设备代码不能包含特殊字符;");
}
if (equCodeList.contains(data.getEquCode())) {
rowError.append("设备代码不能重复;");
data.setEquCode("");
}
this.checkEquCodeUniqueness(data.getEquCode(), rowError);
} else {
data.setEquCode("");
}
if (isPressurePiping) {// 校验压力管道特有的参数
if (isYLGD) {// 校验压力管道特有的参数
checkNotBlank(data.getPipeName(), "管道名称不能为空;", rowError);
checkNotBlank(data.getProjectContraption(), "工程(装置)名称不能为空;", rowError);
checkNotBlank(data.getProjectContraptionNo(), "工程(装置)编号不能为空;", rowError);
// todo
if (commonService.useRegistrationCertificateAccountUnique(data.getUseOrgCode(), null)) {
rowError.append("使用登记证编号已存在系统中;");
}
// 同一工程装置下管道编号不能重复
if (!ValidationUtil.isEmpty(data.getProjectContraption())) {
String useUnitCode = String.valueOf(data.getUseUnitCode()).trim();// 使用单位Code
String useUnit = String.valueOf(data.getUseUnit()).trim();// 使用单位名称
String proConName = data.getProjectContraption().trim();// 工程装置名称
// 查询该企业下工程装置名称
IdxBizJgProjectContraption oldContraption = idxBizJgProjectContraptionService.lambdaQuery()
.eq(IdxBizJgProjectContraption::getUseUnitCreditCode, useUnitCode)
.eq(IdxBizJgProjectContraption::getUseUnitName, useUnit)
.eq(IdxBizJgProjectContraption::getProjectContraption, proConName)
.one();
Optional.ofNullable(oldContraption).ifPresent(old -> {
List<String> pipelineNumberList = idxBizJgProjectContraptionServiceImpl.getBaseMapper()
.selectEquipList(String.valueOf(old.getSequenceNbr()))
.stream()
.map(item -> (String) item.get("pipelineNumber"))
.collect(Collectors.toList());
if (pipelineNumberList.contains(data.getPipelineNumber())) {
rowError.append(String.format("系统中工程装置(%s)下已经存在管道编号(%s);", data.getProjectContraption(), data.getPipelineNumber()));
}
});
List<String> list = projectContraptionMap.get(data.getProjectContraption());
if (null != list) {
// 判断该装置下是否已经存在该管道编号
if (list.contains(data.getPipelineNumber())) {
rowError.append(String.format("同一工程装置(%s)下管道编号不能重复;", data.getProjectContraption()));
}
list.add(data.getPipelineNumber());
} else {
list = new ArrayList<>();
}
projectContraptionMap.put(data.getProjectContraption(), list);
}
} else {
data.setProjectContraption("");
}
if (isPressureVessel) {// 校验压力容器特有的参数
if (isYLRQ) {// 校验压力容器特有的参数
boolean isGasCylinder = !org.apache.commons.lang3.ObjectUtils.isEmpty(data.getEquCategory()) && "2300".equals(data.getEquCategory());// 是否气瓶
boolean isFixedGasCylinder = !org.apache.commons.lang3.ObjectUtils.isEmpty(data.getEquCategory()) && "2100".equals(data.getEquCategory());// 是否固定式压力容器
boolean isOxygenChamber = !org.apache.commons.lang3.ObjectUtils.isEmpty(data.getEquCategory()) && "2400".equals(data.getEquCategory());// 是否氧舱
......@@ -660,7 +768,7 @@ public class DataDockServiceImpl {
} catch (Exception e) {
rowError.append(e.getMessage());
}
if (commonService.useRegistrationCertificateAccountUnique(data.getUseOrgCode(), null)) {
if (!isYLGD && commonService.useRegistrationCertificateAccountUnique(data.getUseOrgCode(), null)) {
rowError.append("使用登记证编号已存在系统中;");
}
}
......@@ -668,15 +776,17 @@ public class DataDockServiceImpl {
checkNotBlank(data.getUseUnitCode(), "使用单位统一社会信用代码不能为空;", rowError);
Optional.ofNullable(data.getUseUnitCode()).ifPresent(v -> checkCreditCode(v, "使用单位统一社会信用代码格式不正确;", rowError));
checkNotBlank(data.getUseUnit(), "使用单位名称不能为空;", rowError);
// 设计信息
// 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));
// checkNotBlank(data.getDesignUseDate(), "设计日期不能为空;", rowError);
// Optional.ofNullable(data.getDesignDate()).ifPresent(v -> checkDateFormatCorrect(v, "设计日期格式不正确;", rowError));
// Optional.ofNullable(data.getAppraisalDate()).ifPresent(v -> checkDateFormatCorrect(v, "设计文件鉴定日期格式不正确;", rowError));
// 设计信息 电梯、场车、起重机械无"设计信息"
if (!isDT && !isCC && !isQZJX) {
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));
checkNotBlank(data.getDesignUseDate(), "设计日期不能为空;", rowError);
Optional.ofNullable(data.getDesignDate()).ifPresent(v -> checkDateFormatCorrect(v, "设计日期格式不正确;", rowError));
Optional.ofNullable(data.getAppraisalDate()).ifPresent(v -> checkDateFormatCorrect(v, "设计文件鉴定日期格式不正确;", rowError));
}
// 制造信息
checkNotBlank(data.getProduceUnitCreditCode(), "制造单位统一社会信用代码不能为空;", rowError);
Optional.ofNullable(data.getProduceUnitCreditCode()).ifPresent(v -> checkCreditCode(v, "制造单位统一社会信用代码格式不正确;", rowError));
......@@ -957,7 +1067,24 @@ public class DataDockServiceImpl {
String rule25 = "^[\\u4e00-\\u9fa5][A-Z]{2}[0-9]{1}:[0-9]{3}$";
boolean flage25 = Pattern.matches(rule25, 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;
// 起1100001(21)
String rule26 = "^[\\u4e00-\\u9fa5][A-Z0-9]{7}\\(\\d{2}\\)$";
boolean flage26 = Pattern.matches(rule26, useOrgCode);
// 梯12秦汉0750(SLT03159-2020)(21)
String rule27 = "^[\\u4e00-\\u9fa5][0-9A-Z]{2}[\\u4e00-\\u9fa5]{1,2}[0-9]{4}\\([A-Z0-9]{4,8}-[A-Z0-9]{4}\\)\\(\\d{2}\\)$";
boolean flage27 = Pattern.matches(rule27, useOrgCode);
// G-01-T-003548
String rule28 = "^[a-zA-Z]{1}-[0-9]{2}-[A-Z]-\\d{6}$";
boolean flage28 = Pattern.matches(rule28, useOrgCode);
// 客1LS0013
String rule29 = "^[\\u4e00-\\u9fa5]{1}[0-9]{1}[A-Z]{1,2}[0-9]{4}$";
boolean flage29 = Pattern.matches(rule29, 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;
}
......@@ -981,9 +1108,13 @@ public class DataDockServiceImpl {
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(JSON.parseObject(JSON.toJSONString(equ), Map.class), "jg_his", remark))).toArray(CompletableFuture[]::new)).join();
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);
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