Explorar o código

起始终止位置测试005

qiangxuan hai 5 días
pai
achega
ff4baba074

+ 40 - 10
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/billetOriginalProductRecord/controller/BilletOriginalProductRecordController.java

@@ -705,7 +705,9 @@ public class BilletOriginalProductRecordController extends JeecgController<Bille
 					return Result.error("凉坯确认异常,确认凉坯的数量不能超过总数!");
 				}
 				if (finalStackingCount == 0){
-					applyColdConfirmInfo(bopr, sysUser);
+					bopr.setColdConfirmBy(sysUser.getRealname());
+					bopr.setColdConfirmTime(DateUtils.str2Date(billetOriginalProductRecordVo.getColdConfirmTime(), DateUtils.datetimeFormat.get()));
+					bopr.setColdRemark(billetOriginalProductRecordVo.getColdRemark());
 				}else {
 					// 拆分指定数量的凉坯单
 					int startPosition = billetOriginalProductRecordVo.getStartPosition();
@@ -756,7 +758,24 @@ public class BilletOriginalProductRecordController extends JeecgController<Bille
 						bopr.setColdBilletInfo(appointColdBilletJsonArray);
 					}
 				}
-				billetOriginalProductRecordService.updateById(bopr);
+
+				// 创建UpdateWrapper并指定要更新的字段
+				UpdateWrapper<BilletOriginalProductRecord> updateWrapper = new UpdateWrapper<>();
+				updateWrapper.eq("id", bopr.getId());
+				if (finalStackingCount == 0){
+					updateWrapper.set("cold_remark", bopr.getColdRemark())
+							.set("cold_confirm_by", bopr.getColdConfirmBy())
+							.set("confirm_time", bopr.getColdConfirmTime())
+							.set("cold_confirm_time", bopr.getColdConfirmTime());
+				}
+				if (finalStackingCount > 0){
+					updateWrapper.set("cold_billet_info", bopr.getColdBilletInfo()) // 指定要更新的字段
+							.set("stack_length", bopr.getStackLength());
+				}
+				updateWrapper.set("update_time", new Date());
+				// 执行更新,只更新wrapper中指定的字段
+				billetOriginalProductRecordService.update(null, updateWrapper);
+
 				int demandStackingSum = appointColdBilletCount / 4;
 				// 确保下垛数量大于0并且是步进冷床类型,才进行容器释放(下垛)
 				if (demandStackingSum > 0 && "9".equals(bhtcId)){
@@ -828,12 +847,23 @@ public class BilletOriginalProductRecordController extends JeecgController<Bille
 		List<Map<String, Object>> rollSendDetailsList = new ArrayList<>();
 		rollSendDetailsList.add(rollSendDetail);
 
-		// 根据传入的 startPosition 和拆单数量计算 startAmount 和 endAmount
-		int startAmount = startPosition;
-		int endAmount = startPosition + appointColdBilletCount - 1; // 因为包含起始位置,所以减1
-		// 计算原来凉坯单 剩余部分的起止位置
-		int remainingStart = endAmount + 1;
-		int remainingEnd = endPosition;
+		// 先获取实体中原本的起始和终止位置
+		Integer entityStartPosition = bopr.getStartPosition();
+		Integer entityEndPosition = bopr.getEndPosition();
+
+		// 处理起始位置,为null则用前端传入的startPosition
+		int currentStart = (entityStartPosition != null) ? entityStartPosition : startPosition;
+		// 处理终止位置,为null则用前端传入的endPosition
+		int currentEnd = (entityEndPosition != null) ? entityEndPosition : endPosition;
+
+		// 2. 计算本次拆分后,新拆单子的起止
+		int newStartAmount = currentStart;
+		int newEndAmount = currentStart + appointColdBilletCount - 1;
+
+		// 3. 计算拆分后,原始单据剩余的起止(核心修复点:基于最新剩余位置计算)
+		int remainingStart = newEndAmount + 1;
+		int remainingEnd = currentEnd;
+
 		// 对冷坯单拆分后,原始冷坯单的起始位置、终止位置 进行记录
 		UpdateWrapper<BilletOriginalProductRecord> updateWrapper = new UpdateWrapper<>();
 		updateWrapper.eq("id", bopr.getId()) // 根据ID更新
@@ -847,8 +877,8 @@ public class BilletOriginalProductRecordController extends JeecgController<Bille
 		sizeDetail.put("size", targetSize);
 		sizeDetail.put("sizeAmount", appointColdBilletCount);
 		sizeDetail.put("sizeWeight", weight);
-		sizeDetail.put("startAmount", startAmount);
-		sizeDetail.put("endAmount", endAmount);
+		sizeDetail.put("startAmount", newStartAmount);
+		sizeDetail.put("endAmount", newEndAmount);
 
 		List<Map<String, Object>> sizeDetailsList = new ArrayList<>();
 		sizeDetailsList.add(sizeDetail);

+ 4 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/billetOriginalProductRecord/vo/BilletColdOriginalRecordVo.java

@@ -11,4 +11,8 @@ public class BilletColdOriginalRecordVo {
     private Integer startPosition;
     private Integer endPosition;
 
+    private String coldConfirmTime;
+
+    private String coldRemark;
+
 }

+ 7 - 3
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/rollHeight/service/impl/RollHeightServiceImpl.java

@@ -683,8 +683,13 @@ public class RollHeightServiceImpl extends ServiceImpl<RollHeightMapper, RollHei
                             sizeDetail.setSize(stackingLength);
                             sizeDetail.setSizeAmount(stackingCount);
                             sizeDetail.setSizeWeight(stackingWeight);
-                            sizeDetail.setStartAmount(startAmount);
-                            sizeDetail.setEndAmount(endAmount);
+                            if (oConvertUtils.isNotEmpty(record.getStartPosition()) && oConvertUtils.isNotEmpty(record.getEndPosition())){
+                                sizeDetail.setStartAmount(record.getStartPosition());
+                                sizeDetail.setEndAmount(record.getEndPosition());
+                            }else {
+                                sizeDetail.setStartAmount(startAmount);
+                                sizeDetail.setEndAmount(endAmount);
+                            }
                             sizeDetailsList.add(sizeDetail);
 
                             // rollSendDetail
@@ -700,7 +705,6 @@ public class RollHeightServiceImpl extends ServiceImpl<RollHeightMapper, RollHei
                             rollHeightHeatNo.setRollSendDetails(rollSendDetailList);
                             resultMap.put(key, rollHeightHeatNo);
                         }
-
                     }
                 }catch (Exception e) {
                     log.info("步进冷床JSON解析失败,数据:{}", stackLengthJson, e);