From adcda0ca051a0061acdb77b9632980e81e1cda53 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期六, 10 五月 2025 09:06:44 +0800 Subject: [PATCH] #人工入库 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 84 ++++++++++++++++++++++++++++ rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/PublicToStockParams.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/ManualShelvingParams.java | 26 ++++++++ rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 37 ++++-------- rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java | 3 + rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java | 19 +++++- 7 files changed, 145 insertions(+), 28 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/ManualShelvingParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/ManualShelvingParams.java new file mode 100644 index 0000000..e81563c --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/ManualShelvingParams.java @@ -0,0 +1,26 @@ +package com.vincent.rsf.server.api.controller.params; + +import com.vincent.rsf.server.manager.entity.WaitPakin; +import com.vincent.rsf.server.manager.entity.WaitPakinItem; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +@Data +@Accessors(chain = true) +@ApiModel(value = "ManualShelvingParams", description = "浜哄伐涓婃灦") +public class ManualShelvingParams implements Serializable { + + @ApiModelProperty("搴撲綅缂栫爜") + private String locCode; + + @ApiModelProperty("鎵樼洏鐮�") + private String barcode; + + @ApiModelProperty("鍗曟嵁鏄庣粏") + private List<WaitPakinItem> itemList; +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/PublicToStockParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/PublicToStockParams.java index fdc7b63..bc014a0 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/PublicToStockParams.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/PublicToStockParams.java @@ -1,6 +1,8 @@ package com.vincent.rsf.server.api.controller.params; import com.vincent.rsf.server.manager.entity.AsnOrderItem; +import com.vincent.rsf.server.manager.entity.WaitPakin; +import com.vincent.rsf.server.manager.entity.WaitPakinItem; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java index 4f9e861..71510d6 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java @@ -1,11 +1,16 @@ package com.vincent.rsf.server.api.controller.pda; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.api.controller.params.*; import com.vincent.rsf.server.api.service.MobileService; import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; import com.vincent.rsf.server.manager.entity.QlyIsptItem; +import com.vincent.rsf.server.manager.entity.WaitPakin; +import com.vincent.rsf.server.manager.service.TaskService; +import com.vincent.rsf.server.manager.service.WaitPakinService; import com.vincent.rsf.server.system.controller.BaseController; import com.vincent.rsf.server.system.controller.param.LoginParam; import io.swagger.annotations.Api; @@ -34,6 +39,10 @@ @Autowired private MobileService mobileService; + @Autowired + private TaskService taskService; + @Autowired + private WaitPakinService waitPakinService; /** * PDA鐢ㄦ埛鐧诲綍 * @param param @@ -232,11 +241,15 @@ @ApiOperation("浜哄伐涓婃灦") @PreAuthorize("hasAuthority('manager:qlyInspect:update')") @PostMapping("/stock/operate") - public R publicToStock(@RequestBody PublicToStockParams params) { - if (Objects.isNull(params)) { + public R publicToStock(@RequestBody ManualShelvingParams params) { + if (Cools.isEmpty(params.getItemList()) || Cools.isEmpty(params.getLocCode()) || Cools.isEmpty(params.getBarcode())) { return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); } - return mobileService.publicToStock(params, getLoginUserId()); + WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, params.getBarcode())); + + + return taskService.generateFlatWarehouseTasks(waitPakin, params.getLocCode(), getLoginUserId()); +// return mobileService.publicToStock(params, getLoginUserId()); } @ApiOperation("鑾峰彇浠诲姟淇℃伅") diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java index 4538f27..bf17cb3 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java @@ -656,35 +656,22 @@ @Override public R operateToStock(OpStockParams params) { if (org.apache.commons.lang3.StringUtils.isBlank(params.getBarcode())) { - throw new CoolException("鎷栫洏鐮佷笉鑳戒负绌猴紒锛�"); + throw new CoolException("鎵樼洏鐮佷笉鑳戒负绌猴紒锛�"); } - if (StringUtils.isBlank(params.getAsnCode())) { - throw new CoolException("鍗曟嵁涓嶈兘涓虹┖锛侊紒"); + WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>() + .eq(WaitPakin::getBarcode, params.getBarcode()) + .eq(WaitPakin::getIoStatus,PakinIOStatus.PAKIN_IO_STATUS_DONE.val) + ); + if (Cools.isEmpty(waitPakin)){ + throw new CoolException("鏈壘鍒扮粍鎵樻暟鎹�,璇锋鏌ョ姸鎬�"); } - if (StringUtils.isBlank(params.getMatnrCode())) { - throw new CoolException("鐗╂枡缂栫爜涓嶈兘涓虹┖锛侊紒"); + List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, waitPakin.getId())); + if (Cools.isEmpty(waitPakinItems)){ + throw new CoolException("鏁版嵁閿欒锛屾湭鎵惧埌缁勬墭鏄庣粏"); } - AsnOrder asnOrders = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getCode, params.getAsnCode())); - if (Objects.isNull(asnOrders)) { - throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�"); - } - List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, params.getBarcode())); - if (!locs.isEmpty()) { - throw new CoolException("鎷栫洏宸蹭娇鐢�"); - } - List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, params.getBarcode())); - if (!waitPakins.isEmpty()) { - throw new CoolException("鎷栫洏宸蹭娇鐢�!!"); - } - AsnOrderItem orderItems = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>() - .eq(AsnOrderItem::getAsnId, asnOrders.getId()) - .eq(AsnOrderItem::getMatnrCode, params.getMatnrCode())); - if (Objects.isNull(orderItems)) { - return R.ok(null); - } - orderItems.setBarcode(params.getBarcode()); - return R.ok(orderItems); + + return R.ok(waitPakinItems); } /** 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 0cd1e42..8ee875c 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 @@ -10,6 +10,8 @@ public enum TaskType { TASK_TYPE_IN("1", "鍏ュ簱"), + TASK_TYPE_FLAT_WAREHOUSE_IN("2", "骞冲簱涓婃灦"), + TASK_TYPE_AGV_IN("3", "AGV鍏ュ簱"), TASK_TYPE_EMPITY_IN("10", "绌烘澘鍏ュ簱"), TASK_TYPE_LOC_MOVE("11", "搴撴牸绉昏浇"), TASK_TYPE_PICK_IN("53", "鎷f枡鍐嶅叆搴�"), 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 77ce80e..1b330a1 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 @@ -4,6 +4,7 @@ import com.vincent.rsf.framework.common.R; import com.vincent.rsf.server.manager.controller.params.GenerateTaskParams; import com.vincent.rsf.server.manager.entity.Task; +import com.vincent.rsf.server.manager.entity.WaitPakin; import java.util.List; @@ -11,6 +12,8 @@ R generateTasks(GenerateTaskParams waitPakin, Long loginUserId); + R generateFlatWarehouseTasks(WaitPakin waitPakins,String locCode, Long loginUserId); + // R completeTask(String id); void completeTask(List<Task> task) throws Exception; 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 27169a4..4f9e716 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 @@ -65,6 +65,90 @@ private WarehouseAreasItemService warehouseAreasItemService; + @Override + @Transactional(rollbackFor = Exception.class) + public synchronized R generateFlatWarehouseTasks(WaitPakin pakins,String locCode, Long loginUserId) { + if (Cools.isEmpty(pakins) || Cools.isEmpty(locCode)) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + /**鑾峰彇缁勬嫋*/ +// List<Long> ids = pakins.stream().map(WaitPakin::getId).collect(Collectors.toList()); + List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>() + .in(WaitPakin::getId, pakins.getId()) + .eq(WaitPakin::getIoStatus, Short.parseShort(PakinIOStatus.PAKIN_IO_STATUS_DONE.val))); + if (waitPakins.isEmpty()) { + throw new CoolException("璇锋鏌ョ粍鎵樼姸鎬佹槸鍚﹀畬鎴愶紒锛�"); + } + waitPakins.forEach(pakin -> { + /**鑾峰彇搴撲綅*/ + String targetLoc = locCode; + if (Cools.isEmpty(targetLoc)) { + 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.COMPLETE_IN.id.shortValue()) + .setTaskType(TaskType.TASK_TYPE_FLAT_WAREHOUSE_IN.type.shortValue()) + .setTargLoc(targetLoc) + .setBarcode(pakin.getBarcode()) + .setCreateBy(loginUserId) + .setUpdateBy(loginUserId); + + if (!this.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, pakin.getBarcode()))) { + throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒"); + } + /**鑾峰彇缁勬嫋鏄庣粏**/ + List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, pakin.getId())); + if (waitPakinItems.isEmpty()) { + throw new CoolException("鏁版嵁閿欒锛氱粍鎷栨槑缁嗕笉瀛樺湪"); + } + waitPakinItems.forEach(item -> { + TaskItem taskItem = new TaskItem(); + BeanUtils.copyProperties(item, taskItem); + taskItem.setTaskId(task.getId()) + .setOrderType(OrderType.ORDER_RECEIPT.type) + .setSource(item.getId()) + .setTrackCode(item.getTrackCode()) + .setCreateBy(loginUserId) + .setUpdateBy(loginUserId) + .setExtendFields(item.getExtendFields()) + .setOrderId(item.getAsnId()) + .setOrderItemId(item.getAsnItemId()); + taskItems.add(taskItem); + }); + if (!taskItemService.saveBatch(taskItems)) { + throw new CoolException("浠诲姟鏄庣粏淇濆瓨澶辫触锛侊紒"); + } + waitPakinItems.forEach(item -> { + if (! waitPakinItemService.update(new LambdaUpdateWrapper<WaitPakinItem>() + .set(WaitPakinItem::getWorkQty, item.getAnfme()) + .eq(WaitPakinItem::getId, item.getId()))) { + throw new CoolException("缁勬墭鏄庣粏淇墽琛屾暟閲忎慨鏀瑰け璐ワ紒锛�"); + } + }); + }); + + if (!waitPakinService.update(new LambdaUpdateWrapper<WaitPakin>() + .in(WaitPakin::getId, pakins.getId()) + .set(WaitPakin::getUpdateBy, loginUserId) + .set(WaitPakin::getCreateBy, loginUserId) + .set(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_TASK_EXCE.val))) { + throw new CoolException("缁勬嫋鐘舵�佷慨鏀瑰け璐ワ紒锛�"); + } + return R.ok("浠诲姟鐢熸垚瀹屾瘯锛�"); + } + + /** * @param * @param loginUserId -- Gitblit v1.9.1