diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java index 6412cc8..a2495df 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java @@ -44,7 +44,7 @@ /** * 检定有效日期-月份 */ - String MEASURE_VALID_M= "validM"; + String MEASURE_VALID_M = "validM"; /** * 检定有效日期-月中天数 */ @@ -89,4 +89,20 @@ */ String HAIKOU_ADDRESS = "海南省海口市美兰区白驹大道69号"; + + /** + * 核查记录数据 + */ + String UP_STANDARD = "upToStandard"; + String BELOW_STANDARD = "belowStandard"; + //重复性前缀 + String REPEAT_PREFIX="rep"; + //稳定性前缀 + String STA_PREFIX="sta"; + //日期前缀 + String DATE_PREFIX="sta"; + + String BEST_POINT ="最佳点"; + String WORST_POINT ="最差点"; + String MODEL_POINT ="典型典"; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java index 6412cc8..a2495df 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java @@ -44,7 +44,7 @@ /** * 检定有效日期-月份 */ - String MEASURE_VALID_M= "validM"; + String MEASURE_VALID_M = "validM"; /** * 检定有效日期-月中天数 */ @@ -89,4 +89,20 @@ */ String HAIKOU_ADDRESS = "海南省海口市美兰区白驹大道69号"; + + /** + * 核查记录数据 + */ + String UP_STANDARD = "upToStandard"; + String BELOW_STANDARD = "belowStandard"; + //重复性前缀 + String REPEAT_PREFIX="rep"; + //稳定性前缀 + String STA_PREFIX="sta"; + //日期前缀 + String DATE_PREFIX="sta"; + + String BEST_POINT ="最佳点"; + String WORST_POINT ="最差点"; + String MODEL_POINT ="典型典"; } 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 d10e544..d581629 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 @@ -177,4 +177,8 @@ @TableField(exist = false) private BizEquipmentInfo equipmentInfo; + @ApiModelProperty(value = "核查数据-多功能校准源(打印)", dataType = "List") + @TableField(exist = false) + private List checkDataCalibratorList; + } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java index 6412cc8..a2495df 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java @@ -44,7 +44,7 @@ /** * 检定有效日期-月份 */ - String MEASURE_VALID_M= "validM"; + String MEASURE_VALID_M = "validM"; /** * 检定有效日期-月中天数 */ @@ -89,4 +89,20 @@ */ String HAIKOU_ADDRESS = "海南省海口市美兰区白驹大道69号"; + + /** + * 核查记录数据 + */ + String UP_STANDARD = "upToStandard"; + String BELOW_STANDARD = "belowStandard"; + //重复性前缀 + String REPEAT_PREFIX="rep"; + //稳定性前缀 + String STA_PREFIX="sta"; + //日期前缀 + String DATE_PREFIX="sta"; + + String BEST_POINT ="最佳点"; + String WORST_POINT ="最差点"; + String MODEL_POINT ="典型典"; } 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 d10e544..d581629 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 @@ -177,4 +177,8 @@ @TableField(exist = false) private BizEquipmentInfo equipmentInfo; + @ApiModelProperty(value = "核查数据-多功能校准源(打印)", dataType = "List") + @TableField(exist = false) + private List checkDataCalibratorList; + } 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 index 9b6b39b..aece41f 100644 --- 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 @@ -14,17 +14,18 @@ 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.BizEquipmentStandardCheckDataCalibrator; 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 liquibase.pro.packaged.M; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; +import org.docx4j.wml.R; import org.springframework.stereotype.Component; -import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.CompletableFuture; @@ -50,7 +51,7 @@ TimeUnit.SECONDS, new LinkedBlockingQueue<>(10)); /** - * 生成更新证书的任务 + * 核查记录生成更新证书的任务 */ public void checkCertificateTask(BizEquipmentStandardCheckRecordApproval request) { //生成核查记录单 @@ -71,6 +72,13 @@ } } + /** + * 异步执行检定数据的生成数据 + * + * @param map + * @param id + * @param oldCertificateFile + */ public void excuteMeasureTaskAsyn(Map map, Long id, String oldCertificateFile) { List customTemplateUrls = new ArrayList<>(); customTemplateUrls.add(oldCertificateFile); @@ -99,7 +107,13 @@ ); } - + /** + * 异步执行核查记录审批流生成证书报告 + * + * @param map + * @param id + * @param oldCertificateFile + */ public void excuteCheckTaskAsyn(Map map, Long id, String oldCertificateFile) { List customTemplateUrls = new ArrayList<>(); customTemplateUrls.add(oldCertificateFile); @@ -167,19 +181,45 @@ }).join(); } + /** + * 对生成证书报告进行校验,是否需要生成证书报告 + * + * @param request + * @return + */ 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"); + //划分为最佳点,最差点,典型点 + String[] pointStr = {BEST_POINT, WORST_POINT, MODEL_POINT}; + List pointList = Arrays.asList(pointStr); + for (int i = 0; i < pointList.size(); i++) { + //最佳点重复性 + List rep = request.getCheckDataCalibratorList() + .stream().filter(e -> BEST_POINT.equals(e.getTestType()) && + StringUtils.isEmpty(e.getTestValueFiveDate())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(rep)) { + Map repMap = BeanUtil.beanToMap(rep); + map.put(REPEAT_PREFIX + (i + 1), repMap); + } + //最佳点稳定性 + List sta = request.getCheckDataCalibratorList() + .stream().filter(e -> BEST_POINT.equals(e.getTestType()) && + StringUtils.isNotEmpty(e.getTestValueFiveDate())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(sta)) { + statisticalDate(sta, STA_PREFIX + (i + 1), map); + map.put(STA_PREFIX + (i + 1), sta); + } + } + map.put(UP_STANDARD, "\uF0A3"); + map.put(BELOW_STANDARD, "\uF0A3"); //除了选用的模板不一致,模板配置流程是一致的 return printFileRegister.registerPrintFile(MULTIFUNCTION_CHECK_DATA, "数据打印", null, map, true, null, null); } catch (Exception ex) { @@ -187,6 +227,33 @@ } } + /** + * 组装参数 + * + * @param sta + * @param strListParam + * @param map + */ + private void statisticalDate(List sta, String strListParam, Map map) { + //再次健壮性判断,防止其他方法调用,或者已经存在直接退出 + if (CollectionUtils.isEmpty(sta) || map.containsKey(strListParam + DATE_PREFIX + 1)) { + return; + } + BizEquipmentStandardCheckDataCalibrator dataCalibrator = sta.get(0); + map.put(strListParam + DATE_PREFIX + 1, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 2, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 3, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 4, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 5, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 6, dataCalibrator.getTestValueOneDate()); + } + + /** + * 生成证书报告的函数类 + * + * @param measureItemInfo + * @return + */ private String createCertificateFile(BizBusinessDeviceMeasureApproval measureItemInfo) { try { //过滤不能生成证书的 @@ -295,6 +362,12 @@ } } + /** + * 封面基本信息的定制化参数 + * + * @param map + * @param measureDataCalibrators + */ private void prepareCustomCoverParams(Map map, List measureDataCalibrators) { //定制参数 doCustomParam(map, measureDataCalibrators); @@ -334,7 +407,7 @@ } /** - * 直流电压表没有HZ + * 直流电压表没有HZ,处理电流表\电压表定制化参数 * 多功能 * * @param map diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java index 6412cc8..a2495df 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java @@ -44,7 +44,7 @@ /** * 检定有效日期-月份 */ - String MEASURE_VALID_M= "validM"; + String MEASURE_VALID_M = "validM"; /** * 检定有效日期-月中天数 */ @@ -89,4 +89,20 @@ */ String HAIKOU_ADDRESS = "海南省海口市美兰区白驹大道69号"; + + /** + * 核查记录数据 + */ + String UP_STANDARD = "upToStandard"; + String BELOW_STANDARD = "belowStandard"; + //重复性前缀 + String REPEAT_PREFIX="rep"; + //稳定性前缀 + String STA_PREFIX="sta"; + //日期前缀 + String DATE_PREFIX="sta"; + + String BEST_POINT ="最佳点"; + String WORST_POINT ="最差点"; + String MODEL_POINT ="典型典"; } 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 d10e544..d581629 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 @@ -177,4 +177,8 @@ @TableField(exist = false) private BizEquipmentInfo equipmentInfo; + @ApiModelProperty(value = "核查数据-多功能校准源(打印)", dataType = "List") + @TableField(exist = false) + private List checkDataCalibratorList; + } 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 index 9b6b39b..aece41f 100644 --- 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 @@ -14,17 +14,18 @@ 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.BizEquipmentStandardCheckDataCalibrator; 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 liquibase.pro.packaged.M; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; +import org.docx4j.wml.R; import org.springframework.stereotype.Component; -import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.CompletableFuture; @@ -50,7 +51,7 @@ TimeUnit.SECONDS, new LinkedBlockingQueue<>(10)); /** - * 生成更新证书的任务 + * 核查记录生成更新证书的任务 */ public void checkCertificateTask(BizEquipmentStandardCheckRecordApproval request) { //生成核查记录单 @@ -71,6 +72,13 @@ } } + /** + * 异步执行检定数据的生成数据 + * + * @param map + * @param id + * @param oldCertificateFile + */ public void excuteMeasureTaskAsyn(Map map, Long id, String oldCertificateFile) { List customTemplateUrls = new ArrayList<>(); customTemplateUrls.add(oldCertificateFile); @@ -99,7 +107,13 @@ ); } - + /** + * 异步执行核查记录审批流生成证书报告 + * + * @param map + * @param id + * @param oldCertificateFile + */ public void excuteCheckTaskAsyn(Map map, Long id, String oldCertificateFile) { List customTemplateUrls = new ArrayList<>(); customTemplateUrls.add(oldCertificateFile); @@ -167,19 +181,45 @@ }).join(); } + /** + * 对生成证书报告进行校验,是否需要生成证书报告 + * + * @param request + * @return + */ 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"); + //划分为最佳点,最差点,典型点 + String[] pointStr = {BEST_POINT, WORST_POINT, MODEL_POINT}; + List pointList = Arrays.asList(pointStr); + for (int i = 0; i < pointList.size(); i++) { + //最佳点重复性 + List rep = request.getCheckDataCalibratorList() + .stream().filter(e -> BEST_POINT.equals(e.getTestType()) && + StringUtils.isEmpty(e.getTestValueFiveDate())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(rep)) { + Map repMap = BeanUtil.beanToMap(rep); + map.put(REPEAT_PREFIX + (i + 1), repMap); + } + //最佳点稳定性 + List sta = request.getCheckDataCalibratorList() + .stream().filter(e -> BEST_POINT.equals(e.getTestType()) && + StringUtils.isNotEmpty(e.getTestValueFiveDate())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(sta)) { + statisticalDate(sta, STA_PREFIX + (i + 1), map); + map.put(STA_PREFIX + (i + 1), sta); + } + } + map.put(UP_STANDARD, "\uF0A3"); + map.put(BELOW_STANDARD, "\uF0A3"); //除了选用的模板不一致,模板配置流程是一致的 return printFileRegister.registerPrintFile(MULTIFUNCTION_CHECK_DATA, "数据打印", null, map, true, null, null); } catch (Exception ex) { @@ -187,6 +227,33 @@ } } + /** + * 组装参数 + * + * @param sta + * @param strListParam + * @param map + */ + private void statisticalDate(List sta, String strListParam, Map map) { + //再次健壮性判断,防止其他方法调用,或者已经存在直接退出 + if (CollectionUtils.isEmpty(sta) || map.containsKey(strListParam + DATE_PREFIX + 1)) { + return; + } + BizEquipmentStandardCheckDataCalibrator dataCalibrator = sta.get(0); + map.put(strListParam + DATE_PREFIX + 1, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 2, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 3, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 4, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 5, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 6, dataCalibrator.getTestValueOneDate()); + } + + /** + * 生成证书报告的函数类 + * + * @param measureItemInfo + * @return + */ private String createCertificateFile(BizBusinessDeviceMeasureApproval measureItemInfo) { try { //过滤不能生成证书的 @@ -295,6 +362,12 @@ } } + /** + * 封面基本信息的定制化参数 + * + * @param map + * @param measureDataCalibrators + */ private void prepareCustomCoverParams(Map map, List measureDataCalibrators) { //定制参数 doCustomParam(map, measureDataCalibrators); @@ -334,7 +407,7 @@ } /** - * 直流电压表没有HZ + * 直流电压表没有HZ,处理电流表\电压表定制化参数 * 多功能 * * @param map diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java index 138c7cc..f471a60 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java @@ -57,15 +57,6 @@ return subfileUrls; } - - public static void main(String[] args) { - String pdfNewUrl = "D:\\casic\\cut\\temp测试报告_1698197691704.pdf"; - String stampSealImgUrl = "D:\\casic\\cut\\检验章02_1694585722058.jpeg"; - String outFilePath = "D:\\casic\\cut\\crossSeal.pdf"; - wordFullSeam(pdfNewUrl, stampSealImgUrl, outFilePath); - } - - /** * 骑缝章只存在一个章在进行打印 */ @@ -134,10 +125,12 @@ public static void headerFooter(Document document) { HeaderFooter footer = document.getSections().get(0).getHeadersFooters().getFooter(); Paragraph footerParagraph = footer.addParagraph(); - footerParagraph.appendField("page number", FieldType.Field_Page); - footerParagraph.appendText(" / "); + footerParagraph.appendText(" 第 "); + footerParagraph.appendField("第 "+ "page number"+ "页" , FieldType.Field_Page); + footerParagraph.appendText(" 页 共"); footerParagraph.appendField("number of pages", FieldType.Field_Section_Pages); - footerParagraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Center); + footerParagraph.appendText(" 页 "); + footerParagraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Right); } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java index 6412cc8..a2495df 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java @@ -44,7 +44,7 @@ /** * 检定有效日期-月份 */ - String MEASURE_VALID_M= "validM"; + String MEASURE_VALID_M = "validM"; /** * 检定有效日期-月中天数 */ @@ -89,4 +89,20 @@ */ String HAIKOU_ADDRESS = "海南省海口市美兰区白驹大道69号"; + + /** + * 核查记录数据 + */ + String UP_STANDARD = "upToStandard"; + String BELOW_STANDARD = "belowStandard"; + //重复性前缀 + String REPEAT_PREFIX="rep"; + //稳定性前缀 + String STA_PREFIX="sta"; + //日期前缀 + String DATE_PREFIX="sta"; + + String BEST_POINT ="最佳点"; + String WORST_POINT ="最差点"; + String MODEL_POINT ="典型典"; } 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 d10e544..d581629 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 @@ -177,4 +177,8 @@ @TableField(exist = false) private BizEquipmentInfo equipmentInfo; + @ApiModelProperty(value = "核查数据-多功能校准源(打印)", dataType = "List") + @TableField(exist = false) + private List checkDataCalibratorList; + } 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 index 9b6b39b..aece41f 100644 --- 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 @@ -14,17 +14,18 @@ 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.BizEquipmentStandardCheckDataCalibrator; 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 liquibase.pro.packaged.M; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; +import org.docx4j.wml.R; import org.springframework.stereotype.Component; -import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.CompletableFuture; @@ -50,7 +51,7 @@ TimeUnit.SECONDS, new LinkedBlockingQueue<>(10)); /** - * 生成更新证书的任务 + * 核查记录生成更新证书的任务 */ public void checkCertificateTask(BizEquipmentStandardCheckRecordApproval request) { //生成核查记录单 @@ -71,6 +72,13 @@ } } + /** + * 异步执行检定数据的生成数据 + * + * @param map + * @param id + * @param oldCertificateFile + */ public void excuteMeasureTaskAsyn(Map map, Long id, String oldCertificateFile) { List customTemplateUrls = new ArrayList<>(); customTemplateUrls.add(oldCertificateFile); @@ -99,7 +107,13 @@ ); } - + /** + * 异步执行核查记录审批流生成证书报告 + * + * @param map + * @param id + * @param oldCertificateFile + */ public void excuteCheckTaskAsyn(Map map, Long id, String oldCertificateFile) { List customTemplateUrls = new ArrayList<>(); customTemplateUrls.add(oldCertificateFile); @@ -167,19 +181,45 @@ }).join(); } + /** + * 对生成证书报告进行校验,是否需要生成证书报告 + * + * @param request + * @return + */ 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"); + //划分为最佳点,最差点,典型点 + String[] pointStr = {BEST_POINT, WORST_POINT, MODEL_POINT}; + List pointList = Arrays.asList(pointStr); + for (int i = 0; i < pointList.size(); i++) { + //最佳点重复性 + List rep = request.getCheckDataCalibratorList() + .stream().filter(e -> BEST_POINT.equals(e.getTestType()) && + StringUtils.isEmpty(e.getTestValueFiveDate())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(rep)) { + Map repMap = BeanUtil.beanToMap(rep); + map.put(REPEAT_PREFIX + (i + 1), repMap); + } + //最佳点稳定性 + List sta = request.getCheckDataCalibratorList() + .stream().filter(e -> BEST_POINT.equals(e.getTestType()) && + StringUtils.isNotEmpty(e.getTestValueFiveDate())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(sta)) { + statisticalDate(sta, STA_PREFIX + (i + 1), map); + map.put(STA_PREFIX + (i + 1), sta); + } + } + map.put(UP_STANDARD, "\uF0A3"); + map.put(BELOW_STANDARD, "\uF0A3"); //除了选用的模板不一致,模板配置流程是一致的 return printFileRegister.registerPrintFile(MULTIFUNCTION_CHECK_DATA, "数据打印", null, map, true, null, null); } catch (Exception ex) { @@ -187,6 +227,33 @@ } } + /** + * 组装参数 + * + * @param sta + * @param strListParam + * @param map + */ + private void statisticalDate(List sta, String strListParam, Map map) { + //再次健壮性判断,防止其他方法调用,或者已经存在直接退出 + if (CollectionUtils.isEmpty(sta) || map.containsKey(strListParam + DATE_PREFIX + 1)) { + return; + } + BizEquipmentStandardCheckDataCalibrator dataCalibrator = sta.get(0); + map.put(strListParam + DATE_PREFIX + 1, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 2, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 3, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 4, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 5, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 6, dataCalibrator.getTestValueOneDate()); + } + + /** + * 生成证书报告的函数类 + * + * @param measureItemInfo + * @return + */ private String createCertificateFile(BizBusinessDeviceMeasureApproval measureItemInfo) { try { //过滤不能生成证书的 @@ -295,6 +362,12 @@ } } + /** + * 封面基本信息的定制化参数 + * + * @param map + * @param measureDataCalibrators + */ private void prepareCustomCoverParams(Map map, List measureDataCalibrators) { //定制参数 doCustomParam(map, measureDataCalibrators); @@ -334,7 +407,7 @@ } /** - * 直流电压表没有HZ + * 直流电压表没有HZ,处理电流表\电压表定制化参数 * 多功能 * * @param map diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java index 138c7cc..f471a60 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java @@ -57,15 +57,6 @@ return subfileUrls; } - - public static void main(String[] args) { - String pdfNewUrl = "D:\\casic\\cut\\temp测试报告_1698197691704.pdf"; - String stampSealImgUrl = "D:\\casic\\cut\\检验章02_1694585722058.jpeg"; - String outFilePath = "D:\\casic\\cut\\crossSeal.pdf"; - wordFullSeam(pdfNewUrl, stampSealImgUrl, outFilePath); - } - - /** * 骑缝章只存在一个章在进行打印 */ @@ -134,10 +125,12 @@ public static void headerFooter(Document document) { HeaderFooter footer = document.getSections().get(0).getHeadersFooters().getFooter(); Paragraph footerParagraph = footer.addParagraph(); - footerParagraph.appendField("page number", FieldType.Field_Page); - footerParagraph.appendText(" / "); + footerParagraph.appendText(" 第 "); + footerParagraph.appendField("第 "+ "page number"+ "页" , FieldType.Field_Page); + footerParagraph.appendText(" 页 共"); footerParagraph.appendField("number of pages", FieldType.Field_Section_Pages); - footerParagraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Center); + footerParagraph.appendText(" 页 "); + footerParagraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Right); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java index 4eeddeb..306d7e1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java @@ -31,14 +31,16 @@ * 多个word合并为一个doc样例 */ public static void mergeDoc() { - String word1Url = localPathUrl + "校准证书.docx"; - String word2Url = localPathUrl + "数据用表记录单.docx"; - //加载文档1 + String word1Url = localPathUrl + "211.docx"; +// String word2Url = localPathUrl + "202.docx"; +// //加载文档1 Document doc1 = new Document(word1Url); - //调用方法将文档2插入到文档1 - doc1.insertTextFromFile(word2Url, FileFormat.Docx_2010); - //保存合并后的文档 - doc1.saveToFile(word1Url, FileFormat.Docx_2010); +// //调用方法将文档2插入到文档1 +// doc1.insertTextFromFile(word2Url, FileFormat.Docx_2010); +// //保存合并后的文档 +// doc1.saveToFile(word1Url, FileFormat.Docx_2010); + DocPictureProvider.headerFooter(doc1); + doc1.saveToFile(localPathUrl+"add.docx", FileFormat.Docx); } /** @@ -130,7 +132,7 @@ public static void main(String[] args) throws Exception { //内嵌表信息 // Example.populateTableNest(); - textBoxTest(); + mergeDoc(); } /** diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java index 6412cc8..a2495df 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java @@ -44,7 +44,7 @@ /** * 检定有效日期-月份 */ - String MEASURE_VALID_M= "validM"; + String MEASURE_VALID_M = "validM"; /** * 检定有效日期-月中天数 */ @@ -89,4 +89,20 @@ */ String HAIKOU_ADDRESS = "海南省海口市美兰区白驹大道69号"; + + /** + * 核查记录数据 + */ + String UP_STANDARD = "upToStandard"; + String BELOW_STANDARD = "belowStandard"; + //重复性前缀 + String REPEAT_PREFIX="rep"; + //稳定性前缀 + String STA_PREFIX="sta"; + //日期前缀 + String DATE_PREFIX="sta"; + + String BEST_POINT ="最佳点"; + String WORST_POINT ="最差点"; + String MODEL_POINT ="典型典"; } 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 d10e544..d581629 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 @@ -177,4 +177,8 @@ @TableField(exist = false) private BizEquipmentInfo equipmentInfo; + @ApiModelProperty(value = "核查数据-多功能校准源(打印)", dataType = "List") + @TableField(exist = false) + private List checkDataCalibratorList; + } 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 index 9b6b39b..aece41f 100644 --- 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 @@ -14,17 +14,18 @@ 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.BizEquipmentStandardCheckDataCalibrator; 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 liquibase.pro.packaged.M; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; +import org.docx4j.wml.R; import org.springframework.stereotype.Component; -import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.CompletableFuture; @@ -50,7 +51,7 @@ TimeUnit.SECONDS, new LinkedBlockingQueue<>(10)); /** - * 生成更新证书的任务 + * 核查记录生成更新证书的任务 */ public void checkCertificateTask(BizEquipmentStandardCheckRecordApproval request) { //生成核查记录单 @@ -71,6 +72,13 @@ } } + /** + * 异步执行检定数据的生成数据 + * + * @param map + * @param id + * @param oldCertificateFile + */ public void excuteMeasureTaskAsyn(Map map, Long id, String oldCertificateFile) { List customTemplateUrls = new ArrayList<>(); customTemplateUrls.add(oldCertificateFile); @@ -99,7 +107,13 @@ ); } - + /** + * 异步执行核查记录审批流生成证书报告 + * + * @param map + * @param id + * @param oldCertificateFile + */ public void excuteCheckTaskAsyn(Map map, Long id, String oldCertificateFile) { List customTemplateUrls = new ArrayList<>(); customTemplateUrls.add(oldCertificateFile); @@ -167,19 +181,45 @@ }).join(); } + /** + * 对生成证书报告进行校验,是否需要生成证书报告 + * + * @param request + * @return + */ 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"); + //划分为最佳点,最差点,典型点 + String[] pointStr = {BEST_POINT, WORST_POINT, MODEL_POINT}; + List pointList = Arrays.asList(pointStr); + for (int i = 0; i < pointList.size(); i++) { + //最佳点重复性 + List rep = request.getCheckDataCalibratorList() + .stream().filter(e -> BEST_POINT.equals(e.getTestType()) && + StringUtils.isEmpty(e.getTestValueFiveDate())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(rep)) { + Map repMap = BeanUtil.beanToMap(rep); + map.put(REPEAT_PREFIX + (i + 1), repMap); + } + //最佳点稳定性 + List sta = request.getCheckDataCalibratorList() + .stream().filter(e -> BEST_POINT.equals(e.getTestType()) && + StringUtils.isNotEmpty(e.getTestValueFiveDate())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(sta)) { + statisticalDate(sta, STA_PREFIX + (i + 1), map); + map.put(STA_PREFIX + (i + 1), sta); + } + } + map.put(UP_STANDARD, "\uF0A3"); + map.put(BELOW_STANDARD, "\uF0A3"); //除了选用的模板不一致,模板配置流程是一致的 return printFileRegister.registerPrintFile(MULTIFUNCTION_CHECK_DATA, "数据打印", null, map, true, null, null); } catch (Exception ex) { @@ -187,6 +227,33 @@ } } + /** + * 组装参数 + * + * @param sta + * @param strListParam + * @param map + */ + private void statisticalDate(List sta, String strListParam, Map map) { + //再次健壮性判断,防止其他方法调用,或者已经存在直接退出 + if (CollectionUtils.isEmpty(sta) || map.containsKey(strListParam + DATE_PREFIX + 1)) { + return; + } + BizEquipmentStandardCheckDataCalibrator dataCalibrator = sta.get(0); + map.put(strListParam + DATE_PREFIX + 1, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 2, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 3, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 4, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 5, dataCalibrator.getTestValueOneDate()); + map.put(strListParam + DATE_PREFIX + 6, dataCalibrator.getTestValueOneDate()); + } + + /** + * 生成证书报告的函数类 + * + * @param measureItemInfo + * @return + */ private String createCertificateFile(BizBusinessDeviceMeasureApproval measureItemInfo) { try { //过滤不能生成证书的 @@ -295,6 +362,12 @@ } } + /** + * 封面基本信息的定制化参数 + * + * @param map + * @param measureDataCalibrators + */ private void prepareCustomCoverParams(Map map, List measureDataCalibrators) { //定制参数 doCustomParam(map, measureDataCalibrators); @@ -334,7 +407,7 @@ } /** - * 直流电压表没有HZ + * 直流电压表没有HZ,处理电流表\电压表定制化参数 * 多功能 * * @param map diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java index 138c7cc..f471a60 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/DocPictureProvider.java @@ -57,15 +57,6 @@ return subfileUrls; } - - public static void main(String[] args) { - String pdfNewUrl = "D:\\casic\\cut\\temp测试报告_1698197691704.pdf"; - String stampSealImgUrl = "D:\\casic\\cut\\检验章02_1694585722058.jpeg"; - String outFilePath = "D:\\casic\\cut\\crossSeal.pdf"; - wordFullSeam(pdfNewUrl, stampSealImgUrl, outFilePath); - } - - /** * 骑缝章只存在一个章在进行打印 */ @@ -134,10 +125,12 @@ public static void headerFooter(Document document) { HeaderFooter footer = document.getSections().get(0).getHeadersFooters().getFooter(); Paragraph footerParagraph = footer.addParagraph(); - footerParagraph.appendField("page number", FieldType.Field_Page); - footerParagraph.appendText(" / "); + footerParagraph.appendText(" 第 "); + footerParagraph.appendField("第 "+ "page number"+ "页" , FieldType.Field_Page); + footerParagraph.appendText(" 页 共"); footerParagraph.appendField("number of pages", FieldType.Field_Section_Pages); - footerParagraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Center); + footerParagraph.appendText(" 页 "); + footerParagraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Right); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java index 4eeddeb..306d7e1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java @@ -31,14 +31,16 @@ * 多个word合并为一个doc样例 */ public static void mergeDoc() { - String word1Url = localPathUrl + "校准证书.docx"; - String word2Url = localPathUrl + "数据用表记录单.docx"; - //加载文档1 + String word1Url = localPathUrl + "211.docx"; +// String word2Url = localPathUrl + "202.docx"; +// //加载文档1 Document doc1 = new Document(word1Url); - //调用方法将文档2插入到文档1 - doc1.insertTextFromFile(word2Url, FileFormat.Docx_2010); - //保存合并后的文档 - doc1.saveToFile(word1Url, FileFormat.Docx_2010); +// //调用方法将文档2插入到文档1 +// doc1.insertTextFromFile(word2Url, FileFormat.Docx_2010); +// //保存合并后的文档 +// doc1.saveToFile(word1Url, FileFormat.Docx_2010); + DocPictureProvider.headerFooter(doc1); + doc1.saveToFile(localPathUrl+"add.docx", FileFormat.Docx); } /** @@ -130,7 +132,7 @@ public static void main(String[] args) throws Exception { //内嵌表信息 // Example.populateTableNest(); - textBoxTest(); + mergeDoc(); } /** diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index 8c925d0..4d38bd4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -376,6 +376,7 @@ * @param params 参数 */ public static String exportWord(String temDir, List fileNames, Map params, List mergeColNames) { + //两个文档合并为fileNames[0]文档 String fileName = mergeDoc(temDir, fileNames); Assert.notNull(temDir, "临时文件路径不能为空"); Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式"); @@ -384,23 +385,27 @@ // 新建文件夹 dir.getParentFile().mkdirs(); } - String tmpPath = ""; + String filePath = ""; FileOutputStream fos = null; try { + //执行文件填充 ParseWord07 parseWord07 = new ParseWord07(); XWPFDocument doc = parseWord07.parseWord(temDir + fileName, params, mergeColNames); - tmpPath = temDir + fileName; - fos = new FileOutputStream(tmpPath); + filePath = temDir + fileName; + fos = new FileOutputStream(filePath); doc.write(fos); fos.flush(); - - //增加对固定文本框的处理 + //增加对固定文本框的文字填充的处理一般的poi不支持,需要调用poi-tl执行文件打印操作 ConfigureBuilder builder = Configure.builder(); XWPFTemplate compile = XWPFTemplate.compile(temDir + fileName, builder.build()); compile.render(params); fileName = "temp" + fileName; - tmpPath = temDir + fileName; - compile.writeToFile(tmpPath); + String tempPath = temDir + fileName; + compile.writeToFile(tempPath); + //增加首位页码的打印 + Document document = new Document(tempPath); + DocPictureProvider.headerFooter(document); + document.saveToFile(filePath, FileFormat.Docx); } catch (Exception e) { e.printStackTrace(); } finally { @@ -412,12 +417,18 @@ e.printStackTrace(); } } - return tmpPath; + return filePath; } - + /** + * 多个docx文档合并功能,合并为第一个文档 + * + * @param localPathUrl + * @param fileNames + * @return + */ private static String mergeDoc(String localPathUrl, List fileNames) { - //合并 + //doc合并 if (CollectionUtils.isEmpty(fileNames)) { return null; }