|
@@ -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) {
|