Browse Source

新增储运配置相关内容以及编辑时记录相应的操作日志

lingpeng.li 3 months ago
parent
commit
d9bc0b6e33
15 changed files with 886 additions and 27 deletions
  1. 258 0
      zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/controller/ShiftConfigurationController.java
  2. 163 0
      zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/controller/ShiftConfigurationLogController.java
  3. 115 0
      zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/entity/ShiftConfiguration.java
  4. 99 0
      zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/entity/ShiftConfigurationLog.java
  5. 14 0
      zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/mapper/ShiftConfigurationLogMapper.java
  6. 14 0
      zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/mapper/ShiftConfigurationMapper.java
  7. 5 0
      zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/mapper/xml/ShiftConfigurationLogMapper.xml
  8. 5 0
      zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/mapper/xml/ShiftConfigurationMapper.xml
  9. 14 0
      zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/service/IShiftConfigurationLogService.java
  10. 14 0
      zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/service/IShiftConfigurationService.java
  11. 19 0
      zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/service/impl/ShiftConfigurationLogServiceImpl.java
  12. 19 0
      zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/service/impl/ShiftConfigurationServiceImpl.java
  13. 7 0
      zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/entity/StorageBill.java
  14. 130 27
      zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/service/impl/StorageBillServiceImpl.java
  15. 10 0
      zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/vo/StorageCenterHeatNoInvoicingVO.java

+ 258 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/controller/ShiftConfigurationController.java

