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