fenze 8 mesiacov pred
rodič
commit
a220fa8155
100 zmenil súbory, kde vykonal 7385 pridanie a 1 odobranie
  1. 1 1
      jeecg-boot-base-core/src/main/java/org/jeecg/config/WebSocketConfig.java
  2. 1 0
      jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
  3. 21 0
      jeecg-module-billet/pom.xml
  4. 155 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/billetActual/controller/BilletBasicInfosController.java
  5. 311 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/billetActual/entity/BilletBasicInfo.java
  6. 14 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/billetActual/mapper/BilletBasicInfosMapper.java
  7. 5 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/billetActual/mapper/xml/BilletBasicInfoMapper.xml
  8. 18 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/billetActual/service/IBilletBasicInfosService.java
  9. 44 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/billetActual/service/impl/BilletBasicInfosServiceImpl.java
  10. 172 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamActuals/controller/CastStreamActualsController.java
  11. 118 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamActuals/entity/CastStreamActuals.java
  12. 17 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamActuals/mapper/CastStreamActualsMapper.java
  13. 5 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamActuals/mapper/xml/CastStreamActualsMapper.xml
  14. 14 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamActuals/service/ICastStreamActualsService.java
  15. 19 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamActuals/service/impl/CastStreamActualsServiceImpl.java
  16. 172 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamTraceProductActual/controller/CastStreamTraceProductActualController.java
  17. 100 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamTraceProductActual/entity/CastStreamTraceProductActual.java
  18. 17 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamTraceProductActual/mapper/CastStreamTraceProductActualMapper.java
  19. 5 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamTraceProductActual/mapper/xml/CastStreamTraceProductActualMapper.xml
  20. 14 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamTraceProductActual/service/ICastStreamTraceProductActualService.java
  21. 19 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamTraceProductActual/service/impl/CastStreamTraceProductActualServiceImpl.java
  22. 171 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsActuals/controller/HeatsActualsController.java
  23. 264 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsActuals/entity/HeatsActuals.java
  24. 17 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsActuals/mapper/HeatsActualsMapper.java
  25. 5 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsActuals/mapper/xml/HeatsActualsMapper.xml
  26. 16 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsActuals/service/IHeatsActualsService.java
  27. 43 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsActuals/service/impl/HeatsActualsServiceImpl.java
  28. 261 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/controller/HeatsActualProductDescController.java
  29. 86 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/entity/HeatsActualProductDesc.java
  30. 171 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/entity/HeatsActualProductDescActual.java
  31. 31 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/mapper/HeatsActualProductDescActualMapper.java
  32. 17 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/mapper/HeatsActualProductDescMapper.java
  33. 16 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/mapper/xml/HeatsActualProductDescActualMapper.xml
  34. 5 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/mapper/xml/HeatsActualProductDescMapper.xml
  35. 22 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/service/IHeatsActualProductDescActualService.java
  36. 48 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/service/IHeatsActualProductDescService.java
  37. 27 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/service/impl/HeatsActualProductDescActualServiceImpl.java
  38. 77 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/service/impl/HeatsActualProductDescServiceImpl.java
  39. 86 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/vo/HeatsActualProductDescPage.java
  40. 157 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productLog/controller/HeatsActualProductLogController.java
  41. 79 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productLog/entity/HeatsActualProductLog.java
  42. 14 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productLog/mapper/HeatsActualProductLogMapper.java
  43. 5 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productLog/mapper/xml/HeatsActualProductLogMapper.xml
  44. 14 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productLog/service/IHeatsActualProductLogService.java
  45. 19 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productLog/service/impl/HeatsActualProductLogServiceImpl.java
  46. 243 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/controller/BilletHotsendBaseController.java
  47. 190 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/controller/RulerDefaultConfigController.java
  48. 322 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/entity/BilletHotsend.java
  49. 54 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/entity/RealtimeStats.java
  50. 182 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/entity/RulerDefaultConfig.java
  51. 14 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/mapper/BilletHotsendBaseMapper.java
  52. 17 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/mapper/RulerDefaultConfigMapper.java
  53. 5 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/mapper/xml/BilletHotsendBaseMapper.xml
  54. 5 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/mapper/xml/RulerDefaultConfigMapper.xml
  55. 21 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/service/IBilletHotsendBaseService.java
  56. 16 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/service/IRulerDefaultConfigService.java
  57. 187 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/service/impl/BilletHotsendBaseServiceImpl.java
  58. 32 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/service/impl/RulerDefaultConfigServiceImpl.java
  59. 183 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunLog/controller/CarRunLogController.java
  60. 82 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunLog/entity/CarRunLog.java
  61. 17 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunLog/mapper/CarRunLogMapper.java
  62. 5 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunLog/mapper/xml/CarRunLogMapper.xml
  63. 14 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunLog/service/ICarRunLogService.java
  64. 19 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunLog/service/impl/CarRunLogServiceImpl.java
  65. 188 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/controller/CarRunSummaryController.java
  66. 146 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/entity/CarRunSummary.java
  67. 17 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/mapper/CarRunSummaryMapper.java
  68. 5 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/mapper/xml/CarRunSummaryMapper.xml
  69. 14 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/service/ICarRunSummaryService.java
  70. 19 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/service/impl/CarRunSummaryServiceImpl.java
  71. 64 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/vue3/CarRunSummary.api.ts
  72. 251 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/vue3/CarRunSummary.data.ts
  73. 166 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/vue3/CarRunSummaryList.vue
  74. 26 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/vue3/CarRunSummary_menu_insert.sql
  75. 70 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/vue3/components/CarRunSummaryForm.vue
  76. 66 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/vue3/components/CarRunSummaryModal.vue
  77. 178 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/operateLog/controller/OperateLogController.java
  78. 88 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/operateLog/entity/OperateLog.java
  79. 17 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/operateLog/mapper/OperateLogMapper.java
  80. 5 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/operateLog/mapper/xml/OperateLogMapper.xml
  81. 18 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/operateLog/service/IOperateLogService.java
  82. 100 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/operateLog/service/impl/OperateLogServiceImpl.java
  83. 157 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubOne/controller/RollClubOneController.java
  84. 276 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubOne/entity/RollClubOne.java
  85. 17 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubOne/mapper/RollClubOneMapper.java
  86. 5 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubOne/mapper/xml/RollClubOneMapper.xml
  87. 18 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubOne/service/IRollClubOneService.java
  88. 19 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubOne/service/impl/RollClubOneServiceImpl.java
  89. 153 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubThree/controller/RollClubThreeController.java
  90. 276 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubThree/entity/RollClubThree.java
  91. 17 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubThree/mapper/RollClubThreeMapper.java
  92. 5 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubThree/mapper/xml/RollClubThreeMapper.xml
  93. 18 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubThree/service/IRollClubThreeService.java
  94. 18 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubThree/service/impl/RollClubThreeServiceImpl.java
  95. 135 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubTwo/controller/RollClubTwoController.java
  96. 276 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubTwo/entity/RollClubTwo.java
  97. 17 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubTwo/mapper/RollClubTwoMapper.java
  98. 5 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubTwo/mapper/xml/RollClubTwoMapper.xml
  99. 17 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubTwo/service/IRollClubTwoService.java
  100. 17 0
      jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubTwo/service/impl/RollClubTwoServiceImpl.java

+ 1 - 1
jeecg-boot-base-core/src/main/java/org/jeecg/config/WebSocketConfig.java

@@ -31,7 +31,7 @@ public class WebSocketConfig {
         FilterRegistrationBean bean = new FilterRegistrationBean();
         bean.setFilter(websocketFilter());
         //TODO 临时注释掉,测试下线上socket总断的问题
-        bean.addUrlPatterns("/taskCountSocket/*", "/websocket/*","/eoaSocket/*","/eoaNewChatSocket/*", "/newsWebsocket/*", "/vxeSocket/*");
+        bean.addUrlPatterns("/websocketLg/*","/taskCountSocket/*", "/websocket/*","/eoaSocket/*","/eoaNewChatSocket/*", "/newsWebsocket/*", "/vxeSocket/*");
         return bean;
     }
 

+ 1 - 0
jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java

@@ -162,6 +162,7 @@ public class ShiroConfig {
         filterChainDefinitionMap.put("/websocket/**", "anon");//系统通知和公告
         filterChainDefinitionMap.put("/newsWebsocket/**", "anon");//CMS模块
         filterChainDefinitionMap.put("/vxeSocket/**", "anon");//JVxeTable无痕刷新示例
+        filterChainDefinitionMap.put("/websocketLg/**", "anon");
 
         //性能监控——安全隐患泄露TOEKN(durid连接池也有)
         //filterChainDefinitionMap.put("/actuator/**", "anon");

+ 21 - 0
jeecg-module-billet/pom.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>jeecg-boot-parent</artifactId>
+        <groupId>org.jeecgframework.boot</groupId>
+        <version>3.7.1</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>jeecg-module-billet</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.jeecgframework.boot</groupId>
+            <artifactId>jeecg-boot-base-core</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 155 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/billetActual/controller/BilletBasicInfosController.java

@@ -0,0 +1,155 @@
+package org.jeecg.modules.actualControl.billetActual.controller;
+
+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.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.modules.actualControl.billetActual.entity.BilletBasicInfo;
+import org.jeecg.modules.actualControl.billetActual.service.IBilletBasicInfosService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
+
+ /**
+ * @Description: 钢坯基础信息
+ * @Author: jeecg-boot
+ * @Date:   2024-05-16
+ * @Version: V1.0
+ */
+@Api(tags="铸坯实绩")
+@RestController
+@RequestMapping("/actualControl/billetActual")
+@Slf4j
+public class BilletBasicInfosController extends JeecgController<BilletBasicInfo, IBilletBasicInfosService> {
+	@Autowired
+	private IBilletBasicInfosService billetBasicInfosService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param billetBasicInfo
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@AutoLog(value = "铸坯实绩-分页列表查询")
+	@ApiOperation(value="铸坯实绩-分页列表查询", notes="铸坯实绩-分页列表查询")
+	@GetMapping(value = "/zgzt/list")
+	public Result<?> queryPageList(BilletBasicInfo billetBasicInfo,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<BilletBasicInfo> queryWrapper = QueryGenerator.initQueryWrapper(billetBasicInfo, req.getParameterMap());
+		Page<BilletBasicInfo> page = new Page<BilletBasicInfo>(pageNo, pageSize);
+		IPage<BilletBasicInfo> pageList = billetBasicInfosService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param billetBasicInfo
+	 * @return
+	 */
+	@AutoLog(value = "铸坯实绩-添加")
+	@ApiOperation(value="铸坯实绩-添加", notes="铸坯实绩-添加")
+	@PostMapping(value = "/zgzt/add")
+	public Result<?> add(@RequestBody BilletBasicInfo billetBasicInfo) {
+		billetBasicInfosService.save(billetBasicInfo);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param billetBasicInfo
+	 * @return
+	 */
+	@AutoLog(value = "铸坯实绩-编辑")
+	@ApiOperation(value="铸坯实绩-编辑", notes="铸坯实绩-编辑")
+	@PutMapping(value = "/zgzt/edit")
+	public Result<?> edit(@RequestBody BilletBasicInfo billetBasicInfo) {
+		billetBasicInfosService.updateById(billetBasicInfo);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "铸坯实绩-通过id删除")
+	@ApiOperation(value="铸坯实绩-通过id删除", notes="铸坯实绩-通过id删除")
+	@DeleteMapping(value = "/zgzt/delete")
+	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+		billetBasicInfosService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "铸坯实绩-批量删除")
+	@ApiOperation(value="铸坯实绩-批量删除", notes="铸坯实绩-批量删除")
+	@DeleteMapping(value = "/zgzt/deleteBatch")
+	public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.billetBasicInfosService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "铸坯实绩-通过id查询")
+	@ApiOperation(value="铸坯实绩-通过id查询", notes="铸坯实绩-通过id查询")
+	@GetMapping(value = "/zgzt/queryById")
+	public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
+		BilletBasicInfo billetBasicInfo = billetBasicInfosService.getById(id);
+		if(billetBasicInfo==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(billetBasicInfo);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param billetBasicInfo
+    */
+    @RequestMapping(value = "/zgzt/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, BilletBasicInfo billetBasicInfo) {
+        return super.exportXls(request, billetBasicInfo, BilletBasicInfo.class, "钢坯基础信息");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequestMapping(value = "/zgzt/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, BilletBasicInfo.class);
+    }
+
+}

+ 311 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/billetActual/entity/BilletBasicInfo.java

@@ -0,0 +1,311 @@
+package org.jeecg.modules.actualControl.billetActual.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+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 org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 钢坯基础信息
+ * @Author: jeecg-boot
+ * @Date:   2024-05-16
+ * @Version: V1.0
+ */
+@TableName("billet_basic_info")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="billet_basic_info对象", description="铸坯实绩")
+public class BilletBasicInfo 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 = "炉号",required = true)
+    private String heatNo;
+	/**铸机号*/
+	@Excel(name = "铸机号", width = 15)
+    @ApiModelProperty(value = "铸机号",required = true)
+    private Integer ccmNo;
+	/**流号*/
+	@Excel(name = "流号", width = 15)
+    @ApiModelProperty(value = "流号",required = true)
+    private Integer strandNo;
+	/**支号*/
+	@Excel(name = "支号", width = 15)
+    @ApiModelProperty(value = "支号",required = true)
+    private Integer orderNo;
+	/**钢种*/
+	@Excel(name = "钢种", width = 15)
+    @ApiModelProperty(value = "钢种",required = true)
+    private String grade;
+	/**定尺*/
+	@Excel(name = "定尺", width = 15)
+    @ApiModelProperty(value = "定尺",required = true)
+    private Integer length;
+	/**实际长度*/
+	@Excel(name = "实际长度", width = 15)
+    @ApiModelProperty(value = "实际长度",required = true)
+    private Integer actualLength;
+	/**宽度*/
+	@Excel(name = "宽度", width = 15)
+    @ApiModelProperty(value = "宽度",required = true)
+    private Integer width;
+	/**厚度*/
+	@Excel(name = "厚度", width = 15)
+    @ApiModelProperty(value = "厚度",required = true)
+    private Integer thickness;
+	/**规格*/
+	@Excel(name = "规格", width = 15)
+    @ApiModelProperty(value = "规格",required = true)
+    private String spec;
+	/**定重*/
+	@Excel(name = "定重", width = 15)
+    @ApiModelProperty(value = "定重",required = true)
+    private Integer weight;
+	/**坯号*/
+	@Excel(name = "坯号", width = 15)
+    @ApiModelProperty(value = "坯号",required = true)
+    private String billetNo;
+    /**顺序号*/
+    @Excel(name = "顺序号", width = 15)
+    @ApiModelProperty(value = "顺序号",required = true)
+    private String orderNum;
+    /**开始切割时间*/
+    @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 = "开始切割时间",required = true)
+    private java.util.Date cutStartTime;
+    /**停止切割时间*/
+    @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 = "停止切割时间",required = true)
+    private java.util.Date cutStopTime;
+    /**判级结果*/
+    @Excel(name = "判级结果", width = 15)
+    @ApiModelProperty(value = "判级结果",required = true)
+    private java.lang.String ratingsResult;
+
+    public BilletBasicInfo() {
+    }
+
+    /**堆垛或车位关联id*/
+//    @Excel(name = "堆垛或车位关联id", width = 15)
+//    @ApiModelProperty(value = "堆垛或车位关联id")
+//    private String stackOrCarId;
+
+
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getSysOrgCode() {
+        return sysOrgCode;
+    }
+
+    public void setSysOrgCode(String sysOrgCode) {
+        this.sysOrgCode = sysOrgCode;
+    }
+
+    public String getHeatNo() {
+        return heatNo;
+    }
+
+    public void setHeatNo(String heatNo) {
+        this.heatNo = heatNo;
+    }
+
+    public Integer getCcmNo() {
+        return ccmNo;
+    }
+
+    public void setCcmNo(Integer ccmNo) {
+        this.ccmNo = ccmNo;
+    }
+
+    public Integer getStrandNo() {
+        return strandNo;
+    }
+
+    public void setStrandNo(Integer strandNo) {
+        this.strandNo = strandNo;
+    }
+
+    public Integer getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(Integer orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public String getGrade() {
+        return grade;
+    }
+
+    public void setGrade(String grade) {
+        this.grade = grade;
+    }
+
+    public Integer getLength() {
+        return length;
+    }
+
+    public void setLength(Integer length) {
+        this.length = length;
+    }
+
+    public Integer getActualLength() {
+        return actualLength;
+    }
+
+    public void setActualLength(Integer actualLength) {
+        this.actualLength = actualLength;
+    }
+
+    public Integer getWidth() {
+        return width;
+    }
+
+    public void setWidth(Integer width) {
+        this.width = width;
+    }
+
+    public Integer getThickness() {
+        return thickness;
+    }
+
+    public void setThickness(Integer thickness) {
+        this.thickness = thickness;
+    }
+
+    public String getSpec() {
+        return spec;
+    }
+
+    public void setSpec(String spec) {
+        this.spec = spec;
+    }
+
+    public Integer getWeight() {
+        return weight;
+    }
+
+    public void setWeight(Integer weight) {
+        this.weight = weight;
+    }
+
+    public String getBilletNo() {
+        return billetNo;
+    }
+
+    public void setBilletNo(String billetNo) {
+        this.billetNo = billetNo;
+    }
+
+    public String getOrderNum() {
+        return orderNum;
+    }
+
+    public void setOrderNum(String orderNum) {
+        this.orderNum = orderNum;
+    }
+
+    public Date getCutStartTime() {
+        return cutStartTime;
+    }
+
+    public void setCutStartTime(Date cutStartTime) {
+        this.cutStartTime = cutStartTime;
+    }
+
+    public Date getCutStopTime() {
+        return cutStopTime;
+    }
+
+    public void setCutStopTime(Date cutStopTime) {
+        this.cutStopTime = cutStopTime;
+    }
+
+    public String getRatingsResult() {
+        return ratingsResult;
+    }
+
+    public void setRatingsResult(String ratingsResult) {
+        this.ratingsResult = ratingsResult;
+    }
+}

+ 14 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/billetActual/mapper/BilletBasicInfosMapper.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.actualControl.billetActual.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.actualControl.billetActual.entity.BilletBasicInfo;
+
+/**
+ * @Description: 钢坯基础信息
+ * @Author: jeecg-boot
+ * @Date:   2024-05-16
+ * @Version: V1.0
+ */
+public interface BilletBasicInfosMapper extends BaseMapper<BilletBasicInfo> {
+
+}

+ 5 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/billetActual/mapper/xml/BilletBasicInfoMapper.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.billetBasicInfo.mapper.BilletBasicInfoMapper">
+
+</mapper>

+ 18 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/billetActual/service/IBilletBasicInfosService.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.actualControl.billetActual.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.actualControl.billetActual.entity.BilletBasicInfo;
+import org.jeecg.modules.billet.billetHotsend.entity.RulerDefaultConfig;
+
+/**
+ * @Description: 钢坯基础信息
+ * @Author: jeecg-boot
+ * @Date:   2024-05-16
+ * @Version: V1.0
+ */
+public interface IBilletBasicInfosService extends IService<BilletBasicInfo> {
+
+    void insertBatch(String sid, RulerDefaultConfig rulerDefaultConfig);
+
+    void addC(BilletBasicInfo billetBasicInfo);
+}

+ 44 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/billetActual/service/impl/BilletBasicInfosServiceImpl.java

@@ -0,0 +1,44 @@
+package org.jeecg.modules.actualControl.billetActual.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.actualControl.billetActual.entity.BilletBasicInfo;
+import org.jeecg.modules.actualControl.billetActual.mapper.BilletBasicInfosMapper;
+import org.jeecg.modules.actualControl.billetActual.service.IBilletBasicInfosService;
+import org.jeecg.modules.billet.billetHotsend.entity.RulerDefaultConfig;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Description: 钢坯基础信息
+ * @Author: jeecg-boot
+ * @Date:   2024-05-16
+ * @Version: V1.0
+ */
+@Service
+public class BilletBasicInfosServiceImpl extends ServiceImpl<BilletBasicInfosMapper, BilletBasicInfo> implements IBilletBasicInfosService {
+
+    @Override
+    public void insertBatch(String sid, RulerDefaultConfig rulerDefaultConfig) {
+        for (int i = 0; i < 4; i++) {
+            BilletBasicInfo billetBasicInfo = new BilletBasicInfo();
+            billetBasicInfo.setHeatNo(rulerDefaultConfig.getPourHeats());
+            //billetBasicInfo.setCcm(rulerDefaultConfig.getCastMachine());
+            //billetBasicInfo.setStackOrCarId(sid);
+        }
+    }
+
+    @Override
+    public void addC(BilletBasicInfo billetBasicInfo) {
+        LambdaQueryWrapper<BilletBasicInfo> queryWrapper = new LambdaQueryWrapper<BilletBasicInfo>().eq(BilletBasicInfo::getBilletNo, billetBasicInfo.getBilletNo());
+        BilletBasicInfo basicInfo = baseMapper.selectOne(queryWrapper);
+        if(oConvertUtils.isNotEmpty(basicInfo)&&oConvertUtils.isNotEmpty(basicInfo.getId())){
+            billetBasicInfo.setId(basicInfo.getId());
+            baseMapper.updateById(billetBasicInfo);
+        }else {
+            baseMapper.insert(billetBasicInfo);
+        }
+    }
+
+
+}

+ 172 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamActuals/controller/CastStreamActualsController.java

@@ -0,0 +1,172 @@
+package org.jeecg.modules.actualControl.castStreamActuals.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+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.common.util.oConvertUtils;
+import org.jeecg.modules.actualControl.castStreamActuals.entity.CastStreamActuals;
+import org.jeecg.modules.actualControl.castStreamActuals.service.ICastStreamActualsService;
+
+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.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+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.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+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:   2024-04-18
+ * @Version: V1.0
+ */
+@Api(tags="铸流实绩")
+@RestController
+@RequestMapping("/actualControl/castStreamActuals")
+@Slf4j
+public class CastStreamActualsController extends JeecgController<CastStreamActuals, ICastStreamActualsService> {
+	@Autowired
+	private ICastStreamActualsService castStreamActualsService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param castStreamActuals
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "铸流实绩-分页列表查询")
+	@ApiOperation(value="铸流实绩-分页列表查询", notes="铸流实绩-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<CastStreamActuals>> queryPageList(CastStreamActuals castStreamActuals,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CastStreamActuals> queryWrapper = QueryGenerator.initQueryWrapper(castStreamActuals, req.getParameterMap());
+		Page<CastStreamActuals> page = new Page<CastStreamActuals>(pageNo, pageSize);
+		IPage<CastStreamActuals> pageList = castStreamActualsService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param castStreamActuals
+	 * @return
+	 */
+	@AutoLog(value = "铸流实绩-添加")
+	@ApiOperation(value="铸流实绩-添加", notes="铸流实绩-添加")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody CastStreamActuals castStreamActuals) {
+		castStreamActualsService.save(castStreamActuals);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param castStreamActuals
+	 * @return
+	 */
+	@AutoLog(value = "铸流实绩-编辑")
+	@ApiOperation(value="铸流实绩-编辑", notes="铸流实绩-编辑")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CastStreamActuals castStreamActuals) {
+		castStreamActualsService.updateById(castStreamActuals);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "铸流实绩-通过id删除")
+	@ApiOperation(value="铸流实绩-通过id删除", notes="铸流实绩-通过id删除")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		castStreamActualsService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "铸流实绩-批量删除")
+	@ApiOperation(value="铸流实绩-批量删除", notes="铸流实绩-批量删除")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.castStreamActualsService.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<CastStreamActuals> queryById(@RequestParam(name="id",required=true) String id) {
+		CastStreamActuals castStreamActuals = castStreamActualsService.getById(id);
+		if(castStreamActuals==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(castStreamActuals);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param castStreamActuals
+    */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CastStreamActuals castStreamActuals) {
+        return super.exportXls(request, castStreamActuals, CastStreamActuals.class, "铸流实绩");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CastStreamActuals.class);
+    }
+
+}

+ 118 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamActuals/entity/CastStreamActuals.java

@@ -0,0 +1,118 @@
+package org.jeecg.modules.actualControl.castStreamActuals.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:   2024-04-18
+ * @Version: V1.0
+ */
+@Data
+@TableName("cast_stream_actuals")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cast_stream_actuals对象", description="铸流实绩")
+public class CastStreamActuals implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+	/**流号*/
+	@Excel(name = "流号", width = 15)
+    @ApiModelProperty(value = "流号")
+    private java.lang.String streamCode;
+	/**结晶器号*/
+	@Excel(name = "结晶器号", width = 15)
+    @ApiModelProperty(value = "结晶器号")
+    private java.lang.String crystallizerCode;
+	/**流累计通钢量*/
+	@Excel(name = "流累计通钢量", width = 15)
+    @ApiModelProperty(value = "流累计通钢量")
+    private java.lang.Double steelTotal;
+	/**当炉次过钢量*/
+	@Excel(name = "当炉次过钢量", width = 15)
+    @ApiModelProperty(value = "当炉次过钢量")
+    private java.lang.Double heatsSteelTotal;
+	/**当炉次钢坯重量*/
+	@Excel(name = "当炉次钢坯重量", width = 15)
+    @ApiModelProperty(value = "当炉次钢坯重量")
+    private java.lang.Double heatsBilletTotal;
+	/**直轧支数*/
+	@Excel(name = "直轧支数", width = 15)
+    @ApiModelProperty(value = "直轧支数")
+    private java.lang.Integer directRollingAmount;
+	/**直轧重量*/
+	@Excel(name = "直轧重量", width = 15)
+    @ApiModelProperty(value = "直轧重量")
+    private java.lang.Double directRollingWeight;
+	/**热送支数*/
+	@Excel(name = "热送支数", width = 15)
+    @ApiModelProperty(value = "热送支数")
+    private java.lang.Integer hotSendAmount;
+	/**热送重量*/
+	@Excel(name = "热送重量", width = 15)
+    @ApiModelProperty(value = "热送重量")
+    private java.lang.Double hotSendWeight;
+	/**热装支数*/
+	@Excel(name = "热装支数", width = 15)
+    @ApiModelProperty(value = "热装支数")
+    private java.lang.Integer hotFeignAmount;
+	/**热装重量*/
+	@Excel(name = "热装重量", width = 15)
+    @ApiModelProperty(value = "热装重量")
+    private java.lang.Double hotFeignWeight;
+	/**冷垛区支数*/
+	@Excel(name = "冷垛区支数", width = 15)
+    @ApiModelProperty(value = "冷垛区支数")
+    private java.lang.Integer coldPileAmount;
+	/**冷垛区重量*/
+	@Excel(name = "冷垛区重量", width = 15)
+    @ApiModelProperty(value = "冷垛区重量")
+    private java.lang.Double coldPileWeight;
+	/**判废支数*/
+	@Excel(name = "判废支数", width = 15)
+    @ApiModelProperty(value = "判废支数")
+    private java.lang.Integer wasteAmount;
+	/**判废重量*/
+	@Excel(name = "判废重量", width = 15)
+    @ApiModelProperty(value = "判废重量")
+    private java.lang.Double wasteWeight;
+}

+ 17 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamActuals/mapper/CastStreamActualsMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.actualControl.castStreamActuals.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.actualControl.castStreamActuals.entity.CastStreamActuals;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 铸流实绩
+ * @Author: jeecg-boot
+ * @Date:   2024-04-18
+ * @Version: V1.0
+ */
+public interface CastStreamActualsMapper extends BaseMapper<CastStreamActuals> {
+
+}

+ 5 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamActuals/mapper/xml/CastStreamActualsMapper.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.actualControl.castStreamActuals.mapper.CastStreamActualsMapper">
+
+</mapper>

+ 14 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamActuals/service/ICastStreamActualsService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.actualControl.castStreamActuals.service;
+
+import org.jeecg.modules.actualControl.castStreamActuals.entity.CastStreamActuals;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 铸流实绩
+ * @Author: jeecg-boot
+ * @Date:   2024-04-18
+ * @Version: V1.0
+ */
+public interface ICastStreamActualsService extends IService<CastStreamActuals> {
+
+}

+ 19 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamActuals/service/impl/CastStreamActualsServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.actualControl.castStreamActuals.service.impl;
+
+import org.jeecg.modules.actualControl.castStreamActuals.entity.CastStreamActuals;
+import org.jeecg.modules.actualControl.castStreamActuals.mapper.CastStreamActualsMapper;
+import org.jeecg.modules.actualControl.castStreamActuals.service.ICastStreamActualsService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 铸流实绩
+ * @Author: jeecg-boot
+ * @Date:   2024-04-18
+ * @Version: V1.0
+ */
+@Service
+public class CastStreamActualsServiceImpl extends ServiceImpl<CastStreamActualsMapper, CastStreamActuals> implements ICastStreamActualsService {
+
+}

+ 172 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamTraceProductActual/controller/CastStreamTraceProductActualController.java

@@ -0,0 +1,172 @@
+package org.jeecg.modules.actualControl.castStreamTraceProductActual.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+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.common.util.oConvertUtils;
+import org.jeecg.modules.actualControl.castStreamTraceProductActual.entity.CastStreamTraceProductActual;
+import org.jeecg.modules.actualControl.castStreamTraceProductActual.service.ICastStreamTraceProductActualService;
+
+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.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+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.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+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:   2024-03-27
+ * @Version: V1.0
+ */
+@Api(tags="铸流跟踪生产实绩")
+@RestController
+@RequestMapping("/actualControl/castStreamTraceProductActual")
+@Slf4j
+public class CastStreamTraceProductActualController extends JeecgController<CastStreamTraceProductActual, ICastStreamTraceProductActualService> {
+	@Autowired
+	private ICastStreamTraceProductActualService castStreamTraceProductActualService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param castStreamTraceProductActual
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "铸流跟踪生产实绩-分页列表查询")
+	@ApiOperation(value="铸流跟踪生产实绩-分页列表查询", notes="铸流跟踪生产实绩-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<CastStreamTraceProductActual>> queryPageList(CastStreamTraceProductActual castStreamTraceProductActual,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CastStreamTraceProductActual> queryWrapper = QueryGenerator.initQueryWrapper(castStreamTraceProductActual, req.getParameterMap());
+		Page<CastStreamTraceProductActual> page = new Page<CastStreamTraceProductActual>(pageNo, pageSize);
+		IPage<CastStreamTraceProductActual> pageList = castStreamTraceProductActualService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param castStreamTraceProductActual
+	 * @return
+	 */
+	@AutoLog(value = "铸流跟踪生产实绩-添加")
+	@ApiOperation(value="铸流跟踪生产实绩-添加", notes="铸流跟踪生产实绩-添加")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody CastStreamTraceProductActual castStreamTraceProductActual) {
+		castStreamTraceProductActualService.save(castStreamTraceProductActual);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param castStreamTraceProductActual
+	 * @return
+	 */
+	@AutoLog(value = "铸流跟踪生产实绩-编辑")
+	@ApiOperation(value="铸流跟踪生产实绩-编辑", notes="铸流跟踪生产实绩-编辑")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CastStreamTraceProductActual castStreamTraceProductActual) {
+		castStreamTraceProductActualService.updateById(castStreamTraceProductActual);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "铸流跟踪生产实绩-通过id删除")
+	@ApiOperation(value="铸流跟踪生产实绩-通过id删除", notes="铸流跟踪生产实绩-通过id删除")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		castStreamTraceProductActualService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "铸流跟踪生产实绩-批量删除")
+	@ApiOperation(value="铸流跟踪生产实绩-批量删除", notes="铸流跟踪生产实绩-批量删除")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.castStreamTraceProductActualService.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<CastStreamTraceProductActual> queryById(@RequestParam(name="id",required=true) String id) {
+		CastStreamTraceProductActual castStreamTraceProductActual = castStreamTraceProductActualService.getById(id);
+		if(castStreamTraceProductActual==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(castStreamTraceProductActual);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param castStreamTraceProductActual
+    */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CastStreamTraceProductActual castStreamTraceProductActual) {
+        return super.exportXls(request, castStreamTraceProductActual, CastStreamTraceProductActual.class, "铸流跟踪生产实绩");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CastStreamTraceProductActual.class);
+    }
+
+}

+ 100 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamTraceProductActual/entity/CastStreamTraceProductActual.java

@@ -0,0 +1,100 @@
+package org.jeecg.modules.actualControl.castStreamTraceProductActual.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:   2024-03-27
+ * @Version: V1.0
+ */
+@Data
+@TableName("cast_stream_trace_product_actual")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="cast_stream_trace_product_actual对象", description="铸流跟踪生产实绩")
+public class CastStreamTraceProductActual implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+	/**铸流编号*/
+	@Excel(name = "铸流编号", width = 15)
+    @ApiModelProperty(value = "铸流编号")
+    private java.lang.String castStreamCode;
+	/**流号*/
+	@Excel(name = "流号", width = 15)
+    @ApiModelProperty(value = "流号")
+    private java.lang.String streamNum;
+	/**断面*/
+	@Excel(name = "断面", width = 15)
+    @ApiModelProperty(value = "断面")
+    private java.lang.String section;
+	/**结晶器设备号*/
+	@Excel(name = "结晶器设备号", width = 15)
+    @ApiModelProperty(value = "结晶器设备号")
+    private java.lang.String crystallizerDeviceNumber;
+	/**铸流状态*/
+	@Excel(name = "铸流状态", width = 15)
+    @ApiModelProperty(value = "铸流状态")
+    private java.lang.String castStreamStatus;
+	/**浇注长度(m)*/
+	@Excel(name = "浇注长度(m)", width = 15)
+    @ApiModelProperty(value = "浇注长度(m)")
+    private java.lang.Double pourLength;
+	/**开浇时刻*/
+	@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 java.util.Date startPourTime;
+	/**拉尾坯时刻*/
+	@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 java.util.Date pullBilletEndTime;
+	/**停浇时刻*/
+	@Excel(name = "停浇时刻", width = 15)
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "停浇时刻")
+    private java.util.Date stopPourTime;
+}

+ 17 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamTraceProductActual/mapper/CastStreamTraceProductActualMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.actualControl.castStreamTraceProductActual.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.actualControl.castStreamTraceProductActual.entity.CastStreamTraceProductActual;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 铸流跟踪生产实绩
+ * @Author: jeecg-boot
+ * @Date:   2024-03-27
+ * @Version: V1.0
+ */
+public interface CastStreamTraceProductActualMapper extends BaseMapper<CastStreamTraceProductActual> {
+
+}

+ 5 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamTraceProductActual/mapper/xml/CastStreamTraceProductActualMapper.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.actualControl.castStreamTraceProductActual.mapper.CastStreamTraceProductActualMapper">
+
+</mapper>

+ 14 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamTraceProductActual/service/ICastStreamTraceProductActualService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.actualControl.castStreamTraceProductActual.service;
+
+import org.jeecg.modules.actualControl.castStreamTraceProductActual.entity.CastStreamTraceProductActual;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 铸流跟踪生产实绩
+ * @Author: jeecg-boot
+ * @Date:   2024-03-27
+ * @Version: V1.0
+ */
+public interface ICastStreamTraceProductActualService extends IService<CastStreamTraceProductActual> {
+
+}

+ 19 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/castStreamTraceProductActual/service/impl/CastStreamTraceProductActualServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.actualControl.castStreamTraceProductActual.service.impl;
+
+import org.jeecg.modules.actualControl.castStreamTraceProductActual.entity.CastStreamTraceProductActual;
+import org.jeecg.modules.actualControl.castStreamTraceProductActual.mapper.CastStreamTraceProductActualMapper;
+import org.jeecg.modules.actualControl.castStreamTraceProductActual.service.ICastStreamTraceProductActualService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 铸流跟踪生产实绩
+ * @Author: jeecg-boot
+ * @Date:   2024-03-27
+ * @Version: V1.0
+ */
+@Service
+public class CastStreamTraceProductActualServiceImpl extends ServiceImpl<CastStreamTraceProductActualMapper, CastStreamTraceProductActual> implements ICastStreamTraceProductActualService {
+
+}

+ 171 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsActuals/controller/HeatsActualsController.java

@@ -0,0 +1,171 @@
+package org.jeecg.modules.actualControl.heatsActuals.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+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.common.util.oConvertUtils;
+import org.jeecg.modules.actualControl.heatsActuals.entity.HeatsActuals;
+import org.jeecg.modules.actualControl.heatsActuals.service.IHeatsActualsService;
+
+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.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+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.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 炉次实绩
+ * @Author: jeecg-boot
+ * @Date:   2024-04-18
+ * @Version: V1.0
+ */
+@Api(tags="炉次实绩")
+@RestController
+@RequestMapping("/actualControl/heatsActuals")
+@Slf4j
+public class HeatsActualsController extends JeecgController<HeatsActuals, IHeatsActualsService> {
+	@Autowired
+	private IHeatsActualsService heatsActualsService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param heatsActuals
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "炉次实绩-分页列表查询")
+	@ApiOperation(value="炉次实绩-分页列表查询", notes="炉次实绩-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<HeatsActuals>> queryPageList(HeatsActuals heatsActuals,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<HeatsActuals> queryWrapper = QueryGenerator.initQueryWrapper(heatsActuals, req.getParameterMap());
+		Page<HeatsActuals> page = new Page<HeatsActuals>(pageNo, pageSize);
+		IPage<HeatsActuals> pageList = heatsActualsService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param heatsActuals
+	 * @return
+	 */
+	@AutoLog(value = "炉次实绩-添加")
+	@ApiOperation(value="炉次实绩-添加", notes="炉次实绩-添加")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody HeatsActuals heatsActuals) {
+		heatsActualsService.save(heatsActuals);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param heatsActuals
+	 * @return
+	 */
+	@AutoLog(value = "炉次实绩-编辑")
+	@ApiOperation(value="炉次实绩-编辑", notes="炉次实绩-编辑")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody HeatsActuals heatsActuals) {
+		heatsActualsService.updateById(heatsActuals);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "炉次实绩-通过id删除")
+	@ApiOperation(value="炉次实绩-通过id删除", notes="炉次实绩-通过id删除")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		heatsActualsService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "炉次实绩-批量删除")
+	@ApiOperation(value="炉次实绩-批量删除", notes="炉次实绩-批量删除")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.heatsActualsService.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<HeatsActuals> queryById(@RequestParam(name="id",required=true) String id) {
+		HeatsActuals heatsActuals = heatsActualsService.getById(id);
+		if(heatsActuals==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(heatsActuals);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param heatsActuals
+    */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HeatsActuals heatsActuals) {
+        return super.exportXls(request, heatsActuals, HeatsActuals.class, "炉次实绩");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, HeatsActuals.class);
+    }
+
+}

+ 264 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsActuals/entity/HeatsActuals.java

@@ -0,0 +1,264 @@
+package org.jeecg.modules.actualControl.heatsActuals.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:   2024-04-18
+ * @Version: V1.0
+ */
+@TableName("heats_actuals")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="heats_actuals对象", description="炉次实绩")
+public class HeatsActuals implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+	/**炉号*/
+	@Excel(name = "炉号", width = 15)
+    @ApiModelProperty(value = "炉号",required = true)
+    private java.lang.String heatsCode;
+	/**铸机号*/
+	@Excel(name = "铸机号", width = 15)
+    @ApiModelProperty(value = "铸机号",required = true)
+    private java.lang.String casterCode;
+	/**钢包号*/
+	@Excel(name = "钢包号", width = 15)
+    @ApiModelProperty(value = "钢包号",required = true)
+    private java.lang.String ladleCode;
+	/**开浇时间*/
+	@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 = "开浇时间",required = true)
+    private java.util.Date startPourTime;
+	/**停浇时间*/
+	@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 = "停浇时间",required = true)
+    private java.util.Date stopPourTime;
+	/**实包重量*/
+	@Excel(name = "实包重量", width = 15)
+    @ApiModelProperty(value = "实包重量",required = true)
+    private java.lang.Double fullLadleWeight;
+	/**空包重量*/
+	@Excel(name = "空包重量", width = 15)
+    @ApiModelProperty(value = "空包重量",required = true)
+    private java.lang.Double emptyLadleWeight;
+	/**钢水重量*/
+	@Excel(name = "钢水重量", width = 15)
+    @ApiModelProperty(value = "钢水重量",required = true)
+    private java.lang.Double moltenSteelWeight;
+    /**规格*/
+    @Excel(name = "规格", width = 15)
+    @ApiModelProperty(value = "规格",required = true)
+    private String spec;
+    /**钢种*/
+    @Excel(name = "钢种", width = 15)
+    @ApiModelProperty(value = "钢种",required = true)
+    private String grade;
+    /**第一次切割时间*/
+    @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 = "第一次切割时间",required = true)
+    private java.util.Date firstCutTime;
+    /**最后切割时间*/
+    @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 = "最后切割时间",required = true)
+    private java.util.Date lastCutTime;
+
+    public HeatsActuals() {
+    }
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getSysOrgCode() {
+        return sysOrgCode;
+    }
+
+    public void setSysOrgCode(String sysOrgCode) {
+        this.sysOrgCode = sysOrgCode;
+    }
+
+    public String getHeatsCode() {
+        return heatsCode;
+    }
+
+    public void setHeatsCode(String heatsCode) {
+        this.heatsCode = heatsCode;
+    }
+
+    public String getCasterCode() {
+        return casterCode;
+    }
+
+    public void setCasterCode(String casterCode) {
+        this.casterCode = casterCode;
+    }
+
+    public String getLadleCode() {
+        return ladleCode;
+    }
+
+    public void setLadleCode(String ladleCode) {
+        this.ladleCode = ladleCode;
+    }
+
+    public Date getStartPourTime() {
+        return startPourTime;
+    }
+
+    public void setStartPourTime(Date startPourTime) {
+        this.startPourTime = startPourTime;
+    }
+
+    public Date getStopPourTime() {
+        return stopPourTime;
+    }
+
+    public void setStopPourTime(Date stopPourTime) {
+        this.stopPourTime = stopPourTime;
+    }
+
+    public Double getFullLadleWeight() {
+        return fullLadleWeight;
+    }
+
+    public void setFullLadleWeight(Double fullLadleWeight) {
+        this.fullLadleWeight = fullLadleWeight;
+    }
+
+    public Double getEmptyLadleWeight() {
+        return emptyLadleWeight;
+    }
+
+    public void setEmptyLadleWeight(Double emptyLadleWeight) {
+        this.emptyLadleWeight = emptyLadleWeight;
+    }
+
+    public Double getMoltenSteelWeight() {
+        return moltenSteelWeight;
+    }
+
+    public void setMoltenSteelWeight(Double moltenSteelWeight) {
+        this.moltenSteelWeight = moltenSteelWeight;
+    }
+
+    public String getSpec() {
+        return spec;
+    }
+
+    public void setSpec(String spec) {
+        this.spec = spec;
+    }
+
+    public String getGrade() {
+        return grade;
+    }
+
+    public void setGrade(String grade) {
+        this.grade = grade;
+    }
+
+    public Date getFirstCutTime() {
+        return firstCutTime;
+    }
+
+    public void setFirstCutTime(Date firstCutTime) {
+        this.firstCutTime = firstCutTime;
+    }
+
+    public Date getLastCutTime() {
+        return lastCutTime;
+    }
+
+    public void setLastCutTime(Date lastCutTime) {
+        this.lastCutTime = lastCutTime;
+    }
+}

+ 17 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsActuals/mapper/HeatsActualsMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.actualControl.heatsActuals.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.actualControl.heatsActuals.entity.HeatsActuals;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 炉次实绩
+ * @Author: jeecg-boot
+ * @Date:   2024-04-18
+ * @Version: V1.0
+ */
+public interface HeatsActualsMapper extends BaseMapper<HeatsActuals> {
+
+}

+ 5 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsActuals/mapper/xml/HeatsActualsMapper.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.actualControl.heatsActuals.mapper.HeatsActualsMapper">
+
+</mapper>

+ 16 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsActuals/service/IHeatsActualsService.java

@@ -0,0 +1,16 @@
+package org.jeecg.modules.actualControl.heatsActuals.service;
+
+import org.jeecg.modules.actualControl.heatsActuals.entity.HeatsActuals;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 炉次实绩
+ * @Author: jeecg-boot
+ * @Date:   2024-04-18
+ * @Version: V1.0
+ */
+public interface IHeatsActualsService extends IService<HeatsActuals> {
+
+    void addC(HeatsActuals heatsActuals);
+
+}

+ 43 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsActuals/service/impl/HeatsActualsServiceImpl.java

@@ -0,0 +1,43 @@
+package org.jeecg.modules.actualControl.heatsActuals.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.actualControl.heatsActuals.entity.HeatsActuals;
+import org.jeecg.modules.actualControl.heatsActuals.mapper.HeatsActualsMapper;
+import org.jeecg.modules.actualControl.heatsActuals.service.IHeatsActualsService;
+import org.jeecg.modules.billet.billetHotsend.entity.RulerDefaultConfig;
+import org.jeecg.modules.billet.billetHotsend.service.IRulerDefaultConfigService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 炉次实绩
+ * @Author: jeecg-boot
+ * @Date:   2024-04-18
+ * @Version: V1.0
+ */
+@Service
+public class HeatsActualsServiceImpl extends ServiceImpl<HeatsActualsMapper, HeatsActuals> implements IHeatsActualsService {
+
+    @Autowired
+    private IRulerDefaultConfigService rulerDefaultConfigService;
+
+    @Override
+    public void addC(HeatsActuals heatsActuals) {
+        LambdaQueryWrapper<HeatsActuals> queryWrapper = new LambdaQueryWrapper<HeatsActuals>().eq(HeatsActuals::getHeatsCode, heatsActuals.getHeatsCode())
+                .eq(HeatsActuals::getCasterCode, heatsActuals.getCasterCode())
+                .eq(HeatsActuals::getLadleCode, heatsActuals.getLadleCode());
+        HeatsActuals actuals = baseMapper.selectOne(queryWrapper);
+        if(oConvertUtils.isNotEmpty(actuals)&&oConvertUtils.isNotEmpty(actuals.getId())){
+            heatsActuals.setId(actuals.getId());
+            baseMapper.updateById(heatsActuals);
+        }else {
+            baseMapper.insert(heatsActuals);
+            RulerDefaultConfig last = rulerDefaultConfigService.getLast(heatsActuals.getCasterCode());
+            last.setPourHeats(heatsActuals.getHeatsCode());
+            rulerDefaultConfigService.updateById(last);
+        }
+    }
+}

+ 261 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/controller/HeatsActualProductDescController.java

@@ -0,0 +1,261 @@
+package org.jeecg.modules.actualControl.heatsProduct.productDesc.controller;
+
+import java.io.UnsupportedEncodingException;
+import java.io.IOException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.vo.LoginUser;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.entity.HeatsActualProductDescActual;
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.entity.HeatsActualProductDesc;
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.vo.HeatsActualProductDescPage;
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.service.IHeatsActualProductDescService;
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.service.IHeatsActualProductDescActualService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+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 com.alibaba.fastjson.JSON;
+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:   2024-03-27
+ * @Version: V1.0
+ */
+@Api(tags="炉次实绩-生产记录详情")
+@RestController
+@RequestMapping("/actualControl/heatsProduct/productDesc")
+@Slf4j
+public class HeatsActualProductDescController {
+	@Autowired
+	private IHeatsActualProductDescService heatsActualProductDescService;
+	@Autowired
+	private IHeatsActualProductDescActualService heatsActualProductDescActualService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param heatsActualProductDesc
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "炉次实绩-生产记录详情-分页列表查询")
+	@ApiOperation(value="炉次实绩-生产记录详情-分页列表查询", notes="炉次实绩-生产记录详情-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<HeatsActualProductDesc>> queryPageList(HeatsActualProductDesc heatsActualProductDesc,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<HeatsActualProductDesc> queryWrapper = QueryGenerator.initQueryWrapper(heatsActualProductDesc, req.getParameterMap());
+		Page<HeatsActualProductDesc> page = new Page<HeatsActualProductDesc>(pageNo, pageSize);
+		IPage<HeatsActualProductDesc> pageList = heatsActualProductDescService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param heatsActualProductDescPage
+	 * @return
+	 */
+	@AutoLog(value = "炉次实绩-生产记录详情-添加")
+	@ApiOperation(value="炉次实绩-生产记录详情-添加", notes="炉次实绩-生产记录详情-添加")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody HeatsActualProductDescPage heatsActualProductDescPage) {
+		HeatsActualProductDesc heatsActualProductDesc = new HeatsActualProductDesc();
+		BeanUtils.copyProperties(heatsActualProductDescPage, heatsActualProductDesc);
+		heatsActualProductDescService.saveMain(heatsActualProductDesc, heatsActualProductDescPage.getHeatsActualProductDescActualList());
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param heatsActualProductDescPage
+	 * @return
+	 */
+	@AutoLog(value = "炉次实绩-生产记录详情-编辑")
+	@ApiOperation(value="炉次实绩-生产记录详情-编辑", notes="炉次实绩-生产记录详情-编辑")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody HeatsActualProductDescPage heatsActualProductDescPage) {
+		HeatsActualProductDesc heatsActualProductDesc = new HeatsActualProductDesc();
+		BeanUtils.copyProperties(heatsActualProductDescPage, heatsActualProductDesc);
+		HeatsActualProductDesc heatsActualProductDescEntity = heatsActualProductDescService.getById(heatsActualProductDesc.getId());
+		if(heatsActualProductDescEntity==null) {
+			return Result.error("未找到对应数据");
+		}
+		heatsActualProductDescService.updateMain(heatsActualProductDesc, heatsActualProductDescPage.getHeatsActualProductDescActualList());
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "炉次实绩-生产记录详情-通过id删除")
+	@ApiOperation(value="炉次实绩-生产记录详情-通过id删除", notes="炉次实绩-生产记录详情-通过id删除")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		heatsActualProductDescService.delMain(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "炉次实绩-生产记录详情-批量删除")
+	@ApiOperation(value="炉次实绩-生产记录详情-批量删除", notes="炉次实绩-生产记录详情-批量删除")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.heatsActualProductDescService.delBatchMain(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "炉次实绩-生产记录详情-通过id查询")
+	@ApiOperation(value="炉次实绩-生产记录详情-通过id查询", notes="炉次实绩-生产记录详情-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<HeatsActualProductDesc> queryById(@RequestParam(name="id",required=true) String id) {
+		HeatsActualProductDesc heatsActualProductDesc = heatsActualProductDescService.getById(id);
+		if(heatsActualProductDesc==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(heatsActualProductDesc);
+
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "炉次实绩-生产记录详情-生产实绩通过主表ID查询")
+	@ApiOperation(value="炉次实绩-生产记录详情-生产实绩主表ID查询", notes="炉次实绩-生产记录详情-生产实绩-通主表ID查询")
+	@GetMapping(value = "/queryHeatsActualProductDescActualByMainId")
+	public Result<List<HeatsActualProductDescActual>> queryHeatsActualProductDescActualListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<HeatsActualProductDescActual> heatsActualProductDescActualList = heatsActualProductDescActualService.selectByMainId(id);
+		return Result.OK(heatsActualProductDescActualList);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param heatsActualProductDesc
+    */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HeatsActualProductDesc heatsActualProductDesc) {
+      // Step.1 组装查询条件查询数据
+      QueryWrapper<HeatsActualProductDesc> queryWrapper = QueryGenerator.initQueryWrapper(heatsActualProductDesc, request.getParameterMap());
+      LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+      //配置选中数据查询条件
+      String selections = request.getParameter("selections");
+      if(oConvertUtils.isNotEmpty(selections)) {
+         List<String> selectionList = Arrays.asList(selections.split(","));
+         queryWrapper.in("id",selectionList);
+      }
+      //Step.2 获取导出数据
+      List<HeatsActualProductDesc> heatsActualProductDescList = heatsActualProductDescService.list(queryWrapper);
+
+      // Step.3 组装pageList
+      List<HeatsActualProductDescPage> pageList = new ArrayList<HeatsActualProductDescPage>();
+      for (HeatsActualProductDesc main : heatsActualProductDescList) {
+          HeatsActualProductDescPage vo = new HeatsActualProductDescPage();
+          BeanUtils.copyProperties(main, vo);
+          List<HeatsActualProductDescActual> heatsActualProductDescActualList = heatsActualProductDescActualService.selectByMainId(main.getId());
+          vo.setHeatsActualProductDescActualList(heatsActualProductDescActualList);
+          pageList.add(vo);
+      }
+
+      // Step.4 AutoPoi 导出Excel
+      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+      mv.addObject(NormalExcelConstants.FILE_NAME, "炉次实绩-生产记录详情列表");
+      mv.addObject(NormalExcelConstants.CLASS, HeatsActualProductDescPage.class);
+      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("炉次实绩-生产记录详情数据", "导出人:"+sysUser.getRealname(), "炉次实绩-生产记录详情"));
+      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+      return mv;
+    }
+
+    /**
+    * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+          // 获取上传文件对象
+          MultipartFile file = entity.getValue();
+          ImportParams params = new ImportParams();
+          params.setTitleRows(2);
+          params.setHeadRows(1);
+          params.setNeedSave(true);
+          try {
+              List<HeatsActualProductDescPage> list = ExcelImportUtil.importExcel(file.getInputStream(), HeatsActualProductDescPage.class, params);
+              for (HeatsActualProductDescPage page : list) {
+                  HeatsActualProductDesc po = new HeatsActualProductDesc();
+                  BeanUtils.copyProperties(page, po);
+                  heatsActualProductDescService.saveMain(po, page.getHeatsActualProductDescActualList());
+              }
+              return Result.OK("文件导入成功!数据行数:" + list.size());
+          } catch (Exception e) {
+              log.error(e.getMessage(),e);
+              return Result.error("文件导入失败:"+e.getMessage());
+          } finally {
+              try {
+                  file.getInputStream().close();
+              } catch (IOException e) {
+                  e.printStackTrace();
+              }
+          }
+      }
+      return Result.OK("文件导入失败!");
+    }
+
+}

+ 86 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/entity/HeatsActualProductDesc.java

@@ -0,0 +1,86 @@
+package org.jeecg.modules.actualControl.heatsProduct.productDesc.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+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;
+
+/**
+ * @Description: 炉次实绩-生产记录详情
+ * @Author: jeecg-boot
+ * @Date:   2024-03-27
+ * @Version: V1.0
+ */
+@ApiModel(value="heats_actual_product_desc对象", description="炉次实绩-生产记录详情")
+@Data
+@TableName("heats_actual_product_desc")
+public class HeatsActualProductDesc implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+	/**二级炉号*/
+	@Excel(name = "二级炉号", width = 15)
+    @ApiModelProperty(value = "二级炉号")
+    private java.lang.String twoFurnaceNum;
+	/**状态*/
+	@Excel(name = "状态", width = 15)
+    @ApiModelProperty(value = "状态")
+    @Dict(dicCode = "heatsStatus")
+    private java.lang.String status;
+	/**中包浇次号*/
+	@Excel(name = "中包浇次号", width = 15)
+    @ApiModelProperty(value = "中包浇次号")
+    private java.lang.String middlePackPourNum;
+	/**浇次内序号*/
+	@Excel(name = "浇次内序号", width = 15)
+    @ApiModelProperty(value = "浇次内序号")
+    private java.lang.Integer pourInOrdinal;
+	/**制造命令号*/
+	@Excel(name = "制造命令号", width = 15)
+    @ApiModelProperty(value = "制造命令号")
+    private java.lang.String makeCmdNum;
+	/**熔炼号*/
+	@Excel(name = "熔炼号", width = 15)
+    @ApiModelProperty(value = "熔炼号")
+    private java.lang.String smeltingNum;
+	/**实绩钢种*/
+	@Excel(name = "实绩钢种", width = 15)
+    @ApiModelProperty(value = "实绩钢种")
+    private java.lang.String actualSteel;
+	/**钢包号*/
+	@Excel(name = "钢包号", width = 15)
+    @ApiModelProperty(value = "钢包号")
+    private java.lang.String ladleNum;
+}

+ 171 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/entity/HeatsActualProductDescActual.java

@@ -0,0 +1,171 @@
+package org.jeecg.modules.actualControl.heatsProduct.productDesc.entity;
+
+import java.io.Serializable;
+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 java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 炉次实绩-生产记录详情-生产实绩
+ * @Author: jeecg-boot
+ * @Date:   2024-03-27
+ * @Version: V1.0
+ */
+@ApiModel(value="heats_actual_product_desc_actual对象", description="炉次实绩-生产记录详情-生产实绩")
+@Data
+@TableName("heats_actual_product_desc_actual")
+public class HeatsActualProductDescActual implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.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 java.util.Date toPacketTime;
+	/**到达浇铸位时间*/
+	@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 java.util.Date toPourTime;
+	/**水口打开时间*/
+	@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 java.util.Date nozzleOpenTime;
+	/**浇铸完成时间*/
+	@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 java.util.Date pourFinishTime;
+	/**钢包吊走时间*/
+	@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 java.util.Date ladleAwayTime;
+	/**切割完成时间*/
+	@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 java.util.Date inciseFinishTime;
+	/**浇铸重量*/
+	@Excel(name = "浇铸重量", width = 15)
+    @ApiModelProperty(value = "浇铸重量")
+    private java.lang.Double pourWeight;
+	/**上台重量*/
+	@Excel(name = "上台重量", width = 15)
+    @ApiModelProperty(value = "上台重量")
+    private java.lang.Double stageWeight;
+	/**上台中包1重量*/
+	@Excel(name = "上台中包1重量", width = 15)
+    @ApiModelProperty(value = "上台中包1重量")
+    private java.lang.Double stageMiddleOneWeight;
+	/**离台重量*/
+	@Excel(name = "离台重量", width = 15)
+    @ApiModelProperty(value = "离台重量")
+    private java.lang.Double ousterWeight;
+	/**离台中包1重量*/
+	@Excel(name = "离台中包1重量", width = 15)
+    @ApiModelProperty(value = "离台中包1重量")
+    private java.lang.Double ousterMiddleOneWeight;
+	/**炉次切头损失*/
+	@Excel(name = "炉次切头损失", width = 15)
+    @ApiModelProperty(value = "炉次切头损失")
+    private java.lang.Double cutHeadLoss;
+	/**炉次切尾损失*/
+	@Excel(name = "炉次切尾损失", width = 15)
+    @ApiModelProperty(value = "炉次切尾损失")
+    private java.lang.Double cutFootLoss;
+	/**炉次切样损失*/
+	@Excel(name = "炉次切样损失", width = 15)
+    @ApiModelProperty(value = "炉次切样损失")
+    private java.lang.Double cutSampleLoss;
+	/**炉次切废损失*/
+	@Excel(name = "炉次切废损失", width = 15)
+    @ApiModelProperty(value = "炉次切废损失")
+    private java.lang.Double cutWasteLoss;
+	/**炉次其他损失*/
+	@Excel(name = "炉次其他损失", width = 15)
+    @ApiModelProperty(value = "炉次其他损失")
+    private java.lang.Double otherLoss;
+	/**到台温度*/
+	@Excel(name = "到台温度", width = 15)
+    @ApiModelProperty(value = "到台温度")
+    private java.lang.Double toStageTemp;
+	/**实绩钢种*/
+	@Excel(name = "实绩钢种", width = 15)
+    @ApiModelProperty(value = "实绩钢种")
+    private java.lang.String actualSteel;
+	/**实绩钢包信息*/
+	@Excel(name = "实绩钢包信息", width = 15)
+    @ApiModelProperty(value = "实绩钢包信息")
+    private java.lang.String ladleActualInfo;
+	/**异钢种连浇*/
+	@Excel(name = "异钢种连浇", width = 15, dicCode = "yOrN")
+    @ApiModelProperty(value = "异钢种连浇")
+    private java.lang.Integer difSteelPour;
+	/**烧氧支数*/
+	@Excel(name = "烧氧支数", width = 15)
+    @ApiModelProperty(value = "烧氧支数")
+    private java.lang.Integer burnO2Branch;
+	/**热换中包*/
+	@Excel(name = "热换中包", width = 15, dicCode = "yOrN")
+    @ApiModelProperty(value = "热换中包")
+    private java.lang.Integer hotChangeMiddle;
+	/**是否漏钢*/
+	@Excel(name = "是否漏钢", width = 15, dicCode = "yOrN")
+    @ApiModelProperty(value = "是否漏钢")
+    private java.lang.Integer isLeakSteel;
+	/**生产备注*/
+	@Excel(name = "生产备注", width = 15)
+    @ApiModelProperty(value = "生产备注")
+    private java.lang.String productRemark;
+	/**生产班别*/
+	@Excel(name = "生产班别", width = 15, dicCode = "pclass")
+    @ApiModelProperty(value = "生产班别")
+    private java.lang.String productClass;
+	/**生产班次*/
+	@Excel(name = "生产班次", width = 15, dicCode = "pshift")
+    @ApiModelProperty(value = "生产班次")
+    private java.lang.String productShift;
+	/**主表id*/
+    @ApiModelProperty(value = "主表id")
+    private java.lang.String descId;
+}

+ 31 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/mapper/HeatsActualProductDescActualMapper.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.actualControl.heatsProduct.productDesc.mapper;
+
+import java.util.List;
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.entity.HeatsActualProductDescActual;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Description: 炉次实绩-生产记录详情-生产实绩
+ * @Author: jeecg-boot
+ * @Date:   2024-03-27
+ * @Version: V1.0
+ */
+public interface HeatsActualProductDescActualMapper extends BaseMapper<HeatsActualProductDescActual> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<HeatsActualProductDescActual>
+   */
+	public List<HeatsActualProductDescActual> selectByMainId(@Param("mainId") String mainId);
+}

+ 17 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/mapper/HeatsActualProductDescMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.actualControl.heatsProduct.productDesc.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.entity.HeatsActualProductDesc;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 炉次实绩-生产记录详情
+ * @Author: jeecg-boot
+ * @Date:   2024-03-27
+ * @Version: V1.0
+ */
+public interface HeatsActualProductDescMapper extends BaseMapper<HeatsActualProductDesc> {
+
+}

+ 16 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/mapper/xml/HeatsActualProductDescActualMapper.xml

@@ -0,0 +1,16 @@
+<?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.actualControl.heatsProduct.productDesc.mapper.HeatsActualProductDescActualMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  heats_actual_product_desc_actual 
+		WHERE
+			 desc_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.actualControl.heatsProduct.productDesc.entity.HeatsActualProductDescActual">
+		SELECT * 
+		FROM  heats_actual_product_desc_actual
+		WHERE
+			 desc_id = #{mainId} 	</select>
+</mapper>

+ 5 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/mapper/xml/HeatsActualProductDescMapper.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.actualControl.heatsProduct.productDesc.mapper.HeatsActualProductDescMapper">
+
+</mapper>

+ 22 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/service/IHeatsActualProductDescActualService.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.actualControl.heatsProduct.productDesc.service;
+
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.entity.HeatsActualProductDescActual;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
+/**
+ * @Description: 炉次实绩-生产记录详情-生产实绩
+ * @Author: jeecg-boot
+ * @Date:   2024-03-27
+ * @Version: V1.0
+ */
+public interface IHeatsActualProductDescActualService extends IService<HeatsActualProductDescActual> {
+
+	/**
+	 * 通过主表id查询子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return List<HeatsActualProductDescActual>
+	 */
+	public List<HeatsActualProductDescActual> selectByMainId(String mainId);
+}

+ 48 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/service/IHeatsActualProductDescService.java

@@ -0,0 +1,48 @@
+package org.jeecg.modules.actualControl.heatsProduct.productDesc.service;
+
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.entity.HeatsActualProductDescActual;
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.entity.HeatsActualProductDesc;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 炉次实绩-生产记录详情
+ * @Author: jeecg-boot
+ * @Date:   2024-03-27
+ * @Version: V1.0
+ */
+public interface IHeatsActualProductDescService extends IService<HeatsActualProductDesc> {
+
+	/**
+	 * 添加一对多
+	 *
+	 * @param heatsActualProductDesc
+	 * @param heatsActualProductDescActualList
+	 */
+	public void saveMain(HeatsActualProductDesc heatsActualProductDesc,List<HeatsActualProductDescActual> heatsActualProductDescActualList) ;
+	
+	/**
+	 * 修改一对多
+	 *
+   * @param heatsActualProductDesc
+   * @param heatsActualProductDescActualList
+	 */
+	public void updateMain(HeatsActualProductDesc heatsActualProductDesc,List<HeatsActualProductDescActual> heatsActualProductDescActualList);
+	
+	/**
+	 * 删除一对多
+	 *
+	 * @param id
+	 */
+	public void delMain (String id);
+	
+	/**
+	 * 批量删除一对多
+	 *
+	 * @param idList
+	 */
+	public void delBatchMain (Collection<? extends Serializable> idList);
+	
+}

+ 27 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/service/impl/HeatsActualProductDescActualServiceImpl.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.actualControl.heatsProduct.productDesc.service.impl;
+
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.entity.HeatsActualProductDescActual;
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.mapper.HeatsActualProductDescActualMapper;
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.service.IHeatsActualProductDescActualService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 炉次实绩-生产记录详情-生产实绩
+ * @Author: jeecg-boot
+ * @Date:   2024-03-27
+ * @Version: V1.0
+ */
+@Service
+public class HeatsActualProductDescActualServiceImpl extends ServiceImpl<HeatsActualProductDescActualMapper, HeatsActualProductDescActual> implements IHeatsActualProductDescActualService {
+	
+	@Autowired
+	private HeatsActualProductDescActualMapper heatsActualProductDescActualMapper;
+	
+	@Override
+	public List<HeatsActualProductDescActual> selectByMainId(String mainId) {
+		return heatsActualProductDescActualMapper.selectByMainId(mainId);
+	}
+}

+ 77 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/service/impl/HeatsActualProductDescServiceImpl.java

@@ -0,0 +1,77 @@
+package org.jeecg.modules.actualControl.heatsProduct.productDesc.service.impl;
+
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.entity.HeatsActualProductDesc;
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.entity.HeatsActualProductDescActual;
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.mapper.HeatsActualProductDescActualMapper;
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.mapper.HeatsActualProductDescMapper;
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.service.IHeatsActualProductDescService;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import java.io.Serializable;
+import java.util.List;
+import java.util.Collection;
+
+/**
+ * @Description: 炉次实绩-生产记录详情
+ * @Author: jeecg-boot
+ * @Date:   2024-03-27
+ * @Version: V1.0
+ */
+@Service
+public class HeatsActualProductDescServiceImpl extends ServiceImpl<HeatsActualProductDescMapper, HeatsActualProductDesc> implements IHeatsActualProductDescService {
+
+	@Autowired
+	private HeatsActualProductDescMapper heatsActualProductDescMapper;
+	@Autowired
+	private HeatsActualProductDescActualMapper heatsActualProductDescActualMapper;
+	
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void saveMain(HeatsActualProductDesc heatsActualProductDesc, List<HeatsActualProductDescActual> heatsActualProductDescActualList) {
+		heatsActualProductDescMapper.insert(heatsActualProductDesc);
+		if(heatsActualProductDescActualList!=null && heatsActualProductDescActualList.size()>0) {
+			for(HeatsActualProductDescActual entity:heatsActualProductDescActualList) {
+				//外键设置
+				entity.setDescId(heatsActualProductDesc.getId());
+				heatsActualProductDescActualMapper.insert(entity);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateMain(HeatsActualProductDesc heatsActualProductDesc,List<HeatsActualProductDescActual> heatsActualProductDescActualList) {
+		heatsActualProductDescMapper.updateById(heatsActualProductDesc);
+		
+		//1.先删除子表数据
+		heatsActualProductDescActualMapper.deleteByMainId(heatsActualProductDesc.getId());
+		
+		//2.子表数据重新插入
+		if(heatsActualProductDescActualList!=null && heatsActualProductDescActualList.size()>0) {
+			for(HeatsActualProductDescActual entity:heatsActualProductDescActualList) {
+				//外键设置
+				entity.setDescId(heatsActualProductDesc.getId());
+				heatsActualProductDescActualMapper.insert(entity);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delMain(String id) {
+		heatsActualProductDescActualMapper.deleteByMainId(id);
+		heatsActualProductDescMapper.deleteById(id);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delBatchMain(Collection<? extends Serializable> idList) {
+		for(Serializable id:idList) {
+			heatsActualProductDescActualMapper.deleteByMainId(id.toString());
+			heatsActualProductDescMapper.deleteById(id);
+		}
+	}
+	
+}

+ 86 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productDesc/vo/HeatsActualProductDescPage.java

@@ -0,0 +1,86 @@
+package org.jeecg.modules.actualControl.heatsProduct.productDesc.vo;
+
+import java.util.List;
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.entity.HeatsActualProductDesc;
+import org.jeecg.modules.actualControl.heatsProduct.productDesc.entity.HeatsActualProductDescActual;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecgframework.poi.excel.annotation.ExcelEntity;
+import org.jeecgframework.poi.excel.annotation.ExcelCollection;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.util.Date;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 炉次实绩-生产记录详情
+ * @Author: jeecg-boot
+ * @Date:   2024-03-27
+ * @Version: V1.0
+ */
+@Data
+@ApiModel(value="heats_actual_product_descPage对象", description="炉次实绩-生产记录详情")
+public class HeatsActualProductDescPage {
+
+	/**主键*/
+	@ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+	@ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+	@ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**所属部门*/
+	@ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+	/**二级炉号*/
+	@Excel(name = "二级炉号", width = 15)
+	@ApiModelProperty(value = "二级炉号")
+    private java.lang.String twoFurnaceNum;
+	/**状态*/
+	@Excel(name = "状态", width = 15)
+	@ApiModelProperty(value = "状态")
+    private java.lang.String status;
+	/**中包浇次号*/
+	@Excel(name = "中包浇次号", width = 15)
+	@ApiModelProperty(value = "中包浇次号")
+    private java.lang.String middlePackPourNum;
+	/**浇次内序号*/
+	@Excel(name = "浇次内序号", width = 15)
+	@ApiModelProperty(value = "浇次内序号")
+    private java.lang.Integer pourInOrdinal;
+	/**制造命令号*/
+	@Excel(name = "制造命令号", width = 15)
+	@ApiModelProperty(value = "制造命令号")
+    private java.lang.String makeCmdNum;
+	/**熔炼号*/
+	@Excel(name = "熔炼号", width = 15)
+	@ApiModelProperty(value = "熔炼号")
+    private java.lang.String smeltingNum;
+	/**实绩钢种*/
+	@Excel(name = "实绩钢种", width = 15)
+	@ApiModelProperty(value = "实绩钢种")
+    private java.lang.String actualSteel;
+	/**钢包号*/
+	@Excel(name = "钢包号", width = 15)
+	@ApiModelProperty(value = "钢包号")
+    private java.lang.String ladleNum;
+
+	@ExcelCollection(name="炉次实绩-生产记录详情-生产实绩")
+	@ApiModelProperty(value = "炉次实绩-生产记录详情-生产实绩")
+	private List<HeatsActualProductDescActual> heatsActualProductDescActualList;
+
+}

+ 157 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productLog/controller/HeatsActualProductLogController.java

@@ -0,0 +1,157 @@
+package org.jeecg.modules.actualControl.heatsProduct.productLog.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.actualControl.heatsProduct.productLog.entity.HeatsActualProductLog;
+import org.jeecg.modules.actualControl.heatsProduct.productLog.service.IHeatsActualProductLogService;
+
+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:   2024-03-27
+ * @Version: V1.0
+ */
+@Api(tags="炉次实绩-生产记录")
+@RestController
+@RequestMapping("/actualControl/heatsProduct/productLog")
+@Slf4j
+public class HeatsActualProductLogController extends JeecgController<HeatsActualProductLog, IHeatsActualProductLogService> {
+	@Autowired
+	private IHeatsActualProductLogService heatsActualProductLogService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param heatsActualProductLog
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "炉次实绩-生产记录-分页列表查询")
+	@ApiOperation(value="炉次实绩-生产记录-分页列表查询", notes="炉次实绩-生产记录-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<HeatsActualProductLog>> queryPageList(HeatsActualProductLog heatsActualProductLog,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<HeatsActualProductLog> queryWrapper = QueryGenerator.initQueryWrapper(heatsActualProductLog, req.getParameterMap());
+		Page<HeatsActualProductLog> page = new Page<HeatsActualProductLog>(pageNo, pageSize);
+		IPage<HeatsActualProductLog> pageList = heatsActualProductLogService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param heatsActualProductLog
+	 * @return
+	 */
+	@AutoLog(value = "炉次实绩-生产记录-添加")
+	@ApiOperation(value="炉次实绩-生产记录-添加", notes="炉次实绩-生产记录-添加")
+	@RequestMapping(value = "/add", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> add(@RequestBody HeatsActualProductLog heatsActualProductLog) {
+		heatsActualProductLogService.save(heatsActualProductLog);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param heatsActualProductLog
+	 * @return
+	 */
+	@AutoLog(value = "炉次实绩-生产记录-编辑")
+	@ApiOperation(value="炉次实绩-生产记录-编辑", notes="炉次实绩-生产记录-编辑")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody HeatsActualProductLog heatsActualProductLog) {
+		heatsActualProductLogService.updateById(heatsActualProductLog);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "炉次实绩-生产记录-通过id删除")
+	@ApiOperation(value="炉次实绩-生产记录-通过id删除", notes="炉次实绩-生产记录-通过id删除")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		heatsActualProductLogService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "炉次实绩-生产记录-批量删除")
+	@ApiOperation(value="炉次实绩-生产记录-批量删除", notes="炉次实绩-生产记录-批量删除")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.heatsActualProductLogService.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<HeatsActualProductLog> queryById(@RequestParam(name="id",required=true) String id) {
+		HeatsActualProductLog heatsActualProductLog = heatsActualProductLogService.getById(id);
+		if(heatsActualProductLog==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(heatsActualProductLog);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param heatsActualProductLog
+    */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HeatsActualProductLog heatsActualProductLog) {
+        return super.exportXls(request, heatsActualProductLog, HeatsActualProductLog.class, "炉次实绩-生产记录");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, HeatsActualProductLog.class);
+    }
+
+}

+ 79 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productLog/entity/HeatsActualProductLog.java

@@ -0,0 +1,79 @@
+package org.jeecg.modules.actualControl.heatsProduct.productLog.entity;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+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:   2024-03-27
+ * @Version: V1.0
+ */
+@Data
+@TableName("heats_actual_product_log")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="heats_actual_product_log对象", description="炉次实绩-生产记录")
+public class HeatsActualProductLog implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.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 java.util.Date productTime;
+	/**二级炉号*/
+	@Excel(name = "二级炉号", width = 15)
+    @ApiModelProperty(value = "二级炉号")
+    private java.lang.String twoFurnaceNum;
+	/**熔炼号*/
+	@Excel(name = "熔炼号", width = 15)
+    @ApiModelProperty(value = "熔炼号")
+    private java.lang.String smeltingNum;
+	/**状态*/
+	@Excel(name = "状态", width = 15, dicCode = "heatsStatus")
+	@Dict(dicCode = "heatsStatus")
+    @ApiModelProperty(value = "状态")
+    private java.lang.String status;
+	/**人工确认*/
+	@Excel(name = "人工确认", width = 15, dicCode = "isConfirm")
+	@Dict(dicCode = "isConfirm")
+    @ApiModelProperty(value = "人工确认")
+    private java.lang.Integer laborConfirm;
+}

+ 14 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productLog/mapper/HeatsActualProductLogMapper.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.actualControl.heatsProduct.productLog.mapper;
+
+import org.jeecg.modules.actualControl.heatsProduct.productLog.entity.HeatsActualProductLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 炉次实绩-生产记录
+ * @Author: jeecg-boot
+ * @Date:   2024-03-27
+ * @Version: V1.0
+ */
+public interface HeatsActualProductLogMapper extends BaseMapper<HeatsActualProductLog> {
+
+}

+ 5 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productLog/mapper/xml/HeatsActualProductLogMapper.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.actualControl.heatsProduct.productLog.mapper.HeatsActualProductLogMapper">
+
+</mapper>

+ 14 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productLog/service/IHeatsActualProductLogService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.actualControl.heatsProduct.productLog.service;
+
+import org.jeecg.modules.actualControl.heatsProduct.productLog.entity.HeatsActualProductLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 炉次实绩-生产记录
+ * @Author: jeecg-boot
+ * @Date:   2024-03-27
+ * @Version: V1.0
+ */
+public interface IHeatsActualProductLogService extends IService<HeatsActualProductLog> {
+
+}

+ 19 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/actualControl/heatsProduct/productLog/service/impl/HeatsActualProductLogServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.actualControl.heatsProduct.productLog.service.impl;
+
+import org.jeecg.modules.actualControl.heatsProduct.productLog.entity.HeatsActualProductLog;
+import org.jeecg.modules.actualControl.heatsProduct.productLog.mapper.HeatsActualProductLogMapper;
+import org.jeecg.modules.actualControl.heatsProduct.productLog.service.IHeatsActualProductLogService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 炉次实绩-生产记录
+ * @Author: jeecg-boot
+ * @Date:   2024-03-27
+ * @Version: V1.0
+ */
+@Service
+public class HeatsActualProductLogServiceImpl extends ServiceImpl<HeatsActualProductLogMapper, HeatsActualProductLog> implements IHeatsActualProductLogService {
+
+}

+ 243 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/controller/BilletHotsendBaseController.java

@@ -0,0 +1,243 @@
+package org.jeecg.modules.billet.billetHotsend.controller;
+
+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.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.util.oConvertUtils;
+import org.jeecg.modules.billet.billetHotsend.entity.BilletHotsend;
+import org.jeecg.modules.billet.billetHotsend.entity.RealtimeStats;
+import org.jeecg.modules.billet.billetHotsend.entity.RulerDefaultConfig;
+import org.jeecg.modules.billet.billetHotsend.service.IBilletHotsendBaseService;
+import org.jeecg.modules.billet.billetHotsend.service.IRulerDefaultConfigService;
+import org.jeecg.modules.billet.operateLog.entity.OperateLog;
+import org.jeecg.modules.billet.operateLog.service.IOperateLogService;
+import org.jeecg.modules.billet.stackingAndLoadingVehicles.entity.StackingAndLoadingVehicles;
+import org.jeecg.modules.billet.stackingAndLoadingVehicles.service.IStackingAndLoadingVehiclesService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.*;
+
+/**
+* @Description: 钢坯热送基础信息
+* @Author: jeecg-boot
+* @Date:   2024-04-29
+* @Version: V1.0
+*/
+@Api(tags="钢坯热送基础信息")
+@RestController
+@RequestMapping("/billetHotsendBase/billetHotsendBase")
+@Slf4j
+public class BilletHotsendBaseController extends JeecgController<BilletHotsend, IBilletHotsendBaseService> {
+   @Autowired
+   private IBilletHotsendBaseService billetHotsendBaseService;
+   @Autowired
+   private IOperateLogService operateLogService;
+   @Autowired
+   private IRulerDefaultConfigService rulerDefaultConfigService;
+   @Autowired
+   private IStackingAndLoadingVehiclesService stackingAndLoadingVehiclesService;
+
+   private Integer furnace = 7000;
+
+   /**
+    * 分页列表查询
+    *
+    * @param billetHotsend
+    * @param pageNo
+    * @param pageSize
+    * @param req
+    * @return
+    */
+   @AutoLog(value = "钢坯热送基础信息-分页列表查询")
+   @ApiOperation(value="钢坯热送基础信息-分页列表查询", notes="钢坯热送基础信息-分页列表查询")
+   @GetMapping(value = "/list")
+   public Result<?> queryPageList(BilletHotsend billetHotsend,
+                                  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+                                  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+                                  HttpServletRequest req) {
+       QueryWrapper<BilletHotsend> queryWrapper = QueryGenerator.initQueryWrapper(billetHotsend, req.getParameterMap());
+       Page<BilletHotsend> page = new Page<BilletHotsend>(pageNo, pageSize);
+       IPage<BilletHotsend> pageList = billetHotsendBaseService.page(page, queryWrapper);
+       return Result.OK(pageList);
+   }
+
+
+   /**
+    *   添加
+    *
+    * @param billetHotsendBasePage
+    * @return
+    */
+//   @AutoLog(value = "钢坯热送基础信息-添加")
+//   @ApiOperation(value="钢坯热送基础信息-添加", notes="钢坯热送基础信息-添加")
+//   @PostMapping(value = "/add")
+//   public Result<?> add(@RequestBody BilletHotsendBasePage billetHotsendBasePage) {
+//       BilletHotsendBase billetHotsendBase = new BilletHotsendBase();
+//       BeanUtils.copyProperties(billetHotsendBasePage, billetHotsendBase);
+//       billetHotsendBaseService.saveMain(billetHotsendBase, billetHotsendBasePage.getBilletHotsendDescList());
+//       return Result.OK("添加成功!");
+//   }
+
+    /**
+     *   添加
+     *
+     *
+     * @return
+     */
+    @AutoLog(value = "钢坯热送基础信息-添加")
+    @ApiOperation(value="钢坯热送基础信息-添加", notes="钢坯热送基础信息-添加")
+    @PostMapping(value = "/add")
+    public Result<?> add(@RequestBody BilletHotsend billetHotsendVo) {
+        BilletHotsend billetHotsend = getNew(billetHotsendVo.getCastMachine());
+        RulerDefaultConfig last = rulerDefaultConfigService.getLast(billetHotsend.getCastMachine());
+        billetHotsend.setShiftGroup(last.getShiftGroup());
+        billetHotsend.setShift(last.getShift());
+        billetHotsend.setFurnaceNum(last.getPourHeats());
+        billetHotsend.setCreateDate(new Date());
+        billetHotsendBaseService.save(billetHotsend);
+        operateLogService.add(billetHotsend,null,BilletHotsend.class);
+        return Result.OK(billetHotsend);
+    }
+
+
+    /**
+     *  编辑
+     *
+     * @return
+     */
+    @AutoLog(value = "钢坯热送附加信息-编辑")
+    @ApiOperation(value="钢坯热送附加信息-编辑", notes="钢坯热送附加信息-编辑")
+    @PutMapping(value = "/editDesc")
+    public Result<?> editDesc(@RequestBody BilletHotsend billetHotsend) {
+        operateLogService.add(billetHotsendBaseService.getById(billetHotsend.getId()),billetHotsend,BilletHotsend.class);
+        billetHotsendBaseService.updateDesc(billetHotsend);
+        return Result.OK("编辑成功!");
+    }
+
+   /**
+    *   通过id删除
+    *
+    * @param id
+    * @return
+    */
+   @AutoLog(value = "钢坯热送基础信息-通过id删除")
+   @ApiOperation(value="钢坯热送基础信息-通过id删除", notes="钢坯热送基础信息-通过id删除")
+   @DeleteMapping(value = "/delete")
+   public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+       billetHotsendBaseService.removeById(id);
+       stackingAndLoadingVehiclesService.removeByLogId(id);
+       return Result.OK("删除成功!");
+   }
+
+   /**
+    *  批量删除
+    *
+    * @param ids
+    * @return
+    */
+   @AutoLog(value = "钢坯热送基础信息-批量删除")
+   @ApiOperation(value="钢坯热送基础信息-批量删除", notes="钢坯热送基础信息-批量删除")
+   @DeleteMapping(value = "/deleteBatch")
+   public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+       this.billetHotsendBaseService.removeBatchByIds(Arrays.asList(ids.split(",")));
+       stackingAndLoadingVehiclesService.removeByLogIds(Arrays.asList(ids.split(",")));
+       return Result.OK("批量删除成功!");
+   }
+
+   /**
+    * 通过id查询
+    *
+    * @param id
+    * @return
+    */
+   @AutoLog(value = "钢坯热送基础信息-通过id查询")
+   @ApiOperation(value="钢坯热送基础信息-通过id查询", notes="钢坯热送基础信息-通过id查询")
+   @GetMapping(value = "/queryById")
+   public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
+       BilletHotsend billetHotsend = billetHotsendBaseService.getById(id);
+       if(billetHotsend==null) {
+           return Result.error("未找到对应数据");
+       }
+       return Result.OK(billetHotsend);
+
+   }
+
+    @AutoLog(value = "棒一新增")
+    @ApiOperation(value="棒一新增", notes="棒一新增")
+    @PostMapping(value = "/addOne")
+    public Result<?> addOne(@RequestBody BilletHotsend billetHotsend) {
+        billetHotsendBaseService.addOne(billetHotsend);
+        return Result.OK("新增成功!");
+    }
+
+   /**
+   * 导出excel
+   *
+   * @param request
+   * @param billetHotsendBase
+   */
+   @RequestMapping(value = "/exportXls")
+   public ModelAndView exportXls(HttpServletRequest request, BilletHotsend billetHotsendBase) {
+       return super.exportXls(request, billetHotsendBase, BilletHotsend.class, "钢坯热送表");
+   }
+
+   /**
+   * 通过excel导入数据
+   *
+   * @param request
+   * @param response
+   * @return
+   */
+   @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+   public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+     return super.importExcel(request, response, BilletHotsend.class);
+   }
+
+    /**
+     *   添加
+     *
+     *
+     * @return
+     */
+    @AutoLog(value = "钢坯实时信息获取")
+    @ApiOperation(value="钢坯实时信息获取", notes="钢坯实时信息获取")
+    @PostMapping(value = "/getReal")
+    public Result<?> getReal() {
+        RealtimeStats realTimeDate = RealtimeStats.getRealTimeDate("");
+        return Result.OK(realTimeDate);
+    }
+
+
+   public BilletHotsend getNew(String cast){
+       BilletHotsend billetHotsendBase = new BilletHotsend();
+//       billetHotsendBase.setCreateDate(new Date());
+//       billetHotsendBase.setFurnaceNum((furnace++).toString());
+//       billetHotsendBase.setShiftGroup((int)(Math.random()*4)+"");
+//       billetHotsendBase.setShift((int)(Math.random()*2)+"");
+//       billetHotsendBase.setSize((int)(Math.random()*16)+"");
+//       billetHotsendBase.setSteel("HBK-9527");
+//       billetHotsendBase.setSpec((int)(Math.random()*7)+"");
+       billetHotsendBase.setIsUpd(false);
+//       billetHotsendBase.setCc(Math.random());
+//       billetHotsendBase.setSi(Math.random());
+//       billetHotsendBase.setMn(Math.random());
+//       billetHotsendBase.setSs(Math.random());
+//       billetHotsendBase.setPp(Math.random());
+//       billetHotsendBase.setVv(Math.random());
+//       billetHotsendBase.setNb(Math.random());
+       billetHotsendBase.setCastMachine(cast);
+       return billetHotsendBase;
+   }
+}

+ 190 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/controller/RulerDefaultConfigController.java

@@ -0,0 +1,190 @@
+package org.jeecg.modules.billet.billetHotsend.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+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.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.util.oConvertUtils;
+import org.jeecg.modules.billet.billetHotsend.entity.RealtimeStats;
+import org.jeecg.modules.billet.billetHotsend.entity.RulerDefaultConfig;
+import org.jeecg.modules.billet.billetHotsend.service.IRulerDefaultConfigService;
+import org.jeecg.modules.billet.stackingAndLoadingVehicles.entity.StackingAndLoadingVehicles;
+import org.jeecg.modules.billet.stackingAndLoadingVehicles.service.IStackingAndLoadingVehiclesService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+* @Description: 定尺默认配置
+* @Author: jeecg-boot
+* @Date:   2024-04-29
+* @Version: V1.0
+*/
+@Api(tags="定尺默认配置")
+@RestController
+@RequestMapping("/rulerDefaultConfig/rulerDefaultConfig")
+@Slf4j
+public class RulerDefaultConfigController extends JeecgController<RulerDefaultConfig, IRulerDefaultConfigService> {
+   @Autowired
+   private IRulerDefaultConfigService rulerDefaultConfigService;
+
+   @Autowired
+   private IStackingAndLoadingVehiclesService savService;
+
+   /**
+    * 分页列表查询
+    *
+    * @param rulerDefaultConfig
+    * @param pageNo
+    * @param pageSize
+    * @param req
+    * @return
+    */
+   @AutoLog(value = "定尺默认配置-分页列表查询")
+   @ApiOperation(value="定尺默认配置-分页列表查询", notes="定尺默认配置-分页列表查询")
+   @GetMapping(value = "/list")
+   public Result<?> queryPageList(RulerDefaultConfig rulerDefaultConfig,
+                                  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+                                  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+                                  HttpServletRequest req) {
+       QueryWrapper<RulerDefaultConfig> queryWrapper = QueryGenerator.initQueryWrapper(rulerDefaultConfig, req.getParameterMap());
+       Page<RulerDefaultConfig> page = new Page<RulerDefaultConfig>(pageNo, pageSize);
+       IPage<RulerDefaultConfig> pageList = rulerDefaultConfigService.page(page, queryWrapper);
+       return Result.OK(pageList);
+   }
+
+   /**
+    *   添加
+    *
+    * @param rulerDefaultConfig
+    * @return
+    */
+   @AutoLog(value = "定尺默认配置-添加")
+   @ApiOperation(value="定尺默认配置-添加", notes="定尺默认配置-添加")
+   @PostMapping(value = "/add")
+   public Result<?> add(@RequestBody RulerDefaultConfig rulerDefaultConfig) {
+       RulerDefaultConfig last = rulerDefaultConfigService.getLast(rulerDefaultConfig.getCastMachine());
+       if(last!=null&& oConvertUtils.isNotEmpty(last.getId())){
+           rulerDefaultConfig.setId(last.getId());
+           if(oConvertUtils.isNotEmpty(rulerDefaultConfig.getCarNum())
+                   &&!rulerDefaultConfig.getCarNum().equals(last.getCarNum())){
+               List<StackingAndLoadingVehicles> lastList = savService.getListByCarNum(last.getCarNum());
+               List<StackingAndLoadingVehicles> newList = savService.getListByCarNum(rulerDefaultConfig.getCarNum());
+               if(oConvertUtils.listIsEmpty(newList)){
+                   if(oConvertUtils.listIsNotEmpty(lastList)){
+                       LambdaUpdateWrapper<StackingAndLoadingVehicles> lambdaUpdateWrapper = new LambdaUpdateWrapper<StackingAndLoadingVehicles>();
+                       lambdaUpdateWrapper.eq(StackingAndLoadingVehicles::getCarNum, last.getCarNum()).set(StackingAndLoadingVehicles::getCarNum, rulerDefaultConfig.getCarNum());
+                       savService.update(lambdaUpdateWrapper);
+                   }
+               }else{
+                   return Result.error("该车正在装车!");
+               }
+           }
+       }
+       rulerDefaultConfigService.saveOrUpdate(rulerDefaultConfig);
+       return Result.OK("修改成功!");
+   }
+
+   /**
+    *  编辑
+    *
+    * @param rulerDefaultConfig
+    * @return
+    */
+   @AutoLog(value = "定尺默认配置-编辑")
+   @ApiOperation(value="定尺默认配置-编辑", notes="定尺默认配置-编辑")
+   @PutMapping(value = "/edit")
+   public Result<?> edit(@RequestBody RulerDefaultConfig rulerDefaultConfig) {
+       rulerDefaultConfigService.updateById(rulerDefaultConfig);
+       return Result.OK("编辑成功!");
+   }
+
+   /**
+    *   通过id删除
+    *
+    * @param id
+    * @return
+    */
+   @AutoLog(value = "定尺默认配置-通过id删除")
+   @ApiOperation(value="定尺默认配置-通过id删除", notes="定尺默认配置-通过id删除")
+   @DeleteMapping(value = "/delete")
+   public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+       rulerDefaultConfigService.removeById(id);
+       return Result.OK("删除成功!");
+   }
+
+   /**
+    *  批量删除
+    *
+    * @param ids
+    * @return
+    */
+   @AutoLog(value = "定尺默认配置-批量删除")
+   @ApiOperation(value="定尺默认配置-批量删除", notes="定尺默认配置-批量删除")
+   @DeleteMapping(value = "/deleteBatch")
+   public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+       this.rulerDefaultConfigService.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<?> queryById(@RequestParam(name="id",required=true) String id) {
+       RulerDefaultConfig rulerDefaultConfig = rulerDefaultConfigService.getById(id);
+       if(rulerDefaultConfig==null) {
+           return Result.error("未找到对应数据");
+       }
+       return Result.OK(rulerDefaultConfig);
+   }
+
+   /**
+   * 导出excel
+   *
+   * @param request
+   * @param rulerDefaultConfig
+   */
+   @RequestMapping(value = "/exportXls")
+   public ModelAndView exportXls(HttpServletRequest request, RulerDefaultConfig rulerDefaultConfig) {
+       return super.exportXls(request, rulerDefaultConfig, RulerDefaultConfig.class, "定尺默认配置");
+   }
+
+   /**
+     * 通过excel导入数据
+   *
+   * @param request
+   * @param response
+   * @return
+   */
+   @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+   public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+       return super.importExcel(request, response, RulerDefaultConfig.class);
+   }
+
+    @AutoLog(value = "获取最新定尺默认配置")
+    @ApiOperation(value="获取最新定尺默认配置", notes="获取最新定尺默认配置")
+    @PostMapping(value = "/queryById")
+    public Result<?> getLast(@RequestParam(name = "castMachine",defaultValue = "5") String castMachine) {
+        return Result.OK(rulerDefaultConfigService.getLast(castMachine));
+    }
+
+}

+ 322 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/entity/BilletHotsend.java

