liding
3 天以前 d28a5401ac1e2995ec6de12a81395aa5d05b040a
refactor(order): 提取外协判断方法并还原原下单
已修改3个文件
45 ■■■■■ 文件已修改
inspect-server/src/main/java/com/ruoyi/inspect/service/OutsourceOrderFlowService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/OutsourceOrderFlowService.java
@@ -30,10 +30,14 @@
    /** 外协订单按实际流程确定下单来源,其他订单保留原来源。 */
    public Integer resolveTypeSource(String orderType, String materialProp, Integer typeSource) {
        if (StringUtils.equals(orderType, OrderType.OUTSOURCE_INCOMING.getValue())
                || StringUtils.equals(orderType, OrderType.OUTSOURCE_SUBCONTRACT.getValue())) {
        if (isOutsource(orderType)) {
            return StringUtils.equals(resolve(orderType, materialProp), OrderType.WG.getValue()) ? 0 : 1;
        }
        return typeSource;
    }
    public boolean isOutsource(String orderType) {
        return OrderType.OUTSOURCE_INCOMING.getValue().equals(orderType)
                || OrderType.OUTSOURCE_SUBCONTRACT.getValue().equals(orderType);
    }
}
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -221,7 +221,6 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int addInsOrder(List<SampleProductDto> list, InsOrder insOrder) {
        initOutsourceOrderSource(insOrder);
        // todo: 下单判断抽样计划的唯一性
        if (insOrder.getQuarterItemId() != null) {
            Long quarterItemCount = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
@@ -229,6 +228,16 @@
                    .notIn(InsOrder::getState, -1, 2, 3));
            if (quarterItemCount > 0) {
                throw new ErrorException("该抽样计划已被绑定过");
            }
        }
        IfsInventoryQuantity ifsInventoryQuantity = null;
        if (insOrder.getIfsInventoryId() != null) {
            ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(insOrder.getIfsInventoryId());
            if (ifsInventoryQuantity != null) {
                insOrder.setTypeSource(outsourceOrderFlowService.resolveTypeSource(
                        ifsInventoryQuantity.getOrderType(), ifsInventoryQuantity.getMaterialProp(), insOrder.getTypeSource()));
            } else if (insOrder.getTypeSource() != null) {
                throw new ErrorException("找不到销售订单信息");
            }
        }
        insOrder.setState(0);
@@ -322,9 +331,8 @@
        });
        //原材料下单或外购成品下单
        if (Objects.nonNull(insOrder.getTypeSource()) && Objects.nonNull(insOrder.getIfsInventoryId())) {
        if (insOrder.getTypeSource() != null && ifsInventoryQuantity != null) {
            // 委托人就是报检人, 生产单位就是供应商单位
            IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(insOrder.getIfsInventoryId());
            Integer declareUserId = ifsInventoryQuantity.getDeclareUserId();
            User user = userMapper.selectById(declareUserId);
            if (user == null) {
@@ -551,7 +559,7 @@
        // 详情同时返回有效处理流程,供检测页面统一选择布局及校验规则。
        if (ifsOrderVO != null) {
            ifsOrderVO.setFlowOrderType(ifsOrderVO.getIfsOrderType());
            if (ifsOrderVO.getIfsInventoryId() != null) {
            if (ifsOrderVO.getIfsInventoryId() != null && outsourceOrderFlowService.isOutsource(ifsOrderVO.getIfsOrderType())) {
                IfsInventoryQuantity quantity = ifsInventoryQuantityMapper.selectById(ifsOrderVO.getIfsInventoryId());
                if (quantity != null) {
                    ifsOrderVO.setFlowOrderType(outsourceOrderFlowService.resolve(quantity.getOrderType(), quantity.getMaterialProp()));
@@ -565,19 +573,6 @@
        List<Map<Integer, Object>> list2 = insOrderMapper.selectReportModelByOrderId(id, laboratory);
        map.put("reportModel", list2);
        return map;
    }
    /** 保存前读取真实销售订单,纠正外协下单来源,避免前端缓存影响实验室分配。 */
    private void initOutsourceOrderSource(InsOrder insOrder) {
        if (insOrder.getIfsInventoryId() == null) {
            return;
        }
        IfsInventoryQuantity quantity = ifsInventoryQuantityMapper.selectById(insOrder.getIfsInventoryId());
        if (quantity == null) {
            throw new ErrorException("找不到销售订单信息");
        }
        insOrder.setTypeSource(outsourceOrderFlowService.resolveTypeSource(
                quantity.getOrderType(), quantity.getMaterialProp(), insOrder.getTypeSource()));
    }
    @Override
@@ -1235,6 +1230,9 @@
    public String moveRawMaterial(IfsInventoryQuantity inventoryQuantity) {
        //查询ifs订单详情
        IfsInventoryQuantity one = ifsInventoryQuantityMapper.selectById(inventoryQuantity.getId());
        String flowOrderType = outsourceOrderFlowService.isOutsource(one.getOrderType())
                ? outsourceOrderFlowService.resolve(one.getOrderType(), one.getMaterialProp())
                : inventoryQuantity.getOrderType();
        String toLocation;
        // 登记采购检验结果STD
        if (one.getIsRegister().equals(0)) {
@@ -1285,7 +1283,7 @@
        //1.根据ifs域获取对应库位配置
        IfsProperties properties = ifsApiUtils.getPropByContract(one.getContract());
        //2.判断订单类型是否为原材料
        if(StringUtils.equals(outsourceOrderFlowService.resolve(one.getOrderType(), one.getMaterialProp()), OrderType.RAW.getValue())){
        if(StringUtils.equals(flowOrderType, OrderType.RAW.getValue())){
            toLocation = properties.getRawQualifiedLocation();
        }else{
            toLocation = properties.getProductQualifiedLocation();
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
@@ -221,8 +221,7 @@
    /** 限制外协列表接口只能查询两个外协分类。 */
    private void validateOutsourceType(String orderType) {
        if (!OrderType.OUTSOURCE_INCOMING.getValue().equals(orderType)
                && !OrderType.OUTSOURCE_SUBCONTRACT.getValue().equals(orderType)) {
        if (!outsourceOrderFlowService.isOutsource(orderType)) {
            throw new ErrorException("非法的外协订单分类");
        }
    }