sucheng il y a 4 mois
Parent
commit
873dd33698

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

@@ -21,6 +21,7 @@ import com.rongwei.rwcommon.utils.StringUtils;
 import com.rongwei.safecommon.utils.CXCommonUtils;
 import com.rongwei.safecommon.utils.SaveConstans;
 import com.rongwei.wfserver.wfcommon.sys.service.impl.ProcessServiceImpl;
+import lombok.extern.log4j.Log4j2;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -54,10 +55,11 @@ import static com.rongwei.safecommon.utils.SaveConstans.UNForcedConflictsDescrip
  *
  */
 @Service
+@Log4j2
 public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsProcessOperationProcessEquDao, ApsProcessOperationProcessEquDo>
         implements ApsProcessOperationProcessEquService {
     public static final String CHANGING_WIRES_ERROR_MSG = "订单%s-%s的作业%s已完工,不能换线";
-    private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
+//    private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
 
     //换线锁
     private final ConcurrentHashMap<String, String> changeWiresLock = new ConcurrentHashMap<>();
@@ -347,12 +349,17 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
             long timeInterval = minDate.get().getTime() - changingWiresVos.get(0).getProcessingTime().getTime();
             Set<String> blankIds = new HashSet<>();
             // 是否需要清空备份
-            AtomicReference<Boolean> emptyBackup = new AtomicReference<>(false);
+//            AtomicReference<Boolean> emptyBackup = new AtomicReference<>(false);
+            boolean needCleanBack = false;
+            //是否已经清空过备份
+            boolean cleanBack = false;
             List<CheckConflictVo> checkConflictVos = new ArrayList<>();
-            List<ApsProcessOperationProcessEquDo> saveList = new ArrayList<>();
-            List<UpdateConflictVo> updateConflictVoList = new ArrayList<>();
             UpdateConflictVo updateConflictVo;
+            // 定义事务属性
+            TransactionDefinition definition = new DefaultTransactionDefinition();
             for (ChangingWiresVo changingWiresVo : changingWiresVos) {
+                List<ApsProcessOperationProcessEquDo> saveList = new ArrayList<>();
+                List<UpdateConflictVo> updateConflictVoList = new ArrayList<>();
                 List<String> noUpdatePlanStartDate = new LinkedList<>();
                 updateConflictVo = new UpdateConflictVo();
                 // 工序作业明细
@@ -430,7 +437,9 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 //加工中的状态 将未加工的改变为重新生成
                 if (JOBSTATUS_TO_BE_STARTING.equals(processEqus.getWorkstatus())) {
                     noUpdatePlanStartDate.add(processEqus.getId());
-                    emptyBackup.set(true);
+                    if (!cleanBack) {
+                        needCleanBack = true;
+                    }
                     // 获取加工时长
                     //  long processingTime = DateUtil.between(processEqus.getPlanenddate(), processEqus.getPlanstartdate(), DateUnit.SECOND, false);
                     // 需要拆分工序作业
@@ -593,6 +602,40 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                     }
                     saveList.add(processEqus);
                 }
+                // 开始事务
+                TransactionStatus status = transactionManager.getTransaction(definition);
+                try {
+                    if (needCleanBack) {
+                        SysUserVo currentUser = CXCommonUtils.getCurrentUser();
+                        // 删除工序作业备份
+                        ApsUtils.clearBackup(currentUser);
+                        cleanBack = true;
+                    }
+                    if (!saveList.isEmpty()) {
+                        apsProcessOperationProcessEquService.saveOrUpdateBatch(saveList);
+                    }
+                    if (!updateConflictVoList.isEmpty()) {
+                        updateConflictVoList.forEach(data -> {
+                            ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = data.getApsProcessOperationProcessEquDo();
+                            this.updateById(apsProcessOperationProcessEquDo);
+                            affectedIdList.addAll(checkProcessingTimeConflict(apsProcessOperationProcessEquDo,
+                                    data.getOldPlanStartdate(), data.getOldPlanEnddate(), data.getOldEquId(), data.getCurrentProcessWay(), returnAboutIds));
+                            // 判断是否存在设备不可用
+                            apsProcessOperationProcessEquDo = this.getById(apsProcessOperationProcessEquDo.getId());
+                            inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo,
+                                    apsProcessOperationProcessEquDo.getProcessdeviceid(),
+                                    apsProcessOperationProcessEquDo.getPlanstartdate(),
+                                    apsProcessOperationProcessEquDo.getPlanenddate(),
+                                    affectedIdList);
+                        });
+                    }
+                    // 提交事务
+                    transactionManager.commit(status);
+                } catch (Exception e) {
+                    // 捕获异常并回滚事务
+                    transactionManager.rollback(status);
+                    throw e;
+                }
             }
             // 换线拆单后 需要校验 是否存在冲突 如果存在冲突 提示
 //        if (!checkConflictVos.isEmpty()) {
@@ -603,41 +646,6 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
 //                //return R.error(promptInformation.get(0));
 //            }
 //        }
-            if (emptyBackup.get()) {
-                SysUserVo currentUser = CXCommonUtils.getCurrentUser();
-                // 删除工序作业备份
-                ApsUtils.clearBackup(currentUser);
-            }
-            // 定义事务属性
-            TransactionDefinition definition = new DefaultTransactionDefinition();
-            if (!saveList.isEmpty()) {
-                apsProcessOperationProcessEquService.saveOrUpdateBatch(saveList);
-            }
-            if (!updateConflictVoList.isEmpty()) {
-                updateConflictVoList.forEach(data -> {
-                    // 开始事务
-                    TransactionStatus status = transactionManager.getTransaction(definition);
-                    try {
-                        ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = data.getApsProcessOperationProcessEquDo();
-                        this.updateById(apsProcessOperationProcessEquDo);
-                        affectedIdList.addAll(checkProcessingTimeConflict(apsProcessOperationProcessEquDo,
-                                data.getOldPlanStartdate(), data.getOldPlanEnddate(), data.getOldEquId(), data.getCurrentProcessWay(), returnAboutIds));
-                        // 判断是否存在设备不可用
-                        apsProcessOperationProcessEquDo = this.getById(apsProcessOperationProcessEquDo.getId());
-                        inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo,
-                                apsProcessOperationProcessEquDo.getProcessdeviceid(),
-                                apsProcessOperationProcessEquDo.getPlanstartdate(),
-                                apsProcessOperationProcessEquDo.getPlanenddate(),
-                                affectedIdList);
-                        // 提交事务
-                        transactionManager.commit(status);
-                    } catch (Exception e) {
-                        // 捕获异常并回滚事务
-                        transactionManager.rollback(status);
-                        throw e;
-                    }
-                });
-            }
             aboutIds = affectedIdList.stream().distinct().collect(Collectors.toList());
             // 开始事务
             TransactionStatus status = transactionManager.getTransaction(definition);
@@ -651,7 +659,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
             } catch (Exception e) {
                 // 捕获异常并回滚事务
                 transactionManager.rollback(status);
-                throw e;
+                log.error("更新坯料交货期失败");
+                log.error(e);
             }
         } finally {
             for (String equId : detailIds) {

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

@@ -499,7 +499,8 @@ public class ApsServiceImpl implements ApsService {
                         }
                         return a;
                     });
-                    apsOrderScheduleApsNew(v, currentUser, allEqs, finalApsPlanStartDate, null, apsType, null, startTime);
+                    DateTime newStartTime = DateUtil.date();
+                    apsOrderScheduleApsNew(v, currentUser, allEqs, finalApsPlanStartDate, null, apsType, null, newStartTime);
                 } catch (Exception e) {
                     e.printStackTrace();
                     logger.info("排程异常", e);
@@ -1729,14 +1730,14 @@ public class ApsServiceImpl implements ApsService {
                         if (preprocess == null) {
                             throw new CustomException("小卷成退没有前道工序:" + operationDo.getId());
                         }
-                        planprocessrall = preprocess.getPlanprocessrall()-(preprocess.getCancelrollsum() == null ? 0 : preprocess.getCancelrollsum());
+                        planprocessrall = preprocess.getPlanprocessrall() - (preprocess.getCancelrollsum() == null ? 0 : preprocess.getCancelrollsum());
                     } else {
                         planprocessrall = new BigDecimal(operationDo.getPlanprocessrall())
                                 .divide(new BigDecimal("20").divide(operationDo.getSinglerollweight(), 2, BigDecimal.ROUND_HALF_UP)
                                         , 2, BigDecimal.ROUND_HALF_UP).setScale(0, RoundingMode.CEILING).intValue();
                     }
-                    Integer ys = (operationDo.getPlanprocessrall()-operationDo.getCancelrollsum()) % planprocessrall;
-                    Integer js = (operationDo.getPlanprocessrall()-operationDo.getCancelrollsum()) / planprocessrall;
+                    Integer ys = (operationDo.getPlanprocessrall() - operationDo.getCancelrollsum()) % planprocessrall;
+                    Integer js = (operationDo.getPlanprocessrall() - operationDo.getCancelrollsum()) / planprocessrall;
                     for (Integer i = 0; i < planprocessrall; i++) {
                         ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments, outMaterDos, apsBlankOrderVo, processOperationEquDos);
                         // 已排程的作业明细数据保持ID不变
@@ -1812,10 +1813,10 @@ public class ApsServiceImpl implements ApsService {
                                 .divide(new BigDecimal("20").divide(operationDo.getSinglerollweight(), 2, BigDecimal.ROUND_HALF_UP)
                                         , 2, BigDecimal.ROUND_HALF_UP).setScale(0, RoundingMode.CEILING).intValue();
                     } else {
-                        planprocessrall = preprocess.getPlanprocessrall()-(preprocess.getCancelrollsum() == null ? 0 : preprocess.getCancelrollsum());
+                        planprocessrall = preprocess.getPlanprocessrall() - (preprocess.getCancelrollsum() == null ? 0 : preprocess.getCancelrollsum());
                     }
-                    Integer ys = (operationDo.getPlanprocessrall()-operationDo.getCancelrollsum()) % planprocessrall;
-                    Integer js = (operationDo.getPlanprocessrall()-operationDo.getCancelrollsum()) / planprocessrall;
+                    Integer ys = (operationDo.getPlanprocessrall() - operationDo.getCancelrollsum()) % planprocessrall;
+                    Integer js = (operationDo.getPlanprocessrall() - operationDo.getCancelrollsum()) / planprocessrall;
                     for (Integer i = 0; i < planprocessrall; i++) {
                         ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments, outMaterDos, apsBlankOrderVo, processOperationEquDos);
                         // 已排程的作业明细数据保持ID不变