From 9571229a2013472dc701ecf5767f2873b36d8f90 Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期四, 11 十二月 2025 17:07:19 +0800
Subject: [PATCH] 修复导入Excel功能工程号自增; 添加选择工程号自动填写玻璃id列表
---
mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/GlassInfoServiceImpl.java | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 151 insertions(+), 6 deletions(-)
diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/GlassInfoServiceImpl.java b/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/GlassInfoServiceImpl.java
index 6c26414..36e73b8 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/GlassInfoServiceImpl.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/GlassInfoServiceImpl.java
@@ -14,6 +14,7 @@
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
+import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -230,7 +231,7 @@
return result;
}
- // 宸ョ▼鍙风敓鎴愶細浣跨敤鏁版嵁搴撹嚜澧炲簭鍙凤紝閬垮厤閲嶅
+ // 宸ョ▼鍙风敓鎴愶細姣忔瀵煎叆閮界敓鎴愭柊鐨勫伐绋嬪彿锛堜娇鐢ㄦ暟鎹簱鑷搴忓彿锛岄伩鍏嶉噸澶嶏級
final String engineerId = engineeringSequenceService.generateAndSaveEngineeringId(new Date());
final String filmsIdDefault = firstValue(excelRows, "filmsId", "鐧界幓");
final double thicknessDefault = parseDouble(firstValue(excelRows, "thickness"), 0d);
@@ -242,8 +243,9 @@
List<Map<String, Object>> glassInfolList = excelRows.stream()
.flatMap(row -> {
- int qty = (int) parseDouble(row.getOrDefault("quantity", 1), 1);
- if (qty <= 0) qty = 1;
+ Object qtyObj = row.getOrDefault("quantity", 1);
+ int qty = parseDouble(qtyObj, 1) > 0 ? (int) parseDouble(qtyObj, 1) : 1;
+
String glassId = str(row.get("glassId"));
String filmsId = strOrDefault(row.get("filmsId"), filmsIdDefaultFinal);
String flowCardId = str(row.get("flowCardId"));
@@ -254,9 +256,15 @@
double thickness = parseDouble(row.get("thickness"), thicknessDefaultFinal);
int finalQty = qty;
+ log.info("瑙f瀽鍒版暟閲忥細row={}, quantity={}, 鏈�缁坬ty={}", row, qtyObj, finalQty);
return range(0, qty).mapToObj(idx -> {
- String finalGlassId = finalQty > 1 ? glassId + "_" + (idx + 1) : glassId;
- String finalFlowCardId = flowCardId.isEmpty() ? finalGlassId : flowCardId;
+ String baseGlassId = engineerIdFinal + glassId;
+ String finalGlassId = finalQty > 1 ? baseGlassId + "_" + (idx + 1) : baseGlassId;
+
+ String baseFlowCardId = flowCardId.isEmpty() ? baseGlassId : flowCardId;
+ String finalFlowCardSequence = baseFlowCardId + "/" + (idx + 1);
+ String finalFlowCardId = baseFlowCardId;
+
Map<String, Object> m = new HashMap<>();
m.put("xAxis", 0);
m.put("xCoordinate", 0);
@@ -287,7 +295,7 @@
m.put("combine", 0);
m.put("markIcon", "");
m.put("filmRemove", 0);
- m.put("flowCardSequence", flowCardId + "/" + (idx + 1));
+ m.put("flowCardSequence", finalFlowCardSequence);
m.put("process", "");
m.put("rawAngle", 0);
m.put("graphNo", 0);
@@ -473,5 +481,142 @@
return Math.round(v * 100.0) / 100.0;
}
+ @Override
+ public List<GlassInfo> getGlassInfosByEngineeringId(String engineeringId) {
+ if (engineeringId == null || engineeringId.trim().isEmpty()) {
+ return Collections.emptyList();
+ }
+ try {
+ return baseMapper.selectByEngineeringId(engineeringId.trim());
+ } catch (Exception e) {
+ log.error("鏍规嵁宸ョ▼鍙锋煡璇㈢幓鐠冧俊鎭け璐�, engineeringId={}", engineeringId, e);
+ return Collections.emptyList();
+ }
+ }
+
+ @Override
+ public void saveGlassInfosFromExcel(List<Map<String, Object>> excelRows, String engineeringId) {
+ if (excelRows == null || excelRows.isEmpty() || engineeringId == null || engineeringId.trim().isEmpty()) {
+ return;
+ }
+
+ List<GlassInfo> glassInfos = new ArrayList<>();
+ Date now = new Date();
+
+ for (Map<String, Object> row : excelRows) {
+ String glassId = str(row.get("glassId"));
+ if (glassId == null || glassId.trim().isEmpty()) {
+ continue;
+ }
+
+ int qty = (int) parseDouble(row.getOrDefault("quantity", 1), 1);
+ if (qty <= 0) qty = 1;
+
+ double width = parseDouble(row.get("width"), 0d);
+ double height = parseDouble(row.get("height"), 0d);
+ double thickness = parseDouble(row.get("thickness"), 0d);
+
+ // 涓庡鍏ヨ鍒欎繚鎸佷竴鑷达細glassId 鍓嶅姞宸ョ▼鍙峰墠缂�锛屾暟閲�>1鏃惰拷鍔犲簭鍙�
+ String baseGlassId = engineeringId.trim() + glassId;
+ for (int idx = 0; idx < qty; idx++) {
+ String finalGlassId = qty > 1 ? baseGlassId + "_" + (idx + 1) : baseGlassId;
+
+ GlassInfo glassInfo = new GlassInfo();
+ glassInfo.setGlassId(finalGlassId);
+ glassInfo.setEngineeringId(engineeringId.trim());
+ glassInfo.setGlassLength((int) Math.round(height));
+ glassInfo.setGlassWidth((int) Math.round(width));
+ glassInfo.setGlassThickness(BigDecimal.valueOf(thickness));
+ glassInfo.setStatus(GlassInfo.Status.ACTIVE);
+ glassInfo.setState(0);
+ glassInfo.setCreatedTime(now);
+ glassInfo.setUpdatedTime(now);
+ glassInfo.setCreatedBy("system");
+ glassInfo.setUpdatedBy("system");
+
+ glassInfos.add(glassInfo);
+ }
+ }
+
+ if (!glassInfos.isEmpty()) {
+ batchSaveOrUpdateGlassInfo(glassInfos);
+ log.info("宸蹭繚瀛� {} 鏉$幓鐠冧俊鎭埌鏈湴鏁版嵁搴擄紝宸ョ▼鍙�: {}", glassInfos.size(), engineeringId);
+ }
+ }
+
+ @Override
+ public boolean updateGlassStateAfterScan(String glassId, Integer width, Integer height, Integer workLine) {
+ if (glassId == null || glassId.trim().isEmpty()) {
+ return false;
+ }
+
+ try {
+ // 鏌ヨ宸插瓨鍦ㄧ殑鐜荤拑淇℃伅
+ GlassInfo existing = baseMapper.selectByGlassId(glassId.trim());
+ if (existing == null) {
+ log.debug("鐜荤拑淇℃伅涓嶅瓨鍦紝鏃犳硶鏇存柊鐘舵��: glassId={}", glassId);
+ return false;
+ }
+
+ // 鏇存柊鐘舵�佷负1锛堝凡鎵爜浜や簰锛�
+ LambdaUpdateWrapper<GlassInfo> wrapper = new LambdaUpdateWrapper<>();
+ wrapper.eq(GlassInfo::getGlassId, glassId.trim())
+ .eq(GlassInfo::getIsDeleted, 0)
+ .set(GlassInfo::getState, 1)
+ .set(GlassInfo::getUpdatedTime, new Date())
+ .set(GlassInfo::getUpdatedBy, "system");
+
+ // 濡傛灉鎻愪緵浜嗗昂瀵镐俊鎭紝涔熸洿鏂板昂瀵�
+ if (width != null) {
+ wrapper.set(GlassInfo::getGlassWidth, width);
+ }
+ if (height != null) {
+ wrapper.set(GlassInfo::getGlassLength, height);
+ }
+ if (workLine != null) {
+ wrapper.set(GlassInfo::getWorkLine, workLine);
+ }
+
+ boolean updated = this.update(wrapper);
+ if (updated) {
+ log.info("宸叉洿鏂扮幓鐠冧俊鎭姸鎬佷负宸叉壂鐮佷氦浜�: glassId={}, state=1", glassId);
+ }
+ return updated;
+ } catch (Exception e) {
+ log.error("鏇存柊鐜荤拑淇℃伅鐘舵�佸け璐�: glassId={}", glassId, e);
+ return false;
+ }
+ }
+
+ @Override
+ public int deleteGlassInfosByEngineeringId(String engineeringId) {
+ if (engineeringId == null || engineeringId.trim().isEmpty()) {
+ return 0;
+ }
+
+ try {
+ // 鍏堟煡璇㈣鍒犻櫎鐨勬暟閲忥紙鍒犻櫎鍓嶏級
+ LambdaQueryWrapper<GlassInfo> countWrapper = new LambdaQueryWrapper<>();
+ countWrapper.eq(GlassInfo::getEngineeringId, engineeringId.trim())
+ .eq(GlassInfo::getIsDeleted, 0); // 鏌ヨ鏈垹闄ょ殑璁板綍
+ long count = this.count(countWrapper);
+
+ // 浣跨敤MyBatis-Plus鐨剅emove鏂规硶锛屼細鏍规嵁@TableLogic鑷姩杩涜閫昏緫鍒犻櫎
+ LambdaQueryWrapper<GlassInfo> removeWrapper = new LambdaQueryWrapper<>();
+ removeWrapper.eq(GlassInfo::getEngineeringId, engineeringId.trim())
+ .eq(GlassInfo::getIsDeleted, 0); // 鍙垹闄ゆ湭鍒犻櫎鐨勮褰�
+
+ boolean result = this.remove(removeWrapper);
+ if (result) {
+ log.info("宸插垹闄ゅ伐绋嬪彿涓嬬殑鐜荤拑淇℃伅: engineeringId={}, count={}", engineeringId, count);
+ return (int) count;
+ }
+ return 0;
+ } catch (Exception e) {
+ log.error("鍒犻櫎宸ョ▼鍙蜂笅鐨勭幓鐠冧俊鎭け璐�: engineeringId={}", engineeringId, e);
+ return 0;
+ }
+ }
+
}
--
Gitblit v1.8.0