skyouc
8 天以前 c731084698d89c12c23180f57598d521abb97a23
质检功能优化
14个文件已修改
348 ■■■■■ 已修改文件
rsf-admin/.env 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/zh.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/qlyInspect/InspectModal.jsx 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/QlyIsptItemMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/application-dev.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/manager/QlyIsptItemMapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/.env
@@ -1,3 +1,3 @@
VITE_BASE_IP=192.168.4.50
VITE_BASE_IP=192.168.4.56
# VITE_BASE_IP=47.76.147.249
VITE_BASE_PORT=8080
rsf-admin/src/i18n/zh.js
@@ -482,7 +482,7 @@
                dlyQty: "送货数量",
                disQty: "不合数量",
                safeQty: "合格数量",
                anfme: '数量',
                anfme: '已检数量',
                picPath: "图片路径",
                trackCode: "条形码",
            },
rsf-admin/src/page/orders/qlyInspect/InspectModal.jsx
@@ -80,7 +80,7 @@
    const getData = async () => {
        const res = await request.post(`/qlyIsptItem/page`, { ispectId, isptStatus: '0' });
        const res = await request.post(`/qlyIsptItem/ispts/page`, { ispectId });
        if (res?.data?.code === 200) {
            const data = res.data.data.records.map(item => {
                return {
@@ -221,10 +221,10 @@
            ),
        },
        {
            field: 'isptResult', headerName: translate('table.field.qlyIsptItem.isptResult'), width: 150, type: 'singleSelect',
            editable: true, valueOptions: [{ value: '1', label: '合格' }, { value: '2', label: '不合格' }, { value: '3', label: '待定' }, { value: '4', label: '部分合格' }],
        },
        // {
        //     field: 'isptResult', headerName: translate('table.field.qlyIsptItem.isptResult'), width: 150, type: 'singleSelect',
        //     editable: true, valueOptions: [{ value: '1', label: '合格' }, { value: '2', label: '不合格' }, { value: '3', label: '待定' }, { value: '4', label: '部分合格' }],
        // },
    ])
    const processRowUpdate = (newRow, oldRow) => {
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java
@@ -225,7 +225,7 @@
        if (Objects.isNull(params) || params.isEmpty()) {
            return R.error("参数不能为空!!");
        }
        return mobileService.checkUpdate(params);
        return mobileService.checkUpdate(params, getLoginUserId());
    }
    @ApiOperation("获取上架信息")
rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
@@ -49,7 +49,7 @@
    R checkObjs(CheckObjParams params);
    R checkUpdate(List<QlyIsptItem> params);
    R checkUpdate(List<QlyIsptItem> params, Long loginUserId);
    R operateToStock(OpStockParams params);
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -2,7 +2,6 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
@@ -630,16 +629,17 @@
     * 快速质检
     *
     * @param params
     * @param loginUserId
     * @return
     */
    @Override
    public R checkUpdate(List<QlyIsptItem> params) {
    public R checkUpdate(List<QlyIsptItem> params, Long loginUserId) {
        if (Objects.isNull(params) || params.isEmpty()) {
            throw new CoolException("参数不能为空!!");
        }
        IsptItemsParams itemsParams = new IsptItemsParams();
        itemsParams.setIsptItem(params).setType("0");
        if (qlyIsptItemService.batchUpdate(itemsParams)) {
        if (qlyIsptItemService.batchUpdate(itemsParams, loginUserId)) {
            return R.ok();
        } else {
            return R.error("保存失败!!");
rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java
@@ -48,7 +48,8 @@
                        "sys_user_role",
                        "sys_role_menu",
                        "sys_menu",
                        "man_loc_type_rela"
                        "man_loc_type_rela",
                        "man_qly_inspect_result"
                ).contains(tableName);
            }
        };
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java
@@ -1,6 +1,8 @@
package com.vincent.rsf.server.manager.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
@@ -12,8 +14,6 @@
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.common.utils.FieldsUtils;
import com.vincent.rsf.server.manager.controller.params.IsptItemsParams;
import com.vincent.rsf.server.manager.controller.params.QlyInspectAndItem;
import com.vincent.rsf.server.manager.entity.AsnOrderItem;
import com.vincent.rsf.server.manager.entity.QlyIsptItem;
import com.vincent.rsf.server.manager.service.QlyIsptItemService;
import com.vincent.rsf.server.system.controller.BaseController;
@@ -38,9 +38,9 @@
    public R page(@RequestBody Map<String, Object> map) {
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<QlyIsptItem, BaseParam> pageParam = new PageParam<>(baseParam, QlyIsptItem.class);
        QueryWrapper<QlyIsptItem> queryWrapper = pageParam.buildWrapper(true);
        /**拼接扩展字段*/
        PageParam<QlyIsptItem, BaseParam> page = qlyIsptItemService.page(pageParam, pageParam.buildWrapper(true));
        PageParam<QlyIsptItem, BaseParam> page = qlyIsptItemService.page(pageParam, queryWrapper);
        List<QlyIsptItem> records = page.getRecords();
        for (QlyIsptItem record : records) {
            if (!Objects.isNull(record.getFieldsIndex())) {
@@ -51,6 +51,33 @@
        page.setRecords(records);
        return R.ok(page);
    }
    /**
     * @author Ryan
     * @date 2025/5/12
     * @description: 获取质检信息修改
     * @version 1.0
     */
    @PreAuthorize("hasAuthority('manager:qlyIsptItem:list')")
    @PostMapping("/qlyIsptItem/ispts/page")
    public R getQlyList(@RequestBody Map<String, Object> map) {
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<QlyIsptItem, BaseParam> pageParam = new PageParam<>(baseParam, QlyIsptItem.class);
        QueryWrapper<QlyIsptItem> queryWrapper = pageParam.buildWrapper(true);
        IPage<QlyIsptItem> page = qlyIsptItemService.pageByWrapper(pageParam, queryWrapper);
        List<QlyIsptItem> records = page.getRecords();
        for (QlyIsptItem record : records) {
            if (!Objects.isNull(record.getFieldsIndex())) {
                Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex());
                record.setExtendFields(fields);
            }
        }
        page.setRecords(records);
        return R.ok(page);
    }
    @PreAuthorize("hasAuthority('manager:qlyIsptItem:list')")
@@ -134,7 +161,7 @@
        if (Objects.isNull(params)) {
            throw new CoolException("参数不能为空!!");
        }
        if (qlyIsptItemService.batchUpdate(params)) {
        if (qlyIsptItemService.batchUpdate(params, getLoginUserId())) {
            return R.ok("修改成功!!");
        } else  {
            return R.error("修改失败!!");
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java
@@ -9,14 +9,16 @@
 */
public enum OrderWorkType {
    //订单类型
    ORDER_WORK_TYPE_DONE_IN("1", "完工入库单"),
    ORDER_WORK_TYPE_PROD("2", "生产领料单"),
    ORDER_WORK_TYPE_PURCHASE("3", "外购收货"),
    ORDER_WORK_TYPE_SALE("4", "销售订单"),
    ORDER_WORK_TYPE_RETURN("5", "生产退料单"),
    ORDER_WORK_TYPE_SUPPLIER("6", "退货供应商出货单"),
    ORDER_WORK_TYPE_RETURN_ORDER("7", "销售退货入库单")
    ;
    ORDER_WORK_TYPE_DONE_IN("1", "采购入库单"),
    ORDER_WORK_TYPE_PROD("2", "生产入库单"),
    ORDER_WORK_TYPE_PURCHASE("3", "领料退回入库单"),
    ORDER_WORK_TYPE_SALE("4", "销售退回入库单"),
    ORDER_WORK_TYPE_RETURN("5", "其它入库单"),
    ORDER_WORK_TYPE_SUPPLIER("11", "销售出库单"),
    ORDER_WORK_TYPE_RETURN_ORDER("12", "领料出库单"),
    ORDER_WORK_TYPE_PURCHASE_RETURN("13", "采购退回出库单"),
    ORDER_WORK_TYPE_OTHER("14", "其它出库单");
    OrderWorkType(String type, String desc) {
        this.type = type;
@@ -27,22 +29,26 @@
    public String desc;
    public static String getWorkType(String desc) {
            if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_DONE_IN.desc)) {
                return OrderWorkType.ORDER_WORK_TYPE_DONE_IN.type;
            } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_PROD.desc)) {
                return OrderWorkType.ORDER_WORK_TYPE_PROD.type;
            } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_PURCHASE.desc)) {
                return OrderWorkType.ORDER_WORK_TYPE_PURCHASE.type;
            } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SALE.desc)) {
                return OrderWorkType.ORDER_WORK_TYPE_SALE.type;
            } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN.desc)) {
                return OrderWorkType.ORDER_WORK_TYPE_RETURN.type;
            } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.desc)) {
                return OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.type;
            }else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.desc)) {
                return OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.type;
            }
            return null;
        if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_DONE_IN.desc)) {
            return OrderWorkType.ORDER_WORK_TYPE_DONE_IN.type;
        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_PROD.desc)) {
            return OrderWorkType.ORDER_WORK_TYPE_PROD.type;
        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_PURCHASE.desc)) {
            return OrderWorkType.ORDER_WORK_TYPE_PURCHASE.type;
        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SALE.desc)) {
            return OrderWorkType.ORDER_WORK_TYPE_SALE.type;
        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN.desc)) {
            return OrderWorkType.ORDER_WORK_TYPE_RETURN.type;
        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.desc)) {
            return OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.type;
        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.desc)) {
            return OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.type;
        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_PURCHASE_RETURN.desc)) {
            return OrderWorkType.ORDER_WORK_TYPE_PURCHASE_RETURN.type;
        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_OTHER.desc)) {
            return OrderWorkType.ORDER_WORK_TYPE_OTHER.type;
        }
        return null;
    }
    public static String getWorkDesc(String type) {
@@ -58,8 +64,12 @@
            return OrderWorkType.ORDER_WORK_TYPE_RETURN.desc;
        } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.type)) {
            return OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.desc;
        }else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.type)) {
        } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.type)) {
            return OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.desc;
        }else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_PURCHASE_RETURN.type)) {
            return OrderWorkType.ORDER_WORK_TYPE_PURCHASE_RETURN.desc;
        } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_OTHER.type)) {
            return OrderWorkType.ORDER_WORK_TYPE_OTHER.desc;
        }
        return null;
    }
rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/QlyIsptItemMapper.java
@@ -1,12 +1,19 @@
package com.vincent.rsf.server.manager.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.vincent.rsf.server.common.domain.BaseParam;
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.manager.entity.QlyIsptItem;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface QlyIsptItemMapper extends BaseMapper<QlyIsptItem> {
    IPage<QlyIsptItem> pageByWrapper(PageParam<QlyIsptItem, BaseParam> pageParam, @Param(Constants.WRAPPER) QueryWrapper<QlyIsptItem> queryWrapper);
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyIsptItemService.java
@@ -1,12 +1,16 @@
package com.vincent.rsf.server.manager.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.common.domain.BaseParam;
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.manager.controller.params.IsptItemsParams;
import com.vincent.rsf.server.manager.controller.params.QlyInspectAndItem;
import com.vincent.rsf.server.manager.entity.QlyIsptItem;
public interface QlyIsptItemService extends IService<QlyIsptItem> {
    boolean batchUpdate(IsptItemsParams params);
    boolean batchUpdate(IsptItemsParams params, Long loginUserId);
    IPage<QlyIsptItem> pageByWrapper(PageParam<QlyIsptItem, BaseParam> pageParam, QueryWrapper<QlyIsptItem> queryWrapper);
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java
@@ -1,16 +1,16 @@
package com.vincent.rsf.server.manager.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.vincent.rsf.framework.common.R;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.common.domain.BaseParam;
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.manager.controller.params.IsptItemsParams;
import com.vincent.rsf.server.manager.controller.params.QlyInspectAndItem;
import com.vincent.rsf.server.manager.entity.AsnOrderItem;
import com.vincent.rsf.server.manager.entity.QlyInspect;
import com.vincent.rsf.server.manager.entity.QlyInspectResult;
import com.vincent.rsf.server.manager.enums.QlyIsptResult;
import com.vincent.rsf.server.manager.enums.QlyIsptStatus;
import com.vincent.rsf.server.manager.mapper.QlyIsptItemMapper;
import com.vincent.rsf.server.manager.entity.QlyIsptItem;
import com.vincent.rsf.server.manager.service.AsnOrderItemService;
@@ -23,10 +23,9 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
@Service("qlyIsptItemService")
@@ -39,9 +38,12 @@
    @Autowired
    private QlyInspectResultService qlyInspectResultService;
    @Autowired
    private QlyIsptItemService qlyIsptItemService;
    /**
     * @param
     * @param loginUserId
     * @return
     * @author Ryan
     * @description 批量修改
@@ -49,7 +51,7 @@
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean batchUpdate(IsptItemsParams params) {
    public boolean batchUpdate(IsptItemsParams params, Long loginUserId) {
        if (Objects.isNull(params.getIsptItem()) || params.getIsptItem().isEmpty()) {
            throw new CoolException("ID不能为空!!");
        }
@@ -61,111 +63,90 @@
            throw new CoolException("数据错误:明细不存在!!");
        }
        for (QlyIsptItem item : isptItems) {
        for (QlyIsptItem item : isptItem) {
            List<QlyInspectResult> results = qlyInspectResultService.list(new LambdaQueryWrapper<QlyInspectResult>()
                    .eq(QlyInspectResult::getIsptId, item.getIspectId())
                    .eq(QlyInspectResult::getIsptItemId, item.getId()));
            if (!results.isEmpty()) {
                //不为空做更新操作
            } else {
                //为空做新增操作
                QlyInspectResult result = new QlyInspectResult();
                result.setIsptId(item.getIspectId())
                        .setAnfme(item.getSafeQty())
                        .setIsptItemId(item.getId());
                if (item.getDisQty().compareTo(0.00) < 1) {
                    continue;
                }
                result.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val);
                result.setAnfme(item.getDisQty());
                if (!qlyInspectResultService.save(result)) {
                    throw new CoolException("质检结论保存失败!!");
                }
                if (item.getSafeQty().compareTo(0.00) < 1) {
                    continue;
                }
                result.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val)
                        .setAnfme(item.getSafeQty());
                if (!qlyInspectResultService.save(result)) {
                    throw new CoolException("质检结论保存失败!!");
                if (!qlyInspectResultService.remove(new LambdaUpdateWrapper<QlyInspectResult>()
                        .eq(QlyInspectResult::getIsptItemId, item.getId()))) {
                    throw new CoolException("历史质检结果移出失败!!");
                }
            }
        }
            QlyInspectResult result = new QlyInspectResult();
            result.setIsptId(item.getIspectId())
                    .setIsptItemId(item.getId());
            if (!Objects.isNull(item.getDisQty()) && item.getDisQty().compareTo(0.00) > 0) {
                result.setAnfme(item.getDisQty())
                        .setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val);
                qlyInspectResultService.saveOrUpdate(result);
            }
            result = new QlyInspectResult();
            result.setIsptId(item.getIspectId())
                    .setIsptItemId(item.getId());
            if (!Objects.isNull(item.getSafeQty()) && item.getSafeQty().compareTo(0.00) > 0) {
                result.setAnfme(item.getSafeQty())
                        .setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val);
                qlyInspectResultService.saveOrUpdate(result);
            }
        if (Short.parseShort(params.getType()) == QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val || Short.parseShort(params.getType()) == QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val) {
            //1:合格, 2:不合格, 0: 其它(默认)
            isptItem.forEach(item -> {
                if (Short.parseShort(params.getType()) == QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val) {
                    //TODO 先捡后收为送货数量,先收后捡为收货数量
//                    item.setSafeQty(item.getDlyQty());
//                    item.setDisQty(0.0);
                } else {
//                    item.setSafeQty(0.0);
//                    item.setDisQty(item.getDlyQty());
                }
                if (!this.update(new LambdaUpdateWrapper<QlyIsptItem>()
//                        .set(QlyIsptItem::getSafeQty, item.getSafeQty())
                        .set(QlyIsptItem::getIsptResult, Short.parseShort(params.getType()))
//                        .set(QlyIsptItem::getDisQty, item.getDisQty())
                        .in(QlyIsptItem::getId, item.getId()))) {
                    throw new CoolException("修改失败!!");
                }
            });
        } else {
            if (!this.updateBatchById(isptItem)) {
                throw new CoolException("明细修改失败");
            List<QlyInspectResult> isptRelt = qlyInspectResultService.list(new LambdaQueryWrapper<QlyInspectResult>()
                    .eq(QlyInspectResult::getIsptId, item.getIspectId())
                    .eq(QlyInspectResult::getIsptItemId, item.getId()));
            Double isptQty = isptRelt.stream().mapToDouble(QlyInspectResult::getAnfme).sum();
            if (!qlyIsptItemService.update(new LambdaUpdateWrapper<QlyIsptItem>()
                    .set(QlyIsptItem::getUpdateBy, loginUserId)
                    .set(QlyIsptItem::getAnfme, isptQty)
                    .eq(QlyIsptItem::getId, item.getId()))) {
                throw new CoolException("单据明细数量修改失败!!");
            }
        }
        Map<Long, List<QlyIsptItem>> listMap = isptItems.stream().collect(Collectors.groupingBy(QlyIsptItem::getIspectId));
        for (Long key : listMap.keySet()) {
            QlyInspect inspect = qlyInspectService.getById(key);
            List<QlyIsptItem> items = listMap.get(key);
            items.forEach(qlyIsptItem -> {
                AsnOrderItem orderItem = asnOrderItemService.getById(qlyIsptItem.getAsnItemId());
//                if (qlyIsptItem.getSafeQty().compareTo(orderItem.getAnfme()) >= 0.00) {
//                    orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val)
//                            .setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val);
//                } else if (qlyIsptItem.getSafeQty().compareTo(0.00) > 0.00 && qlyIsptItem.getSafeQty().compareTo(orderItem.getAnfme()) < 0.00) {
//                    orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_SECTION.val);
//                    if (Double.compare(qlyIsptItem.getSafeQty() + qlyIsptItem.getDisQty(), orderItem.getAnfme()) >= 0.00 ) {
//                        orderItem.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val);
//                    } else {
//                        orderItem.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_ING.val);
//                    }
//                } else {
//                    orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val)
//                            .setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val);
//                }
                if (!asnOrderItemService.updateById(orderItem)) {
                    throw new CoolException("收货单明细修改失败!!");
                }
            });
//            Double safeQty = items.stream().mapToDouble(QlyIsptItem::getSafeQty).sum();
//            Double disQty = items.stream().mapToDouble(QlyIsptItem::getDisQty).sum();
//            Double qlyQty = safeQty + disQty;
//            //安全数量,质检数量
//            inspect.setSafeQty(safeQty)
//                    .setIsptQty(qlyQty);
//            if (Double.compare(disQty, 0) > 0) {
//                inspect.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_SECTION.val);
//            }
//            if (Double.compare(safeQty, inspect.getDlyQty()) == 0) {
////                inspect.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val);
//                inspect.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val);
//            }
            if (!qlyInspectService.updateById(inspect)) {
                throw new CoolException("质检数量修改失败!!");
            }
        Set<Long> isptIds = isptItem.stream().map(QlyIsptItem::getIspectId).collect(Collectors.toSet());
        List<QlyInspectResult> items = qlyInspectResultService.list(new LambdaQueryWrapper<QlyInspectResult>().in(QlyInspectResult::getIsptId, isptIds));
        Double sum = items.stream().mapToDouble(QlyInspectResult::getAnfme).sum();
        if (sum.compareTo(0.00) > 0) {
            qlyInspectService.update(new LambdaUpdateWrapper<QlyInspect>()
                    .set(QlyInspect::getIsptQty, sum)
                    .set(QlyInspect::getUpdateBy, loginUserId)
                    .eq(QlyInspect::getId, isptItem.stream().findFirst().get().getIspectId()));
        }
        return true;
    }
    /**
     * @author Ryan
     * @date 2025/5/12
     * @description: 获取自定义Page
     * @version 1.0
     */
    @Override
    public IPage<QlyIsptItem> pageByWrapper(PageParam<QlyIsptItem, BaseParam> pageParam, QueryWrapper<QlyIsptItem> queryWrapper) {
        IPage<QlyIsptItem> page = this.page(pageParam, queryWrapper);
        if (!page.getRecords().isEmpty()) {
            List<QlyIsptItem> records = page.getRecords();
            for (int i = 0; i < records.size(); i++) {
                List<QlyInspectResult> results = qlyInspectResultService.list(new QueryWrapper<QlyInspectResult>()
                        .select("id, ispt_result, SUM(anfme) anfme, ispt_item_id, ispt_id")
                        .lambda()
                        .eq(QlyInspectResult::getIsptItemId, records.get(i).getId()).groupBy(QlyInspectResult::getIsptResult));
                if (!results.isEmpty()) {
                    for (QlyInspectResult result : results) {
                        if (result.getIsptResult() == QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val) {
                            records.get(i).setSafeQty(result.getAnfme());
                        } else {
                            records.get(i).setDisQty(result.getAnfme());
                        }
                    }
                }
            }
            page.setRecords(records);
        }
        return page;
    }
}
rsf-server/src/main/resources/application-dev.yml
@@ -14,7 +14,7 @@
    driver-class-name: com.mysql.jdbc.Driver
#    url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    url: jdbc:mysql://192.168.4.56:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
#    username: rsf
    password: 34821015
    type: com.alibaba.druid.pool.DruidDataSource
rsf-server/src/main/resources/mapper/manager/QlyIsptItemMapper.xml
@@ -2,4 +2,30 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vincent.rsf.server.manager.mapper.QlyIsptItemMapper">
    <select id="pageByWrapper" resultType="com.vincent.rsf.server.manager.entity.QlyIsptItem">
        SELECT *
        FROM (SELECT qii.id,
                     ispect_id,
                     asn_item_id,
                     matnr_code,
                     maktx,
                     splr_name,
                     splr_batch,
                     qir.anfme,
                     qir.ispt_result,
                     rcpt_qty,
                     dly_qty,
                     track_code,
                     pic_path,
                     `status`,
                     deleted,
                     tenant_id,
                     create_by,
                     create_time,
                     update_by,
                     update_time,
                     memo
              FROM man_qly_ispt_item qii
                       LEFT JOIN man_qly_inspect_result qir ON qii.id = qir.ispt_item_id) t ${ew.customSqlSegment}
    </select>
</mapper>