rsf-admin/src/page/task/TaskList.jsx
@@ -87,7 +87,7 @@ />, ] const TaskList = () => { const TaskList = (props) => { const translate = useTranslate(); const [drawerVal, setDrawerVal] = useState(false); return ( @@ -171,16 +171,17 @@ * 完成操作 * @returns */ const DoneButton = () => { const DoneButton = (props) => { const record = useRecordContext(); const notify = useNotify(); const refresh = useRefresh(); const clickComplete = (event) => { event.stopPropagation(); completeTask([record]) completeTask(record) }; //完成任务 const completeTask = async (row) => { console.log(row.id); const { data: { code, data, msg } } = await request.post(`task/complete/` + row.id); if (code === 200) { notify(msg); rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -850,7 +850,11 @@ */ @Override public R getDeviceSites() { return R.ok(deviceSiteMapper.selectList(new LambdaQueryWrapper<DeviceSite>().eq(DeviceSite::getStatus, 1).groupBy(DeviceSite::getSite))); List<DeviceSite> sites = deviceSiteMapper.selectList(new LambdaQueryWrapper<DeviceSite>() .select(DeviceSite::getId, DeviceSite::getSite, DeviceSite::getName) .eq(DeviceSite::getStatus, 1) .groupBy(DeviceSite::getSite, DeviceSite::getId, DeviceSite::getName)); return R.ok(sites); } /** rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
@@ -132,20 +132,16 @@ @PreAuthorize("hasAuthority('manager:task:update')") @ApiOperation("完成任务") @PostMapping("/task/complete/{id}") public R completeTask(@PathVariable String id) { public R completeTask(@PathVariable String id) throws Exception { if (Objects.isNull(id)) { throw new CoolException("参数不能为空!!"); } List<Long> 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("任务已处执行状态不可一键完成!!"); } try { taskService.completeTask(tasks); } catch (Exception ex) { return R.error("任务异常,无法完成!!"); } // if (tasks.isEmpty()) { // throw new CoolException("任务已处执行状态不可一键完成!!"); // } taskService.completeTask(tasks); return R.ok(); } rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java
@@ -43,6 +43,12 @@ @ApiModelProperty(value= "主单ID") private Long pakinId; @ApiModelProperty("订单类型") private String type; @ApiModelProperty("业务类型") private Short wkType; /** * 订单ID */ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -138,13 +138,12 @@ 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("数据错误: 单据不存在!!"); } // 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) .setWkType(Short.parseShort(order.getWkType())) .setSource(item.getId()) .setTrackCode(item.getTrackCode()) .setCreateBy(loginUserId) @@ -180,7 +179,7 @@ return; } List<Long> list = tasks.stream().map(Task::getId).collect(Collectors.toList()); List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, list)); List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getTaskId, list)); if (taskItems.isEmpty()) { throw new CoolException("任务明细不存在!!"); } @@ -198,15 +197,19 @@ }); /**对任务明细按订单进行分组*/ Map<Long, List<TaskItem>> orderMap = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getOrderId)); Map<Long, List<TaskItem>> orderMap = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getSource)); orderMap.keySet().forEach(key -> { AsnOrder order = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>() .eq(AsnOrder::getId, key) .select(AsnOrder::getId, AsnOrder::getPoCode, AsnOrder::getCode)); WaitPakinItem pakinItem = waitPakinItemService.getById(key); // AsnOrder order = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>() // .eq(AsnOrder::getId, key) // .select(AsnOrder::getId, AsnOrder::getPoCode, AsnOrder::getCode)); if (null == pakinItem) { throw new CoolException("数据错误:组拖数据不存在,请联系管理员!!"); } List<TaskItem> items = orderMap.get(key); //保存库存明细 try { saveStockItems(items, order); saveStockItems(items, pakinItem); } catch (Exception e) { throw new CoolException("库存管理保存更新失败!!"); } @@ -228,14 +231,14 @@ * @time 2025/4/15 15:28 */ @Transactional(rollbackFor = Exception.class) private void saveLocItem(List<TaskItem> items, Long taskId) throws Exception { void saveLocItem(List<TaskItem> items, Long taskId) throws Exception { Task task = this.getById(taskId); if (Objects.isNull(task)) { throw new CoolException("任务不存在!!"); } List<LocItem> locItems = new ArrayList<>(); items.forEach(taskItem -> { Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getTargLoc())); Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getTargLoc()), false); LocItem item = new LocItem(); BeanUtils.copyProperties(taskItem, item); item.setLocId(loc.getId()).setType(taskItem.getOrderType()); @@ -252,7 +255,7 @@ * @return */ @Transactional(rollbackFor = Exception.class) private void saveStockItems(List<TaskItem> items, AsnOrder order) throws Exception { void saveStockItems(List<TaskItem> items, WaitPakinItem order) throws Exception { Stock stock = new Stock(); // if (!Objects.isNull(order.getPoCode()) && StringUtils.isNotBlank(order.getPoCode())) { // Purchase purchase = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getCode, order.getPoCode())); @@ -267,9 +270,9 @@ double sum = items.stream().mapToDouble(TaskItem::getAnfme).sum(); stock.setSourceId(order.getId()) .setCode(ruleCode) .setSourceCode(order.getCode()) .setSourceCode(order.getAsnCode()) .setAnfme(sum) .setWkType(Short.parseShort(order.getWkType())) .setWkType(order.getWkType()) .setType(order.getType()); if (!stockService.save(stock)) { throw new CoolException("库存保存失败!!"); @@ -278,15 +281,15 @@ List<StockItem> stockItems = new ArrayList<>(); for (TaskItem item : items) { /**通过任务明细中的taskId查询,获取TASK的目标库位信息*/ AsnOrderItem orderItem = asnOrderItemService.getOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getId, item.getOrderItemId())); if (Objects.isNull(orderItem)) { throw new CoolException("单据明细不存在!!"); } // AsnOrderItem orderItem = asnOrderItemService.getOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getId, item.getOrderItemId())); // if (Objects.isNull(orderItem)) { // throw new CoolException("单据明细不存在!!"); // } StockItem stockItem = new StockItem(); BeanUtils.copyProperties(orderItem, stockItem); BeanUtils.copyProperties(item, stockItem); stockItem.setSourceItemId(item.getOrderItemId()) .setStockCode(stock.getCode()) .setSourceItemId(orderItem.getId()) .setSourceItemId(item.getOrderItemId()) .setId(null) .setStockId(stock.getId()); stockItems.add(stockItem); rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
@@ -129,6 +129,9 @@ .setUpdateBy(userId) .setCreateBy(userId) .setMatnrCode(item.getMatnrCode()); AsnOrder order = asnOrderService.getById(item.getAsnId()); pakinItem.setType(order.getType()) .setWkType(Short.parseShort(order.getWkType())); for (PakinItem waitPakinItem : waitPakin.getItems()) { if (waitPakinItem.getTrackCode().equals(item.getTrackCode())) { if (waitPakinItem.getReceiptQty() > item.getAnfme() || waitPakinItem.getReceiptQty().compareTo(0.0) >= 0) { @@ -165,6 +168,12 @@ .setUpdateBy(userId) .setCreateBy(userId) .setMatnrCode(item.getMatnrCode()); AsnOrder order = asnOrderService.getById(item.getAsnId()); if (!Objects.isNull(order)) { pakinItem.setType(null == order.getType() ? null :order.getType()) .setWkType(null == order.getWkType() ? null : Short.parseShort(order.getWkType()) ); } for (PakinItem waitPakinItem : waitPakin.getItems()) { if (waitPakinItem.getTrackCode().equals(item.getTrackCode())) { if (waitPakinItem.getReceiptQty() > item.getAnfme() || waitPakinItem.getReceiptQty().compareTo(0.0) <= 0) { rsf-server/src/main/resources/application-dev.yml
@@ -12,10 +12,10 @@ matching-strategy: ANT_PATH_MATCHER datasource: driver-class-name: com.mysql.jdbc.Driver # url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai username: root url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai # username: rsf url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai # username: root # url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai username: rsf password: 34821015 type: com.alibaba.druid.pool.DruidDataSource druid: