Przeglądaj źródła

副跨目的地功能开发

qiangxuan 3 dni temu
rodzic
commit
1d1f90a85e
14 zmienionych plików z 524 dodań i 74 usunięć
  1. 3 0
      zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/billetActual/entity/BilletHotsend.java
  2. 71 17
      zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/billetActual/service/impl/BilletHotsendBaseServiceImpl.java
  3. 140 0
      zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/entity/RollDeputyCross.java
  4. 134 0
      zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/entity/RollDeputyCrossDetails.java
  5. 14 0
      zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/mapper/RollDeputyCrossDetailsMapper.java
  6. 14 0
      zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/mapper/RollDeputyCrossMapper.java
  7. 5 0
      zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/mapper/xml/RollDeputyCrossDetailsMapper.xml
  8. 5 0
      zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/mapper/xml/RollDeputyCrossMapper.xml
  9. 14 0
      zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/service/IRollDeputyCrossDetailsService.java
  10. 14 0
      zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/service/IRollDeputyCrossService.java
  11. 18 0
      zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/service/impl/RollDeputyCrossDetailsServiceImpl.java
  12. 19 0
      zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/service/impl/RollDeputyCrossServiceImpl.java
  13. 73 0
      zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/stackingAndLoadingVehicles/service/impl/StackingAndLoadingVehiclesServiceImpl.java
  14. 0 57
      zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/storageBill/service/impl/StorageBillServiceImpl.java

+ 3 - 0
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/billetActual/entity/BilletHotsend.java

@@ -172,6 +172,9 @@ public class BilletHotsend implements Serializable {
     @Excel(name = "牌号", width = 15)
     @ApiModelProperty(value = "牌号")
     private String brandNum;
+    @Excel(name = "副跨总支数", width = 15)
+    @ApiModelProperty(value = "'副跨总支数'")
+    private Integer rollDeputyCrossNum;
 
 }
 

+ 71 - 17
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/billetActual/service/impl/BilletHotsendBaseServiceImpl.java

@@ -41,6 +41,10 @@ import org.jeecg.modules.rollClubTwo.entity.RollClubTwo;
 import org.jeecg.modules.rollClubTwo.entity.RollClubTwoDetails;
 import org.jeecg.modules.rollClubTwo.service.IRollClubTwoDetailsService;
 import org.jeecg.modules.rollClubTwo.service.IRollClubTwoService;
+import org.jeecg.modules.rollDeputyCross.entity.RollDeputyCross;
+import org.jeecg.modules.rollDeputyCross.entity.RollDeputyCrossDetails;
+import org.jeecg.modules.rollDeputyCross.service.IRollDeputyCrossDetailsService;
+import org.jeecg.modules.rollDeputyCross.service.IRollDeputyCrossService;
 import org.jeecg.modules.rollHeight.entity.RollHeight;
 import org.jeecg.modules.rollHeight.entity.RollHeightDetails;
 import org.jeecg.modules.rollHeight.service.IRollHeightDetailsService;
@@ -122,6 +126,10 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 	private IOperateLogService operateLogService;
 	@Autowired
 	private ConfigMqttMapper configMqttMapper;
