skyouc
2025-05-04 6a4497d2fcd015f73856ce0f75e2c2832362c88f
5.4问题修复
9个文件已修改
192 ■■■■ 已修改文件
rsf-admin/src/page/histories/taskLog/TaskLogList.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemEdit.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/histories/taskLog/TaskLogList.jsx
@@ -62,7 +62,6 @@
    <SearchInput source="condition" alwaysOn />,
    <DateInput label='common.time.after' source="timeStart" alwaysOn />,
    <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
    <NumberInput source="taskId" label="table.field.taskLog.taskId" />,
    <TextInput source="taskCode" label="table.field.taskLog.taskCode" />,
    <NumberInput source="taskStatus" label="table.field.taskLog.taskStatus" />,
@@ -79,7 +78,6 @@
    <TextInput source="expCode" label="table.field.taskLog.expCode" />,
    <DateInput source="startTime" label="table.field.taskLog.startTime" />,
    <DateInput source="endTime" label="table.field.taskLog.endTime" />,
    <TextInput label="common.field.memo" source="memo" />,
    <SelectInput
        label="common.field.status"
rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx
@@ -59,7 +59,7 @@
                    defaultValues={{}}
                >
                    <Grid container width={{ xs: '100%', xl: '100%' }}>
                        <Grid item xs={12} md={8}>
                        <Grid item xs={24} md={12}>
                            <Typography variant="h6" gutterBottom>
                                {translate('common.edit.title.main')}
                            </Typography>
@@ -80,8 +80,7 @@
                                        { id: 1, name: ' 是' },
                                    ]}
                                />
                            </Stack>
                            <Stack direction='row' gap={2}>
                                <TextInput
                                    label="table.field.waitPakin.barcode"
                                    readOnly
rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx
@@ -119,25 +119,25 @@
                    preferenceKey='waitPakinItem'
                    bulkActionButtons={false}
                    rowClick={(id, resource, record) => false}
                    omit={['id', 'pakinId', 'createTime', 'createBy', 'memo', 'fieldsIndex']}
                    omit={['id', 'pakinId', 'createTime',  'matnrId', 'createBy', 'memo', 'fieldsIndex']}
                >
                    <NumberField source="id" />
                    <NumberField source="pakinId" label="table.field.waitPakinItem.pakinId" />
                    <TextField source="maktx" label="table.field.waitPakinItem.maktx" />
                    <NumberField source="matnrId" label="table.field.waitPakinItem.matnrId" />
                    <TextField source="matnrCode" label="table.field.waitPakinItem.matnrCode" />
                    <TextField source="maktx" label="table.field.waitPakinItem.maktx" />
                    <TextField source="batch" label="table.field.waitPakinItem.batch" />
                    <NumberField source="matnrId" label="table.field.waitPakinItem.matnrId" />
                    <NumberField source="anfme" label="table.field.waitPakinItem.anfme" />
                    <NumberField source="workQty" label="table.field.waitPakinItem.workQty" />
                    <TextField source="unit" label="table.field.waitPakinItem.unit" />
                    <NumberField source="workQty" label="table.field.waitPakinItem.workQty" />
                    <TextField source="fieldsIndex" label="table.field.waitPakinItem.fieldsIndex" />
                    <NumberField source="qty" label="table.field.waitPakinItem.qty" />
                    <TextField source="batch" label="table.field.waitPakinItem.batch" />
                    <TextField source="updateBy$" label="common.field.updateBy" />
                    <DateField source="updateTime" label="common.field.updateTime" showTime />
                    <TextField source="createBy$" label="common.field.createBy"  />
                    <TextField source="flagDefect" label="common.field.createBy"  />
                    {/* <TextField source="flagDefect" label="common.field.flagDefect"  /> */}
                    <DateField source="createTime" label="common.field.createTime" showTime />
                    <BooleanField source="statusBool" label="common.field.status" sortable={false} />
                    {/* <BooleanField source="statusBool" label="common.field.status" sortable={false} /> */}
                    <TextField source="memo" label="common.field.memo" sortable={false} />
                </StyledDatagrid>
            </List>
rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemEdit.jsx
@@ -175,7 +175,7 @@
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="table.field.warehouseAreasItem.splrBtch"
                                source="splrBtch"
                                source="splrBatch"
                                parse={v => v}
                            />
                        </Stack>
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -334,31 +334,16 @@
                throw new CoolException("收货失败!!");
            }
        }
//        if (!warehouseAreasItemService.saveBatch(allOrders)) {
//            throw new CoolException("收货失败!!");
//        }
        AsnOrder order = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getCode, asnCode));
        if (order.getQty().compareTo(order.getAnfme()) >= 0.00) {
            order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val).setRleStatus(Short.valueOf("1"));
            order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val).setRleStatus(Short.valueOf("1"));
            if (!asnOrderMapper.updateById(order)) {
                throw new CoolException("订单状态修改失败!!");
            }
        }
        //获取采购数量
//        double purQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getPurQty).sum();
//        BigDecimal subtract = BigDecimal.valueOf(receiptQty).subtract(BigDecimal.valueOf(purQty));
//        //判断已收货数量是否小于等于采购数量
//        if (subtract.compareTo(new BigDecimal("0.0")) <= 0) {
//            asnOrder.setRleStatus(Short.valueOf("1"));
//            //日志表操作
//            operateOrderLogs(asnOrder);
//        }
        return R.ok(asnOrder);
        return R.ok("收货成功!!");
    }
    /**
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java
@@ -12,17 +12,17 @@
    //质检状态
    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", "已关闭"),
    OUT_STOCK_STATUS_TASK_INIT("5", "初始化"),
    OUT_STOCK_STATUS_TASK_EXCE("6", "待处理"),
    OUT_STOCK_STATUS_TASK_WAVE("7", "生成波次"),
    OUT_STOCK_STATUS_TASK_WORKING("8", "作业中")
    OUT_STOCK_STATUS_TASK_INIT("11", "初始化"),
    OUT_STOCK_STATUS_TASK_EXCE("12", "待处理"),
    OUT_STOCK_STATUS_TASK_WAVE("13", "生成波次"),
    OUT_STOCK_STATUS_TASK_WORKING("14", "作业中")
    ;
    AsnExceStatus(String val, String desc) {
        this.val = Short.parseShort(val);
@@ -47,6 +47,8 @@
            return AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.desc;
        } else if (val.equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_EXCE.val)) {
            return AsnExceStatus.OUT_STOCK_STATUS_TASK_EXCE.desc;
        } else if (val.equals(AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val)) {
            return AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.desc;
        } else {
            return null;
        }
@@ -63,10 +65,12 @@
            return AsnExceStatus.ASN_EXCE_STATUS_TASK_CANCEL.val;
        } else if (desc.equals(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.desc)) {
            return AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val;
        }else if (desc.equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.desc)) {
        } else if (desc.equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.desc)) {
            return AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val;
        } else if (desc.equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_EXCE.desc)) {
            return AsnExceStatus.OUT_STOCK_STATUS_TASK_EXCE.val;
        } else if (desc.equals(AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.desc)) {
            return AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val;
        } else {
            return null;
        }
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java
@@ -1,15 +1,27 @@
package com.vincent.rsf.server.manager.schedules;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.manager.entity.AsnOrder;
import com.vincent.rsf.server.manager.entity.AsnOrderItem;
import com.vincent.rsf.server.manager.entity.AsnOrderItemLog;
import com.vincent.rsf.server.manager.entity.AsnOrderLog;
import com.vincent.rsf.server.manager.enums.AsnExceStatus;
import com.vincent.rsf.server.manager.service.AsnOrderItemLogService;
import com.vincent.rsf.server.manager.service.AsnOrderItemService;
import com.vincent.rsf.server.manager.service.AsnOrderLogService;
import com.vincent.rsf.server.manager.service.AsnOrderService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
/**
 * @author Ryan
@@ -21,6 +33,17 @@
@Component
public class AsnOrderLogSchedule {
    @Autowired
    private AsnOrderService asnOrderService;
    @Autowired
    private AsnOrderItemService asnOrderItemService;
    @Autowired
    private AsnOrderLogService asnOrderLogService;
    @Autowired
    private AsnOrderItemLogService asnOrderItemLogService;
    /**
     * @author Ryan
     * @description 删除已完成订单加入Log表
@@ -31,6 +54,47 @@
    @Scheduled(cron = "0 0/05 * * * ?  ")
    @Transactional(rollbackFor = Exception.class)
    public void moveOrderToLog() {
        List<AsnOrder> asnOrders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val));
        if (asnOrders.isEmpty()) {
            return;
        }
        Set<Long> longSet = asnOrders.stream().map(AsnOrder::getId).collect(Collectors.toSet());
        List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getAsnId, longSet));
        if (orderItems.isEmpty()) {
            throw new CoolException("收货明细为空!!");
        }
        for (AsnOrder order : asnOrders) {
            AsnOrderLog orderLog = new AsnOrderLog();
            BeanUtils.copyProperties(order, orderLog);
            orderLog.setId(null);
            orderLog.setAsnId(order.getId());
            if (!asnOrderLogService.save(orderLog)) {
                throw new CoolException("主单历史档添加失败!!");
            }
            List<AsnOrderItemLog> logs = new ArrayList<>();
            List<AsnOrderItem> items = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, order.getId()));
            items.forEach(item -> {
                AsnOrderItemLog itemLog = new AsnOrderItemLog();
                BeanUtils.copyProperties(item, itemLog);
                itemLog.setAsnItemId(itemLog.getId())
                        .setLogId(orderLog.getId())
                        .setAsnId(item.getAsnId());
                logs.add(itemLog);
            });
            if (!asnOrderItemLogService.saveBatch(logs)) {
                throw new CoolException("通知单明细历史档保存失败!!");
            }
        }
        if (!asnOrderItemService.remove(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getAsnId, longSet))) {
            throw new CoolException("原单据明细删除失败!!");
        }
        if (!this.asnOrderService.removeByIds(longSet)) {
            throw new CoolException("原单据删除失败!!");
        }
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
@@ -272,15 +272,15 @@
//        }
        AsnOrder order = this.getById(asrder.getId());
        AsnOrderLog orderLog = new AsnOrderLog();
        order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val);
//        order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val);
        BeanUtils.copyProperties(order, orderLog);
        orderLog.setId(null);
        orderLog.setAsnId(order.getId());
        if (!this.saveOrUpdate(order)) {
            throw new CoolException("状态修改失败!!");
        }
        orderLog.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val);
//        if (!this.saveOrUpdate(order)) {
//            throw new CoolException("状态修改失败!!");
//        }
//        orderLog.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val);
        if (!asnOrderLogService.save(orderLog)) {
            throw new CoolException("主单历史档添加失败!!");
        }
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -87,66 +87,6 @@
     * @param
     * @return
     * @author Ryan
     * @description 删除原主单及明细,加入历史档
     * @time 2025/3/19 19:53
     */
    @Transactional(rollbackFor = Exception.class)
    private void operateOrderLogs(AsnOrder asrder) throws Exception {
        if (Objects.isNull(asrder) || Objects.isNull(asrder.getId())) {
            throw new CoolException("参数不能为空!!");
        }
        asrder.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val);
        if (!this.updateById(asrder)) {
            throw new CoolException("单据关闭失败!!");
        }
        List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, asrder.getId()));
        if (orderItems.isEmpty()) {
            throw new CoolException("收货明细为空!!");
        }
//        if (Objects.isNull(asrder.getAnfme()) || asrder.getAnfme().compareTo(0.00) == 0) {
//            throw new CoolException("收货数量不能为零!!");
//        }
        AsnOrder order = this.getById(asrder.getId());
        AsnOrderLog orderLog = new AsnOrderLog();
        order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val);
        BeanUtils.copyProperties(order, orderLog);
        orderLog.setId(null);
        orderLog.setAsnId(order.getId());
        if (!this.saveOrUpdate(order)) {
            throw new CoolException("状态修改失败!!");
        }
        orderLog.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val);
        if (!asnOrderLogService.save(orderLog)) {
            throw new CoolException("主单历史档添加失败!!");
        }
        List<AsnOrderItemLog> logs = new ArrayList<>();
        List<AsnOrderItem> items = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, order.getId()));
        items.forEach(item -> {
            AsnOrderItemLog itemLog = new AsnOrderItemLog();
            BeanUtils.copyProperties(item, itemLog);
            itemLog.setAsnItemId(itemLog.getId())
                    .setLogId(orderLog.getId())
                    .setAsnId(item.getAsnId());
            logs.add(itemLog);
        });
        if (!asnOrderItemLogService.saveBatch(logs)) {
            throw new CoolException("通知单明细历史档保存失败!!");
        }
        if (!asnOrderItemService.remove(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, order.getId()))) {
            throw new CoolException("原单据明细删除失败!!");
        }
        if (!this.removeById(asrder.getId())) {
            throw new CoolException("原单据删除失败!!");
        }
    }
    /**
     * @param
     * @return
     * @author Ryan
     * @description 取消出库单据
     * @time 2025/4/22 10:40
     */