diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index a5f9ad1..ce53a75 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -80,8 +80,10 @@
ITEM_CATEGORY_IS_NULL(2616, "检定类型为空,页面逻辑错误,不能执行打印"),
ITEM_CATEGORY_NOT_NULL(2617, "该检定类型没有证书,请注意"),
TEST_CATEGORY_IS_NONE(2618, "测试报告没有检定证书,请注意"),
- MEASURE_APPROVAL_UPDATE_FAILED(2619, "检定审批更新至草稿箱失败"),
- MEASURE_FILE_CREATE_FAILED(2620, "检定数据审批文件生成失败"),
+ MEASURE_APPROVAL_UPDATE_FAILED(2619, "多功能检定审批更新至草稿箱失败"),
+ MEASURE_FILE_CREATE_FAILED(2620, "多功能检定数据审批文件生成失败"),
+ CHECK_APPROVAL_UPDATE_FAILED(2621, "多功能核查审批更新至草稿箱失败"),
+ CHECK_FILE_CREATE_FAILED(2622, "多功能核查数据审批文件生成失败"),
/**
* 历史遗留备用
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index a5f9ad1..ce53a75 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -80,8 +80,10 @@
ITEM_CATEGORY_IS_NULL(2616, "检定类型为空,页面逻辑错误,不能执行打印"),
ITEM_CATEGORY_NOT_NULL(2617, "该检定类型没有证书,请注意"),
TEST_CATEGORY_IS_NONE(2618, "测试报告没有检定证书,请注意"),
- MEASURE_APPROVAL_UPDATE_FAILED(2619, "检定审批更新至草稿箱失败"),
- MEASURE_FILE_CREATE_FAILED(2620, "检定数据审批文件生成失败"),
+ MEASURE_APPROVAL_UPDATE_FAILED(2619, "多功能检定审批更新至草稿箱失败"),
+ MEASURE_FILE_CREATE_FAILED(2620, "多功能检定数据审批文件生成失败"),
+ CHECK_APPROVAL_UPDATE_FAILED(2621, "多功能核查审批更新至草稿箱失败"),
+ CHECK_FILE_CREATE_FAILED(2622, "多功能核查数据审批文件生成失败"),
/**
* 历史遗留备用
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
index 46831fe..2f0877f 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
@@ -22,6 +22,7 @@
String CUSTOMER_EXAMINE_FORM = "要求、委托书及合同评审表";
String MEASURE_DATA = "检定数据管理";
+ String MULTIFUNCTION_CHECK_DATA = "多功能核查数据";
String FILE_CHANGE_FORM = "文件更改申请单";
String FILE_GRANT_NOTICE_FORM = "文件发放通知单";
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index a5f9ad1..ce53a75 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -80,8 +80,10 @@
ITEM_CATEGORY_IS_NULL(2616, "检定类型为空,页面逻辑错误,不能执行打印"),
ITEM_CATEGORY_NOT_NULL(2617, "该检定类型没有证书,请注意"),
TEST_CATEGORY_IS_NONE(2618, "测试报告没有检定证书,请注意"),
- MEASURE_APPROVAL_UPDATE_FAILED(2619, "检定审批更新至草稿箱失败"),
- MEASURE_FILE_CREATE_FAILED(2620, "检定数据审批文件生成失败"),
+ MEASURE_APPROVAL_UPDATE_FAILED(2619, "多功能检定审批更新至草稿箱失败"),
+ MEASURE_FILE_CREATE_FAILED(2620, "多功能检定数据审批文件生成失败"),
+ CHECK_APPROVAL_UPDATE_FAILED(2621, "多功能核查审批更新至草稿箱失败"),
+ CHECK_FILE_CREATE_FAILED(2622, "多功能核查数据审批文件生成失败"),
/**
* 历史遗留备用
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
index 46831fe..2f0877f 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
@@ -22,6 +22,7 @@
String CUSTOMER_EXAMINE_FORM = "要求、委托书及合同评审表";
String MEASURE_DATA = "检定数据管理";
+ String MULTIFUNCTION_CHECK_DATA = "多功能核查数据";
String FILE_CHANGE_FORM = "文件更改申请单";
String FILE_GRANT_NOTICE_FORM = "文件发放通知单";
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
index 04ab11f..91097b7 100644
--- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
@@ -329,4 +329,8 @@
@TableField(exist = false)
private Integer approvalType;
+
+ @ApiModelProperty(value = "设备类型(打印扩展使用,任何时候不需要传)", dataType = "String")
+ @TableField(exist = false)
+ private String equipmentType;
}
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index a5f9ad1..ce53a75 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -80,8 +80,10 @@
ITEM_CATEGORY_IS_NULL(2616, "检定类型为空,页面逻辑错误,不能执行打印"),
ITEM_CATEGORY_NOT_NULL(2617, "该检定类型没有证书,请注意"),
TEST_CATEGORY_IS_NONE(2618, "测试报告没有检定证书,请注意"),
- MEASURE_APPROVAL_UPDATE_FAILED(2619, "检定审批更新至草稿箱失败"),
- MEASURE_FILE_CREATE_FAILED(2620, "检定数据审批文件生成失败"),
+ MEASURE_APPROVAL_UPDATE_FAILED(2619, "多功能检定审批更新至草稿箱失败"),
+ MEASURE_FILE_CREATE_FAILED(2620, "多功能检定数据审批文件生成失败"),
+ CHECK_APPROVAL_UPDATE_FAILED(2621, "多功能核查审批更新至草稿箱失败"),
+ CHECK_FILE_CREATE_FAILED(2622, "多功能核查数据审批文件生成失败"),
/**
* 历史遗留备用
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
index 46831fe..2f0877f 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
@@ -22,6 +22,7 @@
String CUSTOMER_EXAMINE_FORM = "要求、委托书及合同评审表";
String MEASURE_DATA = "检定数据管理";
+ String MULTIFUNCTION_CHECK_DATA = "多功能核查数据";
String FILE_CHANGE_FORM = "文件更改申请单";
String FILE_GRANT_NOTICE_FORM = "文件发放通知单";
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
index 04ab11f..91097b7 100644
--- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
@@ -329,4 +329,8 @@
@TableField(exist = false)
private Integer approvalType;
+
+ @ApiModelProperty(value = "设备类型(打印扩展使用,任何时候不需要传)", dataType = "String")
+ @TableField(exist = false)
+ private String equipmentType;
}
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
index b7c52f1..a5d6456 100644
--- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
@@ -12,6 +12,7 @@
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
+import java.util.List;
/**
*
@@ -143,4 +144,33 @@
@TableField(exist = false)
private String checkEquipmentModel;
+ @ApiModelProperty(value = "核查记录文件名称", dataType = "String")
+ private String checkRecordFile;
+
+ @ApiModelProperty(value = "检查日期(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String checkDate;
+
+
+ @ApiModelProperty(value = "检测地址(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String checkAddress;
+
+ @ApiModelProperty(value = "温度(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String temperature;
+
+ @ApiModelProperty(value = "湿度(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String humidity;
+
+ @ApiModelProperty(value = "核查标准设备(打印)", dataType = "Object")
+ @TableField(exist = false)
+ private List checkEquipmentList;
+
+
+ @ApiModelProperty(value = "被核查标准设备(打印)", dataType = "Object")
+ @TableField(exist = false)
+ private BizEquipmentInfo equipmentInfo;
+
}
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index a5f9ad1..ce53a75 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -80,8 +80,10 @@
ITEM_CATEGORY_IS_NULL(2616, "检定类型为空,页面逻辑错误,不能执行打印"),
ITEM_CATEGORY_NOT_NULL(2617, "该检定类型没有证书,请注意"),
TEST_CATEGORY_IS_NONE(2618, "测试报告没有检定证书,请注意"),
- MEASURE_APPROVAL_UPDATE_FAILED(2619, "检定审批更新至草稿箱失败"),
- MEASURE_FILE_CREATE_FAILED(2620, "检定数据审批文件生成失败"),
+ MEASURE_APPROVAL_UPDATE_FAILED(2619, "多功能检定审批更新至草稿箱失败"),
+ MEASURE_FILE_CREATE_FAILED(2620, "多功能检定数据审批文件生成失败"),
+ CHECK_APPROVAL_UPDATE_FAILED(2621, "多功能核查审批更新至草稿箱失败"),
+ CHECK_FILE_CREATE_FAILED(2622, "多功能核查数据审批文件生成失败"),
/**
* 历史遗留备用
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
index 46831fe..2f0877f 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
@@ -22,6 +22,7 @@
String CUSTOMER_EXAMINE_FORM = "要求、委托书及合同评审表";
String MEASURE_DATA = "检定数据管理";
+ String MULTIFUNCTION_CHECK_DATA = "多功能核查数据";
String FILE_CHANGE_FORM = "文件更改申请单";
String FILE_GRANT_NOTICE_FORM = "文件发放通知单";
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
index 04ab11f..91097b7 100644
--- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
@@ -329,4 +329,8 @@
@TableField(exist = false)
private Integer approvalType;
+
+ @ApiModelProperty(value = "设备类型(打印扩展使用,任何时候不需要传)", dataType = "String")
+ @TableField(exist = false)
+ private String equipmentType;
}
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
index b7c52f1..a5d6456 100644
--- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
@@ -12,6 +12,7 @@
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
+import java.util.List;
/**
*
@@ -143,4 +144,33 @@
@TableField(exist = false)
private String checkEquipmentModel;
+ @ApiModelProperty(value = "核查记录文件名称", dataType = "String")
+ private String checkRecordFile;
+
+ @ApiModelProperty(value = "检查日期(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String checkDate;
+
+
+ @ApiModelProperty(value = "检测地址(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String checkAddress;
+
+ @ApiModelProperty(value = "温度(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String temperature;
+
+ @ApiModelProperty(value = "湿度(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String humidity;
+
+ @ApiModelProperty(value = "核查标准设备(打印)", dataType = "Object")
+ @TableField(exist = false)
+ private List checkEquipmentList;
+
+
+ @ApiModelProperty(value = "被核查标准设备(打印)", dataType = "Object")
+ @TableField(exist = false)
+ private BizEquipmentInfo equipmentInfo;
+
}
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java
index bb66382..acf9ef6 100644
--- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java
@@ -26,6 +26,7 @@
import com.casic.missiles.model.business.BizBusinessDeviceMeasureDataCalibrator;
import com.casic.missiles.model.business.BizBusinessDeviceMeasureInfo;
import com.casic.missiles.service.Impl.GeneralApprovalServiceImpl;
+import com.casic.missiles.service.Impl.eqpt.GenericEqptDataProvider;
import com.casic.missiles.service.business.IBizBusinessDeviceMeasureApprovalService;
import com.casic.missiles.service.listeners.register.PrintFileRegister;
import com.casic.missiles.utils.DictCodeUtils;
@@ -52,13 +53,12 @@
* @since 2023-10-11
*/
@Service
-public class BizBusinessDeviceMeasureApprovalServiceImpl extends GeneralApprovalServiceImpl implements IBizBusinessDeviceMeasureApprovalService, PrintFileModuleNameEnum, MeasureCategoryEnum {
+public class BizBusinessDeviceMeasureApprovalServiceImpl extends GeneralApprovalServiceImpl implements IBizBusinessDeviceMeasureApprovalService{
@Resource
private BusinessLabExecutiveInfoMapper labExecutiveInfoMapper;
@Autowired
- private PrintFileRegister printFileRegister;
- @Resource
- private SnowflakeUtil snowflakeUtil;
+ private GenericEqptDataProvider genericEqptDataProvider;
+
@Override
public ReturnDTO addMeasureApproval(BizBusinessDeviceMeasureApproval request) {
@@ -76,235 +76,14 @@
Assert.isFalse(row <= 0, () -> {
throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_SAVE_FAILED);
});
- updateCertificateTask(request);
+ genericEqptDataProvider.measureCertificateTask(request);
DeviceMeasureApprovalSaveResponse saveResponse = new DeviceMeasureApprovalSaveResponse();
saveResponse.setId(request.getId());
saveResponse.setCertNo(certNo);
return ReturnUtil.success(saveResponse);
}
- /**
- * 生成更新证书的任务,内部类
- */
- public void updateCertificateTask(BizBusinessDeviceMeasureApproval request) {
- ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, 5, 100,
- TimeUnit.SECONDS, new LinkedBlockingQueue<>(5));
- //生成证书报告的
- CompletableFuture certificateFutureTask = CompletableFuture.supplyAsync(
- () -> createCertificateFile(request), threadPool);
- //生成原始记录的线程
- CompletableFuture originalFutureTask = CompletableFuture.supplyAsync(
- () -> createOriginalFile(request), threadPool);
- //等到所有线程异步结束
- CompletableFuture combinedFuture = CompletableFuture.allOf(certificateFutureTask, originalFutureTask);
- combinedFuture.thenRun(() -> {
- try {
- //获取结果
- String certificateFileUrl = certificateFutureTask.join();
- String originalRecordFileUrl = originalFutureTask.join();
- BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
- if (StringUtils.isNotEmpty(certificateFileUrl) || StringUtils.isNotEmpty(originalRecordFileUrl)) {
- //生成证书文件
- request.setCertificateFile(certificateFileUrl);
- //原始记录文件
- request.setOriginalRecordFile(originalRecordFileUrl);
- //更新记录
- int updateFlag = bizBusinessMapper.updateById(request);
- Assert.isFalse(updateFlag <= 0, () -> {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- });
- } else {
- //生成证书失败,删除保存的记录
- bizBusinessMapper.deleteById(request);
- throw new BusinessException(BusinessExceptionEnum.MEASURE_FILE_CREATE_FAILED);
- }
- } catch (Exception ex) {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- }
- }).join();
- }
-
- private String createCertificateFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
- try {
- //过滤不能生成原始记录的报告
- if (checkOutUnablePrint(measureItemInfo)) {
- return "";
- }
- if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
- List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
- bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
- measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
- }
- Map map = BeanUtil.beanToMap(measureItemInfo);
- //准备封面参数
- prepareCoverParams(map, measureItemInfo.getLabCode());
- List customTemplateUrls = new ArrayList<>();
- BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
- //这一块逻辑比较复杂
- customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", measureItemInfo.getMeasureCategoryName()));
- customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", "数字记录表内容"));
- map.put("id", snowflakeUtil.nextId());
- //除了选用的模板不一致,模板配置流程是一致的
- return printFileRegister.registerPrintFile(MEASURE_DATA, "证书打印", null, map, true, null, customTemplateUrls);
- } catch (Exception ex) {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- }
- }
-
- /**
- * 创建原始记录文件
- */
- private String createOriginalFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
- try {
- if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
- List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
- bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
- measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
- }
- Map map = BeanUtil.beanToMap(measureItemInfo);
- List customTemplateUrls = new ArrayList<>();
- BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
- //准备封面参数
- prepareCoverParams(map, measureItemInfo.getLabCode());
- //定制化原始记录参数
- prepareCustomCoverParams(map, measureItemInfo.getMeasureDataCalibratorList());
- //这一块逻辑比较复杂
- customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "1", measureItemInfo.getItemCategoryName()));
- //与证书模板区分
- map.put("id", snowflakeUtil.nextId());
- //除了选用的模板不一致,模板配置流程是一致的
- return printFileRegister.registerPrintFile(MEASURE_DATA, "原始记录打印", null, map, true, null, customTemplateUrls);
- } catch (Exception ex) {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- }
- }
-
- /**
- * 检查是否能生成证书
- */
- private Boolean checkOutUnablePrint(BizBusinessDeviceMeasureApproval measureItemInfo) {
- //通过检定项名称,获取对应的模块配置列表
- if (StringUtils.isNotEmpty(measureItemInfo.getItemCategoryName())) {
- if (MEASURE_ITEMS_WITHOUT_CERTIFICATE.contains(measureItemInfo.getItemCategoryName())) {
- log.warn(BusinessExceptionEnum.ITEM_CATEGORY_NOT_NULL.getMessage());
- return true;
- }
- if (CHECKOUT_REPORT.equals(measureItemInfo.getMeasureCategoryName())) {
- log.warn(BusinessExceptionEnum.TEST_CATEGORY_IS_NONE.getMessage());
- return true;
- }
- } else {
- log.warn(BusinessExceptionEnum.ITEM_CATEGORY_IS_NULL.getMessage());
- return true;
- }
- return false;
- }
-
- /**
- * 填充固定的信息参数
- */
- private void prepareCoverParams(Map map, String labCode) {
- //技术文件处理
- if (map.containsKey("technologyFile") && ObjectUtils.isNotEmpty(map.get("technologyFile"))) {
- //技术文件用逗号隔开
- String[] technologyFiles = ((String) map.get("technologyFile")).split(",");
- List technologyFileList = Arrays.asList(technologyFiles);
- map.put("technologyFileList", technologyFileList);
- }
- //健壮性校验
- if (StringUtils.isEmpty(labCode)) {
- log.warn("组织接口不能传入为空,打印文档生成文档填充组织失败...");
- return;
- }
- //西昌海口基本信息录入
- if ("x".equals(labCode)) {
- map.put("s", XICHANG);
- map.put("communicationAddress", XICHANG_ADDRESS);
- map.put("labAddress", XICHANG_ADDRESS);
- map.put("phone", XICHANG_PHONE);
- map.put("postalCode", XICHANG_POSTAL_CODE);
- } else {
- map.put("s", HAIKOU);
- map.put("communicationAddress", HAIKOU_ADDRESS);
- map.put("labAddress", HAIKOU_ADDRESS);
- map.put("phone", HAIKOU_PHONE);
- map.put("postalCode", HAIKOU_POSTAL_CODE);
- }
- }
-
- private void prepareCustomCoverParams(Map map, List measureDataCalibrators) {
- //定制参数
- doCustomParam(map, measureDataCalibrators);
- //初始化方框
- map.put("test", "\uF0A3");
- map.put("calibrate", "\uF0A3");
- map.put("measure", "\uF0A3");
- //选择方框
- switch ((String) map.get("measureCategoryName")) {
- case TEST_REPORT:
- map.put("test", "\uF052");
- break;
- case CALIBRATE_REPORT:
- map.put("calibrate", "\uF052");
- break;
- case MEASURE_REPORT:
- map.put("measure", "\uF052");
- break;
- default:
- return;
- }
- //填充有效日期
- if (ObjectUtils.isNotEmpty(map.get(MEASURE_VALID_DATE))) {
- String measureValidDate = (String) map.get(MEASURE_VALID_DATE);
- Calendar calendar = Calendar.getInstance();
- try {
- calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate));
- } catch (Exception e) {
- throw new BusinessException(1500, String.format(measureValidDate, "检定有效日期,格式不正确"));
- }
- //设置时间
- map.put(MEASURE_VALID_Y, calendar.get(Calendar.YEAR));
- map.put(MEASURE_VALID_M, calendar.get(Calendar.MONTH) + 1);
- map.put(MEASURE_VALID_D, calendar.get(Calendar.DAY_OF_MONTH));
- }
-
- }
-
- /**
- * 直流电压表没有HZ
- * 多功能
- *
- * @param map
- */
- private void doCustomParam(Map map, List measureDataCalibrators) {
- if (StringUtils.isNotEmpty((String) map.get("itemCategoryName"))) {
- //直流表,交流表 75mv电压表定制表格内容
- if (((String) map.get("itemCategoryName")).contains("交流")) {
- map.put("fName", "频率:");
- map.put("frequency", measureDataCalibrators.get(0).getFrequency());
- map.put("frequencyUnit", measureDataCalibrators.get(0).getFrequencyUnit());
- }
- //多功能电力参数仪定制表格内容
- if (((String) map.get("itemCategoryName")).contains("多功能")) {
- Map> measureDataMap = measureDataCalibrators.stream().collect(
- Collectors.groupingBy(BizBusinessDeviceMeasureDataCalibrator::getParams)
- );
- if (measureDataMap.containsKey("ACV") && CollectionUtils.isNotEmpty(measureDataMap.get("ACV"))) {
- map.put("frequency2", measureDataMap.get("ACV").get(0).getFrequency());
- map.put("frequencyUnit2", measureDataMap.get("ACV").get(0).getFrequencyUnit());
- map.put("unit2", measureDataMap.get("ACV").get(0).getUnit());
- map.put("measureDataCalibratorListV", measureDataMap.get("ACV"));
- }
- if (measureDataMap.containsKey("ACI") && CollectionUtils.isNotEmpty(measureDataMap.get("ACI"))) {
- map.put("frequency1", measureDataMap.get("ACI").get(0).getFrequency());
- map.put("frequencyUnit1", measureDataMap.get("ACI").get(0).getFrequencyUnit());
- map.put("unit1", measureDataMap.get("ACI").get(0).getUnit());
- map.put("measureDataCalibratorListI", measureDataMap.get("ACI"));
- }
- }
- }
- }
@Override
public ReturnDTO detail(Long id) throws Exception {
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index a5f9ad1..ce53a75 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -80,8 +80,10 @@
ITEM_CATEGORY_IS_NULL(2616, "检定类型为空,页面逻辑错误,不能执行打印"),
ITEM_CATEGORY_NOT_NULL(2617, "该检定类型没有证书,请注意"),
TEST_CATEGORY_IS_NONE(2618, "测试报告没有检定证书,请注意"),
- MEASURE_APPROVAL_UPDATE_FAILED(2619, "检定审批更新至草稿箱失败"),
- MEASURE_FILE_CREATE_FAILED(2620, "检定数据审批文件生成失败"),
+ MEASURE_APPROVAL_UPDATE_FAILED(2619, "多功能检定审批更新至草稿箱失败"),
+ MEASURE_FILE_CREATE_FAILED(2620, "多功能检定数据审批文件生成失败"),
+ CHECK_APPROVAL_UPDATE_FAILED(2621, "多功能核查审批更新至草稿箱失败"),
+ CHECK_FILE_CREATE_FAILED(2622, "多功能核查数据审批文件生成失败"),
/**
* 历史遗留备用
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
index 46831fe..2f0877f 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
@@ -22,6 +22,7 @@
String CUSTOMER_EXAMINE_FORM = "要求、委托书及合同评审表";
String MEASURE_DATA = "检定数据管理";
+ String MULTIFUNCTION_CHECK_DATA = "多功能核查数据";
String FILE_CHANGE_FORM = "文件更改申请单";
String FILE_GRANT_NOTICE_FORM = "文件发放通知单";
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
index 04ab11f..91097b7 100644
--- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
@@ -329,4 +329,8 @@
@TableField(exist = false)
private Integer approvalType;
+
+ @ApiModelProperty(value = "设备类型(打印扩展使用,任何时候不需要传)", dataType = "String")
+ @TableField(exist = false)
+ private String equipmentType;
}
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
index b7c52f1..a5d6456 100644
--- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
@@ -12,6 +12,7 @@
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
+import java.util.List;
/**
*
@@ -143,4 +144,33 @@
@TableField(exist = false)
private String checkEquipmentModel;
+ @ApiModelProperty(value = "核查记录文件名称", dataType = "String")
+ private String checkRecordFile;
+
+ @ApiModelProperty(value = "检查日期(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String checkDate;
+
+
+ @ApiModelProperty(value = "检测地址(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String checkAddress;
+
+ @ApiModelProperty(value = "温度(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String temperature;
+
+ @ApiModelProperty(value = "湿度(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String humidity;
+
+ @ApiModelProperty(value = "核查标准设备(打印)", dataType = "Object")
+ @TableField(exist = false)
+ private List checkEquipmentList;
+
+
+ @ApiModelProperty(value = "被核查标准设备(打印)", dataType = "Object")
+ @TableField(exist = false)
+ private BizEquipmentInfo equipmentInfo;
+
}
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java
index bb66382..acf9ef6 100644
--- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java
@@ -26,6 +26,7 @@
import com.casic.missiles.model.business.BizBusinessDeviceMeasureDataCalibrator;
import com.casic.missiles.model.business.BizBusinessDeviceMeasureInfo;
import com.casic.missiles.service.Impl.GeneralApprovalServiceImpl;
+import com.casic.missiles.service.Impl.eqpt.GenericEqptDataProvider;
import com.casic.missiles.service.business.IBizBusinessDeviceMeasureApprovalService;
import com.casic.missiles.service.listeners.register.PrintFileRegister;
import com.casic.missiles.utils.DictCodeUtils;
@@ -52,13 +53,12 @@
* @since 2023-10-11
*/
@Service
-public class BizBusinessDeviceMeasureApprovalServiceImpl extends GeneralApprovalServiceImpl implements IBizBusinessDeviceMeasureApprovalService, PrintFileModuleNameEnum, MeasureCategoryEnum {
+public class BizBusinessDeviceMeasureApprovalServiceImpl extends GeneralApprovalServiceImpl implements IBizBusinessDeviceMeasureApprovalService{
@Resource
private BusinessLabExecutiveInfoMapper labExecutiveInfoMapper;
@Autowired
- private PrintFileRegister printFileRegister;
- @Resource
- private SnowflakeUtil snowflakeUtil;
+ private GenericEqptDataProvider genericEqptDataProvider;
+
@Override
public ReturnDTO addMeasureApproval(BizBusinessDeviceMeasureApproval request) {
@@ -76,235 +76,14 @@
Assert.isFalse(row <= 0, () -> {
throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_SAVE_FAILED);
});
- updateCertificateTask(request);
+ genericEqptDataProvider.measureCertificateTask(request);
DeviceMeasureApprovalSaveResponse saveResponse = new DeviceMeasureApprovalSaveResponse();
saveResponse.setId(request.getId());
saveResponse.setCertNo(certNo);
return ReturnUtil.success(saveResponse);
}
- /**
- * 生成更新证书的任务,内部类
- */
- public void updateCertificateTask(BizBusinessDeviceMeasureApproval request) {
- ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, 5, 100,
- TimeUnit.SECONDS, new LinkedBlockingQueue<>(5));
- //生成证书报告的
- CompletableFuture certificateFutureTask = CompletableFuture.supplyAsync(
- () -> createCertificateFile(request), threadPool);
- //生成原始记录的线程
- CompletableFuture originalFutureTask = CompletableFuture.supplyAsync(
- () -> createOriginalFile(request), threadPool);
- //等到所有线程异步结束
- CompletableFuture combinedFuture = CompletableFuture.allOf(certificateFutureTask, originalFutureTask);
- combinedFuture.thenRun(() -> {
- try {
- //获取结果
- String certificateFileUrl = certificateFutureTask.join();
- String originalRecordFileUrl = originalFutureTask.join();
- BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
- if (StringUtils.isNotEmpty(certificateFileUrl) || StringUtils.isNotEmpty(originalRecordFileUrl)) {
- //生成证书文件
- request.setCertificateFile(certificateFileUrl);
- //原始记录文件
- request.setOriginalRecordFile(originalRecordFileUrl);
- //更新记录
- int updateFlag = bizBusinessMapper.updateById(request);
- Assert.isFalse(updateFlag <= 0, () -> {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- });
- } else {
- //生成证书失败,删除保存的记录
- bizBusinessMapper.deleteById(request);
- throw new BusinessException(BusinessExceptionEnum.MEASURE_FILE_CREATE_FAILED);
- }
- } catch (Exception ex) {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- }
- }).join();
- }
-
- private String createCertificateFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
- try {
- //过滤不能生成原始记录的报告
- if (checkOutUnablePrint(measureItemInfo)) {
- return "";
- }
- if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
- List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
- bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
- measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
- }
- Map map = BeanUtil.beanToMap(measureItemInfo);
- //准备封面参数
- prepareCoverParams(map, measureItemInfo.getLabCode());
- List customTemplateUrls = new ArrayList<>();
- BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
- //这一块逻辑比较复杂
- customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", measureItemInfo.getMeasureCategoryName()));
- customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", "数字记录表内容"));
- map.put("id", snowflakeUtil.nextId());
- //除了选用的模板不一致,模板配置流程是一致的
- return printFileRegister.registerPrintFile(MEASURE_DATA, "证书打印", null, map, true, null, customTemplateUrls);
- } catch (Exception ex) {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- }
- }
-
- /**
- * 创建原始记录文件
- */
- private String createOriginalFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
- try {
- if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
- List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
- bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
- measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
- }
- Map map = BeanUtil.beanToMap(measureItemInfo);
- List customTemplateUrls = new ArrayList<>();
- BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
- //准备封面参数
- prepareCoverParams(map, measureItemInfo.getLabCode());
- //定制化原始记录参数
- prepareCustomCoverParams(map, measureItemInfo.getMeasureDataCalibratorList());
- //这一块逻辑比较复杂
- customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "1", measureItemInfo.getItemCategoryName()));
- //与证书模板区分
- map.put("id", snowflakeUtil.nextId());
- //除了选用的模板不一致,模板配置流程是一致的
- return printFileRegister.registerPrintFile(MEASURE_DATA, "原始记录打印", null, map, true, null, customTemplateUrls);
- } catch (Exception ex) {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- }
- }
-
- /**
- * 检查是否能生成证书
- */
- private Boolean checkOutUnablePrint(BizBusinessDeviceMeasureApproval measureItemInfo) {
- //通过检定项名称,获取对应的模块配置列表
- if (StringUtils.isNotEmpty(measureItemInfo.getItemCategoryName())) {
- if (MEASURE_ITEMS_WITHOUT_CERTIFICATE.contains(measureItemInfo.getItemCategoryName())) {
- log.warn(BusinessExceptionEnum.ITEM_CATEGORY_NOT_NULL.getMessage());
- return true;
- }
- if (CHECKOUT_REPORT.equals(measureItemInfo.getMeasureCategoryName())) {
- log.warn(BusinessExceptionEnum.TEST_CATEGORY_IS_NONE.getMessage());
- return true;
- }
- } else {
- log.warn(BusinessExceptionEnum.ITEM_CATEGORY_IS_NULL.getMessage());
- return true;
- }
- return false;
- }
-
- /**
- * 填充固定的信息参数
- */
- private void prepareCoverParams(Map map, String labCode) {
- //技术文件处理
- if (map.containsKey("technologyFile") && ObjectUtils.isNotEmpty(map.get("technologyFile"))) {
- //技术文件用逗号隔开
- String[] technologyFiles = ((String) map.get("technologyFile")).split(",");
- List technologyFileList = Arrays.asList(technologyFiles);
- map.put("technologyFileList", technologyFileList);
- }
- //健壮性校验
- if (StringUtils.isEmpty(labCode)) {
- log.warn("组织接口不能传入为空,打印文档生成文档填充组织失败...");
- return;
- }
- //西昌海口基本信息录入
- if ("x".equals(labCode)) {
- map.put("s", XICHANG);
- map.put("communicationAddress", XICHANG_ADDRESS);
- map.put("labAddress", XICHANG_ADDRESS);
- map.put("phone", XICHANG_PHONE);
- map.put("postalCode", XICHANG_POSTAL_CODE);
- } else {
- map.put("s", HAIKOU);
- map.put("communicationAddress", HAIKOU_ADDRESS);
- map.put("labAddress", HAIKOU_ADDRESS);
- map.put("phone", HAIKOU_PHONE);
- map.put("postalCode", HAIKOU_POSTAL_CODE);
- }
- }
-
- private void prepareCustomCoverParams(Map map, List measureDataCalibrators) {
- //定制参数
- doCustomParam(map, measureDataCalibrators);
- //初始化方框
- map.put("test", "\uF0A3");
- map.put("calibrate", "\uF0A3");
- map.put("measure", "\uF0A3");
- //选择方框
- switch ((String) map.get("measureCategoryName")) {
- case TEST_REPORT:
- map.put("test", "\uF052");
- break;
- case CALIBRATE_REPORT:
- map.put("calibrate", "\uF052");
- break;
- case MEASURE_REPORT:
- map.put("measure", "\uF052");
- break;
- default:
- return;
- }
- //填充有效日期
- if (ObjectUtils.isNotEmpty(map.get(MEASURE_VALID_DATE))) {
- String measureValidDate = (String) map.get(MEASURE_VALID_DATE);
- Calendar calendar = Calendar.getInstance();
- try {
- calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate));
- } catch (Exception e) {
- throw new BusinessException(1500, String.format(measureValidDate, "检定有效日期,格式不正确"));
- }
- //设置时间
- map.put(MEASURE_VALID_Y, calendar.get(Calendar.YEAR));
- map.put(MEASURE_VALID_M, calendar.get(Calendar.MONTH) + 1);
- map.put(MEASURE_VALID_D, calendar.get(Calendar.DAY_OF_MONTH));
- }
-
- }
-
- /**
- * 直流电压表没有HZ
- * 多功能
- *
- * @param map
- */
- private void doCustomParam(Map map, List measureDataCalibrators) {
- if (StringUtils.isNotEmpty((String) map.get("itemCategoryName"))) {
- //直流表,交流表 75mv电压表定制表格内容
- if (((String) map.get("itemCategoryName")).contains("交流")) {
- map.put("fName", "频率:");
- map.put("frequency", measureDataCalibrators.get(0).getFrequency());
- map.put("frequencyUnit", measureDataCalibrators.get(0).getFrequencyUnit());
- }
- //多功能电力参数仪定制表格内容
- if (((String) map.get("itemCategoryName")).contains("多功能")) {
- Map> measureDataMap = measureDataCalibrators.stream().collect(
- Collectors.groupingBy(BizBusinessDeviceMeasureDataCalibrator::getParams)
- );
- if (measureDataMap.containsKey("ACV") && CollectionUtils.isNotEmpty(measureDataMap.get("ACV"))) {
- map.put("frequency2", measureDataMap.get("ACV").get(0).getFrequency());
- map.put("frequencyUnit2", measureDataMap.get("ACV").get(0).getFrequencyUnit());
- map.put("unit2", measureDataMap.get("ACV").get(0).getUnit());
- map.put("measureDataCalibratorListV", measureDataMap.get("ACV"));
- }
- if (measureDataMap.containsKey("ACI") && CollectionUtils.isNotEmpty(measureDataMap.get("ACI"))) {
- map.put("frequency1", measureDataMap.get("ACI").get(0).getFrequency());
- map.put("frequencyUnit1", measureDataMap.get("ACI").get(0).getFrequencyUnit());
- map.put("unit1", measureDataMap.get("ACI").get(0).getUnit());
- map.put("measureDataCalibratorListI", measureDataMap.get("ACI"));
- }
- }
- }
- }
@Override
public ReturnDTO detail(Long id) throws Exception {
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java
new file mode 100644
index 0000000..a70a023
--- /dev/null
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java
@@ -0,0 +1,317 @@
+package com.casic.missiles.service.Impl.eqpt;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.casic.missiles.enums.BusinessExceptionEnum;
+import com.casic.missiles.enums.PrintFileModuleNameEnum;
+import com.casic.missiles.enums.business.MeasureCategoryEnum;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.mapper.business.BizBusinessDeviceMeasureApprovalMapper;
+import com.casic.missiles.mapper.equipment.BizEquipmentStandardCheckRecordApprovalMapper;
+import com.casic.missiles.model.business.BizBusinessDeviceMeasureApproval;
+import com.casic.missiles.model.business.BizBusinessDeviceMeasureDataCalibrator;
+import com.casic.missiles.model.equipment.BizEquipmentInfo;
+import com.casic.missiles.model.equipment.BizEquipmentStandardCheckRecordApproval;
+import com.casic.missiles.service.listeners.register.PrintFileRegister;
+import com.casic.missiles.utils.SnowflakeUtil;
+import com.casic.missiles.utils.SpringContextUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+/**
+ * 通用的装置数据提供器
+ *
+ * @author cz
+ * @date 2023-10-31
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class GenericEqptDataProvider implements PrintFileModuleNameEnum, MeasureCategoryEnum {
+
+ private final PrintFileRegister printFileRegister;
+ private final SnowflakeUtil snowflakeUtil;
+ private ThreadPoolExecutor threadPool = new ThreadPoolExecutor(4, 10, 100,
+ TimeUnit.SECONDS, new LinkedBlockingQueue<>(10));
+
+ /**
+ * 生成更新证书的任务
+ */
+ public void checkCertificateTask(BizEquipmentStandardCheckRecordApproval request) {
+ //生成核查记录单
+ String checkCertificateFileUrl = checkCertificateFile(request);
+ BizEquipmentStandardCheckRecordApprovalMapper bizRecordApprovalMapper = SpringContextUtil.getBean(BizEquipmentStandardCheckRecordApprovalMapper.class);
+
+ if (StringUtils.isNotEmpty(checkCertificateFileUrl)) {
+ //原始记录文件
+ request.setCheckRecordFile(checkCertificateFileUrl);
+ //更新记录
+ int updateFlag = bizRecordApprovalMapper.updateById(request);
+ Assert.isFalse(updateFlag <= 0, () -> {
+ throw new BusinessException(BusinessExceptionEnum.CHECK_APPROVAL_UPDATE_FAILED);
+ });
+ } else {
+ //生成证书失败,删除保存的记录
+ bizRecordApprovalMapper.deleteById(request);
+ throw new BusinessException(BusinessExceptionEnum.CHECK_FILE_CREATE_FAILED);
+ }
+ }
+
+
+ /**
+ * 生成更新证书的任务
+ */
+ public void measureCertificateTask(BizBusinessDeviceMeasureApproval request) {
+ //生成证书报告的
+ CompletableFuture certificateFutureTask = CompletableFuture.supplyAsync(
+ () -> createCertificateFile(request), threadPool);
+ //生成原始记录的线程
+ CompletableFuture originalFutureTask = CompletableFuture.supplyAsync(
+ () -> createOriginalFile(request), threadPool);
+ //等到所有线程异步结束
+ CompletableFuture combinedFuture = CompletableFuture.allOf(certificateFutureTask, originalFutureTask);
+ combinedFuture.thenRun(() -> {
+ try {
+ //获取结果
+ String certificateFileUrl = certificateFutureTask.join();
+ String originalRecordFileUrl = originalFutureTask.join();
+ BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
+ if (StringUtils.isNotEmpty(certificateFileUrl) || StringUtils.isNotEmpty(originalRecordFileUrl)) {
+ //生成证书文件
+ request.setCertificateFile(certificateFileUrl);
+ //原始记录文件
+ request.setOriginalRecordFile(originalRecordFileUrl);
+ //更新记录
+ int updateFlag = bizBusinessMapper.updateById(request);
+ Assert.isFalse(updateFlag <= 0, () -> {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ });
+ } else {
+ //生成证书失败,删除保存的记录
+ bizBusinessMapper.deleteById(request);
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_FILE_CREATE_FAILED);
+ }
+ } catch (Exception ex) {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ }
+ }).join();
+ }
+
+ private String checkCertificateFile(BizEquipmentStandardCheckRecordApproval request) {
+ for (BizEquipmentInfo checkEquipment : request.getCheckEquipmentList()) {
+ checkEquipment.setEquipmentType("测量设备");
+ }
+ try {
+ //健壮性哦安短
+ if (ObjectUtils.isEmpty(request)) {
+ return "";
+ }
+ Map map = BeanUtil.beanToMap(request);
+ map.put("upToStandard", "\uF0A3");
+ map.put("belowStandard", "\uF0A3");
+ map.put("test", "\uF052");
+ //除了选用的模板不一致,模板配置流程是一致的
+ return printFileRegister.registerPrintFile(MULTIFUNCTION_CHECK_DATA, "数据打印", null, map, true, null, null);
+ } catch (Exception ex) {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ }
+ }
+
+ private String createCertificateFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
+ try {
+ //过滤不能生成原始记录的报告
+ if (checkOutUnablePrint(measureItemInfo)) {
+ return "";
+ }
+ if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
+ List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
+ bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
+ measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
+ }
+ Map map = BeanUtil.beanToMap(measureItemInfo);
+ //准备封面参数
+ prepareCoverParams(map, measureItemInfo.getLabCode());
+ List customTemplateUrls = new ArrayList<>();
+ BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
+ //这一块逻辑比较复杂
+ customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", measureItemInfo.getMeasureCategoryName()));
+ customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", "数字记录表内容"));
+ map.put("id", snowflakeUtil.nextId());
+ //除了选用的模板不一致,模板配置流程是一致的
+ return printFileRegister.registerPrintFile(MEASURE_DATA, "证书打印", null, map, true, null, customTemplateUrls);
+ } catch (Exception ex) {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ }
+ }
+
+ /**
+ * 创建原始记录文件
+ */
+ private String createOriginalFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
+ try {
+ if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
+ List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
+ bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
+ measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
+ }
+ Map map = BeanUtil.beanToMap(measureItemInfo);
+ List customTemplateUrls = new ArrayList<>();
+ BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
+ //准备封面参数
+ prepareCoverParams(map, measureItemInfo.getLabCode());
+ //定制化原始记录参数
+ prepareCustomCoverParams(map, measureItemInfo.getMeasureDataCalibratorList());
+ //这一块逻辑比较复杂
+ customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "1", measureItemInfo.getItemCategoryName()));
+
+ //与证书模板区分
+ map.put("id", snowflakeUtil.nextId());
+ //除了选用的模板不一致,模板配置流程是一致的
+ return printFileRegister.registerPrintFile(MEASURE_DATA, "原始记录打印", null, map, true, null, customTemplateUrls);
+ } catch (Exception ex) {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ }
+ }
+
+ /**
+ * 检查是否能生成证书
+ */
+ private Boolean checkOutUnablePrint(BizBusinessDeviceMeasureApproval measureItemInfo) {
+ //通过检定项名称,获取对应的模块配置列表
+ if (StringUtils.isNotEmpty(measureItemInfo.getItemCategoryName())) {
+ if (MEASURE_ITEMS_WITHOUT_CERTIFICATE.contains(measureItemInfo.getItemCategoryName())) {
+ log.warn(BusinessExceptionEnum.ITEM_CATEGORY_NOT_NULL.getMessage());
+ return true;
+ }
+ if (CHECKOUT_REPORT.equals(measureItemInfo.getMeasureCategoryName())) {
+ log.warn(BusinessExceptionEnum.TEST_CATEGORY_IS_NONE.getMessage());
+ return true;
+ }
+ } else {
+ log.warn(BusinessExceptionEnum.ITEM_CATEGORY_IS_NULL.getMessage());
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * 填充固定的信息参数
+ */
+ private void prepareCoverParams(Map map, String labCode) {
+ //技术文件处理
+ if (map.containsKey("technologyFile") && ObjectUtils.isNotEmpty(map.get("technologyFile"))) {
+ //技术文件用逗号隔开
+ String[] technologyFiles = ((String) map.get("technologyFile")).split(",");
+ List technologyFileList = Arrays.asList(technologyFiles);
+ map.put("technologyFileList", technologyFileList);
+ }
+ //健壮性校验
+ if (StringUtils.isEmpty(labCode)) {
+ log.warn("组织接口不能传入为空,打印文档生成文档填充组织失败...");
+ return;
+ }
+ //西昌海口基本信息录入
+ if ("x".equals(labCode)) {
+ map.put("s", XICHANG);
+ map.put("communicationAddress", XICHANG_ADDRESS);
+ map.put("labAddress", XICHANG_ADDRESS);
+ map.put("phone", XICHANG_PHONE);
+ map.put("postalCode", XICHANG_POSTAL_CODE);
+ } else {
+ map.put("s", HAIKOU);
+ map.put("communicationAddress", HAIKOU_ADDRESS);
+ map.put("labAddress", HAIKOU_ADDRESS);
+ map.put("phone", HAIKOU_PHONE);
+ map.put("postalCode", HAIKOU_POSTAL_CODE);
+ }
+ }
+
+ private void prepareCustomCoverParams(Map map, List measureDataCalibrators) {
+ //定制参数
+ doCustomParam(map, measureDataCalibrators);
+ //初始化方框
+ map.put("test", "\uF0A3");
+ map.put("calibrate", "\uF0A3");
+ map.put("measure", "\uF0A3");
+ //选择方框
+ switch ((String) map.get("measureCategoryName")) {
+ case TEST_REPORT:
+ map.put("test", "\uF052");
+ break;
+ case CALIBRATE_REPORT:
+ map.put("calibrate", "\uF052");
+ break;
+ case MEASURE_REPORT:
+ map.put("measure", "\uF052");
+ break;
+ default:
+ return;
+ }
+ //填充有效日期
+ if (ObjectUtils.isNotEmpty(map.get(MEASURE_VALID_DATE))) {
+ String measureValidDate = (String) map.get(MEASURE_VALID_DATE);
+ Calendar calendar = Calendar.getInstance();
+ try {
+ calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate));
+ } catch (Exception e) {
+ throw new BusinessException(1500, String.format(measureValidDate, "检定有效日期,格式不正确"));
+ }
+ //设置时间
+ map.put(MEASURE_VALID_Y, calendar.get(Calendar.YEAR));
+ map.put(MEASURE_VALID_M, calendar.get(Calendar.MONTH) + 1);
+ map.put(MEASURE_VALID_D, calendar.get(Calendar.DAY_OF_MONTH));
+ }
+
+ }
+
+ /**
+ * 直流电压表没有HZ
+ * 多功能
+ *
+ * @param map
+ */
+ private void doCustomParam(Map map, List measureDataCalibrators) {
+ if (StringUtils.isNotEmpty((String) map.get("itemCategoryName"))) {
+ //直流表,交流表 75mv电压表定制表格内容
+ if (((String) map.get("itemCategoryName")).contains("交流")) {
+ map.put("fName", "频率:");
+ map.put("frequency", measureDataCalibrators.get(0).getFrequency());
+ map.put("frequencyUnit", measureDataCalibrators.get(0).getFrequencyUnit());
+ }
+ //多功能电力参数仪定制表格内容
+ if (((String) map.get("itemCategoryName")).contains("多功能")) {
+ Map> measureDataMap = measureDataCalibrators.stream().collect(
+ Collectors.groupingBy(BizBusinessDeviceMeasureDataCalibrator::getParams)
+ );
+ if (measureDataMap.containsKey("ACV") && CollectionUtils.isNotEmpty(measureDataMap.get("ACV"))) {
+ map.put("frequency2", measureDataMap.get("ACV").get(0).getFrequency());
+ map.put("frequencyUnit2", measureDataMap.get("ACV").get(0).getFrequencyUnit());
+ map.put("unit2", measureDataMap.get("ACV").get(0).getUnit());
+ map.put("measureDataCalibratorListV", measureDataMap.get("ACV"));
+ }
+ if (measureDataMap.containsKey("ACI") && CollectionUtils.isNotEmpty(measureDataMap.get("ACI"))) {
+ map.put("frequency1", measureDataMap.get("ACI").get(0).getFrequency());
+ map.put("frequencyUnit1", measureDataMap.get("ACI").get(0).getFrequencyUnit());
+ map.put("unit1", measureDataMap.get("ACI").get(0).getUnit());
+ map.put("measureDataCalibratorListI", measureDataMap.get("ACI"));
+ }
+ }
+ }
+ }
+
+}
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index a5f9ad1..ce53a75 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -80,8 +80,10 @@
ITEM_CATEGORY_IS_NULL(2616, "检定类型为空,页面逻辑错误,不能执行打印"),
ITEM_CATEGORY_NOT_NULL(2617, "该检定类型没有证书,请注意"),
TEST_CATEGORY_IS_NONE(2618, "测试报告没有检定证书,请注意"),
- MEASURE_APPROVAL_UPDATE_FAILED(2619, "检定审批更新至草稿箱失败"),
- MEASURE_FILE_CREATE_FAILED(2620, "检定数据审批文件生成失败"),
+ MEASURE_APPROVAL_UPDATE_FAILED(2619, "多功能检定审批更新至草稿箱失败"),
+ MEASURE_FILE_CREATE_FAILED(2620, "多功能检定数据审批文件生成失败"),
+ CHECK_APPROVAL_UPDATE_FAILED(2621, "多功能核查审批更新至草稿箱失败"),
+ CHECK_FILE_CREATE_FAILED(2622, "多功能核查数据审批文件生成失败"),
/**
* 历史遗留备用
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
index 46831fe..2f0877f 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
@@ -22,6 +22,7 @@
String CUSTOMER_EXAMINE_FORM = "要求、委托书及合同评审表";
String MEASURE_DATA = "检定数据管理";
+ String MULTIFUNCTION_CHECK_DATA = "多功能核查数据";
String FILE_CHANGE_FORM = "文件更改申请单";
String FILE_GRANT_NOTICE_FORM = "文件发放通知单";
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
index 04ab11f..91097b7 100644
--- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
@@ -329,4 +329,8 @@
@TableField(exist = false)
private Integer approvalType;
+
+ @ApiModelProperty(value = "设备类型(打印扩展使用,任何时候不需要传)", dataType = "String")
+ @TableField(exist = false)
+ private String equipmentType;
}
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
index b7c52f1..a5d6456 100644
--- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
@@ -12,6 +12,7 @@
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
+import java.util.List;
/**
*
@@ -143,4 +144,33 @@
@TableField(exist = false)
private String checkEquipmentModel;
+ @ApiModelProperty(value = "核查记录文件名称", dataType = "String")
+ private String checkRecordFile;
+
+ @ApiModelProperty(value = "检查日期(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String checkDate;
+
+
+ @ApiModelProperty(value = "检测地址(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String checkAddress;
+
+ @ApiModelProperty(value = "温度(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String temperature;
+
+ @ApiModelProperty(value = "湿度(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String humidity;
+
+ @ApiModelProperty(value = "核查标准设备(打印)", dataType = "Object")
+ @TableField(exist = false)
+ private List checkEquipmentList;
+
+
+ @ApiModelProperty(value = "被核查标准设备(打印)", dataType = "Object")
+ @TableField(exist = false)
+ private BizEquipmentInfo equipmentInfo;
+
}
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java
index bb66382..acf9ef6 100644
--- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java
@@ -26,6 +26,7 @@
import com.casic.missiles.model.business.BizBusinessDeviceMeasureDataCalibrator;
import com.casic.missiles.model.business.BizBusinessDeviceMeasureInfo;
import com.casic.missiles.service.Impl.GeneralApprovalServiceImpl;
+import com.casic.missiles.service.Impl.eqpt.GenericEqptDataProvider;
import com.casic.missiles.service.business.IBizBusinessDeviceMeasureApprovalService;
import com.casic.missiles.service.listeners.register.PrintFileRegister;
import com.casic.missiles.utils.DictCodeUtils;
@@ -52,13 +53,12 @@
* @since 2023-10-11
*/
@Service
-public class BizBusinessDeviceMeasureApprovalServiceImpl extends GeneralApprovalServiceImpl implements IBizBusinessDeviceMeasureApprovalService, PrintFileModuleNameEnum, MeasureCategoryEnum {
+public class BizBusinessDeviceMeasureApprovalServiceImpl extends GeneralApprovalServiceImpl implements IBizBusinessDeviceMeasureApprovalService{
@Resource
private BusinessLabExecutiveInfoMapper labExecutiveInfoMapper;
@Autowired
- private PrintFileRegister printFileRegister;
- @Resource
- private SnowflakeUtil snowflakeUtil;
+ private GenericEqptDataProvider genericEqptDataProvider;
+
@Override
public ReturnDTO addMeasureApproval(BizBusinessDeviceMeasureApproval request) {
@@ -76,235 +76,14 @@
Assert.isFalse(row <= 0, () -> {
throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_SAVE_FAILED);
});
- updateCertificateTask(request);
+ genericEqptDataProvider.measureCertificateTask(request);
DeviceMeasureApprovalSaveResponse saveResponse = new DeviceMeasureApprovalSaveResponse();
saveResponse.setId(request.getId());
saveResponse.setCertNo(certNo);
return ReturnUtil.success(saveResponse);
}
- /**
- * 生成更新证书的任务,内部类
- */
- public void updateCertificateTask(BizBusinessDeviceMeasureApproval request) {
- ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, 5, 100,
- TimeUnit.SECONDS, new LinkedBlockingQueue<>(5));
- //生成证书报告的
- CompletableFuture certificateFutureTask = CompletableFuture.supplyAsync(
- () -> createCertificateFile(request), threadPool);
- //生成原始记录的线程
- CompletableFuture originalFutureTask = CompletableFuture.supplyAsync(
- () -> createOriginalFile(request), threadPool);
- //等到所有线程异步结束
- CompletableFuture combinedFuture = CompletableFuture.allOf(certificateFutureTask, originalFutureTask);
- combinedFuture.thenRun(() -> {
- try {
- //获取结果
- String certificateFileUrl = certificateFutureTask.join();
- String originalRecordFileUrl = originalFutureTask.join();
- BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
- if (StringUtils.isNotEmpty(certificateFileUrl) || StringUtils.isNotEmpty(originalRecordFileUrl)) {
- //生成证书文件
- request.setCertificateFile(certificateFileUrl);
- //原始记录文件
- request.setOriginalRecordFile(originalRecordFileUrl);
- //更新记录
- int updateFlag = bizBusinessMapper.updateById(request);
- Assert.isFalse(updateFlag <= 0, () -> {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- });
- } else {
- //生成证书失败,删除保存的记录
- bizBusinessMapper.deleteById(request);
- throw new BusinessException(BusinessExceptionEnum.MEASURE_FILE_CREATE_FAILED);
- }
- } catch (Exception ex) {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- }
- }).join();
- }
-
- private String createCertificateFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
- try {
- //过滤不能生成原始记录的报告
- if (checkOutUnablePrint(measureItemInfo)) {
- return "";
- }
- if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
- List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
- bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
- measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
- }
- Map map = BeanUtil.beanToMap(measureItemInfo);
- //准备封面参数
- prepareCoverParams(map, measureItemInfo.getLabCode());
- List customTemplateUrls = new ArrayList<>();
- BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
- //这一块逻辑比较复杂
- customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", measureItemInfo.getMeasureCategoryName()));
- customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", "数字记录表内容"));
- map.put("id", snowflakeUtil.nextId());
- //除了选用的模板不一致,模板配置流程是一致的
- return printFileRegister.registerPrintFile(MEASURE_DATA, "证书打印", null, map, true, null, customTemplateUrls);
- } catch (Exception ex) {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- }
- }
-
- /**
- * 创建原始记录文件
- */
- private String createOriginalFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
- try {
- if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
- List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
- bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
- measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
- }
- Map map = BeanUtil.beanToMap(measureItemInfo);
- List customTemplateUrls = new ArrayList<>();
- BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
- //准备封面参数
- prepareCoverParams(map, measureItemInfo.getLabCode());
- //定制化原始记录参数
- prepareCustomCoverParams(map, measureItemInfo.getMeasureDataCalibratorList());
- //这一块逻辑比较复杂
- customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "1", measureItemInfo.getItemCategoryName()));
- //与证书模板区分
- map.put("id", snowflakeUtil.nextId());
- //除了选用的模板不一致,模板配置流程是一致的
- return printFileRegister.registerPrintFile(MEASURE_DATA, "原始记录打印", null, map, true, null, customTemplateUrls);
- } catch (Exception ex) {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- }
- }
-
- /**
- * 检查是否能生成证书
- */
- private Boolean checkOutUnablePrint(BizBusinessDeviceMeasureApproval measureItemInfo) {
- //通过检定项名称,获取对应的模块配置列表
- if (StringUtils.isNotEmpty(measureItemInfo.getItemCategoryName())) {
- if (MEASURE_ITEMS_WITHOUT_CERTIFICATE.contains(measureItemInfo.getItemCategoryName())) {
- log.warn(BusinessExceptionEnum.ITEM_CATEGORY_NOT_NULL.getMessage());
- return true;
- }
- if (CHECKOUT_REPORT.equals(measureItemInfo.getMeasureCategoryName())) {
- log.warn(BusinessExceptionEnum.TEST_CATEGORY_IS_NONE.getMessage());
- return true;
- }
- } else {
- log.warn(BusinessExceptionEnum.ITEM_CATEGORY_IS_NULL.getMessage());
- return true;
- }
- return false;
- }
-
- /**
- * 填充固定的信息参数
- */
- private void prepareCoverParams(Map map, String labCode) {
- //技术文件处理
- if (map.containsKey("technologyFile") && ObjectUtils.isNotEmpty(map.get("technologyFile"))) {
- //技术文件用逗号隔开
- String[] technologyFiles = ((String) map.get("technologyFile")).split(",");
- List technologyFileList = Arrays.asList(technologyFiles);
- map.put("technologyFileList", technologyFileList);
- }
- //健壮性校验
- if (StringUtils.isEmpty(labCode)) {
- log.warn("组织接口不能传入为空,打印文档生成文档填充组织失败...");
- return;
- }
- //西昌海口基本信息录入
- if ("x".equals(labCode)) {
- map.put("s", XICHANG);
- map.put("communicationAddress", XICHANG_ADDRESS);
- map.put("labAddress", XICHANG_ADDRESS);
- map.put("phone", XICHANG_PHONE);
- map.put("postalCode", XICHANG_POSTAL_CODE);
- } else {
- map.put("s", HAIKOU);
- map.put("communicationAddress", HAIKOU_ADDRESS);
- map.put("labAddress", HAIKOU_ADDRESS);
- map.put("phone", HAIKOU_PHONE);
- map.put("postalCode", HAIKOU_POSTAL_CODE);
- }
- }
-
- private void prepareCustomCoverParams(Map map, List measureDataCalibrators) {
- //定制参数
- doCustomParam(map, measureDataCalibrators);
- //初始化方框
- map.put("test", "\uF0A3");
- map.put("calibrate", "\uF0A3");
- map.put("measure", "\uF0A3");
- //选择方框
- switch ((String) map.get("measureCategoryName")) {
- case TEST_REPORT:
- map.put("test", "\uF052");
- break;
- case CALIBRATE_REPORT:
- map.put("calibrate", "\uF052");
- break;
- case MEASURE_REPORT:
- map.put("measure", "\uF052");
- break;
- default:
- return;
- }
- //填充有效日期
- if (ObjectUtils.isNotEmpty(map.get(MEASURE_VALID_DATE))) {
- String measureValidDate = (String) map.get(MEASURE_VALID_DATE);
- Calendar calendar = Calendar.getInstance();
- try {
- calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate));
- } catch (Exception e) {
- throw new BusinessException(1500, String.format(measureValidDate, "检定有效日期,格式不正确"));
- }
- //设置时间
- map.put(MEASURE_VALID_Y, calendar.get(Calendar.YEAR));
- map.put(MEASURE_VALID_M, calendar.get(Calendar.MONTH) + 1);
- map.put(MEASURE_VALID_D, calendar.get(Calendar.DAY_OF_MONTH));
- }
-
- }
-
- /**
- * 直流电压表没有HZ
- * 多功能
- *
- * @param map
- */
- private void doCustomParam(Map map, List measureDataCalibrators) {
- if (StringUtils.isNotEmpty((String) map.get("itemCategoryName"))) {
- //直流表,交流表 75mv电压表定制表格内容
- if (((String) map.get("itemCategoryName")).contains("交流")) {
- map.put("fName", "频率:");
- map.put("frequency", measureDataCalibrators.get(0).getFrequency());
- map.put("frequencyUnit", measureDataCalibrators.get(0).getFrequencyUnit());
- }
- //多功能电力参数仪定制表格内容
- if (((String) map.get("itemCategoryName")).contains("多功能")) {
- Map> measureDataMap = measureDataCalibrators.stream().collect(
- Collectors.groupingBy(BizBusinessDeviceMeasureDataCalibrator::getParams)
- );
- if (measureDataMap.containsKey("ACV") && CollectionUtils.isNotEmpty(measureDataMap.get("ACV"))) {
- map.put("frequency2", measureDataMap.get("ACV").get(0).getFrequency());
- map.put("frequencyUnit2", measureDataMap.get("ACV").get(0).getFrequencyUnit());
- map.put("unit2", measureDataMap.get("ACV").get(0).getUnit());
- map.put("measureDataCalibratorListV", measureDataMap.get("ACV"));
- }
- if (measureDataMap.containsKey("ACI") && CollectionUtils.isNotEmpty(measureDataMap.get("ACI"))) {
- map.put("frequency1", measureDataMap.get("ACI").get(0).getFrequency());
- map.put("frequencyUnit1", measureDataMap.get("ACI").get(0).getFrequencyUnit());
- map.put("unit1", measureDataMap.get("ACI").get(0).getUnit());
- map.put("measureDataCalibratorListI", measureDataMap.get("ACI"));
- }
- }
- }
- }
@Override
public ReturnDTO detail(Long id) throws Exception {
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java
new file mode 100644
index 0000000..a70a023
--- /dev/null
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java
@@ -0,0 +1,317 @@
+package com.casic.missiles.service.Impl.eqpt;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.casic.missiles.enums.BusinessExceptionEnum;
+import com.casic.missiles.enums.PrintFileModuleNameEnum;
+import com.casic.missiles.enums.business.MeasureCategoryEnum;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.mapper.business.BizBusinessDeviceMeasureApprovalMapper;
+import com.casic.missiles.mapper.equipment.BizEquipmentStandardCheckRecordApprovalMapper;
+import com.casic.missiles.model.business.BizBusinessDeviceMeasureApproval;
+import com.casic.missiles.model.business.BizBusinessDeviceMeasureDataCalibrator;
+import com.casic.missiles.model.equipment.BizEquipmentInfo;
+import com.casic.missiles.model.equipment.BizEquipmentStandardCheckRecordApproval;
+import com.casic.missiles.service.listeners.register.PrintFileRegister;
+import com.casic.missiles.utils.SnowflakeUtil;
+import com.casic.missiles.utils.SpringContextUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+/**
+ * 通用的装置数据提供器
+ *
+ * @author cz
+ * @date 2023-10-31
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class GenericEqptDataProvider implements PrintFileModuleNameEnum, MeasureCategoryEnum {
+
+ private final PrintFileRegister printFileRegister;
+ private final SnowflakeUtil snowflakeUtil;
+ private ThreadPoolExecutor threadPool = new ThreadPoolExecutor(4, 10, 100,
+ TimeUnit.SECONDS, new LinkedBlockingQueue<>(10));
+
+ /**
+ * 生成更新证书的任务
+ */
+ public void checkCertificateTask(BizEquipmentStandardCheckRecordApproval request) {
+ //生成核查记录单
+ String checkCertificateFileUrl = checkCertificateFile(request);
+ BizEquipmentStandardCheckRecordApprovalMapper bizRecordApprovalMapper = SpringContextUtil.getBean(BizEquipmentStandardCheckRecordApprovalMapper.class);
+
+ if (StringUtils.isNotEmpty(checkCertificateFileUrl)) {
+ //原始记录文件
+ request.setCheckRecordFile(checkCertificateFileUrl);
+ //更新记录
+ int updateFlag = bizRecordApprovalMapper.updateById(request);
+ Assert.isFalse(updateFlag <= 0, () -> {
+ throw new BusinessException(BusinessExceptionEnum.CHECK_APPROVAL_UPDATE_FAILED);
+ });
+ } else {
+ //生成证书失败,删除保存的记录
+ bizRecordApprovalMapper.deleteById(request);
+ throw new BusinessException(BusinessExceptionEnum.CHECK_FILE_CREATE_FAILED);
+ }
+ }
+
+
+ /**
+ * 生成更新证书的任务
+ */
+ public void measureCertificateTask(BizBusinessDeviceMeasureApproval request) {
+ //生成证书报告的
+ CompletableFuture certificateFutureTask = CompletableFuture.supplyAsync(
+ () -> createCertificateFile(request), threadPool);
+ //生成原始记录的线程
+ CompletableFuture originalFutureTask = CompletableFuture.supplyAsync(
+ () -> createOriginalFile(request), threadPool);
+ //等到所有线程异步结束
+ CompletableFuture combinedFuture = CompletableFuture.allOf(certificateFutureTask, originalFutureTask);
+ combinedFuture.thenRun(() -> {
+ try {
+ //获取结果
+ String certificateFileUrl = certificateFutureTask.join();
+ String originalRecordFileUrl = originalFutureTask.join();
+ BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
+ if (StringUtils.isNotEmpty(certificateFileUrl) || StringUtils.isNotEmpty(originalRecordFileUrl)) {
+ //生成证书文件
+ request.setCertificateFile(certificateFileUrl);
+ //原始记录文件
+ request.setOriginalRecordFile(originalRecordFileUrl);
+ //更新记录
+ int updateFlag = bizBusinessMapper.updateById(request);
+ Assert.isFalse(updateFlag <= 0, () -> {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ });
+ } else {
+ //生成证书失败,删除保存的记录
+ bizBusinessMapper.deleteById(request);
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_FILE_CREATE_FAILED);
+ }
+ } catch (Exception ex) {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ }
+ }).join();
+ }
+
+ private String checkCertificateFile(BizEquipmentStandardCheckRecordApproval request) {
+ for (BizEquipmentInfo checkEquipment : request.getCheckEquipmentList()) {
+ checkEquipment.setEquipmentType("测量设备");
+ }
+ try {
+ //健壮性哦安短
+ if (ObjectUtils.isEmpty(request)) {
+ return "";
+ }
+ Map map = BeanUtil.beanToMap(request);
+ map.put("upToStandard", "\uF0A3");
+ map.put("belowStandard", "\uF0A3");
+ map.put("test", "\uF052");
+ //除了选用的模板不一致,模板配置流程是一致的
+ return printFileRegister.registerPrintFile(MULTIFUNCTION_CHECK_DATA, "数据打印", null, map, true, null, null);
+ } catch (Exception ex) {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ }
+ }
+
+ private String createCertificateFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
+ try {
+ //过滤不能生成原始记录的报告
+ if (checkOutUnablePrint(measureItemInfo)) {
+ return "";
+ }
+ if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
+ List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
+ bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
+ measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
+ }
+ Map map = BeanUtil.beanToMap(measureItemInfo);
+ //准备封面参数
+ prepareCoverParams(map, measureItemInfo.getLabCode());
+ List customTemplateUrls = new ArrayList<>();
+ BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
+ //这一块逻辑比较复杂
+ customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", measureItemInfo.getMeasureCategoryName()));
+ customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", "数字记录表内容"));
+ map.put("id", snowflakeUtil.nextId());
+ //除了选用的模板不一致,模板配置流程是一致的
+ return printFileRegister.registerPrintFile(MEASURE_DATA, "证书打印", null, map, true, null, customTemplateUrls);
+ } catch (Exception ex) {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ }
+ }
+
+ /**
+ * 创建原始记录文件
+ */
+ private String createOriginalFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
+ try {
+ if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
+ List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
+ bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
+ measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
+ }
+ Map map = BeanUtil.beanToMap(measureItemInfo);
+ List customTemplateUrls = new ArrayList<>();
+ BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
+ //准备封面参数
+ prepareCoverParams(map, measureItemInfo.getLabCode());
+ //定制化原始记录参数
+ prepareCustomCoverParams(map, measureItemInfo.getMeasureDataCalibratorList());
+ //这一块逻辑比较复杂
+ customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "1", measureItemInfo.getItemCategoryName()));
+
+ //与证书模板区分
+ map.put("id", snowflakeUtil.nextId());
+ //除了选用的模板不一致,模板配置流程是一致的
+ return printFileRegister.registerPrintFile(MEASURE_DATA, "原始记录打印", null, map, true, null, customTemplateUrls);
+ } catch (Exception ex) {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ }
+ }
+
+ /**
+ * 检查是否能生成证书
+ */
+ private Boolean checkOutUnablePrint(BizBusinessDeviceMeasureApproval measureItemInfo) {
+ //通过检定项名称,获取对应的模块配置列表
+ if (StringUtils.isNotEmpty(measureItemInfo.getItemCategoryName())) {
+ if (MEASURE_ITEMS_WITHOUT_CERTIFICATE.contains(measureItemInfo.getItemCategoryName())) {
+ log.warn(BusinessExceptionEnum.ITEM_CATEGORY_NOT_NULL.getMessage());
+ return true;
+ }
+ if (CHECKOUT_REPORT.equals(measureItemInfo.getMeasureCategoryName())) {
+ log.warn(BusinessExceptionEnum.TEST_CATEGORY_IS_NONE.getMessage());
+ return true;
+ }
+ } else {
+ log.warn(BusinessExceptionEnum.ITEM_CATEGORY_IS_NULL.getMessage());
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * 填充固定的信息参数
+ */
+ private void prepareCoverParams(Map map, String labCode) {
+ //技术文件处理
+ if (map.containsKey("technologyFile") && ObjectUtils.isNotEmpty(map.get("technologyFile"))) {
+ //技术文件用逗号隔开
+ String[] technologyFiles = ((String) map.get("technologyFile")).split(",");
+ List technologyFileList = Arrays.asList(technologyFiles);
+ map.put("technologyFileList", technologyFileList);
+ }
+ //健壮性校验
+ if (StringUtils.isEmpty(labCode)) {
+ log.warn("组织接口不能传入为空,打印文档生成文档填充组织失败...");
+ return;
+ }
+ //西昌海口基本信息录入
+ if ("x".equals(labCode)) {
+ map.put("s", XICHANG);
+ map.put("communicationAddress", XICHANG_ADDRESS);
+ map.put("labAddress", XICHANG_ADDRESS);
+ map.put("phone", XICHANG_PHONE);
+ map.put("postalCode", XICHANG_POSTAL_CODE);
+ } else {
+ map.put("s", HAIKOU);
+ map.put("communicationAddress", HAIKOU_ADDRESS);
+ map.put("labAddress", HAIKOU_ADDRESS);
+ map.put("phone", HAIKOU_PHONE);
+ map.put("postalCode", HAIKOU_POSTAL_CODE);
+ }
+ }
+
+ private void prepareCustomCoverParams(Map map, List measureDataCalibrators) {
+ //定制参数
+ doCustomParam(map, measureDataCalibrators);
+ //初始化方框
+ map.put("test", "\uF0A3");
+ map.put("calibrate", "\uF0A3");
+ map.put("measure", "\uF0A3");
+ //选择方框
+ switch ((String) map.get("measureCategoryName")) {
+ case TEST_REPORT:
+ map.put("test", "\uF052");
+ break;
+ case CALIBRATE_REPORT:
+ map.put("calibrate", "\uF052");
+ break;
+ case MEASURE_REPORT:
+ map.put("measure", "\uF052");
+ break;
+ default:
+ return;
+ }
+ //填充有效日期
+ if (ObjectUtils.isNotEmpty(map.get(MEASURE_VALID_DATE))) {
+ String measureValidDate = (String) map.get(MEASURE_VALID_DATE);
+ Calendar calendar = Calendar.getInstance();
+ try {
+ calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate));
+ } catch (Exception e) {
+ throw new BusinessException(1500, String.format(measureValidDate, "检定有效日期,格式不正确"));
+ }
+ //设置时间
+ map.put(MEASURE_VALID_Y, calendar.get(Calendar.YEAR));
+ map.put(MEASURE_VALID_M, calendar.get(Calendar.MONTH) + 1);
+ map.put(MEASURE_VALID_D, calendar.get(Calendar.DAY_OF_MONTH));
+ }
+
+ }
+
+ /**
+ * 直流电压表没有HZ
+ * 多功能
+ *
+ * @param map
+ */
+ private void doCustomParam(Map map, List measureDataCalibrators) {
+ if (StringUtils.isNotEmpty((String) map.get("itemCategoryName"))) {
+ //直流表,交流表 75mv电压表定制表格内容
+ if (((String) map.get("itemCategoryName")).contains("交流")) {
+ map.put("fName", "频率:");
+ map.put("frequency", measureDataCalibrators.get(0).getFrequency());
+ map.put("frequencyUnit", measureDataCalibrators.get(0).getFrequencyUnit());
+ }
+ //多功能电力参数仪定制表格内容
+ if (((String) map.get("itemCategoryName")).contains("多功能")) {
+ Map> measureDataMap = measureDataCalibrators.stream().collect(
+ Collectors.groupingBy(BizBusinessDeviceMeasureDataCalibrator::getParams)
+ );
+ if (measureDataMap.containsKey("ACV") && CollectionUtils.isNotEmpty(measureDataMap.get("ACV"))) {
+ map.put("frequency2", measureDataMap.get("ACV").get(0).getFrequency());
+ map.put("frequencyUnit2", measureDataMap.get("ACV").get(0).getFrequencyUnit());
+ map.put("unit2", measureDataMap.get("ACV").get(0).getUnit());
+ map.put("measureDataCalibratorListV", measureDataMap.get("ACV"));
+ }
+ if (measureDataMap.containsKey("ACI") && CollectionUtils.isNotEmpty(measureDataMap.get("ACI"))) {
+ map.put("frequency1", measureDataMap.get("ACI").get(0).getFrequency());
+ map.put("frequencyUnit1", measureDataMap.get("ACI").get(0).getFrequencyUnit());
+ map.put("unit1", measureDataMap.get("ACI").get(0).getUnit());
+ map.put("measureDataCalibratorListI", measureDataMap.get("ACI"));
+ }
+ }
+ }
+ }
+
+}
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentLendServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentLendServiceImpl.java
index 9e8c7fc..060ee8f 100644
--- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentLendServiceImpl.java
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentLendServiceImpl.java
@@ -146,7 +146,6 @@
}
map.put("returnCatalogueNameStr", catalogueNameStr);
}
-
printFileRegister.registerPrintFile(PrintFileModuleNameEnum.EQUIPMENT_LEND, PrintFileModuleNameEnum.EXPORT_TEMPLATE, null, map, exportDTO.isPdf(), response);
}
}
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index a5f9ad1..ce53a75 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -80,8 +80,10 @@
ITEM_CATEGORY_IS_NULL(2616, "检定类型为空,页面逻辑错误,不能执行打印"),
ITEM_CATEGORY_NOT_NULL(2617, "该检定类型没有证书,请注意"),
TEST_CATEGORY_IS_NONE(2618, "测试报告没有检定证书,请注意"),
- MEASURE_APPROVAL_UPDATE_FAILED(2619, "检定审批更新至草稿箱失败"),
- MEASURE_FILE_CREATE_FAILED(2620, "检定数据审批文件生成失败"),
+ MEASURE_APPROVAL_UPDATE_FAILED(2619, "多功能检定审批更新至草稿箱失败"),
+ MEASURE_FILE_CREATE_FAILED(2620, "多功能检定数据审批文件生成失败"),
+ CHECK_APPROVAL_UPDATE_FAILED(2621, "多功能核查审批更新至草稿箱失败"),
+ CHECK_FILE_CREATE_FAILED(2622, "多功能核查数据审批文件生成失败"),
/**
* 历史遗留备用
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
index 46831fe..2f0877f 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
@@ -22,6 +22,7 @@
String CUSTOMER_EXAMINE_FORM = "要求、委托书及合同评审表";
String MEASURE_DATA = "检定数据管理";
+ String MULTIFUNCTION_CHECK_DATA = "多功能核查数据";
String FILE_CHANGE_FORM = "文件更改申请单";
String FILE_GRANT_NOTICE_FORM = "文件发放通知单";
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
index 04ab11f..91097b7 100644
--- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
@@ -329,4 +329,8 @@
@TableField(exist = false)
private Integer approvalType;
+
+ @ApiModelProperty(value = "设备类型(打印扩展使用,任何时候不需要传)", dataType = "String")
+ @TableField(exist = false)
+ private String equipmentType;
}
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
index b7c52f1..a5d6456 100644
--- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
@@ -12,6 +12,7 @@
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
+import java.util.List;
/**
*
@@ -143,4 +144,33 @@
@TableField(exist = false)
private String checkEquipmentModel;
+ @ApiModelProperty(value = "核查记录文件名称", dataType = "String")
+ private String checkRecordFile;
+
+ @ApiModelProperty(value = "检查日期(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String checkDate;
+
+
+ @ApiModelProperty(value = "检测地址(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String checkAddress;
+
+ @ApiModelProperty(value = "温度(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String temperature;
+
+ @ApiModelProperty(value = "湿度(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String humidity;
+
+ @ApiModelProperty(value = "核查标准设备(打印)", dataType = "Object")
+ @TableField(exist = false)
+ private List checkEquipmentList;
+
+
+ @ApiModelProperty(value = "被核查标准设备(打印)", dataType = "Object")
+ @TableField(exist = false)
+ private BizEquipmentInfo equipmentInfo;
+
}
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java
index bb66382..acf9ef6 100644
--- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java
@@ -26,6 +26,7 @@
import com.casic.missiles.model.business.BizBusinessDeviceMeasureDataCalibrator;
import com.casic.missiles.model.business.BizBusinessDeviceMeasureInfo;
import com.casic.missiles.service.Impl.GeneralApprovalServiceImpl;
+import com.casic.missiles.service.Impl.eqpt.GenericEqptDataProvider;
import com.casic.missiles.service.business.IBizBusinessDeviceMeasureApprovalService;
import com.casic.missiles.service.listeners.register.PrintFileRegister;
import com.casic.missiles.utils.DictCodeUtils;
@@ -52,13 +53,12 @@
* @since 2023-10-11
*/
@Service
-public class BizBusinessDeviceMeasureApprovalServiceImpl extends GeneralApprovalServiceImpl implements IBizBusinessDeviceMeasureApprovalService, PrintFileModuleNameEnum, MeasureCategoryEnum {
+public class BizBusinessDeviceMeasureApprovalServiceImpl extends GeneralApprovalServiceImpl implements IBizBusinessDeviceMeasureApprovalService{
@Resource
private BusinessLabExecutiveInfoMapper labExecutiveInfoMapper;
@Autowired
- private PrintFileRegister printFileRegister;
- @Resource
- private SnowflakeUtil snowflakeUtil;
+ private GenericEqptDataProvider genericEqptDataProvider;
+
@Override
public ReturnDTO addMeasureApproval(BizBusinessDeviceMeasureApproval request) {
@@ -76,235 +76,14 @@
Assert.isFalse(row <= 0, () -> {
throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_SAVE_FAILED);
});
- updateCertificateTask(request);
+ genericEqptDataProvider.measureCertificateTask(request);
DeviceMeasureApprovalSaveResponse saveResponse = new DeviceMeasureApprovalSaveResponse();
saveResponse.setId(request.getId());
saveResponse.setCertNo(certNo);
return ReturnUtil.success(saveResponse);
}
- /**
- * 生成更新证书的任务,内部类
- */
- public void updateCertificateTask(BizBusinessDeviceMeasureApproval request) {
- ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, 5, 100,
- TimeUnit.SECONDS, new LinkedBlockingQueue<>(5));
- //生成证书报告的
- CompletableFuture certificateFutureTask = CompletableFuture.supplyAsync(
- () -> createCertificateFile(request), threadPool);
- //生成原始记录的线程
- CompletableFuture originalFutureTask = CompletableFuture.supplyAsync(
- () -> createOriginalFile(request), threadPool);
- //等到所有线程异步结束
- CompletableFuture combinedFuture = CompletableFuture.allOf(certificateFutureTask, originalFutureTask);
- combinedFuture.thenRun(() -> {
- try {
- //获取结果
- String certificateFileUrl = certificateFutureTask.join();
- String originalRecordFileUrl = originalFutureTask.join();
- BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
- if (StringUtils.isNotEmpty(certificateFileUrl) || StringUtils.isNotEmpty(originalRecordFileUrl)) {
- //生成证书文件
- request.setCertificateFile(certificateFileUrl);
- //原始记录文件
- request.setOriginalRecordFile(originalRecordFileUrl);
- //更新记录
- int updateFlag = bizBusinessMapper.updateById(request);
- Assert.isFalse(updateFlag <= 0, () -> {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- });
- } else {
- //生成证书失败,删除保存的记录
- bizBusinessMapper.deleteById(request);
- throw new BusinessException(BusinessExceptionEnum.MEASURE_FILE_CREATE_FAILED);
- }
- } catch (Exception ex) {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- }
- }).join();
- }
-
- private String createCertificateFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
- try {
- //过滤不能生成原始记录的报告
- if (checkOutUnablePrint(measureItemInfo)) {
- return "";
- }
- if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
- List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
- bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
- measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
- }
- Map map = BeanUtil.beanToMap(measureItemInfo);
- //准备封面参数
- prepareCoverParams(map, measureItemInfo.getLabCode());
- List customTemplateUrls = new ArrayList<>();
- BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
- //这一块逻辑比较复杂
- customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", measureItemInfo.getMeasureCategoryName()));
- customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", "数字记录表内容"));
- map.put("id", snowflakeUtil.nextId());
- //除了选用的模板不一致,模板配置流程是一致的
- return printFileRegister.registerPrintFile(MEASURE_DATA, "证书打印", null, map, true, null, customTemplateUrls);
- } catch (Exception ex) {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- }
- }
-
- /**
- * 创建原始记录文件
- */
- private String createOriginalFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
- try {
- if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
- List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
- bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
- measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
- }
- Map map = BeanUtil.beanToMap(measureItemInfo);
- List customTemplateUrls = new ArrayList<>();
- BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
- //准备封面参数
- prepareCoverParams(map, measureItemInfo.getLabCode());
- //定制化原始记录参数
- prepareCustomCoverParams(map, measureItemInfo.getMeasureDataCalibratorList());
- //这一块逻辑比较复杂
- customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "1", measureItemInfo.getItemCategoryName()));
- //与证书模板区分
- map.put("id", snowflakeUtil.nextId());
- //除了选用的模板不一致,模板配置流程是一致的
- return printFileRegister.registerPrintFile(MEASURE_DATA, "原始记录打印", null, map, true, null, customTemplateUrls);
- } catch (Exception ex) {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- }
- }
-
- /**
- * 检查是否能生成证书
- */
- private Boolean checkOutUnablePrint(BizBusinessDeviceMeasureApproval measureItemInfo) {
- //通过检定项名称,获取对应的模块配置列表
- if (StringUtils.isNotEmpty(measureItemInfo.getItemCategoryName())) {
- if (MEASURE_ITEMS_WITHOUT_CERTIFICATE.contains(measureItemInfo.getItemCategoryName())) {
- log.warn(BusinessExceptionEnum.ITEM_CATEGORY_NOT_NULL.getMessage());
- return true;
- }
- if (CHECKOUT_REPORT.equals(measureItemInfo.getMeasureCategoryName())) {
- log.warn(BusinessExceptionEnum.TEST_CATEGORY_IS_NONE.getMessage());
- return true;
- }
- } else {
- log.warn(BusinessExceptionEnum.ITEM_CATEGORY_IS_NULL.getMessage());
- return true;
- }
- return false;
- }
-
- /**
- * 填充固定的信息参数
- */
- private void prepareCoverParams(Map map, String labCode) {
- //技术文件处理
- if (map.containsKey("technologyFile") && ObjectUtils.isNotEmpty(map.get("technologyFile"))) {
- //技术文件用逗号隔开
- String[] technologyFiles = ((String) map.get("technologyFile")).split(",");
- List technologyFileList = Arrays.asList(technologyFiles);
- map.put("technologyFileList", technologyFileList);
- }
- //健壮性校验
- if (StringUtils.isEmpty(labCode)) {
- log.warn("组织接口不能传入为空,打印文档生成文档填充组织失败...");
- return;
- }
- //西昌海口基本信息录入
- if ("x".equals(labCode)) {
- map.put("s", XICHANG);
- map.put("communicationAddress", XICHANG_ADDRESS);
- map.put("labAddress", XICHANG_ADDRESS);
- map.put("phone", XICHANG_PHONE);
- map.put("postalCode", XICHANG_POSTAL_CODE);
- } else {
- map.put("s", HAIKOU);
- map.put("communicationAddress", HAIKOU_ADDRESS);
- map.put("labAddress", HAIKOU_ADDRESS);
- map.put("phone", HAIKOU_PHONE);
- map.put("postalCode", HAIKOU_POSTAL_CODE);
- }
- }
-
- private void prepareCustomCoverParams(Map map, List measureDataCalibrators) {
- //定制参数
- doCustomParam(map, measureDataCalibrators);
- //初始化方框
- map.put("test", "\uF0A3");
- map.put("calibrate", "\uF0A3");
- map.put("measure", "\uF0A3");
- //选择方框
- switch ((String) map.get("measureCategoryName")) {
- case TEST_REPORT:
- map.put("test", "\uF052");
- break;
- case CALIBRATE_REPORT:
- map.put("calibrate", "\uF052");
- break;
- case MEASURE_REPORT:
- map.put("measure", "\uF052");
- break;
- default:
- return;
- }
- //填充有效日期
- if (ObjectUtils.isNotEmpty(map.get(MEASURE_VALID_DATE))) {
- String measureValidDate = (String) map.get(MEASURE_VALID_DATE);
- Calendar calendar = Calendar.getInstance();
- try {
- calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate));
- } catch (Exception e) {
- throw new BusinessException(1500, String.format(measureValidDate, "检定有效日期,格式不正确"));
- }
- //设置时间
- map.put(MEASURE_VALID_Y, calendar.get(Calendar.YEAR));
- map.put(MEASURE_VALID_M, calendar.get(Calendar.MONTH) + 1);
- map.put(MEASURE_VALID_D, calendar.get(Calendar.DAY_OF_MONTH));
- }
-
- }
-
- /**
- * 直流电压表没有HZ
- * 多功能
- *
- * @param map
- */
- private void doCustomParam(Map map, List measureDataCalibrators) {
- if (StringUtils.isNotEmpty((String) map.get("itemCategoryName"))) {
- //直流表,交流表 75mv电压表定制表格内容
- if (((String) map.get("itemCategoryName")).contains("交流")) {
- map.put("fName", "频率:");
- map.put("frequency", measureDataCalibrators.get(0).getFrequency());
- map.put("frequencyUnit", measureDataCalibrators.get(0).getFrequencyUnit());
- }
- //多功能电力参数仪定制表格内容
- if (((String) map.get("itemCategoryName")).contains("多功能")) {
- Map> measureDataMap = measureDataCalibrators.stream().collect(
- Collectors.groupingBy(BizBusinessDeviceMeasureDataCalibrator::getParams)
- );
- if (measureDataMap.containsKey("ACV") && CollectionUtils.isNotEmpty(measureDataMap.get("ACV"))) {
- map.put("frequency2", measureDataMap.get("ACV").get(0).getFrequency());
- map.put("frequencyUnit2", measureDataMap.get("ACV").get(0).getFrequencyUnit());
- map.put("unit2", measureDataMap.get("ACV").get(0).getUnit());
- map.put("measureDataCalibratorListV", measureDataMap.get("ACV"));
- }
- if (measureDataMap.containsKey("ACI") && CollectionUtils.isNotEmpty(measureDataMap.get("ACI"))) {
- map.put("frequency1", measureDataMap.get("ACI").get(0).getFrequency());
- map.put("frequencyUnit1", measureDataMap.get("ACI").get(0).getFrequencyUnit());
- map.put("unit1", measureDataMap.get("ACI").get(0).getUnit());
- map.put("measureDataCalibratorListI", measureDataMap.get("ACI"));
- }
- }
- }
- }
@Override
public ReturnDTO detail(Long id) throws Exception {
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java
new file mode 100644
index 0000000..a70a023
--- /dev/null
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java
@@ -0,0 +1,317 @@
+package com.casic.missiles.service.Impl.eqpt;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.casic.missiles.enums.BusinessExceptionEnum;
+import com.casic.missiles.enums.PrintFileModuleNameEnum;
+import com.casic.missiles.enums.business.MeasureCategoryEnum;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.mapper.business.BizBusinessDeviceMeasureApprovalMapper;
+import com.casic.missiles.mapper.equipment.BizEquipmentStandardCheckRecordApprovalMapper;
+import com.casic.missiles.model.business.BizBusinessDeviceMeasureApproval;
+import com.casic.missiles.model.business.BizBusinessDeviceMeasureDataCalibrator;
+import com.casic.missiles.model.equipment.BizEquipmentInfo;
+import com.casic.missiles.model.equipment.BizEquipmentStandardCheckRecordApproval;
+import com.casic.missiles.service.listeners.register.PrintFileRegister;
+import com.casic.missiles.utils.SnowflakeUtil;
+import com.casic.missiles.utils.SpringContextUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+/**
+ * 通用的装置数据提供器
+ *
+ * @author cz
+ * @date 2023-10-31
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class GenericEqptDataProvider implements PrintFileModuleNameEnum, MeasureCategoryEnum {
+
+ private final PrintFileRegister printFileRegister;
+ private final SnowflakeUtil snowflakeUtil;
+ private ThreadPoolExecutor threadPool = new ThreadPoolExecutor(4, 10, 100,
+ TimeUnit.SECONDS, new LinkedBlockingQueue<>(10));
+
+ /**
+ * 生成更新证书的任务
+ */
+ public void checkCertificateTask(BizEquipmentStandardCheckRecordApproval request) {
+ //生成核查记录单
+ String checkCertificateFileUrl = checkCertificateFile(request);
+ BizEquipmentStandardCheckRecordApprovalMapper bizRecordApprovalMapper = SpringContextUtil.getBean(BizEquipmentStandardCheckRecordApprovalMapper.class);
+
+ if (StringUtils.isNotEmpty(checkCertificateFileUrl)) {
+ //原始记录文件
+ request.setCheckRecordFile(checkCertificateFileUrl);
+ //更新记录
+ int updateFlag = bizRecordApprovalMapper.updateById(request);
+ Assert.isFalse(updateFlag <= 0, () -> {
+ throw new BusinessException(BusinessExceptionEnum.CHECK_APPROVAL_UPDATE_FAILED);
+ });
+ } else {
+ //生成证书失败,删除保存的记录
+ bizRecordApprovalMapper.deleteById(request);
+ throw new BusinessException(BusinessExceptionEnum.CHECK_FILE_CREATE_FAILED);
+ }
+ }
+
+
+ /**
+ * 生成更新证书的任务
+ */
+ public void measureCertificateTask(BizBusinessDeviceMeasureApproval request) {
+ //生成证书报告的
+ CompletableFuture certificateFutureTask = CompletableFuture.supplyAsync(
+ () -> createCertificateFile(request), threadPool);
+ //生成原始记录的线程
+ CompletableFuture originalFutureTask = CompletableFuture.supplyAsync(
+ () -> createOriginalFile(request), threadPool);
+ //等到所有线程异步结束
+ CompletableFuture combinedFuture = CompletableFuture.allOf(certificateFutureTask, originalFutureTask);
+ combinedFuture.thenRun(() -> {
+ try {
+ //获取结果
+ String certificateFileUrl = certificateFutureTask.join();
+ String originalRecordFileUrl = originalFutureTask.join();
+ BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
+ if (StringUtils.isNotEmpty(certificateFileUrl) || StringUtils.isNotEmpty(originalRecordFileUrl)) {
+ //生成证书文件
+ request.setCertificateFile(certificateFileUrl);
+ //原始记录文件
+ request.setOriginalRecordFile(originalRecordFileUrl);
+ //更新记录
+ int updateFlag = bizBusinessMapper.updateById(request);
+ Assert.isFalse(updateFlag <= 0, () -> {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ });
+ } else {
+ //生成证书失败,删除保存的记录
+ bizBusinessMapper.deleteById(request);
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_FILE_CREATE_FAILED);
+ }
+ } catch (Exception ex) {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ }
+ }).join();
+ }
+
+ private String checkCertificateFile(BizEquipmentStandardCheckRecordApproval request) {
+ for (BizEquipmentInfo checkEquipment : request.getCheckEquipmentList()) {
+ checkEquipment.setEquipmentType("测量设备");
+ }
+ try {
+ //健壮性哦安短
+ if (ObjectUtils.isEmpty(request)) {
+ return "";
+ }
+ Map map = BeanUtil.beanToMap(request);
+ map.put("upToStandard", "\uF0A3");
+ map.put("belowStandard", "\uF0A3");
+ map.put("test", "\uF052");
+ //除了选用的模板不一致,模板配置流程是一致的
+ return printFileRegister.registerPrintFile(MULTIFUNCTION_CHECK_DATA, "数据打印", null, map, true, null, null);
+ } catch (Exception ex) {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ }
+ }
+
+ private String createCertificateFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
+ try {
+ //过滤不能生成原始记录的报告
+ if (checkOutUnablePrint(measureItemInfo)) {
+ return "";
+ }
+ if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
+ List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
+ bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
+ measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
+ }
+ Map map = BeanUtil.beanToMap(measureItemInfo);
+ //准备封面参数
+ prepareCoverParams(map, measureItemInfo.getLabCode());
+ List customTemplateUrls = new ArrayList<>();
+ BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
+ //这一块逻辑比较复杂
+ customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", measureItemInfo.getMeasureCategoryName()));
+ customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", "数字记录表内容"));
+ map.put("id", snowflakeUtil.nextId());
+ //除了选用的模板不一致,模板配置流程是一致的
+ return printFileRegister.registerPrintFile(MEASURE_DATA, "证书打印", null, map, true, null, customTemplateUrls);
+ } catch (Exception ex) {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ }
+ }
+
+ /**
+ * 创建原始记录文件
+ */
+ private String createOriginalFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
+ try {
+ if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
+ List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
+ bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
+ measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
+ }
+ Map map = BeanUtil.beanToMap(measureItemInfo);
+ List customTemplateUrls = new ArrayList<>();
+ BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
+ //准备封面参数
+ prepareCoverParams(map, measureItemInfo.getLabCode());
+ //定制化原始记录参数
+ prepareCustomCoverParams(map, measureItemInfo.getMeasureDataCalibratorList());
+ //这一块逻辑比较复杂
+ customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "1", measureItemInfo.getItemCategoryName()));
+
+ //与证书模板区分
+ map.put("id", snowflakeUtil.nextId());
+ //除了选用的模板不一致,模板配置流程是一致的
+ return printFileRegister.registerPrintFile(MEASURE_DATA, "原始记录打印", null, map, true, null, customTemplateUrls);
+ } catch (Exception ex) {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ }
+ }
+
+ /**
+ * 检查是否能生成证书
+ */
+ private Boolean checkOutUnablePrint(BizBusinessDeviceMeasureApproval measureItemInfo) {
+ //通过检定项名称,获取对应的模块配置列表
+ if (StringUtils.isNotEmpty(measureItemInfo.getItemCategoryName())) {
+ if (MEASURE_ITEMS_WITHOUT_CERTIFICATE.contains(measureItemInfo.getItemCategoryName())) {
+ log.warn(BusinessExceptionEnum.ITEM_CATEGORY_NOT_NULL.getMessage());
+ return true;
+ }
+ if (CHECKOUT_REPORT.equals(measureItemInfo.getMeasureCategoryName())) {
+ log.warn(BusinessExceptionEnum.TEST_CATEGORY_IS_NONE.getMessage());
+ return true;
+ }
+ } else {
+ log.warn(BusinessExceptionEnum.ITEM_CATEGORY_IS_NULL.getMessage());
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * 填充固定的信息参数
+ */
+ private void prepareCoverParams(Map map, String labCode) {
+ //技术文件处理
+ if (map.containsKey("technologyFile") && ObjectUtils.isNotEmpty(map.get("technologyFile"))) {
+ //技术文件用逗号隔开
+ String[] technologyFiles = ((String) map.get("technologyFile")).split(",");
+ List technologyFileList = Arrays.asList(technologyFiles);
+ map.put("technologyFileList", technologyFileList);
+ }
+ //健壮性校验
+ if (StringUtils.isEmpty(labCode)) {
+ log.warn("组织接口不能传入为空,打印文档生成文档填充组织失败...");
+ return;
+ }
+ //西昌海口基本信息录入
+ if ("x".equals(labCode)) {
+ map.put("s", XICHANG);
+ map.put("communicationAddress", XICHANG_ADDRESS);
+ map.put("labAddress", XICHANG_ADDRESS);
+ map.put("phone", XICHANG_PHONE);
+ map.put("postalCode", XICHANG_POSTAL_CODE);
+ } else {
+ map.put("s", HAIKOU);
+ map.put("communicationAddress", HAIKOU_ADDRESS);
+ map.put("labAddress", HAIKOU_ADDRESS);
+ map.put("phone", HAIKOU_PHONE);
+ map.put("postalCode", HAIKOU_POSTAL_CODE);
+ }
+ }
+
+ private void prepareCustomCoverParams(Map map, List measureDataCalibrators) {
+ //定制参数
+ doCustomParam(map, measureDataCalibrators);
+ //初始化方框
+ map.put("test", "\uF0A3");
+ map.put("calibrate", "\uF0A3");
+ map.put("measure", "\uF0A3");
+ //选择方框
+ switch ((String) map.get("measureCategoryName")) {
+ case TEST_REPORT:
+ map.put("test", "\uF052");
+ break;
+ case CALIBRATE_REPORT:
+ map.put("calibrate", "\uF052");
+ break;
+ case MEASURE_REPORT:
+ map.put("measure", "\uF052");
+ break;
+ default:
+ return;
+ }
+ //填充有效日期
+ if (ObjectUtils.isNotEmpty(map.get(MEASURE_VALID_DATE))) {
+ String measureValidDate = (String) map.get(MEASURE_VALID_DATE);
+ Calendar calendar = Calendar.getInstance();
+ try {
+ calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate));
+ } catch (Exception e) {
+ throw new BusinessException(1500, String.format(measureValidDate, "检定有效日期,格式不正确"));
+ }
+ //设置时间
+ map.put(MEASURE_VALID_Y, calendar.get(Calendar.YEAR));
+ map.put(MEASURE_VALID_M, calendar.get(Calendar.MONTH) + 1);
+ map.put(MEASURE_VALID_D, calendar.get(Calendar.DAY_OF_MONTH));
+ }
+
+ }
+
+ /**
+ * 直流电压表没有HZ
+ * 多功能
+ *
+ * @param map
+ */
+ private void doCustomParam(Map map, List measureDataCalibrators) {
+ if (StringUtils.isNotEmpty((String) map.get("itemCategoryName"))) {
+ //直流表,交流表 75mv电压表定制表格内容
+ if (((String) map.get("itemCategoryName")).contains("交流")) {
+ map.put("fName", "频率:");
+ map.put("frequency", measureDataCalibrators.get(0).getFrequency());
+ map.put("frequencyUnit", measureDataCalibrators.get(0).getFrequencyUnit());
+ }
+ //多功能电力参数仪定制表格内容
+ if (((String) map.get("itemCategoryName")).contains("多功能")) {
+ Map> measureDataMap = measureDataCalibrators.stream().collect(
+ Collectors.groupingBy(BizBusinessDeviceMeasureDataCalibrator::getParams)
+ );
+ if (measureDataMap.containsKey("ACV") && CollectionUtils.isNotEmpty(measureDataMap.get("ACV"))) {
+ map.put("frequency2", measureDataMap.get("ACV").get(0).getFrequency());
+ map.put("frequencyUnit2", measureDataMap.get("ACV").get(0).getFrequencyUnit());
+ map.put("unit2", measureDataMap.get("ACV").get(0).getUnit());
+ map.put("measureDataCalibratorListV", measureDataMap.get("ACV"));
+ }
+ if (measureDataMap.containsKey("ACI") && CollectionUtils.isNotEmpty(measureDataMap.get("ACI"))) {
+ map.put("frequency1", measureDataMap.get("ACI").get(0).getFrequency());
+ map.put("frequencyUnit1", measureDataMap.get("ACI").get(0).getFrequencyUnit());
+ map.put("unit1", measureDataMap.get("ACI").get(0).getUnit());
+ map.put("measureDataCalibratorListI", measureDataMap.get("ACI"));
+ }
+ }
+ }
+ }
+
+}
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentLendServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentLendServiceImpl.java
index 9e8c7fc..060ee8f 100644
--- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentLendServiceImpl.java
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentLendServiceImpl.java
@@ -146,7 +146,6 @@
}
map.put("returnCatalogueNameStr", catalogueNameStr);
}
-
printFileRegister.registerPrintFile(PrintFileModuleNameEnum.EQUIPMENT_LEND, PrintFileModuleNameEnum.EXPORT_TEMPLATE, null, map, exportDTO.isPdf(), response);
}
}
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardCheckRecordApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardCheckRecordApprovalServiceImpl.java
index c56a0cb..37fd603 100644
--- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardCheckRecordApprovalServiceImpl.java
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardCheckRecordApprovalServiceImpl.java
@@ -14,8 +14,10 @@
import com.casic.missiles.mapper.equipment.BizEquipmentStandardCheckRecordApprovalMapper;
import com.casic.missiles.model.equipment.BizEquipmentStandardCheckRecordApproval;
import com.casic.missiles.service.Impl.GeneralApprovalServiceImpl;
+import com.casic.missiles.service.Impl.eqpt.GenericEqptDataProvider;
import com.casic.missiles.service.equipment.IBizEquipmentStandardCheckRecordApprovalService;
import com.casic.missiles.utils.NoGeneratorUtil;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
@@ -29,6 +31,9 @@
@Service
public class BizEquipmentStandardCheckRecordApprovalServiceImpl extends GeneralApprovalServiceImpl implements IBizEquipmentStandardCheckRecordApprovalService {
+ @Autowired
+ private GenericEqptDataProvider genericEqptDataProvider;
+
@Override
public ReturnDTO addCheckApproval(BizEquipmentStandardCheckRecordApproval request) {
//生成编号
@@ -44,6 +49,7 @@
Assert.isFalse(row <= 0, () -> {
throw new BusinessException(BusinessExceptionEnum.CHECK_APPROVAL_SAVE_FAILED);
});
+ genericEqptDataProvider.checkCertificateTask(request);
StandardCheckRecordApprovalSaveResponse saveResponse = new StandardCheckRecordApprovalSaveResponse();
saveResponse.setId(request.getId());
saveResponse.setRecordNo(recordNo);
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index a5f9ad1..ce53a75 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -80,8 +80,10 @@
ITEM_CATEGORY_IS_NULL(2616, "检定类型为空,页面逻辑错误,不能执行打印"),
ITEM_CATEGORY_NOT_NULL(2617, "该检定类型没有证书,请注意"),
TEST_CATEGORY_IS_NONE(2618, "测试报告没有检定证书,请注意"),
- MEASURE_APPROVAL_UPDATE_FAILED(2619, "检定审批更新至草稿箱失败"),
- MEASURE_FILE_CREATE_FAILED(2620, "检定数据审批文件生成失败"),
+ MEASURE_APPROVAL_UPDATE_FAILED(2619, "多功能检定审批更新至草稿箱失败"),
+ MEASURE_FILE_CREATE_FAILED(2620, "多功能检定数据审批文件生成失败"),
+ CHECK_APPROVAL_UPDATE_FAILED(2621, "多功能核查审批更新至草稿箱失败"),
+ CHECK_FILE_CREATE_FAILED(2622, "多功能核查数据审批文件生成失败"),
/**
* 历史遗留备用
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
index 46831fe..2f0877f 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java
@@ -22,6 +22,7 @@
String CUSTOMER_EXAMINE_FORM = "要求、委托书及合同评审表";
String MEASURE_DATA = "检定数据管理";
+ String MULTIFUNCTION_CHECK_DATA = "多功能核查数据";
String FILE_CHANGE_FORM = "文件更改申请单";
String FILE_GRANT_NOTICE_FORM = "文件发放通知单";
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
index 04ab11f..91097b7 100644
--- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentInfo.java
@@ -329,4 +329,8 @@
@TableField(exist = false)
private Integer approvalType;
+
+ @ApiModelProperty(value = "设备类型(打印扩展使用,任何时候不需要传)", dataType = "String")
+ @TableField(exist = false)
+ private String equipmentType;
}
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
index b7c52f1..a5d6456 100644
--- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java
@@ -12,6 +12,7 @@
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
+import java.util.List;
/**
*
@@ -143,4 +144,33 @@
@TableField(exist = false)
private String checkEquipmentModel;
+ @ApiModelProperty(value = "核查记录文件名称", dataType = "String")
+ private String checkRecordFile;
+
+ @ApiModelProperty(value = "检查日期(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String checkDate;
+
+
+ @ApiModelProperty(value = "检测地址(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String checkAddress;
+
+ @ApiModelProperty(value = "温度(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String temperature;
+
+ @ApiModelProperty(value = "湿度(打印)", dataType = "String")
+ @TableField(exist = false)
+ private String humidity;
+
+ @ApiModelProperty(value = "核查标准设备(打印)", dataType = "Object")
+ @TableField(exist = false)
+ private List checkEquipmentList;
+
+
+ @ApiModelProperty(value = "被核查标准设备(打印)", dataType = "Object")
+ @TableField(exist = false)
+ private BizEquipmentInfo equipmentInfo;
+
}
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java
index bb66382..acf9ef6 100644
--- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureApprovalServiceImpl.java
@@ -26,6 +26,7 @@
import com.casic.missiles.model.business.BizBusinessDeviceMeasureDataCalibrator;
import com.casic.missiles.model.business.BizBusinessDeviceMeasureInfo;
import com.casic.missiles.service.Impl.GeneralApprovalServiceImpl;
+import com.casic.missiles.service.Impl.eqpt.GenericEqptDataProvider;
import com.casic.missiles.service.business.IBizBusinessDeviceMeasureApprovalService;
import com.casic.missiles.service.listeners.register.PrintFileRegister;
import com.casic.missiles.utils.DictCodeUtils;
@@ -52,13 +53,12 @@
* @since 2023-10-11
*/
@Service
-public class BizBusinessDeviceMeasureApprovalServiceImpl extends GeneralApprovalServiceImpl implements IBizBusinessDeviceMeasureApprovalService, PrintFileModuleNameEnum, MeasureCategoryEnum {
+public class BizBusinessDeviceMeasureApprovalServiceImpl extends GeneralApprovalServiceImpl implements IBizBusinessDeviceMeasureApprovalService{
@Resource
private BusinessLabExecutiveInfoMapper labExecutiveInfoMapper;
@Autowired
- private PrintFileRegister printFileRegister;
- @Resource
- private SnowflakeUtil snowflakeUtil;
+ private GenericEqptDataProvider genericEqptDataProvider;
+
@Override
public ReturnDTO addMeasureApproval(BizBusinessDeviceMeasureApproval request) {
@@ -76,235 +76,14 @@
Assert.isFalse(row <= 0, () -> {
throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_SAVE_FAILED);
});
- updateCertificateTask(request);
+ genericEqptDataProvider.measureCertificateTask(request);
DeviceMeasureApprovalSaveResponse saveResponse = new DeviceMeasureApprovalSaveResponse();
saveResponse.setId(request.getId());
saveResponse.setCertNo(certNo);
return ReturnUtil.success(saveResponse);
}
- /**
- * 生成更新证书的任务,内部类
- */
- public void updateCertificateTask(BizBusinessDeviceMeasureApproval request) {
- ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, 5, 100,
- TimeUnit.SECONDS, new LinkedBlockingQueue<>(5));
- //生成证书报告的
- CompletableFuture certificateFutureTask = CompletableFuture.supplyAsync(
- () -> createCertificateFile(request), threadPool);
- //生成原始记录的线程
- CompletableFuture originalFutureTask = CompletableFuture.supplyAsync(
- () -> createOriginalFile(request), threadPool);
- //等到所有线程异步结束
- CompletableFuture combinedFuture = CompletableFuture.allOf(certificateFutureTask, originalFutureTask);
- combinedFuture.thenRun(() -> {
- try {
- //获取结果
- String certificateFileUrl = certificateFutureTask.join();
- String originalRecordFileUrl = originalFutureTask.join();
- BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
- if (StringUtils.isNotEmpty(certificateFileUrl) || StringUtils.isNotEmpty(originalRecordFileUrl)) {
- //生成证书文件
- request.setCertificateFile(certificateFileUrl);
- //原始记录文件
- request.setOriginalRecordFile(originalRecordFileUrl);
- //更新记录
- int updateFlag = bizBusinessMapper.updateById(request);
- Assert.isFalse(updateFlag <= 0, () -> {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- });
- } else {
- //生成证书失败,删除保存的记录
- bizBusinessMapper.deleteById(request);
- throw new BusinessException(BusinessExceptionEnum.MEASURE_FILE_CREATE_FAILED);
- }
- } catch (Exception ex) {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- }
- }).join();
- }
-
- private String createCertificateFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
- try {
- //过滤不能生成原始记录的报告
- if (checkOutUnablePrint(measureItemInfo)) {
- return "";
- }
- if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
- List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
- bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
- measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
- }
- Map map = BeanUtil.beanToMap(measureItemInfo);
- //准备封面参数
- prepareCoverParams(map, measureItemInfo.getLabCode());
- List customTemplateUrls = new ArrayList<>();
- BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
- //这一块逻辑比较复杂
- customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", measureItemInfo.getMeasureCategoryName()));
- customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", "数字记录表内容"));
- map.put("id", snowflakeUtil.nextId());
- //除了选用的模板不一致,模板配置流程是一致的
- return printFileRegister.registerPrintFile(MEASURE_DATA, "证书打印", null, map, true, null, customTemplateUrls);
- } catch (Exception ex) {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- }
- }
-
- /**
- * 创建原始记录文件
- */
- private String createOriginalFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
- try {
- if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
- List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
- bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
- measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
- }
- Map map = BeanUtil.beanToMap(measureItemInfo);
- List customTemplateUrls = new ArrayList<>();
- BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
- //准备封面参数
- prepareCoverParams(map, measureItemInfo.getLabCode());
- //定制化原始记录参数
- prepareCustomCoverParams(map, measureItemInfo.getMeasureDataCalibratorList());
- //这一块逻辑比较复杂
- customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "1", measureItemInfo.getItemCategoryName()));
- //与证书模板区分
- map.put("id", snowflakeUtil.nextId());
- //除了选用的模板不一致,模板配置流程是一致的
- return printFileRegister.registerPrintFile(MEASURE_DATA, "原始记录打印", null, map, true, null, customTemplateUrls);
- } catch (Exception ex) {
- throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
- }
- }
-
- /**
- * 检查是否能生成证书
- */
- private Boolean checkOutUnablePrint(BizBusinessDeviceMeasureApproval measureItemInfo) {
- //通过检定项名称,获取对应的模块配置列表
- if (StringUtils.isNotEmpty(measureItemInfo.getItemCategoryName())) {
- if (MEASURE_ITEMS_WITHOUT_CERTIFICATE.contains(measureItemInfo.getItemCategoryName())) {
- log.warn(BusinessExceptionEnum.ITEM_CATEGORY_NOT_NULL.getMessage());
- return true;
- }
- if (CHECKOUT_REPORT.equals(measureItemInfo.getMeasureCategoryName())) {
- log.warn(BusinessExceptionEnum.TEST_CATEGORY_IS_NONE.getMessage());
- return true;
- }
- } else {
- log.warn(BusinessExceptionEnum.ITEM_CATEGORY_IS_NULL.getMessage());
- return true;
- }
- return false;
- }
-
- /**
- * 填充固定的信息参数
- */
- private void prepareCoverParams(Map map, String labCode) {
- //技术文件处理
- if (map.containsKey("technologyFile") && ObjectUtils.isNotEmpty(map.get("technologyFile"))) {
- //技术文件用逗号隔开
- String[] technologyFiles = ((String) map.get("technologyFile")).split(",");
- List technologyFileList = Arrays.asList(technologyFiles);
- map.put("technologyFileList", technologyFileList);
- }
- //健壮性校验
- if (StringUtils.isEmpty(labCode)) {
- log.warn("组织接口不能传入为空,打印文档生成文档填充组织失败...");
- return;
- }
- //西昌海口基本信息录入
- if ("x".equals(labCode)) {
- map.put("s", XICHANG);
- map.put("communicationAddress", XICHANG_ADDRESS);
- map.put("labAddress", XICHANG_ADDRESS);
- map.put("phone", XICHANG_PHONE);
- map.put("postalCode", XICHANG_POSTAL_CODE);
- } else {
- map.put("s", HAIKOU);
- map.put("communicationAddress", HAIKOU_ADDRESS);
- map.put("labAddress", HAIKOU_ADDRESS);
- map.put("phone", HAIKOU_PHONE);
- map.put("postalCode", HAIKOU_POSTAL_CODE);
- }
- }
-
- private void prepareCustomCoverParams(Map map, List measureDataCalibrators) {
- //定制参数
- doCustomParam(map, measureDataCalibrators);
- //初始化方框
- map.put("test", "\uF0A3");
- map.put("calibrate", "\uF0A3");
- map.put("measure", "\uF0A3");
- //选择方框
- switch ((String) map.get("measureCategoryName")) {
- case TEST_REPORT:
- map.put("test", "\uF052");
- break;
- case CALIBRATE_REPORT:
- map.put("calibrate", "\uF052");
- break;
- case MEASURE_REPORT:
- map.put("measure", "\uF052");
- break;
- default:
- return;
- }
- //填充有效日期
- if (ObjectUtils.isNotEmpty(map.get(MEASURE_VALID_DATE))) {
- String measureValidDate = (String) map.get(MEASURE_VALID_DATE);
- Calendar calendar = Calendar.getInstance();
- try {
- calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate));
- } catch (Exception e) {
- throw new BusinessException(1500, String.format(measureValidDate, "检定有效日期,格式不正确"));
- }
- //设置时间
- map.put(MEASURE_VALID_Y, calendar.get(Calendar.YEAR));
- map.put(MEASURE_VALID_M, calendar.get(Calendar.MONTH) + 1);
- map.put(MEASURE_VALID_D, calendar.get(Calendar.DAY_OF_MONTH));
- }
-
- }
-
- /**
- * 直流电压表没有HZ
- * 多功能
- *
- * @param map
- */
- private void doCustomParam(Map map, List measureDataCalibrators) {
- if (StringUtils.isNotEmpty((String) map.get("itemCategoryName"))) {
- //直流表,交流表 75mv电压表定制表格内容
- if (((String) map.get("itemCategoryName")).contains("交流")) {
- map.put("fName", "频率:");
- map.put("frequency", measureDataCalibrators.get(0).getFrequency());
- map.put("frequencyUnit", measureDataCalibrators.get(0).getFrequencyUnit());
- }
- //多功能电力参数仪定制表格内容
- if (((String) map.get("itemCategoryName")).contains("多功能")) {
- Map> measureDataMap = measureDataCalibrators.stream().collect(
- Collectors.groupingBy(BizBusinessDeviceMeasureDataCalibrator::getParams)
- );
- if (measureDataMap.containsKey("ACV") && CollectionUtils.isNotEmpty(measureDataMap.get("ACV"))) {
- map.put("frequency2", measureDataMap.get("ACV").get(0).getFrequency());
- map.put("frequencyUnit2", measureDataMap.get("ACV").get(0).getFrequencyUnit());
- map.put("unit2", measureDataMap.get("ACV").get(0).getUnit());
- map.put("measureDataCalibratorListV", measureDataMap.get("ACV"));
- }
- if (measureDataMap.containsKey("ACI") && CollectionUtils.isNotEmpty(measureDataMap.get("ACI"))) {
- map.put("frequency1", measureDataMap.get("ACI").get(0).getFrequency());
- map.put("frequencyUnit1", measureDataMap.get("ACI").get(0).getFrequencyUnit());
- map.put("unit1", measureDataMap.get("ACI").get(0).getUnit());
- map.put("measureDataCalibratorListI", measureDataMap.get("ACI"));
- }
- }
- }
- }
@Override
public ReturnDTO detail(Long id) throws Exception {
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java
new file mode 100644
index 0000000..a70a023
--- /dev/null
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/GenericEqptDataProvider.java
@@ -0,0 +1,317 @@
+package com.casic.missiles.service.Impl.eqpt;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.casic.missiles.enums.BusinessExceptionEnum;
+import com.casic.missiles.enums.PrintFileModuleNameEnum;
+import com.casic.missiles.enums.business.MeasureCategoryEnum;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.mapper.business.BizBusinessDeviceMeasureApprovalMapper;
+import com.casic.missiles.mapper.equipment.BizEquipmentStandardCheckRecordApprovalMapper;
+import com.casic.missiles.model.business.BizBusinessDeviceMeasureApproval;
+import com.casic.missiles.model.business.BizBusinessDeviceMeasureDataCalibrator;
+import com.casic.missiles.model.equipment.BizEquipmentInfo;
+import com.casic.missiles.model.equipment.BizEquipmentStandardCheckRecordApproval;
+import com.casic.missiles.service.listeners.register.PrintFileRegister;
+import com.casic.missiles.utils.SnowflakeUtil;
+import com.casic.missiles.utils.SpringContextUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+/**
+ * 通用的装置数据提供器
+ *
+ * @author cz
+ * @date 2023-10-31
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class GenericEqptDataProvider implements PrintFileModuleNameEnum, MeasureCategoryEnum {
+
+ private final PrintFileRegister printFileRegister;
+ private final SnowflakeUtil snowflakeUtil;
+ private ThreadPoolExecutor threadPool = new ThreadPoolExecutor(4, 10, 100,
+ TimeUnit.SECONDS, new LinkedBlockingQueue<>(10));
+
+ /**
+ * 生成更新证书的任务
+ */
+ public void checkCertificateTask(BizEquipmentStandardCheckRecordApproval request) {
+ //生成核查记录单
+ String checkCertificateFileUrl = checkCertificateFile(request);
+ BizEquipmentStandardCheckRecordApprovalMapper bizRecordApprovalMapper = SpringContextUtil.getBean(BizEquipmentStandardCheckRecordApprovalMapper.class);
+
+ if (StringUtils.isNotEmpty(checkCertificateFileUrl)) {
+ //原始记录文件
+ request.setCheckRecordFile(checkCertificateFileUrl);
+ //更新记录
+ int updateFlag = bizRecordApprovalMapper.updateById(request);
+ Assert.isFalse(updateFlag <= 0, () -> {
+ throw new BusinessException(BusinessExceptionEnum.CHECK_APPROVAL_UPDATE_FAILED);
+ });
+ } else {
+ //生成证书失败,删除保存的记录
+ bizRecordApprovalMapper.deleteById(request);
+ throw new BusinessException(BusinessExceptionEnum.CHECK_FILE_CREATE_FAILED);
+ }
+ }
+
+
+ /**
+ * 生成更新证书的任务
+ */
+ public void measureCertificateTask(BizBusinessDeviceMeasureApproval request) {
+ //生成证书报告的
+ CompletableFuture certificateFutureTask = CompletableFuture.supplyAsync(
+ () -> createCertificateFile(request), threadPool);
+ //生成原始记录的线程
+ CompletableFuture originalFutureTask = CompletableFuture.supplyAsync(
+ () -> createOriginalFile(request), threadPool);
+ //等到所有线程异步结束
+ CompletableFuture combinedFuture = CompletableFuture.allOf(certificateFutureTask, originalFutureTask);
+ combinedFuture.thenRun(() -> {
+ try {
+ //获取结果
+ String certificateFileUrl = certificateFutureTask.join();
+ String originalRecordFileUrl = originalFutureTask.join();
+ BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
+ if (StringUtils.isNotEmpty(certificateFileUrl) || StringUtils.isNotEmpty(originalRecordFileUrl)) {
+ //生成证书文件
+ request.setCertificateFile(certificateFileUrl);
+ //原始记录文件
+ request.setOriginalRecordFile(originalRecordFileUrl);
+ //更新记录
+ int updateFlag = bizBusinessMapper.updateById(request);
+ Assert.isFalse(updateFlag <= 0, () -> {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ });
+ } else {
+ //生成证书失败,删除保存的记录
+ bizBusinessMapper.deleteById(request);
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_FILE_CREATE_FAILED);
+ }
+ } catch (Exception ex) {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ }
+ }).join();
+ }
+
+ private String checkCertificateFile(BizEquipmentStandardCheckRecordApproval request) {
+ for (BizEquipmentInfo checkEquipment : request.getCheckEquipmentList()) {
+ checkEquipment.setEquipmentType("测量设备");
+ }
+ try {
+ //健壮性哦安短
+ if (ObjectUtils.isEmpty(request)) {
+ return "";
+ }
+ Map map = BeanUtil.beanToMap(request);
+ map.put("upToStandard", "\uF0A3");
+ map.put("belowStandard", "\uF0A3");
+ map.put("test", "\uF052");
+ //除了选用的模板不一致,模板配置流程是一致的
+ return printFileRegister.registerPrintFile(MULTIFUNCTION_CHECK_DATA, "数据打印", null, map, true, null, null);
+ } catch (Exception ex) {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ }
+ }
+
+ private String createCertificateFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
+ try {
+ //过滤不能生成原始记录的报告
+ if (checkOutUnablePrint(measureItemInfo)) {
+ return "";
+ }
+ if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
+ List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
+ bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
+ measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
+ }
+ Map map = BeanUtil.beanToMap(measureItemInfo);
+ //准备封面参数
+ prepareCoverParams(map, measureItemInfo.getLabCode());
+ List customTemplateUrls = new ArrayList<>();
+ BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
+ //这一块逻辑比较复杂
+ customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", measureItemInfo.getMeasureCategoryName()));
+ customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", "数字记录表内容"));
+ map.put("id", snowflakeUtil.nextId());
+ //除了选用的模板不一致,模板配置流程是一致的
+ return printFileRegister.registerPrintFile(MEASURE_DATA, "证书打印", null, map, true, null, customTemplateUrls);
+ } catch (Exception ex) {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ }
+ }
+
+ /**
+ * 创建原始记录文件
+ */
+ private String createOriginalFile(BizBusinessDeviceMeasureApproval measureItemInfo) {
+ try {
+ if (CollectionUtil.isEmpty(measureItemInfo.getMeasureDataCalibratorList())) {
+ List bizBusinessDeviceMeasureDataCalibrators = new ArrayList<>();
+ bizBusinessDeviceMeasureDataCalibrators.add(new BizBusinessDeviceMeasureDataCalibrator());
+ measureItemInfo.setMeasureDataCalibratorList(bizBusinessDeviceMeasureDataCalibrators);
+ }
+ Map map = BeanUtil.beanToMap(measureItemInfo);
+ List customTemplateUrls = new ArrayList<>();
+ BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class);
+ //准备封面参数
+ prepareCoverParams(map, measureItemInfo.getLabCode());
+ //定制化原始记录参数
+ prepareCustomCoverParams(map, measureItemInfo.getMeasureDataCalibratorList());
+ //这一块逻辑比较复杂
+ customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "1", measureItemInfo.getItemCategoryName()));
+
+ //与证书模板区分
+ map.put("id", snowflakeUtil.nextId());
+ //除了选用的模板不一致,模板配置流程是一致的
+ return printFileRegister.registerPrintFile(MEASURE_DATA, "原始记录打印", null, map, true, null, customTemplateUrls);
+ } catch (Exception ex) {
+ throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED);
+ }
+ }
+
+ /**
+ * 检查是否能生成证书
+ */
+ private Boolean checkOutUnablePrint(BizBusinessDeviceMeasureApproval measureItemInfo) {
+ //通过检定项名称,获取对应的模块配置列表
+ if (StringUtils.isNotEmpty(measureItemInfo.getItemCategoryName())) {
+ if (MEASURE_ITEMS_WITHOUT_CERTIFICATE.contains(measureItemInfo.getItemCategoryName())) {
+ log.warn(BusinessExceptionEnum.ITEM_CATEGORY_NOT_NULL.getMessage());
+ return true;
+ }
+ if (CHECKOUT_REPORT.equals(measureItemInfo.getMeasureCategoryName())) {
+ log.warn(BusinessExceptionEnum.TEST_CATEGORY_IS_NONE.getMessage());
+ return true;
+ }
+ } else {
+ log.warn(BusinessExceptionEnum.ITEM_CATEGORY_IS_NULL.getMessage());
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * 填充固定的信息参数
+ */
+ private void prepareCoverParams(Map map, String labCode) {
+ //技术文件处理
+ if (map.containsKey("technologyFile") && ObjectUtils.isNotEmpty(map.get("technologyFile"))) {
+ //技术文件用逗号隔开
+ String[] technologyFiles = ((String) map.get("technologyFile")).split(",");
+ List technologyFileList = Arrays.asList(technologyFiles);
+ map.put("technologyFileList", technologyFileList);
+ }
+ //健壮性校验
+ if (StringUtils.isEmpty(labCode)) {
+ log.warn("组织接口不能传入为空,打印文档生成文档填充组织失败...");
+ return;
+ }
+ //西昌海口基本信息录入
+ if ("x".equals(labCode)) {
+ map.put("s", XICHANG);
+ map.put("communicationAddress", XICHANG_ADDRESS);
+ map.put("labAddress", XICHANG_ADDRESS);
+ map.put("phone", XICHANG_PHONE);
+ map.put("postalCode", XICHANG_POSTAL_CODE);
+ } else {
+ map.put("s", HAIKOU);
+ map.put("communicationAddress", HAIKOU_ADDRESS);
+ map.put("labAddress", HAIKOU_ADDRESS);
+ map.put("phone", HAIKOU_PHONE);
+ map.put("postalCode", HAIKOU_POSTAL_CODE);
+ }
+ }
+
+ private void prepareCustomCoverParams(Map map, List measureDataCalibrators) {
+ //定制参数
+ doCustomParam(map, measureDataCalibrators);
+ //初始化方框
+ map.put("test", "\uF0A3");
+ map.put("calibrate", "\uF0A3");
+ map.put("measure", "\uF0A3");
+ //选择方框
+ switch ((String) map.get("measureCategoryName")) {
+ case TEST_REPORT:
+ map.put("test", "\uF052");
+ break;
+ case CALIBRATE_REPORT:
+ map.put("calibrate", "\uF052");
+ break;
+ case MEASURE_REPORT:
+ map.put("measure", "\uF052");
+ break;
+ default:
+ return;
+ }
+ //填充有效日期
+ if (ObjectUtils.isNotEmpty(map.get(MEASURE_VALID_DATE))) {
+ String measureValidDate = (String) map.get(MEASURE_VALID_DATE);
+ Calendar calendar = Calendar.getInstance();
+ try {
+ calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(measureValidDate));
+ } catch (Exception e) {
+ throw new BusinessException(1500, String.format(measureValidDate, "检定有效日期,格式不正确"));
+ }
+ //设置时间
+ map.put(MEASURE_VALID_Y, calendar.get(Calendar.YEAR));
+ map.put(MEASURE_VALID_M, calendar.get(Calendar.MONTH) + 1);
+ map.put(MEASURE_VALID_D, calendar.get(Calendar.DAY_OF_MONTH));
+ }
+
+ }
+
+ /**
+ * 直流电压表没有HZ
+ * 多功能
+ *
+ * @param map
+ */
+ private void doCustomParam(Map map, List measureDataCalibrators) {
+ if (StringUtils.isNotEmpty((String) map.get("itemCategoryName"))) {
+ //直流表,交流表 75mv电压表定制表格内容
+ if (((String) map.get("itemCategoryName")).contains("交流")) {
+ map.put("fName", "频率:");
+ map.put("frequency", measureDataCalibrators.get(0).getFrequency());
+ map.put("frequencyUnit", measureDataCalibrators.get(0).getFrequencyUnit());
+ }
+ //多功能电力参数仪定制表格内容
+ if (((String) map.get("itemCategoryName")).contains("多功能")) {
+ Map> measureDataMap = measureDataCalibrators.stream().collect(
+ Collectors.groupingBy(BizBusinessDeviceMeasureDataCalibrator::getParams)
+ );
+ if (measureDataMap.containsKey("ACV") && CollectionUtils.isNotEmpty(measureDataMap.get("ACV"))) {
+ map.put("frequency2", measureDataMap.get("ACV").get(0).getFrequency());
+ map.put("frequencyUnit2", measureDataMap.get("ACV").get(0).getFrequencyUnit());
+ map.put("unit2", measureDataMap.get("ACV").get(0).getUnit());
+ map.put("measureDataCalibratorListV", measureDataMap.get("ACV"));
+ }
+ if (measureDataMap.containsKey("ACI") && CollectionUtils.isNotEmpty(measureDataMap.get("ACI"))) {
+ map.put("frequency1", measureDataMap.get("ACI").get(0).getFrequency());
+ map.put("frequencyUnit1", measureDataMap.get("ACI").get(0).getFrequencyUnit());
+ map.put("unit1", measureDataMap.get("ACI").get(0).getUnit());
+ map.put("measureDataCalibratorListI", measureDataMap.get("ACI"));
+ }
+ }
+ }
+ }
+
+}
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentLendServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentLendServiceImpl.java
index 9e8c7fc..060ee8f 100644
--- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentLendServiceImpl.java
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentLendServiceImpl.java
@@ -146,7 +146,6 @@
}
map.put("returnCatalogueNameStr", catalogueNameStr);
}
-
printFileRegister.registerPrintFile(PrintFileModuleNameEnum.EQUIPMENT_LEND, PrintFileModuleNameEnum.EXPORT_TEMPLATE, null, map, exportDTO.isPdf(), response);
}
}
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardCheckRecordApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardCheckRecordApprovalServiceImpl.java
index c56a0cb..37fd603 100644
--- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardCheckRecordApprovalServiceImpl.java
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/BizEquipmentStandardCheckRecordApprovalServiceImpl.java
@@ -14,8 +14,10 @@
import com.casic.missiles.mapper.equipment.BizEquipmentStandardCheckRecordApprovalMapper;
import com.casic.missiles.model.equipment.BizEquipmentStandardCheckRecordApproval;
import com.casic.missiles.service.Impl.GeneralApprovalServiceImpl;
+import com.casic.missiles.service.Impl.eqpt.GenericEqptDataProvider;
import com.casic.missiles.service.equipment.IBizEquipmentStandardCheckRecordApprovalService;
import com.casic.missiles.utils.NoGeneratorUtil;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
@@ -29,6 +31,9 @@
@Service
public class BizEquipmentStandardCheckRecordApprovalServiceImpl extends GeneralApprovalServiceImpl implements IBizEquipmentStandardCheckRecordApprovalService {
+ @Autowired
+ private GenericEqptDataProvider genericEqptDataProvider;
+
@Override
public ReturnDTO addCheckApproval(BizEquipmentStandardCheckRecordApproval request) {
//生成编号
@@ -44,6 +49,7 @@
Assert.isFalse(row <= 0, () -> {
throw new BusinessException(BusinessExceptionEnum.CHECK_APPROVAL_SAVE_FAILED);
});
+ genericEqptDataProvider.checkCertificateTask(request);
StandardCheckRecordApprovalSaveResponse saveResponse = new StandardCheckRecordApprovalSaveResponse();
saveResponse.setId(request.getId());
saveResponse.setRecordNo(recordNo);
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java
index b7624ad..03cbd72 100644
--- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/PrintFileRegister.java
@@ -109,7 +109,7 @@
//删除无效的文件
File invalidFile = new File(tempLocalFileDir);
//删除运行空间下的文件
- deleteFile(invalidFile);
+// deleteFile(invalidFile);
}
return miniName;
}