From 10dbf9aae07dcd7c569521613b072088abae1c2e Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 22 五月 2025 17:18:32 +0800
Subject: [PATCH] 库存出库任务联调
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java | 16 ++
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java | 71 +++++----
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java | 19 +-
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehType.java | 4
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskStsType.java | 5
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java | 14 ++
rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java | 4
rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java | 4
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 12 +
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java | 6
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 168 +++++++++++++++--------
rsf-admin/src/page/locItem/LocItemList.jsx | 1
/dev/null | 20 --
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java | 8
rsf-admin/src/page/task/TaskList.jsx | 16 +
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java | 3
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java | 1
rsf-admin/src/i18n/zh.js | 1
rsf-admin/src/i18n/en.js | 1
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java | 5
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java | 4
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java | 12 +
24 files changed, 237 insertions(+), 162 deletions(-)
diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index 84b91fa..25f3cc2 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -987,6 +987,7 @@
wkType: "wkType",
aggType: "Agg Type",
matnrId: "matnrId",
+ wareArea: 'Warehouse Areas',
maktx: "maktx",
matnrCode: "matnrCode",
trackCode: "trackCode",
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index bde1a48..74875e8 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -979,6 +979,7 @@
orderItemId: "鍗曟嵁鏄庣粏ID",
wkType: "涓氬姟绫诲瀷",
aggType: "姹囨�荤被鍨�",
+ wareArea: '搴撳尯',
matnrId: "鐗╂枡ID",
maktx: "鐗╂枡鍚嶇О",
unit: '鍗曚綅',
diff --git a/rsf-admin/src/page/locItem/LocItemList.jsx b/rsf-admin/src/page/locItem/LocItemList.jsx
index 6469f7e..56089d1 100644
--- a/rsf-admin/src/page/locItem/LocItemList.jsx
+++ b/rsf-admin/src/page/locItem/LocItemList.jsx
@@ -160,6 +160,7 @@
const arr = [
<NumberField source="id" />,
<NumberField source="locId" label="table.field.locItem.locId" />,
+ <TextField source="wareArea" label="table.field.locItem.wareArea" />,
<TextField source="locCode" label="table.field.locItem.locCode" />,
<NumberField source="orderId" label="table.field.locItem.orderId" />,
<TextField source="type$" label="table.field.locItem.type" />,
diff --git a/rsf-admin/src/page/task/TaskList.jsx b/rsf-admin/src/page/task/TaskList.jsx
index f4fd8d1..81b19c1 100644
--- a/rsf-admin/src/page/task/TaskList.jsx
+++ b/rsf-admin/src/page/task/TaskList.jsx
@@ -186,13 +186,19 @@
const record = useRecordContext();
const notify = useNotify();
const refresh = useRefresh();
-
- const pickClick = () => {
-
+
+ const pickClick = async () => {
+ const { data: { code, data, msg } } = await request.post(`/task/pick/` + record.id);
+ if (code === 200) {
+ notify(msg);
+ refresh();
+ } else {
+ notify(msg);
+ }
}
return (
- record?.taskStatus == 103 ? <ConfirmButton label={"toolbar.pick"} startIcon={<ColorizeOutlinedIcon />} onConfirm={pickClick}/> : <></>
+ record?.taskStatus == 198 ? <ConfirmButton label={"toolbar.pick"} startIcon={<ColorizeOutlinedIcon />} onConfirm={pickClick} /> : <></>
)
}
@@ -219,7 +225,7 @@
}
}
return (
- record?.taskStatus < 98 ? (<ConfirmButton label={"toolbar.complete"} color="secondary" startIcon={<TaskAltIcon />} onConfirm={clickComplete} />) : (<></>)
+ ((record?.taskStatus < 98) || (record?.taskType > 101 && record?.taskStatus < 198)) ? (<ConfirmButton label={"toolbar.complete"} color="secondary" startIcon={<TaskAltIcon />} onConfirm={clickComplete} />) : (<></>)
)
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java
index 0048a4d..d80943f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java
@@ -7,4 +7,6 @@
InTaskMsgDto createInTask(TaskInParam param);
void agvTaskPickUpComplete(TaskInParam param);
+
+ InTaskMsgDto getLocNo(TaskInParam param);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
index b697fc6..117d58e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
@@ -1,7 +1,5 @@
package com.vincent.rsf.server.api.service.impl;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.common.Cools;
@@ -9,8 +7,8 @@
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.service.AgvService;
import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.LocStsType;
import com.vincent.rsf.server.manager.enums.PakinIOStatus;
-import com.vincent.rsf.server.manager.enums.StaUseStatusType;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.manager.utils.LocManageUtil;
import org.springframework.beans.factory.annotation.Autowired;
@@ -18,7 +16,6 @@
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -56,7 +53,7 @@
}
BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
.eq(BasStation::getStationName, sta)
- .eq(BasStation::getUseStatus,StaUseStatusType.TYPE_O.type)
+ .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
);
if (Cools.isEmpty(basStation)){
throw new CoolException("鏈壘鍒版帴椹崇珯鐐逛俊鎭紝璇锋鏌ョ珯鐐圭姸鎬�");
@@ -97,7 +94,7 @@
}
BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
.eq(BasStation::getStationName, sta)
- .eq(BasStation::getUseStatus,StaUseStatusType.TYPE_F.type)
+ .eq(BasStation::getUseStatus,LocStsType.LOC_STS_TYPE_F.type)
);
if (Cools.isEmpty(basStation)){
throw new CoolException("鏈壘鍒版帴椹崇珯鐐逛俊鎭紝璇锋鏌ョ珯鐐圭姸鎬�");
@@ -116,7 +113,7 @@
taskService.generateAGVTasks(waitPakin,targetLoc,sta,loginUserId);
- basStation.setUseStatus(StaUseStatusType.TYPE_R.type);
+ basStation.setUseStatus(LocStsType.LOC_STS_TYPE_R.type);
if (!basStationService.updateById(basStation)){
throw new CoolException("鏇存柊绔欑偣鐘舵�佸け璐�");
}
@@ -136,7 +133,7 @@
}
BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
.eq(BasStation::getStationName, sta)
- .eq(BasStation::getUseStatus,StaUseStatusType.TYPE_F.type)
+ .eq(BasStation::getUseStatus,LocStsType.LOC_STS_TYPE_F.type)
);
if (Cools.isEmpty(basStation)){
throw new CoolException("鏈壘鍒版帴椹崇珯鐐逛俊鎭紝璇锋鏌ョ珯鐐圭姸鎬�");
@@ -152,7 +149,7 @@
throw new CoolException("鏈壘鍒扮粍鎵樻暟鎹�,璇锋鏌ョ姸鎬�");
}
basStation.setBarcode(null);
- basStation.setUseStatus(StaUseStatusType.TYPE_O.type);
+ basStation.setUseStatus(LocStsType.LOC_STS_TYPE_O.type);
if (!basStationService.updateById(basStation)){
throw new CoolException("鏇存柊绔欑偣鐘舵�佸け璐�");
}
@@ -169,7 +166,7 @@
}
BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
.eq(BasStation::getStationName, sta)
- .eq(BasStation::getUseStatus,StaUseStatusType.TYPE_F.type)
+ .eq(BasStation::getUseStatus,LocStsType.LOC_STS_TYPE_F.type)
);
if (Cools.isEmpty(basStation)){
throw new CoolException("鏈壘鍒版帴椹崇珯鐐逛俊鎭紝璇锋鏌ョ珯鐐圭姸鎬�");
@@ -219,7 +216,7 @@
//楠岃瘉鍩虹淇℃伅
BasStation basStation = checkStaStatus(barcode, sta);
//鏇存柊绔欑偣鐘舵��
- basStation.setUseStatus(StaUseStatusType.TYPE_F.type);
+ basStation.setUseStatus(LocStsType.LOC_STS_TYPE_F.type);
basStation.setBarcode(barcode);
if (!basStationService.updateById(basStation)){
throw new CoolException("鏇存柊绔欑偣鐘舵�佸け璐�");
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 325480d..1ccabdd 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
@@ -15,7 +15,7 @@
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.manager.service.impl.LocServiceImpl;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
-import com.vincent.rsf.server.system.enums.LocStsType;
+import com.vincent.rsf.server.manager.enums.LocStsType;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -74,7 +74,7 @@
task.setTaskStatus(TaskStsType.WCS_EXECUTE_OUT_TOTE_LOAD.id);
taskService.updateById(task);
- basStation.setUseStatus(StaUseStatusType.TYPE_O.type);
+ basStation.setUseStatus(LocStsType.LOC_STS_TYPE_O.type);
basStation.setBarcode(null);
basStationService.updateById(basStation);
@@ -164,8 +164,8 @@
String targetSite, String sourceSiteNo, Long loginUserId) {
Task task = new Task();
task.setTaskCode(ruleCode)
- .setTaskStatus(TaskStsType.GENERATE_IN.id.shortValue())
- .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue())
+ .setTaskStatus(TaskStsType.GENERATE_IN.id)
+ .setTaskType(TaskType.TASK_TYPE_IN.type)
.setWarehType(WarehType.WAREHOUSE_TYPE_CRN.id)
.setTargLoc(targetLoc)
.setBarcode(barcode)
@@ -327,6 +327,7 @@
// locNo.setWorkNo(ruleCode);
// return locNo;
// }
+ @Override
public InTaskMsgDto getLocNo(TaskInParam param) {
String matnr = null;
String batch = null;
@@ -363,6 +364,9 @@
case "CTU": //ctu
dto = getLocNoCtu(deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType());
break;
+ default:
+ dto = getLocNoCtu(deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType());
+ break;
}
return dto;
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java
index ce8d052..a84cdc8 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java
@@ -1,6 +1,5 @@
package com.vincent.rsf.server.manager.controller;
-import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -12,7 +11,7 @@
import com.vincent.rsf.server.common.domain.KeyValVo;
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.manager.entity.BasStation;
-import com.vincent.rsf.server.manager.enums.StaUseStatusType;
+import com.vincent.rsf.server.manager.enums.LocStsType;
import com.vincent.rsf.server.manager.service.BasStationService;
import com.vincent.rsf.server.system.controller.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
@@ -114,7 +113,7 @@
if (null != basStation.getContainerTypes() && !basStation.getContainerTypes().isEmpty()){
basStation.setContainerType(basStation.getContainerTypes().toString());
}
- if (null !=basStation.getUseStatus() && basStation.getUseStatus().equals(StaUseStatusType.TYPE_O.type)){
+ if (null !=basStation.getUseStatus() && basStation.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)){
basStation.setBarcode(null);
}
if (!basStationService.updateById(basStation)) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java
index e06bb8b..fde9e27 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java
@@ -12,10 +12,9 @@
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.common.utils.FieldsUtils;
import com.vincent.rsf.server.manager.entity.LocItem;
-import com.vincent.rsf.server.manager.entity.WarehouseAreasItem;
import com.vincent.rsf.server.manager.service.LocItemService;
import com.vincent.rsf.server.system.controller.BaseController;
-import com.vincent.rsf.server.system.enums.LocStsType;
+import com.vincent.rsf.server.manager.enums.LocStsType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
index d82bcf5..7e7ae8a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
@@ -14,9 +14,8 @@
import com.vincent.rsf.server.common.domain.KeyValVo;
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.manager.service.*;
-import com.vincent.rsf.server.manager.service.impl.BasStationServiceImpl;
import com.vincent.rsf.server.system.controller.BaseController;
-import com.vincent.rsf.server.system.enums.LocStsType;
+import com.vincent.rsf.server.system.service.impl.ConfigServiceImpl;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -37,6 +36,8 @@
private WaitPakinService waitPakinService;
@Autowired
private LocService locService;
+ @Autowired
+ private ConfigServiceImpl configService;
@PreAuthorize("hasAuthority('manager:task:list')")
@@ -130,8 +131,9 @@
if (Objects.isNull(id)) {
throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
- List<Short> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
+ List<Integer> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getId, id).in(Task::getTaskStatus, longs));
+
for (Task task : tasks) {
task.setTaskStatus(task.getTaskType() < (short) 100 ? TaskStsType.COMPLETE_IN.id : TaskStsType.COMPLETE_OUT.id);
}
@@ -154,7 +156,7 @@
throw new CoolException("鑳芥暟涓嶈兘涓虹┖锛侊紒");
}
try {
- return taskService.pickTask(id);
+ return R.ok(taskService.pickTask(id));
} catch (Exception e) {
throw new CoolException(e.getMessage());
}
@@ -177,7 +179,7 @@
if (Objects.isNull(id)) {
throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
- List<Short> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
+ List<Integer> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getId, id).in(Task::getTaskStatus, longs));
if (tasks.isEmpty()) {
throw new CoolException("浠诲姟宸插鎵ц鐘舵�佷笉鍙竴閿疆椤讹紒锛�");
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
index 3247606..dd072f1 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
@@ -7,6 +7,8 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.vincent.rsf.server.manager.service.LocService;
+import com.vincent.rsf.server.manager.service.WarehouseAreasService;
import com.vincent.rsf.server.system.constant.DictTypeCode;
import com.vincent.rsf.server.system.entity.DictData;
import com.vincent.rsf.server.system.service.DictDataService;
@@ -289,6 +291,18 @@
// null // 澶囨敞
// );
+ public String getWareArea(){
+ if (Cools.isEmpty(this.locId)){
+ return "";
+ }
+ LocService locService = SpringUtils.getBean(LocService.class);
+ Loc loc = locService.getById(this.locId);
+ if (Objects.isNull(loc)) {
+ return null;
+ }
+ return loc.getAreaId$();
+ }
+
public String getType$(){
if (Cools.isEmpty(this.type)){
return "";
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java
index 1dbf238..7c7ddbf 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java
@@ -194,7 +194,6 @@
* 鏄惁鍒犻櫎 1: 鏄� 0: 鍚�
*/
@ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ")
- @TableLogic
private Integer deleted;
/**
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
index b64b727..41762dc 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
@@ -54,19 +54,19 @@
* 浠诲姟鐘舵��
*/
@ApiModelProperty(value= "浠诲姟鐘舵��")
- private Short taskStatus;
+ private Integer taskStatus;
@ApiModelProperty("涓婄骇浠诲姟ID")
private Long parentId;
@ApiModelProperty("浠撳簱绫诲瀷")
- private Short warehType;
+ private Integer warehType;
/**
* 浠诲姟绫诲瀷
*/
@ApiModelProperty(value= "浠诲姟绫诲瀷")
- private Short taskType;
+ private Integer taskType;
/**
* 婧愬簱浣�
@@ -196,7 +196,7 @@
public Task() {}
- public Task(String taskCode,Short taskStatus,Short taskType,String orgLoc,String targLoc,String barcode,String robotCode,Short exceStatus,String expDesc,Short sort,String expCode,Date startTime,Date endTime,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+ public Task(String taskCode,Integer taskStatus,Integer taskType,String orgLoc,String targLoc,String barcode,String robotCode,Short exceStatus,String expDesc,Short sort,String expCode,Date startTime,Date endTime,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
this.taskCode = taskCode;
this.taskStatus = taskStatus;
this.taskType = taskType;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java
index 1dec3f3..e58ebac 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java
@@ -62,13 +62,13 @@
* 浠诲姟鐘舵��
*/
@ApiModelProperty(value= "浠诲姟鐘舵��")
- private Short taskStatus;
+ private Integer taskStatus;
/**
* 浠诲姟绫诲瀷
*/
@ApiModelProperty(value= "浠诲姟绫诲瀷")
- private Short taskType;
+ private Integer taskType;
/**
* 婧愬簱浣�
@@ -186,7 +186,7 @@
public TaskLog() {}
- public TaskLog(Long taskId,String taskCode,Short taskStatus,Short taskType,String orgLoc,String targLoc,String barcode,String robotCode,Short exceStatus,String expDesc,Short sort,String expCode,Date startTime,Date endTime,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+ public TaskLog(Long taskId,String taskCode,Integer taskStatus,Integer taskType,String orgLoc,String targLoc,String barcode,String robotCode,Short exceStatus,String expDesc,Short sort,String expCode,Date startTime,Date endTime,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
this.taskId = taskId;
this.taskCode = taskCode;
this.taskStatus = taskStatus;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/enums/LocStsType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java
similarity index 95%
rename from rsf-server/src/main/java/com/vincent/rsf/server/system/enums/LocStsType.java
rename to rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java
index 2427b9e..e172e0b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/enums/LocStsType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java
@@ -1,4 +1,4 @@
-package com.vincent.rsf.server.system.enums;
+package com.vincent.rsf.server.manager.enums;
public enum LocStsType {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/StaUseStatusType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/StaUseStatusType.java
deleted file mode 100644
index 6aec967..0000000
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/StaUseStatusType.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.vincent.rsf.server.manager.enums;
-
-public enum StaUseStatusType {
- //璁㈠崟绫诲瀷
- TYPE_O("O", "绌洪棽"),
- TYPE_F("F", "鍗犵敤"),
- TYPE_S("S", "棰勭害鍏ョ珯"),
- TYPE_R("R", "棰勭害鍑虹珯"),
- TYPE_X("X", "绂佺敤"),
-
- ;
-
- StaUseStatusType(String type, String desc) {
- this.type = type;
- this.desc = desc;
- }
-
- public String type;
- public String desc;
-}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskStsType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskStsType.java
index fdadc82..1208abd 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskStsType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskStsType.java
@@ -41,14 +41,15 @@
WAVE_SEED("198", "鎾涓�"),
COMPLETE_OUT("199", "鍑哄簱瀹屾垚"),
+
UPDATED_OUT("200", "搴撳瓨鏇存柊瀹屾垚"),
;
- public Short id;
+ public Integer id;
public String desc;
TaskStsType(String id, String desc) {
- this.id = Short.parseShort(id);
+ this.id = Integer.parseInt(id);
this.desc = desc;
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java
index 8e01b64..145dd7d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java
@@ -21,11 +21,11 @@
TASK_TYPE_CHECK_OUT("107", "鐩樼偣鍑哄簱"),
TASK_TYPE_EMPITY_OUT("110", "绌烘澘鍑哄簱"),
;
- public Short type;
+ public Integer type;
public String desc;
TaskType(String type, String desc) {
- this.type = Short.parseShort(type);
+ this.type = Integer.parseInt(type);
this.desc = desc;
}
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehType.java
index 0d3e77c..6fb0db4 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehType.java
@@ -10,11 +10,11 @@
WAREHOUSE_TYPE_CRN("5", "鍫嗗灈鏈哄簱"),
;
- public Short id;
+ public Integer id;
public String desc;
WarehType(String id, String desc) {
- this.id = Short.parseShort(id);
+ this.id = Integer.parseInt(id);
this.desc = desc;
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
index 2a17919..f35c3ab 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -16,6 +16,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -48,21 +49,22 @@
private LocService locService;
@Autowired
private ConfigService configService;
+
/**
- * @author Ryan
- * @description 瀹屾垚鍏ュ簱锛屾洿鏂板簱瀛�
- * @param
- * @return
- * @time 2025/4/2 12:37
- */
+ * @param
+ * @return
+ * @author Ryan
+ * @description 瀹屾垚鍏ュ簱锛屾洿鏂板簱瀛�
+ * @time 2025/4/2 12:37
+ */
@Scheduled(cron = "0/3 * * * * ?")
- @Transactional(rollbackFor = Exception.class)
+// @Transactional(rollbackFor = Exception.class)
public void completeInStock() throws Exception {
List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id));
if (tasks.isEmpty()) {
return;
}
- taskService.completeTask(tasks);
+ taskService.complateInTask(tasks);
}
/**
@@ -71,7 +73,7 @@
* @description: 瀹屾垚鍑哄簱浠诲姟锛屾洿鏂板簱瀛�
* @version 1.0
*/
- @Scheduled(cron = "0/5 * * * * ?")
+ @Scheduled(cron = "0/30 * * * * ? ")
@Transactional(rollbackFor = Exception.class)
public void complateOutStock() throws Exception {
List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskStatus, TaskStsType.COMPLETE_OUT.id));
@@ -82,12 +84,12 @@
}
/**
- * @author Ryan
- * @description 宸插畬鎴愪换鍔″姞鍏ュ巻鍙叉。
- * @param
- * @return
- * @time 2025/4/3 12:54
- */
+ * @param
+ * @return
+ * @author Ryan
+ * @description 宸插畬鎴愪换鍔″姞鍏ュ巻鍙叉。
+ * @time 2025/4/3 12:54
+ */
@Scheduled(cron = "0 0/05 * * * ? ")
@Transactional(rollbackFor = Exception.class)
public void taskLogUpdate() {
@@ -113,32 +115,37 @@
return;
}
- List<TaskLog> taskLogs = new ArrayList<>();
+ Map<Long, List<TaskItem>> listMap = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getTaskId));
+
tasks.forEach(task -> {
TaskLog taskLog = new TaskLog();
BeanUtils.copyProperties(task, taskLog);
- taskLog.setTaskId(task.getId()).setId(null);
- taskLogs.add(taskLog);
- });
- if (!taskLogService.saveBatch(taskLogs)) {
- throw new CoolException("浠诲姟鍘嗗彶妗d繚瀛樺け璐ワ紒锛�");
- }
- List<TaskItemLog >itemLogs = new ArrayList<>();
+ taskLog.setTaskId(task.getId())
+ .setId(null);
+ if (!taskLogService.save(taskLog)) {
+ throw new CoolException("浠诲姟鍘嗗彶妗d繚瀛樺け璐ワ紒锛�");
+ }
- taskItems.forEach(item -> {
- TaskItemLog itemLog = new TaskItemLog();
- BeanUtils.copyProperties(item, itemLog);
- itemLog.setId(null).setTaskItemId(item.getId());
- itemLogs.add(itemLog);
- });
+ List<TaskItemLog> itemLogs = new ArrayList<>();
+ for (TaskItem item : listMap.get(task.getId())) {
+ TaskItemLog itemLog = new TaskItemLog();
+ BeanUtils.copyProperties(item, itemLog);
+ itemLog.setId(null)
+ .setTaskId(task.getId())
+ .setLogId(taskLog.getId())
+ .setTaskItemId(item.getId());
+ itemLogs.add(itemLog);
+ }
- if (!taskItemLogService.saveBatch(itemLogs)) {
- throw new CoolException("浠诲姟鏄庣粏鍘嗗彶妗d繚瀛樺け璐ワ紒锛�");
- }
+ if (!taskItemLogService.saveBatch(itemLogs)) {
+ throw new CoolException("浠诲姟鏄庣粏鍘嗗彶妗d繚瀛樺け璐ワ紒锛�");
+ }
+ });
if (!taskService.removeByIds(list)) {
throw new CoolException("鍘熷浠诲姟鍒犻櫎澶辫触锛侊紒");
}
+
List<Long> itemIds = taskItems.stream().map(TaskItem::getId).collect(Collectors.toList());
if (!taskItemService.removeByIds(itemIds)) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
index 439c441..257f8c5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
@@ -21,5 +21,7 @@
R removeTask(Long[] ids);
- R pickTask(Long id) throws Exception;
+ Task pickTask(Long id) throws Exception;
+
+ void complateInTask(List<Task> tasks) throws Exception;
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
index 6bb75cf..8da880e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -18,9 +18,11 @@
import com.vincent.rsf.server.manager.service.TaskService;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
+import lombok.Synchronized;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@@ -48,6 +50,8 @@
* @return
*/
@Override
+ @Synchronized
+ @Transactional(rollbackFor = Exception.class)
public R generateTask(Map<String, Object> map) {
if (Objects.isNull(map.get("siteNo"))) {
throw new CoolException("绔欑偣涓嶈兘涓虹┖锛�");
@@ -64,6 +68,12 @@
if (Objects.isNull(loc)) {
throw new CoolException("鏁版嵁閿欒锛氭墍閫夊簱瀛樹俊鎭笉瀛樺湪锛侊紒");
}
+ loc.setUseStatus(LocStsType.LOC_STS_TYPE_R.type);
+
+ if (!locService.updateById(loc)) {
+ throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐ワ紒锛�");
+ }
+
String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null);
task.setOrgLoc(loc.getCode())
.setTaskCode(ruleCode)
@@ -80,6 +90,12 @@
List<LocItem> locItemList = listMap.get(key);
Double outQty = locItemList.stream().mapToDouble(LocItem::getOutQty).sum();
+
+ Task serviceOne = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, loc.getBarcode()));
+ if (!Objects.isNull(serviceOne)) {
+ throw new CoolException("鎵樼洏浠诲姟鎵ц涓紝涓嶈兘閲嶅鍒涘缓锛�");
+ }
+
if (orgQty.compareTo(outQty) > 0) {
//鎷f枡鍑哄簱
task.setTaskType(TaskType.TASK_TYPE_PICK_AGAIN_IN.type);
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index 10de96f..ad363be 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -4,19 +4,21 @@
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.server.api.controller.params.TaskInParam;
+import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto;
+import com.vincent.rsf.server.api.service.WcsService;
import com.vincent.rsf.server.manager.enums.*;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.utils.LocUtils;
import com.vincent.rsf.server.manager.controller.params.GenerateTaskParams;
import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.LocType;
import com.vincent.rsf.server.manager.mapper.TaskMapper;
import com.vincent.rsf.server.manager.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vincent.rsf.server.manager.utils.LocManageUtil;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
-import com.vincent.rsf.server.system.enums.LocStsType;
-import com.vincent.rsf.server.manager.enums.LocType;
+import com.vincent.rsf.server.manager.enums.LocStsType;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import lombok.Synchronized;
import org.apache.commons.lang3.StringUtils;
@@ -69,6 +71,8 @@
private TaskService taskService;
@Autowired
private LocItemWorkingService locItemWorkingService;
+ @Autowired
+ private WcsService wcsService;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -98,8 +102,8 @@
}
Task task = new Task();
task.setTaskCode(ruleCode)
- .setTaskStatus(TaskStsType.GENERATE_IN.id.shortValue())
- .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue())
+ .setTaskStatus(TaskStsType.GENERATE_IN.id)
+ .setTaskType(TaskType.TASK_TYPE_IN.type)
.setWarehType(WarehType.WAREHOUSE_TYPE_AGV.id)
.setTargLoc(targetLoc)
.setOrgSite(orgSta)
@@ -184,8 +188,8 @@
}
Task task = new Task();
task.setTaskCode(ruleCode)
- .setTaskStatus(TaskStsType.COMPLETE_IN.id.shortValue())
- .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue())
+ .setTaskStatus(TaskStsType.COMPLETE_IN.id)
+ .setTaskType(TaskType.TASK_TYPE_IN.type)
.setWarehType(WarehType.WAREHOUSE_TYPE_PLAT.id)
.setTargLoc(targetLoc)
.setBarcode(pakin.getBarcode())
@@ -291,8 +295,8 @@
}
Task task = new Task();
task.setTaskCode(ruleCode)
- .setTaskStatus(TaskStsType.GENERATE_IN.id.shortValue())
- .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue())
+ .setTaskStatus(TaskStsType.GENERATE_IN.id)
+ .setTaskType(TaskType.TASK_TYPE_IN.type)
.setTargLoc(targetLoc)
.setBarcode(pakin.getBarcode())
.setOrgSite(deviceSite.getSite())
@@ -373,6 +377,28 @@
}
/**
+ * 鍏ュ簱浠诲姟
+ *
+ * @param tasks
+ * @throws Exception
+ */
+ @Synchronized
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void complateInTask(List<Task> tasks) throws Exception {
+ for (Task task : tasks) {
+ if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)) {
+ //1.鍏ュ簱
+ complateInstock(task);
+ } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)) {
+ //53.鎷f枡鍐嶅叆搴�
+ pickComplateInStock(task);
+ }
+ }
+ }
+
+
+ /**
* 瀹屾垚浠诲姟 鏇存柊搴撲綅鏄庣粏淇℃伅锛屽皢鍗曟嵁搴撳瓨鏇存柊鍒板崟鎹簱瀛樿〃
*
* @param tasks
@@ -384,25 +410,14 @@
public void completeTask(List<Task> tasks) throws Exception {
for (Task task : tasks) {
//鍑哄簱浠诲姟
- if (task.getTaskType() < TaskType.TASK_TYPE_OUT.type) {
- if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)) {
- //1.鍏ュ簱
- complateInstock(task);
- } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)) {
- //53.鎷f枡鍐嶅叆搴�
- pickComplateInStock(task);
- }
- } else {
- //鍑哄簱浠诲姟
- if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)) {
- //鍏ㄦ墭鍑哄簱
- complateOutStock(task);
- } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_IN.type)) {
- //鎷f枡鍑哄簱
- pickTask(task.getId());
- //绉婚櫎鍘熷搴撳瓨
- complateOutStock(task);
- }
+ if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)) {
+ //鍏ㄦ墭鍑哄簱
+ complateOutStock(task);
+ } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_IN.type)) {
+ //鎷f枡鍑哄簱
+// Task seviceOne = pickTask(task.getId());
+ //绉婚櫎鍘熷搴撳瓨
+ complateOutStock(task);
}
}
}
@@ -439,11 +454,7 @@
for (TaskItem taskItem : taskItems) {
LocItem locItem = new LocItem();
LocItemWorking locWorking = locItemWorkingService.getOne(new LambdaQueryWrapper<LocItemWorking>()
- .eq(LocItemWorking::getTaskId, taskItem.getTaskId())
- .eq(LocItemWorking::getLocCode, task.getTargLoc())
- .eq(LocItemWorking::getMatnrId, taskItem.getMatnrId())
- .eq(StringUtils.isNoneBlank(taskItem.getFieldsIndex()), LocItemWorking::getFieldsIndex, taskItem.getFieldsIndex())
- .eq(StringUtils.isNotBlank(taskItem.getBatch()), LocItemWorking::getBatch, taskItem.getBatch()));
+ .eq(LocItemWorking::getTaskId, taskItem.getTaskId()));
if (Objects.isNull(locWorking)) {
throw new CoolException("鏁版嵁閿欒锛屼綔涓氫腑搴撳瓨鏁版嵁涓㈠け锛侊紒");
}
@@ -466,6 +477,12 @@
throw new CoolException("浣滀笟涓簱瀛樺垹闄ゅけ璐ワ紒锛�");
}
+ task.setTaskStatus(TaskStsType.UPDATED_IN.id);
+
+ if (!taskService.updateById(task)) {
+ throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+ }
+
}
/**
@@ -476,7 +493,7 @@
*/
@Override
public R removeTask(Long[] ids) {
- List<Short> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
+ List<Integer> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
List<Task> tasks = this.list(new LambdaQueryWrapper<Task>().in(Task::getId, ids).in(Task::getTaskStatus, longs));
if (tasks.isEmpty()) {
throw new CoolException("浠诲姟宸插鎵ц鐘舵�佷笉鍙彇娑堬紒锛�");
@@ -507,7 +524,7 @@
if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type) || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)) {
basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
.eq(BasStation::getStationName, task.getOrgSite())
- .eq(BasStation::getUseStatus, StaUseStatusType.TYPE_R.type)
+ .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_R.type)
);
} else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)
|| task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_IN.type)
@@ -517,13 +534,13 @@
) {
basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
.eq(BasStation::getStationName, task.getTargLoc())
- .eq(BasStation::getUseStatus, StaUseStatusType.TYPE_R.type)
+ .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_R.type)
);
}
if (null == basStation) {
throw new CoolException("绔欑偣鐘舵�侀敊璇紒锛�");
}
- basStation.setUseStatus(StaUseStatusType.TYPE_F.type);
+ basStation.setUseStatus(LocStsType.LOC_STS_TYPE_F.type);
if (!basStationService.updateById(basStation)) {
throw new CoolException("鏇存柊绔欑偣鐘舵�佸け璐ワ紒锛�");
}
@@ -544,7 +561,7 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public R pickTask(Long id) throws Exception {
+ public Task pickTask(Long id) throws Exception {
Task task = this.getById(id);
if (Objects.isNull(task)) {
throw new CoolException("褰撳墠浠诲姟涓嶅瓨鍦紒锛�");
@@ -559,41 +576,38 @@
throw new CoolException("娌℃湁绌哄簱浣嶏紒锛�");
}
- List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId()));
- if (locItems.isEmpty()) {
- throw new CoolException("搴撲綅鏄庣粏涓嶅瓨鍦紒锛�");
- }
-
String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, task);
//鏇存柊浠诲姟涓诲崟
task.setTaskCode(ruleCode)
.setTaskType(TaskType.TASK_TYPE_PICK_IN.type)
.setBarcode(task.getBarcode())
.setTaskStatus(TaskStsType.GENERATE_IN.id);
- //TODO 鍚庣画闇�鏍规嵁浠撳簱绫诲瀷鏌ユ壘鏂板簱浣嶏紝鍘熷搴撲綅缃┖闂茬姸鎬� {
- // TaskInParam param = new TaskInParam();
- // param.setSourceStaNo(Integer.parseInt(task.getOrgSite()))
- // .setIoType(Integer.parseInt(TaskType.TASK_TYPE_IN.type + ""));
- //// .setLocType1(LocType.LOC_TYPE_LOW.type);}
+
+ TaskInParam param = new TaskInParam();
+ param.setSourceStaNo(Integer.parseInt(task.getTargSite()))
+ .setIoType(Integer.parseInt(TaskType.TASK_TYPE_PICK_IN.type + ""))
+ .setLocType1(Integer.parseInt(loc.getType()));
+ InTaskMsgDto locInfo = wcsService.getLocNo(param);
+
+ if (Objects.isNull(locInfo)) {
+ throw new CoolException("鑾峰彇搴撲綅澶辫触锛侊紒");
+ }
+ task.setTargLoc(locInfo.getLocNo());
if (!this.updateById(task)) {
throw new CoolException("浠诲姟鐘舵�佹洿鏂板け璐ワ紒锛�");
}
-
- List<LocItemWorking> workings = new ArrayList<>();
- for (LocItem item : locItems) {
- LocItemWorking working = new LocItemWorking();
- BeanUtils.copyProperties(item, working);
- working.setId(null).setTaskId(task.getId());
- workings.add(working);
+ Loc one = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getTargLoc()));
+ if (Objects.isNull(one)) {
+ throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦紒锛�");
}
+ one.setUseStatus(LocStsType.LOC_STS_TYPE_S.type);
- if (!locItemWorkingService.saveBatch(workings)) {
- throw new CoolException("涓存椂搴撳瓨淇濆瓨澶辫触锛侊紒");
+ if (!locService.updateById(one)) {
+ throw new CoolException("搴撲綅棰勭害鍏ュ簱澶辫触锛侊紒");
}
-
- return R.ok("鎷h揣鎴愬姛锛侊紒");
+ return task;
}
/**
@@ -620,6 +634,24 @@
if (taskItems.isEmpty()) {
throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦紒锛�");
}
+
+ List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId()));
+ if (locItems.isEmpty()) {
+ throw new CoolException("搴撲綅鏄庣粏涓嶅瓨鍦紒锛�");
+ }
+
+ List<LocItemWorking> workings = new ArrayList<>();
+ for (LocItem item : locItems) {
+ LocItemWorking working = new LocItemWorking();
+ BeanUtils.copyProperties(item, working);
+ working.setId(null).setTaskId(task.getId());
+ workings.add(working);
+ }
+
+ if (!locItemWorkingService.saveBatch(workings)) {
+ throw new CoolException("涓存椂搴撳瓨淇濆瓨澶辫触锛侊紒");
+ }
+
try {
//鏇存柊搴撲綅鏄庣粏
subtractLocItem(loc);
@@ -656,12 +688,26 @@
}
/**淇敼涓哄簱浣嶇姸鎬佷负O.绌哄簱*/
- if (!locService.update(new LambdaUpdateWrapper<Loc>().set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type).eq(Loc::getCode, loc.getId()))) {
+ if (!locService.update(new LambdaUpdateWrapper<Loc>()
+ .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
+ .eq(Loc::getId, loc.getId()))) {
throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
}
- if (!this.update(new LambdaUpdateWrapper<Task>().eq(Task::getId, task.getId()).set(Task::getTaskStatus, TaskStsType.UPDATED_OUT.id))) {
- throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+
+ if (!task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_IN.type)) {
+ if (!this.update(new LambdaUpdateWrapper<Task>()
+ .eq(Task::getId, task.getId())
+ .set(Task::getTaskStatus, TaskStsType.UPDATED_OUT.id))) {
+ throw new CoolException("搴撳瓨鐘舵�佹洿鏂板け璐ワ紒锛�");
+ }
+ } else {
+ if (!this.update(new LambdaUpdateWrapper<Task>()
+ .eq(Task::getId, task.getId())
+ .set(Task::getTaskStatus, TaskStsType.WAVE_SEED.id))) {
+ throw new CoolException("搴撳瓨鐘舵�佹洿鏂板け璐ワ紒锛�");
+ }
}
+
}
/**
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
index 30256bf..c4dcabd 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
@@ -2,13 +2,11 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.common.SpringUtils;
-import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.manager.entity.DeviceSite;
import com.vincent.rsf.server.manager.entity.Loc;
import com.vincent.rsf.server.manager.service.DeviceSiteService;
import com.vincent.rsf.server.manager.service.LocService;
-import com.vincent.rsf.server.system.enums.LocStsType;
-import org.apache.commons.lang3.StringUtils;
+import com.vincent.rsf.server.manager.enums.LocStsType;
import java.util.Objects;
--
Gitblit v1.9.1