Explorar o código

aps-排程结果轮询写入

sucheng hai 4 meses
pai
achega
0b7ea89ee9

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

@@ -166,9 +166,9 @@ public interface ApsBlankOrderDao extends BaseMapper<ApsBlankOrderDo> {
     void removeLockNextTwoDayProcessEqu(@Param("needScheduleDate") String needScheduleDate);
 
     List<ApsProcessOperationProcessEquChongpaiVo> selectNeedRescheduleEqu(@Param("needScheduleDate") String needScheduleDate,@Param("tenantId") String tenantId);
-    List<ApsProcessOperationProcessEquDo> selectNeedRescheduleEqu2(@Param("chongpaiStartDate") DateTime chongpaiStartDate, @Param("chongpaiEndDate") DateTime chongpaiEndDate, @Param("tenantId") String tenantId, @Param("workshopin") Integer workshopin, @Param("workshopcross") Integer workshopcross, @Param("blankIdList") List<String> blankIdList);
+    List<ApsProcessOperationProcessEquDo> selectNeedRescheduleEqu2(@Param("chongpaiStartDate") DateTime chongpaiStartDate, @Param("chongpaiEndDate") DateTime chongpaiEndDate, @Param("tenantId") String tenantId, @Param("workshopin") Integer workshopin, @Param("workshopcross") Integer workshopcross, @Param("blankIdsList") List<String> blankIdsList);
 
-    List<ApsProcessOperationProcessEquDo> selectNeedRescheduleEqu3(@Param("chongpaiStartDate") DateTime chongpaiStartDate, @Param("chongpaiEndDate") DateTime chongpaiEndDate, @Param("tenantId") String tenantId, @Param("workshopin") Integer workshopin, @Param("workshopcross") Integer workshopcross, @Param("blankIdList") List<String> blankIdList);
+    List<ApsProcessOperationProcessEquDo> selectNeedRescheduleEqu3(@Param("chongpaiStartDate") DateTime chongpaiStartDate, @Param("chongpaiEndDate") DateTime chongpaiEndDate, @Param("tenantId") String tenantId, @Param("workshopin") Integer workshopin, @Param("workshopcross") Integer workshopcross, @Param("blankIdsList") List<String> blankIdsList);
 
     void setLenZhaNextDay(@Param("tenantId") String tenantId, @Param("chongpaiStartDate") DateTime chongpaiStartDate, @Param("chongpaiEndDate") DateTime chongpaiEndDate);
     void setTuiHuoNextDay(@Param("tenantId") String tenantId, @Param("chongpaiStartDate") DateTime chongpaiStartDate, @Param("chongpaiEndDate") DateTime chongpaiEndDate);

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

@@ -52,9 +52,9 @@ public interface ApsBlankOrderService extends IService<ApsBlankOrderDo> {
     R removeBlankOrder(ApsBlankOrderDo req);
     void removeBlankOrderAndChild(ApsBlankOrderDo req);
 
-    void apsAfter(ProductionScheduleRetVo productionScheduleRetVo,List<ApsBlankOrderVo> apsBlankOrders,SysUserVo currentUser,ApsTypeVo apsType);
+    void apsAfter(ProductionScheduleRetVo productionScheduleRetVo,List<ApsBlankOrderVo> apsBlankOrders,SysUserVo currentUser,ApsTypeVo apsType) throws Exception;
 
-    void ddApsAfter(ProductionScheduleRetVo productionScheduleRetVo,List<ApsBlankOrderVo> apsBlankOrders,SysUserVo currentUser,ApsTypeVo apsType);
+    void ddApsAfter(ProductionScheduleRetVo productionScheduleRetVo,List<ApsBlankOrderVo> apsBlankOrders,SysUserVo currentUser,ApsTypeVo apsType) throws Exception;
 
     R checkAndUpdateBlankAndOutput(ApsProductionTechnicalRequirementDo req);
     void updateBlankSplicingColumn(String blankId);

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

@@ -771,7 +771,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void apsAfter(ProductionScheduleRetVo productionScheduleRetVo, List<ApsBlankOrderVo> apsBlankOrders, SysUserVo currentUser, ApsTypeVo apsType) {
+    public void apsAfter(ProductionScheduleRetVo productionScheduleRetVo, List<ApsBlankOrderVo> apsBlankOrders, SysUserVo currentUser, ApsTypeVo apsType)  throws Exception{
         // 先删除所有作业的明细
         List<String> blankids = CollUtil.distinct(productionScheduleRetVo.getProcesses().stream().map(v -> v.getProduceOrder().get(0).getId()).collect(Collectors.toList()));
 //        List<String> blankids = apsBlankOrders.stream().map(v -> v.getId()).collect(Collectors.toList());
@@ -1008,7 +1008,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void ddApsAfter(ProductionScheduleRetVo productionScheduleRetVo, List<ApsBlankOrderVo> apsBlankOrders, SysUserVo currentUser, ApsTypeVo apsType) {
+    public void ddApsAfter(ProductionScheduleRetVo productionScheduleRetVo, List<ApsBlankOrderVo> apsBlankOrders, SysUserVo currentUser, ApsTypeVo apsType) throws Exception {
         // 先删除所有作业的明细
         List<String> blankids = CollUtil.distinct(productionScheduleRetVo.getProcesses().stream().map(v -> v.getProduceOrder().get(0).getId()).collect(Collectors.toList()));
         // 查询坯料计划所有已存在的作业明细

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

@@ -11,6 +11,8 @@ import cn.hutool.json.JSONConfig;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.mysql.cj.exceptions.CJCommunicationsException;
+import com.mysql.cj.jdbc.exceptions.CommunicationsException;
 import com.rongwei.bscommon.sys.dao.ApsBlankOrderDao;
 import com.rongwei.bscommon.sys.dao.ApsProcessOperationProcessEquDao;
 import com.rongwei.bscommon.sys.fegin.RwApsServer;
@@ -36,6 +38,8 @@ import java.io.FileWriter;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.net.SocketTimeoutException;
+import java.sql.SQLNonTransientConnectionException;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.*;
@@ -809,9 +813,46 @@ public class ApsServiceImpl implements ApsService {
                         List<ProductionProcesses> productionProcesses = productionScheduleRetVo.getProcesses().stream().filter(item -> !updateIdList.contains(item.getId())).collect(Collectors.toList());
                         productionScheduleRetVo.setProcesses(productionProcesses);
                     }
-                    apsBlankOrderService.ddApsAfter(productionScheduleRetVo, apsBlankOrders, currentUser, apsType);
+                    //循环5次,如果执行成功,继续向下执行,如果出现sql超时,等待2分钟后重试,重试5次
+                    boolean isSuccess = false;
+                    for (int i = 0; i < 5; i++) {
+                        if (isSuccess) {
+                            break;
+                        }
+                        try {
+                            apsBlankOrderService.ddApsAfter(productionScheduleRetVo, apsBlankOrders, currentUser, apsType);
+                            isSuccess = true;
+                        } catch (SQLNonTransientConnectionException | CJCommunicationsException |
+                                 SocketTimeoutException | CommunicationsException e) {
+                            try {
+                                Thread.sleep(120000);
+                            } catch (InterruptedException ignored) {
+                            }
+                        } catch (Exception e) {
+                            throw new CustomException(e.getMessage());
+                        }
+                    }
+
                 } else {
-                    apsBlankOrderService.apsAfter(productionScheduleRetVo, apsBlankOrders, currentUser, apsType);
+                    //循环5次,如果执行成功,继续向下执行,如果出现sql超时,等待2分钟后重试,重试5次
+                    boolean isSuccess = false;
+                    for (int i = 0; i < 5; i++) {
+                        if (isSuccess) {
+                            break;
+                        }
+                        try {
+                            apsBlankOrderService.apsAfter(productionScheduleRetVo, apsBlankOrders, currentUser, apsType);
+                            isSuccess = true;
+                        } catch (SQLNonTransientConnectionException | CJCommunicationsException |
+                                 SocketTimeoutException | CommunicationsException e) {
+                            try {
+                                Thread.sleep(120000);
+                            } catch (InterruptedException ignored) {
+                            }
+                        } catch (Exception e) {
+                            throw new CustomException(e.getMessage());
+                        }
+                    }
                 }
                 //还原排程过程中,开工/报工的作业的计划时间
                 apsProcessOperationProcessEquDao.repairePlanStartDate(currentUser.getId(), currentUser.getName());