@@ -0,0 +1,258 @@
+package org.jeecg.modules.billet.shiftConfiguration.controller;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.billet.shiftConfiguration.entity.ShiftConfiguration;
+import org.jeecg.modules.billet.shiftConfiguration.entity.ShiftConfigurationLog;
+import org.jeecg.modules.billet.shiftConfiguration.service.IShiftConfigurationLogService;
+import org.jeecg.modules.billet.shiftConfiguration.service.IShiftConfigurationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description: 班次配置
+ * @Author: jeecg-boot
+ * @Date: 2025-04-17
+ * @Version: V1.0
+ */
+@Api(tags = "班次配置")
+@RestController
+@RequestMapping("/shiftConfiguration/shiftConfiguration")
+@Slf4j
+public class ShiftConfigurationController extends JeecgController<ShiftConfiguration, IShiftConfigurationService> {
+    @Autowired
+    private IShiftConfigurationService shiftConfigurationService;
+    @Autowired
+    private IShiftConfigurationLogService shiftConfigurationLogService;
+    @Autowired
+    public RedisTemplate redisTemplate;
+
+    /**
+     * 分页列表查询
+     *
+     * @param shiftConfiguration
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    //@AutoLog(value = "班次配置-分页列表查询")
+    @ApiOperation(value = "班次配置-分页列表查询", notes = "班次配置-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<ShiftConfiguration>> queryPageList(ShiftConfiguration shiftConfiguration,
+                                                           @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                           @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                           HttpServletRequest req) {
+        QueryWrapper<ShiftConfiguration> queryWrapper = QueryGenerator.initQueryWrapper(shiftConfiguration, req.getParameterMap());
+        Page<ShiftConfiguration> page = new Page<ShiftConfiguration>(pageNo, pageSize);
+        IPage<ShiftConfiguration> pageList = shiftConfigurationService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
+
+    /**
+     * 添加
+     *
+     * @param shiftConfiguration
+     * @return
+     */
+    @AutoLog(value = "班次配置-添加")
+    @ApiOperation(value = "班次配置-添加", notes = "班次配置-添加")
+    @RequiresPermissions("shiftConfiguration:shift_configuration:add")
+    @PostMapping(value = "/add")
+    public Result<String> add(@RequestBody ShiftConfiguration shiftConfiguration) {
+
+        // 参数校验
+        if (shiftConfiguration.getDate() == null ||
+                StrUtil.isBlank(shiftConfiguration.getShift()) ||
+                StrUtil.isBlank(shiftConfiguration.getShiftGroup())) {
+            return Result.error("班次日期、班别、班组不能为空!");
+        }
+
+        Date shiftDate = shiftConfiguration.getDate();
+        String shift = shiftConfiguration.getShift();
+        String shiftGroup = shiftConfiguration.getShiftGroup();
+
+        // 日期只保留年月日
+        LocalDate localDate = shiftDate.toInstant()
+                .atZone(ZoneId.systemDefault())
+                .toLocalDate();
+
+        // 构造当天 00:00:00 和 23:59:59 范围
+        LocalDateTime startOfDay = localDate.atStartOfDay();
+        LocalDateTime endOfDay = localDate.atTime(LocalTime.MAX);
+
+        Date start = Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());
+        Date end = Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
+
+        // 查询同一天相同班组和班别是否存在
+        LambdaQueryWrapper<ShiftConfiguration> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.between(ShiftConfiguration::getDate, start, end)
+                .eq(ShiftConfiguration::getShift, shift)
+                .eq(ShiftConfiguration::getShiftGroup, shiftGroup);
+
+        boolean exists = shiftConfigurationService.count(queryWrapper) > 0;
+        if (exists) {
+            return Result.error("该班别和班组在当天已存在,不能重复添加!");
+        }
+
+        shiftConfigurationService.save(shiftConfiguration);
+        return Result.OK("添加成功!");
+    }
+
+    /**
+     * 编辑
+     *
+     * @param shiftConfiguration
+     * @return
+     */
+    @AutoLog(value = "班次配置-编辑")
+    @ApiOperation(value = "班次配置-编辑", notes = "班次配置-编辑")
+    @RequiresPermissions("shiftConfiguration:shift_configuration:edit")
+    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
+    public Result<String> edit(@RequestBody ShiftConfiguration shiftConfiguration) {
+        // 获取当前用户
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String username = sysUser.getUsername();
+
+        // 查询原数据用于对比
+        ShiftConfiguration oldConfig = shiftConfigurationService.getById(shiftConfiguration.getId());
+
+        shiftConfigurationService.updateById(shiftConfiguration);
+
+        // 构造变更内容
+        String content = String.format("编辑储运配置[id=%s],原值:%s,新值:%s",
+                shiftConfiguration.getId(),
+                oldConfig.toString(),
+                shiftConfiguration.toString());
+
+        // 保存操作日志
+        ShiftConfigurationLog log = new ShiftConfigurationLog();
+        log.setOperationUser(username);
+        log.setOperationTime(new Date());
+        log.setOperationType("编辑");
+        log.setOperationContent(content);
+        log.setBizId(shiftConfiguration.getId());
+        shiftConfigurationLogService.save(log);
+        return Result.OK("编辑成功!");
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "班次配置-通过id删除")
+    @ApiOperation(value = "班次配置-通过id删除", notes = "班次配置-通过id删除")
+    @RequiresPermissions("shiftConfiguration:shift_configuration:delete")
+    @DeleteMapping(value = "/delete")
+    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
+        shiftConfigurationService.removeById(id);
+        return Result.OK("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "班次配置-批量删除")
+    @ApiOperation(value = "班次配置-批量删除", notes = "班次配置-批量删除")
+    @RequiresPermissions("shiftConfiguration:shift_configuration:deleteBatch")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        this.shiftConfigurationService.removeByIds(Arrays.asList(ids.split(",")));
+        return Result.OK("批量删除成功!");
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    //@AutoLog(value = "班次配置-通过id查询")
+    @ApiOperation(value = "班次配置-通过id查询", notes = "班次配置-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<ShiftConfiguration> queryById(@RequestParam(name = "id", required = true) String id) {
+        ShiftConfiguration shiftConfiguration = shiftConfigurationService.getById(id);
+        if (shiftConfiguration == null) {
+            return Result.error("未找到对应数据");
+        }
+        return Result.OK(shiftConfiguration);
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param shiftConfiguration
+     */
+    @RequiresPermissions("shiftConfiguration:shift_configuration:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, ShiftConfiguration shiftConfiguration) {
+        return super.exportXls(request, shiftConfiguration, ShiftConfiguration.class, "班次配置");
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequiresPermissions("shiftConfiguration:shift_configuration:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, ShiftConfiguration.class);
+    }
+
+    @GetMapping("/getShiftInfo")
+    @ApiOperation(value = "获取当前班组班别", notes = "获取当前班组班别")
+    public Result<Map<String, String>> getShiftInfo() {
+        String shiftGroup = getShiftInfoFromRedis("5", "class:shift:group:%s");
+        String shift = getShiftInfoFromRedis("5", "class:shift:%s");
+
+        Map<String, String> result = new HashMap<>();
+        result.put("shiftGroup", shiftGroup);
+        result.put("shift", shift);
+
+        return Result.OK(result);
+    }
+
+    private String getShiftInfoFromRedis(String castingNo, String keyPattern) {
+        String key = String.format(keyPattern, castingNo);
+        return oConvertUtils.getString(redisTemplate.opsForValue().get(key));
+    }
+
+
+}

+ 163 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/controller/ShiftConfigurationLogController.java

@@ -0,0 +1,163 @@
+package org.jeecg.modules.billet.shiftConfiguration.controller;
+
+import java.util.Arrays;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.billet.shiftConfiguration.entity.ShiftConfigurationLog;
+import org.jeecg.modules.billet.shiftConfiguration.service.IShiftConfigurationLogService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: 班次配置日志
+ * @Author: jeecg-boot
+ * @Date:   2025-04-17
+ * @Version: V1.0
+ */
+@Api(tags="班次配置日志")
+@RestController
+@RequestMapping("/shiftConfiguration/shiftConfigurationLog")
+@Slf4j
+public class ShiftConfigurationLogController extends JeecgController<ShiftConfigurationLog, IShiftConfigurationLogService> {
+	@Autowired
+	private IShiftConfigurationLogService shiftConfigurationLogService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param shiftConfigurationLog
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "班次配置日志-分页列表查询")
+	@ApiOperation(value="班次配置日志-分页列表查询", notes="班次配置日志-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<ShiftConfigurationLog>> queryPageList(ShiftConfigurationLog shiftConfigurationLog,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<ShiftConfigurationLog> queryWrapper = QueryGenerator.initQueryWrapper(shiftConfigurationLog, req.getParameterMap());
+		Page<ShiftConfigurationLog> page = new Page<ShiftConfigurationLog>(pageNo, pageSize);
+		IPage<ShiftConfigurationLog> pageList = shiftConfigurationLogService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param shiftConfigurationLog
+	 * @return
+	 */
+	@AutoLog(value = "班次配置日志-添加")
+	@ApiOperation(value="班次配置日志-添加", notes="班次配置日志-添加")
+	@RequiresPermissions("shiftConfiguration:shift_configuration_log:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody ShiftConfigurationLog shiftConfigurationLog) {
+		shiftConfigurationLogService.save(shiftConfigurationLog);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param shiftConfigurationLog
+	 * @return
+	 */
+	@AutoLog(value = "班次配置日志-编辑")
+	@ApiOperation(value="班次配置日志-编辑", notes="班次配置日志-编辑")
+	@RequiresPermissions("shiftConfiguration:shift_configuration_log:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody ShiftConfigurationLog shiftConfigurationLog) {
+		shiftConfigurationLogService.updateById(shiftConfigurationLog);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "班次配置日志-通过id删除")
+	@ApiOperation(value="班次配置日志-通过id删除", notes="班次配置日志-通过id删除")
+	@RequiresPermissions("shiftConfiguration:shift_configuration_log:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		shiftConfigurationLogService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "班次配置日志-批量删除")
+	@ApiOperation(value="班次配置日志-批量删除", notes="班次配置日志-批量删除")
+	@RequiresPermissions("shiftConfiguration:shift_configuration_log:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.shiftConfigurationLogService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "班次配置日志-通过id查询")
+	@ApiOperation(value="班次配置日志-通过id查询", notes="班次配置日志-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<ShiftConfigurationLog> queryById(@RequestParam(name="id",required=true) String id) {
+		ShiftConfigurationLog shiftConfigurationLog = shiftConfigurationLogService.getById(id);
+		if(shiftConfigurationLog==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(shiftConfigurationLog);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param shiftConfigurationLog
+    */
+    @RequiresPermissions("shiftConfiguration:shift_configuration_log:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, ShiftConfigurationLog shiftConfigurationLog) {
+        return super.exportXls(request, shiftConfigurationLog, ShiftConfigurationLog.class, "班次配置日志");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("shiftConfiguration:shift_configuration_log:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, ShiftConfigurationLog.class);
+    }
+
+}

+ 115 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/entity/ShiftConfiguration.java

@@ -0,0 +1,115 @@
+package org.jeecg.modules.billet.shiftConfiguration.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 班次配置
+ * @Author: jeecg-boot
+ * @Date: 2025-04-17
+ * @Version: V1.0
+ */
+@Data
+@TableName("shift_configuration")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "shift_configuration对象", description = "班次配置")
+public class ShiftConfiguration implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    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, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "日期")
+    private Date date;
+    /**
+     * 铸机号
+     */
+    @Excel(name = "铸机号", width = 15)
+    @ApiModelProperty(value = "铸机号")
+    private String ccmNo;
+    /**
+     * 班别
+     */
+    @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 steelGrade;
+    /**
+     * 定尺规格
+     */
+    @Excel(name = "定尺规格", width = 15)
+    @ApiModelProperty(value = "定尺规格")
+    private String spec;
+    /**
+     * 目的地
+     */
+    @Excel(name = "目的地", width = 15)
+    @ApiModelProperty(value = "目的地")
+    private String destination;
+
+    @Excel(name = "新站台or旧站台", width = 15)
+    @ApiModelProperty(value = "新站台or旧站台(0 新站台 1 旧站台)")
+    private Integer newOldPlatform;
+}

+ 99 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/entity/ShiftConfigurationLog.java

@@ -0,0 +1,99 @@
+package org.jeecg.modules.billet.shiftConfiguration.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 班次配置日志
+ * @Author: jeecg-boot
+ * @Date: 2025-04-17
+ * @Version: V1.0
+ */
+@Data
+@TableName("shift_configuration_log")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "shift_configuration_log对象", description = "班次配置日志")
+public class ShiftConfigurationLog implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    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 operationUser;
+    /**
+     * 操作时间
+     */
+    @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 operationTime;
+    /**
+     * 操作类型
+     */
+    @Excel(name = "操作类型", width = 15)
+    @ApiModelProperty(value = "操作类型")
+    private String operationType;
+    /**
+     * 操作内容描述
+     */
+    @Excel(name = "操作内容描述", width = 15)
+    @ApiModelProperty(value = "操作内容描述")
+    private String operationContent;
+    /**
+     * 业务记录主键
+     */
+    @Excel(name = "业务记录主键", width = 15)
+    @ApiModelProperty(value = "业务记录主键")
+    private String bizId;
+}

+ 14 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/mapper/ShiftConfigurationLogMapper.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.billet.shiftConfiguration.mapper;
+
+import org.jeecg.modules.billet.shiftConfiguration.entity.ShiftConfigurationLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 班次配置日志
+ * @Author: jeecg-boot
+ * @Date:   2025-04-17
+ * @Version: V1.0
+ */
+public interface ShiftConfigurationLogMapper extends BaseMapper<ShiftConfigurationLog> {
+
+}

+ 14 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/mapper/ShiftConfigurationMapper.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.billet.shiftConfiguration.mapper;
+
+import org.jeecg.modules.billet.shiftConfiguration.entity.ShiftConfiguration;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 班次配置
+ * @Author: jeecg-boot
+ * @Date:   2025-04-17
+ * @Version: V1.0
+ */
+public interface ShiftConfigurationMapper extends BaseMapper<ShiftConfiguration> {
+
+}

+ 5 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/mapper/xml/ShiftConfigurationLogMapper.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.billet.shiftConfiguration.mapper.ShiftConfigurationLogMapper">
+
+</mapper>

+ 5 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/mapper/xml/ShiftConfigurationMapper.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.billet.shiftConfiguration.mapper.ShiftConfigurationMapper">
+
+</mapper>

+ 14 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/service/IShiftConfigurationLogService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.billet.shiftConfiguration.service;
+
+import org.jeecg.modules.billet.shiftConfiguration.entity.ShiftConfigurationLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 班次配置日志
+ * @Author: jeecg-boot
+ * @Date:   2025-04-17
+ * @Version: V1.0
+ */
+public interface IShiftConfigurationLogService extends IService<ShiftConfigurationLog> {
+
+}

+ 14 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/service/IShiftConfigurationService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.billet.shiftConfiguration.service;
+
+import org.jeecg.modules.billet.shiftConfiguration.entity.ShiftConfiguration;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 班次配置
+ * @Author: jeecg-boot
+ * @Date:   2025-04-17
+ * @Version: V1.0
+ */
+public interface IShiftConfigurationService extends IService<ShiftConfiguration> {
+
+}

+ 19 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/service/impl/ShiftConfigurationLogServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.billet.shiftConfiguration.service.impl;
+
+import org.jeecg.modules.billet.shiftConfiguration.entity.ShiftConfigurationLog;
+import org.jeecg.modules.billet.shiftConfiguration.mapper.ShiftConfigurationLogMapper;
+import org.jeecg.modules.billet.shiftConfiguration.service.IShiftConfigurationLogService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 班次配置日志
+ * @Author: jeecg-boot
+ * @Date:   2025-04-17
+ * @Version: V1.0
+ */
+@Service
+public class ShiftConfigurationLogServiceImpl extends ServiceImpl<ShiftConfigurationLogMapper, ShiftConfigurationLog> implements IShiftConfigurationLogService {
+
+}

+ 19 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/shiftConfiguration/service/impl/ShiftConfigurationServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.billet.shiftConfiguration.service.impl;
+
+import org.jeecg.modules.billet.shiftConfiguration.entity.ShiftConfiguration;
+import org.jeecg.modules.billet.shiftConfiguration.mapper.ShiftConfigurationMapper;
+import org.jeecg.modules.billet.shiftConfiguration.service.IShiftConfigurationService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 班次配置
+ * @Author: jeecg-boot
+ * @Date:   2025-04-17
+ * @Version: V1.0
+ */
+@Service
+public class ShiftConfigurationServiceImpl extends ServiceImpl<ShiftConfigurationMapper, ShiftConfiguration> implements IShiftConfigurationService {
+
+}

+ 7 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/entity/StorageBill.java

@@ -173,4 +173,11 @@ public class StorageBill implements Serializable {
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "炼钢到达时间")
     @ApiModelProperty(value = "炼钢到达时间")
     private Date steelReachTime;
     private Date steelReachTime;
+
+    /**
+     * 牌号
+     */
+    @Excel(name = "牌号", width = 15)
+    @ApiModelProperty(value = "牌号")
+    private String brandNum;
 }
 }

+ 130 - 27
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/service/impl/StorageBillServiceImpl.java

@@ -5104,21 +5104,48 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
                         .map(Map.Entry::getValue)
                         .map(Map.Entry::getValue)
                         .collect(Collectors.toList());
                         .collect(Collectors.toList());
 
 
-                String licensePlate = matchedStorageBills.stream()
-                        .map(StorageBill::getLicensePlate)
-                        .findFirst()
+                String licensePlate = Optional.ofNullable(matchedStorageBills)
+                        .filter(list1 -> !list1.isEmpty())
+                        .flatMap(list1 -> list1.stream()
+                                .map(StorageBill::getLicensePlate)
+                                .filter(Objects::nonNull)
+                                .findFirst())
                         .orElse("未知车牌");
                         .orElse("未知车牌");
 
 
-                String btype = matchedStorageBills.stream()
-                        .map(StorageBill::getBtype)
-                        .findFirst()
+                String btype = Optional.ofNullable(matchedStorageBills)
+                        .filter(list2 -> !list2.isEmpty())
+                        .flatMap(list2 -> list2.stream()
+                                .map(StorageBill::getBtype)
+                                .filter(Objects::nonNull)
+                                .findFirst())
                         .orElse("未知类型");
                         .orElse("未知类型");
 
 
-                Date createTime = matchedStorageBills.stream()
-                        .map(StorageBill::getCreateTime)
-                        .findFirst()
+                String brandNum = Optional.ofNullable(matchedStorageBills)
+                        .filter(list3 -> !list3.isEmpty())
+                        .flatMap(list3 -> list3.stream()
+                                .map(StorageBill::getBrandNum)
+                                .filter(Objects::nonNull)
+                                .findFirst())
+                        .orElse("");
+
+
+                Integer carNum = Optional.ofNullable(matchedStorageBills)
+                        .filter(list4 -> !list4.isEmpty())
+                        .flatMap(list4 -> list4.stream()
+                                .map(StorageBill::getCarNum)
+                                .filter(Objects::nonNull)
+                                .findFirst())
+                        .orElse(1);
+
+                Date createTime = Optional.ofNullable(matchedStorageBills)
+                        .filter(list5 -> !list5.isEmpty())
+                        .flatMap(list5 -> list5.stream()
+                                .map(StorageBill::getCreateTime)
+                                .filter(Objects::nonNull)
+                                .findFirst())
                         .orElse(new Date());
                         .orElse(new Date());
 
 
+
                 StorageCenterHeatNoInvoicingVO.RollChargeDetail rollChargeDetail = new StorageCenterHeatNoInvoicingVO.RollChargeDetail();
                 StorageCenterHeatNoInvoicingVO.RollChargeDetail rollChargeDetail = new StorageCenterHeatNoInvoicingVO.RollChargeDetail();
                 rollChargeDetail.setSize(size);
                 rollChargeDetail.setSize(size);
                 rollChargeDetail.setSpec(spec);
                 rollChargeDetail.setSpec(spec);
@@ -5126,6 +5153,9 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
                 rollChargeDetail.setAmount(billets.size());
                 rollChargeDetail.setAmount(billets.size());
                 rollChargeDetail.setLicensePlate(licensePlate);
                 rollChargeDetail.setLicensePlate(licensePlate);
                 rollChargeDetail.setBtype(btype);
                 rollChargeDetail.setBtype(btype);
+                rollChargeDetail.setHeatNo(heatNo);
+                rollChargeDetail.setCarNum(carNum);
+                rollChargeDetail.setBrandNum(brandNum);
                 rollChargeDetail.setCreateTime(createTime);
                 rollChargeDetail.setCreateTime(createTime);
 
 
                 rollChargeDetails.add(rollChargeDetail);
                 rollChargeDetails.add(rollChargeDetail);
@@ -5143,6 +5173,9 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
                                 newDetail.setAmount(detail.getAmount());
                                 newDetail.setAmount(detail.getAmount());
                                 newDetail.setLicensePlate(detail.getLicensePlate());
                                 newDetail.setLicensePlate(detail.getLicensePlate());
                                 newDetail.setBtype(detail.getBtype());
                                 newDetail.setBtype(detail.getBtype());
+                                newDetail.setHeatNo(detail.getHeatNo());
+                                newDetail.setCarNum(detail.getCarNum());
+                                newDetail.setBrandNum(detail.getBrandNum());
                                 newDetail.setCreateTime(detail.getCreateTime());
                                 newDetail.setCreateTime(detail.getCreateTime());
                                 return newDetail;
                                 return newDetail;
                             },
                             },
@@ -5155,6 +5188,8 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
 
 
             // 转换为 List 并赋值
             // 转换为 List 并赋值
             List<StorageCenterHeatNoInvoicingVO.RollChargeDetail> mergedRollChargeDetails = new ArrayList<>(groupedByLicensePlate.values());
             List<StorageCenterHeatNoInvoicingVO.RollChargeDetail> mergedRollChargeDetails = new ArrayList<>(groupedByLicensePlate.values());
+            mergedRollChargeDetails.sort(Comparator.comparing(StorageCenterHeatNoInvoicingVO.RollChargeDetail::getCarNum));
+
 
 
             rollTwoHeatNo.setRollChargeDetails(mergedRollChargeDetails);
             rollTwoHeatNo.setRollChargeDetails(mergedRollChargeDetails);
             rollTwoHeatNo.setSizeDetails(sizeDetailsList);
             rollTwoHeatNo.setSizeDetails(sizeDetailsList);
@@ -5260,19 +5295,46 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
                         .map(Map.Entry::getValue)
                         .map(Map.Entry::getValue)
                         .collect(Collectors.toList());
                         .collect(Collectors.toList());
 
 
-                String licensePlate = matchedStorageBills.stream()
-                        .map(StorageBill::getLicensePlate)
-                        .findFirst()
+
+                String licensePlate = Optional.ofNullable(matchedStorageBills)
+                        .filter(list1 -> !list1.isEmpty())
+                        .flatMap(list1 -> list1.stream()
+                                .map(StorageBill::getLicensePlate)
+                                .filter(Objects::nonNull)
+                                .findFirst())
                         .orElse("未知车牌");
                         .orElse("未知车牌");
 
 
