Bladeren bron

变更炉号03

qiangxuan 2 dagen geleden
bovenliggende
commit
c3af37f906

+ 161 - 225
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/billetHotsend/service/impl/BilletHotsendBaseServiceImpl.java

@@ -60,8 +60,11 @@ import org.jeecg.modules.billet.rollOutShipp.entity.RollOutShipp;
 import org.jeecg.modules.billet.rollOutShipp.entity.RollOutShippDetails;
 import org.jeecg.modules.billet.rollOutShipp.service.IRollOutShippDetailsService;
 import org.jeecg.modules.billet.rollOutShipp.service.IRollOutShippService;
+import org.jeecg.modules.billet.stackingAndLoadingVehicles.entity.StackingAndLoadingVehicles;
 import org.jeecg.modules.billet.stackingAndLoadingVehicles.entity.StackingDownLog;
 import org.jeecg.modules.billet.stackingAndLoadingVehicles.entity.StackingUpLog;
+import org.jeecg.modules.billet.stackingAndLoadingVehicles.mapper.StackingAndLoadingVehiclesMapper;
+import org.jeecg.modules.billet.stackingAndLoadingVehicles.service.IStackingAndLoadingVehiclesService;
 import org.jeecg.modules.billet.stackingAndLoadingVehicles.service.IStackingDownLogService;
 import org.jeecg.modules.billet.stackingAndLoadingVehicles.service.IStackingUpLogService;
 import org.jeecg.modules.billet.storageBill.entity.ShiftEnum;
@@ -153,7 +156,8 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 	private IRollDeputyCrossService rollDeputyCrossService;
 	@Autowired
 	private IRollDeputyCrossDetailsService rollDeputyCrossDetailsService;
-
+	@Autowired
+	private StackingAndLoadingVehiclesMapper stackingAndLoadingVehiclesMapper;
 
 	@Override
 	@Transactional
@@ -2048,25 +2052,18 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 				return result;
 			}
 
-			// 根据铸机、炉号、班组、班别 查询钢坯实绩明细信息
-			List<BilletBasicInfo> changeBilletBasicInfoList = queryBilletBasicInfoRollClubOneList(changeHeatVo.getCcmNo(), changeHeatVo.getChangeHeatNo(), shift, shiftGroup);
-			if (oConvertUtils.listIsEmpty(changeBilletBasicInfoList)){
-				result.put("fail", "直轧热送-变更炉号钢坯实绩不存在,操作失败!");
-				return result;
-			}
-
 			// 源炉号数据如果小于更换的数量返回
-			if (originalBilletBasicInfoList.size() < changeHeatVo.getNumber() || changeBilletBasicInfoList.size() < changeHeatVo.getNumber()){
-				result.put("fail", "直轧热送-原炉号、变更炉号钢坯实绩数据不足,操作失败!");
+			if (originalBilletBasicInfoList.size() < changeHeatVo.getNumber()){
+				result.put("fail", "直轧热送-原炉号钢坯实绩数据不足,操作失败!");
 				return result;
 			}
 
 			List<BilletBasicInfo> finalOriginalBilletBasicInfoList = originalBilletBasicInfoList.subList(0, changeHeatVo.getNumber());
-			List<BilletBasicInfo> finalChangeBilletBasicInfoList = changeBilletBasicInfoList.subList(0, changeHeatVo.getNumber());
+
 			// 钢坯实绩、炉次实绩、炉次传递单统一公共处理
-			commonBilletChangeHandle(finalOriginalBilletBasicInfoList, finalChangeBilletBasicInfoList, changeHeatVo, shift, shiftGroup, 1);
+			commonBilletChangeHandle(finalOriginalBilletBasicInfoList, changeHeatVo, shift, shiftGroup, 1);
 			// 棒一统一公共处理
-			commonBilletRollClubOneHandle(finalOriginalBilletBasicInfoList, finalChangeBilletBasicInfoList, changeHeatVo, shift, shiftGroup);
+			commonBilletRollClubOneHandle(finalOriginalBilletBasicInfoList, changeHeatVo, shift, shiftGroup);
 		}else {
 			int number = changeHeatVo.getNumber();
 			// 校验是否为4的倍数
@@ -2083,79 +2080,75 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 				return result;
 			}
 
-			// 根据铸机、炉号、班组、班别 查询钢坯实绩明细信息
-			List<BilletBasicInfo> changeBilletBasicInfoList = queryBilletBasicInfoList(changeHeatVo.getCcmNo(), changeHeatVo.getChangeHeatNo(), shift, shiftGroup);
-			if (oConvertUtils.listIsEmpty(changeBilletBasicInfoList)){
-				result.put("fail", "热装-变更炉号钢坯实绩不存在,操作失败!");
-				return result;
-			}
-
 			// 源炉号数据如果小于更换的数量返回
