From c96d7cac4e3ed8d8ab3d2ef4fbee8be372f1a3b0 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期二, 22 七月 2025 13:27:50 +0800 Subject: [PATCH] no message --- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 189 +++++++++++++++++++++++++++++----------------- 1 files changed, 119 insertions(+), 70 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 a9b1461..b269e33 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 @@ -33,6 +33,7 @@ import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; @Service("taskService") public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements TaskService { @@ -683,13 +684,13 @@ if (taskItems.isEmpty()) { throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦紒锛�"); } + List<LocItem> items = new ArrayList<>(); for (TaskItem taskItem : taskItems) { LocItem locItem = new LocItem(); LocItemWorking locWorking = locItemWorkingService.getOne(new LambdaQueryWrapper<LocItemWorking>() .eq(LocItemWorking::getTaskId, taskItem.getTaskId()) .eq(StringUtils.isNotBlank(taskItem.getBatch()), LocItemWorking::getBatch, taskItem.getBatch()) -// .eq(StringUtils.isNotBlank(taskItem.getFieldsIndex()), LocItemWorking::getFieldsIndex, taskItem.getFieldsIndex()) .eq(LocItemWorking::getMatnrId, taskItem.getMatnrId())); if (Objects.isNull(locWorking)) { throw new CoolException("鏁版嵁閿欒锛屼綔涓氫腑搴撳瓨鏁版嵁涓㈠け锛侊紒"); @@ -787,17 +788,9 @@ throw new CoolException("鐩樼偣鍗曟墽琛屾暟閲忎慨鏀瑰け璐ワ紒锛�"); } - List<CheckDiffItem> diffItems = checkDiffItemService - .list(new LambdaQueryWrapper<CheckDiffItem>() - .eq(CheckDiffItem::getTaskItemId, taskItem.getTaskId())); - if (!diffItems.isEmpty()) { - CheckDiffItem item = diffItems.stream().findFirst().get(); - List<CheckDiffItem> items = checkDiffItemService.list(new LambdaQueryWrapper<CheckDiffItem>() - .eq(CheckDiffItem::getId, item.getCheckId())); - if (items.isEmpty()) { - checkDiffService.removeById(item.getCheckId()); - } - } + checkDiffItemService.remove(new LambdaQueryWrapper<CheckDiffItem>().eq(CheckDiffItem::getTaskItemId, taskItem.getId())); + + checkDiffService.removeById(taskItem.getSourceId()); }); } @@ -991,46 +984,78 @@ if (!this.updateById(task)) { throw new CoolException("浠诲姟鐘舵�佹洿鏂板け璐ワ紒锛�"); } - + //鑾峰彇鍥犲綋鍓嶄换鍔″嚭搴撶殑鎵�鏈夌墿鏂欎俊鎭� + List<LocItemWorking> tempLocs = locItemWorkingService.list(new LambdaQueryWrapper<LocItemWorking>().eq(LocItemWorking::getTaskId, task.getId())); + if (tempLocs.isEmpty()) { + throw new CoolException("鏁版嵁閿欒锛屼綔涓氫腑搴撳瓨鏁版嵁涓㈠け锛侊紒"); + } List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId())); - for (int i = 0; i < taskItems.size(); i++) { - TaskItem taskItem = taskItems.get(i); - LocItemWorking locWorking = locItemWorkingService.getOne(new LambdaQueryWrapper<LocItemWorking>() - .eq(LocItemWorking::getTaskId, taskItem.getTaskId()) - .eq(StringUtils.isNotBlank(taskItem.getBatch()), LocItemWorking::getBatch, taskItem.getBatch()) -// .eq(StringUtils.isNotBlank(taskItem.getFieldsIndex()), LocItemWorking::getFieldsIndex, taskItem.getFieldsIndex()) - .eq(LocItemWorking::getMatnrId, taskItem.getMatnrId())); - if (Objects.isNull(locWorking)) { - throw new CoolException("鏁版嵁閿欒锛屼綔涓氫腑搴撳瓨鏁版嵁涓㈠け锛侊紒"); - } - if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)) { - locWorking.setWorkQty(0.0); - locWorking.setAnfme(taskItem.getAnfme()); - } else { - if (locWorking.getAnfme().compareTo(taskItem.getAnfme()) >= 0) { - locWorking.setWorkQty(0.0); - locWorking.setAnfme(Math.round((locWorking.getAnfme() - taskItem.getAnfme()) * 10000) / 10000.0); - } else { - continue; + if (taskItems.isEmpty()) { + throw new CoolException("鏁版嵁閿欒锛氫换鍔℃槑缁嗕负绌猴紒锛�"); + } + + tempLocs.forEach(working -> { + taskItems.forEach(taskItem -> { + if (taskItem.getMatnrId().equals(working.getMatnrId())) { + Double 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("浠诲姟鏄庣粏淇敼澶辫触锛侊紒"); + } + } } - } - if (!locItemWorkingService.updateById(locWorking)) { - throw new CoolException("涓存椂搴撳瓨鏇存柊澶辫触锛侊紒"); - } - taskItems.get(i).setAnfme(locWorking.getAnfme()); - } + }); + }); + List<Long> matnrIds = taskItems.stream().map(TaskItem::getMatnrId).collect(Collectors.toList()); + //鍒犻櫎涓庝换鍔℃槑缁嗛噸澶嶇殑搴撳瓨淇℃伅锛屼互浠诲姟鏄庣粏涓哄噯 + List<LocItemWorking> itemWorkings = tempLocs.stream() + .filter(working -> !matnrIds.contains(working.getMatnrId())) + .collect(Collectors.toList()); + itemWorkings.forEach(working -> { + TaskItem taskItem = taskItems.stream().findFirst().get(); + taskItem.setMatnrId(working.getMatnrId()) + .setMaktx(working.getMaktx()) + .setSpec(working.getSpec()) + .setAnfme(working.getAnfme()) + .setBatch(working.getBatch()) + .setFieldsIndex(working.getFieldsIndex()) + .setUnit(working.getUnit()) + .setId(null) + .setModel(working.getModel()); - if (!taskItemService.updateBatchById(taskItems)) { - throw new CoolException("浠诲姟鏄庣粏鏇存柊澶辫触锛侊紒"); - } + if (!taskItemService.saveOrUpdate(taskItem)) { + throw new CoolException("涓存椂搴撳瓨杞换鍔℃槑缁嗗け璐ワ紒锛�"); + } + }); - Loc one = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getTargLoc())); - if (Objects.isNull(one)) { + locItemWorkingService.remove(new LambdaQueryWrapper<LocItemWorking>().eq(LocItemWorking::getTaskId, task.getId())); + Loc loc1 = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getOrgLoc())); + if (Objects.isNull(loc1)) { throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦紒锛�"); } - one.setUseStatus(LocStsType.LOC_STS_TYPE_S.type); - if (!locService.updateById(one)) { + 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 (!locItemWorkingService.saveBatch(workings)) { + throw new CoolException("涓存椂搴撳瓨鏇存柊澶辫触锛侊紒"); + } + + loc1.setUseStatus(LocStsType.LOC_STS_TYPE_S.type); + + if (!locService.updateById(loc1)) { throw new CoolException("搴撲綅棰勭害鍏ュ簱澶辫触锛侊紒"); } return task; @@ -1098,35 +1123,41 @@ * */ List<TaskItem> list = listMap.get(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type)); if (Objects.isNull(list) || list.isEmpty()) { - Map<Long, List<TaskItem>> maps = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getSource)); - maps.keySet().forEach(key -> { - if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_WAVE_TYPE.val)) { - WaveItem waveItem = waveItemService.getById(key); - if (Objects.isNull(waveItem)) { - throw new CoolException("娉㈡鏄庣粏涓嶅瓨鍦紒锛�"); - } - try { - saveOutStockItem(maps.get(key), null, waveItem, loginUserId); - } 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 = asnOrderItemService.getById(key); - if (Objects.isNull(orderItem)) { - throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�"); - } - try { - saveOutStockItem(maps.get(key), orderItem, null, loginUserId); - } catch (Exception e) { - throw new CoolException(e.getMessage()); - } + Map<Long, List<TaskItem>> maps = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getSource)); + maps.keySet().forEach(key -> { + if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_WAVE_TYPE.val)) { + WaveItem waveItem = waveItemService.getById(key); + if (Objects.isNull(waveItem)) { + throw new CoolException("娉㈡鏄庣粏涓嶅瓨鍦紒锛�"); + } + try { + saveOutStockItem(maps.get(key), null, waveItem, null, loginUserId); + } 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); } - }); + if (Objects.isNull(orderItem)) { + throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�"); + } + try { + saveOutStockItem(maps.get(key), orderItem, null, null, loginUserId); + } catch (Exception e) { + throw new CoolException(e.getMessage()); + } + } else { + + } + }); } else { try { - saveOutStockItem(taskItems, null, null, loginUserId); + saveOutStockItem(taskItems, null, null, null, loginUserId); } catch (Exception e) { throw new CoolException(e.getMessage()); } @@ -1173,7 +1204,22 @@ * @version 1.0 */ @Transactional(rollbackFor = Exception.class) - public void saveOutStockItem(List<TaskItem> taskItems, WkOrderItem orderItem, WaveItem waveItem, Long loginUserId) throws Exception { + public void saveOutStockItem(List<TaskItem> taskItems, CheckDiffItem diffItem, Long loginUserId) { + try { + saveOutStockItem(taskItems, null, null, diffItem, loginUserId); + } catch (Exception e) { + throw new CoolException(e); + } + } + + /** + * @author Ryan + * @date 2025/5/20 + * @description: 鍑哄簱淇℃伅淇濆瓨鑷冲簱瀛樻槑缁嗚〃 + * @version 1.0 + */ + @Transactional(rollbackFor = Exception.class) + public void saveOutStockItem(List<TaskItem> taskItems, WkOrderItem orderItem, WaveItem waveItem, CheckDiffItem diffItem, Long loginUserId) throws Exception { Stock stock = new Stock(); String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_STOCK_CODE, null); if (StringUtils.isBlank(ruleCode)) { @@ -1192,6 +1238,9 @@ WkOrder wkOrder = asnOrderService.getById(orderItem.getOrderId()); 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); -- Gitblit v1.9.1