From 0a0f8d7480b9ddab9ce7d62dede869ee8c57fe75 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期日, 27 四月 2025 14:12:21 +0800 Subject: [PATCH] #堆垛机生成入库任务ok --- rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 98 ++++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 99 insertions(+), 5 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java index 53139af..2e10cc7 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java @@ -37,7 +37,7 @@ if (Cools.isEmpty(param.getLocType1())){ return R.error("楂樹綆妫�娴嬩俊鍙蜂笉鑳戒负绌�"); } - InTaskMsgDto msgDto = wcsService.createInTask(param); + InTaskMsgDto msgDto = wcsService.createInTask(param,getLoginUserId()); return R.ok(msgDto); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java index d184363..c4ba4e6 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java @@ -12,5 +12,5 @@ private String locNo; - private Integer workNo; + private String workNo; } 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 b691923..433194a 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 @@ -4,5 +4,5 @@ import com.vincent.rsf.server.api.controller.params.TaskInParam; public interface WcsService { - InTaskMsgDto createInTask(TaskInParam param); + InTaskMsgDto createInTask(TaskInParam param, Long loginUserId); } 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 263c812..0d8bd8b 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 @@ -1,22 +1,34 @@ package com.vincent.rsf.server.api.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto; import com.vincent.rsf.server.api.entity.dto.LocTypeDto; import com.vincent.rsf.server.api.controller.params.TaskInParam; +import com.vincent.rsf.server.api.entity.enums.OrderType; +import com.vincent.rsf.server.api.entity.enums.TaskStsType; import com.vincent.rsf.server.api.entity.enums.TaskType; import com.vincent.rsf.server.api.service.WcsService; 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.enums.PakinIOStatus; import com.vincent.rsf.server.manager.service.*; import com.vincent.rsf.server.manager.service.impl.LocServiceImpl; +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.system.utils.SerialRuleUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; +import java.util.Objects; @Service public class WcsServiceImpl implements WcsService { @@ -34,10 +46,92 @@ private SlaveProperties slaveProperties; @Autowired private WarehouseAreasService warehouseAreasService; + @Autowired + private TaskService taskService; + @Autowired + private TaskItemService taskItemService; + @Autowired + private WaitPakinItemService waitPakinItemService; @Override - public InTaskMsgDto createInTask(TaskInParam param) { + public InTaskMsgDto createInTask(TaskInParam param, Long loginUserId) { InTaskMsgDto locNo = getLocNo(param); + DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>() + .eq(DeviceSite::getSite, param.getSourceStaNo()) + .eq(DeviceSite::getType,param.getIoType()) + ); + if (Objects.isNull(deviceSite)) { + throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�"); + } + + WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>() + .eq(WaitPakin::getBarcode, param.getBarcode()) + .eq(WaitPakin::getIoStatus, Short.parseShort(PakinIOStatus.PAKIN_IO_STATUS_DONE.val))); + if (Cools.isEmpty(waitPakin)) { + throw new CoolException("璇锋鏌ョ粍鎷栫姸鎬佹槸鍚﹀畬鎴愶紒锛�"); + } + + List<TaskItem> taskItems = new ArrayList<>(); + String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null); + if (StringUtils.isBlank(ruleCode)) { + throw new CoolException("缂栫爜閿欒锛氳纭缂栫爜銆孲YS_TASK_CODE銆嶆槸鍚﹀凡鐢熸垚!!"); + } + Task task = new Task(); + task.setTaskCode(ruleCode) + .setTaskStatus(TaskStsType.GENERATE_IN.id.shortValue()) + .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue()) + .setTargLoc(locNo.getLocNo()) + .setBarcode(waitPakin.getBarcode()) + .setTargSite(deviceSite.getDeviceSite()) + .setCreateBy(loginUserId) + .setUpdateBy(loginUserId) + .setOrgSite(param.getSourceStaNo().toString()); + + + + + if (!taskService.save(task)) { + throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒"); + } + if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getCode, task.getTargLoc()) + .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_S.type).set(Loc::getBarcode, waitPakin.getBarcode()))) { + throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒"); + } + /**鑾峰彇缁勬嫋鏄庣粏**/ + List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, waitPakin.getId())); + if (waitPakinItems.isEmpty()) { + throw new CoolException("鏁版嵁閿欒锛氱粍鎷栨槑缁嗕笉瀛樺湪"); + } + waitPakinItems.forEach(item -> { + TaskItem taskItem = new TaskItem(); + BeanUtils.copyProperties(item, taskItem); +// AsnOrder order = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, item.getAsnId())); +// if (Objects.isNull(order)) { +// throw new CoolException("鏁版嵁閿欒: 鍗曟嵁涓嶅瓨鍦紒锛�"); +// } + taskItem.setTaskId(task.getId()) + .setOrderType(OrderType.ORDER_RECEIPT.type) + .setSource(item.getId()) + .setTrackCode(item.getTrackCode()) + .setCreateBy(loginUserId) + .setUpdateBy(loginUserId) + .setOrderId(item.getAsnId()) + .setOrderItemId(item.getAsnItemId()); + taskItems.add(taskItem); + }); + if (!taskItemService.saveBatch(taskItems)) { + throw new CoolException("浠诲姟鏄庣粏淇濆瓨澶辫触锛侊紒"); + } + + + if (!waitPakinService.update(new LambdaUpdateWrapper<WaitPakin>() + .eq(WaitPakin::getBarcode, param.getBarcode()) + .set(WaitPakin::getUpdateBy, loginUserId) + .set(WaitPakin::getCreateBy, loginUserId) + .set(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_TASK_EXCE.val))) { + throw new CoolException("缁勬墭鐘舵�佷慨鏀瑰け璐ワ紒锛�"); + } + locNo.setWorkNo(ruleCode); return locNo; } @@ -115,7 +209,7 @@ throw new CoolException("鏃犲彲鐢ㄥ爢鍨涙満"); } //鍏ュ簱闈犺繎鎽嗘斁 - if (ioType== 1 && deviceBind.getBeSimilar().equals("1") && Cools.isEmpty(matnr)) { + if (ioType== 1 && deviceBind.getBeSimilar().equals("1") && !Cools.isEmpty(matnr)) { if (nearRow != curRow) { List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getMatnrCode, matnr)); for (LocItem locItem : locItems) { -- Gitblit v1.9.1