-			if (originalBilletBasicInfoList.size() < changeHeatVo.getNumber() || changeBilletBasicInfoList.size() < changeHeatVo.getNumber()){
-				result.put("fail", "热装-原炉号、变更炉号钢坯实绩数据不足,操作失败!");
+			if (originalBilletBasicInfoList.size() < changeHeatVo.getNumber()){
+				result.put("fail", "热装-原炉号钢坯实绩数据不足,操作失败!");
 				return result;
 			}
 
 			List<BilletBasicInfo> finalOriginalBilletBasicInfoList = originalBilletBasicInfoList.subList(0, changeHeatVo.getNumber() / 4);
-			List<BilletBasicInfo> finalChangeBilletBasicInfoList = changeBilletBasicInfoList.subList(0, changeHeatVo.getNumber() / 4);
 
-			List<String> originalBilletNos = finalOriginalBilletBasicInfoList.stream().map(BilletBasicInfo::getAssemblyNumber).distinct().collect(Collectors.toList());
-			List<String> changeBilletNos = finalChangeBilletBasicInfoList.stream().map(BilletBasicInfo::getAssemblyNumber).distinct().collect(Collectors.toList());
+			List<String> originalAssemblyNumbers = finalOriginalBilletBasicInfoList.stream().map(BilletBasicInfo::getAssemblyNumber).distinct().collect(Collectors.toList());
 			// 根据铸机号、组批号、班组、班别查询钢坯实绩
-			List<BilletBasicInfo> originalBilletBasicInfoList1 = billetBasicInfoService.list(new LambdaQueryWrapper<BilletBasicInfo>()
-					.eq(BilletBasicInfo::getCcmNo, changeHeatVo.getCcmNo())
-					.in(BilletBasicInfo::getAssemblyNumber, originalBilletNos)
-					.eq(BilletBasicInfo::getShift, shift)
-					.eq(BilletBasicInfo::getShiftGroup, shiftGroup));
-
-			List<BilletBasicInfo> changeBilletBasicInfoList2 = billetBasicInfoService.list(new LambdaQueryWrapper<BilletBasicInfo>()
+			List<BilletBasicInfo> originalBilletBasicInfoLists = billetBasicInfoService.list(new LambdaQueryWrapper<BilletBasicInfo>()
 					.eq(BilletBasicInfo::getCcmNo, changeHeatVo.getCcmNo())
-					.in(BilletBasicInfo::getAssemblyNumber, changeBilletNos)
+					.in(BilletBasicInfo::getAssemblyNumber, originalAssemblyNumbers)
 					.eq(BilletBasicInfo::getShift, shift)
-					.eq(BilletBasicInfo::getShiftGroup, shiftGroup));
+					.eq(BilletBasicInfo::getShiftGroup, shiftGroup)
+					.orderByAsc(BilletBasicInfo::getAssemblyNumber));
 
-			boolean allOriginalBilletNull = originalBilletBasicInfoList1.stream().allMatch(info -> info.getBelongTable() == null);
-			boolean allChangeBilletNull = changeBilletBasicInfoList2.stream().allMatch(info -> info.getBelongTable() == null);
-			if (allOriginalBilletNull && allChangeBilletNull) {
+			boolean allOriginalBilletNull = originalBilletBasicInfoLists.stream().allMatch(info -> info.getBelongTable() == null);
+			if (allOriginalBilletNull){
 				// 只处理钢坯实绩、炉次传递单、炉次实绩对应的数量和重量
-				commonBilletChangeHandle(originalBilletBasicInfoList1, changeBilletBasicInfoList2, changeHeatVo, shift, shiftGroup, 0);
-			}else if (allOriginalBilletNull && !allChangeBilletNull) {
-				// 判断变更炉号中 目的地
-				List<String> belongTableList = changeBilletBasicInfoList2.stream().map(BilletBasicInfo::getBelongTable).distinct().collect(Collectors.toList());
-				belongTableList.forEach(x -> {
-					if ("roll_club_two".equals(x)){
-						commonBilletChangeHandle(originalBilletBasicInfoList1, changeBilletBasicInfoList2, changeHeatVo, shift, shiftGroup, 2);
-						// 处理棒二明细和主表
-						commonBilletRollClubTwoHandle(originalBilletBasicInfoList1, changeBilletBasicInfoList2, changeHeatVo, shift, shiftGroup);
-						// 查询去棒二对应的装运单
-
-					}else if ("roll_club_three".equals(x)){
-						commonBilletChangeHandle(originalBilletBasicInfoList1, changeBilletBasicInfoList2, changeHeatVo, shift, shiftGroup, 3);
-						// 处理棒三明细和主表
-						commonBilletRollClubThreeHandle(originalBilletBasicInfoList1, changeBilletBasicInfoList2, changeHeatVo, shift, shiftGroup);
-						// 查询去棒二对应的装运单
-
-					}else if ("roll_out_shipp".equals(x)){
-						commonBilletChangeHandle(originalBilletBasicInfoList1, changeBilletBasicInfoList2, changeHeatVo, shift, shiftGroup, 4);
-						// 处理上若明细和主表
-						commonBilletRollOutShippHandle(originalBilletBasicInfoList1, changeBilletBasicInfoList2, changeHeatVo, shift, shiftGroup);
-					}else if ("roll_deputy_cross".equals(x)){
-						commonBilletChangeHandle(originalBilletBasicInfoList1, changeBilletBasicInfoList2, changeHeatVo, shift, shiftGroup, 5);
-						// 处理付跨明细和主表
-						commonBilletRollDeputyCrossHandle(originalBilletBasicInfoList1, changeBilletBasicInfoList2, changeHeatVo, shift, shiftGroup);
-					}else if ("stacking_and_loading_vehicles".equals(x)){
-						commonBilletChangeHandle(originalBilletBasicInfoList1, changeBilletBasicInfoList2, changeHeatVo, shift, shiftGroup, 6);
-						// 处理起垛明细和主表
-					}
-				});
-
-
-			}else if (!allOriginalBilletNull && allChangeBilletNull) {
+				commonBilletChangeHandle(originalBilletBasicInfoLists, changeHeatVo, shift, shiftGroup, 0);
+			}else{
 
-			}else if (!allOriginalBilletNull && !allChangeBilletNull) {
-				// 需要处理,棒二、棒三、上若、付跨、装运单、主表和明细表
+				List<BilletBasicInfo> rollClubTwoList = originalBilletBasicInfoLists.stream()
+						.filter(item -> "roll_club_two".equals(item.getBelongTable())) // 筛选 belong_table 等于 "roll_club_two" 的记录
+						.collect(Collectors.toList()); // 收集结果到新列表
+				if (rollClubTwoList.size() > 0){
+					//公共方法  处理钢坯实绩、炉次实绩、炉次传递单
+					commonBilletChangeHandle(rollClubTwoList, changeHeatVo, shift, shiftGroup, 2);
+					//统一处理	棒二明细和棒二主表
+					commonBilletRollClubTwoHandle(rollClubTwoList, changeHeatVo, shift, shiftGroup);
+				}
+				List<BilletBasicInfo> rollClubThreeList = originalBilletBasicInfoLists.stream()
+						.filter(item -> "roll_club_three".equals(item.getBelongTable())) // 筛选 belong_table 等于 "roll_club_one" 的记录
+						.collect(Collectors.toList());
+				if (rollClubThreeList.size() > 0){
+					//公共方法  处理钢坯实绩、炉次实绩、炉次传递单
+					commonBilletChangeHandle(rollClubThreeList, changeHeatVo, shift, shiftGroup, 3);
+					//统一处理	棒三明细和棒三主表
+					commonBilletRollClubThreeHandle(rollClubThreeList, changeHeatVo, shift, shiftGroup);
+				}
+				List<BilletBasicInfo> rollOutShippList = originalBilletBasicInfoLists.stream()
+						.filter(item -> "roll_out_shipp".equals(item.getBelongTable())) // 筛选 belong_table 等于 "roll_club_one" 的记录
+						.collect(Collectors.toList());
+				if (rollOutShippList.size() > 0){
+					//公共方法  处理钢坯实绩、炉次实绩、炉次传递单
+					commonBilletChangeHandle(rollOutShippList, changeHeatVo, shift, shiftGroup, 4);
+					//统一处理	上若明细和上若主表
+					commonBilletRollOutShippHandle(rollOutShippList, changeHeatVo, shift, shiftGroup);
+				}
+				List<BilletBasicInfo> rollDeputyCrossList = originalBilletBasicInfoLists.stream()
+						.filter(item -> "roll_deputy_cross".equals(item.getBelongTable())) // 筛选 belong_table 等于 "roll_club_one" 的记录
+						.collect(Collectors.toList());
+				if (rollDeputyCrossList.size() > 0){
+					//公共方法  处理钢坯实绩、炉次实绩、炉次传递单
+					commonBilletChangeHandle(rollDeputyCrossList, changeHeatVo, shift, shiftGroup, 5);
+					//统一处理	付跨明细和付跨主表
+					commonBilletRollDeputyCrossHandle(rollDeputyCrossList, changeHeatVo, shift, shiftGroup);
+				}
+				List<BilletBasicInfo> stackingList = originalBilletBasicInfoLists.stream()
+						.filter(item -> "stacking_and_loading_vehicles".equals(item.getBelongTable())) // 筛选 belong_table 等于 "roll_club_one" 的记录
+						.collect(Collectors.toList());
+				if (stackingList.size() > 0){
+					//公共方法  处理钢坯实绩、炉次实绩、炉次传递单
+					commonBilletChangeHandle(stackingList, changeHeatVo, shift, shiftGroup, 6);
+					//统一处理  堆垛公共容器明细、堆垛公共容器堆垛主表
+					commonBilletStackingHandle(stackingList, changeHeatVo, shift, shiftGroup);
+				}
 			}
-			// 统一维护炉次传递中的棒二、棒三、上若、付跨支数
 		}
 
 		result.put("success", "炉号变更,操作成功!");
@@ -2165,54 +2158,41 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 	/**
 	 * 棒一统一公共处理
 	 * @param originalBilletBasicInfoList
-	 * @param changeBilletBasicInfoList
 	 * @param changeHeatVo
 	 * @param shift
 	 * @param shiftGroup
 	 */
-	private void commonBilletRollClubOneHandle(List<BilletBasicInfo> originalBilletBasicInfoList, List<BilletBasicInfo> changeBilletBasicInfoList,
-											   ChangeHeatVo changeHeatVo, String shift, String shiftGroup) {
+	private void commonBilletRollClubOneHandle(List<BilletBasicInfo> originalBilletBasicInfoList, ChangeHeatVo changeHeatVo, String shift, String shiftGroup) {
 
 		// 所有变更炉号的总重量
 		double changeTotalWeight = originalBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
-		// 所有原始炉号的总重量
-		double originalTotalWeight = changeBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
+
 		// 棒一 主表
 		RollClubOne originalRollClubOne = getRollClubOne(changeHeatVo.getOriginalHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup);
 		if (originalRollClubOne == null) {
 			throw new RuntimeException("原棒一主表为空,操作失败!");
 		}
-		originalRollClubOne.setAmountTotal(originalRollClubOne.getAmountTotal() + changeHeatVo.getNumber());
-		originalRollClubOne.setBlankOutput(originalRollClubOne.getBlankOutput() + changeTotalWeight);
+		originalRollClubOne.setAmountTotal(originalRollClubOne.getAmountTotal() - changeHeatVo.getNumber());
+		originalRollClubOne.setBlankOutput(originalRollClubOne.getBlankOutput() - changeTotalWeight);
 		rollClubOneService.updateById(originalRollClubOne);
 
 		RollClubOne changeRollClubOne = getRollClubOne(changeHeatVo.getChangeHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup);
 		if (changeRollClubOne == null) {
 			throw new RuntimeException("变更棒一主表为空,操作失败!");
 		}
-		changeRollClubOne.setAmountTotal(changeRollClubOne.getAmountTotal() - changeHeatVo.getNumber());
-		changeRollClubOne.setBlankOutput(changeRollClubOne.getBlankOutput() - originalTotalWeight);
+		changeRollClubOne.setAmountTotal(changeRollClubOne.getAmountTotal() + changeHeatVo.getNumber());
+		changeRollClubOne.setBlankOutput(changeRollClubOne.getBlankOutput() + changeTotalWeight);
 		rollClubOneService.updateById(changeRollClubOne);
 
-		List<String> originalBilletNos = originalBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).collect(Collectors.toList());
-		// 棒一明细
-		List<RollClubOneDetails> originalRollClubOneDetailsList = getRollClubOneDetailsList(changeHeatVo.getOriginalHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup, originalBilletNos);
-		if (oConvertUtils.listIsEmpty(originalRollClubOneDetailsList)) {
-			throw new RuntimeException("原棒一明细为空,操作失败!");
-		}
-		for (RollClubOneDetails originalRollClubOneDetails : originalRollClubOneDetailsList){
-			originalRollClubOneDetails.setHeatNo(changeHeatVo.getChangeHeatNo());
-			originalRollClubOneDetails.setUpdateTime(new Date());
-		}
-		rollClubOneDetailsService.updateBatchById(originalRollClubOneDetailsList);
-
-		List<String> changeBilletNos = changeBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).collect(Collectors.toList());
-		List<RollClubOneDetails> changeRollClubOneDetailsList = getRollClubOneDetailsList(changeHeatVo.getChangeHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup, changeBilletNos);
+		// 棒一明细 先查询到原来炉号对应的坯号集合、然后查询到原来坯号对应的钢坯实绩集合
+		List<String> changeBilletNos = originalBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).collect(Collectors.toList());
+		List<RollClubOneDetails> changeRollClubOneDetailsList = getRollClubOneDetailsList(changeHeatVo.getOriginalHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup, changeBilletNos);
 		if (oConvertUtils.listIsEmpty(changeRollClubOneDetailsList)) {
 			throw new RuntimeException("变更棒一明细为空,操作失败!");
 		}
