From 80b9620794286b61718a84ec1c2447893189646a Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 03 九月 2026 17:04:02 +0800
Subject: [PATCH] fix(report): 修复检测报告生成和数据同步问题 - 调整样品发送时间排序为降序显示最新数据 - 完善检验项目同步逻辑支持多层级节点配置管理
---
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java | 224 +++++++++++++++++++++++++++++++++++++------------------
1 files changed, 150 insertions(+), 74 deletions(-)
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
index 8f46956..f41d3d0 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
@@ -12,7 +12,6 @@
import com.alibaba.fastjson.JSONObject;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -88,6 +87,9 @@
*/
@Service
public class InsOrderPlanServiceImpl extends ServiceImpl<InsOrderMapper, InsOrder> implements InsOrderPlanService {
+
+ private static final int DETECTION_REPORT = 0;
+ private static final int INSPECTION_REPORT = 1;
@Resource
private InsSampleMapper insSampleMapper;
@@ -275,9 +277,14 @@
}
@Override
- public Map<String,Object> checkSubmitPlan(Integer orderId, String laboratory) {
+ public Map<String,Object> checkSubmitPlan(Integer orderId, String laboratory, Integer reportType) {
Map<String, Object> map = new HashMap<>();
List<String> collect = new ArrayList<>();
+ if (Objects.equals(DETECTION_REPORT, reportType)) {
+ map.put("errorMsg", collect);
+ map.put("unInsOrderCount", 0L);
+ return map;
+ }
List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList());
List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
@@ -767,8 +774,21 @@
@Override
@Transactional(rollbackFor = Exception.class)
- public int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode,Boolean registerInsResults) {
- InsOrder order = insOrderMapper.selectById(orderId);
+ public int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode, Boolean registerInsResults, Integer reportType) {
+ if (!Objects.equals(DETECTION_REPORT, reportType) && !Objects.equals(INSPECTION_REPORT, reportType)) {
+ throw new ErrorException("璇烽�夋嫨鎶ュ憡绫诲瀷");
+ }
+ InsOrder order = insOrderMapper.selectOne(Wrappers.<InsOrder>lambdaQuery()
+ .eq(InsOrder::getId, orderId)
+ .last("FOR UPDATE"));
+ InsReport existingReport = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery()
+ .eq(InsReport::getInsOrderId, orderId));
+ if (existingReport != null && existingReport.getReportType() != null
+ && !Objects.equals(existingReport.getReportType(), reportType)) {
+ throw new ErrorException("鍚屼竴妫�楠岃鍗曞彧鑳戒娇鐢ㄤ竴绉嶆姤鍛婄被鍨�");
+ }
+ boolean isInspectionReport = Objects.equals(INSPECTION_REPORT, reportType);
+ registerInsResults = isInspectionReport && Boolean.TRUE.equals(registerInsResults);
// 1. 鍒ゆ柇鏄惁鏈夐噸澶嶇紪鍙�, 鏈夐噸澶嶇紪鍙峰仛鎻愰啋
Long codeCount = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
.ne(InsOrder::getState, -1)
@@ -794,13 +814,18 @@
.in(InsProduct::getInsSampleId, InsSampleIds)
.eq(InsProduct::getSonLaboratory, laboratory)
.eq(InsProduct::getState, 1)
- .and(wrapper -> wrapper
- .isNull(InsProduct::getInsResult)
- .or()
- .eq(InsProduct::getInsResult, 2)
- )
+ .and(wrapper -> {
+ if (Objects.equals(reportType, DETECTION_REPORT)) {
+ wrapper.isNull(InsProduct::getLastValue).or().eq(InsProduct::getLastValue, "");
+ } else {
+ wrapper.isNull(InsProduct::getInsResult).or().eq(InsProduct::getInsResult, 2);
+ }
+ })
.ne(InsProduct::getIsBinding, 1));
- insProducts.addAll(insProductMapper.selectFiberInsProduct(InsSampleIds, laboratory));
+ if (Objects.equals(reportType, INSPECTION_REPORT)) {
+ List<InsProduct> insProducts1 = insProductMapper.selectFiberInsProduct(InsSampleIds, laboratory);
+ insProducts.addAll(insProducts1);
+ }
if (insProducts.size() > 0) {
String str = "";
int count = 0;
@@ -864,7 +889,7 @@
});
// 8.鎻愪氦鐢熸垚鎶ュ憡
- this.generateReport(orderId);
+ this.generateReport(orderId, reportType);
// 9.娣诲姞涓存椂pdf鐢熸垚鍦板潃
InsReport report = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery()
@@ -878,7 +903,7 @@
// 11.鎴愬搧鎶芥牱娣诲姞鍚堟牸鐘舵��
// 鍒ゆ柇鏄惁鏈夋娊鏍蜂俊鎭�
- if (order.getQuarterItemId() != null) {
+ if (isInspectionReport && order.getQuarterItemId() != null) {
// 鍒ゆ柇鏄惁鏈変笉鍚堟牸
this.addProductSpotCheck(insSamples, order);
}
@@ -933,7 +958,7 @@
});
// 14.ifs绉诲簱(鍘熸潗鏂欓渶瑕佽繘琛岀Щ搴撴搷浣�) --> 鏈�鍚庢墽琛�,鍥犱负澶辫触鏃犳硶鍥炴粴
- if (ifsInventoryQuantity != null) {
+ if (ifsInventoryQuantity != null && isInspectionReport) {
// 鐧昏妫�楠岀粨鏋�
// 鍒ゆ柇鏄惁鏈変笉鍚堟牸, 鏈変笉鍚堟牸涓嶈兘绉诲簱
// todo: ifs绉诲簱
@@ -947,7 +972,7 @@
});
- } else {
+ } else if (isInspectionReport) {
// 淇敼鎴愬搧鐘舵��
// 鍒ゆ柇鏄惁鏈変笉鍚堟牸
Long unqualifiedCount = insReportService.getUnqualifiedCount(order);
@@ -974,7 +999,7 @@
private void addAnalysis(List<InsProduct> productList, IfsInventoryQuantity ifsInventoryQuantity, InsOrder order, String sendUserAccount) {
for (InsProduct insProduct : productList) {
// 鍒ゆ柇鏄惁鏄暟鍊肩被鍨�
- if (insProduct.getInspectionValueType().equals("1") && insProduct.getInsResult().equals(1)) {
+ if ("1".equals(insProduct.getInspectionValueType()) && Objects.equals(insProduct.getInsResult(), 1)) {
List<InsProductDeviationWarningDetail> insProductAnalysisDtoList = insProductMapper.selectAnalysis(insProduct, ifsInventoryQuantity.getSupplierName());
if (CollectionUtils.isEmpty(insProductAnalysisDtoList)) {
@@ -1264,22 +1289,24 @@
* 鐢熸垚鎶ュ憡
* @param orderId
*/
- private void generateReport(Integer orderId) {
+ private void generateReport(Integer orderId, Integer reportType) {
/*鏍峰搧涓嬬殑椤圭洰鍙鏈変竴涓」鐩笉鍚堟牸鍒欐楠岀粨鏋滀负0,鍚﹀垯涓�1*/
//杩欓噷鐨刬nsSamples鏄鍗曚笅鐨勬墍鏈夋牱鍝佸寘鎷�("/")
List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId));
+ if (Objects.equals(reportType, INSPECTION_REPORT)) {
for (InsSample insSample : insSamples) {
List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
.eq(InsProduct::getInsSampleId, insSample.getId())
.eq(InsProduct::getState, 1)
.ne(InsProduct::getIsBinding, 1));
- List<Integer> results = insProducts.stream().map(InsProduct::getInsResult).filter(str -> str != null).collect(Collectors.toList());
+ List<Integer> results = insProducts.stream().map(InsProduct::getInsResult).filter(Objects::nonNull).collect(Collectors.toList());
if (results.contains(0)) {
insSample.setInsResult(0);
} else {
insSample.setInsResult(1);
}
insSampleMapper.updateById(insSample);
+ }
}
InsOrder insOrder = insOrderMapper.selectById(orderId);
// 鎶芥鍙樻垚濮旀墭妫�楠�
@@ -1290,10 +1317,10 @@
// 鍒ゆ柇鏄ぇ鎶ュ憡杩樻槸灏忔姤鍛� 杩涘巶灏忔姤鍛�, 鍏朵粬閮芥槸澶ф姤鍛�
if (insOrder.getOrderType().equals(InsOrderTypeConstants.ENTER_THE_FACTORY)) {
// 鐢熸垚灏忔姤鍛�
- addSmallReport(orderId, insOrder, insSamples);
+ addSmallReport(orderId, insOrder, insSamples, reportType);
} else {
//鐢熸垚澶ф姤鍛�
- addBitReport(orderId, insOrder);
+ addBitReport(orderId, insOrder, reportType);
}
}
@@ -1639,10 +1666,19 @@
* @param max 鏍囪瘑鏈�澶т釜鏁�
* @return
*/
- private TableStyle setTableStyle(int max){
+ private TableStyle setTableStyle(int max, boolean showResult){
//璁剧疆鏍峰紡
TableStyle tableStyle = new TableStyle();
- if(max<=5){
+ if (!showResult) {
+ switch (max) {
+ case 1: tableStyle.setColWidths(new int[]{650, 3000, 850, 2400, 3100}); break;
+ case 2: tableStyle.setColWidths(new int[]{650, 2800, 850, 2200, 1750, 1750}); break;
+ case 3: tableStyle.setColWidths(new int[]{650, 2600, 850, 1800, 1400, 1400, 1400}); break;
+ case 4: tableStyle.setColWidths(new int[]{650, 2400, 850, 1600, 1125, 1125, 1125, 1125}); break;
+ case 5: tableStyle.setColWidths(new int[]{650, 2200, 850, 1500, 960, 960, 960, 960, 960}); break;
+ default: break;
+ }
+ } else if(max<=5){
for (int i = 1; i <= max; i++) {
// 鏍规嵁妫�楠岀粨鏋滀釜鏁颁慨鏀归暱搴�
switch (i) {
@@ -1730,11 +1766,13 @@
* @param insOrder
* @param insSamples
*/
- private void addSmallReport(Integer orderId, InsOrder insOrder, List<InsSample> insSamples) {
+ private void addSmallReport(Integer orderId, InsOrder insOrder, List<InsSample> insSamples, Integer reportType) {
InsReport insReport = new InsReport();
AtomicReference<String> resultCh = new AtomicReference<>("");
+ boolean showResult = Objects.equals(reportType, INSPECTION_REPORT);
insReport.setCode(insOrder.getEntrustCode());
insReport.setInsOrderId(orderId);
+ insReport.setReportType(reportType);
InsSample insSample = insSamples.get(0);
// 濉厖鍩虹鏁版嵁
EnterFactoryReport enterFactoryReport = new EnterFactoryReport();
@@ -1785,9 +1823,11 @@
String templateName;
if(StringUtils.equals(OrderType.WG.getValue(),ifsInventoryQuantity.getOrderType())){
//杩囨护涓嶅垽瀹氱殑妫�娴嬮」
- List<SampleProductExportDto> filterItems = sampleProductDto2s.stream().filter(f -> f.getInsResult() != 3).collect(Collectors.toList());
+ List<SampleProductExportDto> filterItems = sampleProductDto2s.stream()
+ .filter(f -> !showResult || f.getInsResult() != 3)
+ .collect(Collectors.toList());
int maxCableTag = 5;//鍗曚釜琛ㄦ牸锛岀數缂嗛鑹叉爣璇嗘渶澶т釜鏁�
- templateName = "/static/small-wg-report-template.docx";
+ templateName = showResult ? "/static/small-wg-report-template.docx" : "/static/small-wg-detection-template.docx";
//鏌ヨ妫�楠屽崟娑堟伅
InsSampleUserVO insSampleUser = insSampleUserMapper.selectUserNameByOrderId(orderId);
if(Objects.nonNull(insSampleUser)){
@@ -1833,7 +1873,7 @@
sortSampleProduct(tempMap,totalItem);
int tagNum = Math.min(max,maxCableTag);
List<String> tagList = cableTags.isEmpty()?new ArrayList<>():cableTags.subList(0,tagNum);
- handlerSampleItems(OrderType.WG.getValue(),totalItem,finalIndex,sampleList,tagNum,text,rows,rowRenderData,resultCh,tagList,true);
+ handlerSampleItems(OrderType.WG.getValue(), totalItem, finalIndex, sampleList, tagNum, text, rows, rowRenderData, resultCh, tagList, true, showResult);
if(CollectionUtil.isNotEmpty(tempMap2)){
sortSampleProduct(tempMap2,cableTagEnclosureItem);
@@ -1844,9 +1884,9 @@
List<TextRenderData> newText = new ArrayList<TextRenderData>();
List<RowRenderData> newRows = new ArrayList<>();
RowRenderData newRowRenderData = null;
- handlerSampleItems(OrderType.WG.getValue(),cableTagEnclosureItem,finalIndex2, new ArrayList<>(),newCableTags.size(),newText,newRows,newRowRenderData,resultCh,newCableTags,true);
+ handlerSampleItems(OrderType.WG.getValue(), cableTagEnclosureItem, finalIndex2, new ArrayList<>(), newCableTags.size(), newText, newRows, newRowRenderData, resultCh, newCableTags, true, showResult);
tableRenderData2.setRows(newRows);
- tableRenderData2.setTableStyle(setTableStyle(newCableTags.size()));
+ tableRenderData2.setTableStyle(setTableStyle(newCableTags.size(), showResult));
HashMap<String, Object> tableMap = new HashMap<>();
tableMap.put("enclosureTable",tableRenderData2);
tableMap.put("resultCh", resultCh);
@@ -1861,15 +1901,15 @@
}
tableRenderData.setRows(rows);
- tableRenderData.setTableStyle(setTableStyle(tagNum));
- if (!resultCh.get().isEmpty()) {
+ tableRenderData.setTableStyle(setTableStyle(tagNum, showResult));
+ if (showResult && !resultCh.get().isEmpty()) {
resultCh.set("缁忔楠岋紝" + resultCh.get() + "鎵�妫�椤圭洰涓嶅悎鏍硷紝鍏朵綑鎵�妫�椤圭洰鍧囧悎鏍笺�傦紙鐩栫珷鏈夋晥锛�");
- } else {
+ } else if (showResult) {
resultCh.set("鏈骇鍝佺鍚堢浉鍏虫爣鍑嗚姹傦紝缁忔楠屽悎鏍煎噯浜堝嚭鍘傦紙鐩栫珷鏈夋晥锛�");
}
}else{
- templateName = "/static/small-report-template.docx";
+ templateName = showResult ? "/static/small-report-template.docx" : "/static/small-detection-template.docx";
// 杞垚Mpa杩涜鎺掑簭
Map<String, List<SampleProductExportDto>> sortedMap = sampleProductDto2s.stream()
.filter(sampleProductDto2 -> StringUtils.isNotBlank(sampleProductDto2.getInspectionItem()))
@@ -1880,13 +1920,13 @@
AtomicInteger finalIndex = new AtomicInteger(1);
- handlerSampleItems(OrderType.RAW.getValue(), item,finalIndex,sampleList,max,text,rows,rowRenderData,resultCh,null,true);
+ handlerSampleItems(OrderType.RAW.getValue(), item, finalIndex, sampleList, max, text, rows, rowRenderData, resultCh, null, true, showResult);
tableRenderData.setRows(rows);
- tableRenderData.setTableStyle(setTableStyle(max));
+ tableRenderData.setTableStyle(setTableStyle(max, showResult));
- if (!resultCh.get().equals("")) {
+ if (showResult && !resultCh.get().equals("")) {
resultCh.set("缁忔楠岋紝" + resultCh.get() + "鎵�妫�椤圭洰涓嶅悎鏍硷紝鍏朵綑鎵�妫�椤圭洰鍧囧悎鏍笺��");
- } else {
+ } else if (showResult) {
resultCh.set("缁忔楠屾鎵�" + enterFactoryReport.getSample() + "鍚勯」鐩潎绗﹀悎妫�楠岃鑼冭姹傘��");
}
}
@@ -1914,8 +1954,9 @@
try {
// 淇敼鎹㈣鍜屽悎骞堕棶棰�
updaeMerge(template.getXWPFDocument(), true);
- String name = insReport.getCode().replace("/", "") + "-J.docx";
- template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
+ String name = insReport.getCode().replace("/", "") + (showResult ? "-J.docx" : "-C.docx");
+ Files.createDirectories(Paths.get(wordUrl));
+ template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl, name)));
insReport.setUrl("/word/" + name);
insReport.setIsPass(0);
insReport.setWriteUserId(SecurityUtils.getUserId().intValue());//鎻愪氦浜�
@@ -1941,7 +1982,7 @@
* @param rowRenderData
* @param resultCh
*/
- private static void handlerSampleItems(String orderType,Map<String, List<SampleProductExportDto>> item,AtomicInteger finalIndex,List<SampleProductExportDto> sampleList,Integer max,List<TextRenderData> text,List<RowRenderData> rows,RowRenderData rowRenderData,AtomicReference<String> resultCh,List<String> cableTagList,Boolean hasAddHead ){
+ private static void handlerSampleItems(String orderType, Map<String, List<SampleProductExportDto>> item, AtomicInteger finalIndex, List<SampleProductExportDto> sampleList, Integer max, List<TextRenderData> text, List<RowRenderData> rows, RowRenderData rowRenderData, AtomicReference<String> resultCh, List<String> cableTagList, Boolean hasAddHead, boolean showResult) {
item.forEach((s, sampleProductDtoInside) -> {
// 娣诲姞妫�楠岄」
SampleProductExportDto dto2 = new SampleProductExportDto();
@@ -2034,7 +2075,7 @@
// 娣诲姞灏忔姤鍛婅〃澶�
if(hasAddHead){
- text = addSmallHead(text, max, rows,cableTagList);
+ text = addSmallHead(text, max, rows, cableTagList, showResult);
}
// 涓棿妫�娴嬪�兼坊鍔�
@@ -2084,21 +2125,21 @@
if (CollectionUtils.isNotEmpty(sample.getLastValueList())
&& sample.getLastValueList().size() == max) {
// 鍒ゆ柇鏄惁鏄瑙�, 澶栬鍏ㄩ儴鍚堟牸鐨勮瘽闇�瑕佸悎骞�
- if (sample.getInspectionItem().contains("澶栬")) {
+ if (showResult && sample.getInspectionItem().contains("澶栬")) {
// 鍒ゅ畾缁撴灉
boolean falg = false;
if (CollectionUtils.isNotEmpty(sample.getLastValueList())) {
// 鍒ゆ柇鏄惁鏈変竴涓敊璇�
- if (sample.getInsResultList().stream().anyMatch(s -> s.equals(2))) {
+ if (sample.getInsResultList().stream().anyMatch(s -> Objects.equals(s, 2))) {
falg = true;
} else {
- boolean error = sample.getInsResultList().stream().anyMatch(s -> s.equals(0));
+ boolean error = sample.getInsResultList().stream().anyMatch(s -> Objects.equals(s, 0));
if (!error) {
falg = true;
}
}
} else {
- if (!sample.getInsResult().equals(2)) {
+ if (!Objects.equals(sample.getInsResult(), 2)) {
falg = true;
}
}
@@ -2153,7 +2194,7 @@
// 鍒ゅ畾缁撴灉
String result = "";
- if (sample.getInsResult() != null) {
+ if (showResult && sample.getInsResult() != null) {
switch (sample.getInsResult()) {
case 1:
result = "鈭�";
@@ -2166,18 +2207,18 @@
break;
}
}
- if (CollectionUtils.isNotEmpty(sample.getLastValueList())) {
+ if (showResult && CollectionUtils.isNotEmpty(sample.getLastValueList())) {
// 鍒ゆ柇鏄惁鏈変竴涓敊璇�
- if (sample.getInsResultList().stream().anyMatch(s -> s.equals(3))) {
+ if (sample.getInsResultList().stream().anyMatch(s -> Objects.equals(s, 3))) {
result = "-";
} else {
- boolean error = sample.getInsResultList().stream().anyMatch(s -> s.equals(0));
+ boolean error = sample.getInsResultList().stream().anyMatch(s -> Objects.equals(s, 0));
if (error) {
List<String> collect = new ArrayList<>();
int index = 1;
for (Integer count : sample.getInsResultList()) {
String type;
- if (count.equals(0)) {
+ if (Objects.equals(count, 0)) {
// 娣诲姞涓嶅悎鏍兼弿杩�
String item1 = (max == 1 ? "" : "绗�" + index + "娆�")
+ sample.getInspectionItem()
@@ -2201,6 +2242,7 @@
}
}
+ if (showResult) {
TextRenderData middleRenderData7 = new TextRenderData();
middleRenderData7.setText(result);
Style middleStyle7 = new Style();
@@ -2208,6 +2250,7 @@
middleStyle7.setColor("000000");
middleRenderData7.setStyle(middleStyle7);
text.add(middleRenderData7);
+ }
TextRenderData[] text2 = text.toArray(new TextRenderData[0]);
rowRenderData = Rows.of(text2).center().rowAtleastHeight(1).create();
@@ -2228,7 +2271,7 @@
* @param rows
* @return
*/
- private static List<TextRenderData> addSmallHead(List<TextRenderData> text, Integer max, List<RowRenderData> rows,List<String> cableTagList) {
+ private static List<TextRenderData> addSmallHead(List<TextRenderData> text, Integer max, List<RowRenderData> rows, List<String> cableTagList, boolean showResult) {
RowRenderData rowRenderData;
// // 澶�
TextRenderData headRenderData1 = new TextRenderData();
@@ -2265,13 +2308,14 @@
for (int i = 0; i < max; i++) {
TextRenderData headRenderData6 = new TextRenderData();
- headRenderData6.setText("妫�楠岀粨鏋溾垜6");
+ headRenderData6.setText(showResult ? "妫�楠岀粨鏋溾垜6" : "妫�娴嬫暟鎹垜6");
Style headStyle6 = new Style();
headStyle6.setFontFamily("瀹嬩綋");
headStyle6.setColor("000000");
headRenderData6.setStyle(headStyle6);
text.add(headRenderData6);
}
+ if (showResult) {
TextRenderData headRenderData7 = new TextRenderData();
headRenderData7.setText("鍗曢」鍒ゆ柇");
Style headStyle7 = new Style();
@@ -2279,6 +2323,7 @@
headStyle7.setColor("000000");
headRenderData7.setStyle(headStyle7);
text.add(headRenderData7);
+ }
TextRenderData[] text3 = text.toArray(new TextRenderData[0]);
rowRenderData = Rows.of(text3).center().rowAtleastHeight(1).create();
@@ -2328,6 +2373,7 @@
tagRenderData6.setStyle(tagStyle6);
text.add(tagRenderData6);
}
+ if (showResult) {
TextRenderData tagRenderData7 = new TextRenderData();
tagRenderData7.setText("");
Style tagStyle7 = new Style();
@@ -2335,6 +2381,7 @@
tagStyle7.setColor("000000");
tagRenderData7.setStyle(tagStyle7);
text.add(tagRenderData7);
+ }
TextRenderData[] text4 = text.toArray(new TextRenderData[0]);
rowRenderData = Rows.of(text4).center().rowAtleastHeight(1).create();
@@ -2386,6 +2433,7 @@
tagRenderData6.setStyle(tagStyle6);
text.add(tagRenderData6);
}
+ if (showResult) {
TextRenderData tagRenderData7 = new TextRenderData();
tagRenderData7.setText("/");
Style tagStyle7 = new Style();
@@ -2393,6 +2441,7 @@
tagStyle7.setColor("000000");
tagRenderData7.setStyle(tagStyle7);
text.add(tagRenderData7);
+ }
TextRenderData[] text4 = text.toArray(new TextRenderData[0]);
rowRenderData = Rows.of(text4).center().rowAtleastHeight(1).create();
@@ -2410,12 +2459,14 @@
* @param insOrder
* @param
*/
- private void addBitReport(Integer orderId, InsOrder insOrder) {
+ private void addBitReport(Integer orderId, InsOrder insOrder, Integer reportType) {
//samples鏄笉鍖呮嫭甯︽湁"/"鐨勬牱鍝�
List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId);
InsReport insReport = new InsReport();
insReport.setCode(insOrder.getEntrustCode());
insReport.setInsOrderId(orderId);
+ insReport.setReportType(reportType);
+ boolean showResult = Objects.equals(reportType, INSPECTION_REPORT);
List<Map<String, Object>> tables = new ArrayList<>();
Set<String> standardMethod = new HashSet<>();
Set<String> deviceSet = new HashSet<>();
@@ -2426,7 +2477,7 @@
List<String> resultChList = new ArrayList<>();
List<String> resultEnList = new ArrayList<>();
// 鍒ゆ柇鏄惁鏄彧鏈変竴涓牱鍝�
- boolean isOneSample = samples.size() == 1 ? true : false;
+ boolean isOneSample = samples.size() == 1;
/*鍩虹鎶ュ憡(鏍规嵁缁樺埗鐨勫師濮嬭褰曟ā鐗堝舰鎴�)*/
samples.forEach(a -> {
models.add(a.getModel());
@@ -2505,15 +2556,15 @@
}
// 琛ㄥご娣诲姞
- addHead(a, text, rowRenderData, rows, max, cableTags);
+ addHead(a, text, rowRenderData, rows, max, cableTags, showResult);
text = new ArrayList<>();
// 娣诲姞妫�娴嬪��
- productSize.set(addTestValue(a, text, rowRenderData, rows, max, resultChList, resultEnList, insSamples, cableTags, isOneSample));
+ productSize.set(addTestValue(a, text, rowRenderData, rows, max, resultChList, resultEnList, insSamples, cableTags, isOneSample, showResult));
text = new ArrayList<>();
// 缁撳熬娣诲姞
- addEnding(text, rowRenderData, rows, max);
+ addEnding(text, rowRenderData, rows, max, showResult);
text = new ArrayList<>();
List<TableRenderData> tables1 = new ArrayList<>();
@@ -2547,7 +2598,7 @@
// for (int i = 1; i <= max; i++) {
// }
// 鏍规嵁妫�楠岀粨鏋滀釜鏁颁慨鏀归暱搴�
- tableStyle.setColWidths(calcTableColWidths(max));
+ tableStyle.setColWidths(calcTableColWidths(max, showResult));
// switch (max) {
// case 1:
// tableStyle.setColWidths(new int[]{650, 2000, 2000, 850, 2200, 2100, 1200});
@@ -2593,7 +2644,7 @@
// for (int i = 1; i <= max; i++) {
// }
// 鏍规嵁妫�楠岀粨鏋滀釜鏁颁慨鏀归暱搴�
- tableStyle.setColWidths(calcTableColWidths(max));
+ tableStyle.setColWidths(calcTableColWidths(max, showResult));
// switch (max) {
// case 1:
// tableStyle.setColWidths(new int[]{650, 2000, 2000, 850, 2200, 2100, 1200});
@@ -2681,7 +2732,7 @@
Custom custom = customMapper.selectById(insOrder.getCompanyId());
// 鏌ヨ鍒ゆ柇鏄惁鏈変笉鍒ゅ畾椤圭洰,鍜屽叏閮芥槸鍒ゅ畾椤�
- int judgeType = insProductMapper.selectNoJudge(insOrder.getId());
+ int judgeType = showResult ? insProductMapper.selectNoJudge(insOrder.getId()) : 0;
String resultCh = "";
String resultEn = "";
for (String reference : resultChList) {
@@ -2773,7 +2824,7 @@
List<Map<String, String>> finalDeviceList = deviceList;
String finalModelStr = modelStr;
- InputStream inputStream = this.getClass().getResourceAsStream("/static/report-template.docx");
+ InputStream inputStream = this.getClass().getResourceAsStream(showResult ? "/static/report-template.docx" : "/static/detection-report-template.docx");
Configure configure = Configure.builder()
.bind("deviceList", new HackLoopTableRenderPolicy())
.useSpringEL(true)
@@ -2816,8 +2867,9 @@
try {
// 淇敼鎹㈣鍜屽悎骞堕棶棰�
updaeMerge(template.getXWPFDocument(), false);
- String name = insReport.getCode().replace("/", "") + ".docx";
- template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
+ String name = insReport.getCode().replace("/", "") + (showResult ? ".docx" : "-C.docx");
+ Files.createDirectories(Paths.get(wordUrl));
+ template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl, name)));
insReport.setUrl("/word/" + name);
insReport.setWriteUserId(SecurityUtils.getUserId().intValue());//鎻愪氦浜�
insReport.setWriteTime(LocalDateTime.now());//鎻愪氦鏃堕棿
@@ -2836,7 +2888,17 @@
* @param max 鏈�澶ф楠屼釜鏁�
* @return
*/
- private static int[] calcTableColWidths(int max){
+ private static int[] calcTableColWidths(int max, boolean showResult){
+ if (!showResult) {
+ switch (max) {
+ case 1: return new int[]{650, 2200, 2200, 850, 2300, 1800};
+ case 2: return new int[]{650, 1600, 1600, 850, 1900, 1700, 1700};
+ case 3: return new int[]{650, 1400, 1400, 850, 1600, 1375, 1375, 1375};
+ case 4: return new int[]{650, 1250, 1250, 850, 1450, 1140, 1140, 1140, 1140};
+ case 5: return new int[]{650, 1150, 1150, 850, 1300, 980, 980, 980, 980, 980};
+ default: return new int[0];
+ }
+ }
int[] colWidths = null;
switch (max) {
case 1:
@@ -3110,7 +3172,7 @@
* @param max
* @param cableTags 绾胯姱棰滆壊
*/
- private static void addHead(SampleProductDto sample, List<TextRenderData> text, RowRenderData rowRenderData, List<RowRenderData> rows, int max, List<String> cableTags) {
+ private static void addHead(SampleProductDto sample, List<TextRenderData> text, RowRenderData rowRenderData, List<RowRenderData> rows, int max, List<String> cableTags, boolean showResult) {
// 绗竴琛�
TextRenderData firstRenderData1 = new TextRenderData();
firstRenderData1.setText("鏍峰搧缂栧彿@Sample No.鈭�1");
@@ -3187,6 +3249,11 @@
}
}
+ // 妫�娴嬫姤鍛婁笉灞曠ず鈥滅粨璁衡�濆垪锛岄琛屼篃瑕佸悓姝ュ噺灏戜竴涓崟鍏冩牸锛�
+ // 鍚﹀垯棣栬涓� max + 6 鍒椼�佸叾浣欒涓� max + 5 鍒楋紝poi-tl 鏃犳硶娓叉煋琛ㄦ牸銆�
+ if (!showResult && !text.isEmpty()) {
+ text.remove(text.size() - 1);
+ }
TextRenderData[] text2 = text.toArray(new TextRenderData[0]);
rowRenderData = Rows.of(text2).center().rowAtleastHeight(1).create();
rows.add(rowRenderData);
@@ -3235,13 +3302,14 @@
for (int i = 0; i < max; i++) {
TextRenderData headRenderData6 = new TextRenderData();
- headRenderData6.setText("妫�楠岀粨鏋淍Test result鈭�6");
+ headRenderData6.setText(showResult ? "妫�楠岀粨鏋淍Test result鈭�6" : "妫�娴嬫暟鎹瓳Test data鈭�6");
Style headStyle6 = new Style();
headStyle6.setFontFamily("瀹嬩綋");
headStyle6.setColor("000000");
headRenderData6.setStyle(headStyle6);
text.add(headRenderData6);
}
+ if (showResult) {
TextRenderData headRenderData7 = new TextRenderData();
headRenderData7.setText("缁撹@Conclusion");
Style headStyle7 = new Style();
@@ -3249,6 +3317,7 @@
headStyle7.setColor("000000");
headRenderData7.setStyle(headStyle7);
text.add(headRenderData7);
+ }
TextRenderData[] text3 = text.toArray(new TextRenderData[0]);
rowRenderData = Rows.of(text3).center().rowAtleastHeight(1).create();
@@ -3306,6 +3375,7 @@
cableRenderData6.setStyle(cableStyle6);
text.add(cableRenderData6);
}
+ if (showResult) {
TextRenderData cableRenderData7 = new TextRenderData();
cableRenderData7.setText("-");
Style cableStyle7 = new Style();
@@ -3313,6 +3383,7 @@
cableStyle7.setColor("000000");
cableRenderData7.setStyle(cableStyle7);
text.add(cableRenderData7);
+ }
TextRenderData[] text4 = text.toArray(new TextRenderData[0]);
rowRenderData = Rows.of(text4).center().rowAtleastHeight(1).create();
@@ -3345,7 +3416,7 @@
List<String> resultChList,
List<String> resultEhList,
InsSample insSamples, List<String> cableTags,
- boolean isOneSample) {
+ boolean isOneSample, boolean showResult) {
// 妫�楠岄」鎬绘暟
AtomicInteger productSize = new AtomicInteger(1);
// 涓嶅悎鏍间俊鎭�
@@ -3753,7 +3824,6 @@
// 妫�楠岄」鍒嗙被 妫�楠岄」 妫�楠屽瓙椤�
Map<String, LinkedHashMap<String, List<String>>> errorClassItemMapCn = new LinkedHashMap<>();
Map<String, LinkedHashMap<String, List<String>>> errorClassItemMapEn = new LinkedHashMap<>();
-
// 涓棿妫�娴嬪�兼坊鍔�
for (int i = 0; i < sampleList.size(); i++) {
SampleProductExportDto sample = sampleList.get(i);
@@ -3834,7 +3904,9 @@
// 鍒ゆ柇鏄惁鏈夌數缂嗘爣璇唌ap
if (CollectionUtils.isNotEmpty(sample.getCableTagValueMap())) {
- sample.setLastValueList(new ArrayList<>(sample.getCableTagValueMap().values()));
+ TreeMap<String, String> cableTagValues = new TreeMap<>(Comparator.comparingInt(cableTags::indexOf));
+ cableTagValues.putAll(sample.getCableTagValueMap());
+ sample.setLastValueList(new ArrayList<>(cableTagValues.values()));
}
if (CollectionUtils.isNotEmpty(sample.getCableTagResultMap())) {
sample.setInsResultList(new ArrayList<>(sample.getCableTagResultMap().values()));
@@ -3868,6 +3940,7 @@
}
}
// 鍒ゅ畾缁撴灉
+ if (showResult) {
String result = "";
if (sample.getInsResult() != null) {
switch (sample.getInsResult()) {
@@ -3884,16 +3957,16 @@
}
if (CollectionUtils.isNotEmpty(sample.getLastValueList())) {
// 鍒ゆ柇鏄惁鏈変竴涓敊璇�
- if (sample.getInsResultList().stream().anyMatch(s -> s.equals(3))) {
+ if (sample.getInsResultList().stream().anyMatch(s -> Objects.equals(s, 3))) {
result = "-";
} else {
- boolean error = sample.getInsResultList().stream().anyMatch(s -> s.equals(0));
+ boolean error = sample.getInsResultList().stream().anyMatch(s -> Objects.equals(s, 0));
if (error) {
List<String> collect = new ArrayList<>();
int index = 0;
for (Integer count : sample.getInsResultList()) {
String type;
- if (count.equals(0)) {
+ if (Objects.equals(count, 0)) {
String itemCh = "";
String itemEn = "";
// 娣诲姞涓嶅悎鏍兼弿杩�
@@ -3927,6 +4000,7 @@
}
}
+ if (showResult) {
TextRenderData headRenderData7 = new TextRenderData();
headRenderData7.setText(result);
Style headStyle7 = new Style();
@@ -3934,6 +4008,8 @@
headStyle7.setColor("000000");
headRenderData7.setStyle(headStyle7);
text.add(headRenderData7);
+ }
+ }
TextRenderData[] text2 = text.toArray(new TextRenderData[0]);
rowRenderData = Rows.of(text2).center().rowAtleastHeight(1).create();
@@ -4094,7 +4170,7 @@
sampleProductDto2.setLastValue(sampleProductDto2.getLastValue().trim());
}
- if (sampleProductDto2.getInsResult().equals(0)) {
+ if (Objects.equals(sampleProductDto2.getInsResult(), 0)) {
// 鏌ヨ涓嶅悎鏍煎娴�
Long count = insUnqualifiedRetestProductMapper.selectCount(Wrappers.<InsUnqualifiedRetestProduct>lambdaQuery()
.eq(InsUnqualifiedRetestProduct::getInsProductId, sampleProductDto2.getInsProductId())
@@ -4158,7 +4234,7 @@
* @param rowRenderData
* @param rows
*/
- private static void addEnding(List<TextRenderData> text, RowRenderData rowRenderData, List<RowRenderData> rows, int max) {
+ private static void addEnding(List<TextRenderData> text, RowRenderData rowRenderData, List<RowRenderData> rows, int max, boolean showResult) {
for (int i = 0; i < 2; i++) {
TextRenderData endingRenderData = new TextRenderData();
endingRenderData.setText("澶囨敞鈭�1999");
@@ -4169,9 +4245,9 @@
text.add(endingRenderData);
}
- for (int i = 0; i < 5 + max - 1; i++) {
+ for (int i = 0; i < (showResult ? 5 : 4) + max - 1; i++) {
TextRenderData endingRenderData = new TextRenderData();
- endingRenderData.setText("鈥溾垰鈥濊〃绀洪」鐩悎鏍�,鈥溍椻�濊〃绀洪」鐩笉鍚堟牸,鈥�-鈥濊〃绀轰笉瑕佸垽瀹氾紝鈥�/鈥濊〃绀烘病鏈夋爣鍑嗚姹傘�侤鈥溾垰鈥� indicates test ltem is qualified,鈥溍椻�� indicates test ltem is unqualified,鈥�-鈥� indicates test ltem judgment is not required,鈥�/鈥� indicates test ltem is no test requirement.鈭�2000");
+ endingRenderData.setText(showResult ? "鈥溾垰鈥濊〃绀洪」鐩悎鏍�,鈥溍椻�濊〃绀洪」鐩笉鍚堟牸,鈥�-鈥濊〃绀轰笉瑕佸垽瀹氾紝鈥�/鈥濊〃绀烘病鏈夋爣鍑嗚姹傘�侤鈥溾垰鈥� indicates test ltem is qualified,鈥溍椻�� indicates test ltem is unqualified,鈥�-鈥� indicates test ltem judgment is not required,鈥�/鈥� indicates test ltem is no test requirement.鈭�2000" : "");
Style endingStyle = new Style();
endingStyle.setFontFamily("瀹嬩綋");
endingStyle.setColor("000000");
--
Gitblit v1.9.3