@@ -0,0 +1,322 @@
+package org.jeecg.modules.billet.billetHotsend.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.jeecg.common.aspect.annotation.Dict;
+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:   2024-04-29
+ * @Version: V1.0
+ */
+@Data
+@TableName("billet_hotsend")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="billet_hotsend对象", description="钢坯热送")
+public class BilletHotsend implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**id*/
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private java.lang.String id;
+    /**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+    /**创建日期*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+    /**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+    /**更新日期*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+    /**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+    /**日期*/
+    @Excel(name = "日期", width = 20, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "日期")
+    private java.util.Date createDate;
+    /**炉号*/
+    @Excel(name = "炉号", width = 15)
+    @ApiModelProperty(value = "炉号")
+    private java.lang.String furnaceNum;
+    /**班组*/
+    @Excel(name = "班组", width = 15)
+    @ApiModelProperty(value = "班组")
+    @Dict(dicCode = "lg_bz")
+    private java.lang.String shiftGroup;
+    /**班别*/
+    @Excel(name = "班别", width = 15)
+    @Dict(dicCode = "lg_bb")
+    @ApiModelProperty(value = "班别")
+    private java.lang.String shift;
+    /**定尺*/
+    @Excel(name = "定尺", width = 15)
+    @ApiModelProperty(value = "定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String size;
+    /**钢种*/
+    @Excel(name = "钢种", width = 15)
+    @ApiModelProperty(value = "钢种")
+    private java.lang.String steel;
+    /**规格*/
+    @Excel(name = "规格", width = 15)
+    @ApiModelProperty(value = "规格")
+    @Dict(dicCode = "billet_spec")
+    private java.lang.String spec;
+    /**定重*/
+    @Excel(name = "定重", width = 15)
+    @ApiModelProperty(value = "定重")
+    private java.lang.Double decideWeight;
+    /**总支数*/
+    @Excel(name = "总支数", width = 15)
+    @ApiModelProperty(value = "总支数")
+    private java.lang.Integer amountTotal;
+    /**出坯量*/
+    @Excel(name = "出坯量", width = 15)
+    @ApiModelProperty(value = "出坯量")
+    private java.lang.Double blankOutput;
+    /**C*/
+    @Excel(name = "C", width = 15)
+    @ApiModelProperty(value = "C")
+    private java.lang.Double cc;
+    /**Mn*/
+    @Excel(name = "Mn", width = 15)
+    @ApiModelProperty(value = "Mn")
+    private java.lang.Double mn;
+    /**Si*/
+    @Excel(name = "Si", width = 15)
+    @ApiModelProperty(value = "Si")
+    private java.lang.Double si;
+    /**S*/
+    @Excel(name = "S", width = 15)
+    @ApiModelProperty(value = "S")
+    private java.lang.Double ss;
+    /**P*/
+    @Excel(name = "P", width = 15)
+    @ApiModelProperty(value = "P")
+    private java.lang.Double pp;
+    /**V*/
+    @Excel(name = "V", width = 15)
+    @ApiModelProperty(value = "V")
+    private java.lang.Double vv;
+    /**Nb*/
+    @Excel(name = "Nb", width = 15)
+    @ApiModelProperty(value = "Nb")
+    private java.lang.Double nb;
+    /**是否已编辑*/
+    @Excel(name = "是否已编辑", width = 15)
+    @ApiModelProperty(value = "是否已编辑")
+    private java.lang.Boolean isUpd;
+    /**castMachine*/
+    @Excel(name = "castMachine", width = 15)
+    @ApiModelProperty(value = "castMachine")
+    private java.lang.String castMachine;
+    /**棒一支数*/
+    @Excel(name = "棒一支数", width = 15)
+    @ApiModelProperty(value = "棒一支数")
+    private java.lang.String amountOne;
+    /**棒一定尺*/
+    @Excel(name = "棒一定尺", width = 15)
+    @ApiModelProperty(value = "棒一定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeOne;
+    /**棒一起始根*/
+    @Excel(name = "棒一起始根", width = 15)
+    @ApiModelProperty(value = "棒一起始根")
+    private java.lang.String startNumOne;
+    /**棒一终止根*/
+    @Excel(name = "棒一终止根", width = 15)
+    @ApiModelProperty(value = "棒一终止根")
+    private java.lang.String endNumOne;
+    /**棒一车号*/
+    @Excel(name = "棒一车号", width = 15)
+    @ApiModelProperty(value = "棒一车号")
+    private java.lang.String carNumOne;
+    /**棒一垛位*/
+    @Excel(name = "棒一垛位", width = 15)
+    @ApiModelProperty(value = "棒一垛位")
+    @Dict(dicCode = "stack_code")
+    private java.lang.String stackAddrOne;
+    /**棒二支数*/
+    @Excel(name = "棒二支数", width = 15)
+    @ApiModelProperty(value = "棒二支数")
+    private java.lang.String amountTwo;
+    /**棒二定尺*/
+    @Excel(name = "棒二定尺", width = 15)
+    @ApiModelProperty(value = "棒二定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeTwo;
+    /**棒二起始根*/
+    @Excel(name = "棒二起始根", width = 15)
+    @ApiModelProperty(value = "棒二起始根")
+    private java.lang.String startNumTwo;
+    /**棒二终止根*/
+    @Excel(name = "棒二终止根", width = 15)
+    @ApiModelProperty(value = "棒二终止根")
+    private java.lang.String endNumTwo;
+    /**棒二车号*/
+    @Excel(name = "棒二车号", width = 15)
+    @ApiModelProperty(value = "棒二车号")
+    private java.lang.String carNumTwo;
+    /**棒二垛位*/
+    @Excel(name = "棒二垛位", width = 15)
+    @ApiModelProperty(value = "棒二垛位")
+    @Dict(dicCode = "stack_code")
+    private java.lang.String stackAddrTwo;
+    /**棒三支数*/
+    @Excel(name = "棒三支数", width = 15)
+    @ApiModelProperty(value = "棒三支数")
+    private java.lang.String amountThree;
+    /**棒三定尺*/
+    @Excel(name = "棒三定尺", width = 15)
+    @ApiModelProperty(value = "棒三定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeThree;
+    /**棒三起始根*/
+    @Excel(name = "棒三起始根", width = 15)
+    @ApiModelProperty(value = "棒三起始根")
+    private java.lang.String startNumThree;
+    /**棒三终止根*/
+    @Excel(name = "棒三终止根", width = 15)
+    @ApiModelProperty(value = "棒三终止根")
+    private java.lang.String endNumThree;
+    /**棒三车号*/
+    @Excel(name = "棒三车号", width = 15)
+    @ApiModelProperty(value = "棒三车号")
+    private java.lang.String carNumThree;
+    /**棒三垛位*/
+    @Excel(name = "棒三垛位", width = 15)
+    @ApiModelProperty(value = "棒三垛位")
+    @Dict(dicCode = "stack_code")
+    private java.lang.String stackAddrThree;
+    /**堆垛支数*/
+    @Excel(name = "堆垛支数", width = 15)
+    @ApiModelProperty(value = "堆垛支数")
+    private java.lang.String amountStack;
+    /**棒三定尺*/
+    @Excel(name = "堆垛定尺", width = 15)
+    @ApiModelProperty(value = "堆垛定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeStack;
+    /**堆垛起始根*/
+    @Excel(name = "堆垛起始根", width = 15)
+    @ApiModelProperty(value = "堆垛起始根")
+    private java.lang.String startNumStack;
+    /**堆垛终止根*/
+    @Excel(name = "堆垛终止根", width = 15)
+    @ApiModelProperty(value = "堆垛终止根")
+    private java.lang.String endNumStack;
+    /**堆垛车号*/
+    @Excel(name = "堆垛车号", width = 15)
+    @ApiModelProperty(value = "堆垛车号")
+    private java.lang.String carNumStack;
+    /**垛位*/
+    @Excel(name = "堆垛垛位", width = 15)
+    @ApiModelProperty(value = "堆垛垛位")
+    @Dict(dicCode = "stack_code")
+    private java.lang.String stackAddr;
+    /**判废支数*/
+    @Excel(name = "判废支数", width = 15)
+    @ApiModelProperty(value = "判废支数")
+    private java.lang.String amountWaste;
+    @Excel(name = "判废定尺", width = 15)
+    @ApiModelProperty(value = "判废定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeWaste;
+    /**判废起始根*/
+    @Excel(name = "判废起始根", width = 15)
+    @ApiModelProperty(value = "判废起始根")
+    private java.lang.String startNumWaste;
+    /**判废终止根*/
+    @Excel(name = "判废终止根", width = 15)
+    @ApiModelProperty(value = "判废终止根")
+    private java.lang.String endNumWaste;
+    /**判废车号*/
+    @Excel(name = "判废车号", width = 15)
+    @ApiModelProperty(value = "判废车号")
+    private java.lang.String carNumWaste;
+    /**判废垛位*/
+    @Excel(name = "判废垛位", width = 15)
+    @ApiModelProperty(value = "判废垛位")
+    @Dict(dicCode = "stack_code")
+    private java.lang.String stackAddrWaste;
+    /**高线支数*/
+    @Excel(name = "高线支数", width = 15)
+    @ApiModelProperty(value = "高线支数")
+    private java.lang.String amountHeight;
+    @Excel(name = "高线定尺", width = 15)
+    @ApiModelProperty(value = "高线定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeHeight;
+    /**高线起始根*/
+    @Excel(name = "高线起始根", width = 15)
+    @ApiModelProperty(value = "高线起始根")
+    private java.lang.String startNumHeight;
+    /**高线终止根*/
+    @Excel(name = "高线终止根", width = 15)
+    @ApiModelProperty(value = "高线终止根")
+    private java.lang.String endNumHeight;
+    /**高线车号*/
+    @Excel(name = "高线车号", width = 15)
+    @ApiModelProperty(value = "高线车号")
+    private java.lang.String carNumHeight;
+    /**高线垛位*/
+    @Excel(name = "高线垛位", width = 15)
+    @ApiModelProperty(value = "高线垛位")
+    @Dict(dicCode = "stack_code")
+    private java.lang.String stackAddrHeight;
+    @Excel(name = "外运支数", width = 15)
+    @ApiModelProperty(value = "外运支数")
+    private java.lang.String amountOut;
+    @Excel(name = "外运定尺", width = 15)
+    @ApiModelProperty(value = "外运定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeOut;
+    /**高线起始根*/
+    @Excel(name = "外运起始根", width = 15)
+    @ApiModelProperty(value = "外运起始根")
+    private java.lang.String startNumOut;
+    /**高线终止根*/
+    @Excel(name = "外运终止根", width = 15)
+    @ApiModelProperty(value = "高线终止根")
+    private java.lang.String endNumOut;
+    /**高线车号*/
+    @Excel(name = "外运车号", width = 15)
+    @ApiModelProperty(value = "外运车号")
+    private java.lang.String carNumOut;
+    /**高线垛位*/
+    @Excel(name = "外运垛位", width = 15)
+    @ApiModelProperty(value = "外运垛位")
+    @Dict(dicCode = "stack_code")
+    private java.lang.String stackAddrOut;
+    /**高线车号*/
+    @Excel(name = "步骤", width = 15)
+    @ApiModelProperty(value = "步骤")
+    @Dict(dicCode = "lg_cybz")
+    private java.lang.String bz;
+}
+

+ 54 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/entity/RealtimeStats.java

@@ -0,0 +1,54 @@
+package org.jeecg.modules.billet.billetHotsend.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+
+@ApiModel(value="钢坯生产实时信息", description="钢坯生产实时信息")
+@Data
+public class RealtimeStats {
+
+    @ApiModelProperty(value = "铸机")
+    private String castMachine;
+
+    @ApiModelProperty(value = "浇铸炉次")
+    private String pourHeats;
+
+    @ApiModelProperty(value = "生产支数")
+    private Integer productAmount;
+
+    @ApiModelProperty(value = "废品支数")
+    private Integer wasteAmount;
+
+    @ApiModelProperty(value = "热送支数")
+    private Integer hotsendAmount;
+
+    @ApiModelProperty(value = "热装支数")
+    private Integer hotfeignAmount;
+
+    @ApiModelProperty(value = "堆垛支数")
+    private Integer stackAmount;
+
+    @ApiModelProperty(value = "当班产量")
+    private Integer shiftProduct;
+
+    public static Integer amount = 1000;
+
+    public static RealtimeStats getRealTimeDate(String castMachine){
+        RealtimeStats realtimeStats = new RealtimeStats();
+        realtimeStats.setCastMachine(castMachine);
+        realtimeStats.setHotfeignAmount((int) (amount*0.5));
+        realtimeStats.setHotsendAmount((int) (amount*0.2));
+        realtimeStats.setPourHeats("1001");
+        realtimeStats.setProductAmount(amount);
+        realtimeStats.setStackAmount((int) (amount*0.2));
+        realtimeStats.setWasteAmount((int) (amount*0.1));
+        realtimeStats.setShiftProduct((int) (amount*0.4));
+        amount+=10;
+        return realtimeStats;
+    }
+}

+ 182 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/entity/RulerDefaultConfig.java

@@ -0,0 +1,182 @@
+package org.jeecg.modules.billet.billetHotsend.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+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.jeecg.common.aspect.annotation.Dict;
+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:   2024-04-29
+ * @Version: V1.0
+ */
+@Data
+@TableName("ruler_default_config")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="ruler_default_config对象", description="定尺默认配置")
+public class RulerDefaultConfig 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;
+	/**定尺1*/
+	@Excel(name = "定尺1", width = 15)
+    @ApiModelProperty(value = "定尺1")
+    @Dict(dicCode = "lg_dcgg")
+    private String sizeOne;
+    /**支数1*/
+    @Excel(name = "支数1", width = 15)
+    @ApiModelProperty(value = "支数1")
+    private String amountOne;
+	/**棒线1*/
+	@Excel(name = "棒线1", width = 15)
+    @ApiModelProperty(value = "棒线1")
+    @Dict(dicCode = "lg_ssfs")
+    private String barlineOne;
+	/**铸流1*/
+	@Excel(name = "铸流1", width = 15)
+    @ApiModelProperty(value = "铸流1")
+    private String castStreamOne;
+	/**定尺2*/
+	@Excel(name = "定尺2", width = 15)
+    @ApiModelProperty(value = "定尺2")
+    @Dict(dicCode = "lg_dcgg")
+    private String sizeTwo;
+    /**支数2*/
+    @Excel(name = "支数2", width = 15)
+    @ApiModelProperty(value = "支数2")
+    private String amountTwo;
+	/**棒线2*/
+	@Excel(name = "棒线2", width = 15)
+    @ApiModelProperty(value = "棒线2")
+    @Dict(dicCode = "lg_ssfs")
+    private String barlineTwo;
+	/**铸流2*/
+	@Excel(name = "铸流2", width = 15)
+    @ApiModelProperty(value = "铸流2")
+    private String castStreamTwo;
+	/**定尺3*/
+	@Excel(name = "定尺3", width = 15)
+    @ApiModelProperty(value = "定尺3")
+    @Dict(dicCode = "lg_dcgg")
+    private String sizeThree;
+    /**支数3*/
+    @Excel(name = "支数3", width = 15)
+    @ApiModelProperty(value = "支数3")
+    private String amountThree;
+	/**棒线3*/
+	@Excel(name = "棒线3", width = 15)
+    @ApiModelProperty(value = "棒线3")
+    @Dict(dicCode = "lg_ssfs")
+    private String barlineThree;
+	/**铸流3*/
+	@Excel(name = "铸流3", width = 15)
+    @ApiModelProperty(value = "铸流3")
+    private String castStreamThree;
+	/**定尺4*/
+	@Excel(name = "定尺4", width = 15)
+    @ApiModelProperty(value = "定尺4")
+    @Dict(dicCode = "lg_dcgg")
+    private String sizeFour;
+    /**支数1*/
+    @Excel(name = "支数4", width = 15)
+    @ApiModelProperty(value = "支数4")
+    private String amountFour;
+	/**棒线4*/
+	@Excel(name = "棒线4", width = 15)
+    @ApiModelProperty(value = "棒线4")
+    @Dict(dicCode = "lg_ssfs")
+    private String barlineFour;
+	/**铸流4*/
+	@Excel(name = "铸流4", width = 15)
+    @ApiModelProperty(value = "铸流4")
+    private String castStreamFour;
+
+    @ApiModelProperty(value = "铸机")
+    @Dict(dicCode = "lg_zj")
+    private String castMachine;
+
+    @ApiModelProperty(value = "浇铸炉次")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String pourHeats;
+
+    @ApiModelProperty(value = "生产支数")
+    private Integer productAmount;
+
+    @ApiModelProperty(value = "废品支数")
+    private Integer wasteAmount;
+
+    @ApiModelProperty(value = "热送支数")
+    private Integer hotsendAmount;
+
+    @ApiModelProperty(value = "热装支数")
+    private Integer hotfeignAmount;
+
+    @ApiModelProperty(value = "堆垛支数")
+    private Integer stackAmount;
+
+    @ApiModelProperty(value = "当班产量")
+    private Integer shiftProduct;
+
+    @ApiModelProperty(value = "当班总重")
+    private Double shiftWeight;
+
+    @ApiModelProperty(value = "班组")
+    @Dict(dicCode = "lg_bz")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String shiftGroup;
+
+    @ApiModelProperty(value = "班别")
+    @Dict(dicCode = "lg_bb")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String shift;
+
+    @ApiModelProperty(value = "当前出车号")
+    private String cureentCarTimes;
+
+    @ApiModelProperty(value = "车号")
+    @Dict(dicCode = "lg_car")
+    private String carNum;
+
+    @ApiModelProperty(value = "车号补充")
+    @Dict(dicCode = "lg_car")
+    private String carNume;
+
+    @ApiModelProperty(value = "当前出车号")
+    private String cureentCarTimese;
+
+    @ApiModelProperty(value = "起垛支数")
+    private Integer outAmount;
+}

+ 14 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/mapper/BilletHotsendBaseMapper.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.billet.billetHotsend.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.billet.billetHotsend.entity.BilletHotsend;
+
+/**
+ * @Description: 钢坯热送基础信息
+ * @Author: jeecg-boot
+ * @Date:   2024-04-29
+ * @Version: V1.0
+ */
+public interface BilletHotsendBaseMapper extends BaseMapper<BilletHotsend> {
+
+}

+ 17 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/mapper/RulerDefaultConfigMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.billet.billetHotsend.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.billet.billetHotsend.entity.RulerDefaultConfig;
+
+/**
+ * @Description: 定尺默认配置
+ * @Author: jeecg-boot
+ * @Date:   2024-04-29
+ * @Version: V1.0
+ */
+public interface RulerDefaultConfigMapper extends BaseMapper<RulerDefaultConfig> {
+
+}

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

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

+ 21 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/service/IBilletHotsendBaseService.java

@@ -0,0 +1,21 @@
+package org.jeecg.modules.billet.billetHotsend.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.billet.billetHotsend.entity.BilletHotsend;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 钢坯热送基础信息
+ * @Author: jeecg-boot
+ * @Date:   2024-04-29
+ * @Version: V1.0
+ */
+public interface IBilletHotsendBaseService extends IService<BilletHotsend> {
+
+	void updateDesc(BilletHotsend billetHotsendVo);
+
+    void addOne(BilletHotsend billetHotsend);
+}

+ 16 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/service/IRulerDefaultConfigService.java

@@ -0,0 +1,16 @@
+package org.jeecg.modules.billet.billetHotsend.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.billet.billetHotsend.entity.RulerDefaultConfig;
+
+/**
+ * @Description: 定尺默认配置
+ * @Author: jeecg-boot
+ * @Date:   2024-04-29
+ * @Version: V1.0
+ */
+public interface IRulerDefaultConfigService extends IService<RulerDefaultConfig> {
+
+    public RulerDefaultConfig getLast(String castMachine);
+
+}

+ 187 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/service/impl/BilletHotsendBaseServiceImpl.java

@@ -0,0 +1,187 @@
+package org.jeecg.modules.billet.billetHotsend.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.gson.internal.$Gson$Types;
+import io.netty.util.internal.StringUtil;
+import org.jeecg.modules.billet.billetHotsend.entity.BilletHotsend;
+import org.jeecg.modules.billet.billetHotsend.entity.RulerDefaultConfig;
+import org.jeecg.modules.billet.billetHotsend.mapper.BilletHotsendBaseMapper;
+import org.jeecg.modules.billet.billetHotsend.service.IBilletHotsendBaseService;
+import org.jeecg.modules.billet.billetHotsend.service.IRulerDefaultConfigService;
+import org.jeecg.modules.billet.storageBill.entity.StorageBill;
+import org.jeecg.modules.billet.storageBill.entity.StorageBillModel;
+import org.jeecg.modules.billet.storageBill.service.IStorageBillModelService;
+import org.jeecg.modules.billet.storageBill.service.IStorageBillService;
+import org.jeecg.modules.billet.storageCarLog.entity.StorageCarLog;
+import org.jeecg.modules.billet.storageCarLog.service.IStorageCarLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.Date;
+
+/**
+ * @Description: 钢坯热送基础信息
+ * @Author: jeecg-boot
+ * @Date:   2024-04-29
+ * @Version: V1.0
+ */
+@Service
+public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseMapper, BilletHotsend> implements IBilletHotsendBaseService {
+
+	@Autowired
+	private BilletHotsendBaseMapper billetHotsendBaseMapper;
+	@Autowired
+	private IStorageCarLogService storageCarLogService;
+	@Autowired
+	private IRulerDefaultConfigService rulerDefaultConfigService;
+	@Autowired
+	private IStorageBillService storageBillService;
+	@Autowired
+	private IStorageBillModelService storageBillModelService;
+
+
+	@Override
+	public void updateDesc(BilletHotsend billetHotsend) {
+		RulerDefaultConfig last = rulerDefaultConfigService.getLast(billetHotsend.getCastMachine());
+		boolean isFirst = false;
+		if(billetHotsend.getAmountTotal()==null||billetHotsend.getAmountTotal()==0){
+			isFirst = true;
+		}
+		billetHotsend.setAmountTotal(
+				(StringUtil.isNullOrEmpty(billetHotsend.getAmountOne())?0:Integer.valueOf(billetHotsend.getAmountOne()))
+						+(StringUtil.isNullOrEmpty(billetHotsend.getAmountTwo())?0:Integer.valueOf(billetHotsend.getAmountTwo()))
+						+(StringUtil.isNullOrEmpty(billetHotsend.getAmountThree())?0:Integer.valueOf(billetHotsend.getAmountThree()))
+						+(StringUtil.isNullOrEmpty(billetHotsend.getAmountOut())?0:Integer.valueOf(billetHotsend.getAmountOut()))
+						+(StringUtil.isNullOrEmpty(billetHotsend.getAmountHeight())?0:Integer.valueOf(billetHotsend.getAmountHeight()))
+						+(StringUtil.isNullOrEmpty(billetHotsend.getAmountWaste())?0:Integer.valueOf(billetHotsend.getAmountWaste()))
+						+(StringUtil.isNullOrEmpty(billetHotsend.getAmountStack())?0:Integer.valueOf(billetHotsend.getAmountStack()))
+		);
+		billetHotsendBaseMapper.updateById(billetHotsend);
+		if(isFirst)last.setShiftProduct(last.getShiftProduct()+billetHotsend.getAmountTotal());
+		rulerDefaultConfigService.updateById(last);
+		if (billetHotsend.getIsUpd()!=null&&billetHotsend.getIsUpd()==true){
+			for (int i = 0; i <= 6; i++) {
+				StorageCarLog storageCarLog = new StorageCarLog();
+				storageCarLog.setCastas(billetHotsend.getCastMachine());
+				storageCarLog.setDataTime(new Date());
+				storageCarLog.setFurnceNum(billetHotsend.getFurnaceNum());
+				storageCarLog.setShift(billetHotsend.getShift());
+				storageCarLog.setShiftGroup(billetHotsend.getShiftGroup());
+				storageCarLog.setSpec(billetHotsend.getSpec());
+				storageCarLog.setSteel(billetHotsend.getSteel());
+				switch (i){
+					case 0:
+						if(StringUtil.isNullOrEmpty(billetHotsend.getAmountOne())
+								&&StringUtil.isNullOrEmpty(billetHotsend.getCarNumOne())
+								&&StringUtil.isNullOrEmpty(billetHotsend.getSizeOne()))break;
+						storageCarLog.setAmount(billetHotsend.getAmountOne());
+						storageCarLog.setCarNm(billetHotsend.getCarNumOne());
+						storageCarLog.setDestination(i+"");
+						storageCarLog.setSize(billetHotsend.getSizeOne());
+						Long count = storageCarLogService.count(new LambdaQueryWrapper<StorageCarLog>().eq(StorageCarLog::getCarNm, billetHotsend.getCarNumOne()))+1;
+						storageCarLog.setOutCarNum(count.toString());
+						break;
+					case 1:
+						if(StringUtil.isNullOrEmpty(billetHotsend.getAmountTwo())
+								&&StringUtil.isNullOrEmpty(billetHotsend.getCarNumTwo())
+								&&StringUtil.isNullOrEmpty(billetHotsend.getSizeTwo()))break;
+						storageCarLog.setAmount(billetHotsend.getAmountTwo());
+						storageCarLog.setCarNm(billetHotsend.getCarNumTwo());
+						storageCarLog.setDestination(i+"");
+						storageCarLog.setSize(billetHotsend.getSizeTwo());
+						Long count1 = storageCarLogService.count(new LambdaQueryWrapper<StorageCarLog>().eq(StorageCarLog::getCarNm, billetHotsend.getCarNumTwo()))+1;
+						storageCarLog.setOutCarNum(count1.toString());
+						break;
+					case 2:
+						if(StringUtil.isNullOrEmpty(billetHotsend.getAmountThree())
+								&&StringUtil.isNullOrEmpty(billetHotsend.getCarNumThree())
+								&&StringUtil.isNullOrEmpty(billetHotsend.getSizeThree()))break;
+						storageCarLog.setAmount(billetHotsend.getAmountThree());
+						storageCarLog.setCarNm(billetHotsend.getCarNumThree());
+						storageCarLog.setDestination(i+"");
+						storageCarLog.setSize(billetHotsend.getSizeThree());
+						Long count2 = storageCarLogService.count(new LambdaQueryWrapper<StorageCarLog>().eq(StorageCarLog::getCarNm, billetHotsend.getCarNumThree()))+1;
+						storageCarLog.setOutCarNum(count2.toString());
+						break;
+					case 3:
+						if(StringUtil.isNullOrEmpty(billetHotsend.getAmountHeight())
+								&&StringUtil.isNullOrEmpty(billetHotsend.getCarNumHeight())
+								&&StringUtil.isNullOrEmpty(billetHotsend.getSizeHeight()))break;
+						storageCarLog.setAmount(billetHotsend.getAmountHeight());
+						storageCarLog.setCarNm(billetHotsend.getCarNumHeight());
+						storageCarLog.setDestination(i+"");
+						storageCarLog.setSize(billetHotsend.getSizeHeight());
+						Long count3 = storageCarLogService.count(new LambdaQueryWrapper<StorageCarLog>().eq(StorageCarLog::getCarNm, billetHotsend.getCarNumHeight()))+1;
+						storageCarLog.setOutCarNum(count3.toString());
+						break;
+					case 4:
+						if(StringUtil.isNullOrEmpty(billetHotsend.getAmountOut())
+								&&StringUtil.isNullOrEmpty(billetHotsend.getCarNumOut())
+								&&StringUtil.isNullOrEmpty(billetHotsend.getSizeOut()))break;
+						storageCarLog.setAmount(billetHotsend.getAmountOut());
+						storageCarLog.setCarNm(billetHotsend.getCarNumOut());
+						storageCarLog.setDestination(i+"");
+						storageCarLog.setSize(billetHotsend.getSizeOut());
+						Long count4 = storageCarLogService.count(new LambdaQueryWrapper<StorageCarLog>().eq(StorageCarLog::getCarNm, billetHotsend.getCarNumOut()))+1;
+						storageCarLog.setOutCarNum(count4.toString());
+						break;
+					case 5:
+						if(StringUtil.isNullOrEmpty(billetHotsend.getAmountWaste())
+								&&StringUtil.isNullOrEmpty(billetHotsend.getCarNumWaste())
+								&&StringUtil.isNullOrEmpty(billetHotsend.getSizeWaste()))break;
+						storageCarLog.setAmount(billetHotsend.getAmountWaste());
+						storageCarLog.setCarNm(billetHotsend.getCarNumWaste());
+						storageCarLog.setDestination(i+"");
+						storageCarLog.setSize(billetHotsend.getSizeWaste());
+						Long count5 = storageCarLogService.count(new LambdaQueryWrapper<StorageCarLog>().eq(StorageCarLog::getCarNm, billetHotsend.getCarNumWaste()))+1;
+						storageCarLog.setOutCarNum(count5.toString());
+						break;
+					case 6:
+						if(StringUtil.isNullOrEmpty(billetHotsend.getAmountStack())
+								&&StringUtil.isNullOrEmpty(billetHotsend.getCarNumStack())
+								&&StringUtil.isNullOrEmpty(billetHotsend.getSizeStack()))break;
+						storageCarLog.setAmount(billetHotsend.getAmountStack());
+						storageCarLog.setCarNm(billetHotsend.getCarNumStack());
+						storageCarLog.setDestination(i+"");
+						storageCarLog.setSize(billetHotsend.getSizeStack());
+						Long count6 = storageCarLogService.count(new LambdaQueryWrapper<StorageCarLog>().eq(StorageCarLog::getCarNm, billetHotsend.getCarNumStack()))+1;
+						storageCarLog.setOutCarNum(count6.toString());
+						break;
+				}
+				storageCarLogService.save(storageCarLog);
+			}
+		}
+	}
+
+	@Override
+	public void addOne(BilletHotsend billetHotsend) {
+		RulerDefaultConfig last = rulerDefaultConfigService.getLast(billetHotsend.getCastMachine());
+		StorageBillModel storageBillModel = storageBillModelService.getOne(new LambdaQueryWrapper<StorageBillModel>().eq(StorageBillModel::getCastMachine,billetHotsend.getCastMachine()));
+		billetHotsend.setAmountTotal(StringUtil.isNullOrEmpty(billetHotsend.getAmountOne())?(StringUtil.isNullOrEmpty(billetHotsend.getAmountHeight())?0:Integer.valueOf(billetHotsend.getAmountHeight())):Integer.valueOf(billetHotsend.getAmountOne()));
+		StorageBill storageBill = new StorageBill();
+		storageBill.setAmountTotal(billetHotsend.getAmountTotal());
+		storageBill.setCastMachine(billetHotsend.getCastMachine());
+		storageBill.setAmountOne(billetHotsend.getAmountTotal());
+		storageBill.setCarNum("辊道");
+		storageBill.setLibrary("4");
+		storageBill.setBtype("0");
+		storageBill.setSize(billetHotsend.getSizeOne());
+		storageBill.setSpec(billetHotsend.getSpec());
+		if(last!=null){
+			billetHotsend.setFurnaceNum(last.getPourHeats());
+			billetHotsend.setBz("4");
+			billetHotsend.setShift(last.getShift());
+			billetHotsend.setShiftGroup(last.getShiftGroup());
+			storageBill.setShift(last.getShift());
+			storageBill.setShiftGroup(last.getShiftGroup());
+			storageBill.setHeatsOne(last.getPourHeats());
+		}
+		storageBillModel.setAmountTotal(storageBillModel.getAmountTotal()+storageBill.getAmountTotal());
+		storageBillModel.setShiftProduct(storageBillModel.getShiftProduct()+storageBill.getAmountTotal());
+		storageBillModelService.updateById(storageBillModel);
+		storageBillService.save(storageBill);
+		baseMapper.insert(billetHotsend);
+	}
+
+
+}

+ 32 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/billetHotsend/service/impl/RulerDefaultConfigServiceImpl.java

@@ -0,0 +1,32 @@
+package org.jeecg.modules.billet.billetHotsend.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.jeecg.modules.billet.billetHotsend.entity.RulerDefaultConfig;
+import org.jeecg.modules.billet.billetHotsend.mapper.RulerDefaultConfigMapper;
+import org.jeecg.modules.billet.billetHotsend.service.IRulerDefaultConfigService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 定尺默认配置
+ * @Author: jeecg-boot
+ * @Date:   2024-04-29
+ * @Version: V1.0
+ */
+@Service
+public class RulerDefaultConfigServiceImpl extends ServiceImpl<RulerDefaultConfigMapper, RulerDefaultConfig> implements IRulerDefaultConfigService {
+
+    @Override
+    public RulerDefaultConfig getLast(String castMachine) {
+        LambdaQueryWrapper<RulerDefaultConfig> queryWrapper = new LambdaQueryWrapper<RulerDefaultConfig>()
+                        .eq(RulerDefaultConfig::getCastMachine,castMachine)
+                        .orderByDesc(RulerDefaultConfig::getCreateTime).last("limit 1");
+        RulerDefaultConfig rulerDefaultConfig = baseMapper.selectOne(queryWrapper);
+        if(rulerDefaultConfig==null){
+            rulerDefaultConfig = new RulerDefaultConfig();
+            rulerDefaultConfig.setCastMachine(castMachine);
+        }
+        return rulerDefaultConfig;
+    }
+}

+ 183 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunLog/controller/CarRunLogController.java

@@ -0,0 +1,183 @@
+package org.jeecg.modules.billet.carRunLog.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+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.common.util.oConvertUtils;
+import org.jeecg.modules.billet.carRunLog.entity.CarRunLog;
+import org.jeecg.modules.billet.carRunLog.service.ICarRunLogService;
+
+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.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+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.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+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:   2024-06-18
+ * @Version: V1.0
+ */
+@Api(tags="车辆运行记录")
+@RestController
+@RequestMapping("/carRunLog")
+@Slf4j
+public class CarRunLogController extends JeecgController<CarRunLog, ICarRunLogService> {
+	@Autowired
+	private ICarRunLogService carRunLogService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param carRunLog
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "车辆运行记录-分页列表查询")
+	@ApiOperation(value="车辆运行记录-分页列表查询", notes="车辆运行记录-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<CarRunLog>> queryPageList(CarRunLog carRunLog,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CarRunLog> queryWrapper = QueryGenerator.initQueryWrapper(carRunLog, req.getParameterMap());
+		Page<CarRunLog> page = new Page<CarRunLog>(pageNo, pageSize);
+		IPage<CarRunLog> pageList = carRunLogService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	 @ApiOperation(value="车辆运行记录-列表查询", notes="车辆运行记录-列表查询")
+	 @GetMapping(value = "/listAll")
+	 public Result<List<CarRunLog>> queryList(CarRunLog carRunLog,
+												   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+												   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+												   HttpServletRequest req) {
+
+		 List<CarRunLog> pageList = carRunLogService.list();
+		 return Result.OK(pageList);
+	 }
+	
+	/**
+	 *   添加
+	 *
+	 * @param carRunLog
+	 * @return
+	 */
+	@AutoLog(value = "车辆运行记录-添加")
+	@ApiOperation(value="车辆运行记录-添加", notes="车辆运行记录-添加")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody CarRunLog carRunLog) {
+		carRunLogService.save(carRunLog);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param carRunLog
+	 * @return
+	 */
+	@AutoLog(value = "车辆运行记录-编辑")
+	@ApiOperation(value="车辆运行记录-编辑", notes="车辆运行记录-编辑")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CarRunLog carRunLog) {
+		carRunLogService.updateById(carRunLog);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "车辆运行记录-通过id删除")
+	@ApiOperation(value="车辆运行记录-通过id删除", notes="车辆运行记录-通过id删除")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		carRunLogService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "车辆运行记录-批量删除")
+	@ApiOperation(value="车辆运行记录-批量删除", notes="车辆运行记录-批量删除")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.carRunLogService.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<CarRunLog> queryById(@RequestParam(name="id",required=true) String id) {
+		CarRunLog carRunLog = carRunLogService.getById(id);
+		if(carRunLog==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(carRunLog);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param carRunLog
+    */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CarRunLog carRunLog) {
+        return super.exportXls(request, carRunLog, CarRunLog.class, "车辆运行记录");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CarRunLog.class);
+    }
+
+}

+ 82 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunLog/entity/CarRunLog.java

@@ -0,0 +1,82 @@
+package org.jeecg.modules.billet.carRunLog.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:   2024-06-18
+ * @Version: V1.0
+ */
+@Data
+@TableName("car_run_log")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="car_run_log对象", description="车辆运行记录")
+public class CarRunLog implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+	/**车号*/
+	@Excel(name = "车号", width = 15)
+    @ApiModelProperty(value = "车号")
+    private java.lang.String carNum;
+	/**当前位置*/
+	@Excel(name = "当前位置", width = 15)
+    @ApiModelProperty(value = "当前位置")
+    private java.lang.String currentAddr;
+	/**车次*/
+	@Excel(name = "车次", width = 15)
+    @ApiModelProperty(value = "车次")
+    private java.lang.Integer times;
+    /**钢种规格*/
+    @Excel(name = "钢种规格", width = 15)
+    @ApiModelProperty(value = "钢种规格")
+    private java.lang.String spec;
+    /**定尺*/
+    @Excel(name = "定尺", width = 15)
+    @ApiModelProperty(value = "定尺")
+    private java.lang.String size;
+    /**钢坯总数*/
+    @Excel(name = "钢坯总数", width = 15)
+    @ApiModelProperty(value = "钢坯总数")
+    private java.lang.Integer total;
+}

+ 17 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunLog/mapper/CarRunLogMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.billet.carRunLog.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.billet.carRunLog.entity.CarRunLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 车辆运行记录
+ * @Author: jeecg-boot
+ * @Date:   2024-06-18
+ * @Version: V1.0
+ */
+public interface CarRunLogMapper extends BaseMapper<CarRunLog> {
+
+}

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

+ 14 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunLog/service/ICarRunLogService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.billet.carRunLog.service;
+
+import org.jeecg.modules.billet.carRunLog.entity.CarRunLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 车辆运行记录
+ * @Author: jeecg-boot
+ * @Date:   2024-06-18
+ * @Version: V1.0
+ */
+public interface ICarRunLogService extends IService<CarRunLog> {
+
+}

+ 19 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunLog/service/impl/CarRunLogServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.billet.carRunLog.service.impl;
+
+import org.jeecg.modules.billet.carRunLog.entity.CarRunLog;
+import org.jeecg.modules.billet.carRunLog.mapper.CarRunLogMapper;
+import org.jeecg.modules.billet.carRunLog.service.ICarRunLogService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 车辆运行记录
+ * @Author: jeecg-boot
+ * @Date:   2024-06-18
+ * @Version: V1.0
+ */
+@Service
+public class CarRunLogServiceImpl extends ServiceImpl<CarRunLogMapper, CarRunLog> implements ICarRunLogService {
+
+}

+ 188 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/controller/CarRunSummaryController.java

@@ -0,0 +1,188 @@
+package org.jeecg.modules.billet.carRunSummary.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.billet.carRunSummary.entity.CarRunSummary;
+import org.jeecg.modules.billet.carRunSummary.service.ICarRunSummaryService;
+
+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.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+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.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+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:   2024-06-18
+ * @Version: V1.0
+ */
+@Api(tags="车辆运行汇总")
+@RestController
+@RequestMapping("/billet.carRunSummary/carRunSummary")
+@Slf4j
+public class CarRunSummaryController extends JeecgController<CarRunSummary, ICarRunSummaryService> {
+	@Autowired
+	private ICarRunSummaryService carRunSummaryService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param carRunSummary
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "车辆运行汇总-分页列表查询")
+	@ApiOperation(value="车辆运行汇总-分页列表查询", notes="车辆运行汇总-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<CarRunSummary>> queryPageList(CarRunSummary carRunSummary,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<CarRunSummary> queryWrapper = QueryGenerator.initQueryWrapper(carRunSummary, req.getParameterMap());
+		Page<CarRunSummary> page = new Page<CarRunSummary>(pageNo, pageSize);
+		IPage<CarRunSummary> pageList = carRunSummaryService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param carRunSummary
+	 * @return
+	 */
+	@AutoLog(value = "车辆运行汇总-添加")
+	@ApiOperation(value="车辆运行汇总-添加", notes="车辆运行汇总-添加")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody CarRunSummary carRunSummary) {
+		carRunSummaryService.saveOrUpdate(carRunSummary);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param carRunSummary
+	 * @return
+	 */
+	@AutoLog(value = "车辆运行汇总-编辑")
+	@ApiOperation(value="车辆运行汇总-编辑", notes="车辆运行汇总-编辑")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody CarRunSummary carRunSummary) {
+		carRunSummaryService.updateById(carRunSummary);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "车辆运行汇总-通过id删除")
+	@ApiOperation(value="车辆运行汇总-通过id删除", notes="车辆运行汇总-通过id删除")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		carRunSummaryService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "车辆运行汇总-批量删除")
+	@ApiOperation(value="车辆运行汇总-批量删除", notes="车辆运行汇总-批量删除")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.carRunSummaryService.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<CarRunSummary> queryById(@RequestParam(name="id",required=true) String id) {
+		CarRunSummary carRunSummary = carRunSummaryService.getById(id);
+		if(carRunSummary==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(carRunSummary);
+	}
+
+	 /**
+	  * 通过铸机查询
+	  *
+	  * @param id
+	  * @return
+	  */
+	 //@AutoLog(value = "车辆运行汇总-通过id查询")
+	 @ApiOperation(value="车辆运行汇总-通过铸机查询", notes="车辆运行汇总-通过铸机查询")
+	 @GetMapping(value = "/queryByCastMachine")
+	 public Result<CarRunSummary> queryByCastMachine(@RequestParam(name="castMachine",required=true) String castMachine) {
+		 CarRunSummary carRunSummary = carRunSummaryService.getOne(new LambdaQueryWrapper<CarRunSummary>().eq(CarRunSummary::getCastMachine,castMachine));
+		 return Result.OK(carRunSummary);
+	 }
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param carRunSummary
+    */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, CarRunSummary carRunSummary) {
+        return super.exportXls(request, carRunSummary, CarRunSummary.class, "车辆运行汇总");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, CarRunSummary.class);
+    }
+
+}