+		// 把要变更的炉号更新到 原来棒一对应的明细中即可。
 		for (RollClubOneDetails changeRollClubOneDetails : changeRollClubOneDetailsList){
-			changeRollClubOneDetails.setHeatNo(changeHeatVo.getOriginalHeatNo());
+			changeRollClubOneDetails.setHeatNo(changeHeatVo.getChangeHeatNo());
 			changeRollClubOneDetails.setUpdateTime(new Date());
 		}
 		rollClubOneDetailsService.updateBatchById(changeRollClubOneDetailsList);
@@ -2222,34 +2202,30 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 	/**
 	 * 棒二统一公共处理
 	 * @param originalBilletBasicInfoList
-	 * @param changeBilletBasicInfoList
 	 * @param changeHeatVo
 	 * @param shift
 	 * @param shiftGroup
 	 */
-	private void commonBilletRollClubTwoHandle(List<BilletBasicInfo> originalBilletBasicInfoList, List<BilletBasicInfo> changeBilletBasicInfoList,
-											   ChangeHeatVo changeHeatVo, String shift, String shiftGroup) {
+	private void commonBilletRollClubTwoHandle(List<BilletBasicInfo> originalBilletBasicInfoList, ChangeHeatVo changeHeatVo, String shift, String shiftGroup) {
 
-		// 所有变更炉号的总重量
-		double changeTotalWeight = originalBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
 		// 所有原始炉号的总重量
-		double originalTotalWeight = changeBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
+		double changeTotalWeight = originalBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
 
 		// 棒二 主表
 		RollClubTwo originalRollClubTwo = getRollClubTwo(changeHeatVo.getOriginalHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup);
 		if (originalRollClubTwo == null) {
 			throw new RuntimeException("原棒二主表为空,操作失败!");
 		}
-		originalRollClubTwo.setAmountTotal(originalRollClubTwo.getAmountTotal() + changeHeatVo.getNumber());
-		originalRollClubTwo.setBlankOutput(originalRollClubTwo.getBlankOutput() + changeTotalWeight);
+		originalRollClubTwo.setAmountTotal(originalRollClubTwo.getAmountTotal() - changeHeatVo.getNumber());
+		originalRollClubTwo.setBlankOutput(originalRollClubTwo.getBlankOutput() - changeTotalWeight);
 		rollClubTwoService.updateById(originalRollClubTwo);
 
 		RollClubTwo changeRollClubTwo = getRollClubTwo(changeHeatVo.getChangeHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup);
 		if (changeRollClubTwo == null) {
 			throw new RuntimeException("变更棒二主表为空,操作失败!");
 		}
-		changeRollClubTwo.setAmountTotal(changeRollClubTwo.getAmountTotal() - changeHeatVo.getNumber());
-		changeRollClubTwo.setBlankOutput(changeRollClubTwo.getBlankOutput() - originalTotalWeight);
+		changeRollClubTwo.setAmountTotal(changeRollClubTwo.getAmountTotal() + changeHeatVo.getNumber());
+		changeRollClubTwo.setBlankOutput(changeRollClubTwo.getBlankOutput() + changeTotalWeight);
 		rollClubTwoService.updateById(changeRollClubTwo);
 
 		List<String> originalBilletNos = originalBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).collect(Collectors.toList());
@@ -2263,50 +2239,35 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 			originalRollClubTwoDetails.setUpdateTime(new Date());
 		}
 		rollClubTwoDetailsService.updateBatchById(originalRollClubTwoDetailsList);
