liding
4 天以前 d28a5401ac1e2995ec6de12a81395aa5d05b040a
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
@@ -51,6 +51,7 @@
import com.ruoyi.inspect.service.InsOrderService;
import com.ruoyi.inspect.service.InsReportService;
import com.ruoyi.inspect.service.RawMaterialOrderService;
import com.ruoyi.inspect.service.OutsourceOrderFlowService;
import com.ruoyi.inspect.vo.ProductVo;
import com.ruoyi.performance.mapper.AuxiliaryOutputWorkingHoursMapper;
import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours;
@@ -114,6 +115,7 @@
    private IfsSplitOrderRecordService ifsSplitOrderRecordService;
    private final NumberGenerator<IfsSplitOrderRecord> splitOrderRecordNumberGenerator;
    private OutsourceOrderFlowService outsourceOrderFlowService;
    @Override
    public Result selectStandardTreeListByPartNo(String partNo) {
@@ -167,10 +169,61 @@
        return standardTreeMapper.selectIfsPage(page, QueryWrappers.queryWrappers(ifsInventoryQuantity));
    }
    /** 保留外协分类查询条件,避免原材料列表覆盖分类。 */
    @Override
    public IPage<IfsInventoryQuantity> getOutsourceWarehouseSubmit(IPage<IfsInventoryQuantity> page, IfsInventoryQuantity ifsInventoryQuantity) {
        validateOutsourceType(ifsInventoryQuantity.getOrderType());
        ifsInventoryQuantity.setIsInspect(1);
        ifsInventoryQuantity.setState(0);
        return standardTreeMapper.selectIfsPage(page, QueryWrappers.queryWrappers(ifsInventoryQuantity)
                .eq(StringUtils.isNotBlank(ifsInventoryQuantity.getMaterialProp()), "material_prop", ifsInventoryQuantity.getMaterialProp()));
    }
    @Override
    public IPage<IfsInventoryQuantityDto> getIfsByStateOne(IPage<IfsInventoryQuantityDto> page, IfsInventoryQuantityDto ifsInventoryQuantityDto) {
        ifsInventoryQuantityDto.setOrderType(OrderType.RAW.getValue());
        return standardTreeMapper.getIfsByStateOne(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto));
    }
    /** 检验中列表按真实外协分类过滤。 */
    @Override
    public IPage<IfsInventoryQuantityDto> getOutsourceByStateOne(IPage<IfsInventoryQuantityDto> page, IfsInventoryQuantityDto dto) {
        validateOutsourceType(dto.getOrderType());
        dto.setOrderState(1);
        dto.setState(1);
        // 按键值精确筛选,避免“成品”模糊匹配到“半成品”。
        return standardTreeMapper.getIfsByStateOne(page, QueryWrappers.queryWrappers(dto)
                .eq(StringUtils.isNotBlank(dto.getMaterialProp()), "material_prop", dto.getMaterialProp()));
    }
    /** 已检验列表按真实外协分类过滤。 */
    @Override
    public IPage<IfsInventoryQuantitySupplierDto> getOutsourceByOver(Page<IfsInventoryQuantitySupplierDto> page, IfsInventoryQuantitySupplierDto dto) {
        dto.setOrderState(4);
        dto.setState(2);
        return getOutsourceByAll(page, dto);
    }
    /** 全部列表保留真实分类和检索条件,不强制限制检验状态。 */
    @Override
    public IPage<IfsInventoryQuantitySupplierDto> getOutsourceByAll(Page<IfsInventoryQuantitySupplierDto> page, IfsInventoryQuantitySupplierDto dto) {
        validateOutsourceType(dto.getOrderType());
        String begin = dto.getBeginDeclareDate();
        String end = dto.getEndDeclareDate();
        dto.setBeginDeclareDate(null);
        dto.setEndDeclareDate(null);
        dto.setIsInspect(1);
        IPage<IfsInventoryQuantitySupplierDto> result = standardTreeMapper.getIfsByOver(page, QueryWrappers.queryWrappers(dto)
                .eq(StringUtils.isNotBlank(dto.getMaterialProp()), "material_prop", dto.getMaterialProp()), begin, end);
        result.getRecords().forEach(r -> r.setOrderTypeName(OrderType.getLabelByValue(r.getOrderType())));
        return result;
    }
    /** 限制外协列表接口只能查询两个外协分类。 */
    private void validateOutsourceType(String orderType) {
        if (!outsourceOrderFlowService.isOutsource(orderType)) {
            throw new ErrorException("非法的外协订单分类");
        }
    }
@@ -181,6 +234,7 @@
     */
    @Override
    public int inspectionReport(List<Long> ids,String orderType,String materialProp) {
        outsourceOrderFlowService.resolve(orderType, materialProp);
        Integer userId = SecurityUtils.getUserId().intValue();
        ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
                .in(IfsInventoryQuantity::getId, ids)
@@ -254,6 +308,7 @@
        if(!validateValue){
            throw new ErrorException("报检失败,非法的销售订单分类枚举");
        }
        outsourceOrderFlowService.resolve(ifsInventoryQuantity.getOrderType(), ifsInventoryQuantity.getMaterialProp());
        validateUpdateBatchNo(ifsInventoryQuantity);
        //批次号字母转大写
        ifsInventoryQuantity.setUpdateBatchNo(ifsInventoryQuantity.getUpdateBatchNo().toUpperCase(Locale.ROOT));
@@ -349,10 +404,16 @@
        if (!insOrder.getOrderType().equals(InsOrderTypeConstants.ENTER_THE_FACTORY)) {
            throw new ErrorException("只有进厂检验才能免检");
        }
        // 免检与正常下单使用相同的外协来源规则。
        IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(insOrder.getIfsInventoryId());
        if (ifsInventoryQuantity == null) {
            throw new ErrorException("找不到销售订单信息");
        }
        insOrder.setSendTime(LocalDateTime.now());
        // 修改订单表直接为已检验
        insOrder.setState(4);
        insOrder.setTypeSource(1);
        insOrder.setTypeSource(outsourceOrderFlowService.resolveTypeSource(
                ifsInventoryQuantity.getOrderType(), ifsInventoryQuantity.getMaterialProp(), 1));
        String code = "Y";
        // 生成编号
@@ -383,7 +444,6 @@
        });
        // 原材料下单: 委托人就是报检人, 生产单位就是供应商单位
        IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(insOrder.getIfsInventoryId());
        Integer declareUserId = ifsInventoryQuantity.getDeclareUserId();
        User user = userMapper.selectById(declareUserId);
        // 供应商名称
@@ -475,7 +535,9 @@
        InsOrder insOrder = new InsOrder();
        insOrder.setState(4);
        insOrder.setTypeSource(1);
        // 列表直接免检也按真实外协分类及物料属性确定来源。
        insOrder.setTypeSource(outsourceOrderFlowService.resolveTypeSource(
                ifsInventoryQuantity.getOrderType(), ifsInventoryQuantity.getMaterialProp(), 1));
        String code = "Y";
        // 生成编号
        String no = numberGenerator.generateNumberWithPrefix(3,
@@ -559,6 +621,7 @@
        if(!OrderType.validateValue(ifsInventoryQuantity.getOrderType())){
            throw new ErrorException("新增报检信息失败,非法的销售订单分类枚举");
        }
        outsourceOrderFlowService.resolve(ifsInventoryQuantity.getOrderType(), ifsInventoryQuantity.getMaterialProp());
        validateUpdateBatchNo(ifsInventoryQuantity);
        ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
    }