+ 146 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/entity/CarRunSummary.java

@@ -0,0 +1,146 @@
+package org.jeecg.modules.billet.carRunSummary.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:   2024-06-18
+ * @Version: V1.0
+ */
+@Data
+@TableName("car_run_summary")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="car_run_summary对象", description="车辆运行汇总")
+public class CarRunSummary implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+	/**铸机*/
+	@Excel(name = "铸机", width = 15)
+    @ApiModelProperty(value = "铸机")
+    private java.lang.String castMachine;
+	/**总车次数*/
+	@Excel(name = "总车次数", width = 15)
+    @ApiModelProperty(value = "总车次数")
+    private java.lang.Integer timesTotal;
+	/**班组*/
+	@Excel(name = "班组", width = 15)
+    @ApiModelProperty(value = "班组")
+    private java.lang.String shiftGroup;
+	/**班别*/
+	@Excel(name = "班别", width = 15)
+    @ApiModelProperty(value = "班别")
+    private java.lang.String shift;
+	/**总支数*/
+	@Excel(name = "总支数", width = 15)
+    @ApiModelProperty(value = "总支数")
+    private java.lang.Integer amountTotal;
+	/**轧钢接收*/
+	@Excel(name = "轧钢接收", width = 15)
+    @ApiModelProperty(value = "轧钢接收")
+    private java.lang.Integer rollingReceive;
+	/**热送指数*/
+	@Excel(name = "热送指数", width = 15)
+    @ApiModelProperty(value = "热送指数")
+    private java.lang.Integer hotsendAmount;
+	/**热送接收*/
+	@Excel(name = "热送接收", width = 15)
+    @ApiModelProperty(value = "热送接收")
+    private java.lang.Integer hotsendReceive;
+	/**热装车次*/
+	@Excel(name = "热装车次", width = 15)
+    @ApiModelProperty(value = "热装车次")
+    private java.lang.Integer hotTimes;
+	/**棒二热装接收*/
+	@Excel(name = "棒二热装接收", width = 15)
+    @ApiModelProperty(value = "棒二热装接收")
+    private java.lang.Integer hotTwo;
+	/**热装支数*/
+	@Excel(name = "热装支数", width = 15)
+    @ApiModelProperty(value = "热装支数")
+    private java.lang.Integer hotAmount;
+	/**棒三接收*/
+	@Excel(name = "棒三接收", width = 15)
+    @ApiModelProperty(value = "棒三接收")
+    private java.lang.Integer hotThree;
+	/**热装接收*/
+	@Excel(name = "热装接收", width = 15)
+    @ApiModelProperty(value = "热装接收")
+    private java.lang.Integer hotReceive;
+	/**上若热装接收*/
+	@Excel(name = "上若热装接收", width = 15)
+    @ApiModelProperty(value = "上若热装接收")
+    private java.lang.Integer hotSr;
+	/**冷装车次*/
+	@Excel(name = "冷装车次", width = 15)
+    @ApiModelProperty(value = "冷装车次")
+    private java.lang.Integer coldTimes;
+	/**棒二冷装接收*/
+	@Excel(name = "棒二冷装接收", width = 15)
+    @ApiModelProperty(value = "棒二冷装接收")
+    private java.lang.Integer coldTwo;
+	/**冷装支数*/
+	@Excel(name = "冷装支数", width = 15)
+    @ApiModelProperty(value = "冷装支数")
+    private java.lang.Integer coldAmount;
+	/**棒三冷装接收*/
+	@Excel(name = "棒三冷装接收", width = 15)
+    @ApiModelProperty(value = "棒三冷装接收")
+    private java.lang.Integer coldThree;
+	/**冷装接收*/
+	@Excel(name = "冷装接收", width = 15)
+    @ApiModelProperty(value = "冷装接收")
+    private java.lang.Integer coldReceive;
+	/**上若冷装接收*/
+	@Excel(name = "上若冷装接收", width = 15)
+    @ApiModelProperty(value = "上若冷装接收")
+    private java.lang.Integer coldSr;
+	/**入垛支数*/
+	@Excel(name = "入垛支数", width = 15)
+    @ApiModelProperty(value = "入垛支数")
+    private java.lang.Integer inStackAmount;
+	/**起垛支数*/
+	@Excel(name = "起垛支数", width = 15)
+    @ApiModelProperty(value = "起垛支数")
+    private java.lang.Integer outStackAmount;
+}

+ 17 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/mapper/CarRunSummaryMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.billet.carRunSummary.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.billet.carRunSummary.entity.CarRunSummary;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 车辆运行汇总
+ * @Author: jeecg-boot
+ * @Date:   2024-06-18
+ * @Version: V1.0
+ */
+public interface CarRunSummaryMapper extends BaseMapper<CarRunSummary> {
+
+}

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

+ 14 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/service/ICarRunSummaryService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.billet.carRunSummary.service;
+
+import org.jeecg.modules.billet.carRunSummary.entity.CarRunSummary;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 车辆运行汇总
+ * @Author: jeecg-boot
+ * @Date:   2024-06-18
+ * @Version: V1.0
+ */
+public interface ICarRunSummaryService extends IService<CarRunSummary> {
+
+}

+ 19 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/service/impl/CarRunSummaryServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.billet.carRunSummary.service.impl;
+
+import org.jeecg.modules.billet.carRunSummary.entity.CarRunSummary;
+import org.jeecg.modules.billet.carRunSummary.mapper.CarRunSummaryMapper;
+import org.jeecg.modules.billet.carRunSummary.service.ICarRunSummaryService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 车辆运行汇总
+ * @Author: jeecg-boot
+ * @Date:   2024-06-18
+ * @Version: V1.0
+ */
+@Service
+public class CarRunSummaryServiceImpl extends ServiceImpl<CarRunSummaryMapper, CarRunSummary> implements ICarRunSummaryService {
+
+}

+ 64 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/vue3/CarRunSummary.api.ts

@@ -0,0 +1,64 @@
+import {defHttp} from '/@/utils/http/axios';
+import { useMessage } from "/@/hooks/web/useMessage";
+
+const { createConfirm } = useMessage();
+
+enum Api {
+  list = '/billet.carRunSummary/carRunSummary/list',
+  save='/billet.carRunSummary/carRunSummary/add',
+  edit='/billet.carRunSummary/carRunSummary/edit',
+  deleteOne = '/billet.carRunSummary/carRunSummary/delete',
+  deleteBatch = '/billet.carRunSummary/carRunSummary/deleteBatch',
+  importExcel = '/billet.carRunSummary/carRunSummary/importExcel',
+  exportXls = '/billet.carRunSummary/carRunSummary/exportXls',
+}
+/**
+ * 导出api
+ * @param params
+ */
+export const getExportUrl = Api.exportXls;
+/**
+ * 导入api
+ */
+export const getImportUrl = Api.importExcel;
+/**
+ * 列表接口
+ * @param params
+ */
+export const list = (params) =>
+  defHttp.get({url: Api.list, params});
+
+/**
+ * 删除单个
+ */
+export const deleteOne = (params,handleSuccess) => {
+  return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => {
+    handleSuccess();
+  });
+}
+/**
+ * 批量删除
+ * @param params
+ */
+export const batchDelete = (params, handleSuccess) => {
+  createConfirm({
+    iconType: 'warning',
+    title: '确认删除',
+    content: '是否删除选中数据',
+    okText: '确认',
+    cancelText: '取消',
+    onOk: () => {
+      return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => {
+        handleSuccess();
+      });
+    }
+  });
+}
+/**
+ * 保存或者更新
+ * @param params
+ */
+export const saveOrUpdate = (params, isUpdate) => {
+  let url = isUpdate ? Api.edit : Api.save;
+  return defHttp.post({url: url, params});
+}

+ 251 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/vue3/CarRunSummary.data.ts

@@ -0,0 +1,251 @@
+import {BasicColumn} from '/@/components/Table';
+import {FormSchema} from '/@/components/Table';
+import { rules} from '/@/utils/helper/validator';
+import { render } from '/@/utils/common/renderUtils';
+//列表数据
+export const columns: BasicColumn[] = [
+   {
+    title: '铸机',
+    align:"center",
+    dataIndex: 'castMachine'
+   },
+   {
+    title: '总车次数',
+    align:"center",
+    dataIndex: 'timesTotal'
+   },
+   {
+    title: '班组',
+    align:"center",
+    dataIndex: 'shiftGroup'
+   },
+   {
+    title: '班别',
+    align:"center",
+    dataIndex: 'shift'
+   },
+   {
+    title: '总支数',
+    align:"center",
+    dataIndex: 'amountTotal'
+   },
+   {
+    title: '轧钢接收',
+    align:"center",
+    dataIndex: 'rollingReceive'
+   },
+   {
+    title: '热送指数',
+    align:"center",
+    dataIndex: 'hotsendAmount'
+   },
+   {
+    title: '热送接收',
+    align:"center",
+    dataIndex: 'hotsendReceive'
+   },
+   {
+    title: '热装车次',
+    align:"center",
+    dataIndex: 'hotTimes'
+   },
+   {
+    title: '棒二热装接收',
+    align:"center",
+    dataIndex: 'hotTwo'
+   },
+   {
+    title: '热装支数',
+    align:"center",
+    dataIndex: 'hotAmount'
+   },
+   {
+    title: '棒三接收',
+    align:"center",
+    dataIndex: 'hotThree'
+   },
+   {
+    title: '热装接收',
+    align:"center",
+    dataIndex: 'hotReceive'
+   },
+   {
+    title: '上若热装接收',
+    align:"center",
+    dataIndex: 'hotSr'
+   },
+   {
+    title: '冷装车次',
+    align:"center",
+    dataIndex: 'coldTimes'
+   },
+   {
+    title: '棒二冷装接收',
+    align:"center",
+    dataIndex: 'coldTwo'
+   },
+   {
+    title: '冷装支数',
+    align:"center",
+    dataIndex: 'coldAmount'
+   },
+   {
+    title: '棒三冷装接收',
+    align:"center",
+    dataIndex: 'coldThree'
+   },
+   {
+    title: '冷装接收',
+    align:"center",
+    dataIndex: 'coldReceive'
+   },
+   {
+    title: '上若冷装接收',
+    align:"center",
+    dataIndex: 'coldSr'
+   },
+   {
+    title: '入垛支数',
+    align:"center",
+    dataIndex: 'inStackAmount'
+   },
+   {
+    title: '起垛支数',
+    align:"center",
+    dataIndex: 'outStackAmount'
+   },
+];
+//查询数据
+export const searchFormSchema: FormSchema[] = [
+];
+//表单数据
+export const formSchema: FormSchema[] = [
+  {
+    label: '铸机',
+    field: 'castMachine',
+    component: 'Input',
+  },
+  {
+    label: '总车次数',
+    field: 'timesTotal',
+    component: 'InputNumber',
+  },
+  {
+    label: '班组',
+    field: 'shiftGroup',
+    component: 'Input',
+  },
+  {
+    label: '班别',
+    field: 'shift',
+    component: 'Input',
+  },
+  {
+    label: '总支数',
+    field: 'amountTotal',
+    component: 'InputNumber',
+  },
+  {
+    label: '轧钢接收',
+    field: 'rollingReceive',
+    component: 'InputNumber',
+  },
+  {
+    label: '热送指数',
+    field: 'hotsendAmount',
+    component: 'InputNumber',
+  },
+  {
+    label: '热送接收',
+    field: 'hotsendReceive',
+    component: 'InputNumber',
+  },
+  {
+    label: '热装车次',
+    field: 'hotTimes',
+    component: 'InputNumber',
+  },
+  {
+    label: '棒二热装接收',
+    field: 'hotTwo',
+    component: 'InputNumber',
+  },
+  {
+    label: '热装支数',
+    field: 'hotAmount',
+    component: 'InputNumber',
+  },
+  {
+    label: '棒三接收',
+    field: 'hotThree',
+    component: 'InputNumber',
+  },
+  {
+    label: '热装接收',
+    field: 'hotReceive',
+    component: 'InputNumber',
+  },
+  {
+    label: '上若热装接收',
+    field: 'hotSr',
+    component: 'InputNumber',
+  },
+  {
+    label: '冷装车次',
+    field: 'coldTimes',
+    component: 'InputNumber',
+  },
+  {
+    label: '棒二冷装接收',
+    field: 'coldTwo',
+    component: 'InputNumber',
+  },
+  {
+    label: '冷装支数',
+    field: 'coldAmount',
+    component: 'InputNumber',
+  },
+  {
+    label: '棒三冷装接收',
+    field: 'coldThree',
+    component: 'InputNumber',
+  },
+  {
+    label: '冷装接收',
+    field: 'coldReceive',
+    component: 'InputNumber',
+  },
+  {
+    label: '上若冷装接收',
+    field: 'coldSr',
+    component: 'InputNumber',
+  },
+  {
+    label: '入垛支数',
+    field: 'inStackAmount',
+    component: 'InputNumber',
+  },
+  {
+    label: '起垛支数',
+    field: 'outStackAmount',
+    component: 'InputNumber',
+  },
+	// TODO 主键隐藏字段,目前写死为ID
+	{
+	  label: '',
+	  field: 'id',
+	  component: 'Input',
+	  show: false
+	},
+];
+
+
+
+/**
+* 流程表单调用这个方法获取formSchema
+* @param param
+*/
+export function getBpmFormSchema(_formData): FormSchema[]{
+  // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema
+  return formSchema;
+}

+ 166 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/vue3/CarRunSummaryList.vue

@@ -0,0 +1,166 @@
+<template>
+  <div>
+    <!--引用表格-->
+   <BasicTable @register="registerTable" :rowSelection="rowSelection">
+     <!--插槽:table标题-->
+      <template #tableTitle>
+          <a-button type="primary" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button>
+          <a-button  type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
+          <j-upload-button  type="primary" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button>
+          <a-dropdown v-if="selectedRowKeys.length > 0">
+              <template #overlay>
+                <a-menu>
+                  <a-menu-item key="1" @click="batchHandleDelete">
+                    <Icon icon="ant-design:delete-outlined"></Icon>
+                    删除
+                  </a-menu-item>
+                </a-menu>
+              </template>
+              <a-button>批量操作
+                <Icon icon="mdi:chevron-down"></Icon>
+              </a-button>
+        </a-dropdown>
+      </template>
+       <!--操作栏-->
+      <template #action="{ record }">
+        <TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)"/>
+      </template>
+      <!--字段回显插槽-->
+      <template v-slot:bodyCell="{ column, record, index, text }">
+      </template>
+    </BasicTable>
+    <!-- 表单区域 -->
+    <CarRunSummaryModal @register="registerModal" @success="handleSuccess"></CarRunSummaryModal>
+  </div>
+</template>
+
+<script lang="ts" name="billet.carRunSummary-carRunSummary" setup>
+  import {ref, computed, unref} from 'vue';
+  import {BasicTable, useTable, TableAction} from '/@/components/Table';
+  import {useModal} from '/@/components/Modal';
+  import { useListPage } from '/@/hooks/system/useListPage'
+  import CarRunSummaryModal from './components/CarRunSummaryModal.vue'
+  import {columns, searchFormSchema} from './CarRunSummary.data';
+  import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './CarRunSummary.api';
+  import { downloadFile } from '/@/utils/common/renderUtils';
+  import { useUserStore } from '/@/store/modules/user';
+  const checkedKeys = ref<Array<string | number>>([]);
+  const userStore = useUserStore();
+  //注册model
+  const [registerModal, {openModal}] = useModal();
+  //注册table数据
+  const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({
+      tableProps:{
+           title: '车辆运行汇总',
+           api: list,
+           columns,
+           canResize:false,
+           formConfig: {
+              //labelWidth: 120,
+              schemas: searchFormSchema,
+              autoSubmitOnEnter:true,
+              showAdvancedButton:true,
+              fieldMapToNumber: [
+              ],
+              fieldMapToTime: [
+              ],
+            },
+           actionColumn: {
+               width: 150,
+               fixed:'right'
+            },
+      },
+       exportConfig: {
+            name:"车辆运行汇总",
+            url: getExportUrl,
+          },
+          importConfig: {
+            url: getImportUrl,
+            success: handleSuccess
+          },
+  })
+
+  const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext
+
+   /**
+    * 新增事件
+    */
+  function handleAdd() {
+     openModal(true, {
+       isUpdate: false,
+       showFooter: true,
+     });
+  }
+   /**
+    * 编辑事件
+    */
+  function handleEdit(record: Recordable) {
+     openModal(true, {
+       record,
+       isUpdate: true,
+       showFooter: true,
+     });
+   }
+   /**
+    * 详情
+   */
+  function handleDetail(record: Recordable) {
+     openModal(true, {
+       record,
+       isUpdate: true,
+       showFooter: false,
+     });
+   }
+   /**
+    * 删除事件
+    */
+  async function handleDelete(record) {
+     await deleteOne({id: record.id}, handleSuccess);
+   }
+   /**
+    * 批量删除事件
+    */
+  async function batchHandleDelete() {
+     await batchDelete({ids: selectedRowKeys.value}, handleSuccess);
+   }
+   /**
+    * 成功回调
+    */
+  function handleSuccess() {
+      (selectedRowKeys.value = []) && reload();
+   }
+   /**
+      * 操作栏
+      */
+  function getTableAction(record){
+       return [
+         {
+           label: '编辑',
+           onClick: handleEdit.bind(null, record),
+         }
+       ]
+   }
+     /**
+        * 下拉操作栏
+        */
+  function getDropDownAction(record){
+       return [
+         {
+           label: '详情',
+           onClick: handleDetail.bind(null, record),
+         }, {
+           label: '删除',
+           popConfirm: {
+             title: '是否确认删除',
+             confirm: handleDelete.bind(null, record),
+           }
+         }
+       ]
+   }
+
+
+</script>
+
+<style scoped>
+
+</style>

+ 26 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/vue3/CarRunSummary_menu_insert.sql

@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/billet.carRunSummary文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) 
+VALUES ('2024061803073450500', NULL, '车辆运行汇总', '/billet.carRunSummary/carRunSummaryList', 'billet.carRunSummary/CarRunSummaryList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2024-06-18 15:07:50', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2024061803073450501', '2024061803073450500', '添加车辆运行汇总', NULL, NULL, 0, NULL, NULL, 2, 'billet.carRunSummary:car_run_summary:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-06-18 15:07:50', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2024061803073450502', '2024061803073450500', '编辑车辆运行汇总', NULL, NULL, 0, NULL, NULL, 2, 'billet.carRunSummary:car_run_summary:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-06-18 15:07:50', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2024061803073450503', '2024061803073450500', '删除车辆运行汇总', NULL, NULL, 0, NULL, NULL, 2, 'billet.carRunSummary:car_run_summary:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-06-18 15:07:50', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2024061803073450504', '2024061803073450500', '批量删除车辆运行汇总', NULL, NULL, 0, NULL, NULL, 2, 'billet.carRunSummary:car_run_summary:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-06-18 15:07:50', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2024061803073460505', '2024061803073450500', '导出excel_车辆运行汇总', NULL, NULL, 0, NULL, NULL, 2, 'billet.carRunSummary:car_run_summary:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-06-18 15:07:50', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2024061803073460506', '2024061803073450500', '导入excel_车辆运行汇总', NULL, NULL, 0, NULL, NULL, 2, 'billet.carRunSummary:car_run_summary:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-06-18 15:07:50', NULL, NULL, 0, 0, '1', 0);

+ 70 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/vue3/components/CarRunSummaryForm.vue

@@ -0,0 +1,70 @@
+<template>
+    <div style="min-height: 400px">
+        <BasicForm @register="registerForm"></BasicForm>
+        <div style="width: 100%;text-align: center" v-if="!formDisabled">
+            <a-button @click="submitForm" pre-icon="ant-design:check" type="primary">提 交</a-button>
+        </div>
+    </div>
+</template>
+
+<script lang="ts">
+    import {BasicForm, useForm} from '/@/components/Form/index';
+    import {computed, defineComponent} from 'vue';
+    import {defHttp} from '/@/utils/http/axios';
+    import { propTypes } from '/@/utils/propTypes';
+    import {getBpmFormSchema} from '../CarRunSummary.data';
+    import {saveOrUpdate} from '../CarRunSummary.api';
+    
+    export default defineComponent({
+        name: "CarRunSummaryForm",
+        components:{
+            BasicForm
+        },
+        props:{
+            formData: propTypes.object.def({}),
+            formBpm: propTypes.bool.def(true),
+        },
+        setup(props){
+            const [registerForm, { setFieldsValue, setProps, getFieldsValue }] = useForm({
+                labelWidth: 150,
+                schemas: getBpmFormSchema(props.formData),
+                showActionButtonGroup: false,
+                baseColProps: {span: 24}
+            });
+
+            const formDisabled = computed(()=>{
+                if(props.formData.disabled === false){
+                    return false;
+                }
+                return true;
+            });
+
+            let formData = {};
+            const queryByIdUrl = '/billet.carRunSummary/carRunSummary/queryById';
+            async function initFormData(){
+                let params = {id: props.formData.dataId};
+                const data = await defHttp.get({url: queryByIdUrl, params});
+                formData = {...data}
+                //设置表单的值
+                await setFieldsValue(formData);
+                //默认是禁用
+                await setProps({disabled: formDisabled.value})
+            }
+
+            async function submitForm() {
+                let data = getFieldsValue();
+                let params = Object.assign({}, formData, data);
+                console.log('表单数据', params)
+                await saveOrUpdate(params, true)
+            }
+
+            initFormData();
+            
+            return {
+                registerForm,
+                formDisabled,
+                submitForm,
+            }
+        }
+    });
+</script>

+ 66 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/carRunSummary/vue3/components/CarRunSummaryModal.vue

@@ -0,0 +1,66 @@
+<template>
+  <BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose :title="title" :width="800" @ok="handleSubmit">
+      <BasicForm @register="registerForm"/>
+  </BasicModal>
+</template>
+
+<script lang="ts" setup>
+    import {ref, computed, unref} from 'vue';
+    import {BasicModal, useModalInner} from '/@/components/Modal';
+    import {BasicForm, useForm} from '/@/components/Form/index';
+    import {formSchema} from '../CarRunSummary.data';
+    import {saveOrUpdate} from '../CarRunSummary.api';
+    // Emits声明
+    const emit = defineEmits(['register','success']);
+    const isUpdate = ref(true);
+    //表单配置
+    const [registerForm, {setProps,resetFields, setFieldsValue, validate}] = useForm({
+        //labelWidth: 150,
+        schemas: formSchema,
+        showActionButtonGroup: false,
+        baseColProps: {span: 24}
+    });
+    //表单赋值
+    const [registerModal, {setModalProps, closeModal}] = useModalInner(async (data) => {
+        //重置表单
+        await resetFields();
+        setModalProps({confirmLoading: false,showCancelBtn:!!data?.showFooter,showOkBtn:!!data?.showFooter});
+        isUpdate.value = !!data?.isUpdate;
+        if (unref(isUpdate)) {
+            //表单赋值
+            await setFieldsValue({
+                ...data.record,
+            });
+        }
+        // 隐藏底部时禁用整个表单
+       setProps({ disabled: !data?.showFooter })
+    });
+    //设置标题
+    const title = computed(() => (!unref(isUpdate) ? '新增' : '编辑'));
+    //表单提交事件
+    async function handleSubmit(v) {
+        try {
+            let values = await validate();
+            setModalProps({confirmLoading: true});
+            //提交表单
+            await saveOrUpdate(values, isUpdate.value);
+            //关闭弹窗
+            closeModal();
+            //刷新列表
+            emit('success');
+        } finally {
+            setModalProps({confirmLoading: false});
+        }
+    }
+</script>
+
+<style lang="less" scoped>
+	/** 时间和数字输入框样式 */
+  :deep(.ant-input-number){
+		width: 100%
+	}
+
+	:deep(.ant-calendar-picker){
+		width: 100%
+	}
+</style>

+ 178 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/operateLog/controller/OperateLogController.java

@@ -0,0 +1,178 @@
+package org.jeecg.modules.billet.operateLog.controller;
+
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import io.netty.util.internal.StringUtil;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+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.operateLog.entity.OperateLog;
+import org.jeecg.modules.billet.operateLog.service.IOperateLogService;
+
+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.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+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.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+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:   2024-05-20
+ * @Version: V1.0
+ */
+@Api(tags="操作日志")
+@RestController
+@RequestMapping("/billet/operateLog")
+@Slf4j
+public class OperateLogController extends JeecgController<OperateLog, IOperateLogService> {
+	@Autowired
+	private IOperateLogService operateLogService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param operateLog
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "操作日志-分页列表查询")
+	@ApiOperation(value="操作日志-分页列表查询", notes="操作日志-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<OperateLog>> queryPageList(OperateLog operateLog,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<OperateLog> queryWrapper = QueryGenerator.initQueryWrapper(operateLog, req.getParameterMap());
+		Page<OperateLog> page = new Page<OperateLog>(pageNo, pageSize);
+		IPage<OperateLog> pageList = operateLogService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param operateLog
+	 * @return
+	 */
+	@AutoLog(value = "操作日志-添加")
+	@ApiOperation(value="操作日志-添加", notes="操作日志-添加")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody OperateLog operateLog) {
+		operateLogService.save(operateLog);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param operateLog
+	 * @return
+	 */
+	@AutoLog(value = "操作日志-编辑")
+	@ApiOperation(value="操作日志-编辑", notes="操作日志-编辑")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody OperateLog operateLog) {
+		operateLogService.updateById(operateLog);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "操作日志-通过id删除")
+	@ApiOperation(value="操作日志-通过id删除", notes="操作日志-通过id删除")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		operateLogService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "操作日志-批量删除")
+	@ApiOperation(value="操作日志-批量删除", notes="操作日志-批量删除")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.operateLogService.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<OperateLog> queryById(@RequestParam(name="id",required=true) String id) {
+		OperateLog operateLog = operateLogService.getById(id);
+		if(operateLog==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(operateLog);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param operateLog
+    */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, OperateLog operateLog) {
+        return super.exportXls(request, operateLog, OperateLog.class, "操作日志");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, OperateLog.class);
+    }
+
+}

+ 88 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/operateLog/entity/OperateLog.java

@@ -0,0 +1,88 @@
+package org.jeecg.modules.billet.operateLog.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:   2024-05-20
+ * @Version: V1.0
+ */
+@Data
+@TableName("operate_log")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="operate_log对象", description="操作日志")
+public class OperateLog implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+	/**操作人*/
+	@Excel(name = "操作人", width = 15)
+    @ApiModelProperty(value = "操作人")
+    private java.lang.String operator;
+	/**操作时间*/
+	@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 java.util.Date operateTime;
+	/**操作*/
+	@Excel(name = "操作", width = 15)
+    @ApiModelProperty(value = "操作")
+    private java.lang.String operate;
+	/**表名*/
+	@Excel(name = "表名", width = 15)
+    @ApiModelProperty(value = "表名")
+    private java.lang.String tableNameCn;
+	/**操作表名称*/
+	@Excel(name = "操作表名称", width = 15)
+    @ApiModelProperty(value = "操作表名称")
+    private java.lang.String tableName;
+	/**id*/
+	@Excel(name = "id", width = 15)
+    @ApiModelProperty(value = "id")
+    private java.lang.String tableId;
+	/**操作内容*/
+	@Excel(name = "操作内容", width = 15)
+    @ApiModelProperty(value = "操作内容")
+    private java.lang.String operateDesc;
+}

+ 17 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/operateLog/mapper/OperateLogMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.billet.operateLog.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.billet.operateLog.entity.OperateLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 操作日志
+ * @Author: jeecg-boot
+ * @Date:   2024-05-20
+ * @Version: V1.0
+ */
+public interface OperateLogMapper extends BaseMapper<OperateLog> {
+
+}

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

+ 18 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/operateLog/service/IOperateLogService.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.billet.operateLog.service;
+
+import org.jeecg.modules.billet.operateLog.entity.OperateLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 操作日志
+ * @Author: jeecg-boot
+ * @Date:   2024-05-20
+ * @Version: V1.0
+ */
+public interface IOperateLogService extends IService<OperateLog> {
+
+
+    public void add(Object old, Object fresh, Class c);
+
+
+}

+ 100 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/operateLog/service/impl/OperateLogServiceImpl.java

