zouyu
2026-04-30 fe97e3191aaa5f5db104541946f6ac7937e46e15
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.vo.ProductVo;
import com.ruoyi.performance.mapper.AuxiliaryOutputWorkingHoursMapper;
import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours;
import com.ruoyi.system.mapper.UserMapper;
@@ -85,16 +86,27 @@
public class RawMaterialOrderServiceImpl implements RawMaterialOrderService {
    private StandardTreeMapper standardTreeMapper;
    private IfsInventoryQuantityMapper ifsInventoryQuantityMapper;
    private UserMapper userMapper;
    private InsOrderService insOrderService;
    private InsOrderMapper insOrderMapper;
    private InsSampleMapper insSampleMapper;
    private final NumberGenerator<InsOrder> numberGenerator;
    private InsReportService insReportService;
    private WechatProperty wechatProperty;
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
    private InsProductMapper insProductMapper;
    private AuxiliaryOutputWorkingHoursMapper auxiliaryOutputWorkingHoursMapper;
    private IfsApiUtils ifsApiUtils;
@@ -242,6 +254,7 @@
        if(!validateValue){
            throw new ErrorException("报检失败,非法的销售订单分类枚举");
        }
        validateUpdateBatchNo(ifsInventoryQuantity);
        //批次号字母转大写
        ifsInventoryQuantity.setUpdateBatchNo(ifsInventoryQuantity.getUpdateBatchNo().toUpperCase(Locale.ROOT));
        ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
@@ -266,6 +279,26 @@
            WxCpUtils.informWebHook(wechatProperty.getExaminingUrl(), message);
        });
        return 1;
    }
    /**
     * 校验外购订单报检的批次号是否重复
     * @param ifsInventoryQuantity
     */
    public void validateUpdateBatchNo(IfsInventoryQuantity ifsInventoryQuantity){
        if(StringUtils.equals(ifsInventoryQuantity.getOrderType(),OrderType.WG.getValue())){
            //查询历史记录
            Long count = ifsInventoryQuantityMapper.selectCount(Wrappers.<IfsInventoryQuantity>lambdaQuery()
                    .eq(IfsInventoryQuantity::getContract,ifsInventoryQuantity.getContract())
                    .eq(IfsInventoryQuantity::getPartNo,ifsInventoryQuantity.getPartNo())
                    .eq(IfsInventoryQuantity::getUpdateBatchNo,ifsInventoryQuantity.getUpdateBatchNo())
                    .eq(IfsInventoryQuantity::getOrderType,OrderType.WG.getValue())
                    .ne(IfsInventoryQuantity::getState,0)
            );
            if(count>0){
                throw new RuntimeException("报检失败,零件"+ifsInventoryQuantity.getPartNo()+"所报检的批次号【"+ifsInventoryQuantity.getUpdateBatchNo()+"】已存在!");
            }
        }
    }
    /**
@@ -371,7 +404,7 @@
        insOrderMapper.updateById(insOrder);
        // 添加工时
        addAuxiliary(insOrder, ifsInventoryQuantity);
//        addAuxiliary(insOrder, ifsInventoryQuantity);
        // todo: ifs直接移库
        insReportService.isRawMaterial(insOrder,true,true);
@@ -466,7 +499,7 @@
        insOrderMapper.insert(insOrder);
        // 添加工时
        addAuxiliary(insOrder, ifsInventoryQuantity);
//        addAuxiliary(insOrder, ifsInventoryQuantity);
        // todo: ifs直接移库
        insReportService.isRawMaterial(insOrder,true,true);
@@ -526,6 +559,7 @@
        if(!OrderType.validateValue(ifsInventoryQuantity.getOrderType())){
            throw new ErrorException("新增报检信息失败,非法的销售订单分类枚举");
        }
        validateUpdateBatchNo(ifsInventoryQuantity);
        ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
    }
@@ -603,7 +637,7 @@
        insOrderMapper.updateById(insOrder);
        // 添加工时
        addAuxiliary(insOrder, ifsInventoryQuantity);
//        addAuxiliary(insOrder, ifsInventoryQuantity);
        return insOrder.getId();
    }
@@ -750,6 +784,9 @@
            }
        }
        //查询检验项记录
        List<Long> ifsIds = ifsByOverList.stream().map(IfsInventoryQuantitySupplierDto::getId).collect(Collectors.toList());
        List<ProductVo> inspectList = insProductMapper.selectInspectListByIfsIfs(ifsIds);
        response.setContentType("application/vnd.ms-excel");
@@ -761,10 +798,12 @@
            //新建ExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            //获取sheet0对象
            WriteSheet mainSheet = EasyExcel.writerSheet(0, "原材料检测信息导出").head(IfsInventoryQuantitySupplierDto.class).build();
            WriteSheet mainSheet = EasyExcel.writerSheet(0, "原材料检测信息总览").head(IfsInventoryQuantitySupplierDto.class).build();
            WriteSheet inspectSheet = EasyExcel.writerSheet(1, "原材料检测数据详情").head(ProductVo.class).build();
            //向sheet0写入数据 传入空list这样只导出表头
            excelWriter.write(ifsByOverList, mainSheet);
            excelWriter.write(inspectList, inspectSheet);
            //关闭流
            excelWriter.finish();
        } catch (IOException e) {