rsf-admin/src/page/orders/check/CheckOrderPub.jsx
@@ -102,9 +102,10 @@ }; const handleClose = (value) => { console.log(value); setDialog(false); setSelectedValue(value); if (selectedIds.length == 0) { if (leftSelectedIds.length == 0) { const newRows = rows.map(item => { return { ...item, @@ -114,7 +115,7 @@ setRows(newRows); } else { const newRows = rows.map(item => { return selectedIds.includes(item?.id) ? { return leftSelectedIds.includes(item?.id) ? { ...item, siteNo: value?.site } : item @@ -276,17 +277,14 @@ let params = records.filter(record => record?.items.length > 0); redirect("/task") // const { data: { code, data, msg } } = await request.post('/check/generate/tasks', params); // if (code == 200) { // refresh(); // redirect("/task") // setOpen(false) // } else { // notify(msg); // } const { data: { code, data, msg } } = await request.post('/check/generate/tasks', params); if (code == 200) { refresh(); redirect("/task") setOpen(false) } else { notify(msg); } } return ( <ConfirmButton rsf-admin/src/page/orders/check/CheckPreviewTable.jsx
@@ -1,9 +1,9 @@ import { Box, Card, Grid, LinearProgress, Select, MenuItem, ListItemText, TextField } from "@mui/material"; import { DataGrid, useGridApiContext, GridActionsCellItem, useGridApiRef } from '@mui/x-data-grid'; import React, { useState, useRef, useEffect, useMemo } from "react"; import QueryStatsIcon from '@mui/icons-material/QueryStats'; import request from '@/utils/request'; import { DataGrid, useGridApiContext, GridActionsCellItem, useGridApiRef } from '@mui/x-data-grid'; import { List, Button, @@ -47,11 +47,11 @@ ) }, { field: 'siteNo', field: 'site', headerName: '出库口', width: 90, type: 'singleSelect', editable: true, editable: false, renderCell: (params) => ( <OutStockSiteNo value={params.value} /> ), rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
@@ -45,11 +45,11 @@ LambdaQueryWrapper<Task> lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(Task::getBarcode, barcode); Task task = taskService.getOne(lambdaQueryWrapper); if (null == task){ if (null == task) { return R.error("未查询到相关任务"); } List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId())); if (null == taskItems || taskItems.size() <= 0){ if (null == taskItems || taskItems.size() <= 0) { return R.error("任务出错,未查询到相关任务明细"); } @@ -62,22 +62,22 @@ LambdaQueryWrapper<Task> lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(Task::getBarcode, barcode); Task task = taskService.getOne(lambdaQueryWrapper); if (null == task){ if (null == task) { throw new CoolException("未找到容器号对应任务"); } if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)){ if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)) { return R.error("任务状态不是等待确认"); } List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId())); Map<Long, List<TaskItem>> maps = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getSource)); maps.keySet().forEach(key -> { WkOrderItem orderItem = asnOrderItemService.getById(key); if (Objects.isNull(orderItem)) { throw new CoolException("单据明细不存在!!"); } WkOrderItem orderItem = asnOrderItemService.getById(key); if (Objects.isNull(orderItem)) { throw new CoolException("单据明细不存在!!"); } }); task.setTaskStatus(TaskStsType.COMPLETE_OUT.id); if (!taskService.updateById(task)){ if (!taskService.updateById(task)) { return R.error("更新任务状态失败"); } @@ -87,7 +87,7 @@ @Override public R getWaveListItem(String barcode) { LambdaQueryWrapper<Wave> lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(!Cools.isEmpty(barcode),Wave::getCode,barcode); lambdaQueryWrapper.eq(!Cools.isEmpty(barcode), Wave::getCode, barcode); List<Wave> waveList = waveService.list(lambdaQueryWrapper); return R.ok(waveList); } @@ -96,14 +96,14 @@ public R getContainerWaveList(Map<String, String> map) { String barcode = map.get("barcode"); if (Cools.isEmpty(barcode) ){ if (Cools.isEmpty(barcode)) { throw new CoolException("参数有误"); } Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, barcode)); if (null == task){ if (null == task) { throw new CoolException("未找到容器号对应任务"); } if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)){ if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)) { return R.error("任务状态不是等待确认"); } ArrayList<ContainerWaveDto> containerWaveDtos = new ArrayList<>(); @@ -112,11 +112,11 @@ ContainerWaveDto containerWaveDto = new ContainerWaveDto(); containerWaveDto.setTaskItem(taskItem); Wave wave = waveService.getById(taskItem.getSourceId()); if (null == wave){ if (null == wave) { throw new CoolException("未找到容器号对应波次"); } List<WaveOrderRela> waveOrderRelas = waveOrderRelaService.list(new LambdaQueryWrapper<WaveOrderRela>().eq(WaveOrderRela::getWaveId, wave.getId())); if (Cools.isEmpty(waveOrderRelas)){ if (Cools.isEmpty(waveOrderRelas)) { throw new CoolException("波次对应关联单未找到"); } List<Long> ids = waveOrderRelas.stream().map(WaveOrderRela::getOrderId).collect(Collectors.toList()); @@ -128,7 +128,7 @@ .eq(WkOrderItem::getMatnrCode, taskItem.getMatnrCode()) .eq(WkOrderItem::getSplrBatch, taskItem.getBatch()) ); if (null != orderItem){ if (null != orderItem) { list.add(orderItem); } @@ -145,14 +145,14 @@ @Transactional(rollbackFor = Exception.class) @Synchronized public R saveWavePick(ContainerWaveParam containerWaveParam, Long loginUserId) { if (null == containerWaveParam || containerWaveParam.getContainerWaveDtos().size() <= 0){ if (null == containerWaveParam || containerWaveParam.getContainerWaveDtos().size() <= 0) { return R.error("参数错误"); } Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode,containerWaveParam.getContainer())); if (null == task){ Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, containerWaveParam.getContainer())); if (null == task) { return R.error("未找到托盘对应的任务"); } if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)){ if (!task.getTaskStatus().equals(TaskStsType.AWAIT.id)) { return R.error("任务状态不是等待确认"); } @@ -161,7 +161,7 @@ double sum = containerWaveDto.getWkOrderItems().stream().mapToDouble(WkOrderItem::getDemandQty).sum(); BigDecimal total = new BigDecimal(String.valueOf(sum)); BigDecimal anfme = new BigDecimal(containerWaveDto.getTaskItem().getAnfme().toString()); if (!anfme.equals(total)){ if (!anfme.equals(total)) { throw new CoolException("播种数量不等于容器出库数量,请检查"); } for (WkOrderItem oldOrderItem : containerWaveDto.getWkOrderItems()) { @@ -171,26 +171,26 @@ WkOrderItem orderItem = asnOrderItemService.getById(oldOrderItem.getId()); BigDecimal num = new BigDecimal(orderItem.getWorkQty().toString()).subtract(new BigDecimal(orderItem.getQty().toString())); BigDecimal orderDemandQty = new BigDecimal(oldOrderItem.getDemandQty().toString()); if (num.compareTo(orderDemandQty) < 0){ if (num.compareTo(orderDemandQty) < 0) { throw new CoolException("播种数量大于单据出库数量,请检查"); } WkOrder wkOrder = asnOrderService.getById(orderItem.getOrderId()); if (Cools.isEmpty(wkOrder)){ if (Cools.isEmpty(wkOrder)) { throw new CoolException("出库单主单未找到"); } wkOrder.setQty(new BigDecimal(wkOrder.getQty().toString()).add(orderDemandQty).doubleValue()); if (!asnOrderService.updateById(wkOrder)){ if (!asnOrderService.updateById(wkOrder)) { throw new CoolException("出库单更新状态失败"); } orderItem.setQty(new BigDecimal(orderItem.getQty().toString()).add(orderDemandQty).doubleValue()); if (!asnOrderItemService.updateById(orderItem)){ if (!asnOrderItemService.updateById(orderItem)) { throw new CoolException("单据明细更新失败"); } //检查单据是否完成 Boolean orderChecked = checkOrderComplete(orderItem); if (orderChecked){ if (orderChecked) { wkOrder.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val); if (!asnOrderService.updateById(wkOrder)){ if (!asnOrderService.updateById(wkOrder)) { throw new CoolException("出库单更新状态失败"); } } @@ -211,14 +211,13 @@ } task.setTaskStatus(TaskStsType.COMPLETE_OUT.id); if (!taskService.updateById(task)){ if (!taskService.updateById(task)) { throw new CoolException("任务状态更新失败"); } return R.ok(); } private Boolean checkWaveComplete(TaskItem taskItem) { rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -644,18 +644,20 @@ @Transactional(timeout = 60, rollbackFor = Exception.class) public R syncCheckDiffs(SyncCheckDiffParams syncParams) { List<CheckDiff> diffs = checkDiffService.list(new LambdaQueryWrapper<CheckDiff>() .eq(CheckDiff::getExceStatus, CheckExceStatus.CHECK_ORDER_STATUS_EXCE_DONE.val) .eq(CheckDiff::getExceStatus, CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_END.val) .in(CheckDiff::getOrderCode, syncParams.getDiffCode())); if (diffs.isEmpty()) { return R.ok(); } List<CheckDiffDto> dtos = new ArrayList<>(); diffs.forEach(check -> { CheckDiffDto dto = new CheckDiffDto(); BeanUtils.copyProperties(check, dto); CheckDiffDto checkDto = new CheckDiffDto(); CheckDiff checkDiff = new CheckDiff(); BeanUtils.copyProperties(check, checkDiff); List<CheckDiffItem> items = checkDiffItemService.list(new LambdaQueryWrapper<CheckDiffItem>().eq(CheckDiffItem::getCheckId, check.getId())); dto.setItems(items); dtos.add(dto); checkDto.setItems(items) .setCheckDiff(checkDiff); dtos.add(checkDto); }); return R.ok().add(dtos); rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckDiffItemController.java
@@ -13,9 +13,12 @@ import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.manager.entity.CheckDiff; import com.vincent.rsf.server.manager.entity.CheckDiffItem; import com.vincent.rsf.server.manager.entity.WkOrder; import com.vincent.rsf.server.manager.enums.CheckDiffExceStatus; import com.vincent.rsf.server.manager.enums.CheckExceStatus; import com.vincent.rsf.server.manager.service.CheckDiffItemService; import com.vincent.rsf.server.manager.service.CheckDiffService; import com.vincent.rsf.server.manager.service.CheckOrderService; import com.vincent.rsf.server.manager.service.impl.CheckDiffServiceImpl; import com.vincent.rsf.server.system.controller.BaseController; import org.springframework.beans.factory.annotation.Autowired; @@ -33,6 +36,8 @@ private CheckDiffItemService checkDiffItemService; @Autowired private CheckDiffService checkDiffService; @Autowired private CheckOrderService checkOrderService; @PreAuthorize("hasAuthority('manager:checkDiff:list')") @PostMapping("/checkDiffItem/page") @@ -94,6 +99,12 @@ .set(CheckDiff::getExceStatus, CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_END.val))) { throw new CoolException("盘点单状态更新失败!!"); } if (!checkOrderService.update(new LambdaUpdateWrapper<WkOrder>().eq(WkOrder::getId, checkDiffItem.getCheckId()) .set(WkOrder::getExceStatus, CheckExceStatus.CHECK_ORDER_STATUS_EXCE_DONE.val))) { throw new CoolException("盘点单执行状态修改失败!!"); } } else { if (!checkDiffService.update(new LambdaUpdateWrapper<CheckDiff>() .eq(CheckDiff::getId, checkDiffItem.getCheckId()) @@ -102,8 +113,6 @@ } } } return R.ok("Update Success").add(checkDiffItem); } rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java
@@ -3,7 +3,6 @@ import com.vincent.rsf.server.manager.entity.LocItem; import com.vincent.rsf.server.manager.utils.Synchro; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import lombok.experimental.Delegate; rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
@@ -242,7 +242,7 @@ @ApiModelProperty("出站口") @TableField(exist = false) private String site; private String siteNo; /** @@ -281,7 +281,7 @@ } // LocItem locItem = new LocItem( // null, // 主单ID // null, // 主单IDs // null, // 单据ID // null, // 单据类型 // null, // 订单明细id rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java
@@ -251,7 +251,7 @@ throw new CoolException("库口不为空!!"); } locItems.forEach(locItem -> { locItem.setSite(deviceSite.getSite()); locItem.setSiteNo(deviceSite.getSite()); }); } return R.ok().add(locItems); rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocPreviewServiceImpl.java
File was renamed from rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocPreviewServiceImpl.java @@ -1,4 +1,4 @@ package com.vincent.rsf.server.manager.service; package com.vincent.rsf.server.manager.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -11,6 +11,7 @@ import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.mapper.LocMapper; import com.vincent.rsf.server.manager.mapper.LocTypeRelaMapper; import com.vincent.rsf.server.manager.service.*; import com.vincent.rsf.server.manager.utils.Shelves; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -1143,14 +1143,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)) { } 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()); } @@ -1207,7 +1216,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) { @@ -1222,7 +1231,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)) { rsf-server/src/main/resources/application-dev.yml
@@ -14,7 +14,7 @@ # url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai # username: rsf username: root url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai url: jdbc:mysql://192.168.4.151:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai password: 34821015 type: com.alibaba.druid.pool.DruidDataSource druid: