From 10a43f2d14a1a161bc624b9fe2f70febc9776ac8 Mon Sep 17 00:00:00 2001 From: skyouc <958836976@qq.com> Date: 星期五, 05 九月 2025 09:42:19 +0800 Subject: [PATCH] 1 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 175 ++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 110 insertions(+), 65 deletions(-) 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 b269e33..d299f77 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 @@ -3,7 +3,7 @@ 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.server.api.controller.params.TaskInParam; +import com.vincent.rsf.server.api.controller.erp.params.TaskInParam; import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto; import com.vincent.rsf.server.api.service.WcsService; import com.vincent.rsf.server.common.constant.Constants; @@ -23,6 +23,7 @@ import com.vincent.rsf.server.system.utils.SerialRuleUtils; import com.vincent.rsf.server.system.utils.SystemAuthUtils; import lombok.Synchronized; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,8 +34,8 @@ import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; +@Slf4j @Service("taskService") public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements TaskService { @@ -286,7 +287,7 @@ if (Objects.isNull(deviceSite)) { throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�"); } - DeviceBind deviceBind = deviceBindService.getById(LocUtils.getAreaType(Integer.valueOf(deviceSite.getSite()))); + DeviceBind deviceBind = deviceBindService.getById(LocUtils.getAreaType(deviceSite.getSite())); if (Cools.isEmpty(deviceBind)) { throw new CoolException("搴撲綅瑙勫垯鏈煡"); } @@ -407,20 +408,23 @@ */ @Synchronized @Override - @Transactional(rollbackFor = Exception.class) public void complateInTask(List<Task> tasks) throws Exception { Long loginUserId = SystemAuthUtils.getLoginUserId(); for (Task task : tasks) { - if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)) { - //1.鍏ュ簱 - complateInstock(task, loginUserId); - } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type) || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)) { - //53.鎷f枡鍐嶅叆搴� - //57.鐩樼偣鍐嶅叆搴� - pickComplateInStock(task, loginUserId); - } else if (task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { - //绉诲簱 - moveInStock(task, loginUserId); + try { + if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)) { + //1.鍏ュ簱 + complateInstock(task, loginUserId); + } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type) || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)) { + //53.鎷f枡鍐嶅叆搴� + //57.鐩樼偣鍐嶅叆搴� + pickComplateInStock(task, loginUserId); + } else if (task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { + //绉诲簱 + moveInStock(task, loginUserId); + } + } catch (Exception ex) { + log.error(ex.getMessage(), ex); } } } @@ -635,20 +639,15 @@ */ @Synchronized @Override - @Transactional(rollbackFor = Exception.class) - public void completeTask(List<Task> tasks) throws Exception { + public void completeTask(List<Task> tasks) { Long loginUserId = SystemAuthUtils.getLoginUserId(); for (Task task : tasks) { //鍑哄簱浠诲姟 - if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)) { - //鍏ㄦ墭鍑哄簱 + try { complateOutStock(task, loginUserId); - } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)) { - //鎷f枡鍑哄簱 - complateOutStock(task, loginUserId); - } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)) { - //鐩樼偣鍑哄簱 - complateOutStock(task, loginUserId); + } catch (Exception e) { + log.error(e.getMessage(), e); +// throw new CoolException(e.getMessage()); } } } @@ -711,9 +710,7 @@ //淇濆瓨鍏ュ嚭搴撴祦姘� saveStockItems(taskItems, task, null, null, taskItem.getWkType(), taskItem.getOrderType(), loginUserId); - if (!locItemWorkingService.remove(new LambdaQueryWrapper<LocItemWorking>().eq(LocItemWorking::getTaskId, task.getId()))) { - throw new CoolException("浣滀笟涓簱瀛樺垹闄ゅけ璐ワ紒锛�"); - } + locItemWorkingService.remove(new LambdaQueryWrapper<LocItemWorking>().eq(LocItemWorking::getTaskId, task.getId())); task.setTaskStatus(TaskStsType.UPDATED_IN.id).setUpdateTime(new Date()).setUpdateBy(loginUserId); if (!taskService.updateById(task)) { @@ -775,6 +772,7 @@ } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)) { List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getTaskId, Arrays.asList(ids))); if (!taskItems.isEmpty()) { + taskItems.forEach(taskItem -> { if (!checkOrderItemService.update(new LambdaUpdateWrapper<WkOrderItem>() .eq(WkOrderItem::getId, taskItem.getOrderItemId()) @@ -788,9 +786,15 @@ throw new CoolException("鐩樼偣鍗曟墽琛屾暟閲忎慨鏀瑰け璐ワ紒锛�"); } - checkDiffItemService.remove(new LambdaQueryWrapper<CheckDiffItem>().eq(CheckDiffItem::getTaskItemId, taskItem.getId())); + CheckDiffItem serviceOne = checkDiffItemService.getOne(new LambdaQueryWrapper<CheckDiffItem>().eq(CheckDiffItem::getTaskItemId, taskItem.getId())); - checkDiffService.removeById(taskItem.getSourceId()); + checkDiffItemService.remove(new LambdaQueryWrapper<CheckDiffItem>().eq(CheckDiffItem::getTaskItemId, taskItem.getId())); + if (!Objects.isNull(serviceOne)) { + CheckDiff checkDiff = checkDiffService.getById(serviceOne.getCheckId()); + if (!Objects.isNull(checkDiff)) { + checkDiffService.removeById(checkDiff.getId()); + } + } }); } @@ -970,7 +974,7 @@ .setTaskStatus(TaskStsType.GENERATE_IN.id); TaskInParam param = new TaskInParam(); - param.setSourceStaNo(Integer.parseInt(task.getTargSite())) + param.setSourceStaNo(task.getTargSite()) .setIoType(type) .setLocType1(Integer.parseInt(loc.getType())); //鑾峰彇鏂板簱浣� @@ -979,7 +983,8 @@ if (Objects.isNull(locInfo)) { throw new CoolException("鑾峰彇搴撲綅澶辫触锛侊紒"); } - task.setTargLoc(locInfo.getLocNo()); + task.setTargLoc(locInfo.getLocNo()) + .setOrgSite(task.getTargSite()); if (!this.updateById(task)) { throw new CoolException("浠诲姟鐘舵�佹洿鏂板け璐ワ紒锛�"); @@ -997,13 +1002,15 @@ tempLocs.forEach(working -> { taskItems.forEach(taskItem -> { if (taskItem.getMatnrId().equals(working.getMatnrId())) { - Double minQty = Math.round((working.getAnfme() - taskItem.getAnfme()) * 10000) / 10000.0; + Double minQty = taskItem.getAnfme(); + if (!task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)) { + minQty = Math.round((working.getAnfme() - taskItem.getAnfme()) * 10000) / 10000.0; + } if (minQty.compareTo(0.0) > 0) { taskItem.setAnfme(minQty); if (!taskItemService.updateById(taskItem)) { throw new CoolException("浠诲姟鏄庣粏淇敼澶辫触锛侊紒"); } - } else { if (!taskItemService.removeById(taskItem)) { throw new CoolException("浠诲姟鏄庣粏淇敼澶辫触锛侊紒"); @@ -1021,6 +1028,8 @@ TaskItem taskItem = taskItems.stream().findFirst().get(); taskItem.setMatnrId(working.getMatnrId()) .setMaktx(working.getMaktx()) + .setMatnrId(working.getMatnrId()) + .setMatnrCode(working.getMatnrCode()) .setSpec(working.getSpec()) .setAnfme(working.getAnfme()) .setBatch(working.getBatch()) @@ -1035,7 +1044,7 @@ }); locItemWorkingService.remove(new LambdaQueryWrapper<LocItemWorking>().eq(LocItemWorking::getTaskId, task.getId())); - Loc loc1 = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getOrgLoc())); + Loc loc1 = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getTargLoc())); if (Objects.isNull(loc1)) { throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦紒锛�"); } @@ -1043,10 +1052,14 @@ List<LocItemWorking> workings = new ArrayList<>(); List<TaskItem> items = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId())); items.forEach(taskItem -> { - LocItemWorking itemWorking = new LocItemWorking(); - BeanUtils.copyProperties(taskItem, itemWorking); - itemWorking.setTaskId(task.getId()).setLocId(loc1.getId()).setLocCode(loc1.getCode()); - workings.add(itemWorking); + if (taskItem.getAnfme() > 0) { + LocItemWorking itemWorking = new LocItemWorking(); + BeanUtils.copyProperties(taskItem, itemWorking); + itemWorking.setTaskId(task.getId()) + .setLocId(loc1.getId()) + .setLocCode(loc1.getCode()); + workings.add(itemWorking); + } }); if (!locItemWorkingService.saveBatch(workings)) { @@ -1135,19 +1148,23 @@ } catch (Exception e) { throw new CoolException(e.getMessage()); } - } else if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_ORDER_TYPE.val) || task.getResource().equals(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val)) { - WkOrderItem orderItem = new WkOrderItem(); - if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val)) { - CheckDiffItem diffItem = checkDiffItemService.getById(key); - } else { - orderItem = asnOrderItemService.getById(key); - - } + } else if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_ORDER_TYPE.val)) { + WkOrderItem orderItem = asnOrderItemService.getById(key); if (Objects.isNull(orderItem)) { throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�"); } try { - saveOutStockItem(maps.get(key), orderItem, null, null, loginUserId); + saveOutStockItem(maps.get(key), orderItem, loginUserId); + } catch (Exception e) { + throw new CoolException(e.getMessage()); + } + } else if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val)) { + WkOrderItem orderItem = asnOrderItemService.getById(key); + if (Objects.isNull(orderItem)) { + throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�"); + } + try { + saveOutStockItem(maps.get(key), null, null, orderItem, loginUserId); } catch (Exception e) { throw new CoolException(e.getMessage()); } @@ -1204,7 +1221,7 @@ * @version 1.0 */ @Transactional(rollbackFor = Exception.class) - public void saveOutStockItem(List<TaskItem> taskItems, CheckDiffItem diffItem, Long loginUserId) { + public void saveOutStockItem(List<TaskItem> taskItems, WkOrderItem diffItem, Long loginUserId) { try { saveOutStockItem(taskItems, null, null, diffItem, loginUserId); } catch (Exception e) { @@ -1219,7 +1236,7 @@ * @version 1.0 */ @Transactional(rollbackFor = Exception.class) - public void saveOutStockItem(List<TaskItem> taskItems, WkOrderItem orderItem, WaveItem waveItem, CheckDiffItem diffItem, Long loginUserId) throws Exception { + public void saveOutStockItem(List<TaskItem> taskItems, WkOrderItem orderItem, WaveItem waveItem, WkOrderItem diffItem, Long loginUserId) throws Exception { Stock stock = new Stock(); String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_STOCK_CODE, null); if (StringUtils.isBlank(ruleCode)) { @@ -1230,20 +1247,26 @@ .setUpdateBy(loginUserId) .setUpdateTime(new Date()) .setAnfme(sum); - if (Objects.isNull(waveItem)) { - stock.setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type)) - .setMemo("搴撳瓨鍑哄簱锛屾棤鍗曟嵁淇℃伅锛侊紒") - .setType(OrderType.ORDER_OUT.type); + if (!Objects.isNull(waveItem)) { + //TODO 鐢熸垚娉㈡鏃堕渶瑕佸皢娉㈡鍙峰啓鍏ュ崟鎹紝閫氳繃鐗╂枡锛屾壒娆★紝鍔ㄦ�佸瓧娈电瓑鍞竴鍊煎弽鏌ュ崟鎹俊鎭� + stock.setSourceId(waveItem.getId()).setType(OrderType.ORDER_OUT.type); } else if (!Objects.isNull(orderItem) && StringUtils.isNotBlank(orderItem.getId() + "")) { WkOrder wkOrder = asnOrderService.getById(orderItem.getOrderId()); + Double qty = Math.round((wkOrder.getQty() + sum) * 10000) / 10000.0; + wkOrder.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_WORKING.val) + .setQty(qty); + if (!asnOrderService.updateById(wkOrder)) { + throw new CoolException("鍑哄簱鍗曟洿鏂板け璐ワ紒锛�"); + } stock.setWkType(Short.parseShort(wkOrder.getWkType())) .setType(OrderType.ORDER_OUT.type); } else if (!Objects.isNull(diffItem)) { stock.setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_CHECK.type)) .setType(OrderType.ORDER_CHECK.type); } else { - //TODO 鐢熸垚娉㈡鏃堕渶瑕佸皢娉㈡鍙峰啓鍏ュ崟鎹紝閫氳繃鐗╂枡锛屾壒娆★紝鍔ㄦ�佸瓧娈电瓑鍞竴鍊煎弽鏌ュ崟鎹俊鎭� - stock.setSourceId(waveItem.getId()).setType(OrderType.ORDER_OUT.type); + stock.setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type)) + .setMemo("搴撳瓨鍑哄簱锛屾棤鍗曟嵁淇℃伅锛侊紒") + .setType(OrderType.ORDER_OUT.type); } if (!stockService.save(stock)) { throw new CoolException("搴撳瓨淇濆瓨澶辫触锛侊紒"); @@ -1264,7 +1287,6 @@ if (!stockItemService.saveBatch(stockItems)) { throw new CoolException("搴撳瓨淇敼鏋跺け璐ワ紒锛�"); } - } /** @@ -1395,14 +1417,29 @@ List<LocItem> locItems = new ArrayList<>(); items.forEach(taskItem -> { Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getTargLoc()), false); + if (Objects.isNull(loc)) { + throw new CoolException("搴撲綅涓嶅瓨鍦紒锛�"); + } LocItem item = new LocItem(); - BeanUtils.copyProperties(taskItem, item); - item.setLocCode(loc.getCode()).setId(null) - .setLocId(loc.getId()) - .setUpdateBy(loginUserId) - .setWkType(taskItem.getWkType()) - .setType(taskItem.getOrderType()); - locItems.add(item); + LocItem locItem = locItemService.getOne(new LambdaQueryWrapper<LocItem>() + .eq(LocItem::getMatnrId, taskItem.getMatnrId()) + .eq(LocItem::getLocId, loc.getId()) + .eq(StringUtils.isNoneBlank(taskItem.getBatch()), LocItem::getBatch, taskItem.getBatch()) + .eq(StringUtils.isNoneBlank(taskItem.getFieldsIndex()), LocItem::getFieldsIndex, taskItem.getFieldsIndex())); + if (Objects.isNull(locItem)) { + BeanUtils.copyProperties(taskItem, item); + item.setLocCode(loc.getCode()) + .setId(null) + .setLocId(loc.getId()) + .setUpdateBy(loginUserId) + .setWkType(taskItem.getWkType()) + .setType(taskItem.getOrderType()); + locItems.add(item); + } else { + locItem.setAnfme(Math.round((locItem.getAnfme() + taskItem.getAnfme()) * 10000) / 10000.0) + .setUpdateTime(new Date()); + locItems.add(locItem); + } }); if (!locItemService.saveBatch(locItems)) { throw new CoolException("搴撲綅鏄庣粏鏇存柊澶辫触锛侊紒"); @@ -1417,8 +1454,7 @@ * @return */ @Transactional(rollbackFor = Exception.class) - public void saveStockItems(List<TaskItem> items, Task task, Long id, String code, Short wkType, String type, Long loginUserId) throws - Exception { + public void saveStockItems(List<TaskItem> items, Task task, Long id, String code, Short wkType, String type, Long loginUserId) { Stock stock = new Stock(); String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_STOCK_CODE, null); if (StringUtils.isBlank(ruleCode)) { @@ -1463,5 +1499,14 @@ if (!stockItemService.saveBatch(stockItems)) { throw new CoolException("搴撳瓨淇敼鏋跺け璐ワ紒锛�"); } + + WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>().eq(WkOrder::getCode, code)); + if (!Objects.isNull(order)) { +// Double qty = Math.round((order.getQty() + sum) * 10000) / 10000.0; + order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_EXCE.val); + if (!asnOrderService.updateById(order)) { + throw new CoolException("鍏ュ簱鍗曠姸鎬佷慨鏀瑰け璐ワ紒锛�"); + } + } } } -- Gitblit v1.9.1