Przeglądaj źródła

aps-提交时更新所有涉及客户订单号冗余字段的地方

sucheng 1 tydzień temu
rodzic
commit
392b582788

+ 28 - 44
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProductionOrderServiceImpl.java

@@ -40,6 +40,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.PlatformTransactionManager;
 import org.springframework.transaction.TransactionDefinition;
@@ -259,6 +260,7 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
     }
 
     @Override
+    @Transactional
     public R checkAndSaveOrUpdateOrder(CheckAndSaveOrUpdateOrderReq req) {
         //订单信息
         ApsProductionOrderDo apsProductionOrderDo = req.getApsProductionOrderDo();
@@ -276,10 +278,6 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
             log.error("校验-该订单已被:{}提交", existingUser);
             return R.error("该订单已被提交,请刷新页面后重新操作");
         }
-        // 定义事务属性
-        TransactionDefinition definition = new DefaultTransactionDefinition();
-        // 开始事务
-        TransactionStatus status = transactionManager.getTransaction(definition);
         try {
             //数据库中的订单数据
             ApsProductionOrderDo nowApsProductionOrderDo = this.getById(id);
@@ -546,6 +544,12 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
                     }
                     apsProductionMergeOrderService.saveOrUpdateBatch(apsProductionMergeOrderDoList);
                 }
+
+                //根据订单和产品明细,及其合并订单,重新赋值 坯料计划和输出成品的冗余字段
+//                List<ApsProductDetailDo> apsProductDetailDos = BeanUtil.copyToList(apsProductDetailVoList, ApsProductDetailDo.class);
+                //查询产品明细
+                List<ApsProductDetailDo> apsProductDetailDos = apsProductDetailService.list(new LambdaQueryWrapper<ApsProductDetailDo>().eq(ApsProductDetailDo::getMainid, id));
+                setBlankColumn(apsProductionOrderDo, apsBlankOrderDoList, apsProductDetailDos, apsProductionMergeOrderDoList);
             }
 
             if (req.getIsNeedPublish()) {
@@ -594,23 +598,13 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
                     throw new RuntimeException("执行流程失败,请刷新页面后重试");
                 }
             }
-            // 提交事务
-            transactionManager.commit(status);
         } catch (Exception e) {
             log.error("异常信息:", e);
-            // 捕获异常并回滚事务
-            transactionManager.rollback(status);
             throw e;
         } finally {
             log.debug("校验-订单提交完毕,从map中清空当前订单锁,订单ID:{}", id);
             productOrderLock.remove(id);
         }
-        try {
-            //订单更新完后,更新坯料计划对应的字段
-            updateNeedUpdateColumnAll(id);
-        } catch (Exception e) {
-            log.error("更新字段失败");
-        }
 
         return R.ok();
     }
@@ -1158,6 +1152,7 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
     }
 
     @Override
+    @Transactional
     public R generalMsUpdate(OrderSaveOrUpdateVo req) {
         MasterSlaveUpdateVo masterSlaveUpdate = req.getMasterSlaveUpdate();
         String id = masterSlaveUpdate.getMasterUpdate().getColumnQueryTypes().get(0).getColumns().get(0).getValue();
@@ -1173,10 +1168,6 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
             log.error("修改-该订单已被:{}提交", existingUser);
             return R.error("该订单已被提交");
         }
-        // 定义事务属性
-        TransactionDefinition definition = new DefaultTransactionDefinition();
-        // 开始事务
-        TransactionStatus status = transactionManager.getTransaction(definition);
         try {
             //数据库中的订单数据
             ApsProductionOrderDo nowApsProductionOrderDo = this.getById(id);
@@ -1191,9 +1182,15 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
             } catch (Exception e) {
                 throw new RuntimeException("更新订单信息错误,请刷新页面后重试");
             }
+            //订单更新完后,更新坯料计划对应的字段
             //查询坯料计划
             List<ApsBlankOrderDo> apsBlankOrderDoList = apsBlankOrderService.list(new LambdaQueryWrapper<ApsBlankOrderDo>().eq(ApsBlankOrderDo::getProductionorderid, id));
-
+            //查询产品明细
+            List<ApsProductDetailDo> apsProductDetailVoList = apsProductDetailService.list(new LambdaQueryWrapper<ApsProductDetailDo>().eq(ApsProductDetailDo::getMainid, id));
+            //查询合并订单
+            List<ApsProductionMergeOrderDo> apsProductionMergeOrderDoList = apsProductionMergeOrderService.list(new LambdaQueryWrapper<ApsProductionMergeOrderDo>().eq(ApsProductionMergeOrderDo::getMainid, id));
+            oldOrder.setId(id);
+            setBlankColumn(oldOrder, apsBlankOrderDoList, apsProductDetailVoList, apsProductionMergeOrderDoList);
             //更新订单的生产状态
             if (!apsBlankOrderDoList.isEmpty()) {
                 CommonUpdateProductionStatusReq commonUpdateProductionStatusReq = new CommonUpdateProductionStatusReq();
@@ -1263,37 +1260,24 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
                     throw new RuntimeException("执行创建流程失败,请刷新页面后重试");
                 }
             }
-            // 提交事务
-            transactionManager.commit(status);
-        }catch (Exception e){
-            // 捕获异常并回滚事务
-            transactionManager.rollback(status);
-            throw e;
-        }finally {
+        } finally {
             log.debug("修改-订单提交完毕,从map中清空当前订单锁,订单ID:{}", id);
             productOrderLock.remove(id);
         }
-        try {
-            //订单更新完后,更新坯料计划对应的字段
-            updateNeedUpdateColumnAll(id);
-        } catch (Exception e) {
-            log.error("更新字段失败");
-        }
-
         return R.ok();
     }
 
-    private void updateNeedUpdateColumnAll(String orderId) {
-        //查询订单详情
-        ApsProductionOrderDo apsProductionOrderDo = this.getById(orderId);
-        //查询产品明细
-        List<ApsProductDetailDo> apsProductDetailVoList = apsProductDetailService.list(new LambdaQueryWrapper<ApsProductDetailDo>().eq(ApsProductDetailDo::getMainid, orderId));
-        //查询合并订单
-        List<ApsProductionMergeOrderDo> apsProductionMergeOrderDoList = apsProductionMergeOrderService.list(new LambdaQueryWrapper<ApsProductionMergeOrderDo>().eq(ApsProductionMergeOrderDo::getMainid, orderId));
-        //查询坯料计划列表
-        List<ApsBlankOrderDo> apsBlankOrderDoList = apsBlankOrderService.list(new LambdaQueryWrapper<ApsBlankOrderDo>().eq(ApsBlankOrderDo::getProductionorderid, orderId));
-        setBlankColumn(apsProductionOrderDo, apsBlankOrderDoList, apsProductDetailVoList, apsProductionMergeOrderDoList);
-    }
+//    private void updateNeedUpdateColumnAll(String orderId) {
+//        //查询订单详情
+//        ApsProductionOrderDo apsProductionOrderDo = this.getById(orderId);
+//        //查询产品明细
+//        List<ApsProductDetailDo> apsProductDetailVoList = apsProductDetailService.list(new LambdaQueryWrapper<ApsProductDetailDo>().eq(ApsProductDetailDo::getMainid, orderId));
+//        //查询合并订单
+//        List<ApsProductionMergeOrderDo> apsProductionMergeOrderDoList = apsProductionMergeOrderService.list(new LambdaQueryWrapper<ApsProductionMergeOrderDo>().eq(ApsProductionMergeOrderDo::getMainid, orderId));
+//        //查询坯料计划列表
+//        List<ApsBlankOrderDo> apsBlankOrderDoList = apsBlankOrderService.list(new LambdaQueryWrapper<ApsBlankOrderDo>().eq(ApsBlankOrderDo::getProductionorderid, orderId));
+//        setBlankColumn(apsProductionOrderDo, apsBlankOrderDoList, apsProductDetailVoList, apsProductionMergeOrderDoList);
+//    }
 
     public void setBlankColumn(ApsProductionOrderDo orderDo, List<ApsBlankOrderDo> apsBlankOrderDoList, List<ApsProductDetailDo> apsProductDetailVoList, List<ApsProductionMergeOrderDo> apsProductionMergeOrderDoList) {
         //根据订单和产品明细,及其合并订单,重新赋值 坯料计划和输出成品的冗余字段