Commit 9fd8a6da authored by 刘林's avatar 刘林

fix(jg):西安电梯历史数据导入接口修改

parent b4fe5270
...@@ -49,5 +49,25 @@ public class XiAnDataDockController { ...@@ -49,5 +49,25 @@ public class XiAnDataDockController {
} }
return xiAnDataDockService.importEquipmentData(file); return xiAnDataDockService.importEquipmentData(file);
} }
/**
* 西安电梯历史设备以及业务数据批量导入
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/importElevatorData")
@ApiOperation(httpMethod = "POST", value = "西安电梯历史设备以及业务数据批量导入", notes = "西安电梯历史设备以及业务数据批量导入")
public Object importElevatorData(@RequestParam MultipartFile file) {
if (file.isEmpty()) {
return ResponseHelper.buildResponse("文件不能为空");
}
String contentType = file.getContentType();
String fileExtension = FilenameUtils.getExtension(file.getOriginalFilename());
if (!("application/vnd.ms-excel".equals(contentType) ||
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet".equals(contentType)) ||
!("xls".equalsIgnoreCase(fileExtension) || "xlsx".equalsIgnoreCase(fileExtension))) {
return ResponseHelper.buildResponse("文件类型必须是 Excel 文件");
}
return xiAnDataDockService.importElevatorData(file);
}
} }
...@@ -75,6 +75,12 @@ public class DictParamsConverter implements Converter<String> { ...@@ -75,6 +75,12 @@ public class DictParamsConverter implements Converter<String> {
dictMap.put("液化天然气", "LIQUEFIED_NATURAL_GAS"); dictMap.put("液化天然气", "LIQUEFIED_NATURAL_GAS");
dictMap.put("液化石油气", "LIQUEFIED_PETROLEUM_GAS"); dictMap.put("液化石油气", "LIQUEFIED_PETROLEUM_GAS");
dictMap.put("氢气", "HYDROGEN"); dictMap.put("氢气", "HYDROGEN");
dictMap.put("集选", "1");
dictMap.put("并联", "2");
dictMap.put("按钮", "3");
dictMap.put("其他控制方式", "4");
dictMap.put("直接顶升", "1");
dictMap.put("间接顶升", "2");
} }
@Override @Override
......
...@@ -9,9 +9,7 @@ import io.swagger.annotations.ApiModel; ...@@ -9,9 +9,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
...@@ -24,12 +22,10 @@ public class XiAnElevatorExcelDto extends BaseDto { ...@@ -24,12 +22,10 @@ public class XiAnElevatorExcelDto extends BaseDto {
//----------------------------------------------------------------------基本信息 //----------------------------------------------------------------------基本信息
@ApiModelProperty(value = "设备种类") @ApiModelProperty(value = "设备种类")
@ExcelProperty(value = "设备种类", converter = EquListConverter.class) @ExcelProperty(value = "设备种类", converter = EquListConverter.class)
@NotBlank(message = "设备种类不能为空")
private String equList; private String equList;
@ApiModelProperty(value = "设备类别") @ApiModelProperty(value = "设备类别")
@ExcelProperty(value = "设备类别", converter = EquCategoryConverter.class) @ExcelProperty(value = "设备类别", converter = EquCategoryConverter.class)
@NotBlank(message = "设备类别不能为空")
private String equCategory; private String equCategory;
@ApiModelProperty(value = "设备品种") @ApiModelProperty(value = "设备品种")
...@@ -46,7 +42,6 @@ public class XiAnElevatorExcelDto extends BaseDto { ...@@ -46,7 +42,6 @@ public class XiAnElevatorExcelDto extends BaseDto {
@ApiModelProperty(value = "设备型号") @ApiModelProperty(value = "设备型号")
@ExcelProperty(value = "设备型号") @ExcelProperty(value = "设备型号")
@NotBlank(message = "设备型号不能为空")
private String equType; private String equType;
@ApiModelProperty(value = "设备总价值(万元)") @ApiModelProperty(value = "设备总价值(万元)")
...@@ -55,7 +50,6 @@ public class XiAnElevatorExcelDto extends BaseDto { ...@@ -55,7 +50,6 @@ public class XiAnElevatorExcelDto extends BaseDto {
@ApiModelProperty(value = "有无设备代码") @ApiModelProperty(value = "有无设备代码")
@ExcelProperty(value = "有无设备代码", converter = EquCodeTypeConverter.class) @ExcelProperty(value = "有无设备代码", converter = EquCodeTypeConverter.class)
@NotBlank(message = "有无设备代码不能为空")
private String equCodeType; private String equCodeType;
@ApiModelProperty(value = "设备代码") @ApiModelProperty(value = "设备代码")
...@@ -77,20 +71,18 @@ public class XiAnElevatorExcelDto extends BaseDto { ...@@ -77,20 +71,18 @@ public class XiAnElevatorExcelDto extends BaseDto {
//-----------------------------------------------------------------------使用信息 //-----------------------------------------------------------------------使用信息
@ApiModelProperty(value = "使用单位统一社会信用代码") @ApiModelProperty(value = "使用单位统一社会信用代码")
@ExcelProperty(value = "使用单位统一社会信用代码") @ExcelProperty(value = "使用单位统一社会信用代码")
@NotBlank(message = "使用单位统一社会信用代码不能为空")
private String useUnitCode; private String useUnitCode;
@ApiModelProperty(value = "使用单位名称") @ApiModelProperty(value = "使用单位名称")
@ExcelProperty(value = "使用单位名称") @ExcelProperty(value = "使用单位名称")
@NotBlank(message = "使用单位名称不能为空")
private String useUnit; private String useUnit;
@ApiModelProperty(value = "产权单位统一信用代码") @ApiModelProperty(value = "产权单位社会信用代码")
@ExcelProperty(value = "产权单位统一信用代码") @ExcelProperty(value = "产权单位社会信用代码")
private String estateUnitCreditCode; private String estateUnitCreditCode;
@ApiModelProperty(value = "产权单位统一信用代码") @ApiModelProperty(value = "产权单位名称")
@ExcelProperty(value = "产权单位统一信用代码") @ExcelProperty(value = "产权单位名称")
private String estateUnitName; private String estateUnitName;
@ApiModelProperty(value = "使用地点-省") @ApiModelProperty(value = "使用地点-省")
...@@ -118,6 +110,7 @@ public class XiAnElevatorExcelDto extends BaseDto { ...@@ -118,6 +110,7 @@ public class XiAnElevatorExcelDto extends BaseDto {
private String longitudeLatitude; private String longitudeLatitude;
@ApiModelProperty(value = "使用场所") @ApiModelProperty(value = "使用场所")
@ExcelProperty(value = "使用场所")
private String usePlace; private String usePlace;
@ApiModelProperty(value = "安全管理员") @ApiModelProperty(value = "安全管理员")
...@@ -136,22 +129,18 @@ public class XiAnElevatorExcelDto extends BaseDto { ...@@ -136,22 +129,18 @@ public class XiAnElevatorExcelDto extends BaseDto {
@ApiModelProperty(value = "制造单位统一社会信用代码") @ApiModelProperty(value = "制造单位统一社会信用代码")
@ExcelProperty(value = "制造单位统一社会信用代码") @ExcelProperty(value = "制造单位统一社会信用代码")
@NotBlank(message = "制造单位统一社会信用代码不能为空")
private String produceUnitCreditCode; private String produceUnitCreditCode;
@ApiModelProperty(value = "制造单位名称") @ApiModelProperty(value = "制造单位名称")
@ExcelProperty(value = "制造单位名称") @ExcelProperty(value = "制造单位名称")
@NotBlank(message = "制造单位名称不能为空")
private String produceUnitName; private String produceUnitName;
@ApiModelProperty(value = "制造许可编号") @ApiModelProperty(value = "制造许可编号")
@ExcelProperty(value = "制造许可编号") @ExcelProperty(value = "制造许可编号")
@NotBlank(message = "制造许可编号不能为空")
private String produceLicenseNum; private String produceLicenseNum;
@ApiModelProperty(value = "出厂编号/产品编码") @ApiModelProperty(value = "出厂编号/产品编码")
@ExcelProperty(value = "出厂编号/产品编码") @ExcelProperty(value = "出厂编号/产品编码")
@NotBlank(message = "出厂编号/产品编码不能为空")
private String factoryNum; private String factoryNum;
@ApiModelProperty(value = "制造日期") @ApiModelProperty(value = "制造日期")
...@@ -169,8 +158,8 @@ public class XiAnElevatorExcelDto extends BaseDto { ...@@ -169,8 +158,8 @@ public class XiAnElevatorExcelDto extends BaseDto {
//---------------------------------------------------------------安装信息 //---------------------------------------------------------------安装信息
@ApiModelProperty(value = "安装单位名称") @ApiModelProperty(value = "安装单位")
@ExcelProperty(value = "安装单位名称") @ExcelProperty(value = "安装单位")
private String installUnitName; private String installUnitName;
@ApiModelProperty(value = "安装单位统一信用代码") @ApiModelProperty(value = "安装单位统一信用代码")
...@@ -181,8 +170,8 @@ public class XiAnElevatorExcelDto extends BaseDto { ...@@ -181,8 +170,8 @@ public class XiAnElevatorExcelDto extends BaseDto {
@ExcelProperty(value = "安装负责人") @ExcelProperty(value = "安装负责人")
private String installLeaderName; private String installLeaderName;
@ApiModelProperty(value = "安装负责人手机") @ApiModelProperty(value = "安装负责人联系电话")
@ExcelProperty(value = "安装负责人手机") @ExcelProperty(value = "安装负责人联系电话")
private String installLeaderPhone; private String installLeaderPhone;
@ApiModelProperty(value = "安装负责人身份证号") @ApiModelProperty(value = "安装负责人身份证号")
...@@ -192,7 +181,7 @@ public class XiAnElevatorExcelDto extends BaseDto { ...@@ -192,7 +181,7 @@ public class XiAnElevatorExcelDto extends BaseDto {
@ApiModelProperty(value = "安装日期") @ApiModelProperty(value = "安装日期")
@ExcelProperty(value = "安装日期") @ExcelProperty(value = "安装日期")
@DateTimeFormat("yyyy-MM-dd") @DateTimeFormat("yyyy-MM-dd")
private Date noticeDate; private String installStartDate;
//--------------------------------------------------------------------检验信息 //--------------------------------------------------------------------检验信息
...@@ -204,21 +193,23 @@ public class XiAnElevatorExcelDto extends BaseDto { ...@@ -204,21 +193,23 @@ public class XiAnElevatorExcelDto extends BaseDto {
@ExcelProperty(value = "检验机构统一信用代码") @ExcelProperty(value = "检验机构统一信用代码")
private String inspectOrgCode; private String inspectOrgCode;
@ApiModelProperty(value = "检验机构统一信用代码") @ApiModelProperty(value = "检验类型")
@ExcelProperty(value = "检验类型")
private String inspectType; private String inspectType;
@ApiModelProperty(value = "检验结论") @ApiModelProperty(value = "检验结论")
@ExcelProperty(value = "检验结论")
private String inspectConclusion; private String inspectConclusion;
@ApiModelProperty(value = "检验日期") @ApiModelProperty(value = "检验日期")
@ExcelProperty(value = "检验日期") @ExcelProperty(value = "检验日期")
@DateTimeFormat("yyyy-MM-dd") @DateTimeFormat("yyyy-MM-dd")
private Date inspectDate; private String inspectDate;
@ApiModelProperty(value = "下次检验日期") @ApiModelProperty(value = "下次检验日期")
@ExcelProperty(value = "下次检验日期") @ExcelProperty(value = "下次检验日期")
@DateTimeFormat("yyyy-MM-dd") @DateTimeFormat("yyyy-MM-dd")
private Date nextInspectDate; private String nextInspectDate;
@ApiModelProperty(value = "检验人员名称") @ApiModelProperty(value = "检验人员名称")
@ExcelProperty(value = "检验人员名称") @ExcelProperty(value = "检验人员名称")
...@@ -276,24 +267,24 @@ public class XiAnElevatorExcelDto extends BaseDto { ...@@ -276,24 +267,24 @@ public class XiAnElevatorExcelDto extends BaseDto {
private String meMaster1Phone; private String meMaster1Phone;
//--------------------------------------------------------------------电梯索道----技术参数 //--------------------------------------------------------------------电梯索道----技术参数
@ApiModelProperty(value = "额定速度") @ApiModelProperty(value = "额定速度(m/s)")
@ExcelProperty(value = "额定速度") @ExcelProperty(value = "额定速度(m/s)")
private BigDecimal ratedSpeed; private BigDecimal ratedSpeed;
@ApiModelProperty(value = "额定速度(上行)") @ApiModelProperty(value = "额定速度(上行)(m/s)")
@ExcelProperty(value = "额定速度(上行)") @ExcelProperty(value = "额定速度(上行)(m/s)")
private BigDecimal ratedSpeedUp; private BigDecimal ratedSpeedUp;
@ApiModelProperty(value = "额定速度(下行)") @ApiModelProperty(value = "额定速度(下行)(m/s)")
@ExcelProperty(value = "额定速度(下行)") @ExcelProperty(value = "额定速度(下行)(m/s)")
private BigDecimal ratedSpeedDown; private BigDecimal ratedSpeedDown;
@ApiModelProperty(value = "提升高度(m)") @ApiModelProperty(value = "提升高度(m)")
@ExcelProperty(value = "提升高度(m)") @ExcelProperty(value = "提升高度(m)")
private BigDecimal liftingHeight; private BigDecimal liftingHeight;
@ApiModelProperty(value = "额定载重量") @ApiModelProperty(value = "额定载重量(kg)")
@ExcelProperty(value = "额定载重量") @ExcelProperty(value = "额定载重量(kg)")
private BigDecimal ratedLoadCapacity; private BigDecimal ratedLoadCapacity;
@ApiModelProperty(value = "层数(层)") @ApiModelProperty(value = "层数(层)")
...@@ -336,16 +327,16 @@ public class XiAnElevatorExcelDto extends BaseDto { ...@@ -336,16 +327,16 @@ public class XiAnElevatorExcelDto extends BaseDto {
@ExcelProperty(value = "油缸数量") @ExcelProperty(value = "油缸数量")
private Integer numberCylinders; private Integer numberCylinders;
@ApiModelProperty(value = "顶升式") @ApiModelProperty(value = "顶升式")
@ExcelProperty(value = "顶升式", converter = DictParamsConverter.class) @ExcelProperty(value = "顶升式", converter = DictParamsConverter.class)
private String jackingType; private String jackingType;
@ApiModelProperty(value = "整机防爆标志") @ApiModelProperty(value = "整机防爆标志")
@ExcelProperty(value = "整机防爆标志") @ExcelProperty(value = "整机防爆标志")
private String explosionproofSignComplete; private String explosionproofSignComplete;
@ApiModelProperty(value = "防爆等级") @ApiModelProperty(value = "区域防爆等级")
@ExcelProperty(value = "防爆等级", converter = DictParamsConverter.class) @ExcelProperty(value = "区域防爆等级", converter = DictParamsConverter.class)
private String explosionproofGrade; private String explosionproofGrade;
@ApiModelProperty(value = "轿门位置") @ApiModelProperty(value = "轿门位置")
...@@ -363,4 +354,34 @@ public class XiAnElevatorExcelDto extends BaseDto { ...@@ -363,4 +354,34 @@ public class XiAnElevatorExcelDto extends BaseDto {
@ApiModelProperty(value = "资料是否齐全(0齐全, 1不齐全)-西安数据导入") @ApiModelProperty(value = "资料是否齐全(0齐全, 1不齐全)-西安数据导入")
@ExcelIgnore @ExcelIgnore
private Integer isCompleteXa; private Integer isCompleteXa;
@ApiModelProperty(value = "监管履历主键")
@ExcelProperty(value = "监管履历主键")
private String resumeSeq;
@ApiModelProperty(value = "业务类型")
@ExcelProperty(value = "业务类型")
private String businessType;
@ApiModelProperty(value = "创建时间")
@ExcelProperty(value = "创建时间")
@DateTimeFormat("yyyy-MM-dd")
private String createDate;
@ApiModelProperty(value = "创建人名称")
@ExcelProperty(value = "创建人名称")
private String createUserName;
@ApiModelProperty(value = "业务单号")
@ExcelProperty(value = "业务单号")
private String businessId;
@ApiModelProperty(value = "审批单位")
@ExcelProperty(value = "审批单位")
private String approvalUnit;
@ApiModelProperty(value = "审批通过时间")
@ExcelProperty(value = "审批通过时间")
@DateTimeFormat("yyyy-MM-dd")
private String approvalDate;
} }
\ No newline at end of file
package com.yeejoin.amos.api.openapi.feign; package com.yeejoin.amos.api.openapi.feign;
import com.yeejoin.amos.api.openapi.dto.XiAnElevatorExcelDto;
import com.yeejoin.amos.api.openapi.dto.XiAnEquipInfoExcelDto; import com.yeejoin.amos.api.openapi.dto.XiAnEquipInfoExcelDto;
import com.yeejoin.amos.boot.biz.common.feign.FeignConfiguration; import com.yeejoin.amos.boot.biz.common.feign.FeignConfiguration;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -105,4 +106,13 @@ public interface TzsJgServiceFeignClient { ...@@ -105,4 +106,13 @@ public interface TzsJgServiceFeignClient {
*/ */
@RequestMapping(value = "/common/checkFactoryNumUniquenessForVehicleCylinder", method = RequestMethod.GET) @RequestMapping(value = "/common/checkFactoryNumUniquenessForVehicleCylinder", method = RequestMethod.GET)
Integer checkFactoryNumUniquenessForVehicleCylinder(@RequestParam("factoryNum") String factoryNum); Integer checkFactoryNumUniquenessForVehicleCylinder(@RequestParam("factoryNum") String factoryNum);
/**
* 批量保存西安电梯上传的历史数据
*
* @param elevatorExcelDtos 西安电梯上传的历史数据
* @return
*/
@RequestMapping(value = "/dataDock/xi-an/saveElevatorData", method = RequestMethod.POST)
Object saveElevatorData(@RequestBody List<XiAnElevatorExcelDto> elevatorExcelDtos);
} }
...@@ -8,6 +8,7 @@ import com.alibaba.excel.read.metadata.ReadSheet; ...@@ -8,6 +8,7 @@ import com.alibaba.excel.read.metadata.ReadSheet;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder; import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.yeejoin.amos.api.common.restful.utils.ResponseHelper; import com.yeejoin.amos.api.common.restful.utils.ResponseHelper;
import com.yeejoin.amos.api.openapi.dto.XiAnElevatorExcelDto;
import com.yeejoin.amos.api.openapi.dto.XiAnEquipInfoExcelDto; import com.yeejoin.amos.api.openapi.dto.XiAnEquipInfoExcelDto;
import com.yeejoin.amos.api.openapi.feign.TzsJgServiceFeignClient; import com.yeejoin.amos.api.openapi.feign.TzsJgServiceFeignClient;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -312,7 +313,7 @@ public class XiAnDataDockServiceImpl { ...@@ -312,7 +313,7 @@ public class XiAnDataDockServiceImpl {
data.setEquCodeType("2"); data.setEquCodeType("2");
data.setEquCode(""); data.setEquCode("");
} }
if (this.checkEquCodeUniqueness(data.getEquCode())){ if (this.checkEquCodeUniqueness(data.getEquCode())) {
data.setOriginalEquCode(data.getEquCode()); data.setOriginalEquCode(data.getEquCode());
data.setEquCodeType("2"); data.setEquCodeType("2");
data.setEquCode(""); data.setEquCode("");
...@@ -545,4 +546,241 @@ public class XiAnDataDockServiceImpl { ...@@ -545,4 +546,241 @@ public class XiAnDataDockServiceImpl {
private void KYSDTechnicalParamsCheck(XiAnEquipInfoExcelDto data, StringBuffer rowError) { private void KYSDTechnicalParamsCheck(XiAnEquipInfoExcelDto data, StringBuffer rowError) {
} }
public Object importElevatorData(MultipartFile file) {
List<XiAnElevatorExcelDto> elevatorExcelDtos;
try {
elevatorExcelDtos = this.dataHandlerElevator(file);
} catch (Exception e) {
return ResponseHelper.buildFailureResponse(e.getMessage(), "参数校验失败,详细请看返回信息", HttpStatus.BAD_REQUEST);
}
this.batchSaveElevatorData(elevatorExcelDtos);
return ResponseHelper.buildResponse("设备保存成功!");
}
/**
* excel 文件读取,字段校验
*
* @param file excel 文件
* @return 设备数据
* @throws Exception 异常信息
*/
public List<XiAnElevatorExcelDto> dataHandlerElevator(MultipartFile file) {
List<XiAnElevatorExcelDto> dataList = new ArrayList<>();
resultError.clear();
useInnerCodeList.clear();
equCodeList.clear();
factoryNumList.clear();
try {
InputStream inputStream = file.getInputStream();
ExcelReader excelReader = EasyExcel.read(inputStream).build();
List<ReadSheet> sheetList = excelReader.excelExecutor().sheetList();
for (ReadSheet readSheet : sheetList) {
String sheetName = readSheet.getSheetName();
int sheetNo = readSheet.getSheetNo();
// 忽略填充设备种类类别品种的三级联动sheet页
if (sheetName.contains("忽略")) {
continue;
}
Map<String, Object> sheetError = new HashMap<>();
EasyExcel.read(file.getInputStream(), XiAnElevatorExcelDto.class, new AnalysisEventListener<XiAnElevatorExcelDto>() {
@Override
public void invoke(XiAnElevatorExcelDto data, AnalysisContext context) {
checkElevatorExcelData(sheetName, data, context, sheetError);
useInnerCodeList.add(data.getUseInnerCode());
equCodeList.add(data.getEquCode());
dataList.add(data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
if (!ValidationUtil.isEmpty(sheetError)) {
resultError.put(String.format("%s sheet页", sheetName), sheetError);
}
}
}).headRowNumber(4).sheet(sheetNo, sheetName).doRead();
}
excelReader.finish();
if (CollectionUtils.isEmpty(dataList)) {
resultError.put("allSheet", "你上传了一个空数据的Excel文档!");
throw new BadRequest("你上传了一个空数据的Excel文档!");
}
if (!ValidationUtil.isEmpty(resultError)) {
throw new BadRequest(JSON.toJSONString(resultError));
}
return dataList;
} catch (Exception e) {
throw new BadRequest(e.getMessage());
}
}
/**
* excel数据字段校验
*
* @param sheetName sheet页名称
* @param data excel数据
* @param context
*/
public void checkElevatorExcelData(String sheetName, XiAnElevatorExcelDto data, AnalysisContext context, Map<String, Object> sheetError) {
ReadRowHolder readRowHolder = context.readRowHolder();
int rowIndex = readRowHolder.getRowIndex() + 1;
StringBuffer rowError = new StringBuffer();
try {
log.info("解析第{}行数据:{}", rowIndex, JSON.toJSONString(data));
if (data.getEquList() != null && !data.getEquList().isEmpty()) {
checkCommonInfo(data, rowError);
} else {
checkResumeInfo(data, rowError);
}
// data.setIsCompleteXa(this.checkIsComplete(data) ? 0 : 1);
if (!StringUtils.isBlank(rowError)) {
sheetError.put(String.format(excelErrorStr, rowIndex), rowError);
}
} catch (Exception e) {
log.error(String.format("sheet页:[%s] -> 对应行索引数: [%s] -> 失败的 Excel 数据: [%s]", sheetName, rowIndex, JSON.toJSONString(data)), e);
throw e;
}
}
private void checkResumeInfo(XiAnElevatorExcelDto data, StringBuffer rowError) {
checkNotBlank(data.getResumeSeq(), "监管履历主键不能为空;", rowError);
checkNotBlank(data.getBusinessType(), "业务类型不能为空;", rowError);
checkNotBlank(data.getCreateDate(), "创建时间不能为空;", rowError);
Optional.ofNullable(data.getCreateDate()).ifPresent(v -> checkDateFormatCorrect(v, "创建时间格式不正确;", rowError));
checkNotBlank(data.getCreateUserName(), "创建人名称不能为空;", rowError);
checkNotBlank(data.getBusinessId(), "业务单号不能为空;", rowError);
checkNotBlank(data.getApprovalUnit(), "审批单位不能为空;", rowError);
checkNotBlank(data.getApprovalDate(), "审批通过时间不能为空;", rowError);
Optional.ofNullable(data.getApprovalDate()).ifPresent(v -> checkDateFormatCorrect(v, "审批通过时间格式不正确;", rowError));
}
private void checkCommonInfo(XiAnElevatorExcelDto data, StringBuffer rowError) {
// 基本信息
checkNotBlank(data.getEquList(), "设备种类不能为空;", rowError);
checkNotBlank(data.getEquCategory(), "设备类别不能为空;", rowError);
checkNotBlank(data.getEquDefine(), "设备品种不能为空;", rowError);
checkNotBlank(data.getUseInnerCode(), "单位内编号不能为空;", rowError);
if (useInnerCodeList.contains(data.getUseInnerCode())) {
rowError.append("单位内编号不能重复;");
}
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 (equCode.length() >= 20) {
rowError.append("设备代码不能大于20位;");
}
} else {
rowError.append("设备代码不能包含特殊字符;");
}
if (equCodeList.contains(data.getEquCode())) {
data.setOriginalEquCode(data.getEquCode());
data.setEquCodeType("2");
data.setEquCode("");
}
if (this.checkEquCodeUniqueness(data.getEquCode())) {
data.setOriginalEquCode(data.getEquCode());
data.setEquCodeType("2");
data.setEquCode("");
}
} else {
data.setEquCode("");
}
checkNotBlank(data.getCode96333(), "96333码不能为空;", rowError);
checkNotBlank(data.getUseOrgCode(), "使用登记证编号不能为空;", rowError);
checkNotBlank(data.getRecord(), "注册代码不能为空;", rowError);
// 使用信息
checkNotBlank(data.getUseUnitCode(), "使用单位统一社会信用代码不能为空;", rowError);
Optional.ofNullable(data.getUseUnitCode()).ifPresent(v -> checkCreditCode(v, "使用单位统一社会信用代码格式不正确;", rowError));
checkNotBlank(data.getUseUnit(), "使用单位名称不能为空;", rowError);
checkNotBlank(data.getProvinceName(), "使用地点-省不能为空;", rowError);
checkNotBlank(data.getCityName(), "使用地点-市不能为空;", rowError);
checkNotBlank(data.getCountyName(), "使用地点-区/县不能为空;", rowError);
checkNotBlank(data.getFactoryUseSiteStreet(), "使用地点-街道不能为空;", rowError);
checkNotBlank(data.getAddress(), "详细地址不能为空;", rowError);
checkNotBlank(data.getUsePlace(), "使用场所不能为空;", rowError);
checkNotBlank(data.getEstateUnitName(), "产权单位名称不能为空;", rowError);
checkNotBlank(data.getEstateUnitCreditCode(), "产权单位社会信用代码不能为空;", rowError);
Optional.ofNullable(data.getEstateUnitCreditCode()).ifPresent(v -> checkCreditCode(v, "产权单位社会信用代码格式不正确;", rowError));
checkNotBlank(data.getSafetyManager(), "安全管理员不能为空;", rowError);
checkNotBlank(data.getPhone(), "安全管理员联系电话不能为空;", rowError);
// 制造信息
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);
Optional.ofNullable(data.getProduceDate()).ifPresent(v -> checkDateFormatCorrect(v, "制造日期格式不正确;", rowError));
// 安装信息
checkNotBlank(data.getInstallUnitCreditCode(), "安装单位统一信用代码不能为空;", rowError);
Optional.ofNullable(data.getInstallUnitCreditCode()).ifPresent(v -> checkCreditCode(v, "安装单位统一信用代码格式不正确;", rowError));
checkNotBlank(data.getInstallUnitName(), "安装单位名称不能为空;", rowError);
Optional.ofNullable(data.getInstallStartDate()).ifPresent(v -> checkDateFormatCorrect(v, "安装日期格式不正确;", rowError));
checkNotBlank(data.getInstallLeaderName(), "安装负责人不能为空;", rowError);
checkNotBlank(data.getInstallLeaderPhone(), "安装负责人联系电话不能为空;", rowError);
// 检验监测信息
checkNotBlank(data.getInspectOrgCode(), "检验机构统一信用代码不能为空;", rowError);
Optional.ofNullable(data.getInspectOrgCode()).ifPresent(v -> checkCreditCode(v, "检验机构统一信用代码格式不正确;", rowError));
checkNotBlank(data.getInspectOrgName(), "检验机构名称不能为空;", rowError);
checkNotBlank(data.getInspectConclusion(), "检验结论不能为空;", rowError);
checkNotBlank(data.getInspectType(), "检验类型不能为空;", rowError);
checkNotBlank(data.getInspectStaff(), "检验人员名称不能为空;", rowError);
checkNotBlank(data.getInspectDate(), "检验日期不能为空;", rowError);
Optional.ofNullable(data.getInspectDate()).ifPresent(v -> checkDateFormatCorrect(v, "检验日期格式不正确;", rowError));
checkNotBlank(data.getNextInspectDate(), "下次检验日期不能为空;", rowError);
Optional.ofNullable(data.getNextInspectDate()).ifPresent(v -> checkDateFormatCorrect(v, "下次检验日期格式不正确;", rowError));
// 维保信息
checkNotBlank(data.getMeUnitCreditCode(), "维保单位统一信用代码不能为空;", rowError);
Optional.ofNullable(data.getMeUnitCreditCode()).ifPresent(v -> checkCreditCode(v, "维保单位统一信用代码格式不正确;", rowError));
checkNotBlank(data.getMeUnitName(), "维保单位不能为空;", rowError);
checkNotBlank(data.getInformStart(), "维保合同开始时间不能为空;", rowError);
Optional.ofNullable(data.getInformStart()).ifPresent(v -> checkDateFormatCorrect(v, "维保合同开始时间格式不正确;", rowError));
checkNotBlank(data.getInformEnd(), "维保合同结束时间不能为空;", rowError);
Optional.ofNullable(data.getInformEnd()).ifPresent(v -> checkDateFormatCorrect(v, "维保合同结束时间格式不正确;", rowError));
checkNotBlank(data.getMeMaster(), "维保人员一名称不能为空;", rowError);
checkNotBlank(data.getMeMasterId(), "维保人员一身份证号不能为空;", rowError);
checkNotBlank(data.getMeMasterPhone(), "维保人员一联系方式不能为空;", rowError);
}
/**
* 批量异步保存设备数据
*
* @param elevatorExcelDtos
*/
public void batchSaveElevatorData(List<XiAnElevatorExcelDto> elevatorExcelDtos) {
log.info("解析成功,准备上传数据,条数:{}", elevatorExcelDtos.size());
int batchSize = 1000;
int totalSize = elevatorExcelDtos.size();
// 主线程中获取登录信息传递到异步线程中
String appKey = RequestContext.getAppKey();
String product = RequestContext.getProduct();
String token = RequestContext.getToken();
List<CompletableFuture<Void>> futures = new ArrayList<>();
for (int i = 0; i < totalSize; i += batchSize) {
List<XiAnElevatorExcelDto> batch = elevatorExcelDtos.subList(i, Math.min(totalSize, i + batchSize));
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
try {
RequestContext.setAppKey(appKey);
RequestContext.setProduct(product);
RequestContext.setToken(token);
jgServiceFeignClient.saveElevatorData(batch);
} catch (Exception e) {
log.error("西安数据上传,保存数据失败: ", e);
}
}, executorService);
futures.add(future);
}
// 等待所有异步任务完成
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
}
} }
...@@ -92,5 +92,17 @@ public class DataDockController { ...@@ -92,5 +92,17 @@ public class DataDockController {
return ResponseHelper.buildResponse(dataDockService.checkGDData(multipartFile, false)); return ResponseHelper.buildResponse(dataDockService.checkGDData(multipartFile, false));
} }
/**
* 西安电梯历史设备以及业务数据批量导入
*
* @param equLists 电梯历史设备以及业务数据
* @return result
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/xi-an/saveElevatorData")
@ApiOperation(httpMethod = "POST", value = "西安电梯历史设备以及业务数据批量导入", notes = "西安电梯历史设备以及业务数据批量导入")
public ResponseModel<?> saveElevatorData(@RequestBody List<Map<String, Object>> equLists) {
return ResponseHelper.buildResponse(dataDockService.saveElevatorData(equLists));
}
} }
package com.yeejoin.amos.boot.module.jg.biz.service.impl; package com.yeejoin.amos.boot.module.jg.biz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
...@@ -12,8 +13,10 @@ import com.alibaba.fastjson.JSON; ...@@ -12,8 +13,10 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.utils.DateUtils;
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.biz.common.utils.SnowflakeIdUtil;
...@@ -25,16 +28,23 @@ import com.yeejoin.amos.boot.module.jg.api.converter.EquDefineConverter; ...@@ -25,16 +28,23 @@ import com.yeejoin.amos.boot.module.jg.api.converter.EquDefineConverter;
import com.yeejoin.amos.boot.module.jg.api.dto.*; import com.yeejoin.amos.boot.module.jg.api.dto.*;
import com.yeejoin.amos.boot.module.jg.api.entity.*; import com.yeejoin.amos.boot.module.jg.api.entity.*;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum; import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.api.enums.CertificateStatusEnum;
import com.yeejoin.amos.boot.module.jg.api.mapper.CommonMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationEqMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationMapper; import com.yeejoin.amos.boot.module.jg.api.mapper.JgUseRegistrationMapper;
import com.yeejoin.amos.boot.module.jg.api.mapper.JgVehicleInformationMapper;
import com.yeejoin.amos.boot.module.jg.biz.config.LocalBadRequest;
import com.yeejoin.amos.boot.module.jg.biz.context.EquipUsedCheckStrategyContext;
import com.yeejoin.amos.boot.module.jg.biz.context.FlowingEquipRedisContext;
import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient; import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.service.*; import com.yeejoin.amos.boot.module.jg.biz.service.*;
import com.yeejoin.amos.boot.module.jg.biz.utils.CodeUtil;
import com.yeejoin.amos.boot.module.ymt.api.entity.*; 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.ApplicationFormTypeEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.EquimentEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.EquipmentClassifityEnum;
import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum; import com.yeejoin.amos.boot.module.ymt.api.enums.FlowStatusEnum;
import com.yeejoin.amos.boot.module.ymt.api.mapper.CategoryOtherInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.*;
import com.yeejoin.amos.boot.module.ymt.api.mapper.TzBaseEnterpriseInfoMapper;
import com.yeejoin.amos.feign.privilege.Privilege; import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel; import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel; import com.yeejoin.amos.feign.privilege.model.CompanyModel;
...@@ -55,6 +65,7 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest; ...@@ -55,6 +65,7 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.io.InputStream; import java.io.InputStream;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
...@@ -99,7 +110,15 @@ public class DataDockServiceImpl { ...@@ -99,7 +110,15 @@ public class DataDockServiceImpl {
private final JgRegistrationHistoryServiceImpl jgRegistrationHistoryService; private final JgRegistrationHistoryServiceImpl jgRegistrationHistoryService;
private final JgCertificateChangeRecordServiceImpl certificateChangeRecordService; private final JgCertificateChangeRecordServiceImpl certificateChangeRecordService;
private final JgCertificateChangeRecordEqServiceImpl certificateChangeRecordEqService; private final JgCertificateChangeRecordEqServiceImpl certificateChangeRecordEqService;
private final InspectionDetectionInfoMapper inspectionDetectionInfoMapper;
private final IdxBizJgRegisterInfoServiceImpl idxBizJgRegisterInfoService;
private final JgUseRegistrationEqMapper jgRelationEquipMapper;
private final IdxBizJgOtherInfoMapper otherInfoMapper;
private final ProduceInfoMapper produceInfoMapper;
private final CodeUtil codeUtil;
private final CommonMapper commonMapper;
private final JgResumeInfoServiceImpl jgResumeInfoService;
private final IdxBizJgMaintenanceRecordInfoServiceImpl idxBizJgMaintenanceRecordInfoService;
private final Map<String, Object> resultError = new HashMap<>(); private final Map<String, Object> resultError = new HashMap<>();
private final JgUseRegistrationMapper jgUseRegistrationMapper; private final JgUseRegistrationMapper jgUseRegistrationMapper;
List<String> useInnerCodeList = new ArrayList<>();// 单位内部编号集合 List<String> useInnerCodeList = new ArrayList<>();// 单位内部编号集合
...@@ -107,6 +126,8 @@ public class DataDockServiceImpl { ...@@ -107,6 +126,8 @@ public class DataDockServiceImpl {
List<String> factoryNumList = new ArrayList<>();// 出厂编码集合 List<String> factoryNumList = new ArrayList<>();// 出厂编码集合
List<String> useOrgCodeList = new ArrayList<>();// 使用登记证集合 List<String> useOrgCodeList = new ArrayList<>();// 使用登记证集合
Map<String, List<String>> projectContraptionMap = new HashMap<>();// 工程装置名称集合 Map<String, List<String>> projectContraptionMap = new HashMap<>();// 工程装置名称集合
private static final String DEFINITION_KEY = "useRegistration";
private final JgVehicleInformationMapper jgVehicleInformationMapper;
/** /**
* 西安数据对接-保存设备信息 * 西安数据对接-保存设备信息
...@@ -168,7 +189,7 @@ public class DataDockServiceImpl { ...@@ -168,7 +189,7 @@ public class DataDockServiceImpl {
idxBizJgSupervisionInfoService.lambdaUpdate().set(IdxBizJgSupervisionInfo::getOrgBranchCode, "50*74*160*12478").set(IdxBizJgSupervisionInfo::getOrgBranchName, "交口河镇市场监管所").in(IdxBizJgSupervisionInfo::getRecord, records).update(); idxBizJgSupervisionInfoService.lambdaUpdate().set(IdxBizJgSupervisionInfo::getOrgBranchCode, "50*74*160*12478").set(IdxBizJgSupervisionInfo::getOrgBranchName, "交口河镇市场监管所").in(IdxBizJgSupervisionInfo::getRecord, records).update();
records.forEach(record -> { records.forEach(record -> {
esEquipmentCategory.deleteById(record); esEquipmentCategory.deleteById(record);
this.saveEquInfoToEs(record,"1"); this.saveEquInfoToEs(record, "1");
}); });
return records.size(); return records.size();
} }
...@@ -247,20 +268,17 @@ public class DataDockServiceImpl { ...@@ -247,20 +268,17 @@ public class DataDockServiceImpl {
log.error("数据===>{}", JSONObject.toJSONString(equ)); log.error("数据===>{}", JSONObject.toJSONString(equ));
IdxBizJgUseInfo useInfo = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgUseInfo.class); IdxBizJgUseInfo useInfo = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgUseInfo.class);
if (!ValidationUtil.isEmpty(useInfo)) { if (!ValidationUtil.isEmpty(useInfo)) {
TzBaseEnterpriseInfo enterpriseInfo = tzBaseEnterpriseInfoMapper.selectOne(new LambdaQueryWrapper<TzBaseEnterpriseInfo>() String provinceName = Objects.toString(equ.get("provinceName"),"陕西省");
.eq(TzBaseEnterpriseInfo::getUseUnitCode, String.valueOf(equ.get("useUnitCode")).trim()));
if (!ValidationUtil.isEmpty(enterpriseInfo)) {
String provinceName = enterpriseInfo.getProvince();
String provinceCode = "610000"; String provinceCode = "610000";
String cityName = enterpriseInfo.getCity(); String cityName = Objects.toString(equ.get("cityName"),"西安市");
String cityCode = ""; String cityCode = "";
if (!ValidationUtil.isEmpty(cityName)) { if (!ValidationUtil.isEmpty(cityName)) {
cityCode = getRegionCode(cityName, "CITY"); cityCode = getRegionCode(cityName, "CITY");
} }
String districtName = enterpriseInfo.getDistrict(); String districtName = Objects.toString(equ.get("countyName"),"");
String districtCode = ""; String districtCode = "";
if (!ValidationUtil.isEmpty(districtName)) { if (!ValidationUtil.isEmpty(districtName)) {
districtCode = getRegionCode(districtName, "COUNTY"); districtCode = getRegionCode(districtName, "REGION");
} }
useInfo.setProvince(provinceCode); useInfo.setProvince(provinceCode);
useInfo.setProvinceName(provinceName); useInfo.setProvinceName(provinceName);
...@@ -268,10 +286,15 @@ public class DataDockServiceImpl { ...@@ -268,10 +286,15 @@ public class DataDockServiceImpl {
useInfo.setCityName(cityName); useInfo.setCityName(cityName);
useInfo.setCounty(districtCode); useInfo.setCounty(districtCode);
useInfo.setCountyName(districtName); useInfo.setCountyName(districtName);
useInfo.setStreetName(enterpriseInfo.getStreet()); useInfo.setStreetName(Objects.toString(equ.get("factoryUseSiteStreet")));
if (ValidationUtil.isEmpty(enterpriseInfo.getLatitude()) && !ValidationUtil.isEmpty(enterpriseInfo.getLongitude())) { equ.put("province",useInfo.getProvince());
useInfo.setLongitudeLatitude(String.format("{\"latitude\":\"%s\",\"longitude\":\"%s\"}", enterpriseInfo.getLatitude(), enterpriseInfo.getLongitude())); equ.put("city",useInfo.getCity());
} equ.put("county",useInfo.getCounty());
if (!ValidationUtil.isEmpty(Objects.toString(equ.get("longitudeLatitude")))) {
String[] parts = Objects.toString(equ.get("longitudeLatitude"), "").split(",", -1);
String latitude = parts.length > 0 ? parts[0].trim() : "";
String longitude = parts.length > 1 ? parts[1].trim() : "";
useInfo.setLongitudeLatitude(String.format("{\"latitude\":\"%s\",\"longitude\":\"%s\"}", latitude, longitude));
} }
useInfo.setRecDate(new Date()); useInfo.setRecDate(new Date());
useInfo.setRecord(record); useInfo.setRecord(record);
...@@ -1548,7 +1571,7 @@ public class DataDockServiceImpl { ...@@ -1548,7 +1571,7 @@ public class DataDockServiceImpl {
// 生成使用登记表信息 + 设备关系表 + 历史表 // 生成使用登记表信息 + 设备关系表 + 历史表
JgUseRegistration useReg = this.saveUseRegAndEq(paramsDto, records, proCon); JgUseRegistration useReg = this.saveUseRegAndEq(paramsDto, records, proCon);
// 生成使用登记证表数据 // 生成使用登记证表数据
if (!haveUseRegistration){ if (!haveUseRegistration) {
JgUseRegistrationManage regManage = this.saveUseRegManage(paramsDto, useReg); JgUseRegistrationManage regManage = this.saveUseRegManage(paramsDto, useReg);
// 流水表 // 流水表
this.saveCertChangeRecord(useReg, regManage, records, paramsDto); this.saveCertChangeRecord(useReg, regManage, records, paramsDto);
...@@ -1558,7 +1581,7 @@ public class DataDockServiceImpl { ...@@ -1558,7 +1581,7 @@ public class DataDockServiceImpl {
.eq(JgUseRegistrationManage::getUseRegistrationCode, paramsDto.getUseOrgCode()) .eq(JgUseRegistrationManage::getUseRegistrationCode, paramsDto.getUseOrgCode())
.eq(JgUseRegistrationManage::getIsDelete, 0) .eq(JgUseRegistrationManage::getIsDelete, 0)
.one(); .one();
if(jgUseRegistrationManage != null) { if (jgUseRegistrationManage != null) {
jgUseRegistrationManage.setSuperviseOrgCode(paramsDto.getOrgBranchCode()); jgUseRegistrationManage.setSuperviseOrgCode(paramsDto.getOrgBranchCode());
jgUseRegistrationManage.setSuperviseOrgName(paramsDto.getOrgBranchName()); jgUseRegistrationManage.setSuperviseOrgName(paramsDto.getOrgBranchName());
jgUseRegistrationManage.setRecDate(new Date()); jgUseRegistrationManage.setRecDate(new Date());
...@@ -1600,6 +1623,13 @@ public class DataDockServiceImpl { ...@@ -1600,6 +1623,13 @@ public class DataDockServiceImpl {
"单号【" + useReg.getApplyNo() + "】,办理日期" + simpleDateFormat.format(new Date()); "单号【" + useReg.getApplyNo() + "】,办理日期" + simpleDateFormat.format(new Date());
} }
private String buildRecordContent(JgUseRegistration useReg, String businessName) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");
return useReg.getUseUnitName() + "的" + useReg.getCreateUserName() + "办理了【" + "历史设备登记" + "】," +
"单号【" + useReg.getApplyNo() + "】,办理日期" + simpleDateFormat.format(new Date());
}
/** /**
* 检查本单位是否存在使用登记证编号 + 不能是系统未生成的 * 检查本单位是否存在使用登记证编号 + 不能是系统未生成的
* *
...@@ -2114,4 +2144,408 @@ public class DataDockServiceImpl { ...@@ -2114,4 +2144,408 @@ public class DataDockServiceImpl {
System.out.println("Unsupported Object Type"); System.out.println("Unsupported Object Type");
} }
} }
/**
* 西安电梯历史设备以及业务数据批量导入
*
* @param equLists 数据集
* @return 保存结果
*/
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class)
public boolean saveElevatorData(List<Map<String, Object>> equLists) {
String appKey = RequestContext.getAppKey();
String product = RequestContext.getProduct();
String token = RequestContext.getToken();
String exeUserId = RequestContext.getExeUserId();
CompletableFuture.allOf(
equLists.parallelStream().map(equ -> CompletableFuture.runAsync(() -> {
RequestContext.setAppKey(appKey);
RequestContext.setProduct(product);
RequestContext.setToken(token);
RequestContext.setExeUserId(exeUserId);
saveElevatorDataInTransaction(equ, "jg_his_xa", null);
})).toArray(CompletableFuture[]::new)
).join();
return Boolean.TRUE;
}
@GlobalTransactional(rollbackFor = Exception.class)
public void saveElevatorDataInTransaction(Map<String, Object> equ, String dataSource, String remark) {
String record = Optional.ofNullable(equ.get("record")).map(String::valueOf).orElse(UUID.randomUUID().toString());
String equList = Optional.ofNullable(equ.get("equList")).map(String::valueOf).orElse("");
String isCompleteXa = Optional.ofNullable(equ.get("isCompleteXa")).map(String::valueOf).orElse("");
try {
if (!equList.isEmpty()) {
saveUseInfo(equ, record, dataSource, remark);
saveFactoryInfo(equ, record);
saveRegisterInfo(equ, record, equList);
saveSupervisionInfo(equ, record);
saveOtherInfo(equ, record, equList);
saveInspectInfo(equ, record);
saveTechParams(equ, record, equList);
saveEquInfoToEs(record, isCompleteXa);
this.saveInstallInfo(equ, record, equList);//安装信息
this.historyEquUpdateMaintenanceInfo(equ);//维保信息
this.handleHistoryEquip(equ);//历史登记
} else {
this.saveResumeInfo(equ);
}
} catch (Exception e) {
esEquipmentCategory.deleteById(record);
log.error("{}数据:保存时出现异常,对应数据:{}", dataSource, JSONObject.toJSONString(equ), e);
throw new RuntimeException("保存电梯数据失败", e);
}
}
private void saveResumeInfo(Map<String, Object> equ) {
JgResumeInfoDto resumeInfoDto = JSON.parseObject(JSON.toJSONString(equ), JgResumeInfoDto.class);
resumeInfoDto.setEquId(Objects.toString(equ.get("resumeSeq"), ""));
resumeInfoDto.setStatus("正常");
resumeInfoDto.setDataSource("1");
resumeInfoDto.setApplyNo(Objects.toString(equ.get("businessId"), ""));
jgResumeInfoService.createWithModel(resumeInfoDto);
}
/**
* 历史设备登记-》更新维保信息
*/
private void historyEquUpdateMaintenanceInfo(Map<String, Object> map) {
IdxBizJgMaintenanceRecordInfo info = JSON.parseObject(JSON.toJSONString(map), IdxBizJgMaintenanceRecordInfo.class);
info.setRecDate(new Date());
info.setRecUserId(RequestContext.getExeUserId());
try {
info.setInformStart(ValidationUtil.isEmpty(map.get("informStart")) ? null : DateUtil.parse(String.valueOf(map.get("informStart"))));
info.setInformEnd(ValidationUtil.isEmpty(map.get("informEnd")) ? null : DateUtil.parse(String.valueOf(map.get("informEnd"))));
} catch (Exception exception) {
exception.printStackTrace();
log.info("date转化失败");
}
info.setRepairInform(ValidationUtil.isEmpty(map.get("maintenanceContract")) ? null : JSONObject.toJSONString(map.get("maintenanceContract")));
idxBizJgMaintenanceRecordInfoService.save(info);
}
/**
* 历史设备登记-》更新安装信息
*/
private void historyEquUpdateInstallInfo(Map<String, Object> map) {
IdxBizJgConstructionInfo constructionInfo = idxBizJgConstructionInfoService.queryNewestDetailByRecord(String.valueOf(map.get("equipId")));
if (!ValidationUtil.isEmpty(constructionInfo.getSequenceNbr())) {
constructionInfo.setUscUnitName(ValidationUtil.isEmpty(map.get("uscUnitName")) ? null : String.valueOf(map.get("uscUnitName")));
constructionInfo.setConstructionLeaderName(ValidationUtil.isEmpty(map.get("installLeaderId")) ? null : String.valueOf(map.get("installLeaderId")));
constructionInfo.setConstructionLeaderPhone(ValidationUtil.isEmpty(map.get("installLeaderPhone")) ? null : String.valueOf(map.get("installLeaderPhone")));
constructionInfo.setProxyStatementAttachment(ValidationUtil.isEmpty(map.get("proxyStatementAttachmentList")) ? null : JSONObject.toJSONString(map.get("proxyStatementAttachmentList")));
constructionInfo.setConstructionContractAttachment(ValidationUtil.isEmpty(map.get("installContractAttachment")) ? null : JSONObject.toJSONString(map.get("installContractAttachment")));
constructionInfo.setConstructionOtherAccessories(ValidationUtil.isEmpty(map.get("insOtherAccessories")) ? null : JSONObject.toJSONString(map.get("insOtherAccessories")));
try {
constructionInfo.setUscDate(ValidationUtil.isEmpty(map.get("installStartDate")) ? null : DateUtils.dateParse((String) map.get("installStartDate"), DateUtils.DATE_PATTERN));
} catch (ParseException e) {
log.error(e.getMessage(), e);
throw new BadRequest("安装日期时间转化错误");
}
idxBizJgConstructionInfoService.getBaseMapper().updateById(constructionInfo);
}
}
/**
* 按台套新增历史设备
*
* @param map
* @return
*/
public void handleHistoryEquip(Map<String, Object> map) {
ReginParams reginParams = JSONObject.parseObject(redisUtils.get(RedisKey.buildReginKey(RequestContext.getExeUserId(), RequestContext.getToken())).toString(), ReginParams.class);
try {
String useRegistrationCode = String.valueOf(map.get("useOrgCode")).trim();
String equipId = String.valueOf(map.get("record"));
Boolean used = commonService.useRegistrationCertificateAccountUnique(useRegistrationCode, equipId);
if (used) {
throw new BadRequest("使用登记证编号已存在!");
}
//使用登记证编号判断是否使用未来系统生成编号
idxBizJgRegisterInfoService.checkUseRegistrationCode(useRegistrationCode, "set");
JgUseRegistration jgUseRegistration = new JgUseRegistration();
jgUseRegistration.setRegDate(new Date());
if (map.containsKey("orgBranchCode")) {
// 监察处置机构代码
String[] splitOrgBranchCode = String.valueOf(map.get("orgBranchCode")).split("_");
jgUseRegistration.setSupervisionOrgCode(splitOrgBranchCode[0]);
}
// 安全管理员
if (map.containsKey("safetyManager")) {
map.put("safetyManagerName", map.get("safetyManager"));
}
// 使用单位提交
jgUseRegistration.setUseUnitName((String) map.get("useUnit"));
jgUseRegistration.setUseUnitCreditCode((String) map.get("useUnitCode"));
jgUseRegistration.setCreateUserId(reginParams.getUserModel().getUserId());
jgUseRegistration.setCreateUserName(reginParams.getUserModel().getUserName());
if (!ObjectUtils.isEmpty(map.get("inspectOrgCode"))) {
jgUseRegistration.setInspectUnitCreditCode(map.get("inspectOrgCode").toString());
}
if (!ObjectUtils.isEmpty(map.get("inspectOrgName"))) {
jgUseRegistration.setInspectUnitName(map.get("inspectOrgName").toString());
}
jgUseRegistration.setUseAddress(
Stream.of("provinceName", "cityName", "countyName", "factoryUseSiteStreet", "address")
.map(key -> Objects.toString(map.get(key), ""))
.collect(Collectors.joining())
);
// 业务管理设备信息保存
JgUseRegistrationEq jgRelationEquip = new JgUseRegistrationEq();
jgRelationEquip.setEquId(map.get("record").toString());
ResponseModel<List<String>> listResponseModel = tzsServiceFeignClient.applicationFormCode(ApplicationFormTypeEnum.SYDJ.getCode(), 1);
if (!ObjectUtils.isEmpty(listResponseModel)) {
jgUseRegistration.setApplyNo(listResponseModel.getResult().get(0));
}
jgUseRegistration.setAuditPassDate(new Date());
jgUseRegistration.setManageType("set");
jgUseRegistration.setIsXixian("0");
jgUseRegistration.setAuditStatus(FlowStatusEnum.TO_BE_FINISHED.getName());
jgUseRegistration.setStatus(FlowStatusEnum.TO_BE_FINISHED.getName());
jgUseRegistration.setUseRegistrationCode(ValidationUtil.isEmpty(map.get("useOrgCode")) ? "" : String.valueOf(map.get("useOrgCode")));
jgUseRegistration.setRegType("1");
// 生成监管码 96333码
LambdaQueryWrapper<IdxBizJgOtherInfo> otherLambda = new QueryWrapper<IdxBizJgOtherInfo>().lambda();
otherLambda.eq(IdxBizJgOtherInfo::getRecord, map.get("record"));
IdxBizJgOtherInfo otherInfo = otherInfoMapper.selectOne(otherLambda);
this.createCode(map, jgUseRegistration, otherInfo);
String equCode = this.getEquCode(map);
map.put("equCode", equCode);
// 更新es
this.updateEsData2(map, otherInfo);
jgUseRegistrationServiceImpl.save(jgUseRegistration);
jgRelationEquip.setEquipTransferId(jgUseRegistration.getSequenceNbr() + "");
jgRelationEquipMapper.insert(jgRelationEquip);
// 暂存历史表
updateHistory(map, map.get("record").toString(), String.valueOf(jgUseRegistration.getSequenceNbr()), jgUseRegistration.getSupervisoryCode());
// 历史设备
this.historyEquGenManageRelated(map, jgUseRegistration);
} catch (BadRequest | LocalBadRequest e) {
log.error(e.getMessage(), e);
this.rollBackForDelRedisData();
throw e;
} catch (Exception e) {
log.error(e.getMessage(), e);
this.rollBackForDelRedisData();
throw new BadRequest("保存失败!");
} finally {
FlowingEquipRedisContext.clean();
}
}
private void historyEquGenManageRelated(Map<String, Object> map, JgUseRegistration jgUseRegistration) {
// 生成证书管理表记录
generateRegistrationManage(jgUseRegistration, map);
// 使用登记证变更记录 -> 使用登记记录
long jgUseRegSeq = sequence.nextId();
generateCertificateChangeRecord(jgUseRegistration, map, jgUseRegSeq);
// 使用登记证变更记录 -> 使用登记记录 ——> 生成tzs_jg_certificate_change_record_eq记录
JgCertificateChangeRecordEq changeRecordEq = new JgCertificateChangeRecordEq();
changeRecordEq.setChangeRecordId(String.valueOf(jgUseRegSeq));//登记证记录主键
changeRecordEq.setEquId(String.valueOf(map.get("record")));//设备主键
changeRecordEq.setProductCode(String.valueOf(map.get("factoryNum")));
certificateChangeRecordEqService.save(changeRecordEq);
}
/**
* 生成使用登记证变更记录
*
* @param jgUseRegistration
* @param changeRecordId
*/
private void generateCertificateChangeRecord(JgUseRegistration jgUseRegistration, Map<String, Object> map,
Long changeRecordId) {
JgCertificateChangeRecord changeRecord = new JgCertificateChangeRecord();
changeRecord.setApplyNo(jgUseRegistration.getApplyNo());
changeRecord.setReceiveOrgName(jgUseRegistration.getReceiveOrgName());
changeRecord.setAuditPassDate(new Date());
changeRecord.setRegType(BusinessTypeEnum.JG_USAGE_REGISTRATION.getName());
changeRecord.setRegDate(jgUseRegistration.getCreateDate());
changeRecord.setChangeContent(this.buildRecordContent(jgUseRegistration, BusinessTypeEnum.JG_USAGE_REGISTRATION.getName()));//变更内容
changeRecord.setUseRegistrationCode(jgUseRegistration.getUseRegistrationCode());//使用登记编号
changeRecord.setReceiveCompanyCode(jgUseRegistration.getReceiveCompanyOrgCode());//接收机构公司代码
// 流水表不需要再次生成唯一编号,使用证管理表对应值
if (!ObjectUtils.isEmpty(jgUseRegistration.getUseRegistrationCode())) {
JgUseRegistrationManage manage = jgUseRegistrationManageService.lambdaQuery()
.eq(JgUseRegistrationManage::getUseRegistrationCode, jgUseRegistration.getUseRegistrationCode())
.eq(JgUseRegistrationManage::getIsDelete, 0)
.eq(JgUseRegistrationManage::getCertificateStatus, CertificateStatusEnum.YIDENGJI.getName()).one();
changeRecord.setCertificateNo(manage.getCertificateNo());//登记证书唯一码
}
changeRecord.setUseUnitCreditCode(jgUseRegistration.getUseUnitCreditCode());//使用单位统一信用代码
changeRecord.setUseUnitName(jgUseRegistration.getUseUnitName());//使用单位名称
changeRecord.setEquCategory(Objects.toString(map.get("equCategory")));//设备类别编码
changeRecord.setCreateDate(new Date());
changeRecord.setRoutePath("");
changeRecord.setSequenceNbr(changeRecordId);
certificateChangeRecordService.save(changeRecord);
}
/**
* 生成登记证数据
*
* @param jgUseRegistration 使用登记单
*/
private void generateRegistrationManage(JgUseRegistration jgUseRegistration, Map<String, Object> map) {
Map<String, String> equType = Stream.of(
new AbstractMap.SimpleEntry<>("equList", "equListName"),
new AbstractMap.SimpleEntry<>("equCategory", "equCategoryName"),
new AbstractMap.SimpleEntry<>("equDefine", "equDefineName")
).collect(Collectors.toMap(
Map.Entry::getValue,
entry -> jgVehicleInformationMapper.getEquCategoryNameByCode(Objects.toString(map.get(entry.getKey())))
));
JgUseRegistrationManage manage = new JgUseRegistrationManage();
// 设置基本信息
manage.setUseUnitName(jgUseRegistration.getUseUnitName());
manage.setApplyNo(jgUseRegistration.getApplyNo());
manage.setCertificateStatus(CertificateStatusEnum.YIDENGJI.getName());
manage.setReceiveOrgName(jgUseRegistration.getReceiveOrgName());
manage.setAuditPassDate(jgUseRegistration.getAuditPassDate());
manage.setRegType(BusinessTypeEnum.JG_USAGE_REGISTRATION.getName());
manage.setRegDate(jgUseRegistration.getRegDate());
manage.setEquList(equType.get("equListName"));
manage.setEquListCode(Objects.toString(map.get("equList")));
manage.setEquCategory(equType.get("equCategoryName"));
manage.setEquCategoryCode(Objects.toString(map.get("equCategory")));
manage.setEquDefine(equType.get("equDefineName"));
manage.setEquDefineCode(Objects.toString(map.get("equDefine")));
manage.setIsDelete(Boolean.FALSE);
manage.setRecUserId(jgUseRegistration.getRecUserId());
manage.setRecUserName(jgUseRegistration.getRecUserName());
manage.setRecDate(jgUseRegistration.getRecDate());
manage.setCreateUserId(jgUseRegistration.getCreateUserId());
manage.setCreateDate(jgUseRegistration.getRecDate());
manage.setEquUseAddress(jgUseRegistration.getUseAddress());
manage.setUseUnitAddress(jgUseRegistration.getUseAddress());
manage.setUseRegistrationCode(jgUseRegistration.getUseRegistrationCode());
manage.setUseUnitCreditCode(jgUseRegistration.getUseUnitCreditCode());
manage.setReceiveCompanyCode(jgUseRegistration.getReceiveCompanyCode());
manage.setManageType(jgUseRegistration.getManageType());
manage.setIsDoBusiness("0"); // 不可做业务
// 生成证书编号
manage.setCertificateNo(commonService.generateCertificateNo(equType, new Date(), (String) map.get("county")));
// 设置监管机构信息
this.setSuperviseOrgInfo(manage, jgUseRegistration);
jgUseRegistrationManageService.save(manage);
}
private void setSuperviseOrgInfo(JgUseRegistrationManage jgUseRegistrationManage, JgUseRegistration jgUseRegistration) {
jgUseRegistrationManage.setSuperviseOrgCode(jgUseRegistration.getSupervisionOrgCode());
jgUseRegistrationManage.setSuperviseOrgName(commonMapper.getCompanyNameByOrgCode(jgUseRegistration.getSupervisionOrgCode()));
}
public String getEquCode(Map<String, Object> dataMap) {
ProduceInfo produceInfo = produceInfoMapper.selectOne(new LambdaQueryWrapper<ProduceInfo>().eq(AbstractEquipBaseEntity::getRecord, dataMap.get("record")));
CodeGenerateDto codeGenerateDto = new CodeGenerateDto();
codeGenerateDto.setEquList((String) dataMap.get("equList"));
codeGenerateDto.setEquCategory((String) dataMap.get("equCategory"));
codeGenerateDto.setEquDefine((String) dataMap.get("equDefine"));
codeGenerateDto.setProduceDate(produceInfo.getProduceDate());
codeGenerateDto.setReceiveCompanyCode((String) dataMap.get("county"));
return codeUtil.generateEquipmentCode(codeGenerateDto);
}
public void updateEsData2(Map<String, Object> dataMap, IdxBizJgOtherInfo otherInfo) {
HashMap<String, Map<String, Object>> objMap = new HashMap<>();
HashMap<String, Object> param = new HashMap<>();
param.put("SUPERVISORY_CODE", otherInfo.getSupervisoryCode());
param.put("CODE96333", otherInfo.getCode96333());
param.put("STATUS", "已认领");
param.put("EQU_STATE", 1);
param.put("IS_DO_BUSINESS", false);
param.put("IS_INTO_MANAGEMENT", true);
param.put("USC_UNIT_CREDIT_CODE", "");
param.put("EQU_CODE", dataMap.get("equCode"));
objMap.put((String) dataMap.get("record"), param);
tzsServiceFeignClient.commonUpdateEsDataByIds(objMap);
}
private void rollBackForDelRedisData() {
FlowingEquipRedisContext.getContext().forEach(e -> {
EquipUsedCheckStrategyContext.getUsedStrategy(DEFINITION_KEY).delDataForCheckWithKey(e.getData(), e.getRedisKey());
});
}
/**
* 生成监管码、96333码
*/
public void createCode(Map<String, Object> dataMap, JgUseRegistration jgUseRegistration, IdxBizJgOtherInfo otherInfo) {
// 生成监管码、96333码
Map<String, Object> map = new HashMap<>();
map.put("cityCode", dataMap.get("city"));
map.put("countyCode", dataMap.get("county"));
map.put("equCategory", dataMap.get("equCategory"));
map.put("isXiXian", 0);
//有96333码,不生成96333码,只生成监管码
map.put("code96333", dataMap.get("code96333"));
ResponseModel<Map<String, Object>> code = tzsServiceFeignClient.createCode(map);
Map<String, Object> result = code.getResult();
if (!ObjectUtils.isEmpty(result)) {
otherInfo.setSupervisoryCode(String.valueOf(result.get("superviseCode")));
// 历史登记时 96333如果自行输入则不再进行生成插入
if (StringUtils.isEmpty(otherInfo.getCode96333())) {
otherInfo.setCode96333(ObjectUtils.isEmpty(result.get("code96333")) ? "" : String.valueOf(result.get("code96333")));
}
// 更新使用登记业务表
jgUseRegistration.setSupervisoryCode(String.valueOf(result.get("superviseCode")));
}
otherInfo.setClaimStatus("已认领");
otherInfoMapper.updateById(otherInfo);
}
public void updateHistory(Map<String, Object> map, String equipId, String currentDocumentId, String supervisoryCode) {
JgRegistrationHistory jgRegistrationHistory = new JgRegistrationHistory();
LambdaQueryWrapper<JgRegistrationHistory> lambda = new QueryWrapper<JgRegistrationHistory>().lambda();
// lambda.eq(JgRegistrationHistory::getEquId, equipId);
lambda.eq(JgRegistrationHistory::getCurrentDocumentId, currentDocumentId);
lambda.eq(JgRegistrationHistory::getRegistrationClass, "使用登记");
lambda.eq(JgRegistrationHistory::getIsDelete, false);
Integer integer = jgRegistrationHistoryService.getBaseMapper().selectCount(lambda);
if (integer > 0) {
jgRegistrationHistory.setChangeData(JSON.toJSONString(map));
jgRegistrationHistoryService.update(jgRegistrationHistory, lambda);
} else {
jgRegistrationHistory.setChangeData(JSON.toJSONString(map));
jgRegistrationHistory.setStatus("new");
jgRegistrationHistory.setRegistrationClass("使用登记");
jgRegistrationHistory.setSupervisoryCode(supervisoryCode);
jgRegistrationHistory.setEquId(equipId);
jgRegistrationHistory.setCurrentDocumentId(currentDocumentId);
jgRegistrationHistoryService.save(jgRegistrationHistory);
}
}
private void saveInstallInfo(Map<String, Object> equ, String record, String equList) {
IdxBizJgConstructionInfo constructionInfo = JSON.parseObject(JSON.toJSONString(equ), IdxBizJgConstructionInfo.class);
constructionInfo.setUscUnitName(ValidationUtil.isEmpty(equ.get("installUnitName")) ? null : String.valueOf(equ.get("installUnitName")));
constructionInfo.setUscUnitCreditCode(ValidationUtil.isEmpty(equ.get("installUnitCreditCode")) ? null : String.valueOf(equ.get("installUnitCreditCode")));
constructionInfo.setConstructionLeaderName(ValidationUtil.isEmpty(equ.get("installLeaderName")) ? null : String.valueOf(equ.get("installLeaderName")));
constructionInfo.setConstructionLeaderPhone(ValidationUtil.isEmpty(equ.get("installLeaderPhone")) ? null : String.valueOf(equ.get("installLeaderPhone")));
try {
constructionInfo.setUscDate(ValidationUtil.isEmpty(equ.get("installStartDate")) ? null : DateUtils.dateParse((String) equ.get("installStartDate"), DateUtils.DATE_PATTERN));
} catch (ParseException e) {
log.error(e.getMessage(), e);
throw new BadRequest("安装日期时间转化错误");
}
idxBizJgConstructionInfoService.getBaseMapper().insert(constructionInfo);
}
private void saveInspectInfo(Map<String, Object> equ, String record) {
InspectionDetectionInfo inspectionDetectionInfo = new InspectionDetectionInfo();
BeanUtil.copyProperties(equ, inspectionDetectionInfo);
if (inspectionDetectionInfo.getInspectType() != null && inspectionDetectionInfo.getInspectConclusion() != null) {
inspectionDetectionInfo.setRecord(record);
inspectionDetectionInfo.setRecDate(new Date());
inspectionDetectionInfo.setSequenceNbr(String.valueOf(sequence.nextId()));
inspectionDetectionInfo.setInspectType(InspectTypeConverter.dictMap.get(inspectionDetectionInfo.getInspectType()));
inspectionDetectionInfo.setInspectConclusion(InspectConclusionConverter.dictMap.get(inspectionDetectionInfo.getInspectConclusion()));
inspectionDetectionInfoMapper.insert(inspectionDetectionInfo);
}
}
} }
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