qiangxuan пре 2 дана
родитељ
комит
725e621313

+ 1 - 1
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/billetHotsend/controller/BilletHotsendBaseController.java

@@ -555,7 +555,7 @@ public class BilletHotsendBaseController extends JeecgController<BilletHotsend,
         }
     }
 
-    @ApiOperation(value = "指定数量更换炉号", notes = "指定数量更换炉号")
+    @ApiOperation(value = "更换炉号", notes = "更换炉号")
     @PostMapping(value = "/changeHeatNo")
     public Result<?> changeHeatNumberHandle(@RequestBody ChangeHeatVo changeHeatVo) {
         JSONObject jsonObject = billetHotsendBaseService.changeHeatNumberHandle(changeHeatVo);

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

@@ -2064,7 +2064,7 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 			List<BilletBasicInfo> finalOriginalBilletBasicInfoList = originalBilletBasicInfoList.subList(0, changeHeatVo.getNumber());
 			List<BilletBasicInfo> finalChangeBilletBasicInfoList = changeBilletBasicInfoList.subList(0, changeHeatVo.getNumber());
 			// 钢坯实绩、炉次实绩、炉次传递单统一公共处理
-			commonBilletChangeHandle(finalOriginalBilletBasicInfoList, finalChangeBilletBasicInfoList, changeHeatVo, shift, shiftGroup);
+			commonBilletChangeHandle(finalOriginalBilletBasicInfoList, finalChangeBilletBasicInfoList, changeHeatVo, shift, shiftGroup, 1);
 			// 棒一统一公共处理
 			commonBilletRollClubOneHandle(finalOriginalBilletBasicInfoList, finalChangeBilletBasicInfoList, changeHeatVo, shift, shiftGroup);
 		}else {
@@ -2096,21 +2096,66 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 				return result;
 			}
 
-			List<BilletBasicInfo> finalOriginalBilletBasicInfoList = originalBilletBasicInfoList.subList(0, changeHeatVo.getNumber());
-			List<BilletBasicInfo> finalChangeBilletBasicInfoList = changeBilletBasicInfoList.subList(0, changeHeatVo.getNumber());
-			boolean allOriginalBilletNull = finalOriginalBilletBasicInfoList.stream()
-					.allMatch(info -> info.getBelongTable() == null);
-			boolean allChangeBilletNull = finalChangeBilletBasicInfoList.stream()
-					.allMatch(info -> info.getBelongTable() == null);
+			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<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>()
+					.eq(BilletBasicInfo::getCcmNo, changeHeatVo.getCcmNo())
+					.in(BilletBasicInfo::getAssemblyNumber, changeBilletNos)
+					.eq(BilletBasicInfo::getShift, shift)
+					.eq(BilletBasicInfo::getShiftGroup, shiftGroup));
+
+			boolean allOriginalBilletNull = originalBilletBasicInfoList1.stream().allMatch(info -> info.getBelongTable() == null);
+			boolean allChangeBilletNull = changeBilletBasicInfoList2.stream().allMatch(info -> info.getBelongTable() == null);
 			if (allOriginalBilletNull && allChangeBilletNull) {
-				// 无需处理,棒二、棒三、上若、付跨、装运单、主表和明细表
+				// 只处理钢坯实绩、炉次传递单、炉次实绩对应的数量和重量
+				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) {
 
 			}else if (!allOriginalBilletNull && !allChangeBilletNull) {
 				// 需要处理,棒二、棒三、上若、付跨、装运单、主表和明细表
 			}
+			// 统一维护炉次传递中的棒二、棒三、上若、付跨支数
 		}
 
 		result.put("success", "炉号变更,操作成功!");
@@ -2174,6 +2219,235 @@ 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) {
+
+		// 所有变更炉号的总重量
+		double changeTotalWeight = originalBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
+		// 所有原始炉号的总重量
+		double originalTotalWeight = changeBilletBasicInfoList.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);
+		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);
+		rollClubTwoService.updateById(changeRollClubTwo);
+
+		List<String> originalBilletNos = originalBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).collect(Collectors.toList());
+		// 棒二明细
+		List<RollClubTwoDetails> originalRollClubTwoDetailsList = getRollClubTwoDetailsList(changeHeatVo.getOriginalHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup, originalBilletNos);
+		if (oConvertUtils.listIsEmpty(originalRollClubTwoDetailsList)) {
+			throw new RuntimeException("原棒二明细为空,操作失败!");
+		}
+		for (RollClubTwoDetails originalRollClubTwoDetails : originalRollClubTwoDetailsList){
+			originalRollClubTwoDetails.setHeatNo(changeHeatVo.getChangeHeatNo());
+			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) {
+
+		// 所有变更炉号的总重量
+		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);
+		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);
+		rollClubThreeService.updateById(changeRollClubThree);
+
+		List<String> originalBilletNos = originalBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).collect(Collectors.toList());
+		// 棒三明细
+		List<RollClubThreeDetails> originalRollClubThreeDetailsList = getRollClubThreeDetailsList(changeHeatVo.getOriginalHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup, originalBilletNos);
+		if (oConvertUtils.listIsEmpty(originalRollClubThreeDetailsList)) {
+			throw new RuntimeException("原棒三明细为空,操作失败!");
+		}
+		for (RollClubThreeDetails originalRollClubThreeDetails : originalRollClubThreeDetailsList){
+			originalRollClubThreeDetails.setHeatNo(changeHeatVo.getChangeHeatNo());
+			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) {
+
+		// 所有变更炉号的总重量
+		double changeTotalWeight = originalBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
+		// 所有原始炉号的总重量
+		double originalTotalWeight = changeBilletBasicInfoList.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);
+		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);
+		rollOutShippService.updateById(changeRollOutShipp);
+
+		List<String> originalBilletNos = originalBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).collect(Collectors.toList());
+		// 上若明细
+		List<RollOutShippDetails> originalRollOutShippDetailsList = getRollOutShippDetailsList(changeHeatVo.getOriginalHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup, originalBilletNos);
+		if (oConvertUtils.listIsEmpty(originalRollOutShippDetailsList)) {
+			throw new RuntimeException("原上若明细为空,操作失败!");
+		}
+		for (RollOutShippDetails originalRollOutShippDetails : originalRollOutShippDetailsList){
+			originalRollOutShippDetails.setHeatNo(changeHeatVo.getChangeHeatNo());
+			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) {
+
+		// 所有变更炉号的总重量
+		double changeTotalWeight = originalBilletBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
+		// 所有原始炉号的总重量
+		double originalTotalWeight = changeBilletBasicInfoList.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);
+		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);
+		rollDeputyCrossService.updateById(changeRollDeputyCross);
+
+		List<String> originalBilletNos = originalBilletBasicInfoList.stream().map(BilletBasicInfo::getBilletNo).collect(Collectors.toList());
+		// 副跨明细
+		List<RollDeputyCrossDetails> originalRollDeputyCrossDetailsList = getRollDeputyCrossDetailsList(changeHeatVo.getOriginalHeatNo(), changeHeatVo.getCcmNo(), shift, shiftGroup, originalBilletNos);
+		if (oConvertUtils.listIsEmpty(originalRollDeputyCrossDetailsList)) {
+			throw new RuntimeException("原付跨明细为空,操作失败!");
+		}
+		for (RollDeputyCrossDetails originalRollDeputyCrossDetails : originalRollDeputyCrossDetailsList){
+			originalRollDeputyCrossDetails.setHeatNo(changeHeatVo.getChangeHeatNo());
+			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
@@ -2182,8 +2456,8 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 	 * @param shift
 	 * @param shiftGroup
 	 */
-	private void commonBilletChangeHandle(List<BilletBasicInfo> originalBilletBasicInfoList ,List<BilletBasicInfo> changeBilletBasicInfoList ,
-										  ChangeHeatVo changeHeatVo, String shift, String shiftGroup) {
+	private void commonBilletChangeHandle(List<BilletBasicInfo> originalBilletBasicInfoList, List<BilletBasicInfo> changeBilletBasicInfoList,
+										  ChangeHeatVo changeHeatVo, String shift, String shiftGroup, Integer type) {
 
 		/**
 		 * 原炉号处理 根据changeHeatVo.getNumber() 的数量,获取billetBasicInfoList对应的条数
@@ -2243,7 +2517,19 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 		if (originalBilletHotsend == null){
 			throw new RuntimeException("原炉次传递单为空,操作失败!");
 		}
-		originalBilletHotsend.setRollcluboneNum(originalBilletHotsend.getRollcluboneNum() + changeHeatVo.getNumber());
+		if (type == 1){
+			originalBilletHotsend.setRollcluboneNum(originalBilletHotsend.getRollcluboneNum() + changeHeatVo.getNumber());
+		}else if (type == 2){
+			originalBilletHotsend.setRollclubtwoNum(originalBilletHotsend.getRollclubtwoNum() + changeHeatVo.getNumber());
+		}else if (type == 3){
+			originalBilletHotsend.setRollclubthreeNum(originalBilletHotsend.getRollclubthreeNum() + changeHeatVo.getNumber());
+		}else if (type == 4){
+			originalBilletHotsend.setRolloutshippNum(originalBilletHotsend.getRolloutshippNum() + changeHeatVo.getNumber());
+		}else if (type == 5){
+			originalBilletHotsend.setRollDeputyCrossNum(originalBilletHotsend.getRollDeputyCrossNum() + changeHeatVo.getNumber());
+		}else if (type == 6){
+			originalBilletHotsend.setStackNum(originalBilletHotsend.getStackNum() + changeHeatVo.getNumber() / 4);
+		}
 		originalBilletHotsend.setAmountTotal(originalBilletHotsend.getAmountTotal() + changeHeatVo.getNumber());
 		originalBilletHotsend.setBlankOutput(originalBilletHotsend.getBlankOutput() + changeTotalWeight);
 		baseMapper.updateById(originalBilletHotsend);
@@ -2252,7 +2538,19 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 		if (changeBilletHotsend == null) {
 			throw new RuntimeException("变更炉次传递单为空,操作失败!");
 		}
-		changeBilletHotsend.setRollcluboneNum(changeBilletHotsend.getRollcluboneNum() - changeHeatVo.getNumber());
+		if (type == 1){
+			changeBilletHotsend.setRollcluboneNum(changeBilletHotsend.getRollcluboneNum() - changeHeatVo.getNumber());
+		}else if (type == 2){
+			changeBilletHotsend.setRollclubtwoNum(changeBilletHotsend.getRollclubtwoNum() - changeHeatVo.getNumber());
+		}else if (type == 3){
+			changeBilletHotsend.setRollclubthreeNum(changeBilletHotsend.getRollclubthreeNum() - changeHeatVo.getNumber());
+		}else if (type == 4){
+			changeBilletHotsend.setRolloutshippNum(changeBilletHotsend.getRolloutshippNum() - changeHeatVo.getNumber());
+		}else if (type == 5){
+			changeBilletHotsend.setRollDeputyCrossNum(changeBilletHotsend.getRollDeputyCrossNum() - changeHeatVo.getNumber());
+		}else if (type == 6){
+			changeBilletHotsend.setStackNum(changeBilletHotsend.getStackNum() - changeHeatVo.getNumber() / 4);
+		}
 		changeBilletHotsend.setAmountTotal(changeBilletHotsend.getAmountTotal() - changeHeatVo.getNumber());
 		changeBilletHotsend.setBlankOutput(changeBilletHotsend.getBlankOutput() - originalTotalWeight);
 		baseMapper.updateById(changeBilletHotsend);
@@ -2288,13 +2586,17 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 	 * @return
 	 */
 	private List<BilletBasicInfo> queryBilletBasicInfoList(String ccmNo, String heatNo, String shift, String shiftGroup) {
-
-		return billetBasicInfoService.list(new LambdaQueryWrapper<BilletBasicInfo>()
-				.eq(BilletBasicInfo::getCcmNo, ccmNo)
-				.eq(BilletBasicInfo::getHeatNo, heatNo)
-				.eq(BilletBasicInfo::getShift, shift)
-				.eq(BilletBasicInfo::getShiftGroup, shiftGroup)
-				.orderByAsc(BilletBasicInfo::getBelongTable));
+		return billetBasicInfoService.list(
+				new LambdaQueryWrapper<BilletBasicInfo>()
+						.eq(BilletBasicInfo::getCcmNo, ccmNo)
+						.eq(BilletBasicInfo::getHeatNo, heatNo)
+						.eq(BilletBasicInfo::getShift, shift)
+						.eq(BilletBasicInfo::getShiftGroup, shiftGroup)
+						.isNotNull(BilletBasicInfo::getAssemblyNumber)  // 添加非空条件
+						.ne(BilletBasicInfo::getAssemblyNumber, "")    // 添加非空字符串条件
+						.groupBy(BilletBasicInfo::getAssemblyNumber)  // 按assembly_number分组
+						.orderByAsc(BilletBasicInfo::getBelongTable)
+		);
 	}
 
 
@@ -2336,6 +2638,54 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 						.last("LIMIT 1")
 		);
 	}
+	// 提取查询棒二主表的公共方法
+	private RollClubTwo getRollClubTwo(String heatNo, String ccmNo, String shift, String shiftGroup) {
+		return rollClubTwoService.getOne(
+				new LambdaQueryWrapper<RollClubTwo>()
+						.eq(RollClubTwo::getHeatNo, heatNo)
+						.eq(RollClubTwo::getCcmNo, ccmNo)
+						.eq(RollClubTwo::getShift, shift)
+						.eq(RollClubTwo::getShiftGroup, shiftGroup)
+						.orderByDesc(RollClubTwo::getCreateTime)
+						.last("LIMIT 1")
+		);
+	}
+	// 提取查询棒三主表的公共方法
+	private RollClubThree getRollClubThree(String heatNo, String ccmNo, String shift, String shiftGroup) {
+		return rollClubThreeService.getOne(
+				new LambdaQueryWrapper<RollClubThree>()
+						.eq(RollClubThree::getHeatNo, heatNo)
+						.eq(RollClubThree::getCcmNo, ccmNo)
+						.eq(RollClubThree::getShift, shift)
+						.eq(RollClubThree::getShiftGroup, shiftGroup)
+						.orderByDesc(RollClubThree::getCreateTime)
+						.last("LIMIT 1")
+		);
+	}
+	// 提取查询上若主表的公共方法
+	private RollOutShipp getRollOutShipp(String heatNo, String ccmNo, String shift, String shiftGroup) {
+		return rollOutShippService.getOne(
+				new LambdaQueryWrapper<RollOutShipp>()
+						.eq(RollOutShipp::getHeatNo, heatNo)
+						.eq(RollOutShipp::getCcmNo, ccmNo)
+						.eq(RollOutShipp::getShift, shift)
+						.eq(RollOutShipp::getShiftGroup, shiftGroup)
+						.orderByDesc(RollOutShipp::getCreateTime)
+						.last("LIMIT 1")
+		);
+	}
+	// 提取查询付跨主表的公共方法
+	private RollDeputyCross getRollDeputyCross(String heatNo, String ccmNo, String shift, String shiftGroup) {
+		return rollDeputyCrossService.getOne(
+				new LambdaQueryWrapper<RollDeputyCross>()
+						.eq(RollDeputyCross::getHeatNo, heatNo)
+						.eq(RollDeputyCross::getCcmNo, ccmNo)
+						.eq(RollDeputyCross::getShift, shift)
+						.eq(RollDeputyCross::getShiftGroup, shiftGroup)
+						.orderByDesc(RollDeputyCross::getCreateTime)
+						.last("LIMIT 1")
+		);
+	}
 
 	// 提取查询棒一明细表的公共方法
 	private List<RollClubOneDetails> getRollClubOneDetailsList(String heatNo, String ccmNo, String shift, String shiftGroup, List<String> billetNos) {
@@ -2349,4 +2699,52 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 						.orderByDesc(RollClubOneDetails::getCreateTime)
 		);
 	}
+	// 提取查询棒二明细表的公共方法
+	private List<RollClubTwoDetails> getRollClubTwoDetailsList(String heatNo, String ccmNo, String shift, String shiftGroup, List<String> billetNos) {
+		return rollClubTwoDetailsService.list(
+				new LambdaQueryWrapper<RollClubTwoDetails>()
+						.eq(RollClubTwoDetails::getHeatNo, heatNo)
+						.eq(RollClubTwoDetails::getCcmNo, ccmNo)
+						.eq(RollClubTwoDetails::getShift, shift)
+						.eq(RollClubTwoDetails::getShiftGroup, shiftGroup)
+						.in(RollClubTwoDetails::getBilletNo, billetNos)
+						.orderByDesc(RollClubTwoDetails::getCreateTime)
+		);
+	}
+	// 提取查询棒三明细表的公共方法
+	private List<RollClubThreeDetails> getRollClubThreeDetailsList(String heatNo, String ccmNo, String shift, String shiftGroup, List<String> billetNos) {
+		return rollClubThreeDetailsService.list(
+				new LambdaQueryWrapper<RollClubThreeDetails>()
+						.eq(RollClubThreeDetails::getHeatNo, heatNo)
+						.eq(RollClubThreeDetails::getCcmNo, ccmNo)
+						.eq(RollClubThreeDetails::getShift, shift)
+						.eq(RollClubThreeDetails::getShiftGroup, shiftGroup)
+						.in(RollClubThreeDetails::getBilletNo, billetNos)
+						.orderByDesc(RollClubThreeDetails::getCreateTime)
+		);
+	}
+	// 提取查询上若明细表的公共方法
+	private List<RollOutShippDetails> getRollOutShippDetailsList(String heatNo, String ccmNo, String shift, String shiftGroup, List<String> billetNos) {
+		return rollOutShippDetailsService.list(
+				new LambdaQueryWrapper<RollOutShippDetails>()
+						.eq(RollOutShippDetails::getHeatNo, heatNo)
+						.eq(RollOutShippDetails::getCcmNo, ccmNo)
+						.eq(RollOutShippDetails::getShift, shift)
+						.eq(RollOutShippDetails::getShiftGroup, shiftGroup)
+						.in(RollOutShippDetails::getBilletNo, billetNos)
+						.orderByDesc(RollOutShippDetails::getCreateTime)
+		);
+	}
+	// 提取查询付跨明细表的公共方法
+	private List<RollDeputyCrossDetails> getRollDeputyCrossDetailsList(String heatNo, String ccmNo, String shift, String shiftGroup, List<String> billetNos) {
+		return rollDeputyCrossDetailsService.list(
+				new LambdaQueryWrapper<RollDeputyCrossDetails>()
+						.eq(RollDeputyCrossDetails::getHeatNo, heatNo)
+						.eq(RollDeputyCrossDetails::getCcmNo, ccmNo)
+						.eq(RollDeputyCrossDetails::getShift, shift)
+						.eq(RollDeputyCrossDetails::getShiftGroup, shiftGroup)
+						.in(RollDeputyCrossDetails::getBilletNo, billetNos)
+						.orderByDesc(RollDeputyCrossDetails::getCreateTime)
+		);
+	}
 }