Browse Source

Merge branch 'mode-min-unit' of http://192.168.0.43:8086/AI_SAFE_PRODUCE/safe_produce_core into mode-min-unit

huangpeng 3 months ago
parent
commit
554b56901e
17 changed files with 348 additions and 25 deletions
  1. 2 1
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProductDetailDao.java
  2. 15 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsRollerTypeDao.java
  3. 1 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsProcessOperationProcessEquService.java
  4. 2 1
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsReportRecordsService.java
  5. 11 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsRollerTypeService.java
  6. 131 14
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationProcessEquServiceImpl.java
  7. 13 1
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProductDetailServiceImpl.java
  8. 19 1
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportRecordsServiceImpl.java
  9. 20 0
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsRollerTypeServiceImpl.java
  10. 4 1
      cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsServiceImpl.java
  11. 3 0
      cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationProcessEquDao.xml
  12. 4 1
      cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProductDetailDao.xml
  13. 76 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsRollerTypeDo.java
  14. 16 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/CheckReportRecordVo.java
  15. 12 0
      cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/GanttVos.java
  16. 17 4
      cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsProcessOperationProcessEquController.java
  17. 2 1
      cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsReportRecordController.java

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

@@ -8,6 +8,7 @@ import com.rongwei.bsentity.vo.GetOldTechnicalRequirementRes;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 public interface ApsProductDetailDao extends BaseMapper<ApsProductDetailDo> {
@@ -64,7 +65,7 @@ public interface ApsProductDetailDao extends BaseMapper<ApsProductDetailDo> {
 
     void publishCancel(@Param("productionOrderIds") List<String> productionOrderIds);
 
-    GetOldTechnicalRequirementRes selectMyList(@Param("technicalRequirementId") String technicalRequirementId, @Param("id") String id, @Param("alloy") String alloy, @Param("alloystatus") String alloystatus, @Param("orderProductTypeId") String orderProductTypeId, @Param("customId") String customId);
+    GetOldTechnicalRequirementRes selectMyList(@Param("technicalRequirementId") String technicalRequirementId, @Param("id") String id, @Param("alloy") String alloy, @Param("alloystatus") String alloystatus, @Param("orderProductTypeId") String orderProductTypeId, @Param("customId") String customId, @Param("thickness") BigDecimal thickness);
 
     List<GetOldTechnicalRequirementRes> selectMyList1(@Param("technicalRequirementId") String technicalRequirementId, @Param("id") String id, @Param("customId") String customId, @Param("alloy") String alloy);
 

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

@@ -0,0 +1,15 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.rongwei.bsentity.domain.ApsRollerTypeDo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Entity generator.domain.ApsRollerType
+ */
+public interface ApsRollerTypeDao extends BaseMapper<ApsRollerTypeDo> {
+
+}
+
+
+
+

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

@@ -49,4 +49,5 @@ public interface ApsProcessOperationProcessEquService extends IService<ApsProces
                          List<ApsProcessOperationProcessEquDo> waitUpdateEquList,
                          List<ApsProcessOperationProcessEquDo> waitInsertEquList);
 
+    List<String> updateDetails2(JobDetailsVo jobDetailsVo);
 }

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

@@ -2,6 +2,7 @@ package com.rongwei.bscommon.sys.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.bsentity.domain.ApsReportRecordsDo;
+import com.rongwei.bsentity.vo.CheckReportRecordVo;
 import com.rongwei.bsentity.vo.SaveReportReq;
 import com.rongwei.bsentity.vo.SmallRollStartReportReq;
 import com.rongwei.bsentity.vo.StartRePortReq;
@@ -22,7 +23,7 @@ public interface ApsReportRecordsService extends IService<ApsReportRecordsDo> {
     R saveReport(SaveReportReq req);
 
     R checkMergeProcess(ApsReportRecordsDo req);
-    R checkMergeProcess2(ApsReportRecordsDo req);
+    R checkMergeProcess2(CheckReportRecordVo req);
 
     R smallRollStartReport(SmallRollStartReportReq req);
 

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

@@ -0,0 +1,11 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.rongwei.bsentity.domain.ApsRollerTypeDo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ */
+public interface ApsRollerTypeService extends IService<ApsRollerTypeDo> {
+
+}

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

@@ -98,6 +98,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
     private ApsScheduleConfigService apsScheduleConfigService;
     @Autowired
     private PlatformTransactionManager transactionManager;
+    @Autowired
+    private ApsRollerTypeService apsRollerTypeService;
 
 //    /**
 //     * 更新工序的待加工批次号信息
@@ -344,9 +346,22 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 throw new CustomException("存在已完工的工序作业无法换线");
             }
             apsProcessOperationProcessEquDos.sort(Comparator.comparing(ApsProcessOperationProcessEquDo::getPlanstartdate));
+            String rollerid1 = apsProcessOperationProcessEquDos.get(0).getRollerid();
+            String rollerId2 = changingWiresVos.get(0).getRollerId();
+            String rollerType = "";
+            if (StringUtils.isBlank(rollerid1)) {
+                rollerid1 = "";
+            }
+            if (StringUtils.isBlank(rollerId2)) {
+                rollerId2 = "";
+            } else {
+                ApsRollerTypeDo rollerTypeDo = apsRollerTypeService.getById(rollerId2);
+                rollerType = rollerTypeDo.getRollertype();
+            }
             if (apsProcessOperationProcessEquDos.get(0).getProcessdeviceid().equals(changingWiresVos.get(0).getEquId())
-                    && apsProcessOperationProcessEquDos.get(0).getPlanstartdate().equals(changingWiresVos.get(0).getProcessingTime())) {
-                throw new CustomException("请修改计划开工时间或加工设备");
+                    && apsProcessOperationProcessEquDos.get(0).getPlanstartdate().equals(changingWiresVos.get(0).getProcessingTime())
+                    && rollerid1.equals(rollerId2)) {
+                throw new CustomException("请修改计划开工时间或加工设备或辊");
             }
 
             //对于换线作业的数据进行排序
@@ -453,6 +468,18 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                             needEqu.setProcessworkshop(changingWiresVo.getWorkshopName());
                             needEqu.setProcessdeviceid(changingWiresVo.getEquId());
                             needEqu.setProcessdevice(changingWiresVo.getEquName());
+                            //可选设备
+                            String canchoosedeviceid = apsProcessOperationDo.getCanchoosedeviceid();
+                            LinkedList<String> canChooseDeviceIdList = new LinkedList<>(Arrays.asList(canchoosedeviceid.split(",")));
+                            ApsProcessOperationEquDo needInsert = new ApsProcessOperationEquDo();
+                            if (!canChooseDeviceIdList.contains(changingWiresVo.getEquId())) {
+                                needInsert.setId(SecurityUtil.getUUID());
+                                needInsert.setTenantid(CXCommonUtils.getCurrentUserFactoryId(nowWorkUser));
+                                needInsert.setBlankid(apsProcessOperationDo.getBlankid());
+                                needInsert.setMainid(apsProcessOperationDo.getId());
+                                needInsert.setResourcetype("设备");
+                                needInsert.setResourceid(changingWiresVo.getEquId());
+                            }
                             if (ObjectUtil.isNotEmpty(changingWiresVo.getIsZhaji()) && ObjectUtil.isNotEmpty(changingWiresVo.getOldDeviceId())) {
                                 //如果是轧机工序类别,并且(加工设备换了,或者加工设备没换并且辊类型不为空),则辊类型=所选辊类型
                                 if (changingWiresVo.getIsZhaji()) {
@@ -460,10 +487,14 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                                     if (changingWiresVo.getOldDeviceId().equals(changingWiresVo.getEquId())) {
                                         if (ObjectUtil.isNotEmpty(changingWiresVo.getRollerId())) {
                                             needEqu.setRollerid(changingWiresVo.getRollerId());
+                                            needInsert.setRollerid(changingWiresVo.getRollerId());
+                                            needInsert.setRollertype(rollerType);
                                         }
                                     } else {
                                         if (ObjectUtil.isNotEmpty(changingWiresVo.getRollerId())) {
                                             needEqu.setRollerid(changingWiresVo.getRollerId());
+                                            needInsert.setRollerid(changingWiresVo.getRollerId());
+                                            needInsert.setRollertype(rollerType);
                                         } else {
                                             throw new CustomException("换设备后轧机工序必须选择辊类型");
                                         }
@@ -478,6 +509,18 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                             checkConflictVos.add(new CheckConflictVo(processEqus.getId(), processEqus.getProcessdeviceid(),
                                     processEqus.getPlanstartdate(), processEqus.getPlanenddate()));
                             saveList.add(needEqu);
+                            if (StringUtils.isNotBlank(needInsert.getId())) {
+                                apsProcessOperationEquService.save(needInsert);
+                                ApsProcessOperationDo needUpdateProcess = new ApsProcessOperationDo();
+                                needUpdateProcess.setId(apsProcessOperationDo.getId());
+                                canChooseDeviceIdList.add(changingWiresVo.getEquId());
+                                needUpdateProcess.setCanchoosedeviceid(String.join(",", canChooseDeviceIdList));
+                                String chooseEqu = apsProcessOperationDo.getChooseequ();
+                                LinkedList<String> chooseEquList = new LinkedList<>(Arrays.asList(chooseEqu.split(",")));
+                                chooseEquList.add(changingWiresVo.getEquName());
+                                needUpdateProcess.setChooseequ(String.join(",", chooseEquList));
+                                apsProcessOperationService.updateById(needUpdateProcess);
+                            }
                         }
                         updateConflictVo.setApsProcessOperationProcessEquDo(needEqu);
                         updateConflictVoList.add(updateConflictVo);
@@ -824,20 +867,20 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
         //查询工序作业详情
         ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(processid);
         //查询工艺步骤指定的可选设备
-        List<String> processOperationEquList = Arrays.asList(apsProcessOperationDo.getCanchoosedeviceid().split(","));
+//        List<String> processOperationEquList = Arrays.asList(apsProcessOperationDo.getCanchoosedeviceid().split(","));
 //        List<ApsProcessOperationEquDo> processOperationEquDos = apsProcessOperationEquService.list(new LambdaQueryWrapper<ApsProcessOperationEquDo>().eq(ApsProcessOperationEquDo::getMainid, processid));
-        long count = processOperationEquList.stream().filter(item -> item.equals(apsProcessOperationProcessEquDo.getProcessdeviceid())).count();
+//        long count = processOperationEquList.stream().filter(item -> item.equals(apsProcessOperationProcessEquDo.getProcessdeviceid())).count();
         String newConflictdes = apsProcessOperationProcessEquDo.getConflictdes();
-        if (count <= 0) {
-            //如果加工设备不是工艺步骤指定的可选设备,记录冲突:加工设备不是工艺要求的可选设备
-            apsConflictLogService.recordLog(apsProcessOperationProcessEquDo.getId(),
-                    apsProcessOperationProcessEquDo.getProcessdeviceid(), NO_NEED_EQU, 1, null);
-            newConflictdes = addNewConflictsDesc(newConflictdes, NO_NEED_EQU);
-        } else {
-            apsConflictLogService.recordLog(apsProcessOperationProcessEquDo.getId(),
-                    apsProcessOperationProcessEquDo.getProcessdeviceid(), NO_NEED_EQU, 2, null);
-            newConflictdes = removeConflictsDesc(newConflictdes, NO_NEED_EQU);
-        }
+//        if (count <= 0) {
+//            //如果加工设备不是工艺步骤指定的可选设备,记录冲突:加工设备不是工艺要求的可选设备
+//            apsConflictLogService.recordLog(apsProcessOperationProcessEquDo.getId(),
+//                    apsProcessOperationProcessEquDo.getProcessdeviceid(), NO_NEED_EQU, 1, null);
+//            newConflictdes = addNewConflictsDesc(newConflictdes, NO_NEED_EQU);
+//        } else {
+//            apsConflictLogService.recordLog(apsProcessOperationProcessEquDo.getId(),
+//                    apsProcessOperationProcessEquDo.getProcessdeviceid(), NO_NEED_EQU, 2, null);
+//            newConflictdes = removeConflictsDesc(newConflictdes, NO_NEED_EQU);
+//        }
 //        //查询工序作业详情
 //        ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(apsProcessOperationProcessEquDo.getProcessid());
 
@@ -1352,6 +1395,22 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
         return R.ok(ganttService.getListById(aboutIds));
     }
 
+    /**
+     * 更新工序作业明细
+     *
+     * @param jobDetailsVo
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public List<String> updateDetails2(JobDetailsVo jobDetailsVo) {
+        ChangingWiresVo changingWiresVo = BeanUtil.toBean(jobDetailsVo, ChangingWiresVo.class);
+        changingWiresVo.setProcessingTime(jobDetailsVo.getPlanStartTime());
+        List<ChangingWiresVo> changingWiresVos = new LinkedList<>();
+        changingWiresVos.add(changingWiresVo);
+        return changingWires(changingWiresVos);
+    }
+
     /**
      * 工序作业明细拆分
      *
@@ -1545,6 +1604,26 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                         needUpdate.setProcessworkshop(data.getWorkshopName());
                         needUpdate.setPlanstartdate(data.getPlanStartTime());
                         needUpdate.setPlanenddate(DateUtil.offsetSecond(equDo.getPlanenddate(), (int) DateUtil.between(equDo.getPlanstartdate(), data.getPlanStartTime(), DateUnit.SECOND, false)));
+                        List<String> canChooseDeviceIdList = new LinkedList<>(Arrays.asList(currentProcessOperationDo.getCanchoosedeviceid().split(",")));
+                        if (!canChooseDeviceIdList.contains(data.getEquId())) {
+                            ApsProcessOperationEquDo needInsert = new ApsProcessOperationEquDo();
+                            needInsert.setId(SecurityUtil.getUUID());
+                            needInsert.setTenantid(CXCommonUtils.getCurrentUserFactoryId(nowWorkUser));
+                            needInsert.setBlankid(currentProcessOperationDo.getBlankid());
+                            needInsert.setMainid(currentProcessOperationDo.getId());
+                            needInsert.setResourcetype("设备");
+                            needInsert.setResourceid(data.getEquId());
+                            apsProcessOperationEquService.save(needInsert);
+                            ApsProcessOperationDo needUpdateProcess = new ApsProcessOperationDo();
+                            needUpdateProcess.setId(currentProcessOperationDo.getId());
+                            canChooseDeviceIdList.add(data.getEquId());
+                            needUpdateProcess.setCanchoosedeviceid(String.join(",", canChooseDeviceIdList));
+                            String chooseEqu = currentProcessOperationDo.getChooseequ();
+                            LinkedList<String> chooseEquList = new LinkedList<>(Arrays.asList(chooseEqu.split(",")));
+                            chooseEquList.add(data.getEquName());
+                            needUpdateProcess.setChooseequ(String.join(",", chooseEquList));
+                            apsProcessOperationService.updateById(needUpdateProcess);
+                        }
                         apsProcessOperationProcessEquService.updateById(needUpdate);
                     }
 
@@ -2369,11 +2448,18 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
     public R scheduling(ChangingScheduleVo req) {
 //        ApsUtils.checkScheduling(null);
 
+        SysUserVo currentUser = CXCommonUtils.getCurrentUser();
         Date processingTime = req.getProcessingTime();
         if (processingTime.before(DateUtil.date())) {
             return R.error("开始时间必须大于当前时间");
         }
 
+        String rollerType = "";
+        if (req.getRollerId() != null) {
+            ApsRollerTypeDo rollerTypeDo = apsRollerTypeService.getById(req.getRollerId());
+            rollerType = rollerTypeDo.getRollertype();
+        }
+
         //作业明细集合
         List<String> processEquIdList = req.getProcessEquIdList();
         List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = apsProcessOperationProcessEquService.listByIds(processEquIdList).stream().collect(Collectors.toList());
@@ -2396,6 +2482,21 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 needUpdate.setId(apsProcessOperationProcessEquDo.getId());
                 needUpdate.setProcessdeviceid(req.getEquId());
                 needUpdate.setProcessdevice(req.getEquName());
+                //作业详情
+                ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(apsProcessOperationProcessEquDo.getProcessid());
+                //可选设备
+                String canchoosedeviceid = apsProcessOperationDo.getCanchoosedeviceid();
+                LinkedList<String> canChooseDeviceIdList = new LinkedList<>(Arrays.asList(canchoosedeviceid.split(",")));
+                ApsProcessOperationEquDo needInsert = new ApsProcessOperationEquDo();
+                if (!canChooseDeviceIdList.contains(req.getEquId())) {
+                    needInsert.setId(SecurityUtil.getUUID());
+                    needInsert.setTenantid(CXCommonUtils.getCurrentUserFactoryId(currentUser));
+                    needInsert.setBlankid(apsProcessOperationDo.getBlankid());
+                    needInsert.setMainid(apsProcessOperationDo.getId());
+                    needInsert.setResourcetype("设备");
+                    needInsert.setResourceid(req.getEquId());
+                }
+
                 if (ObjectUtil.isNotEmpty(req.getIsZhaji()) && ObjectUtil.isNotEmpty(req.getOldDeviceId())) {
                     //如果是轧机工序类别,并且(加工设备换了,或者加工设备没换并且辊类型不为空),则辊类型=所选辊类型
                     if (req.getIsZhaji()) {
@@ -2403,10 +2504,14 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                         if (req.getOldDeviceId().equals(req.getEquId())) {
                             if (ObjectUtil.isNotEmpty(req.getRollerId())) {
                                 needUpdate.setRollerid(req.getRollerId());
+                                needInsert.setRollerid(req.getRollerId());
+                                needInsert.setRollertype(rollerType);
                             }
                         } else {
                             if (ObjectUtil.isNotEmpty(req.getRollerId())) {
                                 needUpdate.setRollerid(req.getRollerId());
+                                needInsert.setRollerid(req.getRollerId());
+                                needInsert.setRollertype(rollerType);
                             } else {
                                 throw new CustomException("换设备后轧机工序必须选择辊类型");
                             }
@@ -2421,6 +2526,18 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 nextStartDate = needUpdate.getPlanenddate();
 //            needUpdateList.add(needUpdate);
                 apsProcessOperationProcessEquService.updateById(needUpdate);
+                if (StringUtils.isNotBlank(needInsert.getId())) {
+                    apsProcessOperationEquService.save(needInsert);
+                    ApsProcessOperationDo needUpdateProcess = new ApsProcessOperationDo();
+                    needUpdateProcess.setId(apsProcessOperationDo.getId());
+                    canChooseDeviceIdList.add(req.getEquId());
+                    needUpdateProcess.setCanchoosedeviceid(String.join(",", canChooseDeviceIdList));
+                    String chooseEqu = apsProcessOperationDo.getChooseequ();
+                    LinkedList<String> chooseEquList = new LinkedList<>(Arrays.asList(chooseEqu.split(",")));
+                    chooseEquList.add(req.getEquName());
+                    needUpdateProcess.setChooseequ(String.join(",", chooseEquList));
+                    apsProcessOperationService.updateById(needUpdateProcess);
+                }
                 apsProcessOperationProcessEquDo.setProcessdeviceid(needUpdate.getProcessdeviceid());
                 apsProcessOperationProcessEquDo.setProcessdevice(needUpdate.getProcessdevice());
                 apsProcessOperationProcessEquDo.setRollerid(needUpdate.getRollerid());

+ 13 - 1
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProductDetailServiceImpl.java

@@ -2,7 +2,9 @@ package com.rongwei.bscommon.sys.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bscommon.sys.dao.ApsProductDetailDao;
 import com.rongwei.bscommon.sys.service.*;
@@ -22,6 +24,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -59,6 +62,8 @@ public class ApsProductDetailServiceImpl extends ServiceImpl<ApsProductDetailDao
 
     @Autowired
     private ApsProductionTechnicalRequirementService apsProductionTechnicalRequirementService;
+    @Autowired
+    private ApsProcessOperationOutMaterService apsProcessOperationOutMaterService;
 
     /*
     获取客户订单
@@ -566,6 +571,13 @@ public class ApsProductDetailServiceImpl extends ServiceImpl<ApsProductDetailDao
                     for (String needUpdateBlankId : needUpdateBlankIds) {
                         apsBlankOrderService.updateBlankSplicingColumn(needUpdateBlankId);
                     }
+                    //=================更新坯料计划对应的输出物料=================
+                    if (!needUpdateBlankIds.isEmpty()) {
+                        apsProcessOperationOutMaterService.update(new LambdaUpdateWrapper<ApsProcessOperationOutMaterDo>()
+                                .set(ApsProcessOperationOutMaterDo::getOrderdetailid, apsProductDetailDo.getId())
+                                .in(ApsProcessOperationOutMaterDo::getBlankid, needUpdateBlankIds)
+                                .eq(ApsProcessOperationOutMaterDo::getOrderdetailid, nowId));
+                    }
                 }
 
                 //=================更新技术要求==========================
@@ -630,7 +642,7 @@ public class ApsProductDetailServiceImpl extends ServiceImpl<ApsProductDetailDao
         String alloy = orderDetail.getAlloy();
         String alloystatus = orderDetail.getAlloystatus();
 
-        GetOldTechnicalRequirementRes apsProductDetailDo = this.baseMapper.selectMyList(technicalRequirementId, orderDetail.getId(), alloy, alloystatus, orderProductTypeId, customId);
+        GetOldTechnicalRequirementRes apsProductDetailDo = this.baseMapper.selectMyList(technicalRequirementId, orderDetail.getId(), alloy, alloystatus, orderProductTypeId, customId, orderDetail.getThickness());
 //        List<GetOldTechnicalRequirementRes> list1 = this.baseMapper.selectMyList1(technicalRequirementId, orderDetail.getId(), customId, alloy);
 //        List<GetOldTechnicalRequirementRes> list2 = this.baseMapper.selectMyList2(technicalRequirementId, orderDetail.getId(), customId, alloystatus);
 //        List<GetOldTechnicalRequirementRes> list3 = this.baseMapper.selectMyList3(technicalRequirementId, orderDetail.getId(), customId, orderProductTypeId);

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

@@ -1502,7 +1502,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
     }
 
     @Override
-    public R checkMergeProcess2(ApsReportRecordsDo req) {
+    public R checkMergeProcess2(CheckReportRecordVo req) {
         //作业明细的ID
         String processequid = req.getProcessequid();
         //当前报工的作业明细的详情
@@ -1552,6 +1552,24 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             }
         }
 
+        //如果实测单卷重/输出单卷重大于1.5或小于0.5,
+        // 则添加警告确认信息:输出物料{输出物料描述}实测卷重超出工艺要求单卷重50%
+        List<ApsReportOutputDo> apsReportOutputDoList = req.getApsReportOutputDoList();
+        List<ApsProcessOperationOutMaterDo> list = apsProcessOperationOutMaterService.list(new LambdaQueryWrapper<ApsProcessOperationOutMaterDo>().eq(ApsProcessOperationOutMaterDo::getMainid, apsProcessOperationDo.getId()));
+        for (ApsReportOutputDo apsReportOutputDo : apsReportOutputDoList) {
+            ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo = list.stream().filter(item -> item.getId().equals(apsReportOutputDo.getOutputid())).findFirst().orElse(null);
+            if (apsProcessOperationOutMaterDo != null) {
+                BigDecimal singlerollweight = apsProcessOperationOutMaterDo.getSinglerollweight();
+                BigDecimal weight = apsReportOutputDo.getWeight();
+                BigDecimal weightDivide = weight.divide(singlerollweight, 2, RoundingMode.HALF_UP);
+                if (weightDivide.compareTo(new BigDecimal("1.5")) > 0
+                        || weightDivide.compareTo(new BigDecimal("0.5")) < 0) {
+                    needWarning = true;
+                    warningMessage += ("<b>输出物料" + apsReportOutputDo.getOutputnumber() + "实测卷重" + weight + "与工艺要求的单卷重相差超过50%;</b><br>");
+                }
+            }
+        }
+
 
         CheckMergeProcessResopnse res = new CheckMergeProcessResopnse();
         res.setNeedWarning(needWarning);

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

@@ -0,0 +1,20 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bscommon.sys.dao.ApsRollerTypeDao;
+import com.rongwei.bscommon.sys.service.ApsRollerTypeService;
+import com.rongwei.bsentity.domain.ApsRollerTypeDo;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ */
+@Service
+public class ApsRollerTypeServiceImpl extends ServiceImpl<ApsRollerTypeDao, ApsRollerTypeDo>
+    implements ApsRollerTypeService {
+
+}
+
+
+
+

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

@@ -724,7 +724,7 @@ public class ApsServiceImpl implements ApsService {
                 productionScheduleVo.setEquipmentList(equipmentList1);
                 apsProductionSchedules.add(productionScheduleVo);
             } catch (Exception e) {
-                logger.info("坯料计划:"+bo.getBlanknumber() + ";排程数据初始化异常", e);
+                logger.info("坯料计划:" + bo.getBlanknumber() + ";排程数据初始化异常", e);
                 String msg = "坯料计划:" + bo.getBlanknumber() + ";排程数据初始化异常";
                 throw new CustomException(msg + " " + DateUtil.formatDateTime(new Date()));
             }
@@ -2062,6 +2062,9 @@ public class ApsServiceImpl implements ApsService {
         processes.setProducttype(operationDo.getProducttype());
         // 连续生产标识设置
         // 合金+输入物料+宽度+输入物料厚度+输出物料厚度(取第一个冷轧工序使用)
+        if (outMaterDos.isEmpty()) {
+            throw new CustomException("坯料计划:" + apsBlankOrderVo.getBlanknumber() + "工序作业:" + operationDo.getProcessname() + "没有找到输出物料");
+        }
         processes.setSeriesProduceMark(operationDo.getMetal() + "^_^" + operationDo.getProducttype() + "^_^" + operationDo.getProwidth() + "^_^" + operationDo.getThickness() + "^_^" + outMaterDos.get(0).getThickness());
         processes.setPrepressworkmin(operationDo.getPrepressworkmin() == null ? null : operationDo.getPrepressworkmin().intValue());
         processes.setCutfinishmin(operationDo.getCutfinishmin() == null ? null : operationDo.getCutfinishmin().intValue());

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

@@ -170,6 +170,7 @@
         apo.PROCESSSTATUS,
         apope.ACTUALSTARTDATE,
         apope.ACTUALFINISHDATE,
+        apo.PROCESS,
         apo.PROCESSNAME,
         apo.LOCKMARK as ProcessLock, -- 原工序作业的是否锁定改名
         apope.LOCKMARKDETAIL as LOCKMARK, -- 增加作业明细的是否锁定字段
@@ -185,6 +186,8 @@
         apro.CUSTOMNAME,
         apro.ORDERDATE,
         art.ROLLERTYPE,
+        apope.ROLLERID,
+        apo.CANCHOOSEDEVICEID,
         ifnull(apop.CUSTOMORDERNO,apro.CUSTOMORDERNO) CUSTOMORDERNO,
         Date(apro.PROMISEDELIVERYDATE) as PROMISEDELIVERYDATE,
         Date(apro.SCHEDULEDELIVERYDATE) as SCHEDULEDELIVERYDATE,

+ 4 - 1
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProductDetailDao.xml

@@ -144,7 +144,10 @@
             apd.PRODUCTTYPEID AS 'producttypeid',
             apd.PRODUCTTYPE AS 'producttype',
             aptr.*,
-            IF(apd.ALLOY = #{alloy},10,0)+IF(apd.ALLOYSTATUS = #{alloystatus},1,0)+IF(aptr.ORDERPRODUCTTYPEID = #{orderProductTypeId},100,0) AS 'core'
+            IF(apd.ALLOY = #{alloy},50,0)
+                +IF(apd.ALLOYSTATUS = #{alloystatus},30,0)
+                +IF(aptr.ORDERPRODUCTTYPEID = #{orderProductTypeId},100,0)
+                +IF(aptr.BLAMKTHICKNESS = #{thickness},10,0) AS 'core'
         from
             aps_production_order apo
                 LEFT JOIN aps_product_detail apd ON apo.ID = apd.MAINID

+ 76 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsRollerTypeDo.java

@@ -0,0 +1,76 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+/**
+ * APS_辊类型管理
+ * @TableName aps_roller_type
+ */
+@TableName(value ="aps_roller_type")
+@Data
+public class ApsRollerTypeDo extends BaseDo implements Serializable {
+    /**
+     * 主键ID
+     */
+    @TableId(value = "ID")
+    private String id;
+
+    /**
+     * 
+     */
+    @TableField(value = "TENANTID")
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    @TableField(value = "ROPTION")
+    private String roption;
+
+    /**
+     * 设备ID
+     */
+    @TableField(value = "CHECKITEMID")
+    private String checkitemid;
+
+    /**
+     * 设备
+     */
+    @TableField(value = "CHECKITEM")
+    private String checkitem;
+
+    /**
+     * 辊类型
+     */
+    @TableField(value = "ROLLERTYPE")
+    private String rollertype;
+
+    /**
+     * 适用产品类型
+     */
+    @TableField(value = "PRODUCTTYPE")
+    private String producttype;
+
+    /**
+     * 辊凸度
+     */
+    @TableField(value = "ROLLCROWN")
+    private String rollcrown;
+
+    /**
+     * 辊粗糙度
+     */
+    @TableField(value = "ROLLROUGH")
+    private String rollrough;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 16 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/CheckReportRecordVo.java

@@ -0,0 +1,16 @@
+package com.rongwei.bsentity.vo;
+
+import com.rongwei.bsentity.domain.ApsReportOutputDo;
+import com.rongwei.bsentity.domain.ApsReportRecordsDo;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author :sc
+ * @since :2025/4/10
+ */
+@Data
+public class CheckReportRecordVo extends ApsReportRecordsDo {
+    private List<ApsReportOutputDo> apsReportOutputDoList;
+}

+ 12 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/GanttVos.java

@@ -69,6 +69,10 @@ public class GanttVos {
      * 期望交货日期
      */
     private Date deliverydate;
+    /**
+     * 工序
+     */
+    private String process;
     /**
      * 工序名
      */
@@ -248,4 +252,12 @@ public class GanttVos {
      * 作业明细辊名称
      */
     private String rollertype;
+    /**
+     * 辊id
+     */
+    private String rollerid;
+    /**
+     * 可选设备
+     */
+    private String canchoosedeviceid;
 }

+ 17 - 4
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsProcessOperationProcessEquController.java

@@ -59,6 +59,7 @@ public class ApsProcessOperationProcessEquController {
         log.info("开始进行换线作业");
         return R.ok(ganttService.getListById(apsProcessOperationProcessEquService.changingWires(changingWiresVos)));
     }
+
     /**
      * 换线作业2,区分甘特图和车间作业跟踪
      *
@@ -68,8 +69,9 @@ public class ApsProcessOperationProcessEquController {
     @PostMapping("/changing-wires2")
     public R changingWires2(@RequestBody @Validated List<ChangingWiresVo> changingWiresVos) {
         log.info("开始进行换线作业2");
-        return R.ok(ganttService.getListById(apsProcessOperationProcessEquService.changingWires(changingWiresVos)));
+        return R.ok(apsProcessOperationProcessEquService.changingWires(changingWiresVos));
     }
+
     /**
      * 排单
      *
@@ -84,6 +86,7 @@ public class ApsProcessOperationProcessEquController {
 
     /**
      * 换线获取可选设备
+     *
      * @param operationJobDetailsId
      * @return
      */
@@ -104,7 +107,6 @@ public class ApsProcessOperationProcessEquController {
         log.info("开修改工序作业开工时间");
         return apsProcessOperationProcessEquService.changeStartTime(changeStartTimeVo);
     }
-
     /**
      * 修改作业详情
      *
@@ -112,8 +114,18 @@ public class ApsProcessOperationProcessEquController {
      */
     @PostMapping("/update")
     public R updateDetails(@RequestBody JobDetailsVo jobDetailsVo) {
-        log.info("开修改作业详情");
-        return apsProcessOperationProcessEquService.updateDetails(jobDetailsVo);
+        log.info("修改作业详情,甘特图");
+        return R.ok(ganttService.getListById(apsProcessOperationProcessEquService.updateDetails2(jobDetailsVo)));
+    }
+    /**
+     * 修改作业详情
+     *
+     * @return
+     */
+    @PostMapping("/update2")
+    public R updateDetails2(@RequestBody JobDetailsVo jobDetailsVo) {
+        log.info("修改作业详情,车间作业跟踪");
+        return R.ok(apsProcessOperationProcessEquService.updateDetails2(jobDetailsVo));
     }
 
     /**
@@ -129,6 +141,7 @@ public class ApsProcessOperationProcessEquController {
 
     /**
      * 车间作业跟踪锁定/解锁
+     *
      * @return
      */
     @PostMapping("/workshopLocked")

+ 2 - 1
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsReportRecordController.java

@@ -3,6 +3,7 @@ package com.rongwei.bsserver.controller;
 
 import com.rongwei.bscommon.sys.service.ApsReportRecordsService;
 import com.rongwei.bsentity.domain.ApsReportRecordsDo;
+import com.rongwei.bsentity.vo.CheckReportRecordVo;
 import com.rongwei.bsentity.vo.SaveReportReq;
 import com.rongwei.bsentity.vo.SmallRollStartReportReq;
 import com.rongwei.bsentity.vo.StartRePortReq;
@@ -75,7 +76,7 @@ public class ApsReportRecordController {
      * 报工时,查询是否存在警告
      */
     @PostMapping("/checkMergeProcess2")
-    public R checkMergeProcess2(@RequestBody ApsReportRecordsDo req) {
+    public R checkMergeProcess2(@RequestBody CheckReportRecordVo req) {
         log.info("报工时,查询是否存在警告;参数为:{}", req);
         return apsReportRecordsService.checkMergeProcess2(req);
     }