-                String btype = matchedStorageBills.stream()
-                        .map(StorageBill::getBtype)
-                        .findFirst()
+                String btype = Optional.ofNullable(matchedStorageBills)
+                        .filter(list2 -> !list2.isEmpty())
+                        .flatMap(list2 -> list2.stream()
+                                .map(StorageBill::getBtype)
+                                .filter(Objects::nonNull)
+                                .findFirst())
                         .orElse("未知类型");
                         .orElse("未知类型");
 
 
-                Date createTime = matchedStorageBills.stream()
-                        .map(StorageBill::getCreateTime)
-                        .findFirst()
+                String brandNum = Optional.ofNullable(matchedStorageBills)
+                        .filter(list3 -> !list3.isEmpty())
+                        .flatMap(list3 -> list3.stream()
+                                .map(StorageBill::getBrandNum)
+                                .filter(Objects::nonNull)
+                                .findFirst())
+                        .orElse("");
+
+
+                Integer carNum = Optional.ofNullable(matchedStorageBills)
+                        .filter(list4 -> !list4.isEmpty())
+                        .flatMap(list4 -> list4.stream()
+                                .map(StorageBill::getCarNum)
+                                .filter(Objects::nonNull)
+                                .findFirst())
+                        .orElse(1);
+
+                Date createTime = Optional.ofNullable(matchedStorageBills)
+                        .filter(list5 -> !list5.isEmpty())
+                        .flatMap(list5 -> list5.stream()
+                                .map(StorageBill::getCreateTime)
+                                .filter(Objects::nonNull)
+                                .findFirst())
                         .orElse(new Date());
                         .orElse(new Date());
 
 
                 StorageCenterHeatNoInvoicingVO.RollChargeDetail rollChargeDetail = new StorageCenterHeatNoInvoicingVO.RollChargeDetail();
                 StorageCenterHeatNoInvoicingVO.RollChargeDetail rollChargeDetail = new StorageCenterHeatNoInvoicingVO.RollChargeDetail();
@@ -5282,6 +5344,9 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
                 rollChargeDetail.setAmount(billets.size());
                 rollChargeDetail.setAmount(billets.size());
                 rollChargeDetail.setLicensePlate(licensePlate);
                 rollChargeDetail.setLicensePlate(licensePlate);
                 rollChargeDetail.setBtype(btype);
                 rollChargeDetail.setBtype(btype);
+                rollChargeDetail.setHeatNo(heatNo);
+                rollChargeDetail.setCarNum(carNum);
+                rollChargeDetail.setBrandNum(brandNum);
                 rollChargeDetail.setCreateTime(createTime);
                 rollChargeDetail.setCreateTime(createTime);
 
 
                 rollChargeDetails.add(rollChargeDetail);
                 rollChargeDetails.add(rollChargeDetail);
@@ -5299,6 +5364,9 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
                                 newDetail.setAmount(detail.getAmount());
                                 newDetail.setAmount(detail.getAmount());
                                 newDetail.setLicensePlate(detail.getLicensePlate());
                                 newDetail.setLicensePlate(detail.getLicensePlate());
                                 newDetail.setBtype(detail.getBtype());
                                 newDetail.setBtype(detail.getBtype());
+                                newDetail.setHeatNo(detail.getHeatNo());
+                                newDetail.setCarNum(detail.getCarNum());
+                                newDetail.setBrandNum(detail.getBrandNum());
                                 newDetail.setCreateTime(detail.getCreateTime());
                                 newDetail.setCreateTime(detail.getCreateTime());
                                 return newDetail;
                                 return newDetail;
                             },
                             },
