Browse Source

feature 代码提交

xiahan 1 year ago
parent
commit
2f44bdf76f
28 changed files with 804 additions and 839 deletions
  1. 0 14
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsBlankOrderDao.java
  2. 2 14
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProcessOperationDao.java
  3. 36 7
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProcessOperationProcessEquDao.java
  4. 0 2
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsBlankOrderService.java
  5. 1 6
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsProcessOperationProcessEquService.java
  6. 1 3
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsProcessOperationService.java
  7. 16 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/GanttService.java
  8. 9 329
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsBlankOrderServiceImpl.java
  9. 60 8
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationProcessEquServiceImpl.java
  10. 41 325
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationServiceImpl.java
  11. 76 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/GanttServiceImpl.java
  12. 52 26
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ReportCheckServiceImpl.java
  13. 45 7
      cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationDao.xml
  14. 238 0
      cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationProcessEquDao.xml
  15. 0 10
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsCraftRouteStepDo.java
  16. 11 1
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationDo.java
  17. 11 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationOutMaterDo.java
  18. 35 41
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationProcessEquDo.java
  19. 5 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsReportRecordsDo.java
  20. 1 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ApsBlankOrderVo.java
  21. 0 3
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ApsPlanVo.java
  22. 0 11
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ApsProcessOperationVo.java
  23. 43 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ProcessIdRelationVo.java
  24. 47 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ScheduleGanttProcessVo.java
  25. 26 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ScheduleGanttVo.java
  26. 0 22
      cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsBlankOrderController.java
  27. 0 10
      cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsProcessOperationController.java
  28. 48 0
      cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/GanttController.java

+ 0 - 14
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsBlankOrderDao.java

@@ -2,12 +2,6 @@ package com.rongwei.bscommon.sys.dao;
 
 import com.rongwei.bsentity.domain.ApsBlankOrderDo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.rongwei.bsentity.domain.AspCheckItemsDo;
-import com.rongwei.bsentity.vo.ApsBlankOrderVo;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
-
-import java.util.List;
 
 /**
  * <p>
@@ -19,12 +13,4 @@ import java.util.List;
  */
 public interface ApsBlankOrderDao extends BaseMapper<ApsBlankOrderDo> {
 
-    @Select("select a.*,b.PLANENDDATE from asp_check_items a LEFT JOIN \n" +
-            "(select PROCESSDEVICEID,MAX(PLANENDDATE) PLANENDDATE from aps_process_operation_process_equ where DELETED='0' GROUP BY PROCESSDEVICEID) b on a.ID=b.PROCESSDEVICEID\n" +
-            "where a.DELETED='0' and a.ID in (${ids}) ORDER BY b.PLANENDDATE ASC")
-    List<AspCheckItemsDo> eqAscs(@Param("ids") String ids);
-
-    @Select("select a.*,b.DELIVERYDATE from aps_blank_order a LEFT JOIN aps_production_order b on a.PRODUCTIONORDERID=b.ID where a.PRODUCTIONORDERID=#{orderId} and a.DELETED='0' and b.DELETED='0'")
-    List<ApsBlankOrderVo> getByOrderId(@Param("orderId") String orderId);
-
 }

+ 2 - 14
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProcessOperationDao.java

@@ -2,13 +2,11 @@ package com.rongwei.bscommon.sys.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.rongwei.bsentity.domain.ApsProcessOperationDo;
-import com.rongwei.bsentity.vo.ApsProcessOperationAndMaterialVo;
+import com.rongwei.bsentity.vo.ProcessIdRelationVo;
 import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * <p>
@@ -32,15 +30,5 @@ public interface ApsProcessOperationDao extends BaseMapper<ApsProcessOperationDo
     @Update("UPDATE aps_process_operation_out_mater set DELETED='1' where BLANKID=#{blanckid}")
     void updateProcessOperationOutMeter(@Param("blanckid") String blanckid);
 
-    @Update("UPDATE aps_process_operation_equ set DELETED='1' where BLANKID=#{blanckid}")
-    void updateProcessOperationOEqu(@Param("blanckid") String blanckid);
-
-    @Update("UPDATE sys_mind_mapping set DELETED='1' where BSID=#{blanckid}")
-    void updateSysMindMapping(@Param("blanckid") String blanckid);
-
-    @Select("select MAINID,GROUP_CONCAT(EQUIPMENTID) as EQUIDS from aps_resources_equipment where DELETED='0' group by MAINID")
-    List<Map<String, Object>> getEquGroupIds();
-
-    @Select("select apo.*,apoom.ID AS 'outputMaterialId',apoom.OUTPUTMATERIAL AS 'outputMaterial',apoom.PLANROLLNUM AS 'planRollNum',apoom.PLANSTOCKROLLNUM AS 'planStockRollNum',apoom.PLANPRODROLLNUM AS 'planProdRollNum' from aps_process_operation apo LEFT JOIN aps_process_operation_out_mater apoom ON apoom.MAINID = apo.ID AND apoom.DELETED = 0 where apo.DELETED = 0 AND apo.BLANKID = #{blankId}")
-    List<ApsProcessOperationAndMaterialVo> selectOperationAndMaterialByBlankId(@Param("blankId") String blankId);
+    List<ProcessIdRelationVo> getAllNextProcessOperationById(@Param("ids") List<String> ids);
 }

+ 36 - 7
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProcessOperationProcessEquDao.java

@@ -1,16 +1,45 @@
 package com.rongwei.bscommon.sys.dao;
 
-import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
+import com.rongwei.bsentity.vo.ProcessIdRelationVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
 
 /**
- * <p>
- * 生产订单-坯料计划-工序作业加工设备 Mapper 接口
- * </p>
- *
- * @author fpy
- * @since 2024-03-25
+ * @Entity com.rongwei.training.domain.ApsProcessOperationProcessEqu
  */
 public interface ApsProcessOperationProcessEquDao extends BaseMapper<ApsProcessOperationProcessEquDo> {
 
+    void updateBachmaterialprocessByIds(@Param("ids") List<String> ids, @Param("batchNum") String batchNum);
+
+    /**
+     * 更新 工序明细的 实际完工时间 完工状态 作业状态  已检验卷数 未完工卷数
+     *
+     * @param id                  工序明细表ID aps_process_operation_process_equ
+     * @param currentCheckNum     检验卷数
+     * @param qualifiedQuantity   合格数量
+     * @param unqualifiedQuantity 不合格数量
+     * @param previousprocessid   当前工序的上一个工序ID
+     * @param processOperationId  当前工序的ID
+     */
+    void updateAboutCheckBatchNum(@Param("id") String id,
+                                  @Param("currentCheckNum") Integer currentCheckNum,
+                                  @Param("qualifiedQuantity") Integer qualifiedQuantity,
+                                  @Param("unqualifiedQuantity") Integer unqualifiedQuantity,
+                                  @Param("previousprocessid") String previousprocessid,
+                                  @Param("processOperationId") String processOperationId);
+
+    List<ApsProcessOperationProcessEquDo> getGanttDataList(@Param("startTime") Date startTime,
+                                                           @Param("endTime") Date endTime,
+                                                           @Param("factoryId") String factoryId,
+                                                           @Param("workshopIds") List<String> workshopId);
+
+    void updateAboutStateByProcessId(@Param("updateIds") List<ProcessIdRelationVo> updateIds);
 }
+
+
+
+

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

@@ -17,8 +17,6 @@ import java.util.List;
  */
 public interface ApsBlankOrderService extends IService<ApsBlankOrderDo> {
 
-    void apsScheduling(ApsPlanVo apsPlanVo);
-
     ProductionScheduleVo apsPlanModelSet(ApsPlanVo apsPlanVo);
 
 }

+ 1 - 6
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsProcessOperationProcessEquService.java

@@ -1,15 +1,10 @@
 package com.rongwei.bscommon.sys.service;
 
-import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
 
 /**
- * <p>
- * 生产订单-坯料计划-工序作业加工设备 服务类
- * </p>
  *
- * @author fpy
- * @since 2024-03-25
  */
 public interface ApsProcessOperationProcessEquService extends IService<ApsProcessOperationProcessEquDo> {
 

+ 1 - 3
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsProcessOperationService.java

@@ -4,6 +4,7 @@ import com.rongwei.bsentity.domain.ApsProcessOperationDo;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.rwcommon.base.R;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.Map;
 
 /**
@@ -25,7 +26,4 @@ public interface ApsProcessOperationService extends IService<ApsProcessOperation
     清除工艺路线
      */
     void clearCraftRoute(Map<String, Object> params);
-
-    R checkOperation(Map<String, Object> params);
-
 }

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

@@ -0,0 +1,16 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.rongwei.rwcommon.base.R;
+
+import java.util.Date;
+
+/**
+ * GanttService class
+ *
+ * @author XH
+ * @date 2024/03/25
+ */
+public interface GanttService {
+
+    R getListByCondition(Date startTime, Date endTime, String factoryId, String workshopId);
+}

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

@@ -1,30 +1,24 @@
 package com.rongwei.bscommon.sys.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.date.DateField;
-import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.rongwei.bscommon.sys.dao.ApsBlankOrderDao;
-import com.rongwei.bscommon.sys.fegin.RwApsServer;
 import com.rongwei.bscommon.sys.service.ApsBlankOrderService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bscommon.sys.service.ApsProcessOperationService;
-import com.rongwei.bscommon.sys.service.ApsProductionOrderService;
 import com.rongwei.bscommon.sys.service.AspCheckItemsService;
-import com.rongwei.bsentity.domain.*;
+import com.rongwei.bsentity.domain.ApsBlankOrderDo;
+import com.rongwei.bsentity.domain.ApsProcessOperationDo;
+import com.rongwei.bsentity.domain.AspCheckItemsDo;
 import com.rongwei.bsentity.vo.*;
-import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.utils.StringUtils;
 import com.rongwei.safecommon.utils.SaveConstans;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.math.BigDecimal;
-import java.time.ZoneId;
-import java.util.*;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 /**
  * <p>
@@ -41,96 +35,6 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
     private ApsProcessOperationService apsProcessOperationService;
     @Autowired
     private AspCheckItemsService aspCheckItemsService;
-    @Autowired
-    private ApsBlankOrderDao apsBlankOrderDao;
-    @Autowired
-    private RwApsServer rwApsServer;
-    @Autowired
-    private ApsProcessOperationProcessEquServiceImpl processOperationProcessEquService;
-
-    /**
-     * 订单批量排程
-     * @param apsPlanVo
-     */
-    public void apsScheduling(ApsPlanVo apsPlanVo){
-        // 设置批量排程默认开始时间(当前时间向后移8小时)
-        if(apsPlanVo.getApsPlanStartDate() == null){
-            apsPlanVo.setApsPlanStartDate(DateUtil.date().offset(DateField.HOUR,8));
-        }
-        List<ApsBlankOrderVo> apsBlankOrders = new ArrayList<>();
-        if(apsPlanVo.getApsProductionOrders() != null){
-            for (ApsProductionOrderDo apsProductionOrder : apsPlanVo.getApsProductionOrders()) {
-                List<ApsBlankOrderVo> byOrderId = apsBlankOrderDao.getByOrderId(apsProductionOrder.getId());
-                if(byOrderId != null && byOrderId.size()>0){
-                    apsBlankOrders.addAll(byOrderId);
-                }
-            }
-        }
-        apsPlanVo.setApsBlankOrderDos(apsBlankOrders);
-        // 模型转换
-        ProductionScheduleVo productionScheduleVo = apsPlanModelSet(apsPlanVo);
-        // APS平台排程接口调用
-        ProductionScheduleRetVo productionScheduleRetVo = rwApsServer.productionSchedule(productionScheduleVo);
-        // 排程结果保存
-        List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = new ArrayList<>();
-        // 作业ID集合
-        List<String> zyIds = new ArrayList<>();
-        if(productionScheduleRetVo.getProcesses() != null && productionScheduleRetVo.getProcesses().size()>0){
-            for (ProductionProcesses process : productionScheduleRetVo.getProcesses()) {
-                // 非合并生产工序
-                if(process.getAluminumCoils() == null){
-                    ApsProcessOperationProcessEquDo apsProcessOperationProcessEqu = new ApsProcessOperationProcessEquDo();
-                    apsProcessOperationProcessEqu.setId(SecurityUtil.getUUID());
-                    apsProcessOperationProcessEqu.setProcessid(process.getId());
-                    apsProcessOperationProcessEqu.setProcessdeviceid(process.getEquipment().getId());
-                    apsProcessOperationProcessEqu.setProcessdevice(process.getEquipment().getEquipmentName());
-                    apsProcessOperationProcessEqu.setProcessworkshopid(process.getEquipment().getWorkshop());
-                    apsProcessOperationProcessEqu.setProcessworkshop(process.getEquipment().getWorkshopname());
-                    apsProcessOperationProcessEqu.setPlanstartdate(Date.from(process.getStartTime().atZone(ZoneId.systemDefault()).toInstant()));
-                    apsProcessOperationProcessEqu.setPlanenddate(Date.from(process.getEndTime().atZone(ZoneId.systemDefault()).toInstant()));
-                    apsProcessOperationProcessEqu.setPlanprocessrall(process.getProducePcNum());
-                    apsProcessOperationProcessEquDos.add(apsProcessOperationProcessEqu);
-                    zyIds.add(process.getId());
-                }
-                // 合并生产工序
-                else {
-                    // 保存到明细表
-                    Map<String,List<AluminumCoil>> bsAl = new HashMap<>();
-                    for (AluminumCoil aluminumCoil : process.getAluminumCoils()) {
-                        if(bsAl.containsKey(aluminumCoil.getBsId())){
-                            bsAl.get(aluminumCoil.getBsId()).add(aluminumCoil);
-                        }else{
-                            List<AluminumCoil> coils = new ArrayList<>();
-                            coils.add(aluminumCoil);
-                            bsAl.put(aluminumCoil.getBsId(),coils);
-                        }
-                    }
-                    bsAl.forEach((k,v)->{
-                        ApsProcessOperationProcessEquDo apsProcessOperationProcessEqu = new ApsProcessOperationProcessEquDo();
-                        apsProcessOperationProcessEqu.setId(SecurityUtil.getUUID());
-                        apsProcessOperationProcessEqu.setProcessid(k);
-                        apsProcessOperationProcessEqu.setProcessdeviceid(process.getEquipment().getId());
-                        apsProcessOperationProcessEqu.setProcessdevice(process.getEquipment().getEquipmentName());
-                        apsProcessOperationProcessEqu.setProcessworkshopid(process.getEquipment().getWorkshop());
-                        apsProcessOperationProcessEqu.setProcessworkshop(process.getEquipment().getWorkshopname());
-                        apsProcessOperationProcessEqu.setPlanstartdate(Date.from(process.getStartTime().atZone(ZoneId.systemDefault()).toInstant()));
-                        apsProcessOperationProcessEqu.setPlanenddate(Date.from(process.getEndTime().atZone(ZoneId.systemDefault()).toInstant()));
-                        apsProcessOperationProcessEqu.setPlanprocessrall(v.size());
-                        apsProcessOperationProcessEquDos.add(apsProcessOperationProcessEqu);
-                        zyIds.add(k);
-                    });
-                }
-            }
-        }
-        if(apsProcessOperationProcessEquDos != null && apsProcessOperationProcessEquDos.size()>0){
-            // 先删除所有作业的明细
-            if (zyIds != null && zyIds.size()>0){
-                processOperationProcessEquService.remove(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getProcessid,zyIds));
-            }
-            // 再保存新数据
-            processOperationProcessEquService.saveBatch(apsProcessOperationProcessEquDos);
-        }
-    }
 
     /**
      * 原始订单表数据转换APS平台模型数据
@@ -143,14 +47,6 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         ProductionScheduleVo productionScheduleVo = new ProductionScheduleVo();
         // 排程计划开始时间
         productionScheduleVo.setApsPlanStartDate(apsPlanVo.getApsPlanStartDate());
-        productionScheduleVo.setProductionScheduleId("批量排程");
-        productionScheduleVo.setPlanSeconds(10);
-        // 所有设备
-        List<AspCheckItemsDo> eqs = aspCheckItemsService.list(new LambdaQueryWrapper<>());
-        Map<String,AspCheckItemsDo> eqMaps = new HashMap<>();
-        for (AspCheckItemsDo eq : eqs) {
-            eqMaps.put(eq.getId(),eq);
-        }
         // 排程计划设备集合
         List<Equipment> equipmentList = new ArrayList<>();
         // 排程计划工序任务集合
@@ -176,8 +72,6 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                         ApsProcessOperationVo processOperationVo = new ApsProcessOperationVo();
                         BeanUtil.copyProperties(operationDo,processOperationVo);
                         processOperationVo.setProduceOrder(produceOrder);
-                        processOperationVo.setDeliverydate(apsBlankOrderVo.getDeliverydate());
-                        processOperationVo.setApsBlankOrderVo(apsBlankOrderVo);
                         processOperationMs.add(processOperationVo);
                     }else {
                         // 非合并生产工序
@@ -185,7 +79,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                         if(StringUtils.isNotBlank(operationDo.getCanchoosedeviceid())){
                             String[] sbIds = operationDo.getCanchoosedeviceid().split(",");
                             for (String equIds : sbIds) {
-                                AspCheckItemsDo checkItemsD = eqMaps.get(equIds);
+                                AspCheckItemsDo checkItemsD = aspCheckItemsService.getById(equIds);
                                 Equipment equipment = new Equipment();
                                 equipment.setBsEquipmentId(equIds);
                                 equipment.setId(equIds);
@@ -201,12 +95,6 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                         processes.setBsProcessesId(operationDo.getId());
                         // 工序任务可选设备
                         processes.setOptionalEquipments(optionalEquipments);
-                        // 批次
-                        processes.setProducePcNum(operationDo.getPlanprocessrall());
-                        // 单次加工时长
-                        processes.setUnitProduceTime(operationDo.getPlanoncetime().intValue());
-                        processes.setProduceTime(processes.getUnitProduceTime()*processes.getProducePcNum());
-
                         // 上道工序
                         if(StringUtils.isNotBlank(operationDo.getPreviousprocess())){
                             processes.setPreviousProcessesIds(Arrays.asList(operationDo.getPreviousprocess().split(",")));
@@ -221,7 +109,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             }
         }
         // 合并生产工序
-        List<ProductionProcesses> productionProcesses = mergeProcesses(processOperationMs,eqMaps);
+        List<ProductionProcesses> productionProcesses = mergeProcesses(processOperationMs);
         processesList.addAll(productionProcesses);
 
         productionScheduleVo.setProcesses(processesList);
@@ -234,217 +122,9 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
      * @param processOperationMs
      * @return
      */
