skyouc
3 天以前 e2f5d7f8e9818977b0eb3b163447c10f8caca2b5
调拔单功能优化
7个文件已修改
100 ■■■■■ 已修改文件
rsf-admin/src/page/components/DictionarySelect.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/components/DictionarySelect.jsx
@@ -11,6 +11,7 @@
    const { 
        dictTypeCode, 
        name, 
        group,
        multiple = false, 
        perPage = 100,  // 默认每页显示100条数据
        page = 1,       // 默认第一页
@@ -30,6 +31,7 @@
        try {
            const res = await request.post('/dictData/page', { 
                dictTypeCode,
                group,
                current: page,
                pageSize: perPage
            });
rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
@@ -1,4 +1,3 @@
import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
import {
  List,
  DatagridConfigurable,
@@ -7,9 +6,6 @@
  SelectColumnsButton,
  EditButton,
  FilterButton,
  CreateButton,
  ExportButton,
  BulkDeleteButton,
  useDataProvider,
  WrapperField,
  useRecordContext,
@@ -17,7 +13,6 @@
  useNotify,
  useRefresh,
  useListContext,
  FunctionField,
  TextField,
  NumberField,
  DateField,
@@ -39,6 +34,7 @@
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";
@@ -83,7 +79,6 @@
  },
  '& .opt': {
    width: 220,
  },
}));
@@ -93,7 +88,7 @@
  <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" />,
@@ -106,15 +101,14 @@
      { 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) => {
rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx
@@ -44,24 +44,24 @@
    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;
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
@@ -37,15 +37,6 @@
    @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")
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java
@@ -85,6 +85,20 @@
        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
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
@@ -7,10 +7,7 @@
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;
@@ -61,6 +58,10 @@
    private WarehouseAreasItemServiceImpl warehouseAreasItemService;
    @Autowired
    private CompanysService companysService;
    @Autowired
    private TransferService transferService;
    @Autowired
    private OutStockService outStockService;
    /**
     * @author Ryan
@@ -68,7 +69,6 @@
     * @description: 直接组托开关为true,将收货单直接加入临时库存
     * @version 1.0
     */
//    @Scheduled(cron = "0 0/05 * * * ?  ")
    @Scheduled(cron = "0/25 * * * * ?")
    @Transactional(rollbackFor = Exception.class)
    public synchronized void IgnoreReceipt() {
@@ -85,6 +85,18 @@
                .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;
@@ -109,7 +121,11 @@
                        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("收货单明细完成数量修改失败!!");
@@ -136,7 +152,8 @@
     * @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()));
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java
@@ -243,7 +243,7 @@
            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("调拔单更新失败!!");