@@ -5311,6 +5379,7 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
 
 
             // 转换为 List 并赋值
             // 转换为 List 并赋值
             List<StorageCenterHeatNoInvoicingVO.RollChargeDetail> mergedRollChargeDetails = new ArrayList<>(groupedByLicensePlate.values());
             List<StorageCenterHeatNoInvoicingVO.RollChargeDetail> mergedRollChargeDetails = new ArrayList<>(groupedByLicensePlate.values());
+            mergedRollChargeDetails.sort(Comparator.comparing(StorageCenterHeatNoInvoicingVO.RollChargeDetail::getCarNum));
 
 
             rollThreeHeatNo.setRollChargeDetails(mergedRollChargeDetails);
             rollThreeHeatNo.setRollChargeDetails(mergedRollChargeDetails);
             rollThreeHeatNo.setSizeDetails(sizeDetailsList);
             rollThreeHeatNo.setSizeDetails(sizeDetailsList);
@@ -5415,19 +5484,46 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
                         .map(Map.Entry::getValue)
                         .map(Map.Entry::getValue)
                         .collect(Collectors.toList());
                         .collect(Collectors.toList());
 
 
-                String licensePlate = matchedStorageBills.stream()
-                        .map(StorageBill::getLicensePlate)
-                        .findFirst()
+                String licensePlate = Optional.ofNullable(matchedStorageBills)
+                        .filter(list1 -> !list1.isEmpty())
+                        .flatMap(list1 -> list1.stream()
+                                .map(StorageBill::getLicensePlate)
+                                .filter(Objects::nonNull)
+                                .findFirst())
                         .orElse("未知车牌");
                         .orElse("未知车牌");
 
 
-                String btype = matchedStorageBills.stream()
-                        .map(StorageBill::getBtype)
-                        .findFirst()
+                String btype = Optional.ofNullable(matchedStorageBills)
+                        .filter(list2 -> !list2.isEmpty())
+                        .flatMap(list2 -> list2.stream()
+                                .map(StorageBill::getBtype)
+                                .filter(Objects::nonNull)
+                                .findFirst())
                         .orElse("未知类型");
                         .orElse("未知类型");
 
 
-                Date createTime = matchedStorageBills.stream()
-                        .map(StorageBill::getCreateTime)
-                        .findFirst()
+
+                String brandNum = Optional.ofNullable(matchedStorageBills)
+                        .filter(list3 -> !list3.isEmpty())
+                        .flatMap(list3 -> list3.stream()
+                                .map(StorageBill::getBrandNum)
+                                .filter(Objects::nonNull)
+                                .findFirst())
+                        .orElse("");
+
+
+                Integer carNum = Optional.ofNullable(matchedStorageBills)
+                        .filter(list4 -> !list4.isEmpty())
+                        .flatMap(list4 -> list4.stream()
+                                .map(StorageBill::getCarNum)
+                                .filter(Objects::nonNull)
+                                .findFirst())
+                        .orElse(1);
+
+                Date createTime = Optional.ofNullable(matchedStorageBills)
+                        .filter(list5 -> !list5.isEmpty())
+                        .flatMap(list5 -> list5.stream()
+                                .map(StorageBill::getCreateTime)
+                                .filter(Objects::nonNull)
+                                .findFirst())
                         .orElse(new Date());
                         .orElse(new Date());
 
 
                 StorageCenterHeatNoInvoicingVO.RollChargeDetail rollChargeDetail = new StorageCenterHeatNoInvoicingVO.RollChargeDetail();
                 StorageCenterHeatNoInvoicingVO.RollChargeDetail rollChargeDetail = new StorageCenterHeatNoInvoicingVO.RollChargeDetail();
@@ -5437,6 +5533,9 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
                 rollChargeDetail.setAmount(billets.size());
                 rollChargeDetail.setAmount(billets.size());
                 rollChargeDetail.setLicensePlate(licensePlate);
                 rollChargeDetail.setLicensePlate(licensePlate);
                 rollChargeDetail.setBtype(btype);
                 rollChargeDetail.setBtype(btype);
+                rollChargeDetail.setHeatNo(heatNo);
+                rollChargeDetail.setCarNum(carNum);
+                rollChargeDetail.setBrandNum(brandNum);
                 rollChargeDetail.setCreateTime(createTime);
                 rollChargeDetail.setCreateTime(createTime);
 
 
                 rollChargeDetails.add(rollChargeDetail);
                 rollChargeDetails.add(rollChargeDetail);
@@ -5454,6 +5553,9 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
                                 newDetail.setAmount(detail.getAmount());
                                 newDetail.setAmount(detail.getAmount());
                                 newDetail.setLicensePlate(detail.getLicensePlate());
                                 newDetail.setLicensePlate(detail.getLicensePlate());
                                 newDetail.setBtype(detail.getBtype());
                                 newDetail.setBtype(detail.getBtype());
+                                newDetail.setHeatNo(detail.getHeatNo());
+                                newDetail.setCarNum(detail.getCarNum());
+                                newDetail.setBrandNum(detail.getBrandNum());
                                 newDetail.setCreateTime(detail.getCreateTime());
                                 newDetail.setCreateTime(detail.getCreateTime());
                                 return newDetail;
                                 return newDetail;
                             },
                             },
@@ -5466,6 +5568,7 @@ public class StorageBillServiceImpl extends ServiceImpl<StorageBillMapper, Stora
 
 
             // 转换为 List 并赋值
             // 转换为 List 并赋值
             List<StorageCenterHeatNoInvoicingVO.RollChargeDetail> mergedRollChargeDetails = new ArrayList<>(groupedByLicensePlate.values());
             List<StorageCenterHeatNoInvoicingVO.RollChargeDetail> mergedRollChargeDetails = new ArrayList<>(groupedByLicensePlate.values());
+            mergedRollChargeDetails.sort(Comparator.comparing(StorageCenterHeatNoInvoicingVO.RollChargeDetail::getCarNum));
 
 
             rollOutHeatNo.setRollChargeDetails(mergedRollChargeDetails);
             rollOutHeatNo.setRollChargeDetails(mergedRollChargeDetails);
             rollOutHeatNo.setSizeDetails(sizeDetailsList);
             rollOutHeatNo.setSizeDetails(sizeDetailsList);

+ 10 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/billet/storageBill/vo/StorageCenterHeatNoInvoicingVO.java

@@ -3,6 +3,7 @@ package org.jeecg.modules.billet.storageBill.vo;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.format.annotation.DateTimeFormat;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
@@ -184,6 +185,15 @@ public class StorageCenterHeatNoInvoicingVO {
         @ApiModelProperty(value = "类型")
         @ApiModelProperty(value = "类型")
         private String btype;
         private String btype;
 
 
+        @ApiModelProperty(value = "当前炉号")
+        public String heatNo;
+
+        @ApiModelProperty(value = "本车车次")
+        private Integer carNum;
+
+        @ApiModelProperty(value = "牌号")
+        private String brandNum;
+
         @JsonFormat(timezone = "GMT+8", pattern = "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")
         @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
         @ApiModelProperty(value = "创建日期")
         @ApiModelProperty(value = "创建日期")