浏览代码

Merge remote-tracking branch 'origin/mode-min-unit' into mode-min-unit

xiahan 10 月之前
父节点
当前提交
c5cf5eaefb

+ 2 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsBlankOrderService.java

@@ -60,4 +60,6 @@ public interface ApsBlankOrderService extends IService<ApsBlankOrderDo> {
 
     //插单重新排程
     void insertSchedule(Map<String, Object> params);
+
+    R addMaterial(AddMaterialReq req);
 }

+ 151 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsBlankOrderServiceImpl.java

@@ -1897,6 +1897,9 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             blankUpdateWrapper.set(ApsBlankOrderDo::getBlankappearance, apsBlankOrderDo.getBlankappearance());
             blankUpdateWrapper.set(ApsBlankOrderDo::getMaxheatroll, apsBlankOrderDo.getMaxheatroll());
             blankUpdateWrapper.set(ApsBlankOrderDo::getBlankcomefrom, apsBlankOrderDo.getBlankcomefrom());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getUpdateprocess, apsBlankOrderDo.getUpdateprocess());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getExpecteddays, apsBlankOrderDo.getExpecteddays());
+            blankUpdateWrapper.set(ApsBlankOrderDo::getIssubmitprocessroute, apsBlankOrderDo.getIssubmitprocessroute());
 
             this.update(blankUpdateWrapper);
         } else {
@@ -2968,4 +2971,152 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             processLoadingMap.put(lastProcessId, processLoading);
         }
     }