+	@Autowired
+	private IRollDeputyCrossService rollDeputyCrossService;
+	@Autowired
+	private IRollDeputyCrossDetailsService rollDeputyCrossDetailsService;
 
 	/**
 	 * 自动化新增 5号机 直轧棒1   6号机 高线
@@ -742,6 +750,12 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 			}else {
 				billetHotsend.setRolloutshippNum(check.getRolloutshippNum() + rollClubCommonList.size());
 			}
+		}else if ("roll_deputy_cross".equals(billetHotsendDetailsVo.getBelongTable()) && "0".equals(billetHotsendTypeConfig.getBelongType().toString())){
+			if (oConvertUtils.isEmpty(check.getRollDeputyCrossNum())){
+				billetHotsend.setRollDeputyCrossNum(rollClubCommonList.size());
+			}else {
+				billetHotsend.setRollDeputyCrossNum(check.getRollDeputyCrossNum() + rollClubCommonList.size());
+			}
 		}
 		billetHotsend.setUpdateTime(new Date());
 		LambdaUpdateWrapper<BilletHotsend> updateWrapper = new LambdaUpdateWrapper<>();
@@ -1027,6 +1041,61 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 			// 更新交班表中的热装总支数
 			updateShiftInfoByType(billetHotsend.getCcmNo(), billetHotsend.getShift(), billetHotsend.getShiftGroup(), rollOutShippDetailsList.size(),"hotCharge");
 		}
+
+		/**
+		 * 保存副跨信息
+		 */
+		if ("roll_deputy_cross".equals(billetHotsendDetailsVo.getBelongTable())){
+			billetHotsend.setShift(storageBill.getShift());
+			billetHotsend.setShiftGroup(storageBill.getShiftGroup());
+			RollDeputyCross rollDeputyCross = new RollDeputyCross();
+			BeanUtils.copyProperties(billetHotsend, rollDeputyCross);
+			rollDeputyCross.setSize(String.valueOf(rollClubCommonList.stream().findFirst().orElse(null).getLength())); //定尺
+			rollDeputyCross.setSteel(String.valueOf(rollClubCommonList.stream().findFirst().orElse(null).getGrade())); //钢种
+			rollDeputyCross.setSpec(String.valueOf(rollClubCommonList.stream().findFirst().orElse(null).getSpec())); //规格
+			rollDeputyCross.setBlankOutput(rollClubCommonList.stream().mapToDouble(RollClubCommon::getBilletWeight).sum());//出坯量总和
+			rollDeputyCross.setStorageBillId(storageBill.getId());
+			LambdaQueryWrapper<RollDeputyCross> queryWrapper1 = new LambdaQueryWrapper<>();
+			queryWrapper1.eq(RollDeputyCross::getCcmNo, billetHotsend.getCcmNo())
+					.eq(RollDeputyCross::getHeatNo, billetHotsend.getHeatNo())
+					.eq(RollDeputyCross::getShift, billetHotsend.getShift())
+					.eq(RollDeputyCross::getShiftGroup, billetHotsend.getShiftGroup())
+					.eq(RollDeputyCross::getStorageBillId, storageBill.getId());
+			RollDeputyCross rollDeputyCross1 = rollDeputyCrossService.getOne(queryWrapper1);
+			if (oConvertUtils.isEmpty(rollDeputyCross1)){
+				rollDeputyCross.setCreateDate(new Date());
+				rollDeputyCross.setAmountTotal(rollClubCommonList.size());// 总支数
+				rollDeputyCrossService.save(rollDeputyCross);
+			}else {
+				rollDeputyCross1.setId(rollDeputyCross1.getId());
+				rollDeputyCross1.setAmountTotal(rollDeputyCross1.getAmountTotal() + rollClubCommonList.size());// 总支数
+				rollDeputyCross1.setBlankOutput(rollDeputyCross1.getBlankOutput() + rollDeputyCross.getBlankOutput());//出坯量
+				rollDeputyCross1.setUpdateTime(new Date());
+				rollDeputyCrossService.updateById(rollDeputyCross1);
+			}
+			// 保存副跨明细信息
+			List<RollDeputyCrossDetails> rollDeputyCrossDetailsList = new ArrayList<>();
+			rollClubCommonList.forEach(x ->{
+				RollDeputyCrossDetails rollDeputyCrossDetails = new RollDeputyCrossDetails();
+				BeanUtils.copyProperties(x, rollDeputyCrossDetails);
+				rollDeputyCrossDetails.setId(String.valueOf(IdWorker.getId()));
+				rollDeputyCrossDetails.setShift(billetHotsend.getShift());
+				rollDeputyCrossDetails.setShiftGroup(billetHotsend.getShiftGroup());
+				rollDeputyCrossDetails.setStorageBillId(storageBill.getId());
+				rollDeputyCrossDetails.setLicensePlate(storageBill.getLicensePlate());
+				rollDeputyCrossDetails.setSize(String.valueOf(x.getLength()));
+				rollDeputyCrossDetails.setSteel(x.getGrade());
+				rollDeputyCrossDetails.setUpdateTime(new Date(System.currentTimeMillis() + timeOffset.get()));
+				rollDeputyCrossDetails.setCreateTime(new Date(System.currentTimeMillis() + timeOffset.get()));
+				rollDeputyCrossDetails.setBlankOutput(x.getBilletWeight());//出坯量
+				rollDeputyCrossDetailsList.add(rollDeputyCrossDetails);
+				timeOffset.addAndGet(1000); // 这里假设每次增加1秒(1000毫秒)的时间偏移量
+			});
+			rollDeputyCrossDetailsService.saveBatch(rollDeputyCrossDetailsList);
+			// 更新交班表中的热装总支数
+			updateShiftInfoByType(billetHotsend.getCcmNo(), billetHotsend.getShift(), billetHotsend.getShiftGroup(), rollDeputyCrossDetailsList.size(),"hotCharge");
+		}
+
 		if ("billet_auto_tmp".equals(billetHotsendDetailsVo.getBelongTable())){
 			// 自动化轧钢外运去 棒二或棒三  目的地未知  保存明细至自动化钢坯临时表
 			List<BilletAutoTmp> billetAutoTmpList = new ArrayList<>();
@@ -1159,6 +1228,8 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 				x.setBelongTable("roll_out_shipp");
 			}else if ("billet_auto_tmp".equals(billetHotsendDetailsVo.getBelongTable())){
 				x.setBelongTable("billet_auto_tmp");
+			}else if ("roll_deputy_cross".equals(billetHotsendDetailsVo.getBelongTable())){
+				x.setBelongTable("roll_deputy_cross");
 			}
 			x.setBhtcId(billetHotsendDetailsVo.getBilletHotsendTypeConfigId());
 			x.setUpdateTime(new Date());
@@ -1299,8 +1370,6 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 		return result;
 	}
 
-
-
 	/**
 	 * 封装BilletAutoException对象的方法
 	 *
@@ -1365,19 +1434,4 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 		operateLog.setTableId(storageBill.getId());
 		return operateLog;
 	}
-
-	/**
-	 *
-	 * 是否存在某条记录的 belongTable 和 bhtcId 字段都不为空
-	 * @param billetBasicInfoLists
-	 * @return
-	 */
-	private List<BilletBasicInfo> checkBilletBasicInfoList(List<BilletBasicInfo> billetBasicInfoLists) {
-		// 使用 Stream API 查找符合条件的记录
-		Optional<BilletBasicInfo> found = billetBasicInfoLists.stream()
-				.filter(info -> oConvertUtils.isNotEmpty(info.getBelongTable()) && oConvertUtils.isNotEmpty(info.getBhtcId()))
-				.findAny();
-		// 如果找到符合条件的记录,返回原列表;否则返回空列表
-		return found.isPresent() ? billetBasicInfoLists : new ArrayList<>();
-	}
 }

+ 140 - 0
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/entity/RollDeputyCross.java

@@ -0,0 +1,140 @@
+package org.jeecg.modules.rollDeputyCross.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 轧钢副跨
+ * @Author: jeecg-boot
+ * @Date:   2025-06-04
+ * @Version: V1.0
+ */
+@Data
+@TableName("roll_deputy_cross")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="roll_deputy_cross对象", description="轧钢副跨")
+public class RollDeputyCross implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+	/**日期*/
+	@Excel(name = "日期", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "日期")
+    private Date createDate;
+	/**铸机号*/
+	@Excel(name = "铸机号", width = 15)
+    @ApiModelProperty(value = "铸机号")
+    private String ccmNo;
+	/**炉号*/
+	@Excel(name = "炉号", width = 15)
+    @ApiModelProperty(value = "炉号")
+    private String heatNo;
+	/**班组*/
+	@Excel(name = "班组", width = 15)
+    @ApiModelProperty(value = "班组")
+    private String shiftGroup;
+	/**班别*/
+	@Excel(name = "班别", width = 15)
+    @ApiModelProperty(value = "班别")
+    private String shift;
+	/**定尺*/
+	@Excel(name = "定尺", width = 15)
+    @ApiModelProperty(value = "定尺")
+    private String size;
+	/**钢种*/
+	@Excel(name = "钢种", width = 15)
+    @ApiModelProperty(value = "钢种")
+    private String steel;
+	/**规格*/
+	@Excel(name = "规格", width = 15)
+    @ApiModelProperty(value = "规格")
+    private String spec;
+	/**定重*/
+	@Excel(name = "定重", width = 15)
+    @ApiModelProperty(value = "定重")
+    private Double decideWeight;
+	/**总支数*/
+	@Excel(name = "总支数", width = 15)
+    @ApiModelProperty(value = "总支数")
+    private Integer amountTotal;
+	/**出坯量*/
+	@Excel(name = "出坯量", width = 15)
+    @ApiModelProperty(value = "出坯量")
+    private Double blankOutput;
+	/**装运单ID*/
+	@Excel(name = "装运单ID", width = 15)
+    @ApiModelProperty(value = "装运单ID")
+    private String storageBillId;
+	/**C*/
+	@Excel(name = "C", width = 15)
+    @ApiModelProperty(value = "C")
+    private Double cc;
+	/**Mn*/
+	@Excel(name = "Mn", width = 15)
+    @ApiModelProperty(value = "Mn")
+    private Double mn;
+	/**Si*/
+	@Excel(name = "Si", width = 15)
+    @ApiModelProperty(value = "Si")
+    private Double si;
+	/**S*/
+	@Excel(name = "S", width = 15)
+    @ApiModelProperty(value = "S")
+    private Double ss;
+	/**P*/
+	@Excel(name = "P", width = 15)
+    @ApiModelProperty(value = "P")
+    private Double pp;
+	/**V*/
+	@Excel(name = "V", width = 15)
+    @ApiModelProperty(value = "V")
+    private Double vv;
+	/**Nb*/
+	@Excel(name = "Nb", width = 15)
+    @ApiModelProperty(value = "Nb")
+    private Double nb;
+	/**是否已编辑*/
+	@Excel(name = "是否已编辑", width = 15)
+    @ApiModelProperty(value = "是否已编辑")
+    private Integer isUpd;
+}

+ 134 - 0
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/entity/RollDeputyCrossDetails.java

@@ -0,0 +1,134 @@
+package org.jeecg.modules.rollDeputyCross.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 副跨明细
+ * @Author: jeecg-boot
+ * @Date:   2025-06-04
+ * @Version: V1.0
+ */
+@Data
+@TableName("roll_deputy_cross_details")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="roll_deputy_cross_details对象", description="副跨明细")
+public class RollDeputyCrossDetails implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private String sysOrgCode;
+	/**炉号*/
+	@Excel(name = "炉号", width = 15)
+    @ApiModelProperty(value = "炉号")
+    private String heatNo;
+	/**坯号*/
+	@Excel(name = "坯号", width = 15)
+    @ApiModelProperty(value = "坯号")
+    private String billetNo;
+	/**装运单ID*/
+	@Excel(name = "装运单ID", width = 15)
+    @ApiModelProperty(value = "装运单ID")
+    private String storageBillId;
+	/**起始根数*/
+	@Excel(name = "起始根数", width = 15)
+    @ApiModelProperty(value = "起始根数")
+    private Integer startNum;
+	/**结束根数*/
+	@Excel(name = "结束根数", width = 15)
+    @ApiModelProperty(value = "结束根数")
+    private Integer endNum;
+	/**堆垛层号(1-20)*/
+	@Excel(name = "堆垛层号(1-20)", width = 15)
+    @ApiModelProperty(value = "堆垛层号(1-20)")
+    private String stackStorey;
+	/**堆垛编号(1-9)*/
+	@Excel(name = "堆垛编号(1-9)", width = 15)
+    @ApiModelProperty(value = "堆垛编号(1-9)")
+    private String stackNum;
+	/**垛位*/
+	@Excel(name = "垛位", width = 15)
+    @ApiModelProperty(value = "垛位")
+    private String stackAddr;
+	/**堆垛起始跟*/
+	@Excel(name = "堆垛起始跟", width = 15)
+    @ApiModelProperty(value = "堆垛起始跟")
+    private Integer startNumStack;
+	/**堆垛结束跟*/
+	@Excel(name = "堆垛结束跟", width = 15)
+    @ApiModelProperty(value = "堆垛结束跟")
+    private Integer endNumStack;
+	/**班别*/
+	@Excel(name = "班别", width = 15)
+    @ApiModelProperty(value = "班别")
+    private String shift;
+	/**班组*/
+	@Excel(name = "班组", width = 15)
+    @ApiModelProperty(value = "班组")
+    private String shiftGroup;
+	/**钢种*/
+	@Excel(name = "钢种", width = 15)
+    @ApiModelProperty(value = "钢种")
+    private String steel;
+	/**规格*/
+	@Excel(name = "规格", width = 15)
+    @ApiModelProperty(value = "规格")
+    private String spec;
+	/**定尺*/
+	@Excel(name = "定尺", width = 15)
+    @ApiModelProperty(value = "定尺")
+    private String size;
+	/**车牌号*/
+	@Excel(name = "车牌号", width = 15)
+    @ApiModelProperty(value = "车牌号")
+    private String licensePlate;
+	/**铸机号*/
+	@Excel(name = "铸机号", width = 15)
+    @ApiModelProperty(value = "铸机号")
+    private String ccmNo;
+	/**出坯量*/
+	@Excel(name = "出坯量", width = 15)
+    @ApiModelProperty(value = "出坯量")
+    private Double blankOutput;
+	/**组坯号*/
+	@Excel(name = "组坯号", width = 15)
+    @ApiModelProperty(value = "组坯号")
+    private String assemblyNumber;
+}

+ 14 - 0
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/mapper/RollDeputyCrossDetailsMapper.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.rollDeputyCross.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.rollDeputyCross.entity.RollDeputyCrossDetails;
+
+/**
+ * @Description: 副跨明细
+ * @Author: jeecg-boot
+ * @Date:   2025-06-04
+ * @Version: V1.0
+ */
+public interface RollDeputyCrossDetailsMapper extends BaseMapper<RollDeputyCrossDetails> {
+
+}

+ 14 - 0
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/mapper/RollDeputyCrossMapper.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.rollDeputyCross.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.rollDeputyCross.entity.RollDeputyCross;
+
+/**
+ * @Description: 轧钢副跨
+ * @Author: jeecg-boot
+ * @Date:   2025-06-04
+ * @Version: V1.0
+ */
+public interface RollDeputyCrossMapper extends BaseMapper<RollDeputyCross> {
+
+}

+ 5 - 0
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/mapper/xml/RollDeputyCrossDetailsMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.rollDeputyCross.mapper.RollDeputyCrossDetailsMapper">
+
+</mapper>

+ 5 - 0
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/mapper/xml/RollDeputyCrossMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.rollDeputyCross.mapper.RollDeputyCrossMapper">
+
+</mapper>

+ 14 - 0
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/service/IRollDeputyCrossDetailsService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.rollDeputyCross.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.rollDeputyCross.entity.RollDeputyCrossDetails;
+
+/**
+ * @Description: 副跨明细
+ * @Author: jeecg-boot
+ * @Date:   2025-06-04
+ * @Version: V1.0
+ */
+public interface IRollDeputyCrossDetailsService extends IService<RollDeputyCrossDetails> {
+
+}

+ 14 - 0
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/service/IRollDeputyCrossService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.rollDeputyCross.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.rollDeputyCross.entity.RollDeputyCross;
+
+/**
+ * @Description: 轧钢副跨
+ * @Author: jeecg-boot
+ * @Date:   2025-06-04
+ * @Version: V1.0
+ */
+public interface IRollDeputyCrossService extends IService<RollDeputyCross> {
+
+}

+ 18 - 0
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/service/impl/RollDeputyCrossDetailsServiceImpl.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.rollDeputyCross.service.impl;
+import org.jeecg.modules.rollDeputyCross.entity.RollDeputyCrossDetails;
+import org.jeecg.modules.rollDeputyCross.mapper.RollDeputyCrossDetailsMapper;
+import org.jeecg.modules.rollDeputyCross.service.IRollDeputyCrossDetailsService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 副跨明细
+ * @Author: jeecg-boot
+ * @Date:   2025-06-04
+ * @Version: V1.0
+ */
+@Service
+public class RollDeputyCrossDetailsServiceImpl extends ServiceImpl<RollDeputyCrossDetailsMapper, RollDeputyCrossDetails> implements IRollDeputyCrossDetailsService {
+
+}

+ 19 - 0
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/rollDeputyCross/service/impl/RollDeputyCrossServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.rollDeputyCross.service.impl;
+
+import org.jeecg.modules.rollDeputyCross.entity.RollDeputyCross;
+import org.jeecg.modules.rollDeputyCross.mapper.RollDeputyCrossMapper;
+import org.jeecg.modules.rollDeputyCross.service.IRollDeputyCrossService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 轧钢副跨
+ * @Author: jeecg-boot
+ * @Date:   2025-06-04
+ * @Version: V1.0
+ */
+@Service
+public class RollDeputyCrossServiceImpl extends ServiceImpl<RollDeputyCrossMapper, RollDeputyCross> implements IRollDeputyCrossService {
+
+}

+ 73 - 0
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/stackingAndLoadingVehicles/service/impl/StackingAndLoadingVehiclesServiceImpl.java

@@ -40,6 +40,10 @@ import org.jeecg.modules.rollClubTwo.entity.RollClubTwo;
 import org.jeecg.modules.rollClubTwo.entity.RollClubTwoDetails;
 import org.jeecg.modules.rollClubTwo.service.IRollClubTwoDetailsService;
 import org.jeecg.modules.rollClubTwo.service.IRollClubTwoService;
+import org.jeecg.modules.rollDeputyCross.entity.RollDeputyCross;
+import org.jeecg.modules.rollDeputyCross.entity.RollDeputyCrossDetails;
+import org.jeecg.modules.rollDeputyCross.service.IRollDeputyCrossDetailsService;
+import org.jeecg.modules.rollDeputyCross.service.IRollDeputyCrossService;
 import org.jeecg.modules.rollHeight.entity.RollHeight;
 import org.jeecg.modules.rollHeight.entity.RollHeightDetails;
 import org.jeecg.modules.rollHeight.service.IRollHeightDetailsService;
@@ -132,6 +136,10 @@ public class StackingAndLoadingVehiclesServiceImpl extends ServiceImpl<StackingA
     private IOperateLogService operateLogService;
     @Autowired
     private ConfigMqttMapper configMqttMapper;
+    @Autowired
+    private IRollDeputyCrossService rollDeputyCrossService;
+    @Autowired
+    private IRollDeputyCrossDetailsService rollDeputyCrossDetailsService;
 
 
     @Override
@@ -474,6 +482,8 @@ public class StackingAndLoadingVehiclesServiceImpl extends ServiceImpl<StackingA
                 billetHotsend.setRollclubthreeNum(oConvertUtils.isNotEmpty(idExistBh.getRollclubthreeNum()) ? idExistBh.getRollclubthreeNum() + groupRollClubCommonList.size() : groupRollClubCommonList.size());
             }else if ("roll_out_shipp".equals(loadingParams.getDestinationTable())){
                 billetHotsend.setRolloutshippNum(oConvertUtils.isNotEmpty(idExistBh.getRolloutshippNum()) ? idExistBh.getRolloutshippNum() + groupRollClubCommonList.size() : groupRollClubCommonList.size());
+            }else if ("roll_deputy_cross".equals(loadingParams.getDestinationTable())){
+                billetHotsend.setRollDeputyCrossNum(oConvertUtils.isNotEmpty(idExistBh.getRollDeputyCrossNum()) ? idExistBh.getRollDeputyCrossNum() + groupRollClubCommonList.size() : groupRollClubCommonList.size());
             }
             billetHotsend.setUpdateTime(new Date());
             billetHotsendBaseService.updateById(billetHotsend);
@@ -489,6 +499,8 @@ public class StackingAndLoadingVehiclesServiceImpl extends ServiceImpl<StackingA
                 x.setBelongTable("roll_out_shipp");
             }else if ("billet_auto_tmp".equals(loadingParams.getBelongTable())){
                 x.setBelongTable("billet_auto_tmp");
+            }else if ("roll_deputy_cross".equals(loadingParams.getBelongTable())){
+                x.setBelongTable("roll_deputy_cross");
             }
             x.setBhtcId(loadingParams.getBilletHotsendTypeConfigId());
             x.setUpdateTime(new Date());
@@ -691,6 +703,7 @@ public class StackingAndLoadingVehiclesServiceImpl extends ServiceImpl<StackingA
         List<RollClubTwoDetails> addRollClubTwoDetailsList = new ArrayList<>();
         List<RollClubThreeDetails> addRollClubThreeDetailsList = new ArrayList<>();
         List<RollOutShippDetails> addRollOutShippDetailsList = new ArrayList<>();
+        List<RollDeputyCrossDetails> addRollDeputyCrossDetailsList = new ArrayList<>();
         List<BilletAutoTmp> billetAutoTmpList = new ArrayList<>();
         stackingAndLoadingVehiclesList.forEach(x ->{
             StackingDownLog stackingDownLog = new StackingDownLog();
@@ -911,6 +924,63 @@ public class StackingAndLoadingVehiclesServiceImpl extends ServiceImpl<StackingA
                         .collect(Collectors.joining(","));
                 rollOutShippDetails.setAssemblyNumber(distinctAssemblyNumber);
                 addRollOutShippDetailsList.add(rollOutShippDetails);
+            }else if ("roll_deputy_cross".equals(loadingParams.getDestinationTable())) {
+                billetBasicInfoList.forEach(y -> {
+                    LambdaQueryWrapper<RollDeputyCross> queryWrapper1 = new LambdaQueryWrapper<>();
+                    queryWrapper1.eq(RollDeputyCross::getCcmNo, y.getCcmNo().toString())
+                            .eq(RollDeputyCross::getHeatNo, y.getHeatNo())
+                            .eq(RollDeputyCross::getShift, y.getShift())
+                            .eq(RollDeputyCross::getShiftGroup, y.getShiftGroup())
+                            .eq(RollDeputyCross::getStorageBillId, storageBill.getId());
+                    RollDeputyCross rollDeputyCross1 = rollDeputyCrossService.getOne(queryWrapper1);
+                    if (oConvertUtils.isEmpty(rollDeputyCross1)) {
+                        RollDeputyCross rollDeputyCross = new RollDeputyCross();
+                        // 堆垛保存发车时 目的地为为副跨 保存副跨信息
+                        rollDeputyCross.setId(String.valueOf(IdWorker.getId()));
+                        rollDeputyCross.setCcmNo(y.getCcmNo().toString());
+                        rollDeputyCross.setHeatNo(y.getHeatNo());
+                        rollDeputyCross.setSize(y.getLength().toString());
+                        rollDeputyCross.setAmountTotal(1);
+                        rollDeputyCross.setSteel(y.getGrade());
+                        rollDeputyCross.setSpec(y.getSpec());
+                        rollDeputyCross.setShiftGroup(y.getShiftGroup());
+                        rollDeputyCross.setShift(y.getShift());
+                        rollDeputyCross.setBlankOutput(oConvertUtils.isEmpty(y.getBilletWeight()) ? 0L : y.getBilletWeight());
+                        rollDeputyCross.setStorageBillId(storageBill.getId());
+                        rollDeputyCross.setCreateDate(new Date());
+                        rollDeputyCross.setCreateTime(new Date());
+                        rollDeputyCrossService.save(rollDeputyCross);
+                    } else {
+                        // 堆垛保存发车时 目的地为为副跨 更新副跨信息
+                        rollDeputyCross1.setAmountTotal(rollDeputyCross1.getAmountTotal() + 1);// 总支数
+                        rollDeputyCross1.setBlankOutput(rollDeputyCross1.getBlankOutput() + y.getBilletWeight());
+                        rollDeputyCross1.setUpdateTime(new Date());
+                        rollDeputyCrossService.updateById(rollDeputyCross1);
+                    }
+                });
+
+                RollDeputyCrossDetails rollDeputyCrossDetails = new RollDeputyCrossDetails();
+                BeanUtils.copyProperties(x, rollDeputyCrossDetails);
+                rollDeputyCrossDetails.setHeatNo(String.join(",", heatNos));
+                rollDeputyCrossDetails.setBilletNo(x.getBilletNos());
+                rollDeputyCrossDetails.setShiftGroup(billetBasicInfo.getShiftGroup());
+                rollDeputyCrossDetails.setShift(billetBasicInfo.getShift());
+                rollDeputyCrossDetails.setStorageBillId(storageBill.getId());
+                rollDeputyCrossDetails.setStackStorey(x.getLayer());
+                rollDeputyCrossDetails.setStackNum(x.getAddress());
+                rollDeputyCrossDetails.setLicensePlate(storageBill.getLicensePlate());
+                rollDeputyCrossDetails.setId(String.valueOf(IdWorker.getId()));
+                rollDeputyCrossDetails.setCreateTime(new Date());
+                rollDeputyCrossDetails.setUpdateTime(new Date());
+                rollDeputyCrossDetails.setBlankOutput(billetWeightTotal);//出坯量
+
+                String distinctAssemblyNumber = rollClubCommonList.stream()
+                        .map(RollClubCommon::getAssemblyNumber)
+                        .filter(assemblyNumber -> oConvertUtils.isNotEmpty(assemblyNumber))
+                        .distinct()
+                        .collect(Collectors.joining(","));
+                rollDeputyCrossDetails.setAssemblyNumber(distinctAssemblyNumber);
+                addRollDeputyCrossDetailsList.add(rollDeputyCrossDetails);
             }
             AtomicLong timeOffset = new AtomicLong(); // 初始时间偏移量,单位毫秒,可以根据实际需求调整每次的偏移量大小
             if ("billet_auto_tmp".equals(loadingParams.getDestinationTable())){
@@ -963,6 +1033,9 @@ public class StackingAndLoadingVehiclesServiceImpl extends ServiceImpl<StackingA
             billetAutoTmpService.saveBatch(billetAutoTmpList);
             // 更新交班表中的热送总支数
             updateShiftInfoByType(billetHotsend.getCcmNo(), billetHotsend.getShift(), billetHotsend.getShiftGroup(), billetAutoTmpList.size(), "hotCharge");
+        }else if ("roll_deputy_cross".equals(loadingParams.getDestinationTable())){
+            rollDeputyCrossDetailsService.saveBatch(addRollDeputyCrossDetailsList);
+            updateShiftInfoByType(billetHotsend.getCcmNo(), billetHotsend.getShift(), billetHotsend.getShiftGroup(), addRollDeputyCrossDetailsList.size(), "hotCharge");
         }
     }
 

+ 0 - 57
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/storageBill/service/impl/StorageBillServiceImpl.java

@@ -299,63 +299,6 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
         return uniqueCode;
     }
 
-    /**
-     * 计算 本车车次
-     * @param ccmNo
-     * @param licensePlate
-     * @param shiftGroup
-     * @param shift
-     * @return
-     */
-    private int calculateCarNum(String ccmNo, String licensePlate, String shiftGroup, String shift) {
-        LambdaQueryWrapper<StorageBill> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(StorageBill::getCcmNo, ccmNo)
-                .eq(StorageBill::getLicensePlate, licensePlate)
-                .eq(StorageBill::getShiftGroup, shiftGroup)
-                .eq(StorageBill::getShift, shift)
-                .between(StorageBill::getCreateTime, DateUtils.getStartOfDay(), DateUtils.getEndOfDay());
-        return Math.toIntExact(baseMapper.selectCount(queryWrapper));
-    }
-
-    /**
-     * 计算 车次总序号
-     * @param ccmNo
-     * @param shiftGroup
-     * @param shift
-     * @return
-     */
-    private int calculateCarAllNum(String ccmNo, String shiftGroup, String shift) {
-        LambdaQueryWrapper<StorageBill> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(StorageBill::getCcmNo, ccmNo)
-                .eq(StorageBill::getShiftGroup, shiftGroup)
-                .eq(StorageBill::getShift, shift)
-                .between(StorageBill::getCreateTime, DateUtils.getStartOfDay(), DateUtils.getEndOfDay());
-        return Math.toIntExact(baseMapper.selectCount(queryWrapper));
-    }
-
-    /**
-     * 更新交班记录
-     * @param ccmNo
-     * @param shiftGroup
-     * @param shift
-     */
-    private void updateBilletHotsendChangeShift(String ccmNo, String shiftGroup, String shift) {
-        LambdaQueryWrapper<BilletHotsendChangeShift> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(BilletHotsendChangeShift::getCcmNo, ccmNo)
-                .eq(BilletHotsendChangeShift::getShiftGroup, shiftGroup)
-                .eq(BilletHotsendChangeShift::getShift, shift)
-                .isNull(BilletHotsendChangeShift::getChangeShiftTime)
-                .orderByDesc(BilletHotsendChangeShift::getCreateTime)
-                .last("limit 1");
-        BilletHotsendChangeShift billetHotsendChangeShift = billetHotsendChangeShiftService.getOne(queryWrapper);
-        if (oConvertUtils.isEmpty(billetHotsendChangeShift)) {
-            log.info("自动化创建装运单时,交班记录不存在,车次数维护失败:{}", ccmNo+shiftGroup+shift);
-            return;
-        }
-        billetHotsendChangeShift.setOutCarNum(billetHotsendChangeShift.getOutCarNum() + 1);
-        billetHotsendChangeShiftService.updateById(billetHotsendChangeShift);
-    }
-
     /**
      * 创建操作日志
      * @param storageBill