| | |
| | | const { |
| | | dictTypeCode, |
| | | name, |
| | | group, |
| | | multiple = false, |
| | | perPage = 100, // 默认每页显示100条数据 |
| | | page = 1, // 默认第一页 |
| | |
| | | try { |
| | | const res = await request.post('/dictData/page', { |
| | | dictTypeCode, |
| | | group, |
| | | current: page, |
| | | pageSize: perPage |
| | | }); |
| | |
| | | import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; |
| | | import { |
| | | List, |
| | | DatagridConfigurable, |
| | |
| | | SelectColumnsButton, |
| | | EditButton, |
| | | FilterButton, |
| | | CreateButton, |
| | | ExportButton, |
| | | BulkDeleteButton, |
| | | useDataProvider, |
| | | WrapperField, |
| | | useRecordContext, |
| | |
| | | useNotify, |
| | | useRefresh, |
| | | useListContext, |
| | | FunctionField, |
| | | TextField, |
| | | NumberField, |
| | | DateField, |
| | |
| | | |
| | | import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; |
| | | import CreateNewFolderOutlinedIcon from '@mui/icons-material/CreateNewFolderOutlined'; |
| | | import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; |
| | | import PrintOutlinedIcon from '@mui/icons-material/PrintOutlined'; |
| | | import DictionarySelect from "../../components/DictionarySelect"; |
| | | import ConstructionIcon from "@mui/icons-material/Construction"; |
| | |
| | | }, |
| | | '& .opt': { |
| | | width: 220, |
| | | |
| | | }, |
| | | })); |
| | | |
| | |
| | | <TextInput source="poCode" label="table.field.asnOrder.poCode" />, |
| | | <NumberInput source="poId" label="table.field.asnOrder.poId" />, |
| | | <TextInput source="type" label="table.field.asnOrder.type" />, |
| | | <ReferenceInput source="wkType" reference="dictData" filter={{ dictTypeCode: 'sys_business_type' }} label="table.field.asnOrder.wkType"> |
| | | <ReferenceInput source="wkType" reference="dictData" filter={{ dictTypeCode: 'sys_business_type', group: "1" }} label="table.field.asnOrder.wkType" alwaysOn> |
| | | <AutocompleteInput label="table.field.asnOrder.wkType" optionValue="value" /> |
| | | </ReferenceInput>, |
| | | <NumberInput source="anfme" label="table.field.asnOrder.anfme" />, |
| | |
| | | { id: 1, name: ' 已释放' }, |
| | | ]} |
| | | />, |
| | | |
| | | <TextInput label="common.field.memo" source="memo" />, |
| | | <DictionarySelect |
| | | label='table.field.asnOrder.exceStatus' |
| | | name="exceStatus" |
| | | group="1" |
| | | dictTypeCode="sys_asn_exce_status" |
| | | alwaysOn |
| | | />, |
| | | |
| | | ] |
| | | |
| | | const AsnOrderList = (props) => { |
| | |
| | | MenuItem |
| | | |
| | | } from '@mui/material'; |
| | | |
| | | import { DataGrid, useGridApiRef, GRID_DATE_COL_DEF, GRID_DATETIME_COL_DEF, getGridDateOperators, useGridApiContext } from '@mui/x-data-grid'; |
| | | import { useForm, Controller, useWatch, FormProvider, useFormContext } from "react-hook-form"; |
| | | import { LocalizationProvider, DatePicker, DateTimePicker } from '@mui/x-date-pickers'; |
| | | import DialogCloseButton from "../../components/DialogCloseButton"; |
| | | import StatusSelectInput from "../../components/StatusSelectInput"; |
| | | import ConfirmButton from "../../components/ConfirmButton"; |
| | | import AsnWareModal from "./AsnWareModal"; |
| | | import { useForm, Controller, useWatch, FormProvider, useFormContext } from "react-hook-form"; |
| | | import SaveIcon from '@mui/icons-material/Save'; |
| | | import request from '@/utils/request'; |
| | | import { Add, Edit, Delete } from '@mui/icons-material'; |
| | | import _, { set } from 'lodash'; |
| | | import { DataGrid, useGridApiRef, GRID_DATE_COL_DEF, GRID_DATETIME_COL_DEF, getGridDateOperators, useGridApiContext } from '@mui/x-data-grid'; |
| | | import { LocalizationProvider, DatePicker, DateTimePicker } from '@mui/x-date-pickers'; |
| | | import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; |
| | | import DictionarySelect from "../../components/DictionarySelect"; |
| | | import DictSelect from "../../components/DictSelect"; |
| | | import "./asnOrder.css"; |
| | | import { 'zhCN' as locale } from 'date-fns/locale'; |
| | | import { format, } from 'date-fns'; |
| | | import { DemoContainer } from '@mui/x-date-pickers/internals/demo'; |
| | | import DictionarySelect from "../../components/DictionarySelect"; |
| | | import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; |
| | | import ConfirmButton from "../../components/ConfirmButton"; |
| | | import { Add, Edit, Delete } from '@mui/icons-material'; |
| | | import DictSelect from "../../components/DictSelect"; |
| | | import SaveIcon from '@mui/icons-material/Save'; |
| | | import AsnWareModal from "./AsnWareModal"; |
| | | import request from '@/utils/request'; |
| | | import _, { set } from 'lodash'; |
| | | import "./asnOrder.css"; |
| | | |
| | | |
| | | const AsnOrderModal = (props) => { |
| | | const { open, setOpen, asnId, billReload } = props; |
| | |
| | | |
| | | @Autowired |
| | | private TaskService taskService; |
| | | @Autowired |
| | | private TaskItemService taskItemService; |
| | | @Autowired |
| | | private WaitPakinService waitPakinService; |
| | | @Autowired |
| | | private LocService locService; |
| | | @Autowired |
| | | private ConfigServiceImpl configService; |
| | | |
| | | |
| | | @PreAuthorize("hasAuthority('manager:task:list')") |
| | | @PostMapping("/task/page") |
| | |
| | | moveOrderToLog(wkOrders, OrderType.ORDER_OUT.type); |
| | | } |
| | | |
| | | // /** |
| | | // * @author Ryan |
| | | // * @date 2025/7/30 |
| | | // * @description: 更新调拔单状态 |
| | | // * @version 1.0 |
| | | // */ |
| | | // @Scheduled(cron = "0/30 * * * * ? ") |
| | | // @Transactional(rollbackFor = Exception.class) |
| | | // public void updateTransferExc() { |
| | | // |
| | | // } |
| | | |
| | | |
| | | |
| | | /** |
| | | * @param |
| | | * @param type |
| | |
| | | import com.vincent.rsf.server.common.config.SysStockProperties; |
| | | import com.vincent.rsf.server.common.utils.DateUtils; |
| | | 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.POExceStatus; |
| | | import com.vincent.rsf.server.manager.enums.WarehouseAreasType; |
| | | import com.vincent.rsf.server.manager.enums.*; |
| | | import com.vincent.rsf.server.manager.service.*; |
| | | import com.vincent.rsf.server.manager.service.impl.WarehouseAreasItemServiceImpl; |
| | | import com.vincent.rsf.server.system.constant.GlobalConfigCode; |
| | |
| | | private WarehouseAreasItemServiceImpl warehouseAreasItemService; |
| | | @Autowired |
| | | private CompanysService companysService; |
| | | @Autowired |
| | | private TransferService transferService; |
| | | @Autowired |
| | | private OutStockService outStockService; |
| | | |
| | | /** |
| | | * @author Ryan |
| | |
| | | * @description: 直接组托开关为true,将收货单直接加入临时库存 |
| | | * @version 1.0 |
| | | */ |
| | | // @Scheduled(cron = "0 0/05 * * * ? ") |
| | | @Scheduled(cron = "0/25 * * * * ?") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public synchronized void IgnoreReceipt() { |
| | |
| | | .eq(WkOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val)); |
| | | if (!orders.isEmpty()) { |
| | | for (WkOrder order : orders) { |
| | | if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.type)) { |
| | | WkOrder one = outStockService.getOne(new LambdaQueryWrapper<WkOrder>() |
| | | .eq(WkOrder::getPoId, order.getPoId()) |
| | | .eq(WkOrder::getWkType, OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.type)); |
| | | if (Objects.isNull(one)) { |
| | | throw new CoolException("数据错误"); |
| | | } |
| | | if (!one.getExceStatus().equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val)) { |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, order.getId())); |
| | | if (orderItems.isEmpty()) { |
| | | return; |
| | |
| | | throw new CoolException("物料不存在!!"); |
| | | } |
| | | //更新收货区库存 |
| | | extracted(one, item, order, matnr); |
| | | try { |
| | | updateReceipt(one, item, order, matnr); |
| | | } catch (Exception e) { |
| | | throw new CoolException(e.getMessage()); |
| | | } |
| | | |
| | | if (!asnOrderItemService.update(new LambdaUpdateWrapper<WkOrderItem>().set(WkOrderItem::getQty, item.getAnfme()).eq(WkOrderItem::getId, item.getId()))) { |
| | | throw new CoolException("收货单明细完成数量修改失败!!"); |
| | |
| | | * @description: 收货区库存更新 |
| | | * @version 1.0 |
| | | */ |
| | | private void extracted(WarehouseAreas areasItem, WkOrderItem orderItem, WkOrder wkOrder, Matnr matnr) { |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void updateReceipt(WarehouseAreas areasItem, WkOrderItem orderItem, WkOrder wkOrder, Matnr matnr) throws Exception { |
| | | Companys companys = new Companys(); |
| | | if (StringUtils.isNoneBlank(orderItem.getSplrCode())) { |
| | | companys = companysService.getOne(new LambdaQueryWrapper<Companys>().eq(Companys::getCode, orderItem.getSplrCode())); |
| | |
| | | throw new CoolException("出库单明细保存失败!!"); |
| | | } |
| | | |
| | | transfer.setExceStatus(CheckExceStatus.CHECK_ORDER_STATUS_INIT.val); |
| | | transfer.setExceStatus(CheckExceStatus.CHECK_ORDER_STATUS_EXCE_ING.val); |
| | | |
| | | if (!this.updateById(transfer)) { |
| | | throw new CoolException("调拔单更新失败!!"); |