+
+    @Override
+    @Transactional
+    public R addMaterial(AddMaterialReq req) {
+        if (ObjectUtil.isEmpty(req.getBatchNumbers())) {
+            return R.error("批次号不可为空");
+        }
+        if (ObjectUtil.isEmpty(req.getBlankId())) {
+            return R.error("坯料计划ID为空");
+        }
+        if (ObjectUtil.isEmpty(req.getProcessId())) {
+            return R.error("坯料计划第一道工序作业的ID为空");
+        }
+        //分割批次号
+        List<String> batchNumberList = Arrays.asList(req.getBatchNumbers().split(","));
+        //查询坯料计划详情
+        ApsBlankOrderDo apsBlankOrderDo = apsBlankOrderService.getById(req.getBlankId());
+        //查询坯料计划第一道工序作业的详情
+        ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(req.getProcessId());
+        int needStartRoll = apsProcessOperationDo.getPlanprocessrall() - apsProcessOperationDo.getStartingroll() - apsProcessOperationDo.getCancelroll();
+        if (batchNumberList.size() > needStartRoll) {
+            return R.error("领料数量不能大于计划加工卷数-已开工卷数-已取消卷数=" + needStartRoll);
+        }
+
+        //原来的批次号
+        String oldBatchNumbers = req.getOldBatchNumbers();
+        LinkedList<String> oldBatchNumberList = new LinkedList<>();
+        if (ObjectUtil.isNotEmpty(oldBatchNumbers)) {
+            oldBatchNumberList = new LinkedList<>(Arrays.asList(oldBatchNumbers.split(",")));
+        }
+
+        //新的批次号集合
+        List<String> addBatchNumberList = new LinkedList<>();
+        //删除的批次号集合
+        List<String> delBatchNumberList = new LinkedList<>();
+
+        for (String s : oldBatchNumberList) {
+            if (!batchNumberList.contains(s)) {
+                delBatchNumberList.add(s);
+            }
+        }
+        for (String s : batchNumberList) {
+            if (!oldBatchNumberList.contains(s)) {
+                addBatchNumberList.add(s);
+            }
+        }
+
+
+        //如果坯料类型=热轧,检查每个批次号
+        //如果批次号不是9位数,则错误提示:热轧坯料批次号{批次号}错误,应该是9位
+        if (apsBlankOrderDo.getBlanktype().equals("热轧")) {
+            for (String s : batchNumberList) {
+                if (s.length() != 9) {
+                    return R.error("热轧坯料批次号" + s + "错误,应该是9位");
+                }
+            }
+        }
+
+        /**
+         * 如果坯料类型=铸轧,检查每个批次号
+         * 如果该批次号物料在制品库存中没找到,则错误提示:批次号{批次号}错误
+         * 如果在制品备料计划ID不为空,并且不等于该坯料计划ID,错误提示:该坯料已经被其他坯料计划领料
+         * 如果在制品状态=待加工或加工中或待检验,错误提示:批次号{批次号}错误,该料卷在加工中
+         * 如果在制品状态=待入库或已入库或已出库,并且订单号对应订单的客户的客户类型不是内部客户,错误提示:批次号{批次号}错误,该料卷是其他客户订单的成品
+         * 如果在制品状态=备料中,并且在制品类型=不良在制品,错误提示:批次号{批次号}错误,该料卷检验不合格
+         * 查找该批次号物料=在制品的作业输出物料ID对应输出物料
+         * 如果{该批次号物料的输入物料描述}与{坯料的输入物料描述}不相同,
+         * 错误提示:该批次号{批次号}物料:{该批次号物料的输入物料描述}不是该坯料计划所需的坯料{坯料的输入物料描述}
+         */
+        //如果坯料类型=铸轧,检查每个批次号
+        if (apsBlankOrderDo.getBlanktype().equals("铸轧")) {
+            List<ApsWorkInProgressInventoryDo> workInProgressInventoryDos =
+                    apsWorkInProgressInventoryService.list(new QueryWrapper<ApsWorkInProgressInventoryDo>().lambda()
+                            .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
+                            .in(ApsWorkInProgressInventoryDo::getBatchnumber, addBatchNumberList));
+            for (String s : addBatchNumberList) {
+                //如果该批次号物料在制品库存中没找到,则错误提示:批次号{批次号}错误
+                ApsWorkInProgressInventoryDo apsWorkInProgressInventoryDo = workInProgressInventoryDos.stream().filter(item -> item.getBatchnumber().equals(s)).findFirst().orElse(null);
+                if (ObjectUtil.isEmpty(apsWorkInProgressInventoryDo)) {
+                    return R.error("批次号" + s + "错误");
+                }
+
+                //如果在制品备料计划ID不为空,并且不等于该坯料计划ID,错误提示:该坯料已经被其他坯料计划领料
+                if (ObjectUtil.isNotEmpty(apsWorkInProgressInventoryDo.getPlanmaterialid())
+                        && !apsWorkInProgressInventoryDo.getPlanmaterialid().equals(req.getBlankId())) {
+                    ApsBlankOrderDo blankOrderDo = apsBlankOrderService.getById(apsWorkInProgressInventoryDo.getPlanmaterialid());
+                    return R.error("该坯料已经被坯料计划" + blankOrderDo.getBlanknumber() + "领料");
+                }
+
+                //如果在制品状态=待加工或加工中或待检验,错误提示:批次号{批次号}错误,该料卷在加工中
+                if (Arrays.asList("待加工", "加工中", "待检验").contains(apsWorkInProgressInventoryDo.getWorkinprocessstatus())) {
+                    return R.error("批次号" + s + "错误,该料卷在加工中");
+                }
+
+                //如果在制品状态=备料中、待入库或已入库或已出库,并且订单号对应订单的客户的客户类型不是内部客户,错误提示:批次号{批次号}错误,该料卷是其他客户订单的成品
+                if (Arrays.asList("备料中", "待入库", "已入库", "已出库").contains(apsWorkInProgressInventoryDo.getWorkinprocessstatus())) {
+                    if (ObjectUtil.isNotEmpty(apsWorkInProgressInventoryDo.getOrdertype()) && apsWorkInProgressInventoryDo.getOrdertype().equals("客户订单")) {
+                        return R.error("批次号" + s + "错误,该料卷是其他客户订单的成品");
+                    }
+
+                }
+
+                //如果在制品类型=不良在制品,错误提示:批次号{批次号}错误,该料卷检验不合格
+                if (apsWorkInProgressInventoryDo.getWorkinprocesstype().equals("不良在制品")) {
+                    return R.error("批次号" + s + "错误,该料卷检验不合格");
+                }
+
+                //查找该批次号物料=在制品的作业输出物料ID对应输出物料
+                //如果{该批次号物料的输入物料描述}与{坯料的输入物料描述}不相同,
+                //错误提示:该批次号{批次号}物料:{该批次号物料的输入物料描述}不是该坯料计划所需的坯料{坯料的输入物料描述}
+                String s1 = apsWorkInProgressInventoryDo.getJoboutputmaterial();
+                String s2 = apsBlankOrderDo.getInputreportdescribe();
+                if (!s1.equals(s2)) {
+                    return R.error("该批次号" + s + "物料:" + s1 + "不是该坯料计划所需的坯料" + s2 + "");
+                }
+            }
+        }
+
+        /**
+         * 检验通过,
+         * 原批次号(修改前的值),对应的所有在制品的在制品状态=备料中,在制品的备料计划ID=(空)
+         * 更新坯料计划的第一道工序作业的所有工序作业明细的待加工料卷批次号=领料批次号逗号拼接
+         * 在制品的在制品状态=待加工
+         * 在制品的备料计划ID=该坯料计划ID
+         */
+        //原批次号(修改前的值),对应的所有在制品的在制品状态=备料中,在制品的备料计划ID=(空)
+        apsWorkInProgressInventoryService.update(new UpdateWrapper<ApsWorkInProgressInventoryDo>().lambda()
+                .set(ApsWorkInProgressInventoryDo::getPlanmaterialid, null)
+                .set(ApsWorkInProgressInventoryDo::getWorkinprocessstatus, "备料中")
+                .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
+                .in(ApsWorkInProgressInventoryDo::getBatchnumber, delBatchNumberList));
+
+        //更新坯料计划的第一道工序作业的所有工序作业明细的待加工料卷批次号=领料批次号逗号拼接
+        apsProcessOperationProcessEquService.update(new UpdateWrapper<ApsProcessOperationProcessEquDo>().lambda()
+                .set(ApsProcessOperationProcessEquDo::getBachmaterialprocess, String.join(",", batchNumberList))
+                .eq(ApsProcessOperationProcessEquDo::getDeleted, "0")
+                .eq(ApsProcessOperationProcessEquDo::getProcessid, req.getProcessId()));
+
+        //在制品的在制品状态=待加工
+        //在制品的备料计划ID=该坯料计划ID
+        apsWorkInProgressInventoryService.update(new UpdateWrapper<ApsWorkInProgressInventoryDo>().lambda()
+                .set(ApsWorkInProgressInventoryDo::getPlanmaterialid, req.getBlankId())
+                .set(ApsWorkInProgressInventoryDo::getWorkinprocessstatus, "待加工")
+                .eq(ApsWorkInProgressInventoryDo::getDeleted, "0")
+                .in(ApsWorkInProgressInventoryDo::getBatchnumber, addBatchNumberList));
+
+        return R.ok();
+    }
 }

