| | |
| | | const validValue = list.some(item => item.id === value) ? value : ''; |
| | | |
| | | return ( |
| | | <FormControl fullWidth> |
| | | <FormControl required fullWidth> |
| | | <InputLabel id="demo-select-small-label">{label}</InputLabel> |
| | | <Select |
| | | labelId="demo-select-small-label" |
| | |
| | | styled |
| | | } from '@mui/material'; |
| | | import DialogCloseButton from "../../components/DialogCloseButton"; |
| | | import { EDIT_MODE, DEFAULT_START_PAGE, DEFAULT_PAGE_SIZE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; |
| | | import { useTranslate, useNotify, useRefresh } from 'react-admin'; |
| | | import request from '@/utils/request'; |
| | | import { DataGrid } from '@mui/x-data-grid'; |
| | |
| | | const [tableData, setTableData] = useState([]); |
| | | const [dyFields, setDyFields] = useState([]); |
| | | const [selectedRows, setSelectedRows] = useState([]); |
| | | |
| | | const [page, setPage] = useState({ page: DEFAULT_START_PAGE, pageSize: DEFAULT_PAGE_SIZE }); |
| | | const [rowCount, setRowCount] = useState(0); |
| | | const [isLoading, setIsLoading] = useState(false); |
| | | const handleChange = (e) => { |
| | | const { name, value } = e.target; |
| | | setFormData(() => ({ |
| | |
| | | }; |
| | | |
| | | const getData = async () => { |
| | | setIsLoading(true) |
| | | const res = await request.post(`/matnr/page`, { |
| | | ...formData, |
| | | current: 1, |
| | | pageSize: 100, |
| | | current: page?.page, |
| | | pageSize: page?.pageSize, |
| | | orderBy: "create_time desc" |
| | | }); |
| | | if (res?.data?.code === 200) { |
| | | setTableData(res.data.data.records); |
| | | setRowCount(res.data?.data?.total); |
| | | |
| | | } else { |
| | | notify(res.data.msg); |
| | | } |
| | | setIsLoading(false) |
| | | |
| | | }; |
| | | |
| | | useEffect(() => { |
| | | getData(); |
| | | }, [open]); |
| | | }, [open, page]); |
| | | |
| | | const handleSearch = () => { |
| | | getData() |
| | |
| | | tableData={tableData} |
| | | setTableData={setTableData} |
| | | dyFields={dyFields} |
| | | page={page} |
| | | rowCount={rowCount} |
| | | setPage={setPage} |
| | | setDyFields={setDyFields} |
| | | selectedRows={selectedRows} |
| | | setSelectedRows={setSelectedRows} |
| | |
| | | |
| | | export default MatnrInfoModal; |
| | | |
| | | const AsnWareModalTable = ({ tableData, setTableData, selectedRows, setSelectedRows, dyFields, setDyFields }) => { |
| | | const AsnWareModalTable = ({ tableData, setTableData, page, isLoading, pageSize, setPage, rowCount, selectedRows, setSelectedRows, dyFields, setDyFields }) => { |
| | | const translate = useTranslate(); |
| | | const notify = useNotify(); |
| | | |
| | |
| | | disableColumnMenu={true} |
| | | disableColumnSorting |
| | | disableMultipleColumnsSorting |
| | | rowCount={rowCount} |
| | | paginationMode="server" |
| | | paginationModel={page} |
| | | onPaginationModelChange={setPage} |
| | | loading={isLoading} |
| | | slotProps={{ |
| | | loadingOverlay: { |
| | | variant: 'linear-progress', |
| | | noRowsVariant: 'linear-progress', |
| | | }, |
| | | }} |
| | | /> |
| | | </div> |
| | | ); |
| | |
| | | return acc; |
| | | }, {}); |
| | | return { |
| | | id: el.id, |
| | | matnrId: el.matnrId, |
| | | maktx: el.maktx, |
| | | matnrCode: el.matnrCode, |
| | |
| | | |
| | | return ( |
| | | <div style={{ height: 400, width: '100%' }}> |
| | | |
| | | <DataGrid |
| | | rows={tableData} |
| | | rowCount={rowCount} |
| | | columns={columns} |
| | | paginationMode="server" |
| | | paginationModel={page} |
| | | checkboxSelection |
| | | onPaginationModelChange={setPage} |
| | | onRowSelectionModelChange={handleSelectionChange} |
| | | selectionModel={selectedRows} |
| | | disableColumnMenu={true} |
| | | disableColumnSorting |
| | | disableMultipleColumnsSorting |
| | | loading={isLoading} |
| | | slotProps={{ |
| | | loadingOverlay: { |
| | |
| | | const [disabled, setDisabled] = useState(false); |
| | | const [selectedRows, setSelectedRows] = useState([]); |
| | | const [createDialog, setCreateDialog] = useState(false); |
| | | const [formData, setFormData] = useState({}); |
| | | const [formData, setFormData] = useState({ type: '1', orgAreaId: null, tarAreaId: null }); |
| | | const [list, setList] = useState([]); |
| | | |
| | | const handleClose = (event, reason) => { |
| | |
| | | } |
| | | } |
| | | |
| | | const newAddClick = () => { |
| | | if (formData.orgAreaId == null || formData.orgAreaId == undefined) { |
| | | notify("原库区不能为空!!", { type: 'error' }) |
| | | return |
| | | } |
| | | if (formData.tarAreaId == null || formData.tarAreaId == undefined) { |
| | | notify("目标库区不能为空!!", { type: 'error' }) |
| | | return |
| | | } |
| | | setCreateDialog(true) |
| | | } |
| | | |
| | | |
| | | const handleChange = (value, name) => { |
| | | setFormData((prevData) => ({ |
| | |
| | | variant="filled" |
| | | onChange={(e) => handleChange(e.target.value, 'type')} |
| | | dictTypeCode="sys_transfer_type" |
| | | required |
| | | /> |
| | | </Grid> |
| | | <Grid item md={2}> |
| | |
| | | value={formData.orgAreaId} |
| | | variant="filled" |
| | | dictTypeCode="warehouse" |
| | | required |
| | | onChange={(e) => handleChange(e.target.value, 'orgAreaId')} |
| | | label={translate("table.field.transfer.orgAreaName")} /> |
| | | </Grid> |
| | |
| | | value={formData.tarAreaId} |
| | | dictTypeCode="warehouse" |
| | | variant="filled" |
| | | required |
| | | onChange={(e) => handleChange(e.target.value, 'tarAreaId')} |
| | | /> |
| | | </Grid> |
| | |
| | | </SimpleForm> |
| | | <Box sx={{ mt: 2 }}> |
| | | <Stack direction="row" spacing={2} sx={{ justifyContent: "flex-end" }}> |
| | | <Button variant="contained" onClick={() => setCreateDialog(true)} > |
| | | <Button variant="contained" onClick={newAddClick} > |
| | | {translate('common.action.newAddMats')} |
| | | </Button> |
| | | <ConfirmButton label={"toolbar.delete"} variant="outlined" color="error" onConfirm={handleDeleteItem} /> |
| | |
| | | <TransferTableView |
| | | tabelData={tabelData} |
| | | setTableData={setTableData} |
| | | asnId={orderId} |
| | | orderId={orderId} |
| | | selectedRows={selectedRows} |
| | | setSelectedRows={setSelectedRows} |
| | | tableRef={tableRef}> |
| | |
| | | <CreateBySelectMats |
| | | open={createDialog} |
| | | setOpen={setCreateDialog} |
| | | selectedRows={selectedRows} |
| | | setSelectedRows={setSelectedRows} |
| | | data={tabelData} |
| | | setData={setTableData} |
| | | /> |
| | |
| | | |
| | | tableRef.current = useGridApiRef(); |
| | | |
| | | const tableIds = tabelData.map(map => map.id); |
| | | // setSelectedRows(tableIds); |
| | | // // console.log(selectedRows); |
| | | |
| | | |
| | | return ( |
| | | <Box> |
| | | <DataGrid |
| | |
| | | rows={tabelData} |
| | | columns={columns} |
| | | disableRowSelectionOnClick |
| | | getRowId={(row) => row.matnrId ? row.matnrId : row.id} |
| | | disableColumnFilter |
| | | disableColumnSelector |
| | | disableColumnSorting |
| | | disableMultipleColumnsSorting |
| | | processRowUpdate={processRowUpdate} |
| | | initialState={{ |
| | | pagination: { |
| | | paginationModel: { |
| | |
| | | pageSizeOptions={[15, 25, 50, 100]} |
| | | editMode="row" |
| | | checkboxSelection |
| | | rowSelectionModel={tableIds} |
| | | onRowSelectionModelChange={handleSelectionChange} |
| | | selectionModel={selectedRows} |
| | | sx={{ |
| | | height: 580, |
| | | '& .MuiDataGrid-cell input': { |
| | |
| | | }, |
| | | }} |
| | | /> |
| | | {/* <Box sx={{ |
| | | padding: 2, |
| | | position: 'absolute', |
| | | right: 1 |
| | | }}> |
| | | <Button variant="contained" onClick={() => handleSubmit()} startIcon={<SaveIcon/>} > |
| | | {translate('toolbar.confirm')} |
| | | </Button> |
| | | </Box> */} |
| | | </Box> |
| | | ); |
| | | }; |
| | |
| | | ASN_EXCE_STATUS_UN_EXCE("0", "未执行"), |
| | | ASN_EXCE_STATUS_EXCE_ING("1", "执行中"), |
| | | ASN_EXCE_STATUS_RECEIPT_DONE("2", "收货完成"), |
| | | ASN_EXCE_STATUS_TASK_DONE("3", "已完成"), |
| | | ASN_EXCE_STATUS_TASK_CANCEL("4", "取消"), |
| | | ASN_EXCE_STATUS_TASK_CLOSE("5", "已关闭"), |
| | | ASN_EXCE_STATUS_TASK_EXCE("3", "任务执行中"), |
| | | ASN_EXCE_STATUS_TASK_DONE("4", "已完成"), |
| | | ASN_EXCE_STATUS_TASK_CANCEL("8", "取消"), |
| | | ASN_EXCE_STATUS_TASK_CLOSE("9", "已关闭"), |
| | | |
| | | //PO单执行状态 |
| | | // PO_EXCE_STATUS_UN_EXCE("0", "未执行"), |
| | |
| | | import com.vincent.rsf.server.manager.entity.*; |
| | | import com.vincent.rsf.server.manager.enums.AsnExceStatus; |
| | | import com.vincent.rsf.server.manager.enums.OrderType; |
| | | import com.vincent.rsf.server.manager.enums.OrderWorkType; |
| | | import com.vincent.rsf.server.manager.enums.POExceStatus; |
| | | import com.vincent.rsf.server.manager.service.*; |
| | | import com.vincent.rsf.server.manager.service.impl.TransferOrderServiceImpl; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | |
| | | private AsnOrderLogService asnOrderLogService; |
| | | @Autowired |
| | | private AsnOrderItemLogService asnOrderItemLogService; |
| | | @Autowired |
| | | private TransferOrderService transferOrderService; |
| | | |
| | | /** |
| | | * @param |
| | |
| | | */ |
| | | @Scheduled(cron = "0/35 * * * * ? ") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void moveOrderToLog() { |
| | | public void InStockToLog() { |
| | | List<WkOrder> wkOrders = asnOrderService.list(new LambdaQueryWrapper<WkOrder>() |
| | | .eq(WkOrder::getType, OrderType.ORDER_IN.type) |
| | | .eq(WkOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val)); |
| | | .eq(WkOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_TASK_EXCE.val)); |
| | | if (wkOrders.isEmpty()) { |
| | | return; |
| | | } |
| | |
| | | public void outStockComplete() { |
| | | List<WkOrder> wkOrders = asnOrderService.list(new LambdaQueryWrapper<WkOrder>() |
| | | .eq(WkOrder::getType, OrderType.ORDER_OUT.type) |
| | | .eq(WkOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val) |
| | | .apply("anfme = work_qty") |
| | | .eq(WkOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_WORKING.val) |
| | | .apply("anfme = qty") |
| | | ); |
| | | if (wkOrders.isEmpty()) { |
| | | return; |
| | |
| | | * @time 2025/6/16 08:56 |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void moveOrderToLog(List<WkOrder> wkOrders, String type) throws Exception{ |
| | | public void moveOrderToLog(List<WkOrder> wkOrders, String type) { |
| | | Set<Long> longSet = wkOrders.stream().map(WkOrder::getId).collect(Collectors.toSet()); |
| | | List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>() |
| | | .in(WkOrderItem::getOrderId, longSet)); |
| | |
| | | } |
| | | |
| | | for (WkOrder order : wkOrders) { |
| | | AsnOrderLog one = asnOrderLogService.getOne(new LambdaQueryWrapper<AsnOrderLog>().eq(AsnOrderLog::getCode, order.getCode()), false); |
| | | if (Objects.isNull(one)) { |
| | | AsnOrderLog orderLog = new AsnOrderLog(); |
| | | if (type.equals(OrderType.ORDER_OUT.type)) { |
| | | order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val); |
| | |
| | | |
| | | //更新PO/DO单执行状态 |
| | | if (type.equals(OrderType.ORDER_IN.type)) { |
| | | if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.type)) { |
| | | order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val); |
| | | if (!asnOrderService.updateById(order)) { |
| | | throw new CoolException("单据状态更新失败!!"); |
| | | } |
| | | |
| | | List<TransferOrder> orders = transferOrderService.list(new LambdaQueryWrapper<TransferOrder>().eq(TransferOrder::getTransferId, order.getPoId())); |
| | | if (orders.isEmpty()) { |
| | | throw new CoolException("数据错误:关联表信息不存在!!"); |
| | | } |
| | | Set<Long> orderIds = orders.stream().map(TransferOrder::getOrderId).collect(Collectors.toSet()); |
| | | if (!asnOrderItemService.remove(new LambdaQueryWrapper<WkOrderItem>() |
| | | .in(WkOrderItem::getOrderId, orderIds))) { |
| | | throw new CoolException("原单据明细删除失败!!"); |
| | | } |
| | | if (!this.asnOrderService.removeByIds(orderIds)) { |
| | | throw new CoolException("原单据删除失败!!"); |
| | | } |
| | | return; |
| | | } else { |
| | | if (!Objects.isNull(order.getPoId())) { |
| | | if (!purchaseService.update(new LambdaUpdateWrapper<Purchase>() |
| | | purchaseService.update(new LambdaUpdateWrapper<Purchase>() |
| | | .set(Purchase::getExceStatus, POExceStatus.PO_EXCE_STATUS_ALL_DONE.val) |
| | | .eq(Purchase::getId, order.getPoId()))) { |
| | | throw new CoolException("PO单更新状态更新失败!!"); |
| | | .eq(Purchase::getId, order.getPoId())); |
| | | } |
| | | } |
| | | } else { |
| | | if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.type)) { |
| | | order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val); |
| | | if (!asnOrderService.updateById(order)) { |
| | | throw new CoolException("单据状态更新失败!!"); |
| | | } |
| | | //如果为调拔单执行完成,需检查调拔入库单是否完成,完成后才能删除单据信息 |
| | | return; |
| | | } else { |
| | | if (!Objects.isNull(order.getPoId())) { |
| | | if (!deliveryService.update(new LambdaUpdateWrapper<Delivery>() |
| | | deliveryService.update(new LambdaUpdateWrapper<Delivery>() |
| | | .eq(Delivery::getId, order.getPoId()) |
| | | .set(Delivery::getExceStatus, POExceStatus.PO_EXCE_STATUS_ALL_DONE.val))) { |
| | | throw new CoolException("DO单更新状态更新失败"); |
| | | .set(Delivery::getExceStatus, POExceStatus.PO_EXCE_STATUS_ALL_DONE.val)); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // if (!asnOrderItemService.remove(new LambdaQueryWrapper<WkOrderItem>() |
| | | // .in(WkOrderItem::getOrderId, longSet))) { |
| | | // throw new CoolException("原单据明细删除失败!!"); |
| | | // } |
| | | // if (!this.asnOrderService.removeByIds(longSet)) { |
| | | // throw new CoolException("原单据删除失败!!"); |
| | | // } |
| | | if (!asnOrderItemService.remove(new LambdaQueryWrapper<WkOrderItem>() |
| | | .eq(WkOrderItem::getOrderId, order.getId()))) { |
| | | throw new CoolException("原单据明细删除失败!!"); |
| | | } |
| | | if (!this.asnOrderService.removeById(order.getId())) { |
| | | throw new CoolException("原单据删除失败!!"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | R generateAGVTasks(WaitPakin waitPakins, String locCode, String orgSta, Long loginUserId); |
| | | |
| | | // R completeTask(String id); |
| | | void completeTask(List<Task> task) throws Exception; |
| | | |
| | | R removeTask(Long[] ids, Long loginUserId); |
| | |
| | | if (!this.remove(new LambdaQueryWrapper<WkOrder>().eq(WkOrder::getId, id))) { |
| | | throw new CoolException("主单删除失败!!"); |
| | | } |
| | | if (!outStockItemService.remove(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, id))) { |
| | | throw new CoolException("单据明细删除失败!!"); |
| | | } |
| | | outStockItemService.remove(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, id)); |
| | | return R.ok("操作成功"); |
| | | } |
| | | |
| | |
| | | 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)) { |
| | | // if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)) { |
| | | // |
| | | // } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type) || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)) { |
| | | // //53.拣料再入库 |
| | | // //57.盘点再入库 |
| | | // pickComplateInStock(task, loginUserId); |
| | | // } else if (task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { |
| | | // //移库 |
| | | // moveInStock(task, loginUserId); |
| | | // } |
| | | //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.拣料再入库 |
| | | //57.盘点再入库 |
| | | pickComplateInStock(task, loginUserId); |
| | | } else if (task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { |
| | | //移库 |
| | | moveInStock(task, loginUserId); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | @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)) { |
| | | //拣料出库 |
| | | complateOutStock(task, loginUserId); |
| | | } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)) { |
| | | //盘点出库 |
| | | complateOutStock(task, 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); |
| | | |
| | | } |
| | | WkOrderItem orderItem = asnOrderItemService.getById(key); |
| | | if (Objects.isNull(orderItem)) { |
| | | throw new CoolException("单据明细不存在!!"); |
| | | } |
| | |
| | | .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()); |
| | | wkOrder.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val); |
| | | 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(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("库存保存失败!!"); |
| | |
| | | * @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)) { |
| | |
| | | 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.setQty(qty).setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_EXCE.val); |
| | | if (!asnOrderService.updateById(order)) { |
| | | throw new CoolException("入库单状态修改失败!!"); |
| | | } |
| | | } |
| | | } |
| | | } |