-
-		List<String> changeBilletNos = changeBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).collect(Collectors.toList());
-		List<RollClubTwoDetails> changeRollClubTwoDetailsList = getRollClubTwoDetailsList(changeHeatVo.getChangeHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup, changeBilletNos);
-		if (oConvertUtils.listIsEmpty(changeRollClubTwoDetailsList)) {
-			throw new RuntimeException("变更棒二明细为空,操作失败!");
-		}
-		for (RollClubTwoDetails changeRollClubTwoDetails : changeRollClubTwoDetailsList){
-			changeRollClubTwoDetails.setHeatNo(changeHeatVo.getOriginalHeatNo());
-			changeRollClubTwoDetails.setUpdateTime(new Date());
-		}
-		rollClubTwoDetailsService.updateBatchById(changeRollClubTwoDetailsList);
 	}
 
 	/**
 	 * 棒三统一公共处理
 	 * @param originalBilletBasicInfoList
-	 * @param changeBilletBasicInfoList
 	 * @param changeHeatVo
 	 * @param shift
 	 * @param shiftGroup
 	 */
-	private void commonBilletRollClubThreeHandle(List<BilletBasicInfo> originalBilletBasicInfoList, List<BilletBasicInfo> changeBilletBasicInfoList,
-												 ChangeHeatVo changeHeatVo, String shift, String shiftGroup) {
+	private void commonBilletRollClubThreeHandle(List<BilletBasicInfo> originalBilletBasicInfoList, ChangeHeatVo changeHeatVo, String shift, String shiftGroup) {
 
-		// 所有变更炉号的总重量
+		//  所有原始炉号的总重量
 		double changeTotalWeight = originalBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
-		// 所有原始炉号的总重量
-		double originalTotalWeight = changeBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
 
 		// 棒三 主表
 		RollClubThree originalRollClubThree = getRollClubThree(changeHeatVo.getOriginalHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup);
 		if (originalRollClubThree == null) {
 			throw new RuntimeException("原棒三主表为空,操作失败!");
 		}
-		originalRollClubThree.setAmountTotal(originalRollClubThree.getAmountTotal() + changeHeatVo.getNumber());
-		originalRollClubThree.setBlankOutput(originalRollClubThree.getBlankOutput() + changeTotalWeight);
+		originalRollClubThree.setAmountTotal(originalRollClubThree.getAmountTotal() - changeHeatVo.getNumber());
+		originalRollClubThree.setBlankOutput(originalRollClubThree.getBlankOutput() - changeTotalWeight);
 		rollClubThreeService.updateById(originalRollClubThree);
 
 		RollClubThree changeRollClubThree = getRollClubThree(changeHeatVo.getChangeHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup);
 		if (changeRollClubThree == null) {
 			throw new RuntimeException("变更棒三主表为空,操作失败!");
 		}
-		changeRollClubThree.setAmountTotal(changeRollClubThree.getAmountTotal() - changeHeatVo.getNumber());
-		changeRollClubThree.setBlankOutput(changeRollClubThree.getBlankOutput() - originalTotalWeight);
+		changeRollClubThree.setAmountTotal(changeRollClubThree.getAmountTotal() + changeHeatVo.getNumber());
+		changeRollClubThree.setBlankOutput(changeRollClubThree.getBlankOutput() + changeTotalWeight);
 		rollClubThreeService.updateById(changeRollClubThree);
 
 		List<String> originalBilletNos = originalBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).collect(Collectors.toList());
@@ -2320,50 +2281,34 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 			originalRollClubThreeDetails.setUpdateTime(new Date());
 		}
 		rollClubThreeDetailsService.updateBatchById(originalRollClubThreeDetailsList);
-
-		List<String> changeBilletNos = changeBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).collect(Collectors.toList());
-		List<RollClubThreeDetails> changeRollClubThreeDetailsList = getRollClubThreeDetailsList(changeHeatVo.getChangeHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup, changeBilletNos);
-		if (oConvertUtils.listIsEmpty(changeRollClubThreeDetailsList)) {
-			throw new RuntimeException("变更棒三明细为空,操作失败!");
-		}
-		for (RollClubThreeDetails changeRollClubThreeDetails : changeRollClubThreeDetailsList){
-			changeRollClubThreeDetails.setHeatNo(changeHeatVo.getOriginalHeatNo());
-			changeRollClubThreeDetails.setUpdateTime(new Date());
-		}
-		rollClubThreeDetailsService.updateBatchById(changeRollClubThreeDetailsList);
 	}
 
 	/**
 	 * 上若统一公共处理
 	 * @param originalBilletBasicInfoList
-	 * @param changeBilletBasicInfoList
 	 * @param changeHeatVo
 	 * @param shift
 	 * @param shiftGroup
 	 */
-	private void commonBilletRollOutShippHandle(List<BilletBasicInfo> originalBilletBasicInfoList, List<BilletBasicInfo> changeBilletBasicInfoList,
-												ChangeHeatVo changeHeatVo, String shift, String shiftGroup) {
+	private void commonBilletRollOutShippHandle(List<BilletBasicInfo> originalBilletBasicInfoList, ChangeHeatVo changeHeatVo, String shift, String shiftGroup) {
 
-		// 所有变更炉号的总重量
-		double changeTotalWeight = originalBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
 		// 所有原始炉号的总重量
-		double originalTotalWeight = changeBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
-
+		double changeTotalWeight = originalBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
 		// 上若 主表
 		RollOutShipp originalRollOutShipp = getRollOutShipp(changeHeatVo.getOriginalHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup);
 		if (originalRollOutShipp == null) {
 			throw new RuntimeException("原上若主表为空,操作失败!");
 		}
-		originalRollOutShipp.setAmountTotal(originalRollOutShipp.getAmountTotal() + changeHeatVo.getNumber());
-		originalRollOutShipp.setBlankOutput(originalRollOutShipp.getBlankOutput() + changeTotalWeight);
+		originalRollOutShipp.setAmountTotal(originalRollOutShipp.getAmountTotal() - changeHeatVo.getNumber());
+		originalRollOutShipp.setBlankOutput(originalRollOutShipp.getBlankOutput() - changeTotalWeight);
 		rollOutShippService.updateById(originalRollOutShipp);
 
 		RollOutShipp changeRollOutShipp = getRollOutShipp(changeHeatVo.getChangeHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup);
 		if (changeRollOutShipp == null) {
 			throw new RuntimeException("变更上若主表为空,操作失败!");
 		}
-		changeRollOutShipp.setAmountTotal(changeRollOutShipp.getAmountTotal() - changeHeatVo.getNumber());
-		changeRollOutShipp.setBlankOutput(changeRollOutShipp.getBlankOutput() - originalTotalWeight);
+		changeRollOutShipp.setAmountTotal(changeRollOutShipp.getAmountTotal() + changeHeatVo.getNumber());
+		changeRollOutShipp.setBlankOutput(changeRollOutShipp.getBlankOutput() + changeTotalWeight);
 		rollOutShippService.updateById(changeRollOutShipp);
 
 		List<String> originalBilletNos = originalBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).collect(Collectors.toList());
@@ -2377,51 +2322,35 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 			originalRollOutShippDetails.setUpdateTime(new Date());
 		}
 		rollOutShippDetailsService.updateBatchById(originalRollOutShippDetailsList);
-
-		List<String> changeBilletNos = changeBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).collect(Collectors.toList());
-		List<RollOutShippDetails> changeRollOutShippDetailsList = getRollOutShippDetailsList(changeHeatVo.getChangeHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup, changeBilletNos);
-		if (oConvertUtils.listIsEmpty(changeRollOutShippDetailsList)) {
-			throw new RuntimeException("变更上若明细为空,操作失败!");
-		}
-		for (RollOutShippDetails changeRollOutShippDetails : changeRollOutShippDetailsList){
-			changeRollOutShippDetails.setHeatNo(changeHeatVo.getOriginalHeatNo());
-			changeRollOutShippDetails.setUpdateTime(new Date());
-		}
-		rollOutShippDetailsService.updateBatchById(changeRollOutShippDetailsList);
 	}
 
 
 	/**
 	 * 付跨统一公共处理
 	 * @param originalBilletBasicInfoList
-	 * @param changeBilletBasicInfoList
 	 * @param changeHeatVo
 	 * @param shift
 	 * @param shiftGroup
 	 */
-	private void commonBilletRollDeputyCrossHandle(List<BilletBasicInfo> originalBilletBasicInfoList, List<BilletBasicInfo> changeBilletBasicInfoList,
-												   ChangeHeatVo changeHeatVo, String shift, String shiftGroup) {
+	private void commonBilletRollDeputyCrossHandle(List<BilletBasicInfo> originalBilletBasicInfoList, ChangeHeatVo changeHeatVo, String shift, String shiftGroup) {
 
-		// 所有变更炉号的总重量
-		double changeTotalWeight = originalBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
 		// 所有原始炉号的总重量
-		double originalTotalWeight = changeBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
-
+		double changeTotalWeight = originalBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
 		// 副跨 主表
 		RollDeputyCross originalRollDeputyCross = getRollDeputyCross(changeHeatVo.getOriginalHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup);
 		if (originalRollDeputyCross == null) {
 			throw new RuntimeException("原付跨主表为空,操作失败!");
 		}
-		originalRollDeputyCross.setAmountTotal(originalRollDeputyCross.getAmountTotal() + changeHeatVo.getNumber());
-		originalRollDeputyCross.setBlankOutput(originalRollDeputyCross.getBlankOutput() + changeTotalWeight);
+		originalRollDeputyCross.setAmountTotal(originalRollDeputyCross.getAmountTotal() - changeHeatVo.getNumber());
+		originalRollDeputyCross.setBlankOutput(originalRollDeputyCross.getBlankOutput() - changeTotalWeight);
 		rollDeputyCrossService.updateById(originalRollDeputyCross);
 
 		RollDeputyCross changeRollDeputyCross = getRollDeputyCross(changeHeatVo.getChangeHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup);
 		if (changeRollDeputyCross == null) {
 			throw new RuntimeException("变更付跨主表为空,操作失败!");
 		}
-		changeRollDeputyCross.setAmountTotal(changeRollDeputyCross.getAmountTotal() - changeHeatVo.getNumber());
-		changeRollDeputyCross.setBlankOutput(changeRollDeputyCross.getBlankOutput() - originalTotalWeight);
+		changeRollDeputyCross.setAmountTotal(changeRollDeputyCross.getAmountTotal() + changeHeatVo.getNumber());
+		changeRollDeputyCross.setBlankOutput(changeRollDeputyCross.getBlankOutput() + changeTotalWeight);
 		rollDeputyCrossService.updateById(changeRollDeputyCross);
 
 		List<String> originalBilletNos = originalBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).collect(Collectors.toList());
@@ -2435,35 +2364,55 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 			originalRollDeputyCrossDetails.setUpdateTime(new Date());
 		}
 		rollDeputyCrossDetailsService.updateBatchById(originalRollDeputyCrossDetailsList);
-
-		List<String> changeBilletNos = changeBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).collect(Collectors.toList());
-		List<RollDeputyCrossDetails> changeRollDeputyCrossDetailsList = getRollDeputyCrossDetailsList(changeHeatVo.getChangeHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup, changeBilletNos);
-		if (oConvertUtils.listIsEmpty(changeRollDeputyCrossDetailsList)) {
-			throw new RuntimeException("变更付跨明细为空,操作失败!");
-		}
-		for (RollDeputyCrossDetails changeRollDeputyCrossDetails : changeRollDeputyCrossDetailsList){
-			changeRollDeputyCrossDetails.setHeatNo(changeHeatVo.getOriginalHeatNo());
-			changeRollDeputyCrossDetails.setUpdateTime(new Date());
-		}
-		rollDeputyCrossDetailsService.updateBatchById(changeRollDeputyCrossDetailsList);
 	}
 
+	/**
+	 * 堆垛容器 统一公共处理
+	 * @param originalBilletBasicInfoList
+	 * @param changeHeatVo
+	 * @param shift
+	 * @param shiftGroup
+	 */
+	private void commonBilletStackingHandle(List<BilletBasicInfo> originalBilletBasicInfoList, ChangeHeatVo changeHeatVo, String shift, String shiftGroup) {
+		// 按 assembly_number 分组,每个组取第一条记录
+		Map<String, BilletBasicInfo> assemblyNumberGroupMap = originalBilletBasicInfoList.stream()
+				.collect(Collectors.groupingBy(
+						BilletBasicInfo::getAssemblyNumber,
+						Collectors.collectingAndThen(
+								Collectors.toList(),
+								list -> list.get(0)  // 取每组的第一条记录
+						)
+				));
+		// 提取坯号列表
+		List<String> resultBilletNos = assemblyNumberGroupMap.values().stream()
+				.map(BilletBasicInfo::getBilletNo)
+				.collect(Collectors.toList());
+
+		resultBilletNos.forEach(x -> {
+			LambdaQueryWrapper<StackingAndLoadingVehicles> queryWrapper = new LambdaQueryWrapper<>();
+			queryWrapper.eq(StackingAndLoadingVehicles::getCcmNo, changeHeatVo.getCcmNo());
+			queryWrapper.eq(StackingAndLoadingVehicles::getShift, shift);
+			queryWrapper.eq(StackingAndLoadingVehicles::getShiftGroup, shiftGroup);
+			queryWrapper.like(StackingAndLoadingVehicles::getBilletNos, x).last("limit 1");
+			StackingAndLoadingVehicles stackingAndLoadingVehicles = stackingAndLoadingVehiclesMapper.selectOne(queryWrapper);
+			if (stackingAndLoadingVehicles != null){
+				stackingAndLoadingVehicles.setHeatNo(changeHeatVo.getChangeHeatNo());
+				stackingAndLoadingVehiclesMapper.updateById(stackingAndLoadingVehicles);
+			}
+		});
+	}
 	/**
 	 * 钢坯实绩、炉次实绩、炉次传递单统一公共处理
 	 * @param originalBilletBasicInfoList
-	 * @param changeBilletBasicInfoList
 	 * @param changeHeatVo
 	 * @param shift
 	 * @param shiftGroup
 	 */
-	private void commonBilletChangeHandle(List<BilletBasicInfo> originalBilletBasicInfoList, List<BilletBasicInfo> changeBilletBasicInfoList,
-										  ChangeHeatVo changeHeatVo, String shift, String shiftGroup, Integer type) {
+	private void commonBilletChangeHandle(List<BilletBasicInfo> originalBilletBasicInfoList, ChangeHeatVo changeHeatVo, String shift, String shiftGroup, Integer type) {
 
 		/**
 		 * 原炉号处理 根据changeHeatVo.getNumber() 的数量,获取billetBasicInfoList对应的条数
 		 */
-		List<String> originalBilletNos = originalBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).distinct().collect(Collectors.toList());
-		log.info("原炉号********:{}",  JSON.toJSON(originalBilletNos));
 		for (BilletBasicInfo billetBasicInfo : originalBilletBasicInfoList) {
 			billetBasicInfo.setHeatNo(changeHeatVo.getChangeHeatNo());
 			billetBasicInfo.setUpdateTime(new Date());
@@ -2471,88 +2420,75 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 		// 更新钢坯实绩
 		billetBasicInfoService.updateBatchById(originalBilletBasicInfoList);
 
-		/**
-		 * 变更炉号处理 根据changeHeatVo.getNumber() 的数量,获取billetBasicInfoList对应的条数
-		 */
-		List<String> changeBilletNos = changeBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).distinct().collect(Collectors.toList());
-		log.info("变更炉号********:{}", JSON.toJSON(changeBilletNos));
-		for (BilletBasicInfo billetBasicInfo : changeBilletBasicInfoList) {
-			billetBasicInfo.setHeatNo(changeHeatVo.getOriginalHeatNo());
-			billetBasicInfo.setUpdateTime(new Date());
-		}
-		// 更新钢坯实绩
-		billetBasicInfoService.updateBatchById(changeBilletBasicInfoList);
-
 		// 所有变更炉号的总重量
 		double changeTotalWeight = originalBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
-		// 所有原始炉号的总重量
-		double originalTotalWeight = changeBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
 
-		// 原炉次实绩处理
+		// 原炉次实绩处理 减掉对应的数量和重量
 		HeatsActuals originalHeatsActuals = getHeatsActuals(changeHeatVo.getOriginalHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup);
 		if (originalHeatsActuals == null) {
 			throw new RuntimeException("原炉次实绩为空,操作失败!");
 		}
 		// 更新炉次实绩数量和对应的重量
 		if (originalHeatsActuals.getBilletSum() != 0){
-			originalHeatsActuals.setBilletSum(originalHeatsActuals.getBilletSum() + changeHeatVo.getNumber());
+			originalHeatsActuals.setBilletSum(originalHeatsActuals.getBilletSum() - changeHeatVo.getNumber());
 		}
-		originalHeatsActuals.setBlankOutput(originalHeatsActuals.getBlankOutput() + changeTotalWeight);
+		originalHeatsActuals.setBlankOutput(originalHeatsActuals.getBlankOutput() - changeTotalWeight);
 		heatsActualsService.updateById(originalHeatsActuals);
 
-		// 变更炉次实绩处理 处理变更炉次实绩(减少钢坯)
+		// 变更炉次实绩处理 处理变更炉次实绩(增加钢坯)
 		HeatsActuals changeHeatsActuals = getHeatsActuals(changeHeatVo.getChangeHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup);
 		if (changeHeatsActuals == null) {
 			throw new RuntimeException("变更炉次实绩为空,操作失败!");
 		}
 		// 更新炉次实绩数量和对应的重量
 		if (changeHeatsActuals.getBilletSum() != 0 && changeHeatsActuals.getBilletSum() > changeHeatVo.getNumber()){
-			changeHeatsActuals.setBilletSum(changeHeatsActuals.getBilletSum() - changeHeatVo.getNumber());
+			changeHeatsActuals.setBilletSum(changeHeatsActuals.getBilletSum() + changeHeatVo.getNumber());
 		}
-		changeHeatsActuals.setBlankOutput(changeHeatsActuals.getBlankOutput() - originalTotalWeight);
+		changeHeatsActuals.setBlankOutput(changeHeatsActuals.getBlankOutput() + changeTotalWeight);
 		heatsActualsService.updateById(changeHeatsActuals);
 
-		//  原炉次传递单
+		//  原炉次传递单 减掉对应的数量和重量
 		BilletHotsend originalBilletHotsend = getBilletHotsend(changeHeatVo.getOriginalHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup);
 		if (originalBilletHotsend == null){
 			throw new RuntimeException("原炉次传递单为空,操作失败!");
 		}
 		if (type == 1){
-			originalBilletHotsend.setRollcluboneNum(originalBilletHotsend.getRollcluboneNum() + changeHeatVo.getNumber());
+			originalBilletHotsend.setRollcluboneNum(originalBilletHotsend.getRollcluboneNum() - changeHeatVo.getNumber());
 		}else if (type == 2){
-			originalBilletHotsend.setRollclubtwoNum(originalBilletHotsend.getRollclubtwoNum() + changeHeatVo.getNumber());
+			originalBilletHotsend.setRollclubtwoNum(originalBilletHotsend.getRollclubtwoNum() - changeHeatVo.getNumber());
 		}else if (type == 3){
-			originalBilletHotsend.setRollclubthreeNum(originalBilletHotsend.getRollclubthreeNum() + changeHeatVo.getNumber());
+			originalBilletHotsend.setRollclubthreeNum(originalBilletHotsend.getRollclubthreeNum() - changeHeatVo.getNumber());
 		}else if (type == 4){
-			originalBilletHotsend.setRolloutshippNum(originalBilletHotsend.getRolloutshippNum() + changeHeatVo.getNumber());
+			originalBilletHotsend.setRolloutshippNum(originalBilletHotsend.getRolloutshippNum() - changeHeatVo.getNumber());
 		}else if (type == 5){
-			originalBilletHotsend.setRollDeputyCrossNum(originalBilletHotsend.getRollDeputyCrossNum() + changeHeatVo.getNumber());
+			originalBilletHotsend.setRollDeputyCrossNum(originalBilletHotsend.getRollDeputyCrossNum() - changeHeatVo.getNumber());
 		}else if (type == 6){
-			originalBilletHotsend.setStackNum(originalBilletHotsend.getStackNum() + changeHeatVo.getNumber() / 4);
+			originalBilletHotsend.setStackNum(originalBilletHotsend.getStackNum() - changeHeatVo.getNumber() / 4);
 		}
-		originalBilletHotsend.setAmountTotal(originalBilletHotsend.getAmountTotal() + changeHeatVo.getNumber());
-		originalBilletHotsend.setBlankOutput(originalBilletHotsend.getBlankOutput() + changeTotalWeight);
+		originalBilletHotsend.setAmountTotal(originalBilletHotsend.getAmountTotal() - changeHeatVo.getNumber());
+		originalBilletHotsend.setBlankOutput(originalBilletHotsend.getBlankOutput() - changeTotalWeight);
 		baseMapper.updateById(originalBilletHotsend);
 
+		// 变更的炉次传递单,增加数量和重量
 		BilletHotsend changeBilletHotsend = getBilletHotsend(changeHeatVo.getChangeHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup);
 		if (changeBilletHotsend == null) {
 			throw new RuntimeException("变更炉次传递单为空,操作失败!");
 		}
 		if (type == 1){
-			changeBilletHotsend.setRollcluboneNum(changeBilletHotsend.getRollcluboneNum() - changeHeatVo.getNumber());
+			changeBilletHotsend.setRollcluboneNum(changeBilletHotsend.getRollcluboneNum() + changeHeatVo.getNumber());
 		}else if (type == 2){
-			changeBilletHotsend.setRollclubtwoNum(changeBilletHotsend.getRollclubtwoNum() - changeHeatVo.getNumber());
+			changeBilletHotsend.setRollclubtwoNum(changeBilletHotsend.getRollclubtwoNum() + changeHeatVo.getNumber());
 		}else if (type == 3){
-			changeBilletHotsend.setRollclubthreeNum(changeBilletHotsend.getRollclubthreeNum() - changeHeatVo.getNumber());
+			changeBilletHotsend.setRollclubthreeNum(changeBilletHotsend.getRollclubthreeNum() + changeHeatVo.getNumber());
 		}else if (type == 4){
-			changeBilletHotsend.setRolloutshippNum(changeBilletHotsend.getRolloutshippNum() - changeHeatVo.getNumber());
+			changeBilletHotsend.setRolloutshippNum(changeBilletHotsend.getRolloutshippNum() + changeHeatVo.getNumber());
 		}else if (type == 5){
-			changeBilletHotsend.setRollDeputyCrossNum(changeBilletHotsend.getRollDeputyCrossNum() - changeHeatVo.getNumber());
+			changeBilletHotsend.setRollDeputyCrossNum(changeBilletHotsend.getRollDeputyCrossNum() + changeHeatVo.getNumber());
 		}else if (type == 6){
-			changeBilletHotsend.setStackNum(changeBilletHotsend.getStackNum() - changeHeatVo.getNumber() / 4);
+			changeBilletHotsend.setStackNum(changeBilletHotsend.getStackNum() + changeHeatVo.getNumber() / 4);
 		}
-		changeBilletHotsend.setAmountTotal(changeBilletHotsend.getAmountTotal() - changeHeatVo.getNumber());
-		changeBilletHotsend.setBlankOutput(changeBilletHotsend.getBlankOutput() - originalTotalWeight);
+		changeBilletHotsend.setAmountTotal(changeBilletHotsend.getAmountTotal() + changeHeatVo.getNumber());
+		changeBilletHotsend.setBlankOutput(changeBilletHotsend.getBlankOutput() + changeTotalWeight);
 		baseMapper.updateById(changeBilletHotsend);
 	}