skyouc
13 小时以前 63250869b7059e1ffc108a16eaffc557f8a44689
调拔单功能优化
6个文件已修改
193 ■■■■ 已修改文件
rsf-admin/src/page/orders/transfer/ManualCreate.jsx 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TransferItem.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TransferType.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TransferItemService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferItemServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/transfer/ManualCreate.jsx
@@ -33,12 +33,12 @@
    Grid,
    Box,
} from '@mui/material';
import DialogCloseButton from "../../components/DialogCloseButton.jsx";
import ConfirmationNumberIcon from '@mui/icons-material/ConfirmationNumber';
import CreateBySelectMats from "./CreateBySelectMats.jsx";
import DialogCloseButton from "../../components/DialogCloseButton.jsx";
import { DataGrid, useGridApiRef } from '@mui/x-data-grid';
import { Add, Edit, Delete } from '@mui/icons-material';
import ConfirmButton from "../../components/ConfirmButton";
import CreateBySelectMats from "./CreateBySelectMats.jsx";
import { Add, Edit, Delete } from '@mui/icons-material';
import DictSelect from "../../components/DictSelect";
import { minHeight, padding } from "@mui/system";
import SaveIcon from '@mui/icons-material/Save';
@@ -60,16 +60,25 @@
        }
    };
    const setFinally = () => {
        const rows = tableRef.current.state.editRows;
        for (const key in rows) {
            const find = tabelData.find(item => item.matnrId === +key);
            find.anfme = rows[key].anfme.value;
        }
        setTableData([...tabelData]);
    }
    const handleSubmit = async () => {
        setFinally()
        setDisabled(true)
        if (asnId === 0) {
        if (orderId === 0) {
            const parmas = {
                "orders": formData,
                "items": tabelData,
            }
            const res = await request.post(`/outStock/items/save`, parmas);
            const res = await request.post(`/transfer/items/save`, parmas);
            if (res?.data?.code === 200) {
                setOpen(false);
                refresh();
@@ -82,7 +91,7 @@
                "orders": formData,
                "items": tabelData,
            }
            const res = await request.post(`/outStock/items/update`, parmas);
            const res = await request.post(`/transfer/items/update`, parmas);
            if (res?.data?.code === 200) {
                setOpen(false);
                refresh();
@@ -92,7 +101,6 @@
            }
        }
        setDisabled(false)
    };
    const handleSuccess = async (data) => {
@@ -109,6 +117,14 @@
        notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } });
    };
    const handleChange = (value, name) => {
        setFormData((prevData) => ({
            ...prevData,
            [name]: value
        }));
    };
    return (
        <>
            <Box sx={{ padding: 1 }}>
@@ -118,22 +134,21 @@
                            <Grid item md={2}>
                                <DictSelect
                                    label={translate("table.field.transfer.type")}
                                    value={formData.wkType}
                                    value={formData.type}
                                    variant="filled"
                                    group='2'
                                    onChange={(e) => handleChange(e.target.value, 'wkType')}
                                    dictTypeCode="sys_business_type"
                                    onChange={(e) => handleChange(e.target.value, 'type')}
                                    dictTypeCode="sys_transfer_type"
                                    required
                                />
                            </Grid>
                            <Grid item md={2}>
                                <ReferenceInput reference="warehouseAreas" source="name">
                                <ReferenceInput reference="warehouseAreas" source="orgAreaName">
                                    <AutocompleteInput optionText="name" label="table.field.transfer.orgAreaName" />
                                </ReferenceInput>
                            </Grid>
                            <Grid item md={2}>
                                <ReferenceInput reference="warehouseAreas" source="name">
                                    <AutocompleteInput optionText="name" label="table.field.transfer.orgAreaName" />
                                <ReferenceInput reference="warehouseAreas" source="tarAreaName">
                                    <AutocompleteInput optionText="name" label="table.field.transfer.tarAreaName" />
                                </ReferenceInput>
                            </Grid>
                        </Grid>
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TransferItem.java
@@ -1,16 +1,17 @@
package com.vincent.rsf.server.manager.entity;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import lombok.experimental.Accessors;
import org.checkerframework.checker.units.qual.A;
import org.springframework.format.annotation.DateTimeFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -22,6 +23,7 @@
import java.util.Date;
@Data
@Accessors(chain = true)
@TableName("man_transfer_item")
public class TransferItem implements Serializable {
@@ -100,6 +102,15 @@
    @ApiModelProperty(value= "供应商ID")
    private Long splrId;
    @TableField(exist = false)
    @ApiModelProperty("供应商编码")
    private String splrCode;
    @TableField(exist = false)
    @ApiModelProperty("供应商名称")
    private String splrName;
    /**
     * 规格
     */
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TransferType.java
@@ -14,7 +14,6 @@
    TRANSFER_TYPE_LOCAL("0", "本地调拔");
    private Integer val;
    private String desc;
    TransferType(String val, String desc) {
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TransferItemService.java
@@ -3,6 +3,9 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.vincent.rsf.server.manager.entity.TransferItem;
import java.util.Map;
public interface TransferItemService extends IService<TransferItem> {
    boolean fieldsSave(Map<String, Object> item, Long loginUserId);
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferItemServiceImpl.java
@@ -1,12 +1,73 @@
package com.vincent.rsf.server.manager.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.common.utils.FieldsUtils;
import com.vincent.rsf.server.manager.entity.Companys;
import com.vincent.rsf.server.manager.entity.WkOrderItem;
import com.vincent.rsf.server.manager.enums.CompanysType;
import com.vincent.rsf.server.manager.mapper.TransferItemMapper;
import com.vincent.rsf.server.manager.entity.TransferItem;
import com.vincent.rsf.server.manager.service.CompanysService;
import com.vincent.rsf.server.manager.service.TransferItemService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
import java.util.Objects;
@Service("transferItemService")
public class TransferItemServiceImpl extends ServiceImpl<TransferItemMapper, TransferItem> implements TransferItemService {
    @Autowired
    private CompanysService companysService;
    /**
     * @author Ryan
     * @date 2025/7/28
     * @description: 调拔单扩展字段保存
     * @version 1.0
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean fieldsSave(Map<String, Object> params, Long loginUserId) {
        TransferItem wkOrderItem = JSONObject.parseObject(JSONObject.toJSONString(params), TransferItem.class);
        if (StringUtils.isNoneBlank(wkOrderItem.getSplrCode())) {
            Companys companys = companysService.getOne(new LambdaQueryWrapper<Companys>()
                    .eq(Companys::getId, wkOrderItem.getSplrCode())
                    .eq(Companys::getType, CompanysType.COMPANYS_TYPE_SUPPLIER.val));
            if (!Objects.isNull(companys)) {
                wkOrderItem.setSplrId(companys.getId());
            }
        }
        if (Objects.isNull(wkOrderItem.getAnfme()) || Double.compare(wkOrderItem.getAnfme(), 0.0) <= 0) {
            throw new CoolException("计划数不能为空!!");
        }
        //保存扩展字段
        try {
            StringBuffer sb = new StringBuffer();
            if (Objects.isNull(wkOrderItem.getFieldsIndex()) || StringUtils.isBlank(wkOrderItem.getFieldsIndex())) {
                sb.append(wkOrderItem.getMatnrId() + wkOrderItem.getBatch() );
                //获取16位uuid
                String uuid16 = Cools.md5Chinese(sb.toString());
                wkOrderItem.setFieldsIndex(uuid16);
                params.put("index", uuid16);
            }
            //保存或更新动态字段值
            FieldsUtils.updateFieldsValue(params);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        wkOrderItem.setUpdateBy(loginUserId).setCreateBy(loginUserId);
        if (!this.saveOrUpdate(wkOrderItem)) {
            throw new CoolException("收货通知单明细保存失败!!");
        }
        return true;
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java
@@ -4,6 +4,7 @@
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.manager.controller.params.TransferItemParams;
import com.vincent.rsf.server.manager.entity.TransferItem;
import com.vincent.rsf.server.manager.entity.WkOrder;
import com.vincent.rsf.server.manager.entity.WkOrderItem;
import com.vincent.rsf.server.manager.enums.AsnExceStatus;
@@ -12,11 +13,14 @@
import com.vincent.rsf.server.manager.enums.OrderType;
import com.vincent.rsf.server.manager.mapper.TransferMapper;
import com.vincent.rsf.server.manager.entity.Transfer;
import com.vincent.rsf.server.manager.service.AsnOrderItemService;
import com.vincent.rsf.server.manager.service.TransferItemService;
import com.vincent.rsf.server.manager.service.TransferService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -25,6 +29,9 @@
@Service("transferService")
public class TransferServiceImpl extends ServiceImpl<TransferMapper, Transfer> implements TransferService {
    @Autowired
    private TransferItemService transferItemService;
    /**
     * @author Ryan
@@ -68,25 +75,29 @@
    }
    /**
     * @author Ryan
     * @date 2025/7/28
     * @description: 调拔单据修改
     * @version 1.0
     */
    private void svaeOrUpdateOrderItem(TransferItemParams params, Long loginUserId) {
//        Transfer orders = params.getTransfer();
//        params.getItems().forEach(item -> {
//            item.put("orderId", orders.getId());
//            item.put("orderCode", orders.getCode());
//            item.put("poCode", orders.getPoCode());
//            item.put("createBy", loginUserId);
//            item.put("updateBy", loginUserId);
//            if (!asnOrderItemService.fieldsSave(item, loginUserId)) {
//                throw new CoolException("明细保存失败!!");
//            }
//        });
//        List<WkOrderItem> orderItems = checkOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
//                .eq(WkOrderItem::getOrderId, params.getOrders().getId()));
//        Double sum = orderItems.stream().mapToDouble(WkOrderItem::getAnfme).sum();
//        orders.setAnfme(sum);
//        if (!this.updateById(orders)) {
//            throw new CoolException("计划收货数量修改失败!!");
//        }
        Transfer orders = params.getTransfer();
        params.getItems().forEach(item -> {
            item.put("transferId", orders.getId());
            item.put("transferCode", orders.getCode());
            item.put("createBy", loginUserId);
            item.put("updateBy", loginUserId);
            if (!transferItemService.fieldsSave(item, loginUserId)) {
                throw new CoolException("明细保存失败!!");
            }
        });
//        List<TransferItem> orderItems = transferItemService.list(new LambdaQueryWrapper<TransferItem>()
//                .eq(TransferItem::getTransferId, params.getTransfer().getId()));
//        Double sum = orderItems.stream().mapToDouble(TransferItem::getAnfme).sum();
        if (!this.updateById(orders)) {
            throw new CoolException("计划收货数量修改失败!!");
        }
    }
@@ -98,6 +109,23 @@
     */
    @Override
    public R updateTransfer(TransferItemParams params, Long loginUserId) {
        return null;
        Transfer orders = params.getTransfer();
        if (Objects.isNull(orders)) {
            throw new CoolException("主单信息不能为空!!");
        }
        if (Objects.isNull(orders.getId())) {
            throw new CoolException("数据错误:单据ID不能为空!!");
        }
        if (!this.updateById(orders)) {
            throw new CoolException("主单修改失败!!");
        }
        if (Objects.isNull(params.getItems()) || params.getItems().isEmpty()) {
            return R.ok("明细参数不能为空!!");
        }
        svaeOrUpdateOrderItem(params, loginUserId);
        return R.ok("修改完成!!");
    }
}