From fd58eac9c45b19300135d84b1d22013466807a96 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期日, 20 九月 2026 13:52:51 +0800
Subject: [PATCH] feat(inspect): 完善检验报告功能与数据处理 - 添加重新生成报告的功能接口 - 优化管理员权限判断逻辑,允许管理员查看全部待复核任务 - 改进Excel数据解析逻辑,支持合并单元格的坐标计算 - 完善直绑模板订单的检验结果处理机制 - 优化报告下载接口,支持按报告类型选择 - 提升附件上传大小限制至200MB
---
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java | 862 ++++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 573 insertions(+), 289 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 cd0ebb6..1b0aee8 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
@@ -178,8 +178,12 @@
String userName = null;
Integer userId = null;
if (ObjectUtil.isNotEmpty(insOrderPlanDTO.getUserId())) {
- userId = SecurityUtils.getUserId().intValue();
- userName = userMapper.selectById(userId).getName();
+ Integer currentUserId = SecurityUtils.getUserId().intValue();
+ // 绠$悊鍛樺彲浠ユ煡鐪嬪苟澶嶆牳鍏ㄩ儴寰呭鏍镐换鍔★紝鏅�氱敤鎴蜂粛鍙煡鐪嬪垎閰嶇粰鑷繁鐨勪换鍔°��
+ if (!SecurityUtils.isAdmin(currentUserId.longValue())) {
+ userId = currentUserId;
+ userName = userMapper.selectById(userId).getName();
+ }
insOrderPlanDTO.setUserId(null);
}
Integer isCheck = insOrderPlanDTO.getIsCheck();
@@ -281,12 +285,12 @@
/**
* 鐩寸粦妯℃澘璁㈠崟鐨勯〉绛炬潵婧愭槸璁㈠崟妯℃澘蹇収锛岃�屼笉鏄凡鐢熸垚鐨勬楠岄」銆�
- *
+ * <p>
* 浠嶄繚鐣欐瘡涓ā鏉夸笅宸叉湁鐨勬楠岄」璁板綍锛涘鏋滄煇涓ā鏉挎病鏈夆�滄楠岄」鈥濇爣璁帮紝琛ヤ竴鏉′粎鐢ㄤ簬
* 鎵胯浇妯℃澘鍐呭鐨勮繑鍥炲璞★紝浣垮墠绔篃鑳藉睍绀恒�佸~鍐欒妯℃澘銆�
*/
private List<InsProduct> mergeDirectTemplateSnapshots(InsOrder order, Integer sampleId,
- String laboratory, List<InsProduct> products) {
+ String laboratory, List<InsProduct> products) {
List<InsProduct> source = products == null ? new ArrayList<>() : products;
List<InsOrderStandardTemplate> snapshots = insOrderStandardTemplateService.list(
Wrappers.<InsOrderStandardTemplate>lambdaQuery()
@@ -343,7 +347,7 @@
}
@Override
- public Map<String,Object> checkSubmitPlan(Integer orderId, String laboratory) {
+ public Map<String, Object> checkSubmitPlan(Integer orderId, String laboratory) {
Map<String, Object> map = new HashMap<>();
List<String> collect = new ArrayList<>();
if (isDirectTemplateOrder(orderId)) {
@@ -745,18 +749,9 @@
} catch (Exception ignored) {
thing = compressedThing;
}
- JSONArray cellData = JSON.parseObject(thing).getJSONArray("data").getJSONObject(0).getJSONArray("celldata");
+ JSONObject sheet = JSON.parseObject(thing).getJSONArray("data").getJSONObject(0);
+ JSONArray cellData = sheet.getJSONArray("celldata");
NavigableMap<Integer, List<String>> result = new TreeMap<>();
- Integer inspectionResultColumn = null;
- for (Object item : cellData) {
- JSONObject cell = JSON.parseObject(JSON.toJSONString(item));
- Integer column = cell.getInteger("c");
- JSONObject value = cell.getJSONObject("v");
- String displayValue = value == null ? null : value.getString("v");
- if (inspectionResultColumn == null && "妫�楠岀粨鏋�".equals(StringUtils.trim(displayValue))) {
- inspectionResultColumn = column;
- }
- }
for (Object item : cellData) {
JSONObject cell = JSON.parseObject(JSON.toJSONString(item));
JSONObject value = cell.getJSONObject("v");
@@ -767,16 +762,119 @@
Integer row = cell.getInteger("r");
Integer column = cell.getInteger("c");
if (row != null && column != null) {
- // 鈥滃鍑哄�尖�濇爣鍦ㄦ娴嬮」鐩爣棰樺崟鍏冩牸鏃讹紝鐪熸瀵煎嚭鐨勫�兼槸鍚屼竴琛屸�滄楠岀粨鏋溾�濆垪鐨勫崟鍏冩牸銆�
- String coordinate = row + "-" + column;
- String resultCoordinate = row + "-" + inspectionResultColumn;
- if (inspectionResultColumn != null && !Objects.equals(column, inspectionResultColumn)) {
- coordinate = resultCoordinate;
- }
+ // 鎵规敞鍗曞厓鏍煎彲鑳芥í鍚戝悎骞讹紝鍙充晶缁撴灉鍗曞厓鏍间篃鍙兘绾靛悜鍚堝苟锛涙渶缁堣鍙栫粨鏋滃尯鍩熺殑宸︿笂瑙掑瓨鍌ㄥ潗鏍囥��
+ String coordinate = getRightAdjacentCoordinate(sheet, row, column);
result.computeIfAbsent(row, ignored -> new ArrayList<>()).add(coordinate);
}
}
return result;
+ }
+
+ /**
+ * 杩斿洖鎸囧畾鍗曞厓鏍硷紙鎴栧叾鎵�鍦ㄥ悎骞跺尯鍩燂級鍙充晶绱ч偦鍒楃殑涓嬫爣銆�
+ * Luckysheet 鐨勫悎骞朵俊鎭�氬父淇濆瓨鍦� config.merge锛涢儴鍒嗗巻鍙叉ā鏉垮彧鍦ㄥ崟鍏冩牸 v.mc 涓繚鐣欙紝
+ * 鍥犳涓ょ缁撴瀯閮借鍏煎銆�
+ */
+ private int getRightAdjacentColumn(JSONObject sheet, int row, int column) {
+ int rightEdge = column;
+ JSONObject config = sheet == null ? null : sheet.getJSONObject("config");
+ JSONObject merges = config == null ? null : config.getJSONObject("merge");
+ if (merges != null) {
+ for (Object rawMerge : merges.values()) {
+ rightEdge = extendMergedRightEdge(rightEdge, row, column, rawMerge);
+ }
+ }
+
+ JSONArray cellData = sheet == null ? null : sheet.getJSONArray("celldata");
+ if (cellData != null) {
+ for (Object rawCell : cellData) {
+ JSONObject cell = JSON.parseObject(JSON.toJSONString(rawCell));
+ JSONObject value = cell == null ? null : cell.getJSONObject("v");
+ JSONObject merge = value == null ? null : value.getJSONObject("mc");
+ rightEdge = extendMergedRightEdge(rightEdge, row, column, merge);
+ }
+ }
+ return rightEdge + 1;
+ }
+
+ private String getRightAdjacentCoordinate(JSONObject sheet, int row, int column) {
+ int adjacentColumn = getRightAdjacentColumn(sheet, row, column);
+ int[] anchor = findMergedAnchor(sheet, row, adjacentColumn);
+ return anchor[0] + "-" + anchor[1];
+ }
+
+ /**
+ * Luckysheet 鍙湪鍚堝苟鍖哄煙宸︿笂瑙掍繚瀛樺疄闄呭�笺�傝嫢鐩爣鍗曞厓鏍间綅浜庡悎骞跺尯鍩熷唴閮紝
+ * 灏嗗叾杞崲涓鸿鍖哄煙鐨勫乏涓婅鍧愭爣锛涙湭鍚堝苟鍒欒繑鍥炲師鍧愭爣銆�
+ */
+ private int[] findMergedAnchor(JSONObject sheet, int row, int column) {
+ JSONObject config = sheet == null ? null : sheet.getJSONObject("config");
+ JSONObject merges = config == null ? null : config.getJSONObject("merge");
+ if (merges != null) {
+ for (Object rawMerge : merges.values()) {
+ int[] anchor = findMergedAnchor(row, column, rawMerge);
+ if (anchor != null) {
+ return anchor;
+ }
+ }
+ }
+
+ JSONArray cellData = sheet == null ? null : sheet.getJSONArray("celldata");
+ if (cellData != null) {
+ for (Object rawCell : cellData) {
+ JSONObject cell = JSON.parseObject(JSON.toJSONString(rawCell));
+ JSONObject value = cell == null ? null : cell.getJSONObject("v");
+ int[] anchor = findMergedAnchor(row, column,
+ value == null ? null : value.getJSONObject("mc"));
+ if (anchor != null) {
+ return anchor;
+ }
+ }
+ }
+ return new int[]{row, column};
+ }
+
+ private int[] findMergedAnchor(int row, int column, Object rawMerge) {
+ if (rawMerge == null) {
+ return null;
+ }
+ JSONObject merge = rawMerge instanceof JSONObject
+ ? (JSONObject) rawMerge : JSON.parseObject(JSON.toJSONString(rawMerge));
+ Integer startRow = merge.getInteger("r");
+ Integer startColumn = merge.getInteger("c");
+ Integer rowSpan = merge.getInteger("rs");
+ Integer columnSpan = merge.getInteger("cs");
+ if (startRow == null || startColumn == null || rowSpan == null || columnSpan == null
+ || rowSpan < 1 || columnSpan < 1) {
+ return null;
+ }
+ if (row >= startRow && row < startRow + rowSpan
+ && column >= startColumn && column < startColumn + columnSpan) {
+ return new int[]{startRow, startColumn};
+ }
+ return null;
+ }
+
+ private int extendMergedRightEdge(int currentRightEdge, int row, int column, Object rawMerge) {
+ if (rawMerge == null) {
+ return currentRightEdge;
+ }
+ JSONObject merge = rawMerge instanceof JSONObject
+ ? (JSONObject) rawMerge : JSON.parseObject(JSON.toJSONString(rawMerge));
+ Integer startRow = merge.getInteger("r");
+ Integer startColumn = merge.getInteger("c");
+ Integer rowSpan = merge.getInteger("rs");
+ Integer columnSpan = merge.getInteger("cs");
+ if (startRow == null || startColumn == null || rowSpan == null || columnSpan == null
+ || rowSpan < 1 || columnSpan < 1) {
+ return currentRightEdge;
+ }
+ int endRow = startRow + rowSpan - 1;
+ int endColumn = startColumn + columnSpan - 1;
+ if (row >= startRow && row <= endRow && column >= startColumn && column <= endColumn) {
+ return Math.max(currentRightEdge, endColumn);
+ }
+ return currentRightEdge;
}
/**
@@ -794,7 +892,7 @@
}
/**
- * 鐩寸粦妯℃澘璁㈠崟鍙牎楠屾ā鏉夸腑鏍囪涓衡�滃鍑哄�尖�濈殑鍗曞厓鏍硷紝涓嶄娇鐢ㄦ楠岄」鐘舵�佹垨 last_value 鍒ゅ畾銆�
+ * 鐩寸粦妯℃澘璁㈠崟鍙牎楠屾瘡涓�滃鍑哄�尖�濇壒娉ㄦ墍鍦ㄥ尯鍩熷彸渚х揣閭诲崟鍏冩牸锛屼笉浣跨敤妫�楠岄」鐘舵�佹垨 last_value 鍒ゅ畾銆�
*/
private List<String> getMissingTemplateExportValues(Integer orderId) {
List<InsOrderStandardTemplate> snapshots = insOrderStandardTemplateService.list(
@@ -820,12 +918,12 @@
JSONObject recordValues = StrUtil.isBlank(snapshot.getRecordValues())
? new JSONObject() : JSON.parseObject(snapshot.getRecordValues());
- // 淇濆瓨鏃跺悓鏍峰彧鍙栨ā鏉夸腑鐨勭涓�涓鍑哄�硷紝鎻愪氦鏍¢獙涓庝繚瀛樺彛寰勪繚鎸佷竴鑷淬��
- String coordinate = coordinates.get(0);
- JSONObject cell = recordValues.getJSONObject(coordinate);
- Object value = cell == null ? null : cell.get("v");
- if (value == null || StringUtils.isBlank(String.valueOf(value))) {
- missing.add(templateName + "锛�" + coordinate + "锛�");
+ for (String coordinate : coordinates) {
+ JSONObject cell = recordValues.getJSONObject(coordinate);
+ Object value = cell == null ? null : cell.get("v");
+ if (value == null || StringUtils.isBlank(String.valueOf(value))) {
+ missing.add(templateName + "锛�" + coordinate + "锛�");
+ }
}
}
return missing;
@@ -846,7 +944,7 @@
throw new ErrorException("妫�楠屽崟涓嶅瓨鍦�");
}
Set<Integer> deviceIds = dto.getDeviceIds() == null ? Collections.emptySet() : dto.getDeviceIds().stream()
- .filter(Objects::nonNull).collect(Collectors.toSet());
+ .filter(Objects::nonNull).collect(Collectors.toSet());
List<InsOrderDeviceRecord> oldRecords = insOrderDeviceRecordMapper.selectList(
Wrappers.<InsOrderDeviceRecord>lambdaQuery().eq(InsOrderDeviceRecord::getInsOrderId, dto.getOrderId()));
Set<Integer> oldIds = oldRecords.stream().map(InsOrderDeviceRecord::getDeviceId).collect(Collectors.toSet());
@@ -943,6 +1041,7 @@
/**
* 鏌ヨ妯℃澘鍐呭
+ *
* @param order
* @param insProducts
*/
@@ -1024,6 +1123,7 @@
/**
* todo: 鍘熷璁板綍妯℃澘娓呴櫎娌℃湁浣跨敤鐨勬楠岄」(鏆傛椂鏈塨ug鏃犳硶浣跨敤)
+ *
* @param sheet
* @param itemNameList
*/
@@ -1096,6 +1196,7 @@
/**
* 鍧愭爣鎷兼帴
+ *
* @param r 妯潗鏍�
* @param c 绾靛潗鏍�
* @return
@@ -1169,7 +1270,7 @@
int count = 0;
for (InsProduct product : insProducts) {
count++;
- str += (count != 0 ? "\n" : "") + count + "锛�" +
+ str += (count != 0 ? "\n" : "") + count + "锛�" +
product.getInspectionItemClass() + " " +
product.getInspectionItem() + " " +
product.getInspectionItemSubclass();
@@ -1296,7 +1397,7 @@
// 鐧昏妫�楠岀粨鏋�
// 鍒ゆ柇鏄惁鏈変笉鍚堟牸, 鏈変笉鍚堟牸涓嶈兘绉诲簱
// todo: ifs绉诲簱
- insReportService.isRawMaterial(order,registerInsResults,false);
+ insReportService.isRawMaterial(order, registerInsResults, false);
// 14 鍒ゆ柇褰撳墠鏍峰搧鏄惁涓哄師鏉愭枡, 鍘熸潗鏂欓渶瑕佽繘琛屾暟鎹垎鏋�, 鍒ゆ柇涔嬪墠10鏉℃暟鎹悓涓�涓緵搴斿晢, 鍚屼竴涓楠岄」鐨勫亸宸槸鍚﹁秴杩�10%
// 鏌ヨifs淇℃伅鑾峰彇鑾峰彇鍓�10涓緵搴斿晢涓�鏍风殑, 妫�楠岄」涓�鏍蜂俊鎭�
@@ -1326,6 +1427,7 @@
/**
* *****娣诲姞鍒嗘瀽鏁版嵁******
+ *
* @param productList
* @param ifsInventoryQuantity
* @param order
@@ -1416,6 +1518,7 @@
/**
* *****璁$畻鍋忓樊****
+ *
* @param data
* @param targetStr
* @return
@@ -1441,12 +1544,13 @@
/**
* *****璁$畻鍋忓樊锛堣姹傚�硷級****
+ *
* @param asked
* @param targetStr
* @return
*/
public static double isDeviationOverTenPercentByAsked(String asked, String targetStr) {
- if(!isNumeric(asked)) return 0;
+ if (!isNumeric(asked)) return 0;
double average = Double.parseDouble(asked);
double target = Double.parseDouble(targetStr);
double deviationPercent = Math.abs(target - average) / average * 100;
@@ -1459,6 +1563,7 @@
/**
* ******鍘熷璁板綍妯℃澘澶嶅埗*****
+ *
* @param orderId
* @param ids
*/
@@ -1525,6 +1630,10 @@
refreshed.setRecordValues(templateRecordValuesMap.get(templateId));
refreshed.setTemperature(templateTemperatureMap.get(templateId));
refreshed.setHumidity(templateHumidityMap.get(templateId));
+ // 鍒锋柊妯℃澘缁撴瀯鏃跺繀椤讳繚鐣欐楠岄樁娈靛~鍐欑殑涓氬姟鏁版嵁锛岄伩鍏嶈繘鍏ュ鏍稿悗鍥炴樉涓虹┖銆�
+ refreshed.setDetectionTime(oldSnapshot == null ? null : oldSnapshot.getDetectionTime());
+ refreshed.setDetectionPlace(oldSnapshot == null ? null : oldSnapshot.getDetectionPlace());
+ refreshed.setInsResult(oldSnapshot == null ? null : oldSnapshot.getInsResult());
Integer templateSort = templateSortMap.get(templateId);
refreshed.setSort(templateSort == null ? nextTemplateSort++ : templateSort);
refreshedSnapshots.add(refreshed);
@@ -1541,6 +1650,7 @@
/**
* 妫�楠屼换鍔″鏍�
+ *
* @param orderId
* @param laboratory
* @param type
@@ -1578,12 +1688,13 @@
InsReport existingReport = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery()
.eq(InsReport::getInsOrderId, orderId)
.last("limit 1"));
+ boolean directTemplateOrder = isDirectTemplateOrder(orderId);
if (currentState != null && Objects.equals(currentState.getInsState(), 5)
- && existingReport != null && StringUtils.isNotBlank(existingReport.getUrl())) {
+ && existingReport != null && StringUtils.isNotBlank(existingReport.getUrl())
+ && (!directTemplateOrder || StringUtils.isNotBlank(existingReport.getInspectionUrl()))) {
// 闃叉澶嶆牳椤甸潰閲嶅鐐瑰嚮鎴栫綉缁滈噸璇曢噸澶嶇敓鎴愭姤鍛娿�侀噸澶嶅彂璧锋姤鍛婂鎵广��
return 1;
}
- boolean directTemplateOrder = isDirectTemplateOrder(orderId);
if (directTemplateOrder && Objects.equals(type, 1)
&& !Objects.equals(dto.getInsResult(), 0) && !Objects.equals(dto.getInsResult(), 1)) {
throw new ErrorException("璇烽�夋嫨妫�楠屽崟缁撹");
@@ -1616,7 +1727,7 @@
.collect(Collectors.toList());
if (templateResults.isEmpty()
|| templateResults.stream().anyMatch(result -> !Objects.equals(result, 0)
- && !Objects.equals(result, 1))) {
+ && !Objects.equals(result, 1))) {
throw new ErrorException("璇峰厛濉啓鍏ㄩ儴妯℃澘鐨勬楠岀粨璁�");
}
Integer aggregateResult = templateResults.stream().allMatch(result -> Objects.equals(result, 1))
@@ -1632,15 +1743,22 @@
.eq(InsOrder::getId, orderId)
.set(InsOrder::getInsState, 5));
- // 妫�楠屼汉鍛樻彁浜ゅ鏍告椂涓嶅啀鐢熸垚鎶ュ憡锛涗粎鍦ㄥ叏閮ㄨ瘯楠屽澶嶆牳閫氳繃鍚庣敓鎴愭娴嬫姤鍛娿��
+ // 妫�楠屼汉鍛樻彁浜ゅ鏍告椂涓嶇敓鎴愭姤鍛婏紱鍏ㄩ儴璇曢獙瀹ゅ鏍搁�氳繃鍚庣敓鎴愭姤鍛娿��
if (report == null || StringUtils.isBlank(report.getUrl())) {
this.generateReport(orderId, DETECTION_REPORT, writeUserId);
- report = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery()
- .eq(InsReport::getInsOrderId, orderId)
- .last("limit 1"));
}
+ // 鐩寸粦妯℃澘璁㈠崟鍚屾椂鐢熸垚妫�楠屾姤鍛婏紝涓や唤鏂囦欢鍏辩敤鍚屼竴鏉″鎵硅褰曘��
+ if (directTemplateOrder && (report == null || StringUtils.isBlank(report.getInspectionUrl()))) {
+ this.generateReport(orderId, INSPECTION_REPORT, writeUserId);
+ }
+ report = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery()
+ .eq(InsReport::getInsOrderId, orderId)
+ .last("limit 1"));
if (report == null || StringUtils.isBlank(report.getUrl())) {
throw new ErrorException("妫�娴嬫姤鍛婄敓鎴愬け璐�");
+ }
+ if (directTemplateOrder && StringUtils.isBlank(report.getInspectionUrl())) {
+ throw new ErrorException("妫�楠屾姤鍛婄敓鎴愬け璐�");
}
if (report.getTempUrlPdf() == null) {
String tempUrlPdf = this.wordToPdfTemp(report.getUrl().replace("/word", wordUrl));
@@ -1793,7 +1911,103 @@
}
/**
+ * 閲嶆柊鐢熸垚灏氭湭鎵瑰噯鐨勭郴缁熸姤鍛婏紝骞舵仮澶嶅凡瀛樺湪鐨勭紪鍒躲�佸鏍哥鍚嶃��
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void regenerateReport(Integer reportId, Integer createOrderUser) {
+ if (reportId == null) {
+ throw new ErrorException("鎶ュ憡涓嶈兘涓虹┖");
+ }
+ InsReport accessibleReport = insReportMapper.selectDownloadableReport(reportId, createOrderUser);
+ if (accessibleReport == null) {
+ throw new ErrorException("鎶ュ憡涓嶅瓨鍦ㄣ�佸皻鏈敓鎴愭垨鏃犳潈鎿嶄綔");
+ }
+ // 鏁版嵁搴撹閿侀伩鍏嶅悓涓�鎶ュ憡琚浜哄悓鏃堕噸鏂扮敓鎴愬苟瑕嗙洊銆�
+ InsReport report = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery()
+ .eq(InsReport::getId, reportId)
+ .last("FOR UPDATE"));
+ if (report == null) {
+ throw new ErrorException("鎶ュ憡涓嶅瓨鍦�");
+ }
+ if (Objects.equals(report.getIsRatify(), 1)) {
+ throw new ErrorException("宸叉壒鍑嗘姤鍛婁笉鑳介噸鏂扮敓鎴�");
+ }
+ if (StringUtils.isNotBlank(report.getUrlS())) {
+ throw new ErrorException("褰撳墠鎶ュ憡宸叉墜鍔ㄤ笂浼狅紝璇峰厛杩樺師涓虹郴缁熸姤鍛婂悗鍐嶉噸鏂扮敓鎴�");
+ }
+ if (report.getInsOrderId() == null) {
+ throw new ErrorException("鎶ュ憡鏈叧鑱旀楠屽崟锛屾棤娉曢噸鏂扮敓鎴�");
+ }
+
+ Integer reportType = report.getReportType() == null ? DETECTION_REPORT : report.getReportType();
+ Integer writeUserId = report.getWriteUserId() == null
+ ? SecurityUtils.getUserId().intValue() : report.getWriteUserId();
+ boolean directTemplateOrder = isDirectTemplateOrder(report.getInsOrderId());
+ if (directTemplateOrder) {
+ generateReport(report.getInsOrderId(), DETECTION_REPORT, writeUserId);
+ generateReport(report.getInsOrderId(), INSPECTION_REPORT, writeUserId);
+ } else {
+ generateReport(report.getInsOrderId(), reportType, writeUserId);
+ }
+
+ InsReport regenerated = insReportMapper.selectById(reportId);
+ if (regenerated == null || StringUtils.isBlank(regenerated.getUrl())) {
+ throw new ErrorException("鎶ュ憡閲嶆柊鐢熸垚澶辫触");
+ }
+ if (directTemplateOrder && StringUtils.isBlank(regenerated.getInspectionUrl())) {
+ throw new ErrorException("妫�楠屾姤鍛婇噸鏂扮敓鎴愬け璐�");
+ }
+ String reportPath = regenerated.getUrl().replace("/word", wordUrl);
+ Map<String, Object> marks = buildExistingReportMarks(report);
+ if (!marks.isEmpty()) {
+ insReportService.wordInsertUrl(marks, reportPath);
+ if (StringUtils.isNotBlank(regenerated.getInspectionUrl())) {
+ insReportService.wordInsertUrl(marks,
+ regenerated.getInspectionUrl().replace("/word", wordUrl));
+ }
+ }
+ String tempPdfName = wordToPdfTemp(reportPath);
+ if (StringUtils.isBlank(tempPdfName)) {
+ throw new ErrorException("鎶ュ憡棰勮鏂囦欢鐢熸垚澶辫触");
+ }
+ // generateReport 浼氬啓鍏ュ綋鍓嶆椂闂达紱閲嶆柊鐢熸垚涓嶅簲鏀瑰彉鍘熷鎵硅褰曟椂闂淬��
+ insReportMapper.update(null, Wrappers.<InsReport>lambdaUpdate()
+ .eq(InsReport::getId, reportId)
+ .set(InsReport::getWriteTime, report.getWriteTime())
+ .set(InsReport::getTempUrlPdf, "/word/" + tempPdfName));
+ }
+
+ private Map<String, Object> buildExistingReportMarks(InsReport report) {
+ Map<String, Object> marks = new HashMap<>();
+ boolean submitted = Objects.equals(report.getState(), 1)
+ || report.getIsExamine() != null
+ || report.getExamineTime() != null;
+ if (submitted) {
+ User writer = getReportSigner(report.getWriteUserId(), "缂栧埗浜�");
+ marks.put("writeUrl", Pictures.ofLocal(imgUrl + "/" + writer.getSignatureUrl()).create());
+ marks.put("writeDateUrl", Pictures.ofStream(DateImageUtil.createDateImage(report.getWriteTime())).create());
+ marks.put("insUrl", Pictures.ofLocal(imgUrl + "/" + writer.getSignatureUrl()).create());
+ }
+ if (Objects.equals(report.getIsExamine(), 1)) {
+ User examiner = getReportSigner(report.getExamineUserId(), "瀹℃牳浜�");
+ marks.put("examineUrl", Pictures.ofLocal(imgUrl + "/" + examiner.getSignatureUrl()).create());
+ marks.put("examineDateUrl", Pictures.ofStream(DateImageUtil.createDateImage(report.getExamineTime())).create());
+ }
+ return marks;
+ }
+
+ private User getReportSigner(Integer userId, String roleName) {
+ User user = userId == null ? null : userMapper.selectById(userId);
+ if (user == null || StringUtils.isBlank(user.getSignatureUrl())) {
+ throw new ErrorException("鎵句笉鍒�" + roleName + "鐨勭鍚�");
+ }
+ return user;
+ }
+
+ /**
* 鐢熸垚鎶ュ憡
+ *
* @param orderId
*/
private void generateReport(Integer orderId, Integer reportType, Integer writeUserId) {
@@ -1801,19 +2015,19 @@
//杩欓噷鐨刬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(Objects::nonNull).collect(Collectors.toList());
- if (results.contains(0)) {
- insSample.setInsResult(0);
- } else {
- insSample.setInsResult(1);
+ 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(Objects::nonNull).collect(Collectors.toList());
+ if (results.contains(0)) {
+ insSample.setInsResult(0);
+ } else {
+ insSample.setInsResult(1);
+ }
+ insSampleMapper.updateById(insSample);
}
- insSampleMapper.updateById(insSample);
- }
}
InsOrder insOrder = insOrderMapper.selectById(orderId);
// 鎶芥鍙樻垚濮旀墭妫�楠�
@@ -1835,6 +2049,7 @@
/**
* 鐢电紗閰嶇疆, 鏌ョ湅閰嶇疆鏍囪瘑
+ *
* @param id
* @param laboratory
* @return
@@ -1846,6 +2061,7 @@
/**
* 鍘熸潗鏂欐煡鐪嬫爣璇�
+ *
* @param id
* @param laboratory
* @return
@@ -1857,6 +2073,7 @@
/**
* 鏌ョ湅閲嶅鏍囪瘑
+ *
* @param id
* @param laboratory
* @return
@@ -1868,6 +2085,7 @@
/**
* 鏂板涓嶅悎鏍煎娴嬪唴瀹�
+ *
* @return
*/
@Override
@@ -2064,6 +2282,7 @@
/**
* 鏌ヨ杩涜揣鍘熷璁板綍
+ *
* @param insOrderId
* @return
*/
@@ -2119,6 +2338,7 @@
/**
* 淇濆瓨鍘熸潗鏂欒繘璐ч獙璇�
+ *
* @param factoryVerify
* @return
*/
@@ -2170,22 +2390,34 @@
/**
* 璁剧疆琛ㄦ牸鏍峰紡
+ *
* @param max 鏍囪瘑鏈�澶т釜鏁�
* @return
*/
- private TableStyle setTableStyle(int max, boolean showResult){
+ private TableStyle setTableStyle(int max, boolean showResult) {
//璁剧疆鏍峰紡
TableStyle tableStyle = new TableStyle();
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;
+ 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){
+ } else if (max <= 5) {
for (int i = 1; i <= max; i++) {
// 鏍规嵁妫�楠岀粨鏋滀釜鏁颁慨鏀归暱搴�
switch (i) {
@@ -2224,30 +2456,31 @@
/**
* 澶勭悊鏈夌數缂嗛鑹叉爣璇嗙殑妫�娴嬮」
- * @param cableTags 鐢电紗棰滆壊鏍囪瘑
- * @param collect 妫�娴嬮」鍒楄〃
+ *
+ * @param cableTags 鐢电紗棰滆壊鏍囪瘑
+ * @param collect 妫�娴嬮」鍒楄〃
* @param startIndex 璧峰涓嬫爣
* @param endIndex 缁撴潫涓嬫爣
* @return
*/
- private List<SampleProductExportDto> transformSampleProduct(List<String> cableTags,Map<String, List<SampleProductExportDto>> collect,int startIndex,int endIndex){
+ private List<SampleProductExportDto> transformSampleProduct(List<String> cableTags, Map<String, List<SampleProductExportDto>> collect, int startIndex, int endIndex) {
List<SampleProductExportDto> sampleProductExportDtos = new ArrayList<>();
for (String s : collect.keySet()) {
List<String> lastValueList = new ArrayList<>();
SampleProductExportDto dto = new SampleProductExportDto();
- BeanUtil.copyProperties(collect.get(s).get(0),dto);
+ BeanUtil.copyProperties(collect.get(s).get(0), dto);
Set<String> tellSet = new HashSet<>();
for (int i = startIndex; i < endIndex; i++) {
String cableTag = cableTags.get(i);
for (SampleProductExportDto sDto : collect.get(s)) {
tellSet.add(sDto.getTell());
- if(sDto.getCableTag().equals(cableTag)){
+ if (sDto.getCableTag().equals(cableTag)) {
lastValueList.add(sDto.getLastValue());
}
}
}
//鍒囧壊鐢电紗閰嶇疆椤�
- dto.setTell(String.join("\n",tellSet));
+ dto.setTell(String.join("\n", tellSet));
dto.setLastValueList(lastValueList);
sampleProductExportDtos.add(dto);
}
@@ -2256,10 +2489,11 @@
/**
* 妫�娴嬮」鎺掑簭
+ *
* @param sourceMap
* @param targetMap
*/
- private void sortSampleProduct(Map<String, List<SampleProductExportDto>> sourceMap,Map<String, List<SampleProductExportDto>> targetMap){
+ private void sortSampleProduct(Map<String, List<SampleProductExportDto>> sourceMap, Map<String, List<SampleProductExportDto>> targetMap) {
List<Map.Entry<String, List<SampleProductExportDto>>> entries = new ArrayList<>(sourceMap.entrySet());
entries.sort(Comparator.comparingInt(o -> (o.getValue().get(0).getSort() == null ? 0 : o.getValue().get(0).getSort())));
for (Map.Entry<String, List<SampleProductExportDto>> entry : entries) {
@@ -2269,6 +2503,7 @@
/**
* 灏忔姤鍛婄敓鎴�
+ *
* @param orderId
* @param insOrder
* @param insSamples
@@ -2290,7 +2525,7 @@
//鏌ヨ闆朵欢灞炴��
IfsPartPropsRecord ifsPartPropsRecord = ifsPartPropsRecordMapper.selectOne(Wrappers.<IfsPartPropsRecord>lambdaQuery()
.eq(IfsPartPropsRecord::getIfsInventoryId, ifsInventoryQuantity.getId()));
- if(Objects.nonNull(ifsPartPropsRecord)){
+ if (Objects.nonNull(ifsPartPropsRecord)) {
enterFactoryReport.setOuterColor(ifsPartPropsRecord.getOuterColor());
}
enterFactoryReport.setQtyArrived(ifsInventoryQuantity.getQtyArrived() == null ? "" :
@@ -2315,7 +2550,7 @@
List<RowRenderData> rows = new ArrayList<>();
List<TextRenderData> text = new ArrayList<>();
RowRenderData rowRenderData = null;
- List<Map<String,Object>> cableTagEnclosureTables = new ArrayList<>();
+ List<Map<String, Object>> cableTagEnclosureTables = new ArrayList<>();
// 鏌ヨ妫�楠屽唴瀹�
List<SampleProductExportDto> sampleProductDto2s = insOrderMapper.selectSampleBySampleId(insSamples.stream()
@@ -2328,7 +2563,7 @@
Integer max = insSamples.stream().mapToInt(InsSample::getQuantity).sum();
TableRenderData tableRenderData = new TableRenderData();
String templateName;
- if(StringUtils.equals(OrderType.WG.getValue(),ifsInventoryQuantity.getOrderType())){
+ if (StringUtils.equals(OrderType.WG.getValue(), ifsInventoryQuantity.getOrderType())) {
//杩囨护涓嶅垽瀹氱殑妫�娴嬮」
List<SampleProductExportDto> filterItems = sampleProductDto2s.stream()
.filter(f -> !showResult || f.getInsResult() != 3)
@@ -2337,7 +2572,7 @@
templateName = showResult ? "/static/small-wg-report-template.docx" : "/static/small-wg-detection-template.docx";
//鏌ヨ妫�楠屽崟娑堟伅
InsSampleUserVO insSampleUser = insSampleUserMapper.selectUserNameByOrderId(orderId);
- if(Objects.nonNull(insSampleUser)){
+ if (Objects.nonNull(insSampleUser)) {
enterFactoryReport.setPartDesc(insSampleUser.getModel());
enterFactoryReport.setInspector(insSampleUser.getInspector());
enterFactoryReport.setInspectDate(insSampleUser.getInspectDate());
@@ -2349,7 +2584,7 @@
AtomicInteger finalIndex = new AtomicInteger(1);
List<String> cableTags = insOrderMapper.selectSampleCableTag(insSample.getId());
- max = Math.max(cableTags.size(),1);
+ max = Math.max(cableTags.size(), 1);
//澶勭悊鐢电紗閰嶇疆妫�娴嬮」
Map<String, List<SampleProductExportDto>> tempMap = new HashMap<>();
Map<String, List<SampleProductExportDto>> tempMap2 = new HashMap<>();
@@ -2361,41 +2596,41 @@
List<SampleProductExportDto> sampleProductExportDtos2;
//澶勭悊鐢电紗閰嶇疆椤�
Map<String, List<SampleProductExportDto>> collect = listMap2.get(key).stream().collect(Collectors.groupingBy(SampleProductExportDto::getInspectionItemSubclass));
- if(cableTags.size()>maxCableTag){
- sampleProductExportDtos = transformSampleProduct(cableTags,collect,0,maxCableTag);
- sampleProductExportDtos2 = transformSampleProduct(cableTags,collect,maxCableTag,cableTags.size());
- tempMap2.put(key,sampleProductExportDtos2);
- }else{
- sampleProductExportDtos = transformSampleProduct(cableTags,collect,0,cableTags.size());
+ if (cableTags.size() > maxCableTag) {
+ sampleProductExportDtos = transformSampleProduct(cableTags, collect, 0, maxCableTag);
+ sampleProductExportDtos2 = transformSampleProduct(cableTags, collect, maxCableTag, cableTags.size());
+ tempMap2.put(key, sampleProductExportDtos2);
+ } else {
+ sampleProductExportDtos = transformSampleProduct(cableTags, collect, 0, cableTags.size());
}
- cableTagItem.put(key,sampleProductExportDtos);
+ cableTagItem.put(key, sampleProductExportDtos);
}
//澶勭悊闈炵數缂嗛厤缃娴嬮」
Map<String, List<SampleProductExportDto>> listMap = filterItems.stream()
.filter(f -> StringUtils.isBlank(f.getCableTag()) && StringUtils.isNotBlank(f.getInspectionItem()))
- .collect(Collectors.groupingBy(s->s.getInspectionItem()+"&"));
+ .collect(Collectors.groupingBy(s -> s.getInspectionItem() + "&"));
//鍚堝苟妫�娴嬮」鍒楄〃
tempMap.putAll(cableTagItem);
tempMap.putAll(listMap);
- sortSampleProduct(tempMap,totalItem);
- int tagNum = Math.min(max,maxCableTag);
- List<String> tagList = cableTags.isEmpty()?new ArrayList<>():cableTags.subList(0,tagNum);
+ 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, showResult);
- if(CollectionUtil.isNotEmpty(tempMap2)){
- sortSampleProduct(tempMap2,cableTagEnclosureItem);
+ if (CollectionUtil.isNotEmpty(tempMap2)) {
+ sortSampleProduct(tempMap2, cableTagEnclosureItem);
//鐢熸垚闄勪欢鐢电紗琛ㄦ牸
TableRenderData tableRenderData2 = new TableRenderData();
- List<String> newCableTags = cableTags.subList(maxCableTag,cableTags.size());
+ List<String> newCableTags = cableTags.subList(maxCableTag, cableTags.size());
AtomicInteger finalIndex2 = new AtomicInteger(1);
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, showResult);
tableRenderData2.setRows(newRows);
- tableRenderData2.setTableStyle(setTableStyle(newCableTags.size(), showResult));
+ tableRenderData2.setTableStyle(setTableStyle(newCableTags.size(), showResult));
HashMap<String, Object> tableMap = new HashMap<>();
- tableMap.put("enclosureTable",tableRenderData2);
+ tableMap.put("enclosureTable", tableRenderData2);
tableMap.put("resultCh", resultCh);
tableMap.put("writeUrl", null);
tableMap.put("examineUrl", null);
@@ -2415,7 +2650,7 @@
resultCh.set("鏈骇鍝佺鍚堢浉鍏虫爣鍑嗚姹傦紝缁忔楠屽悎鏍煎噯浜堝嚭鍘傦紙鐩栫珷鏈夋晥锛�");
}
- }else{
+ } else {
templateName = showResult ? "/static/small-report-template.docx" : "/static/small-detection-template.docx";
// 杞垚Mpa杩涜鎺掑簭
Map<String, List<SampleProductExportDto>> sortedMap = sampleProductDto2s.stream()
@@ -2423,7 +2658,7 @@
.collect(Collectors.groupingBy(SampleProductExportDto::getInspectionItem));
// // 鍒涘缓涓�涓� LinkedHashMap 鏉ヤ繚鎸佹彃鍏ラ『搴�
Map<String, List<SampleProductExportDto>> item = new LinkedHashMap<>();
- sortSampleProduct(sortedMap,item);
+ sortSampleProduct(sortedMap, item);
AtomicInteger finalIndex = new AtomicInteger(1);
@@ -2448,7 +2683,7 @@
put("standardMethod", standardMethod2.toString().equals("null") ? "" : standardMethod2);
put("orderType", orderType);
put("table", tableRenderData);
- put("enclosureTables", cableTagEnclosureTables.isEmpty()?null:cableTagEnclosureTables);
+ put("enclosureTables", cableTagEnclosureTables.isEmpty() ? null : cableTagEnclosureTables);
put("resultCh", resultCh);
put("writeUrl", null);
put("examineUrl", null);
@@ -2477,6 +2712,7 @@
/**
* 澶勭悊甯歌妫�娴嬮」
+ *
* @param item
* @param finalIndex
* @param sampleList
@@ -2502,7 +2738,7 @@
String productName = productDto2.getInspectionItemClass() + productDto2.getInspectionItem() + productDto2.getCableTag();
if (map.containsKey(productName)) {
// 濡傛灉鍚嶇О宸茬粡瀛樺湪锛屾坊鍔� lastValue 鍊煎埌 lastValueList 鍒楄〃
- if(CollectionUtil.isEmpty(map.get(productName).getLastValueList()) || StringUtils.equals(OrderType.RAW.getValue(),orderType)){
+ if (CollectionUtil.isEmpty(map.get(productName).getLastValueList()) || StringUtils.equals(OrderType.RAW.getValue(), orderType)) {
map.get(productName)
.getLastValueList()
.add(productDto2.getLastValue());
@@ -2512,7 +2748,7 @@
.add(productDto2.getInsResult());
} else {
// 濡傛灉鍚嶇О涓嶅瓨鍦紝鐩存帴鏀惧叆 map
- if(CollectionUtil.isEmpty(productDto2.getLastValueList()) || StringUtils.equals(OrderType.RAW.getValue(),orderType)){
+ if (CollectionUtil.isEmpty(productDto2.getLastValueList()) || StringUtils.equals(OrderType.RAW.getValue(), orderType)) {
productDto2.setLastValueList(new ArrayList<>()); // 妫�楠屽唴瀹�
productDto2.getLastValueList().add(productDto2.getLastValue());
}
@@ -2547,7 +2783,7 @@
String productName = productDto2.getInspectionItemClass() + productDto2.getInspectionItem() + productDto2.getInspectionItemSubclass() + productDto2.getCableTag();
if (map.containsKey(productName)) {
// 濡傛灉鍚嶇О宸茬粡瀛樺湪锛屾坊鍔� lastValue 鍊煎埌 lastValueList 鍒楄〃
- if(CollectionUtil.isEmpty(map.get(productName).getLastValueList()) || StringUtils.equals(OrderType.RAW.getValue(),orderType)){
+ if (CollectionUtil.isEmpty(map.get(productName).getLastValueList()) || StringUtils.equals(OrderType.RAW.getValue(), orderType)) {
map.get(productName)
.getLastValueList()
.add(productDto2.getLastValue());
@@ -2557,7 +2793,7 @@
.add(productDto2.getInsResult());
} else {
// 濡傛灉鍚嶇О涓嶅瓨鍦紝鐩存帴鏀惧叆 map
- if(CollectionUtil.isEmpty(productDto2.getLastValueList()) || StringUtils.equals(OrderType.RAW.getValue(),orderType)){
+ if (CollectionUtil.isEmpty(productDto2.getLastValueList()) || StringUtils.equals(OrderType.RAW.getValue(), orderType)) {
productDto2.setLastValueList(new ArrayList<>()); // 妫�楠屽唴瀹�
productDto2.getLastValueList().add(productDto2.getLastValue());
}
@@ -2578,7 +2814,7 @@
});
// 娣诲姞灏忔姤鍛婅〃澶�
- if(hasAddHead){
+ if (hasAddHead) {
text = addSmallHead(text, max, rows, cableTagList, showResult);
}
@@ -2598,8 +2834,8 @@
// 妫�楠岄」鐩�
TextRenderData middleRenderData2 = new TextRenderData();
String[] split = sample.getInspectionName().split("&");
- String itemName = split.length>0?split[0]:sample.getInspectionName();
- middleRenderData2.setText(itemName+"鈭�"+itemName+i+"_"+finalIndex);
+ String itemName = split.length > 0 ? split[0] : sample.getInspectionName();
+ middleRenderData2.setText(itemName + "鈭�" + itemName + i + "_" + finalIndex);
Style middleStyle2 = new Style();
middleStyle2.setFontFamily("瀹嬩綋");
middleStyle2.setColor("000000");
@@ -2686,7 +2922,7 @@
TextRenderData middleRenderData6 = new TextRenderData();
middleRenderData6.setText((StringUtils.isNotEmpty(sample.getLastValue()) ?
sample.getLastValue() : "")
- + "鈭�" + (finalIndex.get() +"_"+ i));
+ + "鈭�" + (finalIndex.get() + "_" + i));
Style middleStyle6 = new Style();
middleStyle6.setFontFamily("瀹嬩綋");
middleStyle6.setColor("000000");
@@ -2747,13 +2983,13 @@
}
if (showResult) {
- TextRenderData middleRenderData7 = new TextRenderData();
- middleRenderData7.setText(result);
- Style middleStyle7 = new Style();
- middleStyle7.setFontFamily("瀹嬩綋");
- middleStyle7.setColor("000000");
- middleRenderData7.setStyle(middleStyle7);
- text.add(middleRenderData7);
+ TextRenderData middleRenderData7 = new TextRenderData();
+ middleRenderData7.setText(result);
+ Style middleStyle7 = new Style();
+ middleStyle7.setFontFamily("瀹嬩綋");
+ middleStyle7.setColor("000000");
+ middleRenderData7.setStyle(middleStyle7);
+ text.add(middleRenderData7);
}
TextRenderData[] text2 = text.toArray(new TextRenderData[0]);
@@ -2770,6 +3006,7 @@
/**
* 娣诲姞灏忔姤鍛婅〃澶�
+ *
* @param text
* @param max
* @param rows
@@ -2820,13 +3057,13 @@
text.add(headRenderData6);
}
if (showResult) {
- TextRenderData headRenderData7 = new TextRenderData();
- headRenderData7.setText("鍗曢」鍒ゆ柇");
- Style headStyle7 = new Style();
- headStyle7.setFontFamily("瀹嬩綋");
- headStyle7.setColor("000000");
- headRenderData7.setStyle(headStyle7);
- text.add(headRenderData7);
+ TextRenderData headRenderData7 = new TextRenderData();
+ headRenderData7.setText("鍗曢」鍒ゆ柇");
+ Style headStyle7 = new Style();
+ headStyle7.setFontFamily("瀹嬩綋");
+ headStyle7.setColor("000000");
+ headRenderData7.setStyle(headStyle7);
+ text.add(headRenderData7);
}
TextRenderData[] text3 = text.toArray(new TextRenderData[0]);
@@ -2878,13 +3115,13 @@
text.add(tagRenderData6);
}
if (showResult) {
- TextRenderData tagRenderData7 = new TextRenderData();
- tagRenderData7.setText("");
- Style tagStyle7 = new Style();
- tagStyle7.setFontFamily("瀹嬩綋");
- tagStyle7.setColor("000000");
- tagRenderData7.setStyle(tagStyle7);
- text.add(tagRenderData7);
+ TextRenderData tagRenderData7 = new TextRenderData();
+ tagRenderData7.setText("");
+ Style tagStyle7 = new Style();
+ tagStyle7.setFontFamily("瀹嬩綋");
+ tagStyle7.setColor("000000");
+ tagRenderData7.setStyle(tagStyle7);
+ text.add(tagRenderData7);
}
TextRenderData[] text4 = text.toArray(new TextRenderData[0]);
@@ -2895,7 +3132,7 @@
}
//濡傛灉鏈夌數缂嗛鑹诧紝鐢熸垚棰滆壊鏍囪瘑琛�
- if(CollectionUtil.isNotEmpty(cableTagList)){
+ if (CollectionUtil.isNotEmpty(cableTagList)) {
TextRenderData tagRenderData1 = new TextRenderData();
tagRenderData1.setText("");
Style tagStyle1 = new Style();
@@ -2938,13 +3175,13 @@
text.add(tagRenderData6);
}
if (showResult) {
- TextRenderData tagRenderData7 = new TextRenderData();
- tagRenderData7.setText("/");
- Style tagStyle7 = new Style();
- tagStyle7.setFontFamily("瀹嬩綋");
- tagStyle7.setColor("000000");
- tagRenderData7.setStyle(tagStyle7);
- text.add(tagRenderData7);
+ TextRenderData tagRenderData7 = new TextRenderData();
+ tagRenderData7.setText("/");
+ Style tagStyle7 = new Style();
+ tagStyle7.setFontFamily("瀹嬩綋");
+ tagStyle7.setColor("000000");
+ tagRenderData7.setStyle(tagStyle7);
+ text.add(tagRenderData7);
}
TextRenderData[] text4 = text.toArray(new TextRenderData[0]);
@@ -2959,6 +3196,7 @@
/**
* 鍒涘缓澶ф姤鍛�
+ *
* @param orderId
* @param insOrder
* @param
@@ -2966,6 +3204,10 @@
private void addBitReport(Integer orderId, InsOrder insOrder, Integer reportType, Integer writeUserId) {
//samples鏄笉鍖呮嫭甯︽湁"/"鐨勬牱鍝�
List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId);
+ boolean directTemplateOrder = isDirectTemplateOrder(orderId);
+ if (!directTemplateOrder && CollectionUtils.isEmpty(samples)) {
+ throw new ErrorException("褰撳墠璁㈠崟鏈壘鍒板彲鐢熸垚鎶ュ憡鐨勬湁鏁堟楠岄」鐩�");
+ }
InsReport insReport = new InsReport();
insReport.setCode(insOrder.getEntrustCode());
insReport.setInsOrderId(orderId);
@@ -3001,9 +3243,9 @@
}
}
}
- // 鏂扮増妫�娴嬫姤鍛婄洿鎺ヤ娇鐢ㄥ浐瀹氬洓鍒楃粨鏋滆锛屼笉鍐嶆瀯閫犳棫鐗堝彲鍙樺垪 TableRenderData銆�
- // 妫�楠屾姤鍛婁粛娌跨敤涓嬫柟鍘熸湁鐨勫ぇ琛ㄦ牸閫昏緫銆�
- if (!showResult) {
+ // 鐩寸粦妯℃澘鐨勬娴嬫姤鍛娿�佹楠屾姤鍛婇兘浣跨敤鏂扮増鍥哄畾缁撴灉琛岋紝涓嶅啀杩涘叆鏃х増妫�楠岄」琛ㄦ牸閫昏緫銆�
+ // 鐩寸粦妯℃澘涓殑鎵胯浇璁板綍娌℃湁鏃ф楠岄」瀛楁锛岃繘鍏ユ棫閫昏緫浼氬湪鏍煎紡鍖栨椂浜х敓绌烘寚閽堛��
+ if (!showResult || directTemplateOrder) {
return;
}
// 鏀舵牱鏃ユ湡
@@ -3229,12 +3471,6 @@
}
}
- Map<String, String> codeStr = new HashMap<>();
- codeStr.put("鎶ュ憡缂栧彿", insReport.getCode());
- codeStr.put("鏍峰搧鍚嶇О", defaultReportText(insOrder.getSampleView(), insOrder.getSample()));
- codeStr.put("瑙勬牸鍨嬪彿", samples.get(0).getModel());
- codeStr.put("鍙戞斁鏃ユ湡", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-
String modelStr = CollUtil.join(models, "\n");
// 妫�娴嬬被鍨�
@@ -3358,7 +3594,10 @@
List<Map<String, String>> finalDeviceList = deviceList;
String finalModelStr = modelStr;
- List<Map<String, String>> detectionResultRows = buildDetectionResultRows(orderId, samples);
+ // 鐩寸粦妯℃澘璁㈠崟娌℃湁 ins_product锛屾娴嬮」鐩�佸崟浣嶅拰缁撴灉鍧囦粠璁㈠崟妯℃澘蹇収涓幏鍙栥��
+ List<Map<String, String>> detectionResultRows = directTemplateOrder
+ ? buildTemplateDetectionResultRows(orderId)
+ : buildDetectionResultRows(samples);
String productName = defaultReportText(insOrder.getSampleView(), insOrder.getSample());
String customerName = defaultReportText(custom == null ? null : custom.getCompany(), insOrder.getCompany());
String detectionCategory = defaultReportText(finalOrderType, "濮旀墭妫�娴�");
@@ -3385,7 +3624,7 @@
Wrappers.<InsOrderStandardTemplate>lambdaQuery()
.eq(InsOrderStandardTemplate::getInsOrderId, orderId)
.orderByAsc(InsOrderStandardTemplate::getSort, InsOrderStandardTemplate::getId));
- boolean newJuTemplateOrder = !templateSnapshots.isEmpty() && isDirectTemplateOrder(orderId);
+ boolean newJuTemplateOrder = !templateSnapshots.isEmpty() && directTemplateOrder;
if (newJuTemplateOrder) {
productName = defaultReportText(insOrder.getSampleView(), insOrder.getSample());
finalModelStr = "/";
@@ -3411,8 +3650,9 @@
? "寰簱浠戞硶锛屾湁鏈烘隘鍚噺灏忎簬0.005%鏃讹紝浠ユ湭妫�鍑烘姤鍑恒��"
: defaultReportText(insOrder.getRemark(), "/");
- // 妫�娴嬫姤鍛婂拰妫�楠屾姤鍛婄粺涓�浣跨敤鏂扮増鎶ュ憡妯℃澘
- String templateName = "/static/detection-report-template-v2.docx";
+ String templateName = showResult
+ ? "/static/inspection-report-template-v2.docx"
+ : "/static/detection-report-template-v2.docx";
InputStream inputStream = this.getClass().getResourceAsStream(templateName);
if (inputStream == null) {
throw new RuntimeException("鎵句笉鍒版姤鍛婃ā鏉�: " + templateName);
@@ -3499,7 +3739,7 @@
put("resultNote", finalResultRemark);
}});
try {
- String name = insReport.getCode().replace("/", "") + (showResult ? ".docx" : "-C.docx");
+ 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);
@@ -3516,6 +3756,22 @@
InsReport existing = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery()
.eq(InsReport::getInsOrderId, report.getInsOrderId())
.last("limit 1"));
+ if (Objects.equals(report.getReportType(), INSPECTION_REPORT)) {
+ String inspectionUrl = report.getUrl();
+ if (existing == null) {
+ report.setReportType(DETECTION_REPORT);
+ report.setUrl(null);
+ report.setInspectionUrl(inspectionUrl);
+ insReportMapper.insert(report);
+ } else {
+ insReportMapper.update(null, Wrappers.<InsReport>lambdaUpdate()
+ .eq(InsReport::getId, existing.getId())
+ .set(InsReport::getInspectionUrl, inspectionUrl)
+ .set(InsReport::getWriteUserId, report.getWriteUserId())
+ .set(InsReport::getWriteTime, report.getWriteTime()));
+ }
+ return;
+ }
if (existing == null) {
insReportMapper.insert(report);
return;
@@ -3527,10 +3783,7 @@
/**
* 鏂扮増妫�娴嬫姤鍛婄殑缁撴灉琛ㄥ浐瀹氫负鍥涘垪锛氬簭鍙枫�佹娴嬮」鐩�佸崟浣嶃�佹娴嬬粨鏋溿��
*/
- private List<Map<String, String>> buildDetectionResultRows(Integer orderId, List<SampleProductDto> samples) {
- if (isDirectTemplateOrder(orderId)) {
- return buildTemplateDetectionResultRows(orderId);
- }
+ private List<Map<String, String>> buildDetectionResultRows(List<SampleProductDto> samples) {
List<Map<String, String>> rows = new ArrayList<>();
if (CollectionUtils.isEmpty(samples)) {
return rows;
@@ -3560,6 +3813,7 @@
row.put("itemName", itemName);
row.put("unit", defaultReportText(product.getUnit(), "/"));
row.put("result", defaultReportText(product.getLastValue(), "/"));
+ row.put("inspectionConclusion", formatInspectionConclusion(product.getInsResult()));
rows.add(row);
}
}
@@ -3567,7 +3821,7 @@
}
/**
- * 鏂拌仛鐩寸粦妯℃澘璁㈠崟锛氫竴涓ā鏉块〉绛惧湪鎶ュ憡涓彧瀵瑰簲涓�鏉℃娴嬮」鐩��
+ * 鏂拌仛鐩寸粦妯℃澘璁㈠崟锛氭ā鏉夸腑姣忎竴涓�滃鍑哄�尖�濇壒娉ㄩ兘瀵瑰簲鎶ュ憡涓殑涓�鏉℃娴嬮」鐩��
*/
private List<Map<String, String>> buildTemplateDetectionResultRows(Integer orderId) {
List<InsOrderStandardTemplate> snapshots = insOrderStandardTemplateService.list(
@@ -3577,27 +3831,30 @@
List<Map<String, String>> rows = new ArrayList<>();
int sequence = 1;
for (InsOrderStandardTemplate snapshot : snapshots) {
- TemplateExportCell exportCell = getFirstTemplateExportCell(snapshot.getThing());
+ List<TemplateExportCell> exportCells = getTemplateExportCells(snapshot.getThing());
JSONObject recordValues = StrUtil.isBlank(snapshot.getRecordValues())
? new JSONObject() : JSON.parseObject(snapshot.getRecordValues());
- String result = readTemplateCellText(recordValues, exportCell.resultCoordinate, exportCell.templateValues);
- if (StringUtils.isBlank(result)) {
- throw new ErrorException("妯℃澘鈥�" + defaultReportText(snapshot.getName(), "妯℃澘ID " + snapshot.getTemplateId())
- + "鈥濈殑瀵煎嚭鍊间笉鑳戒负绌�");
- }
- String unit = exportCell.unitCoordinate == null ? null
- : readTemplateCellText(recordValues, exportCell.unitCoordinate, exportCell.templateValues);
- String itemName = exportCell.itemCoordinate == null ? null
- : readTemplateCellText(recordValues, exportCell.itemCoordinate, exportCell.templateValues);
+ for (TemplateExportCell exportCell : exportCells) {
+ String result = readTemplateCellText(recordValues, exportCell.resultCoordinate, exportCell.templateValues);
+ if (StringUtils.isBlank(result)) {
+ throw new ErrorException("妯℃澘鈥�" + defaultReportText(snapshot.getName(), "妯℃澘ID " + snapshot.getTemplateId())
+ + "鈥濈殑瀵煎嚭鍊间笉鑳戒负绌猴紙" + exportCell.resultCoordinate + "锛�");
+ }
+ String unit = exportCell.unitCoordinate == null ? null
+ : readTemplateCellText(recordValues, exportCell.unitCoordinate, exportCell.templateValues);
+ String itemName = exportCell.itemCoordinate == null ? null
+ : readTemplateCellText(recordValues, exportCell.itemCoordinate, exportCell.templateValues);
- Map<String, String> row = new LinkedHashMap<>();
- row.put("seq", String.valueOf(sequence++));
- String reportItemName = defaultReportText(itemName,
- defaultReportText(snapshot.getName(), "妯℃澘ID " + snapshot.getTemplateId()));
- row.put("itemName", formatExportItemName(reportItemName));
- row.put("unit", defaultReportText(unit, "/"));
- row.put("result", result);
- rows.add(row);
+ Map<String, String> row = new LinkedHashMap<>();
+ row.put("seq", String.valueOf(sequence++));
+ String reportItemName = defaultReportText(itemName,
+ defaultReportText(snapshot.getName(), "妯℃澘ID " + snapshot.getTemplateId()));
+ row.put("itemName", formatExportItemName(reportItemName));
+ row.put("unit", defaultReportText(unit, "/"));
+ row.put("result", result);
+ row.put("inspectionConclusion", formatInspectionConclusion(snapshot.getInsResult()));
+ rows.add(row);
+ }
}
if (rows.isEmpty()) {
throw new ErrorException("褰撳墠璁㈠崟鏈壘鍒板彲鐢熸垚鎶ュ憡鐨勫師濮嬭褰曟ā鏉�");
@@ -3605,7 +3862,17 @@
return rows;
}
- private TemplateExportCell getFirstTemplateExportCell(String compressedThing) {
+ private static String formatInspectionConclusion(Integer insResult) {
+ if (Objects.equals(insResult, 1)) {
+ return "鍚堟牸";
+ }
+ if (Objects.equals(insResult, 0)) {
+ return "涓嶅悎鏍�";
+ }
+ return "/";
+ }
+
+ private List<TemplateExportCell> getTemplateExportCells(String compressedThing) {
if (StrUtil.isBlank(compressedThing)) {
throw new ErrorException("鍘熷璁板綍妯℃澘涓虹┖");
}
@@ -3615,9 +3882,8 @@
} catch (Exception ignored) {
thing = compressedThing;
}
- JSONArray cellData = JSON.parseObject(thing).getJSONArray("data").getJSONObject(0).getJSONArray("celldata");
- Integer resultColumn = null;
- Integer itemColumn = null;
+ JSONObject sheet = JSON.parseObject(thing).getJSONArray("data").getJSONObject(0);
+ JSONArray cellData = sheet.getJSONArray("celldata");
Integer unitColumn = null;
List<int[]> exportCells = new ArrayList<>();
Map<String, String> templateValues = new HashMap<>();
@@ -3631,13 +3897,6 @@
}
String displayValue = value.get("v") == null ? null : String.valueOf(value.get("v"));
templateValues.put(row + "-" + column, displayValue);
- if (resultColumn == null && "妫�楠岀粨鏋�".equals(StringUtils.trim(displayValue))) {
- resultColumn = column;
- }
- if (itemColumn == null && ("妫�娴嬮」鐩�".equals(StringUtils.trim(displayValue))
- || "妫�楠岄」鐩�".equals(StringUtils.trim(displayValue)))) {
- itemColumn = column;
- }
if (unitColumn == null && "鍗曚綅".equals(StringUtils.trim(displayValue))) {
unitColumn = column;
}
@@ -3650,17 +3909,16 @@
throw new ErrorException("妯℃澘蹇呴』鑷冲皯閰嶇疆涓�涓鍑哄�兼壒娉�");
}
exportCells.sort(Comparator.comparingInt((int[] cell) -> cell[0]).thenComparingInt(cell -> cell[1]));
- int[] firstExport = exportCells.get(0);
- int resultColumnForRow = resultColumn == null ? firstExport[1] : resultColumn;
- // 閫氬父鈥滃鍑哄�尖�濇壒娉ㄩ厤缃湪椤圭洰鍚嶇О鍗曞厓鏍硷紱鑻ラ厤缃湪缁撴灉鍗曞厓鏍硷紝鍒欏洖鍒扳�滄娴嬮」鐩�濆垪鍙栧悕绉般��
- Integer itemColumnForRow = !Objects.equals(firstExport[1], resultColumnForRow)
- ? firstExport[1] : itemColumn;
- TemplateExportCell result = new TemplateExportCell();
- result.resultCoordinate = firstExport[0] + "-" + resultColumnForRow;
- result.itemCoordinate = itemColumnForRow == null ? null : firstExport[0] + "-" + itemColumnForRow;
- result.unitCoordinate = unitColumn == null ? null : firstExport[0] + "-" + unitColumn;
- result.templateValues = templateValues;
- return result;
+ List<TemplateExportCell> results = new ArrayList<>();
+ for (int[] exportCell : exportCells) {
+ TemplateExportCell result = new TemplateExportCell();
+ result.resultCoordinate = getRightAdjacentCoordinate(sheet, exportCell[0], exportCell[1]);
+ result.itemCoordinate = exportCell[0] + "-" + exportCell[1];
+ result.unitCoordinate = unitColumn == null ? null : exportCell[0] + "-" + unitColumn;
+ result.templateValues = templateValues;
+ results.add(result);
+ }
+ return results;
}
private String readTemplateCellText(JSONObject recordValues, String coordinate, Map<String, String> templateValues) {
@@ -3752,7 +4010,9 @@
return minimumText + "~" + maximum.stripTrailingZeros().toPlainString() + unit;
}
- /** 鎶ュ憡椤圭洰鍚嶇О涓嶅睍绀烘ā鏉胯绠楄繃绋嬩腑鐨勨�滃钩鍧囧�尖�濆瓧鏍峰強鍏跺悗鐨勫垎闅旈�楀彿銆� */
+ /**
+ * 鎶ュ憡椤圭洰鍚嶇О涓嶅睍绀烘ā鏉胯绠楄繃绋嬩腑鐨勨�滃钩鍧囧�尖�濆瓧鏍峰強鍏跺悗鐨勫垎闅旈�楀彿銆�
+ */
private static String formatExportItemName(String itemName) {
if (StringUtils.isBlank(itemName)) {
return itemName;
@@ -3788,18 +4048,25 @@
/**
* 璁$畻琛ㄦ牸鍒楀搴�
+ *
* @param max 鏈�澶ф楠屼釜鏁�
* @return
*/
- private static int[] calcTableColWidths(int max, boolean showResult){
+ 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];
+ 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;
@@ -3820,16 +4087,16 @@
colWidths = new int[]{650, 1100, 1100, 850, 1350, 750, 750, 750, 750, 750, 1200};
break;
}
- if(ObjectUtils.isNull(colWidths)){
+ if (ObjectUtils.isNull(colWidths)) {
List<Integer> defaultColWidths = new ArrayList<>(Arrays.asList(650, 1100, 1100, 850, 1350));
int totalWidth = 3000;//鎬诲搴�
- int byOneWidth = totalWidth/max;//姣忎竴涓殑瀹藉害
+ int byOneWidth = totalWidth / max;//姣忎竴涓殑瀹藉害
int realWidth = 0;//瀹為檯瀹藉害
for (int i = 0; i < max; i++) {
- realWidth+=byOneWidth;
+ realWidth += byOneWidth;
defaultColWidths.add(byOneWidth);
}
- defaultColWidths.add(1200+(totalWidth-realWidth));
+ defaultColWidths.add(1200 + (totalWidth - realWidth));
return defaultColWidths.stream().mapToInt(Integer::intValue).toArray();
}
return colWidths;
@@ -3837,6 +4104,7 @@
/**
* 璋冩暣楂樺害
+ *
* @param row
* @param rowHeight
* @return
@@ -4068,12 +4336,13 @@
/**
* 娣诲姞鎶ュ憡琛ㄥご
+ *
* @param sample
* @param text
* @param rowRenderData
* @param rows
* @param max
- * @param cableTags 绾胯姱棰滆壊
+ * @param cableTags 绾胯姱棰滆壊
*/
private static void addHead(SampleProductDto sample, List<TextRenderData> text, RowRenderData rowRenderData, List<RowRenderData> rows, int max, List<String> cableTags, boolean showResult) {
// 绗竴琛�
@@ -4213,13 +4482,13 @@
text.add(headRenderData6);
}
if (showResult) {
- TextRenderData headRenderData7 = new TextRenderData();
- headRenderData7.setText("缁撹@Conclusion");
- Style headStyle7 = new Style();
- headStyle7.setFontFamily("瀹嬩綋");
- headStyle7.setColor("000000");
- headRenderData7.setStyle(headStyle7);
- text.add(headRenderData7);
+ TextRenderData headRenderData7 = new TextRenderData();
+ headRenderData7.setText("缁撹@Conclusion");
+ Style headStyle7 = new Style();
+ headStyle7.setFontFamily("瀹嬩綋");
+ headStyle7.setColor("000000");
+ headRenderData7.setStyle(headStyle7);
+ text.add(headRenderData7);
}
TextRenderData[] text3 = text.toArray(new TextRenderData[0]);
@@ -4279,13 +4548,13 @@
text.add(cableRenderData6);
}
if (showResult) {
- TextRenderData cableRenderData7 = new TextRenderData();
- cableRenderData7.setText("-");
- Style cableStyle7 = new Style();
- cableStyle7.setFontFamily("瀹嬩綋");
- cableStyle7.setColor("000000");
- cableRenderData7.setStyle(cableStyle7);
- text.add(cableRenderData7);
+ TextRenderData cableRenderData7 = new TextRenderData();
+ cableRenderData7.setText("-");
+ Style cableStyle7 = new Style();
+ cableStyle7.setFontFamily("瀹嬩綋");
+ cableStyle7.setColor("000000");
+ cableRenderData7.setStyle(cableStyle7);
+ text.add(cableRenderData7);
}
TextRenderData[] text4 = text.toArray(new TextRenderData[0]);
@@ -4300,16 +4569,17 @@
/**
* 娣诲姞妫�娴嬪��
- * @param a 褰撳墠鏍峰搧
+ *
+ * @param a 褰撳墠鏍峰搧
* @param text
* @param rowRenderData
* @param rows
- * @param max 妫�楠屾暟閲�
+ * @param max 妫�楠屾暟閲�
* @param resultChList 涓嶇鍚堜俊鎭腑鏂�
* @param resultEhList 涓嶇鍚堜俊鎭嫳鏂�
* @param insSamples
- * @param cableTags 绾胯姱棰滆壊
- * @param isOneSample 鍒ゆ柇鏄惁鏄彧鏈変竴涓牱鍝�
+ * @param cableTags 绾胯姱棰滆壊
+ * @param isOneSample 鍒ゆ柇鏄惁鏄彧鏈変竴涓牱鍝�
*/
private int addTestValue(SampleProductDto a,
List<TextRenderData> text,
@@ -4844,74 +5114,74 @@
}
// 鍒ゅ畾缁撴灉
if (showResult) {
- String result = "";
- if (sample.getInsResult() != null) {
- switch (sample.getInsResult()) {
- case 1:
- result = "鈭�";
- break;
- case 2:
- result = "脳";
- break;
- case 3:
- result = "-";
- break;
- }
- }
- if (CollectionUtils.isNotEmpty(sample.getLastValueList())) {
- // 鍒ゆ柇鏄惁鏈変竴涓敊璇�
- if (sample.getInsResultList().stream().anyMatch(s -> Objects.equals(s, 3))) {
- result = "-";
- } else {
- 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 (Objects.equals(count, 0)) {
- String itemCh = "";
- String itemEn = "";
- // 娣诲姞涓嶅悎鏍兼弿杩�
- // 鍒ゆ柇闀垮害鏄惁涓�1
- if (sample.getLastValueList().size() == 1) {
- this.fillReportErrorResult(errorClassItemMapCn, errorClassItemMapEn, sample, itemCh, itemEn);
- } else if (CollectionUtils.isNotEmpty(cableTags)) {
- // 鍒ゆ柇鏄惁鏈夌數缂嗛厤缃�, 涓嶆槸鐨勮瘽鍙兘涓哄師鏉愭枡
- // 娣诲姞涓嶅悎鏍兼弿杩�
- itemCh = (max == 1 ? "" : cableTags.get(index));
- itemEn = (max == 1 ? "" : "The " + Integer.toString(index + 1) + " time ");
- this.fillReportErrorResult(errorClassItemMapCn, errorClassItemMapEn, sample, itemCh, itemEn);
- } else {
- // 娣诲姞涓嶅悎鏍兼弿杩�
- itemCh = (max == 1 ? "" : "绗�" + Integer.toString(index + 1) + "娆�");
- itemEn = (max == 1 ? "" : "The " + Integer.toString(index + 1) + " time ");
- this.fillReportErrorResult(errorClassItemMapCn, errorClassItemMapEn, sample, itemCh, itemEn);
- }
- type = "脳";
- } else {
- type = "鈭�";
- }
- collect.add(type);
- index++;
- }
- result = CollUtil.join(collect, " ");
- ;
- } else {
- result = "鈭�";
+ String result = "";
+ if (sample.getInsResult() != null) {
+ switch (sample.getInsResult()) {
+ case 1:
+ result = "鈭�";
+ break;
+ case 2:
+ result = "脳";
+ break;
+ case 3:
+ result = "-";
+ break;
}
}
- }
+ if (CollectionUtils.isNotEmpty(sample.getLastValueList())) {
+ // 鍒ゆ柇鏄惁鏈変竴涓敊璇�
+ if (sample.getInsResultList().stream().anyMatch(s -> Objects.equals(s, 3))) {
+ result = "-";
+ } else {
+ 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 (Objects.equals(count, 0)) {
+ String itemCh = "";
+ String itemEn = "";
+ // 娣诲姞涓嶅悎鏍兼弿杩�
+ // 鍒ゆ柇闀垮害鏄惁涓�1
+ if (sample.getLastValueList().size() == 1) {
+ this.fillReportErrorResult(errorClassItemMapCn, errorClassItemMapEn, sample, itemCh, itemEn);
+ } else if (CollectionUtils.isNotEmpty(cableTags)) {
+ // 鍒ゆ柇鏄惁鏈夌數缂嗛厤缃�, 涓嶆槸鐨勮瘽鍙兘涓哄師鏉愭枡
+ // 娣诲姞涓嶅悎鏍兼弿杩�
+ itemCh = (max == 1 ? "" : cableTags.get(index));
+ itemEn = (max == 1 ? "" : "The " + Integer.toString(index + 1) + " time ");
+ this.fillReportErrorResult(errorClassItemMapCn, errorClassItemMapEn, sample, itemCh, itemEn);
+ } else {
+ // 娣诲姞涓嶅悎鏍兼弿杩�
+ itemCh = (max == 1 ? "" : "绗�" + Integer.toString(index + 1) + "娆�");
+ itemEn = (max == 1 ? "" : "The " + Integer.toString(index + 1) + " time ");
+ this.fillReportErrorResult(errorClassItemMapCn, errorClassItemMapEn, sample, itemCh, itemEn);
+ }
+ type = "脳";
+ } else {
+ type = "鈭�";
+ }
+ collect.add(type);
+ index++;
+ }
+ result = CollUtil.join(collect, " ");
+ ;
+ } else {
+ result = "鈭�";
+ }
+ }
+ }
- if (showResult) {
- TextRenderData headRenderData7 = new TextRenderData();
- headRenderData7.setText(result);
- Style headStyle7 = new Style();
- headStyle7.setFontFamily("瀹嬩綋");
- headStyle7.setColor("000000");
- headRenderData7.setStyle(headStyle7);
- text.add(headRenderData7);
- }
+ if (showResult) {
+ TextRenderData headRenderData7 = new TextRenderData();
+ headRenderData7.setText(result);
+ Style headStyle7 = new Style();
+ headStyle7.setFontFamily("瀹嬩綋");
+ headStyle7.setColor("000000");
+ headRenderData7.setStyle(headStyle7);
+ text.add(headRenderData7);
+ }
}
TextRenderData[] text2 = text.toArray(new TextRenderData[0]);
@@ -4993,11 +5263,12 @@
/**
* NBSP锛堥潪闂存柇绌烘牸锛� 杞垚 鏅�氱┖鏍�
+ *
* @param oldStr
* @return
*/
- private String normalizedSpaces(String oldStr){
- if(StringUtils.isBlank(oldStr)){
+ private String normalizedSpaces(String oldStr) {
+ if (StringUtils.isBlank(oldStr)) {
return oldStr;
}
return oldStr.replaceAll("\u00A0", " ").trim();
@@ -5005,6 +5276,7 @@
/**
* 娣诲姞鎶ュ憡缁撹涓嫳鏂�
+ *
* @param sample
* @param itemCh
* @param itemEn
@@ -5064,6 +5336,7 @@
/**
* 鏍煎紡鍖栦慨鏀规楠岄」
+ *
* @param sampleProductDto2s
*/
private void formatProducts(List<SampleProductExportDto> sampleProductDto2s) {
@@ -5088,7 +5361,7 @@
}
}
// 鍒ゆ柇鏄惁鏄暟瀛楃被鍨�
- if (sampleProductDto2.getInspectionValueType().equals("1")) {
+ if ("1".equals(sampleProductDto2.getInspectionValueType())) {
// 鎶婃楠屽唴瀹瑰鏋滄纭寲鐐瑰拰鐒︾儳鏃堕棿鎶� . 鍒囧壊鎴� :
String lastValue = sampleProductDto2.getLastValue();
if (sampleProductDto2.getInspectionItem().contains("姝g~鍖栫偣") || sampleProductDto2.getInspectionItem().contains("鐒︾儳鏃堕棿")) {
@@ -5133,6 +5406,7 @@
/**
* 娣诲姞缁撳熬
+ *
* @param text
* @param rowRenderData
* @param rows
@@ -5164,6 +5438,7 @@
/**
* 鍒ゆ柇褰撳墠鍐呭鏄惁鏄瀛﹁鏁版硶
+ *
* @param str
* @return
*/
@@ -5180,6 +5455,7 @@
/**
* 淇敼瑕佹眰鎻忚堪鐨勭瀛﹁鏁版硶
+ *
* @param input
*/
public static String convertToScientificNotation(String input) {
@@ -5209,6 +5485,7 @@
/**
* 灞曠ず鎴愮瀛﹁鏁版硶
+ *
* @param number
* @return
*/
@@ -5305,6 +5582,7 @@
/**
* 鏍规嵁瑕佹眰鎻忚堪淇濈暀缁撴灉灏忔暟鐐逛綅鏁�
+ *
* @param reference
* @param value
* @return
@@ -5373,6 +5651,7 @@
/**
* 淇濈暀浣嶆暟, 濡傛灉绛変簬0 杩斿洖鎵惧埌鐨勪竴涓潪0浣嶆暟
+ *
* @param number 褰撳墠鏁板瓧
* @param scale 鍘熸湰淇濈暀鐨勪綅鏁�
* @return
@@ -5411,9 +5690,10 @@
/**
* *****淇濆瓨鍏冩闃块噷杩涜揣楠岃瘉鍘熷璁板綍*****
- * @param insOrderId 璁㈠崟Id
- * @param examineUserId 澶嶆牳浜篒d
- * @param writeUserId 妫�楠屽憳Id
+ *
+ * @param insOrderId 璁㈠崟Id
+ * @param examineUserId 澶嶆牳浜篒d
+ * @param writeUserId 妫�楠屽憳Id
*/
private void reportFactoryVerify(Integer insOrderId, Integer examineUserId, Integer writeUserId) {
// 鏌ヨ杩涜揣楠岃瘉鍘熷璁板綍
@@ -5566,6 +5846,7 @@
/**
* ***鏍煎紡鍖栬繘鍘傞獙璇佸唴瀹�****
+ *
* @param basicType
* @return
*/
@@ -5595,6 +5876,7 @@
/**
* ***word杞崲pdf***
+ *
* @param path
* @return
*/
@@ -5643,6 +5925,7 @@
/**
* *****淇敼鎴愬搧鎶芥牱鐘舵��******
+ *
* @param insSamples
* @param order
*/
@@ -5680,6 +5963,7 @@
/**
* 娣诲姞宸ユ椂
+ *
* @param userId
* @param insProduct
* @param insOrder
--
Gitblit v1.9.3