From 2f8e173048d22c5b40612c3538b9c1aa5a5397f6 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期五, 27 三月 2026 13:38:05 +0800
Subject: [PATCH] #乐观锁
---
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 62 ++++++++++++++++++++++--------
1 files changed, 45 insertions(+), 17 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 1f79199..3a435cf 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
@@ -27,6 +27,7 @@
import com.vincent.rsf.server.api.utils.LocUtils;
import com.vincent.rsf.server.api.utils.SlaveProperties;
import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.mapper.LocItemMapper;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.manager.service.impl.LocServiceImpl;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
@@ -67,7 +68,7 @@
@Autowired
private LocServiceImpl locService;
@Autowired
- private LocItemService locItemService;
+ private LocItemMapper locItemMapper;
@Autowired
private SlaveProperties slaveProperties;
@Autowired
@@ -233,10 +234,17 @@
* 鏇存柊搴撲綅鐘舵��
*/
private void updateLocStatus(String locCode, String barcode) {
- boolean updated = locService.update(new LambdaUpdateWrapper<Loc>()
- .eq(Loc::getCode, locCode)
- .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_S.type)
- .set(Loc::getBarcode, barcode));
+ Loc current = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, locCode));
+ if (Objects.isNull(current)) {
+ throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒");
+ }
+ Loc update = new Loc();
+ update.setId(current.getId());
+ update.setVersion(current.getVersion());
+ update.setUseStatus(LocStsType.LOC_STS_TYPE_S.type);
+ update.setBarcode(barcode);
+ boolean updated = locService.update(update, new LambdaUpdateWrapper<Loc>()
+ .eq(Loc::getId, current.getId()));
if (!updated) {
throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒");
}
@@ -283,11 +291,19 @@
* 鏇存柊缁勬墭鐘舵��
*/
private void updateWaitPakinStatus(String barcode, Long loginUserId) {
- boolean updated = waitPakinService.update(new LambdaUpdateWrapper<WaitPakin>()
- .eq(WaitPakin::getBarcode, barcode)
- .set(WaitPakin::getUpdateBy, loginUserId)
- .set(WaitPakin::getCreateBy, loginUserId)
- .set(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_TASK_EXCE.val));
+ WaitPakin current = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
+ .eq(WaitPakin::getBarcode, barcode));
+ if (Objects.isNull(current)) {
+ throw new CoolException("缁勬墭鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+ }
+ WaitPakin update = new WaitPakin();
+ update.setId(current.getId());
+ update.setVersion(current.getVersion());
+ update.setUpdateBy(loginUserId);
+ update.setCreateBy(loginUserId);
+ update.setIoStatus(PakinIOStatus.PAKIN_IO_STATUS_TASK_EXCE.val);
+ boolean updated = waitPakinService.update(update, new LambdaUpdateWrapper<WaitPakin>()
+ .eq(WaitPakin::getId, current.getId()));
if (!updated) {
throw new CoolException("缁勬墭鐘舵�佷慨鏀瑰け璐ワ紒锛�");
@@ -523,8 +539,7 @@
|| task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)
|| task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)
|| task.getTaskType().equals(TaskType.TASK_TYPE_EMPTY_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type)
- || task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
+ || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type)) {
/**淇敼鍑哄簱绔欑偣鐘舵��*/
BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
.eq(BasStation::getStationName, task.getOrgSite()));
@@ -556,6 +571,10 @@
// throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�");
// }
// }
+ } else if (task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)){
+ //鏌ヨ姝ラ 娓呮婧愬簱浣嶆垨鑰呬腑闂寸珯鐐规暟鎹�
+ //寰呬慨鏀� 鍏堥粯璁ゆ竻闄ゆ簮搴撲綅
+
}
/**鍙栫瀹屾垚锛� 淇敼浠诲姟鐘舵��*/
} else if (params.getEventType().equals(CallBackEvent.CALL_BACK_EVENT_END.event)) {
@@ -573,6 +592,7 @@
if (flowStepInstance.getWmsNextTaskStatus() != 9999) {
FlowStepInstance nextFlowStepInstance = flowStepInstanceService.getOne(new LambdaQueryWrapper<FlowStepInstance>()
.eq(FlowStepInstance::getStatus, (short)0)
+ .eq(FlowStepInstance::getTaskNo, flowStepInstance.getTaskNo())
.eq(FlowStepInstance::getStepOrder, flowStepInstance.getStepOrder() + 1)
.eq(FlowStepInstance::getWmsNowTaskStatus, flowStepInstance.getWmsNextTaskStatus()));
if (Cools.isEmpty(nextFlowStepInstance)) {
@@ -690,7 +710,7 @@
//鍏ュ簱闈犺繎鎽嗘斁
if (ioType == 1 && deviceBind.getBeSimilar().equals("1") && !Cools.isEmpty(matnr) && Cools.isEmpty(orgLoc)) {
if (nearRow != curRow) {
- List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getMatnrCode, matnr));
+ List<LocItem> locItems = locItemMapper.selectList(new LambdaQueryWrapper<LocItem>().eq(LocItem::getMatnrCode, matnr));
for (LocItem locItem : locItems) {
Loc loc1 = locService.getById(locItem.getLocId());
if (LocUtils.isShallowLoc(loc1.getCode())) {
@@ -698,7 +718,7 @@
}
String shallowLocNo = LocUtils.getShallowLoc(loc1.getCode());
// 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣�
- Loc shallowLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLocNo));
+ Loc shallowLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLocNo).last("limit 1"));
if (shallowLoc != null && shallowLoc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
if (LocUtils.locMoveCheckLocTypeComplete(shallowLoc, locTypeDto)) {
loc = shallowLoc;
@@ -738,7 +758,7 @@
DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
.eq(DeviceSite::getType, ioType)
.eq(DeviceSite::getSite, sourceStaNo)
- .eq(DeviceSite::getChannel, channel)
+ .eq(DeviceSite::getChannel, channel).last("limit 1")
);
if (Cools.isEmpty(deviceSite)) {
channel = 0;
@@ -993,8 +1013,8 @@
}
Task one = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, params.getBarcode()));
if (!Cools.isEmpty(one)) {
- if (!one.getTaskStatus().equals(TaskStsType.WCS_EXECUTE_IN.id)) {
- return R.error("浠诲姟宸插瓨鍦ㄤ絾鏄姸鎬佷笉涓�鑷达紒锛侊紒").add("浠诲姟宸插瓨鍦ㄤ絾鏄姸鎬佷笉涓�鑷达紒锛侊紒");
+ if (one.getTaskStatus().equals(TaskStsType.MISSION_TRANSFER.id)) {
+ return R.error("浠诲姟宸插瓨鍦ㄤ絾鏄姸鎬佷笉涓�鑷达紒锛侊紒").add("浠诲姟宸插瓨鍦ㄤ絾鏄姸鎬佷笉涓�鑷达紒锛侊紒浠诲姟宸插畬鎴愶紒锛侊紒");
}
InTaskWcsReportParam inTaskWcsReportParam = new InTaskWcsReportParam();
inTaskWcsReportParam.setTaskNo(one.getTaskCode());
@@ -1079,9 +1099,16 @@
flowStepInstanceService.updateById(flowStepInstance);
taskService.updateById(task);
+ // 鐩樼偣鍐嶅叆搴撲换鍔$粡 WCS 涓婃姤鍙樹负 100锛堝簱瀛樻洿鏂板畬鎴愶級鏃讹紝鍚屾灏嗙洏鐐瑰樊寮傚崟缃负宸插鏍�
+ if (TaskType.TASK_TYPE_CHECK_IN.type.equals(task.getTaskType())
+ && flowStepInstance.getWmsNextTaskStatus() != null
+ && flowStepInstance.getWmsNextTaskStatus().equals(TaskStsType.UPDATED_IN.id)) {
+ taskService.markCheckDiffApprovedWhenCheckInDone(task);
+ }
if (flowStepInstance.getWmsNextTaskStatus() != 9999) {
FlowStepInstance nextFlowStepInstance = flowStepInstanceService.getOne(new LambdaQueryWrapper<FlowStepInstance>()
.eq(FlowStepInstance::getStatus, (short)0)
+ .eq(FlowStepInstance::getTaskNo, flowStepInstance.getTaskNo())
.eq(FlowStepInstance::getStepOrder, flowStepInstance.getStepOrder() + 1)
.eq(FlowStepInstance::getWmsNowTaskStatus, flowStepInstance.getWmsNextTaskStatus()));
if (Cools.isEmpty(nextFlowStepInstance)) {
@@ -1193,3 +1220,4 @@
// return R.ok(JSONObject.toJSONString(params));
}
}
+
--
Gitblit v1.9.1