新火炬后端单体项目初始化代码
cuilei
12 小时以前 5f1edfec21b921ec885b40b0a86c7ffe4aa5a7de
src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java
@@ -29,6 +29,7 @@
import org.jeecg.modules.mes.entity.MesKittingCompletenessCheck;
import org.jeecg.modules.mes.entity.MesProductionOrder;
import org.jeecg.modules.mes.enums.ProductionOrderStatus;
import org.jeecg.modules.mes.service.IMesKittingCompletenessCheckService;
import org.jeecg.modules.mes.service.IMesProductionOrderService;
import org.jeecg.modules.mes.service.IMesProductionWorkOrderService;
import org.jeecg.modules.mes.entity.MesProductionWorkOrder;
@@ -76,6 +77,8 @@
    private ILswMaterialInventoryService lswMaterialInventoryService;
    @Autowired
    private ILineSideWarehouseService lineSideWarehouseService;
    @Autowired
    private IMesKittingCompletenessCheckService mesKittingCompletenessCheckService;
    @Override
    public List<MesProductionWorkOrder> schedule(MesProductionWorkScheduleRequest request) {
@@ -234,14 +237,25 @@
        List<String> bomMaterialNumberList = processBillMaterialsDetails.stream()
                .map(PmsProcessBillMaterialsDetail::getMaterialNumber).collect(Collectors.toList());
        Map<String, LswMaterialInventoryVo> lswMaterialInventoryMap = lswMaterialInventoryService
                .selectLineSideMaterialInventoryByMaterialNumber(bomMaterialNumberList, lineSideWarehouse.getId()).stream()
                .selectLineSideMaterialInventoryByMaterialNumber(bomMaterialNumberList, lineSideWarehouse.getId(), null).stream()
                .collect(Collectors.toMap(LswMaterialInventoryVo::getMaterialNumber, v1 -> v1, (v1, v2) -> v1));
        List<MesKittingCompletenessCheck> completenessCheckResultList = CollectionUtil.newArrayList();
        //查询是否有齐套检查记录(已齐备的)
        List<String> checkedMaterialNumberList = mesKittingCompletenessCheckService.list(new LambdaQueryWrapper<MesKittingCompletenessCheck>()
                        .eq(MesKittingCompletenessCheck::getWorkOrderId, workOrder.getId())
                        .in(MesKittingCompletenessCheck::getMaterialNumber, bomMaterialNumberList)
                        .eq(MesKittingCompletenessCheck::getCheckFlag, CommonConstant.DEFAULT_1))
                        .stream().map(MesKittingCompletenessCheck::getMaterialNumber).collect(Collectors.toList());
        //根据订单BOM明细列出齐套检查结果
        for (PmsProcessBillMaterialsDetail processBillMaterialsDetail : processBillMaterialsDetails) {
            LswMaterialInventoryVo materialInventoryVo = lswMaterialInventoryMap.get(processBillMaterialsDetail.getMaterialNumber());
            String materialNumber = processBillMaterialsDetail.getMaterialNumber();
            if (checkedMaterialNumberList.contains(materialNumber)) {
                //如果已经做过齐套性检查,并且齐备,就忽略掉
                continue;
            }
            LswMaterialInventoryVo materialInventoryVo = lswMaterialInventoryMap.get(materialNumber);
            MesKittingCompletenessCheck completenessCheckItem = new MesKittingCompletenessCheck()
                    .setMaterialNumber(processBillMaterialsDetail.getMaterialNumber())
                    .setMaterialNumber(materialNumber)
                    .setMaterialName(processBillMaterialsDetail.getMaterialName())
                    //需求数量 = (bom明细的需求数量 / bom订单的数量) * 排产工单计划生产数量
                    .setRequiredQuantity(processBillMaterialsDetail.getUsageQuantity()
@@ -260,4 +274,37 @@
        });
        return completenessCheckResultList;
    }
    @Override
    public List<MesKittingCompletenessCheck> workOrderCompletenessCheckOnHeatTreatment(MesProductionWorkOrder workOrder) {
        //查询工单所属产线对应的线边仓
        LineSideWarehouse lineSideWarehouse = lineSideWarehouseService.list(new LambdaQueryWrapper<LineSideWarehouse>()
                        .eq(LineSideWarehouse::getFactoryId, workOrder.getFactoryId())
                        .eq(LineSideWarehouse::getDelFlag, CommonConstant.DEL_FLAG_0)
                        .eq(LineSideWarehouse::getWarehouseStatus, CommonConstant.DEFAULT_1))
                .stream().findFirst().orElse(null);
        if (lineSideWarehouse == null) {
            throw new JeecgBootException("该产线未配置线边仓!");
        }
        //查询工单热处理物料对应毛坯在线边仓的库存
        LswMaterialInventoryVo materialInventoryVo = lswMaterialInventoryService.selectLineSideMaterialInventoryByMaterialNumber(Collections
                        .singletonList(workOrder.getMaterialNumber()), lineSideWarehouse.getId(), CommonConstant.DEFAULT_0)
                .stream().findFirst().orElse(null);
        if (materialInventoryVo == null) {
            throw new JeecgBootException("线边库物料不存在!");
        }
        MesKittingCompletenessCheck completenessCheck = new MesKittingCompletenessCheck()
                .setMaterialNumber(materialInventoryVo.getMaterialNumber())
                .setMaterialName(materialInventoryVo.getMaterialName())
                .setRequiredQuantity(workOrder.getPlanQuantity())
                .setActualQuantity(materialInventoryVo.getStockQuantity())
                .setProductionUnit("PC")
                .setCheckFlag(materialInventoryVo.getStockQuantity().compareTo(workOrder.getPlanQuantity()) > 0 ? CommonConstant.DEFAULT_1 : CommonConstant.DEFAULT_0);
        return Collections.singletonList(completenessCheck);
    }
    @Override
    public IPage<MesProductionWorkOrder> queryWorkOrderByTransfer(Page<MesProductionWorkOrder> page) {
        return this.getBaseMapper().queryWorkOrderByTransfer(page);
    }
}