From 8943a4e9f5ee1455c56ac4af60d941fa23731051 Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期一, 13 四月 2026 13:20:38 +0800
Subject: [PATCH] 重量
---
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 114 ++++++++++++++++++++++++++++++++++----------------------
1 files changed, 69 insertions(+), 45 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
index f1dd469..96611bd 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -51,6 +51,8 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -140,6 +142,11 @@
// 楠岃瘉璁惧绔欑偣
DeviceSite deviceSite = validateDeviceSite(param);
+
+ // 绌烘澘鍏ュ簱锛氫笌闈炵┖鏉垮悓涓�鍏ュ彛锛屼粎涓嶆牎楠岀粍鎵橈紝鍙仛鍒嗛厤搴撲綅銆佸缓浠诲姟銆佹洿鏂板簱浣�
+ if (param.getIoType() != null && param.getIoType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)) {
+ return createInTaskForEmptyPallet(param);
+ }
// 鎻愬墠瀹氫箟 waitPakin / waitPakinItems锛屼緵鍚庣画鍏朵粬鍏ュ簱閫昏緫浣跨敤
WaitPakin waitPakin = null;
@@ -257,6 +264,12 @@
log.warn("鏇存柊鎷f枡鍏ュ簱浠诲姟鐨勫叆搴撶珯鐐瑰け璐� - 浠诲姟缂栫爜锛歿}", pickInTask.getTaskCode());
}
}
+ if (param.getWeight() != null) {
+ pickInTask.setWeight(param.getWeight());
+ if (!taskService.updateById(pickInTask)) {
+ log.warn("鏇存柊鎷f枡鍏ュ簱浠诲姟閲嶉噺澶辫触 - 浠诲姟缂栫爜锛歿}", pickInTask.getTaskCode());
+ }
+ }
// 杩斿洖鎷f枡鍏ュ簱浠诲姟鐨勪俊鎭�
InTaskMsgDto msgDto = new InTaskMsgDto();
@@ -308,6 +321,12 @@
checkInTask.setOrgSite(param.getSourceStaNo());
if (!taskService.updateById(checkInTask)) {
log.warn("鏇存柊鐩樼偣鍏ュ簱浠诲姟鐨勫叆搴撶珯鐐瑰け璐� - 浠诲姟缂栫爜锛歿}", checkInTask.getTaskCode());
+ }
+ }
+ if (param.getWeight() != null) {
+ checkInTask.setWeight(param.getWeight());
+ if (!taskService.updateById(checkInTask)) {
+ log.warn("鏇存柊鐩樼偣鍏ュ簱浠诲姟閲嶉噺澶辫触 - 浠诲姟缂栫爜锛歿}", checkInTask.getTaskCode());
}
}
@@ -390,6 +409,12 @@
log.warn("鏇存柊鍏ュ簱浠诲姟鐨勫叆搴撶珯鐐瑰け璐� - 浠诲姟缂栫爜锛歿}", existingInTask.getTaskCode());
}
}
+ if (param.getWeight() != null) {
+ existingInTask.setWeight(param.getWeight());
+ if (!taskService.updateById(existingInTask)) {
+ log.warn("鏇存柊鍏ュ簱浠诲姟閲嶉噺澶辫触 - 浠诲姟缂栫爜锛歿}", existingInTask.getTaskCode());
+ }
+ }
// 鐩存帴杩斿洖宸叉湁浠诲姟淇℃伅锛屼笉鍐嶆柊寤轰换鍔�
InTaskMsgDto msgDto = new InTaskMsgDto();
@@ -419,10 +444,11 @@
}
// 鍒涘缓骞朵繚瀛樹换鍔�
Task task = createTask(ruleCode, locNo.getLocNo(), waitPakin.getBarcode(),
- deviceSite.getDeviceSite(), param.getSourceStaNo().toString(), param.getUser());
+ deviceSite.getDeviceSite(), param.getSourceStaNo().toString(), param.getUser(),
+ TaskType.TASK_TYPE_IN.type, param.getWeight());
// 鏇存柊搴撲綅鐘舵��
- updateLocStatus(task.getTargLoc(), waitPakin.getBarcode());
+ updateLocStatus(task.getTargLoc(), waitPakin.getBarcode(), param.getWeight());
// 鑾峰彇骞堕獙璇佺粍鎷栨槑缁�
waitPakinItems = getWaitPakinItems(waitPakin.getId());
@@ -579,16 +605,16 @@
/**
* 鍒涘缓骞朵繚瀛樹换鍔�
*/
- private Task createTask(String ruleCode, String targetLoc, String barcode,
- String targetSite, String sourceSiteNo, Long loginUserId) {
- return createTask(ruleCode, targetLoc, barcode, targetSite, sourceSiteNo, loginUserId, TaskType.TASK_TYPE_IN.type);
- }
+// private Task createTask(String ruleCode, String targetLoc, String barcode,
+// String targetSite, String sourceSiteNo, Long loginUserId) {
+// return createTask(ruleCode, targetLoc, barcode, targetSite, sourceSiteNo, loginUserId, TaskType.TASK_TYPE_IN.type, null);
+// }
/**
* 鍒涘缓骞朵繚瀛樹换鍔★紙鏀寔鎸囧畾浠诲姟绫诲瀷锛屽绌烘澘鍏ュ簱锛�
*/
private Task createTask(String ruleCode, String targetLoc, String barcode,
- String targetSite, String sourceSiteNo, Long loginUserId, Integer taskType) {
+ String targetSite, String sourceSiteNo, Long loginUserId, Integer taskType, BigDecimal weight) {
Task task = new Task();
task.setTaskCode(ruleCode)
.setTaskStatus(TaskStsType.GENERATE_IN.id)
@@ -600,6 +626,9 @@
.setCreateBy(loginUserId)
.setUpdateBy(loginUserId)
.setOrgSite(sourceSiteNo);
+ if (weight != null) {
+ task.setWeight(weight);
+ }
if (!taskService.save(task)) {
throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒");
@@ -610,27 +639,32 @@
/**
* 鏇存柊搴撲綅鐘舵��
*/
- private void updateLocStatus(String locCode, String barcode) {
- boolean updated = locService.update(new LambdaUpdateWrapper<Loc>()
+ private void updateLocStatus(String locCode, String barcode, BigDecimal weight) {
+ LambdaUpdateWrapper<Loc> uw = new LambdaUpdateWrapper<Loc>()
.eq(Loc::getCode, locCode)
.set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_S.type)
- .set(Loc::getBarcode, barcode));
+ .set(Loc::getBarcode, barcode)
+ .set(Loc::getWeight, weight);
+ boolean updated = locService.update(uw);
if (!updated) {
throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒");
}
}
/**
- * 绌烘澘鍏ュ簱锛歊CS 鐢宠鏃� full=true锛屾棤闇�缁勬墭锛屽垎閰嶅簱浣嶅苟鍒涘缓 TASK_TYPE_EMPITY_IN 浠诲姟銆�
- * 闇�鍦ㄨ澶囩珯鐐逛腑閰嶇疆 type=10锛堢┖鏉垮叆搴擄級鐨勭珯鐐硅矾寰勩��
+ * 绌烘澘鍏ュ簱锛氫笌闈炵┖鏉垮悓涓�娴佺▼锛堟牎楠岀珯鐐广�佸垎閰嶅簱浣嶃�佸缓浠诲姟銆佹洿鏂板簱浣嶏級锛屼粎涓嶆牎楠岀粍鎵樸�佷笉鍐欎换鍔℃槑缁嗐�佷笉鏇存柊缁勬墭鐘舵�併��
+ * 鐢� createInTask 鍦� ioType=绌烘澘鏃惰皟鐢紱闇�鍦ㄨ澶囩珯鐐逛腑閰嶇疆 type=10锛堢┖鏉垮叆搴擄級鐨勭珯鐐硅矾寰勩��
*/
- private InTaskMsgDto createInTaskForEmptyPallet(String barcode, String staNo, Integer type) {
+ private InTaskMsgDto createInTaskForEmptyPallet(TaskInParam sourceParam) {
TaskInParam param = new TaskInParam();
+ String barcode = sourceParam.getBarcode();
+ String staNo = sourceParam.getSourceStaNo();
param.setBarcode(barcode);
param.setSourceStaNo(staNo);
- param.setLocType1(type != null ? type : 1);
+ param.setLocType1(sourceParam.getLocType1() != null ? sourceParam.getLocType1() : 1);
param.setIoType(TaskType.TASK_TYPE_EMPITY_IN.type);
- param.setUser(1L);
+ param.setUser(sourceParam.getUser() != null ? sourceParam.getUser() : 1L);
+ param.setWeight(sourceParam.getWeight());
// 鏍¢獙璁惧绔欑偣锛堥渶閰嶇疆 type=10 绌烘澘鍏ュ簱鐨勭珯鐐癸級
DeviceSite deviceSite = validateDeviceSite(param);
@@ -645,6 +679,10 @@
log.info("鎵惧埌璇ユ墭鐩樺彿宸叉湁绌烘澘鍏ュ簱浠诲姟锛屽鐢� - 浠诲姟缂栫爜锛歿}锛岀鍙凤細{}", existingInTask.getTaskCode(), barcode);
if (StringUtils.isNotBlank(staNo) && !staNo.equals(existingInTask.getOrgSite())) {
existingInTask.setOrgSite(staNo);
+ taskService.updateById(existingInTask);
+ }
+ if (param.getWeight() != null) {
+ existingInTask.setWeight(param.getWeight());
taskService.updateById(existingInTask);
}
InTaskMsgDto msgDto = new InTaskMsgDto();
@@ -681,8 +719,8 @@
}
String ruleCode = generateTaskCode();
String targetSite = StringUtils.isNotBlank(deviceSite.getDeviceSite()) ? deviceSite.getDeviceSite() : staNo;
- Task task = createTask(ruleCode, locNo.getLocNo(), barcode, targetSite, staNo, param.getUser(), TaskType.TASK_TYPE_EMPITY_IN.type);
- updateLocStatus(task.getTargLoc(), barcode);
+ Task task = createTask(ruleCode, locNo.getLocNo(), barcode, targetSite, staNo, param.getUser(), TaskType.TASK_TYPE_EMPITY_IN.type, param.getWeight());
+ updateLocStatus(task.getTargLoc(), barcode, param.getWeight());
locNo.setWorkNo(ruleCode);
locNo.setTaskId(task.getId());
log.info("[绌烘澘鍏ュ簱] 宸插垱寤轰换鍔�: {}, 搴撲綅: {}, 鏂欑: {}", ruleCode, locNo.getLocNo(), barcode);
@@ -1556,40 +1594,24 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public R allocateLocation(String barcode, String staNo, Integer type, Boolean full) {
+ public R allocateLocation(String barcode, String staNo, Integer type, Boolean full, BigDecimal weight) {
log.info("========== 寮�濮嬬敵璇峰叆搴撲换鍔★紝鍒嗛厤搴撲綅 ==========");
- log.info("鏂欑鐮侊細{}锛屽叆搴撶珯鐐癸細{}锛屽叆搴撶被鍨嬶細{}锛岀┖鏉匡細{}", barcode, staNo, type, full);
+ log.info("鏂欑鐮侊細{}锛屽叆搴撶珯鐐癸細{}锛屽叆搴撶被鍨嬶細{}锛岀┖鏉匡細{}锛岄噸閲忥細{}", barcode, staNo, type, full, weight);
- // full=true 鏃惰蛋绌烘澘鍏ュ簱锛堟棤闇�缁勬墭锛夛紱鍚﹀垯璧版櫘閫氬叆搴擄紙闇�缁勬墭鎴栬嚜鍔ㄧ粍鎵橈級
- if (Boolean.TRUE.equals(full)) {
- InTaskMsgDto msgDto = createInTaskForEmptyPallet(barcode, staNo, type);
- JSONObject result = new JSONObject();
- result.put("locNo", msgDto.getLocNo());
- result.put("batchNo", msgDto.getWorkNo());
- result.put("taskNo", msgDto.getWorkNo());
- return R.ok(result);
+ BigDecimal weightScaled = null;
+ if (weight != null) {
+ weightScaled = weight.setScale(4, RoundingMode.HALF_UP);
}
- // 鏋勫缓 TaskInParam 鍙傛暟锛屼笌 /wcs/create/in/task 鎺ュ彛鍙傛暟涓�鑷�
+ // 缁熶竴璧� createInTask锛氱┖鏉�(full=true)浠呬笉鏍¢獙缁勬墭锛屼粛鏍¢獙绔欑偣銆佸垎閰嶅簱浣嶃�佸缓浠诲姟锛涢潪绌烘澘闇�缁勬墭
TaskInParam param = new TaskInParam();
param.setBarcode(barcode);
param.setSourceStaNo(staNo);
- param.setIoType(TaskType.TASK_TYPE_IN.type); // 鍏ュ簱绫诲瀷
- param.setLocType1(type); // 搴撲綅绫诲瀷锛堥珮浣庢娴嬩俊鍙凤級
- param.setUser(1L); // 榛樿鐢ㄦ埛ID锛屽彲浠ユ牴鎹疄闄呴渶姹傝皟鏁�
+ param.setLocType1(type != null ? type : 1);
+ param.setUser(1L);
+ param.setIoType(Boolean.TRUE.equals(full) ? TaskType.TASK_TYPE_EMPITY_IN.type : TaskType.TASK_TYPE_IN.type);
+ param.setWeight(weightScaled);
- // 璋冪敤 createInTask 鏂规硶锛屽垱寤哄畬鏁寸殑鍏ュ簱浠诲姟
- // 璇ユ柟娉曚細鎵ц浠ヤ笅娴佺▼锛�
- // 1. 楠岃瘉璁惧绔欑偣
- // 2. 楠岃瘉缁勬嫋鐘舵��
- // 3. 妫�鏌ユ槸鍚︽湁鍖归厤鐨勫叆搴撲换鍔★紙鎷f枡/鐩樼偣鍏ュ簱浼氬尮閰嶇姸鎬�199骞舵洿鏂颁负2锛�
- // 4. 鐢熸垚浠诲姟缂栫爜锛堝鏋滈渶瑕佸垱寤烘柊浠诲姟锛�
- // 5. 鑾峰彇搴撲綅鍙�
- // 6. 鍒涘缓骞朵繚瀛樹换鍔★紙濡傛灉闇�瑕佸垱寤烘柊浠诲姟锛�
- // 7. 鏇存柊搴撲綅鐘舵��
- // 8. 鑾峰彇骞堕獙璇佺粍鎷栨槑缁�
- // 9. 鍒涘缓骞朵繚瀛樹换鍔℃槑缁�
- // 10. 鏇存柊缁勬墭鐘舵��
InTaskMsgDto msgDto = createInTask(param);
// 鏌ヨ浠诲姟褰撳墠鐘舵��
@@ -1619,10 +1641,12 @@
.set(Task::getUpdateTime, new Date()));
if (statusUpdated) {
- log.info("鏂板垱寤虹殑鍏ュ簱浠诲姟鐘舵�佸凡鏇存柊涓�2锛圧CS浠诲姟宸蹭笅鍙戯級 - 浠诲姟缂栫爜锛歿}", task.getTaskCode());
+ task = taskService.getById(task.getId());
+ log.info("鏂板垱寤虹殑鍏ュ簱浠诲姟鐘舵�佸凡鏇存柊涓�2锛圧CS浠诲姟宸蹭笅鍙戯級 - 浠诲姟缂栫爜锛歿}锛屽綋鍓嶇姸鎬侊細{}", task.getTaskCode(), task != null ? task.getTaskStatus() : null);
} else {
+ task = taskService.getById(task.getId());
log.warn("鏂板垱寤虹殑鍏ュ簱浠诲姟鐘舵�佹洿鏂颁负2澶辫触锛屽彲鑳界姸鎬佸凡鍙樻洿 - 浠诲姟缂栫爜锛歿}锛屽綋鍓嶇姸鎬侊細{}",
- task.getTaskCode(), task.getTaskStatus());
+ task.getTaskCode(), task != null ? task.getTaskStatus() : null);
}
} else if (taskStatus != null && taskStatus.equals(TaskStsType.WCS_EXECUTE_IN.id)) {
log.info("鍏ュ簱浠诲姟鐘舵�佸凡缁忔槸2锛圧CS浠诲姟宸蹭笅鍙戯級锛屾棤闇�鏇存柊 - 浠诲姟缂栫爜锛歿}", task.getTaskCode());
--
Gitblit v1.9.1