-    private List<ProductionProcesses> mergeProcesses(List<ApsProcessOperationVo> processOperationMs,Map<String,AspCheckItemsDo> eqMaps){
-        // 最终的合并工序
+    private List<ProductionProcesses> mergeProcesses(List<ApsProcessOperationVo> processOperationMs){
         List<ProductionProcesses> processesList = new ArrayList<>();
-        if(processOperationMs != null && processOperationMs.size()>0){
-            // 按照期望交货期排序
-            processOperationMs.sort(Comparator.comparing(ApsProcessOperationVo::getDeliverydate));
-            // 获取所有设备,并按已存在最晚完工时间排序
-            String allSelEqs = null;
-            for (ApsProcessOperationVo processOperationM : processOperationMs) {
-                if(StringUtils.isNotBlank(processOperationM.getCanchoosedeviceid())){
-                    String[] sbIds = processOperationM.getCanchoosedeviceid().split(",");
-                    for (String equIds : sbIds) {
-                        if(allSelEqs == null){
-                            allSelEqs = "'"+equIds+"'";
-                        }else{
-                            if(!allSelEqs.contains(equIds)){
-                                allSelEqs = allSelEqs + ",'"+equIds+"'";
-                            }
-                        }
-                    }
-                }
-            }
-            // 设备排序
-            List<AspCheckItemsDo> aspCheckItemsDos = apsBlankOrderDao.eqAscs(allSelEqs);
-            Map<String,AspCheckItemsDo> aspCheckItemMap = new HashMap<>();
-            for (AspCheckItemsDo aspCheckItemsDo : aspCheckItemsDos) {
-                aspCheckItemMap.put(aspCheckItemsDo.getId(),aspCheckItemsDo);
-            }
-            // 记录最后选择的设备序号
-            Integer m = 0;
-            for (ApsProcessOperationVo processOperationM : processOperationMs) {
-                // 作业加工卷数
-                int planprocessrall = processOperationM.getPlanprocessrall();
-                if(planprocessrall<=0){
-                    continue;
-                }
-                Boolean a = true;
-                long timestart = DateUtil.date().getTime();
-
-                while (a){
-                    int lastnum = planprocessrall;
-
-                    // 首先看已合并生产的设备是否还有余量继续排产
-                    for (ProductionProcesses processes : processesList) {
-                        // 加工设备
-                        String eq = processes.getOptionalEquipments().get(0);
-                        AspCheckItemsDo aspCheckItem = aspCheckItemMap.get(eq);
-
-                        // 合金和合金状态要一致
-                        if(processes.getAluminumCoils().get(0).getVolumeMetal().equals(processOperationM.getMetal())
-                                && processes.getAluminumCoils().get(0).getVolumeMetalstate().equals(processOperationM.getMetalstate())){
-                            // 宽度不超过50mm,厚度不超过0.05mm,重量不超过1吨
-                            boolean bol = true;
-                            BigDecimal totalWidth = null;
-                            BigDecimal totalWeight = null;
-                            for (AluminumCoil aluminumCoil : processes.getAluminumCoils()) {
-                                // 宽度不超过50mm
-                                if(aluminumCoil.getVolumeWidth().subtract(processOperationM.getProwidth()).abs().compareTo(new BigDecimal("50"))>0){
-                                    bol = false;
-                                }
-                                // 厚度不超过0.05mm
-                                if(aluminumCoil.getVolumeThickness().subtract(processOperationM.getThickness()).abs().compareTo(new BigDecimal("0.05"))>0){
-                                    bol = false;
-                                }
-                                // 重量不超过1吨
-                                if(aluminumCoil.getVolumeWeight().subtract(processOperationM.getSinglerollweight()).abs().compareTo(new BigDecimal("1"))>0){
-                                    bol = false;
-                                }
-                                if(totalWidth == null){
-                                    totalWidth = aluminumCoil.getVolumeWidth();
-                                }else{
-                                    totalWidth = totalWidth.add(aluminumCoil.getVolumeWidth());
-                                }
-                                if(totalWeight == null){
-                                    totalWeight = aluminumCoil.getVolumeWeight();
-                                }else{
-                                    totalWeight = totalWeight.add(aluminumCoil.getVolumeWeight());
-                                }
-                            }
-                            if(bol){
-                                Integer sy = 0;
-                                for (int j=1;j<=planprocessrall;j++){
-                                    // 宽度余量
-                                    if(aspCheckItem.getEquipmentwidth().subtract(totalWidth).compareTo(processOperationM.getProwidth().multiply(new BigDecimal(j)))<0){
-                                        break;
-                                    }
-                                    // 重量余量
-                                    if(aspCheckItem.getEquipmentbearing().subtract(totalWeight).compareTo(processOperationM.getSinglerollweight().multiply(new BigDecimal(j)))<0){
-                                        break;
-                                    }
-                                    sy = j;
-                                }
-                                if(sy>0){
-                                    lastnum = planprocessrall - sy;
-                                    for (int j=1;j<=sy;j++){
-                                        AluminumCoil aluminumCoil = new AluminumCoil();
-                                        aluminumCoil.setBsId(processOperationM.getId());
-                                        aluminumCoil.setVolumeWidth(processOperationM.getProwidth());
-                                        aluminumCoil.setVolumeThickness(processOperationM.getThickness());
-                                        aluminumCoil.setVolumeWeight(processOperationM.getSinglerollweight());
-                                        aluminumCoil.setVolumeMetal(processOperationM.getMetal());
-                                        aluminumCoil.setVolumeMetalstate(processOperationM.getMetalstate());
-                                        processes.getAluminumCoils().add(aluminumCoil);
-                                    }
 
-                                    // 上道工序
-                                    if(StringUtils.isNotBlank(processOperationM.getPreviousprocess())){
-                                        processes.getPreviousProcessesIds().addAll(Arrays.asList(processOperationM.getPreviousprocess().split(",")));
-                                    }
-                                    // 下道工序
-                                    if(StringUtils.isNotBlank(processOperationM.getNextprocess())){
-                                        processes.getNextProcessesIds().addAll(Arrays.asList(processOperationM.getNextprocess().split(",")));
-                                    }
-                                    // 单次加工时长
-                                    if(processes.getUnitProduceTime() == null){
-                                        processes.setUnitProduceTime(processOperationM.getPlanoncetime().intValue());
-                                        processes.setProduceTime(processOperationM.getPlanoncetime().intValue());
-                                    }
-                                    // 加工时长取最大值
-                                    else{
-                                        if(processes.getUnitProduceTime()<processOperationM.getPlanoncetime().intValue()){
-                                            processes.setUnitProduceTime(processOperationM.getPlanoncetime().intValue());
-                                            processes.setProduceTime(processOperationM.getPlanoncetime().intValue());
-                                        }
-                                    }
-
-                                }
-                            }
-                        }
-                    }
-
-                    // 剩余的料卷
-                    if(lastnum>0){
-                        if(m == aspCheckItemsDos.size()-1){
-                            m = -1;
-                        }
-                        int haslast = 0;
-                        for(int i=m+1;i<aspCheckItemsDos.size();i++){
-                            if(haslast == lastnum){
-                                break;
-                            }
-                            AspCheckItemsDo aspCheckItem = aspCheckItemsDos.get(i);
-                            // 选择的设备要在可选设备的范围内
-                            if(processOperationM.getCanchoosedeviceid().contains(aspCheckItem.getId())){
-                                // 单卷宽度不能超过设备宽度并且单卷重不能超过设备的承重
-                                if(processOperationM.getProwidth().compareTo(aspCheckItem.getEquipmentwidth())<0
-                                        && processOperationM.getSinglerollweight().compareTo(aspCheckItem.getEquipmentbearing())<0){
-                                    for(int n=1;n<=lastnum;n++){
-                                        // 宽度余量
-                                        if(aspCheckItem.getEquipmentwidth().compareTo(processOperationM.getProwidth().multiply(new BigDecimal(n)))<0){
-                                            break;
-                                        }
-                                        // 重量余量
-                                        if(aspCheckItem.getEquipmentbearing().compareTo(processOperationM.getSinglerollweight().multiply(new BigDecimal(n)))<0){
-                                            break;
-                                        }
-                                        haslast = n;
-                                    }
-                                    if(haslast>0){
-                                        ProductionProcesses processes = new ProductionProcesses();
-                                        processes.setId(processOperationM.getId());
-                                        processes.setOptionalEquipments(Arrays.asList(new String[]{aspCheckItem.getId()}));
-                                        // 坯料计划订单
-                                        ProduceOrder produceOrder = new ProduceOrder(processOperationM.getApsBlankOrderVo().getId(),processOperationM.getApsBlankOrderVo().getMaterialname(),processOperationM.getApsBlankOrderVo().getDeliverydate());
-                                        processes.setProduceOrder(Arrays.asList(new ProduceOrder[]{produceOrder}));
-
-                                        processes.setAluminumCoils(new ArrayList<>());
-                                        for (int j=1;j<=haslast;j++){
-                                            AluminumCoil aluminumCoil = new AluminumCoil();
-                                            aluminumCoil.setBsId(processOperationM.getId());
-                                            aluminumCoil.setVolumeWidth(processOperationM.getProwidth());
-                                            aluminumCoil.setVolumeThickness(processOperationM.getThickness());
-                                            aluminumCoil.setVolumeWeight(processOperationM.getSinglerollweight());
-                                            aluminumCoil.setVolumeMetal(processOperationM.getMetal());
-                                            aluminumCoil.setVolumeMetalstate(processOperationM.getMetalstate());
-                                            processes.getAluminumCoils().add(aluminumCoil);
-                                        }
-                                        // 批次
-                                        processes.setProducePcNum(1);
-                                        // 单次加工时长
-                                        processes.setUnitProduceTime(processOperationM.getPlanoncetime().intValue());
-                                        processes.setProduceTime(processOperationM.getPlanoncetime().intValue());
-                                        // 上道工序
-                                        if(StringUtils.isNotBlank(processOperationM.getPreviousprocess())){
-                                            processes.setPreviousProcessesIds(Arrays.asList(processOperationM.getPreviousprocess().split(",")));
-                                        }
-                                        // 下道工序
-                                        if(StringUtils.isNotBlank(processOperationM.getNextprocess())){
-                                            processes.setNextProcessesIds(Arrays.asList(processOperationM.getNextprocess().split(",")));
-                                        }
-                                        processesList.add(processes);
-
-                                        lastnum = lastnum - haslast;
-                                    }
-                                }
-                            }
-                        }
-                    }
-
-                    if(lastnum == 0){
-                        a = false;
-                    }
-
-                    // 循环超过2秒则强制退出防止内存溢出
-                    /*long timeend = DateUtil.date().getTime();
-                    if(timeend-timestart>3000){
-                        a = false;
-                    }*/
-                }
-            }
-        }
         return processesList;
     }
 

+ 60 - 8
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationProcessEquServiceImpl.java

@@ -1,20 +1,72 @@
 package com.rongwei.bscommon.sys.service.impl;
 
-import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.rongwei.bscommon.sys.dao.ApsProcessOperationDao;
 import com.rongwei.bscommon.sys.dao.ApsProcessOperationProcessEquDao;
 import com.rongwei.bscommon.sys.service.ApsProcessOperationProcessEquService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
+
+import com.rongwei.bsentity.vo.ProcessIdRelationVo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
- * <p>
- * 生产订单-坯料计划-工序作业加工设备 服务实现类
- * </p>
  *
- * @author fpy
- * @since 2024-03-25
  */
 @Service
-public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsProcessOperationProcessEquDao, ApsProcessOperationProcessEquDo> implements ApsProcessOperationProcessEquService {
+public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsProcessOperationProcessEquDao, ApsProcessOperationProcessEquDo>
+implements ApsProcessOperationProcessEquService {
+    private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
+    @Autowired
+    private ApsProcessOperationProcessEquDao apsProcessOperationProcessEquDao;
+
+    /**
+     * 更新工序的待加工批次号信息
+     *
+     * @param ids
+     * @param batchNumn
+     */
+    public void updateBachmaterialprocessByIds(List<String> ids, String batchNumn) {
+        apsProcessOperationProcessEquDao.updateBachmaterialprocessByIds(ids, batchNumn);
+    }
+
+    /**
+     * 更新 工序明细的 实际完工时间 完工状态 作业状态  已检验卷数 未完工卷数
+     *
+     * @param id                  工序明细表ID aps_process_operation_process_equ
+     * @param currentCheckNum     检验卷数
+     * @param qualifiedQuantity   合格数量
+     * @param unqualifiedQuantity 不合格数量
+     * @param previousprocessid   当前工序的上一个工序ID
+     * @param processOperationId  当前工序的ID
+     */
+    public void updateAboutCheckBatchNum(String id, Integer currentCheckNum, Integer qualifiedQuantity,
+                                         Integer unqualifiedQuantity, String previousprocessid,String processOperationId) {
+        apsProcessOperationProcessEquDao.updateAboutCheckBatchNum(id, currentCheckNum, qualifiedQuantity,
+                unqualifiedQuantity, previousprocessid, processOperationId);
+    }
+
+    /**
+     * 更新后续工序的
+     * @param updateIds
+     */
+    public void updateAboutStateByProcessId(List<ProcessIdRelationVo> updateIds) {
+        // 防止sql 过长拆分
+        List<List<ProcessIdRelationVo>> partition = Lists.partition(updateIds, 8);
+        partition.forEach(data->{
+            apsProcessOperationProcessEquDao.updateAboutStateByProcessId(data);
+        });
+
+    }
+
 
 }
+
+
+
+

+ 41 - 325
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationServiceImpl.java

@@ -1,26 +1,24 @@
 package com.rongwei.bscommon.sys.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bscommon.sys.dao.ApsProcessOperationDao;
 import com.rongwei.bscommon.sys.service.*;
-import com.rongwei.bsentity.domain.*;
-import com.rongwei.bsentity.vo.ApsProcessOperationAndMaterialVo;
+import com.rongwei.bsentity.domain.ApsCraftRouteOutMaterRequestDo;
+import com.rongwei.bsentity.domain.ApsCraftRouteStepDo;
+import com.rongwei.bsentity.domain.ApsProcessOperationDo;
+import com.rongwei.bsentity.domain.ApsProcessOperationOutMaterDo;
 import com.rongwei.bsentity.vo.PreviousProcessVo;
-import com.rongwei.commonservice.service.SysMindMappingService;
+import com.rongwei.bsentity.vo.ProcessIdRelationVo;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.utils.StringUtils;
-import com.rongwei.rwcommonentity.commonservers.domain.SysMindMappingDo;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.text.DecimalFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -53,19 +51,11 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
     @Autowired
     ApsProcessOperationOutMaterService apsProcessOperationOutMaterService;
 
-    @Autowired
-    ApsProcessOperationEquService apsProcessOperationEquService;
-
-    @Autowired
-    SysMindMappingService sysMindMappingService;
-
     private final static Map<String, String> UNIT_MAP = new HashMap<String, String>() {{
         put("kg", "公斤");
         put("ton", "吨");
     }};
 
-    DecimalFormat df = new DecimalFormat("0.####");
-
 
     /**
      * 更新工序的待加工批次号信息
@@ -89,6 +79,13 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         apsProcessOperationDao.updateAboutCheckBatchNum(id, currentCheckNum, qualifiedQuantity, unqualifiedQuantity);
     }
 
+    /**
+     * 根据工序ID 获取当前工序之后的所有工序信息 包含当前工序
+     */
+    public  List<ProcessIdRelationVo> getAllNextProcessOperationById(List<String> ids){
+        return  apsProcessOperationDao.getAllNextProcessOperationById(ids);
+    }
+
     /*
     数量单位字典
      */
@@ -114,28 +111,11 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             map.put("CRAFTROUTEID", craftrouteid);
             List<ApsCraftRouteStepDo> apsCraftRouteStepDoList = apsCraftRouteStepService.listByMap(map).stream().collect(Collectors.toList());
             Collections.sort(apsCraftRouteStepDoList, Comparator.comparingInt(ApsCraftRouteStepDo::getLevel));
-            Collections.sort(apsCraftRouteStepDoList, Comparator.comparing(ApsCraftRouteStepDo::getCreatedate));
-
-            //工艺路线对应的思维导图
-            List<SysMindMappingDo> sysMindMappingDos = new ArrayList<>();
-            Map<String, Object> mindMap = new HashMap<>();
-            mindMap.put("BSID", craftrouteid);
-            List<SysMindMappingDo> sysMindMappingDoList = sysMindMappingService.listByMap(mindMap).stream().collect(Collectors.toList());
-            Collections.sort(sysMindMappingDoList, Comparator.comparing(SysMindMappingDo::getTreecode, Comparator.nullsFirst(Comparator.naturalOrder())));
-            Collections.sort(sysMindMappingDoList, Comparator.comparing(SysMindMappingDo::getCreatedate));
-            SysMindMappingDo sysMindMappingDo = BeanUtil.toBean(sysMindMappingDoList.get(0), SysMindMappingDo.class);
-            String mindStrId = SecurityUtil.getUUID();
-            sysMindMappingDo.setId(mindStrId);
-            sysMindMappingDo.setBsid(blanckdata.getStr("ID"));
-            sysMindMappingDo.setBstable("aps_process_operation");
-            sysMindMappingDos.add(sysMindMappingDo);
-
 
             List<String> overRouteStepIds = new ArrayList<>();
             List<PreviousProcessVo> newProcessIds = new ArrayList<>();//前道工序信息
             List<ApsProcessOperationDo> apsProcessOperationDoList = new ArrayList<>();
             List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDoList = new ArrayList<>();
-            List<ApsProcessOperationEquDo> apsProcessOperationEquDoList = new ArrayList<>();
             for (ApsCraftRouteStepDo apsCraftRouteStepDo : apsCraftRouteStepDoList) {
                 if (overRouteStepIds.contains(apsCraftRouteStepDo.getId())) {
                     continue;
@@ -156,21 +136,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             //前道工序输出
                             List<PreviousProcessVo> processVo = newProcessIds.stream().filter(pro -> pro.getPreviousstepid().equals(apsCraftRouteStepDo1.getPreviousstepid())).collect(Collectors.toList());
                             ApsProcessOperationOutMaterDo outMaterDo = processVo.get(0).getApsProcessOperationOutMaterDo();
-
-                            //更新前道工序的后道工序
-                            ApsProcessOperationDo aDo = apsProcessOperationDoList.stream().filter(qtr -> processVo.get(0).getProcessId().equals(qtr.getId())).findAny().orElse(null);
-                            if (StringUtils.isBlank(aDo.getNextprocessid())) {
-                                aDo.setNextprocessid(processId);
-                                aDo.setNextprocess(apsProcessOperationDo.getProcessname());
-                            } else {
-                                aDo.setNextprocessid(aDo.getNextprocessid() + "," + processId);
-                                aDo.setNextprocess(aDo.getNextprocess() + "," + apsProcessOperationDo.getProcessname());
-                            }
-
                             apsProcessOperationDo.setPreviousprocessid(processVo.get(0).getProcessId());
                             apsProcessOperationDo.setPreviousprocess(processVo.get(0).getProcessName());
                             apsProcessOperationDo.setPlaninputid(outMaterDo.getId());
-                            String meterInput = getInMeterInfo(outMaterDo.getProducttype(), outMaterDo.getMetal(), outMaterDo.getMetalstate(), outMaterDo.getThickness(), outMaterDo.getProwidth(), outMaterDo.getProlength());
+                            String meterInput = getMeterInfo(outMaterDo.getProducttype(), outMaterDo.getMetal(), outMaterDo.getMetalstate(), outMaterDo.getThickness(), outMaterDo.getProwidth(), outMaterDo.getProlength());
 //                            apsProcessOperationDo.setPlaninput(meterInput + outMaterDo.getSinglerollweight() + cxAdminFeginClient.getDictNameByValue("MATERIAL_UNIT", outMaterDo.getNumunit()));
                             apsProcessOperationDo.setPlaninput(meterInput + outMaterDo.getSinglerollweight() + UNIT_MAP.getOrDefault(outMaterDo.getNumunit(), ""));
                             apsProcessOperationDo.setProducttypeid(outMaterDo.getProducttypeid());
@@ -182,9 +151,8 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             apsProcessOperationDo.setProlength(outMaterDo.getProlength());
                             apsProcessOperationDo.setSinglerollweight(outMaterDo.getSinglerollweight());
                             apsProcessOperationDo.setPlaninrall(outMaterDo.getPlanrollnum() - outMaterDo.getPlanstockrollnum() - outMaterDo.getPlanprodrollnum());
-//                            apsProcessOperationDo.setPlanprocessrall(outMaterDo.getPlanrollnum() - outMaterDo.getPlanstockrollnum() - outMaterDo.getPlanprodrollnum());
+                            apsProcessOperationDo.setPlanprocessrall(outMaterDo.getPlanrollnum() - outMaterDo.getPlanstockrollnum() - outMaterDo.getPlanprodrollnum());
                             apsProcessOperationDo.setBlankid(blanckdata.getStr("ID"));
-                            apsProcessOperationDo.setCraftstepid(apsCraftRouteStepDo1.getId());
                             if (outMaterDo.getThickrule().equals("自定义") || outMaterDo.getWidthrule().equals("自定义") || outMaterDo.getLengthrule().equals("自定义")) {
                                 apsProcessOperationDo.setChangeinmeter("1");//输入物料是否可编辑
                             }
@@ -199,93 +167,32 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo = BeanUtil.toBean(apsCraftRouteOutMaterRequestDo.get(0), ApsProcessOperationOutMaterDo.class);
                             apsProcessOperationOutMaterDo.setId(SecurityUtil.getUUID());
                             if (StringUtils.isBlank(apsProcessOperationOutMaterDo.getProducttypeid())) {
-                                apsProcessOperationOutMaterDo.setProducttypeid(outMaterDo.getProducttypeid());
+                                apsProcessOperationOutMaterDo.setProducttypeid(blanckdata.getStr("PRODUCTTYPEID"));
                             }
-                            String outProducttype = apsProcessOperationOutMaterDo.getProducttype();
-                            if (StringUtils.isBlank(outProducttype)) {
-                                outProducttype = outMaterDo.getProducttype();
-                                apsProcessOperationOutMaterDo.setProducttype(outMaterDo.getProducttype());
+                            if (StringUtils.isBlank(apsProcessOperationOutMaterDo.getProducttype())) {
+                                apsProcessOperationOutMaterDo.setProducttype(blanckdata.getStr("PRODUCTTYPE"));
                             }
-                            String outMeter = apsProcessOperationOutMaterDo.getMetal();
-                            if (StringUtils.isBlank(outMeter)) {
-                                outMeter = outMaterDo.getMetal();
-                                apsProcessOperationOutMaterDo.setMetal(outMaterDo.getMetal());
+                            if (StringUtils.isBlank(apsProcessOperationOutMaterDo.getMetal())) {
+                                apsProcessOperationOutMaterDo.setMetal(blanckdata.getStr("ALLOY"));
                             }
-                            String outMetalstate = apsProcessOperationOutMaterDo.getMetalstate();
-                            if (StringUtils.isBlank(outMetalstate)) {
-                                outMetalstate = outMaterDo.getMetalstate();
-                                apsProcessOperationOutMaterDo.setMetalstate(outMaterDo.getMetalstate());
+                            if (StringUtils.isBlank(apsProcessOperationOutMaterDo.getMetalstate())) {
+                                apsProcessOperationOutMaterDo.setMetalstate(blanckdata.getStr("ALLOYSTATUS"));
                             }
-                            BigDecimal tval = changeSize(outMaterDo.getThickness(), apsProcessOperationOutMaterDo.getThickrule(), apsProcessOperationOutMaterDo.getThickchange());
-                            apsProcessOperationOutMaterDo.setThickness(tval);
-                            BigDecimal wval = changeSize(outMaterDo.getProwidth(), apsProcessOperationOutMaterDo.getWidthrule(), apsProcessOperationOutMaterDo.getWidthchange());
-                            apsProcessOperationOutMaterDo.setProwidth(wval);
-                            BigDecimal lval = changeSize(outMaterDo.getProlength(), apsProcessOperationOutMaterDo.getLengthrule(), apsProcessOperationOutMaterDo.getLengthchange());
-                            apsProcessOperationOutMaterDo.setProlength(lval);
+                            apsProcessOperationOutMaterDo.setThickness(changeSize(outMaterDo.getThickness(), apsProcessOperationOutMaterDo.getThickrule(), apsProcessOperationOutMaterDo.getThickchange()));
+                            apsProcessOperationOutMaterDo.setProwidth(changeSize(outMaterDo.getProwidth(), apsProcessOperationOutMaterDo.getWidthrule(), apsProcessOperationOutMaterDo.getWidthchange()));
+                            apsProcessOperationOutMaterDo.setProlength(changeSize(outMaterDo.getProlength(), apsProcessOperationOutMaterDo.getLengthrule(), apsProcessOperationOutMaterDo.getLengthchange()));
                             apsProcessOperationOutMaterDo.setRipcutnum(1);
                             apsProcessOperationOutMaterDo.setCrosscutnum(1);
                             apsProcessOperationOutMaterDo.setOutval(1);
                             apsProcessOperationOutMaterDo.setPlanrollnum(blanckdata.getInt("ROLLNUM"));
-                            //输入物料的输入单卷重*该输出物料的宽度/输入物料的宽度/该输出物料的单卷输出数量
-                            String singlerollweight = df.format(outMaterDo.getSinglerollweight().multiply(wval == null ? BigDecimal.valueOf(1) : wval).divide(outMaterDo.getProwidth() == null ? BigDecimal.valueOf(1) : outMaterDo.getProwidth(), 2, BigDecimal.ROUND_HALF_UP));
-                            apsProcessOperationOutMaterDo.setSinglerollweight(new BigDecimal(singlerollweight));
+                            apsProcessOperationOutMaterDo.setSinglerollweight(blanckdata.getBigDecimal("SINGLEROLLWEIGHT"));
                             apsProcessOperationOutMaterDo.setNumunit(blanckdata.getStr("NUMBERUNIT"));
                             apsProcessOperationOutMaterDo.setPlanstockrollnum(0);
                             apsProcessOperationOutMaterDo.setPlanprodrollnum(0);
                             apsProcessOperationOutMaterDo.setMainid(processId);
                             apsProcessOperationOutMaterDo.setBlankid(blanckdata.getStr("ID"));
-                            //输出物料
-                            String outputMeter = getOutMeterInfo(outProducttype, outMeter, outMetalstate, tval, wval, lval, apsProcessOperationOutMaterDo.getThickoffset(), apsProcessOperationOutMaterDo.getWidthoffset(), apsProcessOperationOutMaterDo.getLengthoffset()) + singlerollweight + UNIT_MAP.getOrDefault(blanckdata.getStr("NUMBERUNIT"), "") + "*" + blanckdata.getInt("ROLLNUM") + "卷";
-                            apsProcessOperationOutMaterDo.setOutputmaterial(outputMeter);
-                            apsProcessOperationDo.setPlanoutput("[1]" + outputMeter);
-                            //输出成品 没有后道工序作业,则自动填入=“{输出物料的输入物料描述} * {计划成品卷数}卷”
-                            String outputfinishproduct = "";
-                            if (StringUtils.isBlank(apsCraftRouteStepDo1.getNextstepid())) {
-                                outputfinishproduct = getInMeterInfo(outProducttype, outMeter, outMetalstate, tval, wval, lval) + "*" + blanckdata.getInt("ROLLNUM") + "卷";
-                            }
-                            apsProcessOperationOutMaterDo.setOutputfinishproduct(outputfinishproduct);
                             previousProcessVo.setApsProcessOperationOutMaterDo(apsProcessOperationOutMaterDo);
 
-
-                            //本道工序的可选设备
-                            List<ApsCraftRouteStepEquDo> apsCraftRouteStepEquDos = apsCraftRouteStepEquService.listByMap(map).stream().collect(Collectors.toList());
-                            List<String> equIdList = new ArrayList<>();//设备
-                            List<String> equGroupIdList = new ArrayList<>();//资源组
-                            for (ApsCraftRouteStepEquDo apsCraftRouteStepEquDo : apsCraftRouteStepEquDos) {
-                                ApsProcessOperationEquDo apsProcessOperationEquDo;
-                                apsProcessOperationEquDo = BeanUtil.toBean(apsCraftRouteStepEquDo, ApsProcessOperationEquDo.class);
-                                apsProcessOperationEquDo.setId(SecurityUtil.getUUID());
-                                apsProcessOperationEquDo.setBlankid(blanckdata.getStr("ID"));
-                                apsProcessOperationEquDo.setMainid(processId);
-                                if (apsProcessOperationEquDo.getResourcetype().equals("资源组")) {
-                                    if (!equGroupIdList.contains(apsProcessOperationEquDo.getResourceid())) {
-                                        equGroupIdList.add(apsProcessOperationEquDo.getResourceid());
-                                    }
-                                } else {
-                                    if (!equIdList.contains(apsProcessOperationEquDo.getResourceid())) {
-                                        equIdList.add(apsProcessOperationEquDo.getResourceid());
-                                    }
-                                }
-
-                                apsProcessOperationEquDoList.add(apsProcessOperationEquDo);
-                            }
-                            //可选设备IDS
-                            if (equIdList.size() > 0 || equGroupIdList.size() > 0) {
-                                apsProcessOperationDo.setCanchoosedeviceid(getChooseequids(equIdList, equGroupIdList));
-                            }
-
-                            //本道工序思维导图
-                            List<SysMindMappingDo> sysMindMappingDoList1 = sysMindMappingDoList.stream().filter(mind -> mind.getId().equals(apsCraftRouteStepDo1.getId())).collect(Collectors.toList());
-                            SysMindMappingDo sysMindMappingDo1 = BeanUtil.toBean(sysMindMappingDoList1.get(0), SysMindMappingDo.class);
-                            sysMindMappingDo1.setId(processId);
-                            sysMindMappingDo1.setParentid(processVo.get(0).getProcessId());
-                            sysMindMappingDo1.setBsid(blanckdata.getStr("ID"));
-                            sysMindMappingDo1.setBstable("aps_process_operation");
-                            JSONObject jsonObject = new JSONObject();
-                            jsonObject.putOpt("craftStepId", apsCraftRouteStepDo1.getId());
-                            sysMindMappingDo1.setRoption(jsonObject.toString());//存工艺路线的工艺步骤ID
-                            sysMindMappingDos.add(sysMindMappingDo1);
-
                             newProcessIds.add(previousProcessVo);
                             apsProcessOperationDoList.add(apsProcessOperationDo);
                             apsProcessOperationOutMaterDoList.add(apsProcessOperationOutMaterDo);
@@ -296,7 +203,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         previousProcessVo = new PreviousProcessVo();
                         //首道工序
                         processId = SecurityUtil.getUUID();
-                        String meterInput = getInMeterInfo(blanckdata.getStr("PRODUCTTYPE"), blanckdata.getStr("ALLOY"), blanckdata.getStr("ALLOYSTATUS"), blanckdata.getBigDecimal("THICKNESS"), blanckdata.getBigDecimal("PROWIDTH"), blanckdata.getBigDecimal("PROLENGTH"));
+                        String meterInput = getMeterInfo(blanckdata.getStr("PRODUCTTYPE"), blanckdata.getStr("ALLOY"), blanckdata.getStr("ALLOYSTATUS"), blanckdata.getBigDecimal("THICKNESS"), blanckdata.getBigDecimal("PROWIDTH"), blanckdata.getBigDecimal("PROLENGTH"));
                         apsProcessOperationDo = BeanUtil.toBean(apsCraftRouteStepDo, ApsProcessOperationDo.class);
                         apsProcessOperationDo.setId(processId);
                         apsProcessOperationDo.setPlaninput(meterInput + blanckdata.getStr("SINGLEROLLWEIGHT") + UNIT_MAP.getOrDefault(blanckdata.getStr("NUMBERUNIT"), ""));
@@ -311,13 +218,11 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         apsProcessOperationDo.setPlaninrall(blanckdata.getInt("ROLLNUM"));
                         apsProcessOperationDo.setPlanprocessrall(blanckdata.getInt("ROLLNUM"));
                         apsProcessOperationDo.setBlankid(blanckdata.getStr("ID"));
-                        apsProcessOperationDo.setCraftstepid(apsCraftRouteStepDo.getId());
 
                         //本道工序信息
                         previousProcessVo.setProcessId(processId);
                         previousProcessVo.setProcessName(apsProcessOperationDo.getProcessname());
                         previousProcessVo.setPreviousstepid(apsCraftRouteStepDo.getId());
-
                         //本道工序的输出
                         map.put("CRAFTSTEPID", apsCraftRouteStepDo.getId());
                         List<ApsCraftRouteOutMaterRequestDo> apsCraftRouteOutMaterRequestDo = apsCraftRouteOutMaterRequestService.listByMap(map).stream().collect(Collectors.toList());
@@ -326,91 +231,30 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         if (StringUtils.isBlank(apsProcessOperationOutMaterDo.getProducttypeid())) {
                             apsProcessOperationOutMaterDo.setProducttypeid(blanckdata.getStr("PRODUCTTYPEID"));
                         }
-                        String outProducttype = apsProcessOperationOutMaterDo.getProducttype();
-                        if (StringUtils.isBlank(outProducttype)) {
-                            outProducttype = blanckdata.getStr("PRODUCTTYPE");
+                        if (StringUtils.isBlank(apsProcessOperationOutMaterDo.getProducttype())) {
                             apsProcessOperationOutMaterDo.setProducttype(blanckdata.getStr("PRODUCTTYPE"));
                         }
-                        String outMeter = apsProcessOperationOutMaterDo.getMetal();
-                        if (StringUtils.isBlank(outMeter)) {
-                            outMeter = blanckdata.getStr("ALLOY");
+                        if (StringUtils.isBlank(apsProcessOperationOutMaterDo.getMetal())) {
                             apsProcessOperationOutMaterDo.setMetal(blanckdata.getStr("ALLOY"));
                         }
-                        String outMetalstate = apsProcessOperationOutMaterDo.getMetalstate();
-                        if (StringUtils.isBlank(outMetalstate)) {
-                            outMetalstate = blanckdata.getStr("ALLOYSTATUS");
+                        if (StringUtils.isBlank(apsProcessOperationOutMaterDo.getMetalstate())) {
                             apsProcessOperationOutMaterDo.setMetalstate(blanckdata.getStr("ALLOYSTATUS"));
                         }
-                        BigDecimal tval = changeSize(blanckdata.getBigDecimal("THICKNESS"), apsProcessOperationOutMaterDo.getThickrule(), apsProcessOperationOutMaterDo.getThickchange());
-                        apsProcessOperationOutMaterDo.setThickness(tval);
-                        BigDecimal wval = changeSize(blanckdata.getBigDecimal("PROWIDTH"), apsProcessOperationOutMaterDo.getWidthrule(), apsProcessOperationOutMaterDo.getWidthchange());
-                        apsProcessOperationOutMaterDo.setProwidth(wval);
-                        BigDecimal lval = changeSize(blanckdata.getBigDecimal("PROLENGTH"), apsProcessOperationOutMaterDo.getLengthrule(), apsProcessOperationOutMaterDo.getLengthchange());
-                        apsProcessOperationOutMaterDo.setProlength(lval);
+                        apsProcessOperationOutMaterDo.setThickness(changeSize(blanckdata.getBigDecimal("THICKNESS"), apsProcessOperationOutMaterDo.getThickrule(), apsProcessOperationOutMaterDo.getThickchange()));
+                        apsProcessOperationOutMaterDo.setProwidth(changeSize(blanckdata.getBigDecimal("PROWIDTH"), apsProcessOperationOutMaterDo.getWidthrule(), apsProcessOperationOutMaterDo.getWidthchange()));
+                        apsProcessOperationOutMaterDo.setProlength(changeSize(blanckdata.getBigDecimal("PROLENGTH"), apsProcessOperationOutMaterDo.getLengthrule(), apsProcessOperationOutMaterDo.getLengthchange()));
                         apsProcessOperationOutMaterDo.setRipcutnum(1);
                         apsProcessOperationOutMaterDo.setCrosscutnum(1);
                         apsProcessOperationOutMaterDo.setOutval(1);
                         apsProcessOperationOutMaterDo.setPlanrollnum(blanckdata.getInt("ROLLNUM"));
-                        //输入物料的输入单卷重*该输出物料的宽度/输入物料的宽度/该输出物料的单卷输出数量
-                        String singlerollweight = df.format(blanckdata.getBigDecimal("SINGLEROLLWEIGHT").multiply(wval == null ? BigDecimal.valueOf(1) : wval).divide(blanckdata.getBigDecimal("PROWIDTH") == null ? BigDecimal.valueOf(1) : blanckdata.getBigDecimal("PROWIDTH"), 2, BigDecimal.ROUND_HALF_UP));
-                        apsProcessOperationOutMaterDo.setSinglerollweight(new BigDecimal(singlerollweight));
+                        apsProcessOperationOutMaterDo.setSinglerollweight(blanckdata.getBigDecimal("SINGLEROLLWEIGHT"));
                         apsProcessOperationOutMaterDo.setNumunit(blanckdata.getStr("NUMBERUNIT"));
                         apsProcessOperationOutMaterDo.setPlanstockrollnum(0);
                         apsProcessOperationOutMaterDo.setPlanprodrollnum(0);
                         apsProcessOperationOutMaterDo.setMainid(processId);
                         apsProcessOperationOutMaterDo.setBlankid(blanckdata.getStr("ID"));
-                        //输出物料
-                        String outputMeter = getOutMeterInfo(outProducttype, outMeter, outMetalstate, tval, wval, lval, apsProcessOperationOutMaterDo.getThickoffset(), apsProcessOperationOutMaterDo.getWidthoffset(), apsProcessOperationOutMaterDo.getLengthoffset()) + singlerollweight + UNIT_MAP.getOrDefault(blanckdata.getStr("NUMBERUNIT"), "") + "*" + blanckdata.getInt("ROLLNUM") + "卷";
-                        apsProcessOperationOutMaterDo.setOutputmaterial(outputMeter);
-                        apsProcessOperationDo.setPlanoutput("[1]" + outputMeter);
-                        //输出成品 没有后道工序作业,则自动填入=“{输出物料的输入物料描述} * {计划成品卷数}卷”
-                        String outputfinishproduct = "";
-                        if (StringUtils.isBlank(apsCraftRouteStepDo.getNextstepid())) {
-                            outputfinishproduct = getInMeterInfo(outProducttype, outMeter, outMetalstate, tval, wval, lval) + "*" + blanckdata.getInt("ROLLNUM") + "卷";
-                        }
-                        apsProcessOperationOutMaterDo.setOutputfinishproduct(outputfinishproduct);
-
                         previousProcessVo.setApsProcessOperationOutMaterDo(apsProcessOperationOutMaterDo);
 
-                        //本道工序的可选设备
-                        List<ApsCraftRouteStepEquDo> apsCraftRouteStepEquDos = apsCraftRouteStepEquService.listByMap(map).stream().collect(Collectors.toList());
-                        List<String> equIdList = new ArrayList<>();//设备
-                        List<String> equGroupIdList = new ArrayList<>();//资源组
-                        for (ApsCraftRouteStepEquDo apsCraftRouteStepEquDo : apsCraftRouteStepEquDos) {
-                            ApsProcessOperationEquDo apsProcessOperationEquDo;
-                            apsProcessOperationEquDo = BeanUtil.toBean(apsCraftRouteStepEquDo, ApsProcessOperationEquDo.class);
-                            apsProcessOperationEquDo.setId(SecurityUtil.getUUID());
-                            apsProcessOperationEquDo.setBlankid(blanckdata.getStr("ID"));
-                            apsProcessOperationEquDo.setMainid(processId);
-                            if (apsProcessOperationEquDo.getResourcetype().equals("资源组")) {
-                                if (!equGroupIdList.contains(apsProcessOperationEquDo.getResourceid())) {
-                                    equGroupIdList.add(apsProcessOperationEquDo.getResourceid());
-                                }
-                            } else {
-                                if (!equIdList.contains(apsProcessOperationEquDo.getResourceid())) {
-                                    equIdList.add(apsProcessOperationEquDo.getResourceid());
-                                }
-                            }
-
-                            apsProcessOperationEquDoList.add(apsProcessOperationEquDo);
-                        }
-                        //可选设备IDS
-                        if (equIdList.size() > 0 || equGroupIdList.size() > 0) {
-                            apsProcessOperationDo.setCanchoosedeviceid(getChooseequids(equIdList, equGroupIdList));
-                        }
-
-                        //本道工序思维导图
-                        List<SysMindMappingDo> sysMindMappingDoList1 = sysMindMappingDoList.stream().filter(mind -> mind.getId().equals(apsCraftRouteStepDo.getId())).collect(Collectors.toList());
-                        SysMindMappingDo sysMindMappingDo1 = BeanUtil.toBean(sysMindMappingDoList1.get(0), SysMindMappingDo.class);
-                        sysMindMappingDo1.setId(processId);
-                        sysMindMappingDo1.setParentid(mindStrId);
-                        sysMindMappingDo1.setBsid(blanckdata.getStr("ID"));
-                        sysMindMappingDo1.setBstable("aps_process_operation");
-                        JSONObject jsonObject = new JSONObject();
-                        jsonObject.putOpt("craftStepId", apsCraftRouteStepDo.getId());
-                        sysMindMappingDo1.setRoption(jsonObject.toString());//存工艺路线的工艺步骤ID
-                        sysMindMappingDos.add(sysMindMappingDo1);
-
                         newProcessIds.add(previousProcessVo);
                         apsProcessOperationDoList.add(apsProcessOperationDo);
                         apsProcessOperationOutMaterDoList.add(apsProcessOperationOutMaterDo);
@@ -418,17 +262,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                 }
             }
 
-//            return R.ok();
-
             boolean bool1 = apsProcessOperationService.saveOrUpdateBatch(apsProcessOperationDoList);
             boolean bool2 = apsProcessOperationOutMaterService.saveOrUpdateBatch(apsProcessOperationOutMaterDoList);
-            boolean bool3 = true;
-            if (apsProcessOperationEquDoList.size() > 0) {
-                bool3 = apsProcessOperationEquService.saveOrUpdateBatch(apsProcessOperationEquDoList);
-            }
-            boolean bool4 = sysMindMappingService.saveOrUpdateBatch(sysMindMappingDos);
 
-            if (bool1 && bool2 && bool3 && bool4) {
+            if (bool1 && bool2) {
 //                r.setCode("200");
 //                r.putData(apsCraftRouteStepDoList);
                 return R.ok();
@@ -452,107 +289,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         apsProcessOperationDao.updateProcessOperation(blankid);
         //工序作业输出物料
         apsProcessOperationDao.updateProcessOperationOutMeter(blankid);
-        //工序作业可选设备
-        apsProcessOperationDao.updateProcessOperationOEqu(blankid);
-        //工序作业思维导图
-        apsProcessOperationDao.updateSysMindMapping(blankid);
-    }
-
-    @Override
-    public R checkOperation(Map<String, Object> params) {
-        String blankId;
-        try {
-            blankId = params.get("BLANKID").toString();
-        } catch (Exception e) {
-            e.printStackTrace();
-            return R.error("请输入正确的坯料计划ID");
-        }
-        //查询坯料计划对应的工序作业
-        List<ApsProcessOperationDo> apsProcessOperationList = this.baseMapper.selectList(new QueryWrapper<ApsProcessOperationDo>().lambda().eq(ApsProcessOperationDo::getBlankid, blankId));
-        //查询坯料计划对应的输出物料
-        List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterList = apsProcessOperationOutMaterService.getBaseMapper().selectList(new QueryWrapper<ApsProcessOperationOutMaterDo>().lambda().eq(ApsProcessOperationOutMaterDo::getBlankid, blankId));
-
-        //如果有前道工序作业,并且该工序输入物料ID不是前道工序作业的输出物料ID,错误提示:{工序}{工序显示名}的输入物料不存在,请重新选择
-
-        //遍历工序作业
-        for (ApsProcessOperationDo apsProcessOperationDo : apsProcessOperationList) {
-            //如果有前道工序
-            if (ObjectUtil.isNotEmpty(apsProcessOperationDo.getPreviousprocessid())) {
-                //获取当前工序的输入物料ID
-                String planInputId = apsProcessOperationDo.getPlaninputid();
-
-                //获取前道工序的输出物料的ID list
-                List<String> previousProcessOutMaterialIdList = apsProcessOperationOutMaterList.stream().filter(item -> item.getMainid().equals(apsProcessOperationDo.getPreviousprocessid())).map(ApsProcessOperationOutMaterDo::getId).collect(Collectors.toList());
-                //该工序输入物料ID不是前道工序作业的输出物料ID
-                if (!previousProcessOutMaterialIdList.contains(planInputId)) {
-                    return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "的输入物料不存在,请重新选择");
-                }
-            }
-        }
-
-        //检查该工序作业所有输出物料,如果(计划输出卷数-计划备料卷数-计划成品卷数)不等于所有后道工序作业计划加工卷数合计;错误提示:{工序}{工序显示名}的{输出物料} 计划输出卷数-计划备料卷数-计划成品卷数必须等于所有后道工序作业计划加工卷数合计
-        //遍历输出物料
-        for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo : apsProcessOperationOutMaterList) {
-            //查询使用此输出物料的工序作业
-            List<ApsProcessOperationDo> processList = apsProcessOperationList.stream().filter(item -> ObjectUtil.isNotEmpty(item.getPlaninputid()) && item.getPlaninputid().equals(apsProcessOperationOutMaterDo.getId())).collect(Collectors.toList());
-            if (processList.size() > 0) {
-                //遍历工序作业,计算 计划加工卷数合计
-                int planProcessRollAll = 0;
-                for (ApsProcessOperationDo apsProcessOperationDo : processList) {
-                    planProcessRollAll += apsProcessOperationDo.getPlanprocessrall();
-                }
-                //计算输出物料的 (计划输出卷数-计划备料卷数-计划成品卷数)值
-                int outputRollAll = apsProcessOperationOutMaterDo.getPlanrollnum() - apsProcessOperationOutMaterDo.getPlanstockrollnum() - apsProcessOperationOutMaterDo.getPlanprodrollnum();
-                if (planProcessRollAll != outputRollAll) {
-                    //根据输出物料查询其工序信息
-                    ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationList.stream().filter(item -> item.getId().equals(apsProcessOperationOutMaterDo.getMainid())).findFirst().get();
-                    return R.error(apsProcessOperationDo.getProcess() + apsProcessOperationDo.getProcessname() + "的" + apsProcessOperationOutMaterDo.getOutputmaterial() + " 计划输出卷数-计划备料卷数-计划成品卷数必须等于所有后道工序作业计划加工卷数合计");
-                }
-            }
-        }
-        return R.ok();
-
-    }
-
-    /*
-    工艺步骤管理/输入物料描述
-     */
-    private String getInMeterInfo(String producttype, String metal, String metalstate, BigDecimal thickness, BigDecimal prowidth, BigDecimal prolength) {
-        String res = "";
-        StringBuilder resStr = new StringBuilder();
-        StringBuilder resSizeStr = new StringBuilder();
-        if (StringUtils.isNotBlank(metal)) {
-            resStr.append(metal);
-        }
-        if (StringUtils.isNotBlank(metalstate)) {
-            resStr.append(metalstate);
-        }
-        if (StringUtils.isNotBlank(producttype)) {
-            resStr.append(producttype);
-        }
-        if (thickness != null) {
-            resSizeStr.append("厚" + df.format(thickness) + "*");
-        }
-        if (prowidth != null) {
-            resSizeStr.append("宽" + df.format(prowidth) + "*");
-        }
-        if (prolength != null) {
-            resSizeStr.append("长" + df.format(prolength) + "*");
-        }
-
-        if (StringUtils.isBlank(resSizeStr.toString())) {
-            res = resStr.toString();
-        } else {
-            res = (StringUtils.isBlank(resStr.toString()) ? "" : (resStr.toString() + " ")) + resSizeStr.toString().substring(0, resSizeStr.toString().length() - 1) + "mm";
-        }
-
-        return res + " ";
     }
 
-    /*
-    工艺步骤管理/输出物料描述
-     */
-    private String getOutMeterInfo(String producttype, String metal, String metalstate, BigDecimal thickness, BigDecimal prowidth, BigDecimal prolength, String thickoffset, String widthoffset, String lengthoffset) {
+    //工艺步骤管理/物料输出规则
+    private String getMeterInfo(String producttype, String metal, String metalstate, BigDecimal thickness, BigDecimal prowidth, BigDecimal prolength) {
         String res = "";
         StringBuilder resStr = new StringBuilder();
         StringBuilder resSizeStr = new StringBuilder();
@@ -566,13 +306,13 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             resStr.append(producttype);
         }
         if (thickness != null) {
-            resSizeStr.append("厚" + df.format(thickness) + (thickoffset == null ? "" : thickoffset) + "*");
+            resSizeStr.append("厚" + thickness + "*");
         }
         if (prowidth != null) {
-            resSizeStr.append("宽" + df.format(prowidth) + (widthoffset == null ? "" : widthoffset) + "*");
+            resSizeStr.append("宽" + prowidth + "*");
         }
         if (prolength != null) {
-            resSizeStr.append("长" + df.format(prolength) + (lengthoffset == null ? "" : lengthoffset) + "*");
+            resSizeStr.append("长" + prolength + "*");
         }
 
         if (StringUtils.isBlank(resSizeStr.toString())) {
@@ -581,12 +321,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             res = (StringUtils.isBlank(resStr.toString()) ? "" : (resStr.toString() + " ")) + resSizeStr.toString().substring(0, resSizeStr.toString().length() - 1) + "mm";
         }
 
-        return res + " ";
+        return res;
     }
 
-    /*
-    长宽高的计算规则
-     */
+    //长宽高的计算规则
     private BigDecimal changeSize(BigDecimal oldVal, String countRule, BigDecimal changeVal) {
         BigDecimal newVal = null;
         if (!countRule.equals("自定义") && oldVal != null) {
@@ -602,26 +340,4 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         }
         return newVal;
     }
-
-    /*
-    获取可选设备IDS
-     */
-    private String getChooseequids(List<String> equIds, List<String> equGroupIds) {
-        //资源组下所有的设备IDS
-        if (equGroupIds.size() > 0) {
-            List<Map<String, Object>> equGroupIdList = apsProcessOperationDao.getEquGroupIds();
-            for (String groupid : equGroupIds) {
-                List<Map<String, Object>> equGroupIds1 = equGroupIdList.stream().filter(equgroup -> equgroup.get("MAINID").toString().equals(groupid)).collect(Collectors.toList());
-                if (equGroupIds1.size() > 0) {
-                    String equIdStr = equGroupIds1.get(0).get("EQUIDS").toString();
-                    for (String equid : Arrays.asList(equIdStr.split(","))) {
-                        if (!equIds.contains(equid)) {
-                            equIds.add(equid);
-                        }
-                    }
-                }
-            }
-        }
-        return String.join(",", equIds);
-    }
 }

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

@@ -0,0 +1,76 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import com.rongwei.bscommon.sys.dao.ApsProcessOperationProcessEquDao;
+import com.rongwei.bscommon.sys.service.GanttService;
+import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
+import com.rongwei.bsentity.vo.ScheduleGanttProcessVo;
+import com.rongwei.bsentity.vo.ScheduleGanttVo;
+import com.rongwei.rwcommon.base.R;
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * GanttServiceImpl class
+ *
+ * @author XH
+ * @date 2024/03/25
+ */
+@Service
+public class GanttServiceImpl implements GanttService {
+    private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
+
+    @Autowired
+    private ApsProcessOperationProcessEquDao apsProcessOperationProcessEquDao;
+
+    /**
+     * 根据条件获取gantt
+     *
+     * @param startTime
+     * @param endTime
+     * @param factoryId
+     * @param workshopId
+     * @return
+     */
+    @Override
+    public R getListByCondition(Date startTime, Date endTime, String factoryId, String workshopId) {
+        List<String> workShopIdList = StringUtils.isNotBlank(workshopId) ? Arrays.asList(workshopId.split(",")) : new ArrayList<>();
+        // 获取 工序作业信息
+        List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = apsProcessOperationProcessEquDao.getGanttDataList(startTime, endTime, factoryId, workShopIdList);
+        List<ScheduleGanttVo> resultVo = new ArrayList<>();
+        if (apsProcessOperationProcessEquDos.isEmpty()) {
+            return R.ok(resultVo);
+        }
+        // 对数据按照加工车间分组
+        LinkedHashMap<String, List<ApsProcessOperationProcessEquDo>> dataMap = apsProcessOperationProcessEquDos.stream()
+                .collect(Collectors.groupingBy(ApsProcessOperationProcessEquDo::getProcessworkshopid,
+                        LinkedHashMap::new, Collectors.toList()));
+        dataMap.forEach((k, v) -> {
+            ScheduleGanttVo vo = new ScheduleGanttVo();
+            List<ScheduleGanttProcessVo> processVos = new ArrayList<>();
+            LinkedHashMap<String, List<ApsProcessOperationProcessEquDo>> processMap = v.stream().collect(Collectors.groupingBy(info ->
+                            info.getPlanstartdate().toString() + info.getPlanenddate().toString() + info.getProcessdeviceid(),
+                    LinkedHashMap::new, Collectors.toList()));
+            processMap.forEach((date, processs) -> {
+                ScheduleGanttProcessVo processVo = new ScheduleGanttProcessVo();
+                processVo.setProcessdevice(processs.get(0).getProcessdevice());
+                processVo.setProcessdeviceid(processs.get(0).getProcessdeviceid());
+                processVo.setPlanstartdate(processs.get(0).getPlanstartdate());
+                processVo.setPlanenddate(processs.get(0).getPlanenddate());
+                processVo.setProcessids(processs.stream().map(ApsProcessOperationProcessEquDo::getProcessid).distinct().collect(Collectors.joining(",")));
+                processVo.setProcessdetailids(processs.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.joining(",")));
+                processVo.setItemname("");
+                processVo.setItemdesc("");
+                processVos.add(processVo);
+            });
+            vo.setProcessList(processVos);
+            vo.setProcessworkshop(v.get(0).getProcessworkshop());
+        });
+        return R.ok();
+    }
+}

+ 52 - 26
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ReportCheckServiceImpl.java

@@ -2,13 +2,17 @@ package com.rongwei.bscommon.sys.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.google.common.collect.Lists;
 import com.rongwei.bscommon.sys.service.ApsBlankOrderService;
 import com.rongwei.bscommon.sys.service.ApsReportRecordsService;
 import com.rongwei.bscommon.sys.service.ReportCheckService;
 import com.rongwei.bsentity.domain.*;
+import com.rongwei.bsentity.vo.ProcessIdRelationVo;
 import com.rongwei.rwcommon.base.BaseDo;
 import com.rongwei.rwcommon.base.R;
+import jodd.util.ArraysUtil;
 import jodd.util.StringUtil;
+import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -16,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.lang.reflect.Array;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
@@ -46,6 +51,8 @@ public class ReportCheckServiceImpl implements ReportCheckService {
     private ApsWorkInProgressInventoryServiceImpl apsWorkInProgressInventoryService;
     @Autowired
     private ApsProcessOperationOutMaterServiceImpl apsProcessOperationOutMaterService;
+    @Autowired
+    private ApsProcessOperationProcessEquServiceImpl apsProcessOperationProcessEquService;
 
     public static final String NO_DELETED = "0";
     public static final String DELETED = "1";
@@ -55,6 +62,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
     public static final String PREPARING_MATERIAL = "备料中";
     public static final String TO_BE_PROCESSED = "待加工";
     public static final String VERIFIED = "已检验";
+    public static final String COMPLETED = "已完工";
 
     /**
      * 保存检验结果后更新相关信息
@@ -80,23 +88,28 @@ public class ReportCheckServiceImpl implements ReportCheckService {
             log.error("当前报工记录已检验无法再次检验");
             return R.error();
         }
-        // 获取工序作业信息
-        ApsProcessOperationDo currentProcessOperationDo = apsProcessOperationService.getOne(new LambdaQueryWrapper<ApsProcessOperationDo>()
+        // 获取当前报工记录对应的工序作业记录
+        ApsProcessOperationProcessEquDo currentProcessOperationEqu = apsProcessOperationProcessEquService.getById(reportRecordsDo.getProcessequid());
+
+        // 获取工序作业主表信息
+        ApsProcessOperationDo currentProcessOperationMainDo = apsProcessOperationService.getOne(new LambdaQueryWrapper<ApsProcessOperationDo>()
                 .eq(ApsProcessOperationDo::getId, reportRecordsDo.getProcessoperationid()).eq(BaseDo::getDeleted, NO_DELETED));
-        if (currentProcessOperationDo == null) {
+        if (currentProcessOperationMainDo == null) {
             log.error("无法根据ID:{}获取到工序作业信息", id);
             return R.error();
         }
-        if (StringUtils.isBlank(currentProcessOperationDo.getBlankid())) {
+        if (StringUtils.isBlank(currentProcessOperationMainDo.getBlankid())) {
             log.error("无法根据工序获取到生产订单信息");
             return R.error();
         }
+        // 前道工序作业ID
+        String previousprocessid = currentProcessOperationMainDo.getPreviousprocessid();
         // 获取工序作业对应的输出物料信息
         ApsProcessOperationOutMaterDo operationOutMaterDoList = apsProcessOperationOutMaterService.getOne(new LambdaQueryWrapper<ApsProcessOperationOutMaterDo>()
-                .eq(ApsProcessOperationOutMaterDo::getMainid, currentProcessOperationDo.getId())
+                .eq(ApsProcessOperationOutMaterDo::getMainid, currentProcessOperationEqu.getId())
                 .eq(BaseDo::getDeleted, NO_DELETED), false);
         if (operationOutMaterDoList == null) {
-            log.error("无法根据工序作业ID:{}获取对应的输出物料信息", currentProcessOperationDo.getId());
+            log.error("无法根据工序作业ID:{}获取对应的输出物料信息", currentProcessOperationEqu.getId());
             return R.error();
         }
         // 获取该工序生成的物料输出信息
@@ -107,9 +120,9 @@ public class ReportCheckServiceImpl implements ReportCheckService {
             return R.error();
         }
         //获取批量计划
-        ApsBlankOrderDo blankOrderDo = apsBlankOrderService.getById(currentProcessOperationDo.getBlankid());
+        ApsBlankOrderDo blankOrderDo = apsBlankOrderService.getById(currentProcessOperationMainDo.getBlankid());
         if (blankOrderDo == null) {
-            log.error("无法根据ID:{}找到对应的订单信息", currentProcessOperationDo.getBlankid());
+            log.error("无法根据ID:{}找到对应的订单信息", currentProcessOperationMainDo.getBlankid());
             return R.error();
         }
         if (StringUtils.isBlank(blankOrderDo.getProductionorderid())) {
@@ -131,12 +144,15 @@ public class ReportCheckServiceImpl implements ReportCheckService {
             log.debug("暂无检验的数据");
             return R.ok();
         }
-        String nextProcessId = currentProcessOperationDo.getNextprocessid();
+        String nextProcessId = currentProcessOperationMainDo.getNextprocessid();
         // 获取当前工序对应的后道工序信息
         List<ApsProcessOperationDo> nextProcessOperationDos = new ArrayList<>();
+        // 当前工序作业的下一个工序作业ID
+        List<String> nextProcessIds = null;
         if (StringUtils.isNotBlank(nextProcessId)) {
+            nextProcessIds = Arrays.asList(nextProcessId.split(","));
             nextProcessOperationDos = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
-                    .in(ApsProcessOperationDo::getId, Arrays.asList(nextProcessId.split(",")))
+                    .in(ApsProcessOperationDo::getId, nextProcessIds)
                     .eq(BaseDo::getDeleted, NO_DELETED));
         }
 
@@ -155,7 +171,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
         currentProductionOrderDoDispose(productionOrderDo, unqualificationOutPutList);
         // 在制品
         updateArticlesProcessData(unqualificationOutPutList, qualifiedOutPutList, reportRecordsDo,
-                apsWorkInProgressInventoryDos, nextProcessOperationDos, currentProcessOperationDo,
+                apsWorkInProgressInventoryDos, nextProcessOperationDos, currentProcessOperationMainDo,
                 operationOutMaterDoList);
         // 获取所有待加工的批次号信息
         String toBeProcessedBatchNum = apsWorkInProgressInventoryDos.stream().filter(info -> TO_BE_PROCESSED.equals(info.getWorkinprocessstatus()))
@@ -167,9 +183,11 @@ public class ReportCheckServiceImpl implements ReportCheckService {
 
         /**********************执行数据更新操作*************************/
         if (!nextProcessOperationDos.isEmpty() && StringUtils.isNotBlank(toBeProcessedBatchNum)) {
-            //更新后续工的待加工批次号信息
+            //更新后续工的待加工批次号信息
             apsProcessOperationService.updateBachmaterialprocessByIds(nextProcessOperationDos.stream()
                     .map(ApsProcessOperationDo::getId).collect(Collectors.toList()), toBeProcessedBatchNum);
+            apsProcessOperationProcessEquService.updateBachmaterialprocessByIds(nextProcessOperationDos.stream()
+                    .map(ApsProcessOperationDo::getId).collect(Collectors.toList()), toBeProcessedBatchNum);
         }
         /***************************存在不合格批次信息时 更新更新报工记录对应订单的订单评审状态=待计划评审, 订单调整日期=今天*************************************/
         if (unqualifiedQuantity > 0) {
@@ -179,8 +197,13 @@ public class ReportCheckServiceImpl implements ReportCheckService {
                     .set(ApsProductionOrderDo::getAuditstatus, PENDING_PLAN_REVIEW)
             );
         }
-        /************************更新当前工序的输出已检验卷数,不合格卷数,合格卷数*******************************/
-        apsProcessOperationService.updateAboutCheckBatchNum(currentProcessOperationDo.getId(), inspectQuantity, qualifiedQuantity, unqualifiedQuantity);
+        /************************更新工序*******************************/
+        // 更新工序作业明细表的输出已检验卷数,不合格卷数,合格卷数完工状态,作业状态,生产状态
+        apsProcessOperationProcessEquService.updateAboutCheckBatchNum(currentProcessOperationEqu.getId(), inspectQuantity,
+                qualifiedQuantity, unqualifiedQuantity, previousprocessid, currentProcessOperationMainDo.getId());
+        // 更新工序主表的 已检验卷数,不合格卷数,合格卷数 , 完工状态,作业状态,生产状态
+        apsProcessOperationService.updateAboutCheckBatchNum(currentProcessOperationMainDo.getId(), inspectQuantity,
+                qualifiedQuantity, unqualifiedQuantity);
         /***************更新在制品信息****************************/
         // 需要刪除的ID
         List<String> deletedIdList = apsWorkInProgressInventoryDos.stream()
@@ -197,21 +220,24 @@ public class ReportCheckServiceImpl implements ReportCheckService {
         apsReportRecordsService.update(new LambdaUpdateWrapper<ApsReportRecordsDo>().eq(ApsReportRecordsDo::getId, id)
                 .set(ApsReportRecordsDo::getCheckstatus, VERIFIED)
                 .set(ApsReportRecordsDo::getNeedcheckbatchnumber, ""));
+        /******************************如果本次检验中存在不合格的批次 则更新后续所有工序作业的状态***************************/
+        if (unqualifiedQuantity != 0 && (nextProcessIds!= null && !nextProcessIds.isEmpty())) {
+            ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(currentProcessOperationMainDo.getId());
+            /**
+             *且当前工序作业已完成 则更新后续所有
+             *工序作业明细和工序作业的 相关信息
+             *(工序作业明细) 完工状态 实际完工时间
+             *(工序作业) 完工状态 作业状态 生产状态 实际完工时间
+             */
+            if (COMPLETED.equals(apsProcessOperationDo.getClosestatus()) ) {
+                // 获取当前工序
+                List<ProcessIdRelationVo> allNextProcessOperationById = apsProcessOperationService.getAllNextProcessOperationById(nextProcessIds);
+                apsProcessOperationProcessEquService.updateAboutStateByProcessId(allNextProcessOperationById);
+            }
+        }
         return R.ok();
     }
 
-    /**
-     * 更新后道工序
-     *
-     * @param nextProcessOperationDo 当前工序的所有下一个工序
-     * @param qualifiedOutPutList    检验合格的物品
-     * @return
-     */
-    public void nextProcessDispose(List<ApsProcessOperationDo> nextProcessOperationDo,List<ApsWorkInProgressInventoryDo> qualifiedOutPutList) {
-
-
-    }
-
     /**
      * 更新工序作业对应的订单信息
      * 如果存在不合格的批次信息 需要更新 订单相关信息

+ 45 - 7
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationDao.xml

@@ -17,16 +17,54 @@
         <set>
             OUTPUTQUALIFIEDNUM = IFNULL(OUTPUTQUALIFIEDNUM,0)+ #{qualifiedQuantity},
             OUTPUTUNQUALIFIEDNUM = IFNULL(OUTPUTUNQUALIFIEDNUM,0) +#{unqualifiedQuantity},
-            CHECKOUTROLL = IFNULL(OUTPUTUNQUALIFIEDNUM,0) +#{currentCheckNum},
+            CHECKOUTROLL = IFNULL(CHECKOUTROLL,0) +#{currentCheckNum},
             UNFINISHROLL = UNFINISHROLL -#{currentCheckNum},
-            ACTUALFINISHDATE = CASE
-            WHEN (UNFINISHROLL - #{currentCheckNum}) = 0 THEN NOW()
-            ELSE ACTUALFINISHDATE
-            END
+            <!--实际完工时间-->
+            ACTUALFINISHDATE = (select IF(COUNT(ID) !=0 ,NULL,NOW()) from aps_process_operation_process_equ where
+            PROCESSID =#{id} and CLOSESTATUS !='已完工'),
+            <!-- 完工状态-->
+            CLOSESTATUS = (select IF(COUNT(ID) !=0 ,'未完工','已完工') from aps_process_operation_process_equ where
+            PROCESSID =#{id} and CLOSESTATUS !='已完工'),
+            <!-- 作业状态-->
+            WORKSTATUS = (select IF(COUNT(ID) !=0 ,'加工中','已完工') from aps_process_operation_process_equ where
+            PROCESSID =#{id} and CLOSESTATUS !='已完工'),
+            <!-- 生产状态-->
+            PROCESSSTATUS = (select IF(COUNT(ID) !=0 ,'40','50') from aps_process_operation_process_equ where PROCESSID
+            =#{id} and CLOSESTATUS !='已完工')
         </set>
         <where>
             ID =#{id}
         </where>
     </update>
-
-</mapper>
+    <resultMap id="ProcessIdRelationMap" type="com.rongwei.bsentity.vo.ProcessIdRelationVo">
+        <result property="id" column="ID" jdbcType="VARCHAR"/>
+        <result property="nextprocessid" column="NEXTPROCESSID" jdbcType="VARCHAR"/>
+        <result property="previousprocessid" column="PREVIOUSPROCESSID" jdbcType="VARCHAR"/>
+        <result property="processdetailid" column="PROCESSDETAILID" jdbcType="VARCHAR"/>
+    </resultMap>
+    <select id="getAllNextProcessOperationById" resultMap="ProcessIdRelationMap">
+        WITH RECURSIVE cte AS (
+        SELECT
+        a.ID,a.NEXTPROCESSID,a.PREVIOUSPROCESSID
+        FROM
+        aps_process_operation a
+        WHERE
+        a.DELETED = '0'
+        AND a.ID IN
+        <foreach collection="ids" open="(" close=")" separator="," item="id">
+            #{id}
+        </foreach>
+        UNION ALL
+        SELECT
+        k.ID,k.NEXTPROCESSID,k.PREVIOUSPROCESSID
+        FROM
+        aps_process_operation k
+        INNER JOIN cte c ON FIND_IN_SET( k.ID, c.NEXTPROCESSID )
+        ) SELECT
+        a.* ,apope.ID as PROCESSDETAILID
+        FROM
+        cte a
+        left join  (select PROCESSID,GROUP_CONCAT(DISTINCT ID) ID from aps_process_operation_process_equ
+                           where DELETED='0' group by PROCESSID)  apope on  a.ID=apope.PROCESSID
+    </select>
+ </mapper>

+ 238 - 0
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationProcessEquDao.xml

@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.rongwei.bscommon.sys.dao.ApsProcessOperationProcessEquDao">
+
+    <resultMap id="BaseResultMap" type="com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo">
+        <id property="id" column="ID" jdbcType="VARCHAR"/>
+        <result property="tenantid" column="TENANTID" jdbcType="VARCHAR"/>
+        <result property="roption" column="ROPTION" jdbcType="VARCHAR"/>
+        <result property="deleted" column="DELETED" jdbcType="VARCHAR"/>
+        <result property="remark" column="REMARK" jdbcType="VARCHAR"/>
+        <result property="createdate" column="CREATEDATE" jdbcType="TIMESTAMP"/>
+        <result property="createuserid" column="CREATEUSERID" jdbcType="VARCHAR"/>
+        <result property="modifydate" column="MODIFYDATE" jdbcType="TIMESTAMP"/>
+        <result property="modifyuserid" column="MODIFYUSERID" jdbcType="VARCHAR"/>
+        <result property="createusername" column="CREATEUSERNAME" jdbcType="VARCHAR"/>
+        <result property="modifyusername" column="MODIFYUSERNAME" jdbcType="VARCHAR"/>
+        <result property="ownedfactory" column="OWNEDFACTORY" jdbcType="VARCHAR"/>
+        <result property="processid" column="PROCESSID" jdbcType="VARCHAR"/>
+        <result property="processworkshop" column="PROCESSWORKSHOP" jdbcType="VARCHAR"/>
+        <result property="processdeviceid" column="PROCESSDEVICEID" jdbcType="VARCHAR"/>
+        <result property="processdevice" column="PROCESSDEVICE" jdbcType="VARCHAR"/>
+        <result property="actualstartdate" column="ACTUALSTARTDATE" jdbcType="TIMESTAMP"/>
+        <result property="actualfinishdate" column="ACTUALFINISHDATE" jdbcType="TIMESTAMP"/>
+        <result property="closestatus" column="CLOSESTATUS" jdbcType="VARCHAR"/>
+        <result property="planprocessrall" column="PLANPROCESSRALL" jdbcType="INTEGER"/>
+        <result property="startingroll" column="STARTINGROLL" jdbcType="INTEGER"/>
+        <result property="reportroll" column="REPORTROLL" jdbcType="INTEGER"/>
+        <result property="checkoutroll" column="CHECKOUTROLL" jdbcType="INTEGER"/>
+        <result property="unfinishroll" column="UNFINISHROLL" jdbcType="INTEGER"/>
+        <result property="workstatus" column="WORKSTATUS" jdbcType="VARCHAR"/>
+        <result property="bachmaterialprocess" column="BACHMATERIALPROCESS" jdbcType="VARCHAR"/>
+        <result property="waitreportid" column="WAITREPORTID" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ID,TENANTID,ROPTION,
+        DELETED,REMARK,CREATEDATE,
+        CREATEUSERID,MODIFYDATE,MODIFYUSERID,
+        CREATEUSERNAME,MODIFYUSERNAME,OWNEDFACTORY,
+        PROCESSID,PROCESSWORKSHOP,PROCESSDEVICEID,
+        PROCESSDEVICE,ACTUALSTARTDATE,ACTUALFINISHDATE,
+        CLOSESTATUS,PLANPROCESSRALL,STARTINGROLL,
+        REPORTROLL,CHECKOUTROLL,UNFINISHROLL,
+        WORKSTATUS,BACHMATERIALPROCESS,WAITREPORTID
+    </sql>
+    <update id="updateBachmaterialprocessByIds">
+        update aps_process_operation_process_equ set BACHMATERIALPROCESS =
+        CONCAT_WS(',',BACHMATERIALPROCESS,#{batchNum})
+        <where>
+            PROCESSID in
+            <foreach collection="ids" separator="," open="(" close=")" item="id">
+                #{id}
+            </foreach>
+        </where>
+    </update>
+    <update id="updateAboutCheckBatchNum">
+        update aps_process_operation_process_equ apope
+        <set>
+            <!--  OUTPUTQUALIFIEDNUM = IFNULL(OUTPUTQUALIFIEDNUM,0)+ #{qualifiedQuantity},
+             OUTPUTUNQUALIFIEDNUM = IFNULL(OUTPUTUNQUALIFIEDNUM,0) +#{unqualifiedQuantity},-->
+            apope.CHECKOUTROLL = IFNULL(CHECKOUTROLL,0) +#{currentCheckNum},
+            apope.UNFINISHROLL = PLANPROCESSRALL -#{currentCheckNum},
+            <choose>
+                <when test="previousprocessid != null and previousprocessid != ''">
+                    <!-- 不存在上一个工序 未完工卷数等于0时 更新 为已完工  -->
+                    <!-- 完工状态-->
+                    apope.CLOSESTATUS= CASE
+                    WHEN (apope.PLANPROCESSRALL - #{currentCheckNum}) = 0 THEN '已完工'
+                    ELSE '未完工'
+                    END,
+                    <!--  作业状态-->
+                    apope.WORKSTATUS= CASE
+                    WHEN (apope.PLANPROCESSRALL -#{currentCheckNum}) = 0 THEN '已完工'
+                    ELSE apope.WORKSTATUS
+                    END,
+                    <!--实际完工时间-->
+                    apope.ACTUALFINISHDATE = CASE
+                    WHEN (apope.PLANPROCESSRALL - #{currentCheckNum}) = 0 THEN NOW()
+                    ELSE apope.ACTUALFINISHDATE
+                    END
+                </when>
+                <otherwise>
+                    <!-- 存在上一个工序 上道工序作业已完工 当前工序作业明细的已开工卷数=已检验卷数-->
+                    apope.CLOSESTATUS =
+                    CASE
+                    <!--并且当前工序明细的已开工卷数=已检验卷数-->
+                        WHEN
+                        <!--并且上道工序作业已完工状态=已完工-->
+                         select (select apo.CLOSESTATUS='已完工' from aps_process_operation apo where apo.ID =#{previousprocessid} )
+                        <!--并且作业明细待加工料卷批次号数量-工序作业已取消卷数<=0-->
+                        and (select IFNULL(LENGTH(apope.BACHMATERIALPROCESS) - LENGTH(REPLACE(apope.BACHMATERIALPROCESS, ',',
+                        '')) + 1 ,0)-IFNULL(apo.CANCELROLL,0)&lt;=0 from aps_process_operation apo where apo.ID =#{processOperationId}
+                        ) and apope.STARTINGROLL = apope.CHECKOUTROLL+#{currentCheckNum}  from dual THEN '已完工'
+                        ELSE '未完工'
+                    END,
+                    apope.WORKSTATUS =
+                    CASE
+                        WHEN  select (select apo.CLOSESTATUS='已完工' from aps_process_operation apo where apo.ID =#{previousprocessid} )
+                    <!--并且作业明细待加工料卷批次号数量-工序作业已取消卷数<=0-->
+                    and (select IFNULL(LENGTH(apope.BACHMATERIALPROCESS) - LENGTH(REPLACE(apope.BACHMATERIALPROCESS, ',',
+                    '')) + 1 ,0)-IFNULL(apo.CANCELROLL,0)&lt;=0 from aps_process_operation apo where apo.ID =#{processOperationId}
+                    ) and apope.STARTINGROLL = apope.CHECKOUTROLL+#{currentCheckNum}  from dual THEN '已完工'
+                        ELSE apope.WORKSTATUS
+                    END,
+                    apope.ACTUALFINISHDATE = CASE
+                    WHEN  CASE
+                    WHEN  select (select apo.CLOSESTATUS='已完工' from aps_process_operation apo where apo.ID =#{previousprocessid} )
+                    <!--并且作业明细待加工料卷批次号数量-工序作业已取消卷数<=0-->
+                    and (select IFNULL(LENGTH(apope.BACHMATERIALPROCESS) - LENGTH(REPLACE(apope.BACHMATERIALPROCESS, ',',
+                    '')) + 1 ,0)-IFNULL(apo.CANCELROLL,0)&lt;=0 from aps_process_operation apo where apo.ID =#{processOperationId}
+                    ) and apope.STARTINGROLL = apope.CHECKOUTROLL+#{currentCheckNum}  from dual THEN NOW()
+                    ELSE apope.ACTUALFINISHDATE
+                    END
+                </otherwise>
+            </choose>
+
+        </set>
+        <where>
+            ID =#{id}
+        </where>
+    </update>
+
+    <!--    <resultMap id="userOrdersResultMap" type="com.rongwei.bsentity.vo.ScheduleGanttVo">-->
+    <!--        <id property="processworkshop" column="PROCESSWORKSHOP"/>-->
+    <!--        <collection property="processList" ofType="com.rongwei.bsentity.vo.ScheduleGanttVo.ProcessVo" javaType="java.util.List">-->
+    <!--            <result property="processdevice" column="PROCESSDEVICE"/>-->
+    <!--            <result property="processdeviceid" column="PROCESSDEVICEID"/>-->
+    <!--            <result property="planstartdate" column="PLANSTARTDATE"/>-->
+    <!--            <result property="planenddate" column="PLANENDDATE"/>-->
+    <!--            <result property="processids" column="PROCESSIDS"/>-->
+    <!--            <result property="processdetailids" column="PROCESSDETAILIDS"/>-->
+    <!--            <result property="itemname" column="ITEMNAME"/>-->
+    <!--            <result property="itemdesc" column="ITEMDESC"/>-->
+    <!--        </collection>-->
+    <!--    </resultMap>-->
+
+
+    <select id="getGanttDataList" resultType="com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo">
+        select
+        apope.PROCESSID,
+        apope.PROCESSWORKSHOPID,
+        apope.PROCESSWORKSHOP,
+        apope.PROCESSDEVICEID,
+        apope.PROCESSDEVICE,
+        apope.PLANSTARTDATE,
+        apope.PLANENDDATE,
+        apope.PROCESSID,
+        apop.PRODUCTNAME,
+        acm.CUSTOMERABBREVIATION,
+        apope.PLANPROCESSRALL,
+        DATE(apo2.DELIVERYDATE) as DELIVERYDATE,
+        apo.PROCESSNAME,
+        apo.WORKSTATUS,
+        apo.STARTINGROLL,
+        apo.REPORTROLL,
+        apo.CHECKOUTROLL,
+        apo.UNFINISHROLL,
+        apo.ACTUALSTARTDATE,
+        apo.ACTUALFINISHDATE
+
+        from aps_process_operation_process_equ apope
+        LEFT JOIN aps_process_operation apo on apo.ID = apope.PROCESSID AND apo.DELETED='0'
+        LEFT JOIN aps_blank_order abo on apo.BLANKID = abo.ID and abo.DELETED='0'
+        LEFT JOIN aps_process_output_product apop on apop.BLANKID =abo.ID
+        LEFT JOIN aps_production_order apo2 on apo2.ID = abo.PRODUCTIONORDERID AND apo2.DELETED='0'
+        LEFT JOIN aps_customer_management acm on apo2.CUSTOMID =acm.ID and acm.DELETED='0'
+        <where>
+            and apope.DELETED='0'
+            <if test="workshopIds != null and workshopIds.size()>0">
+                and apope.PROCESSWORKSHOPID in
+                <foreach collection="workshopIds" item="workshopId" open="(" close=")" separator=",">
+                    #{workshopId}
+                </foreach>
+            </if>
+            <if test="factoryId != null and factoryId != ''">and apope.TENANTID = #{factoryId}</if>
+            <if test="startTime != null ">and apope.PLANSTARTDATE &gt;= #{startTime}</if>
+            <if test="endTime != null ">and apope.PLANENDDATE &lt;= #{endTime}
+            </if>
+        </where>
+        order by apope.PLANSTARTDATE asc,apope.PLANENDDATE asc
+    </select>
+
+
+    <sql id="appendSql">
+        (SELECT apo.CLOSESTATUS = '已完工'
+                   AND  IFNULL(LENGTH(apope.BACHMATERIALPROCESS) - LENGTH(REPLACE(apope.BACHMATERIALPROCESS, ',', '')) + 1 ,0)
+                            -IFNULL(apo1.CANCELROLL,0)&lt;=0
+                   AND apope.STARTINGROLL = apope.CHECKOUTROLL
+        FROM
+            aps_process_operation apo INNER JOIN
+            aps_process_operation apo1
+        WHERE
+            apo.ID = #{data.previousprocessid}
+          and apo1.ID=#{data.id})
+    </sql>
+    <update id="updateAboutStateByProcessId">
+        <foreach collection="updateIds" item="data" separator=";">
+            <if  test="data.processdetailids != null and data.processdetailids.size()>0">
+                <foreach collection="data.processdetailids" item="id" >
+                    update aps_process_operation_process_equ apope
+                    <set>
+                        <!--并且当前工序明细的已开工卷数=已检验卷数-->
+                        apope.CLOSESTATUS = CASE  WHEN <include refid="appendSql"/> THEN '已完工' ELSE '未完工'  END,
+                        apope.WORKSTATUS = CASE WHEN <include refid="appendSql"/> THEN '已完工' ELSE apope.WORKSTATUS  END,
+                        apope.ACTUALFINISHDATE=  CASE WHEN <include refid="appendSql"/> THEN NOW() ELSE apope.ACTUALFINISHDATE END
+                    </set>
+                    <where>
+                        apope.ID=#{id}
+                        and apope.CLOSESTATUS='未完工';
+                    </where>
+                </foreach>
+            </if>
+
+            update aps_process_operation
+            <set>
+                <!--实际完工时间-->
+                ACTUALFINISHDATE = (select IF(COUNT(ID) !=0 ,NULL,NOW()) from aps_process_operation_process_equ where
+                PROCESSID =#{data.id} and CLOSESTATUS !='已完工'),
+                <!-- 完工状态-->
+                CLOSESTATUS = (select IF(COUNT(ID) !=0 ,'未完工','已完工') from aps_process_operation_process_equ where
+                PROCESSID =#{data.id} and CLOSESTATUS !='已完工'),
+                <!-- 作业状态-->
+                WORKSTATUS = (select IF(COUNT(ID) !=0 ,'加工中','已完工') from aps_process_operation_process_equ where
+                PROCESSID =#{data.id} and CLOSESTATUS !='已完工'),
+                <!-- 生产状态-->
+                PROCESSSTATUS = (select IF(COUNT(ID) !=0 ,'40','50') from aps_process_operation_process_equ where PROCESSID
+                =#{data.id} and CLOSESTATUS !='已完工')
+            </set>
+            <where>
+                ID =#{data.id}
+                AND CLOSESTATUS !='已完工'
+            </where>
+        </foreach>
+
+    </update>
+</mapper>

+ 0 - 10
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsCraftRouteStepDo.java

@@ -53,16 +53,6 @@ public class ApsCraftRouteStepDo extends BaseDo implements Serializable {
      */
     private String stepnum;
 
-    /**
-     * 工序ID
-     */
-    private String processid;
-
-    /**
-     * 工序编号
-     */
-    private String processcode;
-
     /**
      * 工序
      */

+ 11 - 1
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationDo.java

@@ -11,6 +11,9 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
 /**
  * <p>
  * 生产订单-坯料计划-工序作业
@@ -45,10 +48,11 @@ public class ApsProcessOperationDo extends BaseDo {
     @TableField("OWNEDFACTORY")
     private String ownedfactory;
     /**
-     * 工艺路线的工艺步骤表ID
+     * 工艺步骤表ID
      */
     @TableField("CRAFTSTEPID")
     private String craftstepid;
+
     /**
      * 工艺步骤编号
      */
@@ -229,6 +233,12 @@ public class ApsProcessOperationDo extends BaseDo {
      */
     @TableField("PLANINPUTID")
     private String planinputid;
+
+    /**
+     * 可选设备ID
+     */
+    @TableField("CANCHOOSEDEVICEID")
+    private String canchoosedeviceid;
     /**
      * 计划输入物料
      */

+ 11 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationOutMaterDo.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.util.Date;
 
 import com.rongwei.rwcommon.base.BaseDo;
 import lombok.Data;
@@ -47,6 +48,16 @@ public class ApsProcessOperationOutMaterDo extends BaseDo implements Serializabl
      */
     private String mainid;
 
+    /**
+     * 工艺路线ID
+     */
+    private String craftrouteid;
+
+    /**
+     * 工艺步骤ID
+     */
+    private String craftstepid;
+
     /**
      * 物料编号
      */

+ 35 - 41
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationProcessEquDo.java

@@ -1,138 +1,132 @@
 package com.rongwei.bsentity.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.rongwei.rwcommon.base.BaseDo;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.Version;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
 
 /**
- * <p>
  * 生产订单-坯料计划-工序作业加工设备
- * </p>
  *
- * @author fpy
- * @since 2024-03-25
+ * @TableName aps_process_operation_process_equ
  */
+@TableName(value = "aps_process_operation_process_equ")
 @Data
-@EqualsAndHashCode(callSuper = true)
-@Accessors(chain = true)
-@TableName("aps_process_operation_process_equ")
-public class ApsProcessOperationProcessEquDo extends BaseDo {
-
-    private static final long serialVersionUID=1L;
-
+public class ApsProcessOperationProcessEquDo extends BaseDo implements Serializable {
     /**
      * 主键ID
      */
-    @TableId("ID")
+    @TableId
     private String id;
-    @TableField("TENANTID")
+
+    /**
+     *
+     */
     private String tenantid;
+
     /**
      * 扩展json格式配置
      */
-    @TableField("ROPTION")
     private String roption;
+
     /**
      * 所属工厂
      */
-    @TableField("OWNEDFACTORY")
     private String ownedfactory;
+
     /**
      * 工序作业ID
      */
-    @TableField("PROCESSID")
     private String processid;
+
     /**
      * 加工车间ID
      */
-    @TableField("PROCESSWORKSHOPID")
     private String processworkshopid;
+
     /**
      * 加工车间
      */
-    @TableField("PROCESSWORKSHOP")
     private String processworkshop;
+
     /**
      * 加工设备ID
      */
-    @TableField("PROCESSDEVICEID")
     private String processdeviceid;
+
     /**
      * 加工设备
      */
-    @TableField("PROCESSDEVICE")
     private String processdevice;
+
     /**
      * 计划开工时间
      */
-    @TableField("PLANSTARTDATE")
     private Date planstartdate;
+
     /**
      * 实际开工时间
      */
-    @TableField("ACTUALSTARTDATE")
     private Date actualstartdate;
+
     /**
      * 计划完工时间
      */
-    @TableField("PLANENDDATE")
     private Date planenddate;
+
     /**
      * 实际完工时间
      */
-    @TableField("ACTUALFINISHDATE")
     private Date actualfinishdate;
+
     /**
      * 完工状态
      */
-    @TableField("CLOSESTATUS")
     private String closestatus;
+
     /**
      * 计划加工卷数
      */
-    @TableField("PLANPROCESSRALL")
     private Integer planprocessrall;
+
     /**
      * 已开工卷数
      */
-    @TableField("STARTINGROLL")
     private Integer startingroll;
+
     /**
      * 已报工卷数
      */
-    @TableField("REPORTROLL")
     private Integer reportroll;
+
     /**
      * 已检验卷数
      */
-    @TableField("CHECKOUTROLL")
     private Integer checkoutroll;
+
     /**
      * 未完工卷数
      */
-    @TableField("UNFINISHROLL")
     private Integer unfinishroll;
+
     /**
      * 作业状态
      */
-    @TableField("WORKSTATUS")
     private String workstatus;
+
     /**
      * 待加工料卷批次号
      */
-    @TableField("BACHMATERIALPROCESS")
     private String bachmaterialprocess;
+
     /**
      * 待报工记录ID
      */
-    @TableField("WAITREPORTID")
     private String waitreportid;
-
-
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
 }

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

@@ -108,6 +108,11 @@ public class ApsReportRecordsDo extends BaseDo implements Serializable {
      */
     private String checkusername;
 
+    /**
+     * 工序作业对应的作业设备表ID
+     */
+    private String processequid;
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 }

+ 1 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ApsBlankOrderVo.java

@@ -2,6 +2,7 @@ package com.rongwei.bsentity.vo;
 
 import com.rongwei.bsentity.domain.ApsBlankOrderDo;
 import lombok.Data;
+
 import java.util.Date;
 
 @Data

+ 0 - 3
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ApsPlanVo.java

@@ -1,7 +1,6 @@
 package com.rongwei.bsentity.vo;
 
 import com.rongwei.bsentity.domain.ApsBlankOrderDo;
-import com.rongwei.bsentity.domain.ApsProductionOrderDo;
 import lombok.Data;
 import java.util.Date;
 import java.util.List;
@@ -16,6 +15,4 @@ public class ApsPlanVo {
 
     private List<ApsBlankOrderVo> apsBlankOrderDos;
 
-    private List<ApsProductionOrderDo> apsProductionOrders;
-
 }

+ 0 - 11
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ApsProcessOperationVo.java

@@ -2,7 +2,6 @@ package com.rongwei.bsentity.vo;
 
 import com.rongwei.bsentity.domain.ApsProcessOperationDo;
 import lombok.Data;
-import java.util.Date;
 
 @Data
 public class ApsProcessOperationVo extends ApsProcessOperationDo {
@@ -12,14 +11,4 @@ public class ApsProcessOperationVo extends ApsProcessOperationDo {
      */
     private ProduceOrder produceOrder;
 
-    /**
-     * 期望交货期
-     */
-    private Date deliverydate;
-
-    /**
-     * 所属坯料计划
-     */
-    private ApsBlankOrderVo apsBlankOrderVo;
-
 }

+ 43 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ProcessIdRelationVo.java

@@ -0,0 +1,43 @@
+package com.rongwei.bsentity.vo;
+
+import lombok.Data;
+import org.apache.commons.lang.StringUtils;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * ProcessIdRelationvO class
+ *
+ * @author XH
+ * @date 2024/03/26
+ */
+@Data
+public class ProcessIdRelationVo {
+    /**
+     * 工序作业ID
+     */
+    private String id;
+    /**
+     *  下一个工序作业ID
+     */
+    private String nextprocessid;
+    /**
+     *   上一个工序作业ID
+     */
+    private String previousprocessid;
+    /**
+     *   工序作业明细表ID
+     */
+    private String processdetailid;
+
+    private List<String> processdetailids;
+
+
+    public void setProcessdetailid(String processdetailid) {
+        if(StringUtils.isNotBlank(processdetailid)){
+            this.processdetailids = Arrays.asList(processdetailid.split(","));
+        }
+        this.processdetailid = processdetailid;
+    }
+}

+ 47 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ScheduleGanttProcessVo.java

@@ -0,0 +1,47 @@
+package com.rongwei.bsentity.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * ScheduleGanttProcessVo class
+ *
+ * @author XH
+ * @date 2024/03/25
+ */
+@Data
+public class ScheduleGanttProcessVo {
+    /**
+     *  加工设备
+     */
+    private String processdevice;
+    /**
+     *  加工设备ID
+     */
+    private String processdeviceid;
+    /**
+     * 计划开工时间
+     */
+    private Date planstartdate;
+    /**
+     * 计划完工时间
+     */
+    private Date planenddate;
+    /**
+     * 工序作业ID
+     */
+    private String processids;
+    /**
+     * 工序作业明细ID
+     */
+    private String processdetailids;
+    /**
+     * 条目名称
+     */
+    private String itemname;
+    /**
+     * 条目描述
+     */
+    private String itemdesc;
+}

+ 26 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ScheduleGanttVo.java

@@ -0,0 +1,26 @@
+package com.rongwei.bsentity.vo;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * ScheduleGanttVo class
+ *
+ * @author XH
+ * @date 2024/03/25
+ */
+@Data
+public class ScheduleGanttVo {
+    /**
+     * 加工车间
+     */
+    private String processworkshop;
+    /**
+     * 工序明细
+     */
+    private List<ScheduleGanttProcessVo> processList;
+
+}

+ 0 - 22
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsBlankOrderController.java

@@ -1,14 +1,6 @@
 package com.rongwei.bsserver.controller;
 
 
-import com.rongwei.bscommon.sys.service.ApsBlankOrderService;
-import com.rongwei.bsentity.vo.ApsPlanVo;
-import com.rongwei.bsentity.vo.ProductionScheduleRetVo;
-import com.rongwei.bsentity.vo.ProductionScheduleVo;
-import com.rongwei.rwcommon.base.R;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -24,19 +16,5 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/apsBlankOrder")
 public class ApsBlankOrderController {
 
-    @Autowired
-    private ApsBlankOrderService apsBlankOrderService;
-
-    /**
-     * 订单批量排程
-     * @param apsPlanVo
-     * @return
-     */
-    @PostMapping("/apsScheduling")
-    public R apsScheduling(@RequestBody ApsPlanVo apsPlanVo) throws Exception{
-        apsBlankOrderService.apsScheduling(apsPlanVo);
-        return R.ok();
-    }
-
 }
 

+ 0 - 10
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsProcessOperationController.java

@@ -57,15 +57,5 @@ public class ApsProcessOperationController {
             log.info("清除工艺路线异常:" + e.getMessage());
         }
     }
-
-    /**
-     * 校验工序作业
-     * 检查该工序作业所有输出物料,如果(计划输出卷数-计划备料卷数-计划成品卷数)不等于所有后道工序作业计划加工卷数合计;错误提示:{工序}{工序显示名}的{输出物料} 计划输出卷数-计划备料卷数-计划成品卷数必须等于所有后道工序作业计划加工卷数合计;
-     */
-    @PostMapping("/checkOperation")
-    public R checkOperation(@RequestBody Map<String, Object> params) {
-        log.info("校验工序作业;参数为:{}", params);
-        return apsProcessOperationService.checkOperation(params);
-    }
 }
 

+ 48 - 0
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/GanttController.java

@@ -0,0 +1,48 @@
+package com.rongwei.bsserver.controller;
+
+import com.rongwei.bscommon.sys.dao.ApsProcessOperationProcessEquDao;
+import com.rongwei.bscommon.sys.service.impl.GanttServiceImpl;
+import com.rongwei.bsentity.vo.ProcessIdRelationVo;
+import com.rongwei.rwcommon.base.R;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * GanttController class
+ *
+ * @author XH
+ * @date 2024/03/25
+ */
+@RestController
+@RequestMapping("/gantt")
+public class GanttController {
+
+    private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
+    @Autowired
+    private GanttServiceImpl ganttService;
+
+    /**
+     * 根据条件获取甘特图相关信息
+     *
+     * @param params
+     * @return
+     */
+    @PostMapping("/list")
+    public R updateRelevantInformation(@RequestParam(name = "startTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime,
+                                       @RequestParam(name = "endTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime,
+                                       @RequestParam(name = "factoryId") String factoryId,
+                                       @RequestParam(name = "workshopId", required = false) String workshopId) {
+        return ganttService.getListByCondition(startTime, endTime, factoryId, workshopId);
+    }
+
+}