+ 53 - 3
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportRecordsServiceImpl.java

@@ -494,6 +494,30 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
                     this.baseMapper.updateAllProcessEquBatchNumberByIds(req.getInputBatchNumber(), join);
                 }
             }
+            /**
+             * 如果该工序作业明细没有前道工序作业明细,则该作业明细对应作业的所有作业明细的待加工料卷批次号去掉“{输入物料批次号},”
+             */
+            if (ObjectUtil.isEmpty(apsProcessOperationProcessEquDo.getPreviousprocessesids())) {
+                List<ApsProcessOperationProcessEquDo> needUpdateProcessEqus = apsProcessOperationProcessEquService.list(new QueryWrapper<ApsProcessOperationProcessEquDo>().lambda().eq(ApsProcessOperationProcessEquDo::getProcessid, apsProcessOperationProcessEquDo.getProcessid()));
+                List<ApsProcessOperationProcessEquDo> updateList = new LinkedList<>();
+                //遍历所有第一道工序的明细
+                for (ApsProcessOperationProcessEquDo updateProcessEqu : needUpdateProcessEqus) {
+                    String bachmaterialprocess = updateProcessEqu.getBachmaterialprocess();
+                    //如果存在被使用的批次号,则删除此批次号
+                    if (ObjectUtil.isNotEmpty(bachmaterialprocess)) {
+                        LinkedList<String> strings = new LinkedList<>(Arrays.asList(bachmaterialprocess.split(",")));
+                        if (strings.contains(req.getInputBatchNumber())) {
+                            strings.remove(req.getInputBatchNumber());
+                            ApsProcessOperationProcessEquDo equDo = new ApsProcessOperationProcessEquDo();
+                            equDo.setId(updateProcessEqu.getId());
+                            equDo.setBachmaterialprocess(String.join(",", strings));
+                            updateList.add(equDo);
+                        }
+                    }
+                }
+                //更新
+                apsProcessOperationProcessEquService.updateBatchById(updateList);
+            }
         }
 
         //==========输出物料子表信息============
@@ -950,11 +974,11 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             needUpdate.setId(outputDo.getId());
             String outputdesc = "";
             outputdesc += outputDo.getOutputmaterial().split(" ")[0];
-            outputdesc += " 厚" + outputDo.getThickness() + "*宽" + outputDo.getWidth();
+            outputdesc += " 厚" + CXCommonUtils.removeExtraZerosAndDecimal(outputDo.getThickness()) + "*宽" + CXCommonUtils.removeExtraZerosAndDecimal(outputDo.getWidth());
             if (ObjectUtil.isNotEmpty(outputDo.getLength())) {
-                outputdesc += "*长" + outputDo.getLength();
+                outputdesc += "*长" + CXCommonUtils.removeExtraZerosAndDecimal(outputDo.getLength());
             }
-            outputdesc += " mm " + outputDo.getWeight() + "吨";
+            outputdesc += " mm " + CXCommonUtils.removeExtraZerosAndDecimal(outputDo.getWeight()) + "吨";
             needUpdate.setOutputdesc(outputdesc);
             apsReportOutputService.updateById(needUpdate);
         }
@@ -983,8 +1007,15 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
                                          OrganizationCodeAndDeviceCodeVo organizationCodeAndDeviceCodeVo,
                                          ApsProductionOrderDo apsProductionOrderDo,
                                          ApsBlankOrderDo apsBlankOrderDo) {
+        //获取所有报工输出物料对应的工序输出物料
+        List<String> apsProcessMaterialIds = apsReportOutputDos.stream().map(ApsReportOutputDo::getOutputid).distinct().collect(Collectors.toList());
+        Collection<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDos = apsProcessOperationOutMaterService.listByIds(apsProcessMaterialIds);
+
         List<ApsWorkInProgressInventoryDo> needAddWorkInProgressInventoryList = new LinkedList<>();
         for (ApsReportOutputDo apsReportOutputDo : apsReportOutputDos) {
+            //获取报工输出物料对应的工序输出物料
+            ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo = apsProcessOperationOutMaterDos.stream().filter(item -> item.getId().equals(apsReportOutputDo.getOutputid())).findFirst().orElse(null);
+
             ApsWorkInProgressInventoryDo workInProgressInventoryDo = new ApsWorkInProgressInventoryDo();
             workInProgressInventoryDo.setId(SecurityUtil.getUUID());
             //获取当前用户相关信息
@@ -1032,6 +1063,25 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             //报工记录对应工序作业的订单号
             workInProgressInventoryDo.setOrdernumber(apsProductionOrderDo.getOrderno());
             workInProgressInventoryDo.setWorkinprocessstatus("待检验");
+            //客户订单号
+            workInProgressInventoryDo.setCustomorderno(apsProductionOrderDo.getCustomorderno());
+            //订单类型
+            workInProgressInventoryDo.setOrdertype(apsProductionOrderDo.getOrdertype());
+            //作业输出物料
+            String outPut = "";
+            try {
+                outPut = apsProcessOperationOutMaterDo.getMetal()
+                        + apsProcessOperationOutMaterDo.getMetalstate()
+                        + apsProcessOperationOutMaterDo.getProducttype()
+                        + " 厚" + CXCommonUtils.removeExtraZerosAndDecimal(apsProcessOperationOutMaterDo.getThickness())
+                        + "*宽" + CXCommonUtils.removeExtraZerosAndDecimal(apsProcessOperationOutMaterDo.getProwidth());
+                if (ObjectUtil.isNotEmpty(apsProcessOperationOutMaterDo.getProlength())
+                        && !CXCommonUtils.removeExtraZerosAndDecimal(apsProcessOperationOutMaterDo.getProlength()).equals("0")) {
+                    outPut = outPut + "*长" + CXCommonUtils.removeExtraZerosAndDecimal(apsProcessOperationOutMaterDo.getProlength());
+                }
+            } catch (Exception ignored) {
+            }
+            workInProgressInventoryDo.setJoboutputmaterial(outPut);
 
             needAddWorkInProgressInventoryList.add(workInProgressInventoryDo);
         }

+ 17 - 129
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsServiceImpl.java

@@ -558,135 +558,21 @@ public class ApsServiceImpl implements ApsService {
             ProductionScheduleRetVo productionScheduleRetVo = rwApsServer.productionSchedule(productionScheduleVo);
             if (!"200".equals(productionScheduleRetVo.getCode())) {
                 logger.info("排程异常,坯料计划ID:" + bo.getId());
-                            /*processOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().set(ApsProcessOperationProcessEquDo::getLockmark,"y")
-                                    .in(ApsProcessOperationProcessEquDo::getBlankid,blankOrderIds));*/
-                throw new CustomException(productionScheduleRetVo.getMsg());
+                // 排程异常后恢复历史排程结果为锁定状态
+                processOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().set(ApsProcessOperationProcessEquDo::getLockmark,"y")
+                        .eq(ApsProcessOperationProcessEquDo::getBlankid,bo.getId()));
+                // 没有可排程工序的订单跳过
+                if("没有可排程的工序".equals(productionScheduleRetVo.getMsg())){
+                    logger.info("排程异常:没有可排程的工序,坯料计划编号:" + bo.getBlanknumber());
+                }else{
+                    throw new CustomException(productionScheduleRetVo.getMsg());
+                }
+            }else{
+                // 获取坯料计划
+                List<ApsBlankOrderVo> apsBlankOrderss = new ArrayList<>();
+                apsBlankOrderss.add(bo);
+                apsBlankOrderService.apsAfter(productionScheduleRetVo,apsBlankOrderss);
             }
-            // 获取坯料计划
-            List<ApsBlankOrderVo> apsBlankOrderss = new ArrayList<>();
-            apsBlankOrderss.add(bo);
-            apsBlankOrderService.apsAfter(productionScheduleRetVo,apsBlankOrderss);
-                    /*if(bo.getRollnum()>mergeThNum){
-                        Map<String,ProductionProcesses> allProcesses = new HashMap<>();
-                        List<ProductionProcesses> rootProcesses = new ArrayList<>();
-                        for (ProductionProcesses process : productionScheduleVo.getProcesses()) {
-                            allProcesses.put(process.getId(),process);
-                            if(process.getPreviousProcessesIds() == null || process.getPreviousProcessesIds().size() == 0){
-                                rootProcesses.add(process);
-                            }
-                        }
-
-                        // 坯料计划排序
-                        Collections.sort(rootProcesses,(v1,v2)->{
-                            // 合金
-                            String alloy1 = v1.getVolumeMetal();
-                            String alloy2 = v2.getVolumeMetal();
-                            // 合金状态
-                            String alloystatus1 = v1.getVolumeMetalstate();
-                            String alloystatus2 = v2.getVolumeMetalstate();
-                            // 产品类型
-                            String producttype1 = v1.getProducttype();
-                            String producttype2 = v2.getProducttype();
-                            // 宽度
-                            BigDecimal prowidth1 = v1.getVolumeWidth();
-                            BigDecimal prowidth2 = v2.getVolumeWidth();
-                            // 厚度
-                            BigDecimal thickness1 = v1.getVolumeThickness();
-                            BigDecimal thickness2 = v2.getVolumeThickness();
-                            // 重量
-                            BigDecimal singlerollweight1 = v1.getSinglerollweight();
-                            BigDecimal singlerollweight2 = v2.getSinglerollweight();
-
-                            int a = 0;
-                            // 宽度
-                            if(prowidth1.compareTo(prowidth2) == 0){
-                                // 合金
-                                if(alloy1.compareTo(alloy2) == 0){
-                                    // 产品类型
-                                    if(producttype1 == null || producttype2 == null || producttype1.compareTo(producttype2) == 0){
-                                        // 厚度
-                                        if(thickness1.compareTo(thickness2) == 0){
-                                            // 合金状态
-                                            if(alloystatus1 == null || alloystatus2 == null || alloystatus1.compareTo(alloystatus2) == 0){
-                                                // 重量
-                                                if(singlerollweight1.compareTo(singlerollweight2) == 0){
-                                                    a = 0;
-                                                }else if(singlerollweight1.compareTo(singlerollweight2) > 0){
-                                                    a = -1;
-                                                }else{
-                                                    a = 1;
-                                                }
-                                            }else{
-                                                a = alloystatus1.compareTo(alloystatus2);
-                                            }
-                                        }else{
-                                            if(thickness1.compareTo(thickness2) > 0){
-                                                a = -1;
-                                            }else{
-                                                a = 1;
-                                            }
-                                        }
-                                    }else{
-                                        a = producttype1.compareTo(producttype2);
-                                    }
-                                }else{
-                                    a = alloy1.compareTo(alloy2);
-                                }
-                            }else{
-                                if(prowidth1.compareTo(prowidth2) > 0){
-                                    a = -1;
-                                }else{
-                                    a = 1;
-                                }
-                            }
-                            return a;
-                        });
-                        List<List<ProductionProcesses>> chunks = new ArrayList<>();
-                        int listSize = rootProcesses.size();
-                        for (int i = 0; i < listSize; i += mergeThNum) {
-                            chunks.add(rootProcesses.subList(i, Math.min(i + mergeThNum, listSize)));
-                        }
-
-                        // 全部排程,每4个一组
-                        for (List<ProductionProcesses> rootpros : chunks) {
-//                            ProductionScheduleVo productionScheduleVo = productionScheduleVoInit();
-                            // 工序作业ID
-                            Set<String> opId = new LinkedHashSet<>();
-                            Set<String> orderIds = new LinkedHashSet<>();
-                            List<ProductionProcesses> pssall = new ArrayList<>();
-                            for (ProductionProcesses processes : rootpros) {
-                                pssall.add(processes);
-                                for (String s : processes.getBsProcessesId()) {
-                                    opId.add(s);
-                                }
-                                for (ProduceOrder produceOrder : processes.getProduceOrder()) {
-                                    orderIds.add(produceOrder.getId());
-                                }
-                                getAllNextPross(processes,allProcesses,pssall,opId);
-                            }
-                            // 排程计划设备集合
-                            List<Equipment> equipmentList1 = new ArrayList<>();
-                            List<ApsProcessOperationDo> operationDos1 = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
-                                    .in(ApsProcessOperationDo::getId, opId));
-                            for (ApsProcessOperationDo operationDo : operationDos1) {
-                                List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList1,eqMaps,null,opId,productionScheduleVo,apsConfigs.get(0));
-                            }
-                            productionScheduleVo.setEquipmentList(equipmentList1);
-                            productionScheduleVo.setProcesses(pssall);
-
-                            System.out.println("排程数据:" + JSONUtil.toJsonStr(productionScheduleVo, jsonConfig));
-                            logger.info("排程数据:" + JSONUtil.toJsonStr(productionScheduleVo, jsonConfig));
-                            // APS平台排程接口调用
-                            ProductionScheduleRetVo productionScheduleRetVo = rwApsServer.productionSchedule(productionScheduleVo);
-                            if (!"200".equals(productionScheduleRetVo.getCode())) {
-                                throw new CustomException(productionScheduleRetVo.getMsg());
-                            }
-                            // 获取坯料计划
-                            List<ApsBlankOrderVo> apsBlankOrderss = new ArrayList<>();
-                            apsBlankOrderss.add(bo);
-                            apsBlankOrderService.apsAfter(productionScheduleRetVo,apsBlankOrderss);
-                        }
-                    }else{*/
         });
     }
 
