|
@@ -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());
|