@@ -0,0 +1,100 @@
+package org.jeecg.modules.billet.operateLog.service.impl;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.netty.util.internal.StringUtil;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.billet.operateLog.entity.OperateLog;
+import org.jeecg.modules.billet.operateLog.mapper.OperateLogMapper;
+import org.jeecg.modules.billet.operateLog.service.IOperateLogService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * @Description: 操作日志
+ * @Author: jeecg-boot
+ * @Date:   2024-05-20
+ * @Version: V1.0
+ */
+@Service
+public class OperateLogServiceImpl extends ServiceImpl<OperateLogMapper, OperateLog> implements IOperateLogService {
+
+
+    @Override
+    public void add(Object old, Object fresh, Class c){
+        try {
+            OperateLog operateLog = new OperateLog();
+            LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+            operateLog.setOperator(user.getRealname());
+            operateLog.setOperateTime(new Date());
+            Field id = c.getDeclaredField("id");
+            id.setAccessible(true);
+            operateLog.setTableId(id.get(old).toString());
+            TableName annotation = (TableName)c.getAnnotation(TableName.class);
+            ApiModel apiModel = (ApiModel)c.getAnnotation(ApiModel.class);
+            operateLog.setTableName(annotation.value());
+            operateLog.setTableNameCn(apiModel.description());
+            if(oConvertUtils.isEmpty(fresh)){
+                operateLog.setOperate("新增");
+                operateLog.setOperateDesc("新增");
+                baseMapper.insert(operateLog);
+                return;
+            }
+            StringBuffer operateDesc = new StringBuffer();
+            Field[] fields = c.getDeclaredFields();
+            for (Field field : fields) {
+                field.setAccessible(true);
+                ApiModelProperty[] annotations = field.getAnnotationsByType(ApiModelProperty.class);
+                if(annotations==null||annotations.length==0)continue;
+                String value = annotations[0].value();
+                if(StringUtil.isNullOrEmpty(value)||value.equals("主键")||value.equals("创建人")||value.equals("创建日期")||value.equals("更新人")||value.equals("更新日期")||value.equals("所属部门")||value.equals("是否已编辑")){
+                    continue;
+                }
+                Object oldValue = field.get(old);
+                Object newValue = field.get(fresh);
+                if(field.getType().equals(Date.class)){
+                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+                    if(oConvertUtils.isNotEmpty(oldValue)){
+                        oldValue = simpleDateFormat.format((Date)oldValue);
+                    }
+                    if(oConvertUtils.isNotEmpty(newValue)){
+                        newValue = simpleDateFormat.format((Date)newValue);
+                    }
+                }
+                if(oConvertUtils.isEmpty(field.get(fresh))){
+                    continue;
+                }
+                if(oConvertUtils.isNotEmpty(oldValue)&&!oldValue.equals(newValue)){
+                    operateDesc.append("将"+value+"的值"+oldValue+"改为"+newValue+",");
+                }
+                if(oConvertUtils.isEmpty(oldValue)&&oConvertUtils.isNotEmpty(newValue)){
+                    operateDesc.append("将"+value+"的值由"+oldValue+"改为"+newValue+",");
+                }
+            }
+            if(operateDesc.length()>0){
+                operateDesc.replace(operateDesc.length()-1,operateDesc.length(),"。");
+                operateLog.setOperate("修改");
+                operateLog.setOperateDesc(operateDesc.toString());
+                baseMapper.insert(operateLog);
+            }
+        } catch (NoSuchFieldException e) {
+            e.printStackTrace();
+        } catch (SecurityException e) {
+            e.printStackTrace();
+        } catch (IllegalArgumentException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 157 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubOne/controller/RollClubOneController.java

@@ -0,0 +1,157 @@
+package org.jeecg.modules.billet.rollClubOne.controller;
+
+
+import java.util.Arrays;
+import javax.servlet.http.HttpServletRequest;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.modules.billet.billetHotsend.entity.BilletHotsend;
+import org.jeecg.modules.billet.operateLog.service.IOperateLogService;
+import org.jeecg.modules.billet.rollClubOne.entity.RollClubOne;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.billet.rollClubOne.service.IRollClubOneService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.extern.slf4j.Slf4j;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 轧钢棒一
+ * @Author: jeecg-boot
+ * @Date:   2024-05-06
+ * @Version: V1.0
+ */
+@Api(tags="轧钢棒一")
+@RestController
+@RequestMapping("/rollClubOne")
+@Slf4j
+public class RollClubOneController {
+	@Autowired
+	private IRollClubOneService rollClubOneService;
+
+	@Autowired
+    private IOperateLogService operateLogService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param rollClubOne
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@AutoLog(value = "轧钢棒一-分页列表查询")
+	@ApiOperation(value="轧钢棒一-分页列表查询", notes="轧钢棒一-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<?> queryPageList(RollClubOne rollClubOne,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<RollClubOne> queryWrapper = QueryGenerator.initQueryWrapper(rollClubOne, req.getParameterMap());
+		Page<RollClubOne> page = new Page<RollClubOne>(pageNo, pageSize);
+		IPage<RollClubOne> pageList = rollClubOneService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	 /**
+	  * 分页列表查询
+	  *
+	  * @param pageNo
+	  * @param pageSize
+	  * @param req
+	  * @return
+	  */
+//	 @AutoLog(value = "轧钢棒一-分页列表查询")
+//	 @ApiOperation(value="轧钢棒一-分页列表查询", notes="轧钢棒一-分页列表查询")
+//	 @GetMapping(value = "/list")
+//	 public Result<?> queryPageList(RollClubOne rollClubOne,
+//									@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+//									@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+//									HttpServletRequest req) {
+//		 QueryWrapper<RollClubOne> queryWrapper = QueryGenerator.initQueryWrapper(rollClubOne, req.getParameterMap());
+//		 IPage<RollClubOneVo> pageList = rollClubOneService.pageList(pageNo, pageSize, queryWrapper);
+//		 return Result.OK(pageList);
+//	 }
+	
+	/**
+	 *   添加
+	 *
+	 * @return
+	 */
+	@AutoLog(value = "轧钢棒一-添加")
+	@ApiOperation(value="轧钢棒一-添加", notes="轧钢棒一-添加")
+	@PostMapping(value = "/add")
+	public Result<?> add() {
+		RollClubOne rollClubOne = new RollClubOne();
+		rollClubOneService.save(rollClubOne);
+		operateLogService.add(rollClubOne,null,RollClubOne.class);
+		return Result.OK("添加成功!");
+	}
+
+
+	 /**
+	  *  编辑
+	  *
+	  * @return
+	  */
+	 @AutoLog(value = "轧钢棒一详情-编辑")
+	 @ApiOperation(value="轧钢棒一详情-编辑", notes="轧钢棒一详情-编辑")
+	 @PutMapping(value = "/editDesc")
+	 public Result<?> editDesc(@RequestBody RollClubOne rollClubOne) {
+         operateLogService.add(rollClubOneService.getById(rollClubOne.getId()),rollClubOne, RollClubOne.class);
+		 rollClubOneService.updateById(rollClubOne);
+		 return Result.OK("编辑成功!");
+	 }
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "轧钢棒一-通过id删除")
+	@ApiOperation(value="轧钢棒一-通过id删除", notes="轧钢棒一-通过id删除")
+	@DeleteMapping(value = "/delete")
+	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+		rollClubOneService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "轧钢棒一-批量删除")
+	@ApiOperation(value="轧钢棒一-批量删除", notes="轧钢棒一-批量删除")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.rollClubOneService.removeBatchByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "轧钢棒一-通过id查询")
+	@ApiOperation(value="轧钢棒一-通过id查询", notes="轧钢棒一-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
+		RollClubOne rollClubOne = rollClubOneService.getById(id);
+		if(rollClubOne==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(rollClubOne);
+
+	}
+
+}

+ 276 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubOne/entity/RollClubOne.java

@@ -0,0 +1,276 @@
+package org.jeecg.modules.billet.rollClubOne.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+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;
+
+/**
+ * @Description: 轧钢棒一
+ * @Author: jeecg-boot
+ * @Date:   2024-05-06
+ * @Version: V1.0
+ */
+@ApiModel(value="roll_club_one对象", description="轧钢棒一")
+@Data
+@TableName("roll_club_one")
+public class RollClubOne implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**id*/
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private java.lang.String id;
+    /**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+    /**创建日期*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+    /**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+    /**更新日期*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+    /**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+    /**日期*/
+    @Excel(name = "日期", width = 20, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "日期")
+    private java.util.Date createDate;
+    /**炉号*/
+    @Excel(name = "炉号", width = 15)
+    @ApiModelProperty(value = "炉号")
+    private java.lang.String furnaceNum;
+    /**班组*/
+    @Excel(name = "班组", width = 15)
+    @ApiModelProperty(value = "班组")
+    @Dict(dicCode = "lg_bz")
+    private java.lang.String shiftGroup;
+    /**班别*/
+    @Excel(name = "班别", width = 15)
+    @Dict(dicCode = "lg_bb")
+    @ApiModelProperty(value = "班别")
+    private java.lang.String shift;
+    /**定尺*/
+    @Excel(name = "定尺", width = 15)
+    @ApiModelProperty(value = "定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String size;
+    /**钢种*/
+    @Excel(name = "钢种", width = 15)
+    @ApiModelProperty(value = "钢种")
+    private java.lang.String steel;
+    /**规格*/
+    @Excel(name = "规格", width = 15)
+    @ApiModelProperty(value = "规格")
+    private java.lang.String spec;
+    /**定重*/
+    @Excel(name = "定重", width = 15)
+    @ApiModelProperty(value = "定重")
+    private java.lang.Double decideWeight;
+    /**总支数*/
+    @Excel(name = "总支数", width = 15)
+    @ApiModelProperty(value = "总支数")
+    private java.lang.Integer amountTotal;
+    /**出坯量*/
+    @Excel(name = "出坯量", width = 15)
+    @ApiModelProperty(value = "出坯量")
+    private java.lang.Double blankOutput;
+    /**C*/
+    @Excel(name = "C", width = 15)
+    @ApiModelProperty(value = "C")
+    private java.lang.Double cc;
+    /**Mn*/
+    @Excel(name = "Mn", width = 15)
+    @ApiModelProperty(value = "Mn")
+    private java.lang.Double mn;
+    /**Si*/
+    @Excel(name = "Si", width = 15)
+    @ApiModelProperty(value = "Si")
+    private java.lang.Double si;
+    /**S*/
+    @Excel(name = "S", width = 15)
+    @ApiModelProperty(value = "S")
+    private java.lang.Double ss;
+    /**P*/
+    @Excel(name = "P", width = 15)
+    @ApiModelProperty(value = "P")
+    private java.lang.Double pp;
+    /**V*/
+    @Excel(name = "V", width = 15)
+    @ApiModelProperty(value = "V")
+    private java.lang.Double vv;
+    /**Nb*/
+    @Excel(name = "Nb", width = 15)
+    @ApiModelProperty(value = "Nb")
+    private java.lang.Double nb;
+    /**是否已编辑*/
+    @Excel(name = "是否已编辑", width = 15)
+    @ApiModelProperty(value = "是否已编辑")
+    private java.lang.Boolean isUpd;
+    /**castMachine*/
+    @Excel(name = "castMachine", width = 15)
+    @ApiModelProperty(value = "castMachine")
+    private java.lang.String castMachine;
+    /**棒一支数*/
+    @Excel(name = "棒一支数", width = 15)
+    @ApiModelProperty(value = "棒一支数")
+    private java.lang.String amountOne;
+    /**棒一定尺*/
+    @Excel(name = "棒一定尺", width = 15)
+    @ApiModelProperty(value = "棒一定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeOne;
+    /**棒一起始根*/
+    @Excel(name = "棒一起始根", width = 15)
+    @ApiModelProperty(value = "棒一起始根")
+    private java.lang.String startNumOne;
+    /**棒一终止根*/
+    @Excel(name = "棒一终止根", width = 15)
+    @ApiModelProperty(value = "棒一终止根")
+    private java.lang.String endNumOne;
+    /**棒一车号*/
+    @Excel(name = "棒一车号", width = 15)
+    @ApiModelProperty(value = "棒一车号")
+    private java.lang.String carNumOne;
+    /**棒二支数*/
+    @Excel(name = "棒二支数", width = 15)
+    @ApiModelProperty(value = "棒二支数")
+    private java.lang.String amountTwo;
+    /**棒二定尺*/
+    @Excel(name = "棒二定尺", width = 15)
+    @ApiModelProperty(value = "棒二定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeTwo;
+    /**棒二起始根*/
+    @Excel(name = "棒二起始根", width = 15)
+    @ApiModelProperty(value = "棒二起始根")
+    private java.lang.String startNumTwo;
+    /**棒二终止根*/
+    @Excel(name = "棒二终止根", width = 15)
+    @ApiModelProperty(value = "棒二终止根")
+    private java.lang.String endNumTwo;
+    /**棒二车号*/
+    @Excel(name = "棒二车号", width = 15)
+    @ApiModelProperty(value = "棒二车号")
+    private java.lang.String carNumTwo;
+    /**棒三支数*/
+    @Excel(name = "棒三支数", width = 15)
+    @ApiModelProperty(value = "棒三支数")
+    private java.lang.String amountThree;
+    /**棒三定尺*/
+    @Excel(name = "棒三定尺", width = 15)
+    @ApiModelProperty(value = "棒三定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeThree;
+    /**棒三起始根*/
+    @Excel(name = "棒三起始根", width = 15)
+    @ApiModelProperty(value = "棒三起始根")
+    private java.lang.String startNumThree;
+    /**棒三终止根*/
+    @Excel(name = "棒三终止根", width = 15)
+    @ApiModelProperty(value = "棒三终止根")
+    private java.lang.String endNumThree;
+    /**棒三车号*/
+    @Excel(name = "棒三车号", width = 15)
+    @ApiModelProperty(value = "棒三车号")
+    private java.lang.String carNumThree;
+    /**堆垛支数*/
+    @Excel(name = "堆垛支数", width = 15)
+    @ApiModelProperty(value = "堆垛支数")
+    private java.lang.String amountStack;
+    /**棒三定尺*/
+    @Excel(name = "堆垛定尺", width = 15)
+    @ApiModelProperty(value = "堆垛定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeStack;
+    /**堆垛起始根*/
+    @Excel(name = "堆垛起始根", width = 15)
+    @ApiModelProperty(value = "堆垛起始根")
+    private java.lang.String startNumStack;
+    /**堆垛终止根*/
+    @Excel(name = "堆垛终止根", width = 15)
+    @ApiModelProperty(value = "堆垛终止根")
+    private java.lang.String endNumStack;
+    /**堆垛车号*/
+    @Excel(name = "堆垛车号", width = 15)
+    @ApiModelProperty(value = "堆垛车号")
+    private java.lang.String carNumStack;
+    /**判废支数*/
+    @Excel(name = "判废支数", width = 15)
+    @ApiModelProperty(value = "判废支数")
+    private java.lang.String amountWaste;
+    @Excel(name = "判废定尺", width = 15)
+    @ApiModelProperty(value = "判废定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeWaste;
+    /**判废起始根*/
+    @Excel(name = "判废起始根", width = 15)
+    @ApiModelProperty(value = "判废起始根")
+    private java.lang.String startNumWaste;
+    /**判废终止根*/
+    @Excel(name = "判废终止根", width = 15)
+    @ApiModelProperty(value = "判废终止根")
+    private java.lang.String endNumWaste;
+    /**判废车号*/
+    @Excel(name = "判废车号", width = 15)
+    @ApiModelProperty(value = "判废车号")
+    private java.lang.String carNumWaste;
+    /**高线支数*/
+    @Excel(name = "高线支数", width = 15)
+    @ApiModelProperty(value = "高线支数")
+    private java.lang.String amountHeight;
+    @Excel(name = "高线定尺", width = 15)
+    @ApiModelProperty(value = "高线定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeHeight;
+    /**高线起始根*/
+    @Excel(name = "高线起始根", width = 15)
+    @ApiModelProperty(value = "高线起始根")
+    private java.lang.String startNumHeight;
+    /**高线终止根*/
+    @Excel(name = "高线终止根", width = 15)
+    @ApiModelProperty(value = "高线终止根")
+    private java.lang.String endNumHeight;
+    /**高线车号*/
+    @Excel(name = "高线车号", width = 15)
+    @ApiModelProperty(value = "高线车号")
+    private java.lang.String carNumHeight;
+    @Excel(name = "外运支数", width = 15)
+    @ApiModelProperty(value = "外运支数")
+    private java.lang.String amountOut;
+    @Excel(name = "外运定尺", width = 15)
+    @ApiModelProperty(value = "外运定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeOut;
+    /**高线起始根*/
+    @Excel(name = "外运起始根", width = 15)
+    @ApiModelProperty(value = "外运起始根")
+    private java.lang.String startNumOut;
+    /**高线终止根*/
+    @Excel(name = "外运终止根", width = 15)
+    @ApiModelProperty(value = "高线终止根")
+    private java.lang.String endNumOut;
+    /**高线车号*/
+    @Excel(name = "外运车号", width = 15)
+    @ApiModelProperty(value = "高线车号")
+    private java.lang.String carNumOut;
+}

+ 17 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubOne/mapper/RollClubOneMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.billet.rollClubOne.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.billet.rollClubOne.entity.RollClubOne;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 轧钢棒一
+ * @Author: jeecg-boot
+ * @Date:   2024-05-06
+ * @Version: V1.0
+ */
+public interface RollClubOneMapper extends BaseMapper<RollClubOne> {
+
+}

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

+ 18 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubOne/service/IRollClubOneService.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.billet.rollClubOne.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.billet.rollClubOne.entity.RollClubOne;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 轧钢棒一
+ * @Author: jeecg-boot
+ * @Date:   2024-05-06
+ * @Version: V1.0
+ */
+public interface IRollClubOneService extends IService<RollClubOne> {
+
+}

+ 19 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubOne/service/impl/RollClubOneServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.billet.rollClubOne.service.impl;
+
+
+import org.jeecg.modules.billet.rollClubOne.entity.RollClubOne;
+import org.jeecg.modules.billet.rollClubOne.mapper.RollClubOneMapper;
+import org.jeecg.modules.billet.rollClubOne.service.IRollClubOneService;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 轧钢棒一
+ * @Author: jeecg-boot
+ * @Date:   2024-05-06
+ * @Version: V1.0
+ */
+@Service
+public class RollClubOneServiceImpl extends ServiceImpl<RollClubOneMapper, RollClubOne> implements IRollClubOneService {
+	
+}

+ 153 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubThree/controller/RollClubThreeController.java

@@ -0,0 +1,153 @@
+package org.jeecg.modules.billet.rollClubThree.controller;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.modules.billet.operateLog.service.IOperateLogService;
+import org.jeecg.modules.billet.rollClubThree.entity.RollClubThree;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.vo.LoginUser;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.billet.rollClubThree.service.IRollClubThreeService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.extern.slf4j.Slf4j;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 轧钢棒三
+ * @Author: jeecg-boot
+ * @Date:   2024-05-06
+ * @Version: V1.0
+ */
+@Api(tags="轧钢棒三")
+@RestController
+@RequestMapping("/rollClubThree")
+@Slf4j
+public class RollClubThreeController {
+	@Autowired
+	private IRollClubThreeService rollClubThreeService;
+	 @Autowired
+	 private IOperateLogService operateLogService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param rollClubThree
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@AutoLog(value = "轧钢棒三-分页列表查询")
+	@ApiOperation(value="轧钢棒三-分页列表查询", notes="轧钢棒三-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<?> queryPageList(RollClubThree rollClubThree,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<RollClubThree> queryWrapper = QueryGenerator.initQueryWrapper(rollClubThree, req.getParameterMap());
+		Page<RollClubThree> page = new Page<RollClubThree>(pageNo, pageSize);
+		IPage<RollClubThree> pageList = rollClubThreeService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @return
+	 */
+	@AutoLog(value = "轧钢棒三-添加")
+	@ApiOperation(value="轧钢棒三-添加", notes="轧钢棒三-添加")
+	@PostMapping(value = "/add")
+	public Result<?> add() {
+		RollClubThree rollClubThree = new RollClubThree();
+		rollClubThreeService.save(rollClubThree);
+		operateLogService.add(rollClubThree,null,RollClubThree.class);
+		return Result.OK("添加成功!");
+	}
+
+
+	 /**
+	  *  编辑
+	  *
+	  * @return
+	  */
+	 @AutoLog(value = "轧钢棒三详情-编辑")
+	 @ApiOperation(value="轧钢棒三详情-编辑", notes="轧钢棒三详情-编辑")
+	 @PutMapping(value = "/editDesc")
+	 public Result<?> editDesc(@RequestBody RollClubThree rollClubThree) {
+	 	operateLogService.add(rollClubThreeService.getById(rollClubThree.getId()),rollClubThree,RollClubThree.class);
+		 rollClubThreeService.updateById(rollClubThree);
+		 return Result.OK("编辑成功!");
+	 }
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "轧钢棒三-通过id删除")
+	@ApiOperation(value="轧钢棒三-通过id删除", notes="轧钢棒三-通过id删除")
+	@DeleteMapping(value = "/delete")
+	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+		rollClubThreeService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "轧钢棒三-批量删除")
+	@ApiOperation(value="轧钢棒三-批量删除", notes="轧钢棒三-批量删除")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.rollClubThreeService.removeBatchByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "轧钢棒三-通过id查询")
+	@ApiOperation(value="轧钢棒三-通过id查询", notes="轧钢棒三-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
+		RollClubThree rollClubThree = rollClubThreeService.getById(id);
+		if(rollClubThree==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(rollClubThree);
+
+	}
+}

+ 276 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubThree/entity/RollClubThree.java

@@ -0,0 +1,276 @@
+package org.jeecg.modules.billet.rollClubThree.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+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;
+
+/**
+ * @Description: 轧钢棒三
+ * @Author: jeecg-boot
+ * @Date:   2024-05-06
+ * @Version: V1.0
+ */
+@ApiModel(value="roll_club_three", description="轧钢棒三")
+@Data
+@TableName("roll_club_three")
+public class RollClubThree implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**id*/
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private java.lang.String id;
+    /**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+    /**创建日期*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+    /**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+    /**更新日期*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+    /**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+    /**日期*/
+    @Excel(name = "日期", width = 20, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "日期")
+    private java.util.Date createDate;
+    /**炉号*/
+    @Excel(name = "炉号", width = 15)
+    @ApiModelProperty(value = "炉号")
+    private java.lang.String furnaceNum;
+    /**班组*/
+    @Excel(name = "班组", width = 15)
+    @ApiModelProperty(value = "班组")
+    @Dict(dicCode = "lg_bz")
+    private java.lang.String shiftGroup;
+    /**班别*/
+    @Excel(name = "班别", width = 15)
+    @Dict(dicCode = "lg_bb")
+    @ApiModelProperty(value = "班别")
+    private java.lang.String shift;
+    /**定尺*/
+    @Excel(name = "定尺", width = 15)
+    @ApiModelProperty(value = "定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String size;
+    /**钢种*/
+    @Excel(name = "钢种", width = 15)
+    @ApiModelProperty(value = "钢种")
+    private java.lang.String steel;
+    /**规格*/
+    @Excel(name = "规格", width = 15)
+    @ApiModelProperty(value = "规格")
+    private java.lang.String spec;
+    /**定重*/
+    @Excel(name = "定重", width = 15)
+    @ApiModelProperty(value = "定重")
+    private java.lang.Double decideWeight;
+    /**总支数*/
+    @Excel(name = "总支数", width = 15)
+    @ApiModelProperty(value = "总支数")
+    private java.lang.Integer amountTotal;
+    /**出坯量*/
+    @Excel(name = "出坯量", width = 15)
+    @ApiModelProperty(value = "出坯量")
+    private java.lang.Double blankOutput;
+    /**C*/
+    @Excel(name = "C", width = 15)
+    @ApiModelProperty(value = "C")
+    private java.lang.Double cc;
+    /**Mn*/
+    @Excel(name = "Mn", width = 15)
+    @ApiModelProperty(value = "Mn")
+    private java.lang.Double mn;
+    /**Si*/
+    @Excel(name = "Si", width = 15)
+    @ApiModelProperty(value = "Si")
+    private java.lang.Double si;
+    /**S*/
+    @Excel(name = "S", width = 15)
+    @ApiModelProperty(value = "S")
+    private java.lang.Double ss;
+    /**P*/
+    @Excel(name = "P", width = 15)
+    @ApiModelProperty(value = "P")
+    private java.lang.Double pp;
+    /**V*/
+    @Excel(name = "V", width = 15)
+    @ApiModelProperty(value = "V")
+    private java.lang.Double vv;
+    /**Nb*/
+    @Excel(name = "Nb", width = 15)
+    @ApiModelProperty(value = "Nb")
+    private java.lang.Double nb;
+    /**是否已编辑*/
+    @Excel(name = "是否已编辑", width = 15)
+    @ApiModelProperty(value = "是否已编辑")
+    private java.lang.Boolean isUpd;
+    /**castMachine*/
+    @Excel(name = "castMachine", width = 15)
+    @ApiModelProperty(value = "castMachine")
+    private java.lang.String castMachine;
+    /**棒一支数*/
+    @Excel(name = "棒一支数", width = 15)
+    @ApiModelProperty(value = "棒一支数")
+    private java.lang.String amountOne;
+    /**棒一定尺*/
+    @Excel(name = "棒一定尺", width = 15)
+    @ApiModelProperty(value = "棒一定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeOne;
+    /**棒一起始根*/
+    @Excel(name = "棒一起始根", width = 15)
+    @ApiModelProperty(value = "棒一起始根")
+    private java.lang.String startNumOne;
+    /**棒一终止根*/
+    @Excel(name = "棒一终止根", width = 15)
+    @ApiModelProperty(value = "棒一终止根")
+    private java.lang.String endNumOne;
+    /**棒一车号*/
+    @Excel(name = "棒一车号", width = 15)
+    @ApiModelProperty(value = "棒一车号")
+    private java.lang.String carNumOne;
+    /**棒二支数*/
+    @Excel(name = "棒二支数", width = 15)
+    @ApiModelProperty(value = "棒二支数")
+    private java.lang.String amountTwo;
+    /**棒二定尺*/
+    @Excel(name = "棒二定尺", width = 15)
+    @ApiModelProperty(value = "棒二定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeTwo;
+    /**棒二起始根*/
+    @Excel(name = "棒二起始根", width = 15)
+    @ApiModelProperty(value = "棒二起始根")
+    private java.lang.String startNumTwo;
+    /**棒二终止根*/
+    @Excel(name = "棒二终止根", width = 15)
+    @ApiModelProperty(value = "棒二终止根")
+    private java.lang.String endNumTwo;
+    /**棒二车号*/
+    @Excel(name = "棒二车号", width = 15)
+    @ApiModelProperty(value = "棒二车号")
+    private java.lang.String carNumTwo;
+    /**棒三支数*/
+    @Excel(name = "棒三支数", width = 15)
+    @ApiModelProperty(value = "棒三支数")
+    private java.lang.String amountThree;
+    /**棒三定尺*/
+    @Excel(name = "棒三定尺", width = 15)
+    @ApiModelProperty(value = "棒三定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeThree;
+    /**棒三起始根*/
+    @Excel(name = "棒三起始根", width = 15)
+    @ApiModelProperty(value = "棒三起始根")
+    private java.lang.String startNumThree;
+    /**棒三终止根*/
+    @Excel(name = "棒三终止根", width = 15)
+    @ApiModelProperty(value = "棒三终止根")
+    private java.lang.String endNumThree;
+    /**棒三车号*/
+    @Excel(name = "棒三车号", width = 15)
+    @ApiModelProperty(value = "棒三车号")
+    private java.lang.String carNumThree;
+    /**堆垛支数*/
+    @Excel(name = "堆垛支数", width = 15)
+    @ApiModelProperty(value = "堆垛支数")
+    private java.lang.String amountStack;
+    /**棒三定尺*/
+    @Excel(name = "堆垛定尺", width = 15)
+    @ApiModelProperty(value = "堆垛定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeStack;
+    /**堆垛起始根*/
+    @Excel(name = "堆垛起始根", width = 15)
+    @ApiModelProperty(value = "堆垛起始根")
+    private java.lang.String startNumStack;
+    /**堆垛终止根*/
+    @Excel(name = "堆垛终止根", width = 15)
+    @ApiModelProperty(value = "堆垛终止根")
+    private java.lang.String endNumStack;
+    /**堆垛车号*/
+    @Excel(name = "堆垛车号", width = 15)
+    @ApiModelProperty(value = "堆垛车号")
+    private java.lang.String carNumStack;
+    /**判废支数*/
+    @Excel(name = "判废支数", width = 15)
+    @ApiModelProperty(value = "判废支数")
+    private java.lang.String amountWaste;
+    @Excel(name = "判废定尺", width = 15)
+    @ApiModelProperty(value = "判废定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeWaste;
+    /**判废起始根*/
+    @Excel(name = "判废起始根", width = 15)
+    @ApiModelProperty(value = "判废起始根")
+    private java.lang.String startNumWaste;
+    /**判废终止根*/
+    @Excel(name = "判废终止根", width = 15)
+    @ApiModelProperty(value = "判废终止根")
+    private java.lang.String endNumWaste;
+    /**判废车号*/
+    @Excel(name = "判废车号", width = 15)
+    @ApiModelProperty(value = "判废车号")
+    private java.lang.String carNumWaste;
+    /**高线支数*/
+    @Excel(name = "高线支数", width = 15)
+    @ApiModelProperty(value = "高线支数")
+    private java.lang.String amountHeight;
+    @Excel(name = "高线定尺", width = 15)
+    @ApiModelProperty(value = "高线定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeHeight;
+    /**高线起始根*/
+    @Excel(name = "高线起始根", width = 15)
+    @ApiModelProperty(value = "高线起始根")
+    private java.lang.String startNumHeight;
+    /**高线终止根*/
+    @Excel(name = "高线终止根", width = 15)
+    @ApiModelProperty(value = "高线终止根")
+    private java.lang.String endNumHeight;
+    /**高线车号*/
+    @Excel(name = "高线车号", width = 15)
+    @ApiModelProperty(value = "高线车号")
+    private java.lang.String carNumHeight;
+    @Excel(name = "外运支数", width = 15)
+    @ApiModelProperty(value = "外运支数")
+    private java.lang.String amountOut;
+    @Excel(name = "外运定尺", width = 15)
+    @ApiModelProperty(value = "外运定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeOut;
+    /**高线起始根*/
+    @Excel(name = "外运起始根", width = 15)
+    @ApiModelProperty(value = "外运起始根")
+    private java.lang.String startNumOut;
+    /**高线终止根*/
+    @Excel(name = "外运终止根", width = 15)
+    @ApiModelProperty(value = "高线终止根")
+    private java.lang.String endNumOut;
+    /**高线车号*/
+    @Excel(name = "外运车号", width = 15)
+    @ApiModelProperty(value = "高线车号")
+    private java.lang.String carNumOut;
+}

+ 17 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubThree/mapper/RollClubThreeMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.billet.rollClubThree.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.billet.rollClubThree.entity.RollClubThree;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 轧钢棒一
+ * @Author: jeecg-boot
+ * @Date:   2024-05-06
+ * @Version: V1.0
+ */
+public interface RollClubThreeMapper extends BaseMapper<RollClubThree> {
+
+}

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

+ 18 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubThree/service/IRollClubThreeService.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.billet.rollClubThree.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.billet.rollClubThree.entity.RollClubThree;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 轧钢棒三
+ * @Author: jeecg-boot
+ * @Date:   2024-05-06
+ * @Version: V1.0
+ */
+public interface IRollClubThreeService extends IService<RollClubThree> {
+
+}

+ 18 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubThree/service/impl/RollClubThreeServiceImpl.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.billet.rollClubThree.service.impl;
+
+
+import org.jeecg.modules.billet.rollClubThree.entity.RollClubThree;
+import org.jeecg.modules.billet.rollClubThree.mapper.RollClubThreeMapper;
+import org.jeecg.modules.billet.rollClubThree.service.IRollClubThreeService;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 轧钢棒一
+ * @Author: jeecg-boot
+ * @Date:   2024-05-06
+ * @Version: V1.0
+ */
+@Service
+public class RollClubThreeServiceImpl extends ServiceImpl<RollClubThreeMapper, RollClubThree> implements IRollClubThreeService {
+}

+ 135 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubTwo/controller/RollClubTwoController.java

@@ -0,0 +1,135 @@
+package org.jeecg.modules.billet.rollClubTwo.controller;
+
+import java.util.Arrays;
+import javax.servlet.http.HttpServletRequest;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.modules.billet.billetHotsend.entity.BilletHotsend;
+import org.jeecg.modules.billet.operateLog.service.IOperateLogService;
+import org.jeecg.modules.billet.rollClubTwo.entity.RollClubTwo;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.billet.rollClubTwo.service.IRollClubTwoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.extern.slf4j.Slf4j;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 轧钢棒二
+ * @Author: jeecg-boot
+ * @Date:   2024-05-06
+ * @Version: V1.0
+ */
+@Api(tags="轧钢棒二")
+@RestController
+@RequestMapping("/rollClubTwo")
+@Slf4j
+public class RollClubTwoController {
+	@Autowired
+	private IRollClubTwoService rollClubTwoService;
+	 @Autowired
+	 private IOperateLogService operateLogService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param rollClubTwo
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@AutoLog(value = "轧钢棒二-分页列表查询")
+	@ApiOperation(value="轧钢棒二-分页列表查询", notes="轧钢棒二-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<?> queryPageList(RollClubTwo rollClubTwo,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<RollClubTwo> queryWrapper = QueryGenerator.initQueryWrapper(rollClubTwo, req.getParameterMap());
+		Page<RollClubTwo> page = new Page<RollClubTwo>(pageNo, pageSize);
+		IPage<RollClubTwo> pageList = rollClubTwoService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @return
+	 */
+	@AutoLog(value = "轧钢棒二-添加")
+	@ApiOperation(value="轧钢棒二-添加", notes="轧钢棒二-添加")
+	@PostMapping(value = "/add")
+	public Result<?> add() {
+		RollClubTwo rollClubTwo = new RollClubTwo();
+		rollClubTwoService.save(rollClubTwo);
+		operateLogService.add(rollClubTwo,null,RollClubTwo.class);
+		return Result.OK("添加成功!");
+	}
+
+	 /**
+	  *  编辑
+	  *
+	  * @return
+	  */
+	 @AutoLog(value = "轧钢棒二详情-编辑")
+	 @ApiOperation(value="轧钢棒二详情-编辑", notes="轧钢棒二详情-编辑")
+	 @PutMapping(value = "/editDesc")
+	 public Result<?> editDesc(@RequestBody RollClubTwo rollClubTwo) {
+		 operateLogService.add(rollClubTwoService.getById(rollClubTwo.getId()),rollClubTwo, RollClubTwo.class);
+		 rollClubTwoService.updateById(rollClubTwo);
+		 return Result.OK("编辑成功!");
+	 }
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "轧钢棒二-通过id删除")
+	@ApiOperation(value="轧钢棒二-通过id删除", notes="轧钢棒二-通过id删除")
+	@DeleteMapping(value = "/delete")
+	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+		rollClubTwoService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "轧钢棒二-批量删除")
+	@ApiOperation(value="轧钢棒二-批量删除", notes="轧钢棒二-批量删除")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.rollClubTwoService.removeBatchByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "轧钢棒二-通过id查询")
+	@ApiOperation(value="轧钢棒二-通过id查询", notes="轧钢棒二-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
+		RollClubTwo rollClubTwo = rollClubTwoService.getById(id);
+		if(rollClubTwo==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(rollClubTwo);
+
+	}
+
+
+}

+ 276 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubTwo/entity/RollClubTwo.java

@@ -0,0 +1,276 @@
+package org.jeecg.modules.billet.rollClubTwo.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+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;
+
+/**
+ * @Description: 轧钢棒一
+ * @Author: jeecg-boot
+ * @Date:   2024-05-06
+ * @Version: V1.0
+ */
+@ApiModel(value="billet_hotsend_base对象", description="轧钢棒一")
+@Data
+@TableName("roll_club_two")
+public class RollClubTwo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**id*/
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private java.lang.String id;
+    /**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+    /**创建日期*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+    /**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+    /**更新日期*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+    /**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+    /**日期*/
+    @Excel(name = "日期", width = 20, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "日期")
+    private java.util.Date createDate;
+    /**炉号*/
+    @Excel(name = "炉号", width = 15)
+    @ApiModelProperty(value = "炉号")
+    private java.lang.String furnaceNum;
+    /**班组*/
+    @Excel(name = "班组", width = 15)
+    @ApiModelProperty(value = "班组")
+    @Dict(dicCode = "lg_bz")
+    private java.lang.String shiftGroup;
+    /**班别*/
+    @Excel(name = "班别", width = 15)
+    @Dict(dicCode = "lg_bb")
+    @ApiModelProperty(value = "班别")
+    private java.lang.String shift;
+    /**定尺*/
+    @Excel(name = "定尺", width = 15)
+    @ApiModelProperty(value = "定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String size;
+    /**钢种*/
+    @Excel(name = "钢种", width = 15)
+    @ApiModelProperty(value = "钢种")
+    private java.lang.String steel;
+    /**规格*/
+    @Excel(name = "规格", width = 15)
+    @ApiModelProperty(value = "规格")
+    private java.lang.String spec;
+    /**定重*/
+    @Excel(name = "定重", width = 15)
+    @ApiModelProperty(value = "定重")
+    private java.lang.Double decideWeight;
+    /**总支数*/
+    @Excel(name = "总支数", width = 15)
+    @ApiModelProperty(value = "总支数")
+    private java.lang.Integer amountTotal;
+    /**出坯量*/
+    @Excel(name = "出坯量", width = 15)
+    @ApiModelProperty(value = "出坯量")
+    private java.lang.Double blankOutput;
+    /**C*/
+    @Excel(name = "C", width = 15)
+    @ApiModelProperty(value = "C")
+    private java.lang.Double cc;
+    /**Mn*/
+    @Excel(name = "Mn", width = 15)
+    @ApiModelProperty(value = "Mn")
+    private java.lang.Double mn;
+    /**Si*/
+    @Excel(name = "Si", width = 15)
+    @ApiModelProperty(value = "Si")
+    private java.lang.Double si;
+    /**S*/
+    @Excel(name = "S", width = 15)
+    @ApiModelProperty(value = "S")
+    private java.lang.Double ss;
+    /**P*/
+    @Excel(name = "P", width = 15)
+    @ApiModelProperty(value = "P")
+    private java.lang.Double pp;
+    /**V*/
+    @Excel(name = "V", width = 15)
+    @ApiModelProperty(value = "V")
+    private java.lang.Double vv;
+    /**Nb*/
+    @Excel(name = "Nb", width = 15)
+    @ApiModelProperty(value = "Nb")
+    private java.lang.Double nb;
+    /**是否已编辑*/
+    @Excel(name = "是否已编辑", width = 15)
+    @ApiModelProperty(value = "是否已编辑")
+    private java.lang.Boolean isUpd;
+    /**castMachine*/
+    @Excel(name = "castMachine", width = 15)
+    @ApiModelProperty(value = "castMachine")
+    private java.lang.String castMachine;
+    /**棒一支数*/
+    @Excel(name = "棒一支数", width = 15)
+    @ApiModelProperty(value = "棒一支数")
+    private java.lang.String amountOne;
+    /**棒一定尺*/
+    @Excel(name = "棒一定尺", width = 15)
+    @ApiModelProperty(value = "棒一定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeOne;
+    /**棒一起始根*/
+    @Excel(name = "棒一起始根", width = 15)
+    @ApiModelProperty(value = "棒一起始根")
+    private java.lang.String startNumOne;
+    /**棒一终止根*/
+    @Excel(name = "棒一终止根", width = 15)
+    @ApiModelProperty(value = "棒一终止根")
+    private java.lang.String endNumOne;
+    /**棒一车号*/
+    @Excel(name = "棒一车号", width = 15)
+    @ApiModelProperty(value = "棒一车号")
+    private java.lang.String carNumOne;
+    /**棒二支数*/
+    @Excel(name = "棒二支数", width = 15)
+    @ApiModelProperty(value = "棒二支数")
+    private java.lang.String amountTwo;
+    /**棒二定尺*/
+    @Excel(name = "棒二定尺", width = 15)
+    @ApiModelProperty(value = "棒二定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeTwo;
+    /**棒二起始根*/
+    @Excel(name = "棒二起始根", width = 15)
+    @ApiModelProperty(value = "棒二起始根")
+    private java.lang.String startNumTwo;
+    /**棒二终止根*/
+    @Excel(name = "棒二终止根", width = 15)
+    @ApiModelProperty(value = "棒二终止根")
+    private java.lang.String endNumTwo;
+    /**棒二车号*/
+    @Excel(name = "棒二车号", width = 15)
+    @ApiModelProperty(value = "棒二车号")
+    private java.lang.String carNumTwo;
+    /**棒三支数*/
+    @Excel(name = "棒三支数", width = 15)
+    @ApiModelProperty(value = "棒三支数")
+    private java.lang.String amountThree;
+    /**棒三定尺*/
+    @Excel(name = "棒三定尺", width = 15)
+    @ApiModelProperty(value = "棒三定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeThree;
+    /**棒三起始根*/
+    @Excel(name = "棒三起始根", width = 15)
+    @ApiModelProperty(value = "棒三起始根")
+    private java.lang.String startNumThree;
+    /**棒三终止根*/
+    @Excel(name = "棒三终止根", width = 15)
+    @ApiModelProperty(value = "棒三终止根")
+    private java.lang.String endNumThree;
+    /**棒三车号*/
+    @Excel(name = "棒三车号", width = 15)
+    @ApiModelProperty(value = "棒三车号")
+    private java.lang.String carNumThree;
+    /**堆垛支数*/
+    @Excel(name = "堆垛支数", width = 15)
+    @ApiModelProperty(value = "堆垛支数")
+    private java.lang.String amountStack;
+    /**棒三定尺*/
+    @Excel(name = "堆垛定尺", width = 15)
+    @ApiModelProperty(value = "堆垛定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeStack;
+    /**堆垛起始根*/
+    @Excel(name = "堆垛起始根", width = 15)
+    @ApiModelProperty(value = "堆垛起始根")
+    private java.lang.String startNumStack;
+    /**堆垛终止根*/
+    @Excel(name = "堆垛终止根", width = 15)
+    @ApiModelProperty(value = "堆垛终止根")
+    private java.lang.String endNumStack;
+    /**堆垛车号*/
+    @Excel(name = "堆垛车号", width = 15)
+    @ApiModelProperty(value = "堆垛车号")
+    private java.lang.String carNumStack;
+    /**判废支数*/
+    @Excel(name = "判废支数", width = 15)
+    @ApiModelProperty(value = "判废支数")
+    private java.lang.String amountWaste;
+    @Excel(name = "判废定尺", width = 15)
+    @ApiModelProperty(value = "判废定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeWaste;
+    /**判废起始根*/
+    @Excel(name = "判废起始根", width = 15)
+    @ApiModelProperty(value = "判废起始根")
+    private java.lang.String startNumWaste;
+    /**判废终止根*/
+    @Excel(name = "判废终止根", width = 15)
+    @ApiModelProperty(value = "判废终止根")
+    private java.lang.String endNumWaste;
+    /**判废车号*/
+    @Excel(name = "判废车号", width = 15)
+    @ApiModelProperty(value = "判废车号")
+    private java.lang.String carNumWaste;
+    /**高线支数*/
+    @Excel(name = "高线支数", width = 15)
+    @ApiModelProperty(value = "高线支数")
+    private java.lang.String amountHeight;
+    @Excel(name = "高线定尺", width = 15)
+    @ApiModelProperty(value = "高线定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeHeight;
+    /**高线起始根*/
+    @Excel(name = "高线起始根", width = 15)
+    @ApiModelProperty(value = "高线起始根")
+    private java.lang.String startNumHeight;
+    /**高线终止根*/
+    @Excel(name = "高线终止根", width = 15)
+    @ApiModelProperty(value = "高线终止根")
+    private java.lang.String endNumHeight;
+    /**高线车号*/
+    @Excel(name = "高线车号", width = 15)
+    @ApiModelProperty(value = "高线车号")
+    private java.lang.String carNumHeight;
+    @Excel(name = "外运支数", width = 15)
+    @ApiModelProperty(value = "外运支数")
+    private java.lang.String amountOut;
+    @Excel(name = "外运定尺", width = 15)
+    @ApiModelProperty(value = "外运定尺")
+    @Dict(dicCode = "lg_dcgg")
+    private java.lang.String sizeOut;
+    /**高线起始根*/
+    @Excel(name = "外运起始根", width = 15)
+    @ApiModelProperty(value = "外运起始根")
+    private java.lang.String startNumOut;
+    /**高线终止根*/
+    @Excel(name = "外运终止根", width = 15)
+    @ApiModelProperty(value = "高线终止根")
+    private java.lang.String endNumOut;
+    /**高线车号*/
+    @Excel(name = "外运车号", width = 15)
+    @ApiModelProperty(value = "高线车号")
+    private java.lang.String carNumOut;
+}

+ 17 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubTwo/mapper/RollClubTwoMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.billet.rollClubTwo.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.billet.rollClubTwo.entity.RollClubTwo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 轧钢棒一
+ * @Author: jeecg-boot
+ * @Date:   2024-05-06
+ * @Version: V1.0
+ */
+public interface RollClubTwoMapper extends BaseMapper<RollClubTwo> {
+
+}

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

+ 17 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubTwo/service/IRollClubTwoService.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.billet.rollClubTwo.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.billet.rollClubTwo.entity.RollClubTwo;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: 轧钢棒一
+ * @Author: jeecg-boot
+ * @Date:   2024-05-06
+ * @Version: V1.0
+ */
+public interface IRollClubTwoService extends IService<RollClubTwo> {
+}

+ 17 - 0
jeecg-module-billet/src/main/java/org/jeecg/modules/billet/rollClubTwo/service/impl/RollClubTwoServiceImpl.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.billet.rollClubTwo.service.impl;
+
+import org.jeecg.modules.billet.rollClubTwo.entity.RollClubTwo;
+import org.jeecg.modules.billet.rollClubTwo.mapper.RollClubTwoMapper;
+import org.jeecg.modules.billet.rollClubTwo.service.IRollClubTwoService;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 轧钢棒一
+ * @Author: jeecg-boot
+ * @Date:   2024-05-06
+ * @Version: V1.0
+ */
+@Service
+public class RollClubTwoServiceImpl extends ServiceImpl<RollClubTwoMapper, RollClubTwo> implements IRollClubTwoService {
+}

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov