lingpeng.li 1 сар өмнө
parent
commit
02cf65f7ad

+ 28 - 16
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/rollClubOne/service/impl/RollClubOneDetailsServiceImpl.java

@@ -2,6 +2,7 @@ package org.jeecg.modules.billet.rollClubOne.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -675,26 +676,37 @@ public class RollClubOneDetailsServiceImpl extends ServiceImpl<RollClubOneDetail
      * @param billetBasicInfoAdd
      */
     private void saveRollClubOneInfo(List<BilletBasicInfo> billetBasicInfoList, BilletBasicInfoAdd billetBasicInfoAdd) {
-        // 对 resultList 中的元素按 Strandno 分组后重新赋值 StrandnoIndex
-        // 更新炉次传递单中的总数和坯重
+        // 计算当前批次的出坯总重与总支数
         double rollClubOneWeight = billetBasicInfoList.stream()
                 .mapToDouble(BilletBasicInfo::getBilletWeight)
                 .sum();
+        int rollClubOneAmount = billetBasicInfoList.size();
+
+
+        LambdaQueryWrapper<RollClubOne> queryWrapperB = new LambdaQueryWrapper<RollClubOne>()
+                .eq(RollClubOne::getCcmNo, billetBasicInfoAdd.getCcmNo())
+                .eq(RollClubOne::getHeatNo, billetBasicInfoAdd.getHeatNo())
+                .eq(RollClubOne::getShift, billetBasicInfoAdd.getShift())
+                .eq(RollClubOne::getShiftGroup, billetBasicInfoAdd.getShift())
+                .orderByDesc(RollClubOne::getCreateTime).last("limit 1");
+        RollClubOne rollClubOne = rollClubOneMapper.selectOne(queryWrapperB);
+
 
-        RollClubOne rollClubOne = new RollClubOne();
-        rollClubOne.setId(String.valueOf(IdWorker.getId()));
-        rollClubOne.setCcmNo(billetBasicInfoAdd.getCcmNo());
-        rollClubOne.setHeatNo(billetBasicInfoAdd.getHeatNo());
-        rollClubOne.setShiftGroup(billetBasicInfoAdd.getShiftGroup());
-        rollClubOne.setShift(billetBasicInfoAdd.getShift());
-        rollClubOne.setBlankOutput(rollClubOneWeight);
-        rollClubOne.setSize(String.valueOf(billetBasicInfoList.stream().findFirst().orElse(null).getLength())); //定尺
-        rollClubOne.setSteel(String.valueOf(billetBasicInfoList.stream().findFirst().orElse(null).getGrade())); //钢种
-        rollClubOne.setSpec(String.valueOf(billetBasicInfoList.stream().findFirst().orElse(null).getSpec())); //规格
-        rollClubOne.setBlankOutput(billetBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum());//出坯量总和
-        rollClubOne.setCreateDate(new Date());
-        rollClubOne.setCreateTime(new Date());
-        rollClubOneMapper.insert(rollClubOne);
+        if (rollClubOne != null) {
+            Double oldWeight = Optional.ofNullable(rollClubOne.getBlankOutput()).orElse(0.0);
+            Integer oldAmount = Optional.ofNullable(rollClubOne.getAmountTotal()).orElse(0);
+
+            double newWeight = oldWeight + rollClubOneWeight;
+            int newAmount = oldAmount + rollClubOneAmount;
+
+            // 使用 UpdateWrapper 精确更新两个字段
+            LambdaUpdateWrapper<RollClubOne> updateWrapper = new LambdaUpdateWrapper<>();
+            updateWrapper.eq(RollClubOne::getId, rollClubOne.getId())
+                    .set(RollClubOne::getBlankOutput, newWeight)
+                    .set(RollClubOne::getAmountTotal, newAmount);
+
+            rollClubOneMapper.update(null, updateWrapper);
+        }
 
         // 保存棒一明细信息
         List<RollClubOneDetails> rollClubOneDetailsList = new ArrayList<>();