@@ -797,8 +683,9 @@ public class ApsServiceImpl implements ApsService {
                 // 父子ID对应关系处理
                 List<String> processIdss = new ArrayList<>();
                 // 坯料计划订单
-                ProduceOrder produceOrder = new ProduceOrder(apsBlankOrderVo.getId(), apsBlankOrderVo.getMaterialname(), apsBlankOrderVo.getDeliverydate() == null ? null : DateUtil.offsetHour(apsBlankOrderVo.getDeliverydate(), -apsBlankOrderVo.getDeliverytime()));
+                ProduceOrder produceOrder = new ProduceOrder(apsBlankOrderVo.getId(), apsBlankOrderVo.getMaterialname(), apsBlankOrderVo.getDeliverydate() == null ? null : DateUtil.offsetHour(apsBlankOrderVo.getDeliverydate(), apsBlankOrderVo.getDeliverytime() == null ? 0 : -apsBlankOrderVo.getDeliverytime()));
                 produceOrder.setMaxheatroll(apsBlankOrderVo.getMaxheatroll());
+                produceOrder.setOrderNo(apsBlankOrderVo.getBlanknumber());
                 // 期望交货天数
                 produceOrder.setExpecteddays(productionScheduleVo.getExpecteddays());
                 if(apsBlankOrderVo.getExpecteddays() != null && apsBlankOrderVo.getExpecteddays()>0){
@@ -1330,6 +1217,7 @@ public class ApsServiceImpl implements ApsService {
         List<String> bss = new ArrayList<>();
         bss.add(operationDo.getId());
         processes.setBsProcessesId(bss);
+        processes.setProcessName(operationDo.getProcessname());
         // 工序任务可选设备
         processes.setOptionalEquipments(optionalEquipments);
         // 批次

+ 5 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsBlankOrderDo.java

@@ -302,5 +302,10 @@ public class ApsBlankOrderDo extends BaseDo {
      */
     @TableField("EXPECTEDDAYS")
     private Integer expecteddays;
+    /**
+     * 是否提交工艺路线
+     */
+    @TableField("ISSUBMITPROCESSROUTE")
+    private String issubmitprocessroute;
 
 }

+ 5 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsBlankOrderHistoryDo.java

@@ -249,4 +249,9 @@ public class ApsBlankOrderHistoryDo extends BaseDo {
      */
     @TableField(value = "EXPECTEDDAYS")
     private Integer expecteddays;
+    /**
+     * 是否提交工艺路线
+     */
+    @TableField("ISSUBMITPROCESSROUTE")
+    private String issubmitprocessroute;
 }

+ 15 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsWorkInProgressInventoryDo.java

@@ -148,6 +148,21 @@ public class ApsWorkInProgressInventoryDo extends BaseDo implements Serializable
      */
     private String planmaterialid;
 
+    /**
+     * 客户订单号
+     */
+    private String customorderno;
+
+    /**
+     * 订单类型
+     */
+    private String ordertype;
+
+    /**
+     * 作业输出物料
+     */
+    private String joboutputmaterial;
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 }

+ 23 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/AddMaterialReq.java

@@ -0,0 +1,23 @@
+package com.rongwei.bsentity.vo;
+
+import lombok.Data;
+
+/**
+ * @author :sc
+ * @since :2024/9/19
+ */
+@Data
+public class AddMaterialReq {
+    //批次号 多个英文逗号隔开
+    private String batchNumbers;
+
+    //坯料计划ID
+    private String blankId;
+
+    //旧的批次号
+    private String oldBatchNumbers;
+
+    //坯料计划第一道工序作业的ID
+    private String processId;
+
+}

+ 5 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ProduceOrder.java

@@ -32,6 +32,11 @@ public class ProduceOrder {
      */
     private String orderName;
 
+    /**
+     * 订单编号
+     */
+    private String orderNo;
+
     /**
      * 交货日期
      */

+ 13 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ProductionProcesses.java

@@ -54,6 +54,11 @@ public class ProductionProcesses{
      */
     private String processType;
 
+    /**
+     * 工序名称
+     */
+    private String processName;
+
     /**
      * 所属的生产订单
      */
@@ -583,4 +588,12 @@ public class ProductionProcesses{
     public void setIssubsection(String issubsection) {
         this.issubsection = issubsection;
     }
+
+    public String getProcessName() {
+        return processName;
+    }
+
+    public void setProcessName(String processName) {
+        this.processName = processName;
+    }
 }

+ 10 - 4
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsBlankOrderController.java

@@ -5,10 +5,7 @@ import com.rongwei.bscommon.sys.service.ApsBlankOrderService;
 import com.rongwei.bscommon.sys.service.ApsService;
 import com.rongwei.bsentity.domain.ApsBlankOrderDo;
 import com.rongwei.bsentity.domain.ApsProductionTechnicalRequirementDo;
-import com.rongwei.bsentity.vo.ApsPlanVo;
-import com.rongwei.bsentity.vo.CheckAndSaveOrUpdateBlankReq;
-import com.rongwei.bsentity.vo.CheckScheduleReq;
-import com.rongwei.bsentity.vo.OrderLockVo;
+import com.rongwei.bsentity.vo.*;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.vo.CriteriaQuery;
 import lombok.extern.slf4j.Slf4j;
@@ -200,5 +197,14 @@ public class ApsBlankOrderController {
         log.info("生产计划跟踪报表,入参为:{}", req);
         return apsBlankOrderService.productPlanReport(req);
     }
+
+    /**
+     * 领料
+     */
+    @PostMapping("/addMaterial")
+    public R addMaterial(@RequestBody AddMaterialReq req){
+        log.info("领料 入参:{}", req);
+        return apsBlankOrderService.addMaterial(req);
+    }
 }