diff --git a/.trae/documents/Add SQL Server Query Integration.md b/.trae/documents/Add SQL Server Query Integration.md new file mode 100644 index 0000000..0dff9f6 --- /dev/null +++ b/.trae/documents/Add SQL Server Query Integration.md @@ -0,0 +1,36 @@ +## 配置示例(建议) +- 新增独立数据源前缀:`spring.datasource.mssql`(与主库区分) +- Spring Boot 标准键名使用短横线:`driver-class-name` +- SQL Server URL 推荐:`jdbc:sqlserver://主机:端口;databaseName=库名;encrypt=false;trustServerCertificate=true` +- 不要使用 MySQL 专用参数(如 `rewriteBatchedStatements`) + +示例: +``` +spring: + datasource: + mssql: + driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver + url: jdbc:sqlserver://localhost:1433;databaseName=tempdb;encrypt=false;trustServerCertificate=true + username: SA + password: root + hikari: + maximum-pool-size: 10 + connection-timeout: 30000 + read-only: true +``` + +说明: +- `DatabaseName` 可写为 `databaseName`(微软驱动两者等效,统一小写更常见) +- `SelectMethod=cursor` 是旧驱动参数,通常不需要;保留仅在游标大结果集特殊场景 +- `rewriteBatchedStatements` 是 MySQL 参数,不适用于 SQL Server,需去掉 +- 生产环境请勿使用 `SA/root`,改为只读账号并限制权限 + +## 集成方式 +- 若项目已用动态数据源:注册名为 `mssql` 的数据源,查询处使用 `@DS("mssql")` +- 若项目未用动态数据源:为上述 `spring.datasource.mssql` 创建 `DataSource` + `JdbcTemplate` Bean,Service 里使用模板执行参数化 SQL + +## 验证步骤 +- 启动后编写一条简单查询(TOP 10)验证连通 +- 确认连接池参数和超时生效;异常时输出清晰日志 + +确认后我按你选择的“动态数据源/JdbcTemplate”方式,补全配置、注册 Bean,并提供示例查询接口与 Service。 \ No newline at end of file diff --git a/.trae/documents/导出Excel:BOM与工艺分离实现方案.md b/.trae/documents/导出Excel:BOM与工艺分离实现方案.md new file mode 100644 index 0000000..8805e2d --- /dev/null +++ b/.trae/documents/导出Excel:BOM与工艺分离实现方案.md @@ -0,0 +1,73 @@ +## 目标 +- 在同一个 Sheet 中导出两块数据: + - 区域A:材料BOM(每物料1条) + - 区域B:工艺路线(每工序1条,完整展示所有步骤) +- 保持原始物料顺序;工艺按 `processNo` 升序。 + +## 布局设计(同一Sheet) +- 区域A(上方):占位名 `KingdeeBomData` + - 列建议: + - 生产令号 `routeDescription` + - 物料编码 `materialCode` + - 名称 `materialName` + - 材质 `material` + - 单重KG `discWeight` + - 材料BOM物料编码 `rawMaterialCode` + - 材料BOM物料名称 `rawMaterialName` + - BOM材质 `bomMaterial` + - 材料单重KG `bomDanZhong` + - 用量 `discUsage` + - 单位 `bomUnit` +- 区域B(下方,留若干空行与A区分):占位名 `ProcessRouteExcelDTO` + - 列建议: + - 生产令号 `routeDescription` + - 物料编码 `materialCode` + - 名称 `materialName` + - 材质 `material` + - 单重KG `discWeight` + - 工序号 `processNo` + - 工作中心 `workCenter` + - 工序名称 `processName` + - 工序说明 `processDescription` + - 工序控制 `processControl` + - 活动时长 `activityDuration` + - 活动单位 `activityUnit` + - 单台数量 `unitQuantity` + - 本批数量 `batchQuantity` + +## 数据生成逻辑 +- BOM区(每物料1条): + - 取最新版本:`readGetTheLatestVersion(materialCode)` + - 取 `getMaterialUseXByVer(version)` 的第一条(或按你后续指定规则汇总)作为该物料的BOM条目 +- 工艺区(每工序1条): + - 取 `getRouteGuDing(materialCode)` 全量,按 `processNo` 升序展开;不写入任何BOM字段 +- 两区均附带物料基础字段(生产令号、编码、名称、材质、单重、数量等) + +## 控制器改造要点(exportRoute2) +1. 遍历 `routeList`(保序): + - 构建 `kingdeeBomRows`(List>) + - 构建 `excelDTOList`(工艺 ProcessRouteExcelDTO 列表) +2. 动态映射: + - `DynamicDataMapping.createOneDataList("KingdeeBomData", kingdeeBomRows)` + - `DynamicDataMapping.createOneDataList("ProcessRouteExcelDTO", evoRouteDataList)` +3. 模板:在同一Sheet中放置两个表格块,分别绑定以上占位名 + +## 排序与顺序 +- 物料:沿用 `routeList` 的顺序 +- 工艺:`processNo` 升序,`null` 置后 + +## 边界情况 +- 无工艺:B区为空,但A区仍输出该物料的BOM +- 无BOM:A区不输出该物料;B区正常输出工艺 +- 版本查询失败:A区跳过该物料或显示“未查询到”标记 + +## 验证 +- 用两种物料进行导出测试:一个多工序、一个单工序;核对两区行数与内容 +- 对比你提供的示例Excel,确认列头、顺序与格式 + +## 请你确认/提供 +- 同一Sheet模板文件或示意图:两块区域位置与占位名是否采用 `KingdeeBomData` 和 `ProcessRouteExcelDTO` +- BOM“一条数据”的取值方式:直接取第一条还是需要汇总(若后续会出现多子项) +- 是否需要在两区之间加入分隔行/标题行的样式要求 + +确认后我将按该方案更新导出逻辑并给你可下载的Excel。 \ No newline at end of file diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index f52b9a9..77c9c48 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -100,11 +100,18 @@ + + com.microsoft.sqlserver + mssql-jdbc + 6.4.0.jre8 + - - - + + com.aliyun + dingtalk + 2.2.41 + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java index a2a8bed..a69305a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java @@ -1,5 +1,6 @@ package com.ruoyi; +import org.apache.poi.openxml4j.util.ZipSecureFile; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -20,7 +21,13 @@ import org.springframework.cache.annotation.EnableCaching; @MapperScan("com.ruoyi.**.mapper") @EnableCaching public class RuoYiApplication { + static { + // 全局放宽,启动时执行一次即可 + ZipSecureFile.setMaxFileCount(100000); + ZipSecureFile.setMinInflateRatio(0.005); + } public static void main(String[] args) { + System.setProperty("spring.devtools.restart.enabled", "false"); SpringApplication application = new SpringApplication(RuoYiApplication.class); application.setApplicationStartup(new BufferingApplicationStartup(2048)); diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 367c8f0..74e4414 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -62,26 +62,12 @@ spring: url: jdbc:mysql://192.168.5.121:3306/item_retrieval_salve?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true username: root password: root -# oracle: -# type: ${spring.datasource.type} -# driverClassName: oracle.jdbc.OracleDriver -# url: jdbc:oracle:thin:@//localhost:1521/XE -# username: ROOT -# password: root -# hikari: -# connectionTestQuery: SELECT 1 FROM DUAL -# postgres: -# type: ${spring.datasource.type} -# driverClassName: org.postgresql.Driver -# url: jdbc:postgresql://localhost:5432/postgres?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true -# username: root -# password: root -# sqlserver: -# type: ${spring.datasource.type} -# driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver -# url: jdbc:sqlserver://localhost:1433;DatabaseName=tempdb;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true -# username: SA -# password: root + sqlserver: + type: com.zaxxer.hikari.HikariDataSource + driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver + url: jdbc:sqlserver://192.168.5.8:1433;databaseName=AIS20241010133631;encrypt=false;trustServerCertificate=true + username: sa + password: 1a! hikari: # 最大连接池数量 maxPoolSize: 20 diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index bcb390f..7708ec3 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -52,7 +52,7 @@ spring: driverClassName: com.mysql.cj.jdbc.Driver # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562 # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题) - #url: jdbc:mysql://localhost:3306/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true + # url: jdbc:mysql://localhost:3306/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true url: jdbc:mysql://192.168.5.121:3306/item_retrieval-evo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true username: root password: root @@ -61,10 +61,16 @@ spring: lazy: true type: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver - # url: jdbc:mysql://localhost:3306/item_retrieval_salve?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true + #url: jdbc:mysql://localhost:3306/item_retrieval_salve?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true url: jdbc:mysql://192.168.5.121:3306/item_retrieval_salve?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true username: root password: root + sqlserver: + type: com.zaxxer.hikari.HikariDataSource + driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver + url: jdbc:sqlserver://192.168.5.8:1433;databaseName=AIS20241010133631;encrypt=false;trustServerCertificate=true + username: sa + password: 1a! # oracle: # type: ${spring.datasource.type} # driverClassName: oracle.jdbc.OracleDriver diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index a1afa3b..0d28e11 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -289,3 +289,5 @@ management: show-details: ALWAYS logfile: external-file: ./logs/sys-console.log +dingtalk: + diff --git a/ruoyi-system/pom.xml b/ruoyi-system/pom.xml index 19a7e60..40ef57e 100644 --- a/ruoyi-system/pom.xml +++ b/ruoyi-system/pom.xml @@ -121,6 +121,11 @@ org.assertj assertj-core + + com.microsoft.sqlserver + mssql-jdbc + 12.4.2.jre8 + diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/BomDetailsController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/BomDetailsController.java index cf7ade0..7d19383 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/BomDetailsController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/BomDetailsController.java @@ -21,6 +21,7 @@ import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.domain.dto.*; import com.ruoyi.common.utils.JdUtils; import com.ruoyi.common.utils.poi.ExcelUtil; @@ -212,7 +213,7 @@ public class BomDetailsController extends BaseController { */ @Log(title = "明细导入", businessType = BusinessType.IMPORT) - @SaCheckPermission("system:details:import") + @SaCheckPermission("system:details:importData") @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public R importData(@RequestPart("file") MultipartFile file) throws Exception { List bomDetailsVos = ExcelUtil.importExcel(file.getInputStream(), BomDetailsVo.class); @@ -1778,8 +1779,10 @@ public class BomDetailsController extends BaseController { // 创建SubHeadEntity对象,并加入Model JsonObject subHeadEntity = new JsonObject(); model.add("SubHeadEntity", subHeadEntity); - - subHeadEntity.addProperty("FErpClsID", states); + if (bomDetails1.getWareHouse().contains("伊特")){ + subHeadEntity.addProperty("FErpClsID", "2"); + } + subHeadEntity.addProperty("FErpClsID", "1"); subHeadEntity.addProperty("FFeatureItem", "1"); // 创建FCategoryID对象,并加入SubHeadEntity @@ -2076,7 +2079,7 @@ public class BomDetailsController extends BaseController { // 创建FBOMUnitId对象,并加入SubHeadEntity5 JsonObject fBOMUnitId = new JsonObject(); - switch (bomDetails1.getWareHouse()) { + switch (bomDetails1.getRemarks()) { case "把": fBaseUnitId.addProperty("FNumber", "002"); break; @@ -2185,30 +2188,57 @@ public class BomDetailsController extends BaseController { @Log(title = "导入电气bom", businessType = BusinessType.IMPORT) @SaCheckPermission("system:details:importElectricalBom") @PostMapping(value = "/importElectricalBom", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - public void importElectricalBom(@RequestPart("file") MultipartFile file) throws Exception { - List electricalMaterialBomVOS = ExcelUtil.importExcel(file.getInputStream(), ElectricalMaterialBomVO.class); - List list = new ArrayList<>(); - for (ElectricalMaterialBomVO bomVO : electricalMaterialBomVOS) { - BomDetails bomDetails = new BomDetails(); - bomDetails.setTotalWeight(bomVO.getProductionOrderNo()); - bomDetails.setFNumber(bomVO.getParentDrawingNo()); - bomDetails.setFName(bomVO.getParentPart()); - bomDetails.setPartNumber(bomVO.getDrawingNo()); - bomDetails.setName(bomVO.getDrawingName()); - bomDetails.setMaterial(bomVO.getModel());// - bomDetails.setWareHouse(bomVO.getBrand()); - bomDetails.setStats("外购"); - String quantity = bomVO.getQuantity().toString(); - bomDetails.setQuantity(quantity); - bomDetails.setRemarks(bomVO.getUnit()); - bomDetails.setUpdateTime(new Date()); - bomDetails.setBomType("1");//0 是生产bom 1 是电气bom - list.add(bomDetails); - } - List bomDetailsVos1 = BeanUtil.copyToList(list, BomDetailsVo.class); - List bomDetails = saveBomDetails(bomDetailsVos1); - bomDetailsMapper.insertBatch(bomDetails); + public R> importElectricalBom(@RequestPart("file") MultipartFile file) { + Map resp = new HashMap<>(); + try { + if (file == null || file.isEmpty() || StringUtils.isEmpty(file.getOriginalFilename())) { + return R.fail("请选择有效的Excel文件"); + } + String filename = file.getOriginalFilename(); + String suffix = filename.substring(filename.lastIndexOf('.') + 1).toLowerCase(); + if (!("xls".equals(suffix) || "xlsx".equals(suffix))) { + return R.fail("仅支持Excel文件(xls/xlsx)"); + } + List rows = ExcelUtil.importExcel(file.getInputStream(), ElectricalMaterialBomVO.class); + int total = rows != null ? rows.size() : 0; + List list = new ArrayList<>(); + if (rows != null) { + for (ElectricalMaterialBomVO bomVO : rows) { + BomDetails bomDetails = new BomDetails(); + bomDetails.setTotalWeight(bomVO.getProductionOrderNo()); + bomDetails.setFNumber(bomVO.getParentDrawingNo()); + bomDetails.setFName(bomVO.getParentPart()); + bomDetails.setPartNumber(bomVO.getDrawingNo()); + bomDetails.setName(bomVO.getDrawingName()); + bomDetails.setMaterial(bomVO.getModel()); + bomDetails.setWareHouse(bomVO.getBrand()); + bomDetails.setStats("外购"); + bomDetails.setQuantity(bomVO.getQuantity() == null ? null : bomVO.getQuantity().toString()); + bomDetails.setRemarks(bomVO.getUnit()); + bomDetails.setUpdateTime(new Date()); + bomDetails.setQuantity(String.valueOf(bomVO.getQuantity())); + bomDetails.setDenominator(1.0); + bomDetails.setBomType("1"); + list.add(bomDetails); + } + } + + List vos = BeanUtil.copyToList(list, BomDetailsVo.class); + List toInsert = saveBomDetails(vos); + boolean saved = false; + if (!toInsert.isEmpty()) { + saved = bomDetailsMapper.insertBatch(toInsert); + } + + resp.put("totalRows", total); + resp.put("parsedRows", list.size()); + resp.put("savedRows", saved); + resp.put("message", "导入完成"); + return R.ok(resp); + } catch (Exception e) { + return R.fail("导入失败: " + e.getMessage()); + } } // 保存到 BomDetails 表中 @@ -2232,7 +2262,7 @@ public class BomDetailsController extends BaseController { } return materialsToAdd; } - @Log(title = "推送工艺工序") + @Log(title = "查看BOM上传日志") @SaCheckPermission("system:route:viewGetBomUploadStatus") @PostMapping("/viewGetBomUploadStatus") public R viewGetBomUploadStatus(@RequestParam String rooteProdet) { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec100rController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec100rController.java new file mode 100644 index 0000000..2e8522a --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec100rController.java @@ -0,0 +1,106 @@ +package com.ruoyi.system.controller; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.system.domain.vo.DeviceSpec100rVo; +import com.ruoyi.system.domain.bo.DeviceSpec100rBo; +import com.ruoyi.system.service.IDeviceSpec100rService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 100R设备规格参数 + * + * @author ruoyi + * @date 2025-12-03 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/spec100r") +public class DeviceSpec100rController extends BaseController { + + private final IDeviceSpec100rService iDeviceSpec100rService; + + /** + * 查询100R设备规格参数列表 + */ + @SaCheckPermission("system:spec100r:list") + @GetMapping("/list") + public TableDataInfo list(DeviceSpec100rBo bo, PageQuery pageQuery) { + return iDeviceSpec100rService.queryPageList(bo, pageQuery); + } + + /** + * 导出100R设备规格参数列表 + */ + @SaCheckPermission("system:spec100r:export") + @Log(title = "100R设备规格参数", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(DeviceSpec100rBo bo, HttpServletResponse response) { + List list = iDeviceSpec100rService.queryList(bo); + ExcelUtil.exportExcel(list, "100R设备规格参数", DeviceSpec100rVo.class, response); + } + + /** + * 获取100R设备规格参数详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:spec100r:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iDeviceSpec100rService.queryById(id)); + } + + /** + * 新增100R设备规格参数 + */ + @SaCheckPermission("system:spec100r:add") + @Log(title = "100R设备规格参数", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DeviceSpec100rBo bo) { + return toAjax(iDeviceSpec100rService.insertByBo(bo)); + } + + /** + * 修改100R设备规格参数 + */ + @SaCheckPermission("system:spec100r:edit") + @Log(title = "100R设备规格参数", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody DeviceSpec100rBo bo) { + return toAjax(iDeviceSpec100rService.updateByBo(bo)); + } + + /** + * 删除100R设备规格参数 + * + * @param ids 主键串 + */ + @SaCheckPermission("system:spec100r:remove") + @Log(title = "100R设备规格参数", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iDeviceSpec100rService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec125rController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec125rController.java new file mode 100644 index 0000000..80a16d5 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec125rController.java @@ -0,0 +1,106 @@ +package com.ruoyi.system.controller; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.system.domain.vo.DeviceSpec125rVo; +import com.ruoyi.system.domain.bo.DeviceSpec125rBo; +import com.ruoyi.system.service.IDeviceSpec125rService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 125R设备规格参数 + * + * @author ruoyi + * @date 2025-12-06 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/spec125r") +public class DeviceSpec125rController extends BaseController { + + private final IDeviceSpec125rService iDeviceSpec125rService; + + /** + * 查询125R设备规格参数列表 + */ + @SaCheckPermission("system:spec125r:list") + @GetMapping("/list") + public TableDataInfo list(DeviceSpec125rBo bo, PageQuery pageQuery) { + return iDeviceSpec125rService.queryPageList(bo, pageQuery); + } + + /** + * 导出125R设备规格参数列表 + */ + @SaCheckPermission("system:spec125r:export") + @Log(title = "125R设备规格参数", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(DeviceSpec125rBo bo, HttpServletResponse response) { + List list = iDeviceSpec125rService.queryList(bo); + ExcelUtil.exportExcel(list, "125R设备规格参数", DeviceSpec125rVo.class, response); + } + + /** + * 获取125R设备规格参数详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:spec125r:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iDeviceSpec125rService.queryById(id)); + } + + /** + * 新增125R设备规格参数 + */ + @SaCheckPermission("system:spec125r:add") + @Log(title = "125R设备规格参数", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DeviceSpec125rBo bo) { + return toAjax(iDeviceSpec125rService.insertByBo(bo)); + } + + /** + * 修改125R设备规格参数 + */ + @SaCheckPermission("system:spec125r:edit") + @Log(title = "125R设备规格参数", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody DeviceSpec125rBo bo) { + return toAjax(iDeviceSpec125rService.updateByBo(bo)); + } + + /** + * 删除125R设备规格参数 + * + * @param ids 主键串 + */ + @SaCheckPermission("system:spec125r:remove") + @Log(title = "125R设备规格参数", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iDeviceSpec125rService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec150rController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec150rController.java new file mode 100644 index 0000000..461aca4 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec150rController.java @@ -0,0 +1,106 @@ +package com.ruoyi.system.controller; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.system.domain.vo.DeviceSpec150rVo; +import com.ruoyi.system.domain.bo.DeviceSpec150rBo; +import com.ruoyi.system.service.IDeviceSpec150rService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 150R设备规格参数 + * + * @author ruoyi + * @date 2025-12-06 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/spec150r") +public class DeviceSpec150rController extends BaseController { + + private final IDeviceSpec150rService iDeviceSpec150rService; + + /** + * 查询150R设备规格参数列表 + */ + @SaCheckPermission("system:spec150r:list") + @GetMapping("/list") + public TableDataInfo list(DeviceSpec150rBo bo, PageQuery pageQuery) { + return iDeviceSpec150rService.queryPageList(bo, pageQuery); + } + + /** + * 导出150R设备规格参数列表 + */ + @SaCheckPermission("system:spec150r:export") + @Log(title = "150R设备规格参数", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(DeviceSpec150rBo bo, HttpServletResponse response) { + List list = iDeviceSpec150rService.queryList(bo); + ExcelUtil.exportExcel(list, "150R设备规格参数", DeviceSpec150rVo.class, response); + } + + /** + * 获取150R设备规格参数详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:spec150r:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iDeviceSpec150rService.queryById(id)); + } + + /** + * 新增150R设备规格参数 + */ + @SaCheckPermission("system:spec150r:add") + @Log(title = "150R设备规格参数", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DeviceSpec150rBo bo) { + return toAjax(iDeviceSpec150rService.insertByBo(bo)); + } + + /** + * 修改150R设备规格参数 + */ + @SaCheckPermission("system:spec150r:edit") + @Log(title = "150R设备规格参数", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody DeviceSpec150rBo bo) { + return toAjax(iDeviceSpec150rService.updateByBo(bo)); + } + + /** + * 删除150R设备规格参数 + * + * @param ids 主键串 + */ + @SaCheckPermission("system:spec150r:remove") + @Log(title = "150R设备规格参数", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iDeviceSpec150rService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec30dController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec30dController.java new file mode 100644 index 0000000..4fe5886 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec30dController.java @@ -0,0 +1,106 @@ +package com.ruoyi.system.controller; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.system.domain.vo.DeviceSpec30dVo; +import com.ruoyi.system.domain.bo.DeviceSpec30dBo; +import com.ruoyi.system.service.IDeviceSpec30dService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 30D设备规格参数 + * + * @author ruoyi + * @date 2025-12-03 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/spec30d") +public class DeviceSpec30dController extends BaseController { + + private final IDeviceSpec30dService iDeviceSpec30dService; + + /** + * 查询device_spec_30D 列表 + */ + @SaCheckPermission("system:spec30d:list") + @GetMapping("/list") + public TableDataInfo list(DeviceSpec30dBo bo, PageQuery pageQuery) { + return iDeviceSpec30dService.queryPageList(bo, pageQuery); + } + + /** + * 导出device_spec_30D 列表 + */ + @SaCheckPermission("system:spec30d:export") + @Log(title = "device_spec_30D ", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(DeviceSpec30dBo bo, HttpServletResponse response) { + List list = iDeviceSpec30dService.queryList(bo); + ExcelUtil.exportExcel(list, "device_spec_30D ", DeviceSpec30dVo.class, response); + } + + /** + * 获取device_spec_30D 详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:spec30d:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iDeviceSpec30dService.queryById(id)); + } + + /** + * 新增device_spec_30D + */ + @SaCheckPermission("system:spec30d:add") + @Log(title = "device_spec_30D ", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DeviceSpec30dBo bo) { + return toAjax(iDeviceSpec30dService.insertByBo(bo)); + } + + /** + * 修改device_spec_30D + */ + @SaCheckPermission("system:spec30d:edit") + @Log(title = "device_spec_30D ", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody DeviceSpec30dBo bo) { + return toAjax(iDeviceSpec30dService.updateByBo(bo)); + } + + /** + * 删除device_spec_30D + * + * @param ids 主键串 + */ + @SaCheckPermission("system:spec30d:remove") + @Log(title = "device_spec_30D ", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iDeviceSpec30dService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec30sController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec30sController.java new file mode 100644 index 0000000..51d4914 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec30sController.java @@ -0,0 +1,106 @@ +package com.ruoyi.system.controller; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.system.domain.vo.DeviceSpec30sVo; +import com.ruoyi.system.domain.bo.DeviceSpec30sBo; +import com.ruoyi.system.service.IDeviceSpec30sService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 30S设备规格参数 + * + * @author ruoyi + * @date 2025-12-03 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/spec30s") +public class DeviceSpec30sController extends BaseController { + + private final IDeviceSpec30sService iDeviceSpec30sService; + + /** + * 查询30S设备规格参数列表 + */ + @SaCheckPermission("system:spec30s:list") + @GetMapping("/list") + public TableDataInfo list(DeviceSpec30sBo bo, PageQuery pageQuery) { + return iDeviceSpec30sService.queryPageList(bo, pageQuery); + } + + /** + * 导出30S设备规格参数列表 + */ + @SaCheckPermission("system:spec30s:export") + @Log(title = "30S设备规格参数", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(DeviceSpec30sBo bo, HttpServletResponse response) { + List list = iDeviceSpec30sService.queryList(bo); + ExcelUtil.exportExcel(list, "30S设备规格参数", DeviceSpec30sVo.class, response); + } + + /** + * 获取30S设备规格参数详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:spec30s:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iDeviceSpec30sService.queryById(id)); + } + + /** + * 新增30S设备规格参数 + */ + @SaCheckPermission("system:spec30s:add") + @Log(title = "30S设备规格参数", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DeviceSpec30sBo bo) { + return toAjax(iDeviceSpec30sService.insertByBo(bo)); + } + + /** + * 修改30S设备规格参数 + */ + @SaCheckPermission("system:spec30s:edit") + @Log(title = "30S设备规格参数", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody DeviceSpec30sBo bo) { + return toAjax(iDeviceSpec30sService.updateByBo(bo)); + } + + /** + * 删除30S设备规格参数 + * + * @param ids 主键串 + */ + @SaCheckPermission("system:spec30s:remove") + @Log(title = "30S设备规格参数", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iDeviceSpec30sService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec40rController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec40rController.java new file mode 100644 index 0000000..7d27a0d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec40rController.java @@ -0,0 +1,106 @@ +package com.ruoyi.system.controller; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.system.domain.vo.DeviceSpec40rVo; +import com.ruoyi.system.domain.bo.DeviceSpec40rBo; +import com.ruoyi.system.service.IDeviceSpec40rService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 40R设备规格参数 + * + * @author ruoyi + * @date 2025-12-03 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/spec40r") +public class DeviceSpec40rController extends BaseController { + + private final IDeviceSpec40rService iDeviceSpec40rService; + + /** + * 查询40R设备规格参数列表 + */ + @SaCheckPermission("system:spec40r:list") + @GetMapping("/list") + public TableDataInfo list(DeviceSpec40rBo bo, PageQuery pageQuery) { + return iDeviceSpec40rService.queryPageList(bo, pageQuery); + } + + /** + * 导出40R设备规格参数列表 + */ + @SaCheckPermission("system:spec40r:export") + @Log(title = "40R设备规格参数", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(DeviceSpec40rBo bo, HttpServletResponse response) { + List list = iDeviceSpec40rService.queryList(bo); + ExcelUtil.exportExcel(list, "40R设备规格参数", DeviceSpec40rVo.class, response); + } + + /** + * 获取40R设备规格参数详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:spec40r:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iDeviceSpec40rService.queryById(id)); + } + + /** + * 新增40R设备规格参数 + */ + @SaCheckPermission("system:spec40r:add") + @Log(title = "40R设备规格参数", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DeviceSpec40rBo bo) { + return toAjax(iDeviceSpec40rService.insertByBo(bo)); + } + + /** + * 修改40R设备规格参数 + */ + @SaCheckPermission("system:spec40r:edit") + @Log(title = "40R设备规格参数", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody DeviceSpec40rBo bo) { + return toAjax(iDeviceSpec40rService.updateByBo(bo)); + } + + /** + * 删除40R设备规格参数 + * + * @param ids 主键串 + */ + @SaCheckPermission("system:spec40r:remove") + @Log(title = "40R设备规格参数", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iDeviceSpec40rService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec40sController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec40sController.java new file mode 100644 index 0000000..57aa60a --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec40sController.java @@ -0,0 +1,106 @@ +package com.ruoyi.system.controller; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.system.domain.vo.DeviceSpec40sVo; +import com.ruoyi.system.domain.bo.DeviceSpec40sBo; +import com.ruoyi.system.service.IDeviceSpec40sService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 40S设备规格参数 + * + * @author ruoyi + * @date 2025-12-03 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/spec40s") +public class DeviceSpec40sController extends BaseController { + + private final IDeviceSpec40sService iDeviceSpec40sService; + + /** + * 查询40S设备规格参数列表 + */ + @SaCheckPermission("system:spec40s:list") + @GetMapping("/list") + public TableDataInfo list(DeviceSpec40sBo bo, PageQuery pageQuery) { + return iDeviceSpec40sService.queryPageList(bo, pageQuery); + } + + /** + * 导出40S设备规格参数列表 + */ + @SaCheckPermission("system:spec40s:export") + @Log(title = "40S设备规格参数", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(DeviceSpec40sBo bo, HttpServletResponse response) { + List list = iDeviceSpec40sService.queryList(bo); + ExcelUtil.exportExcel(list, "40S设备规格参数", DeviceSpec40sVo.class, response); + } + + /** + * 获取40S设备规格参数详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:spec40s:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iDeviceSpec40sService.queryById(id)); + } + + /** + * 新增40S设备规格参数 + */ + @SaCheckPermission("system:spec40s:add") + @Log(title = "40S设备规格参数", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DeviceSpec40sBo bo) { + return toAjax(iDeviceSpec40sService.insertByBo(bo)); + } + + /** + * 修改40S设备规格参数 + */ + @SaCheckPermission("system:spec40s:edit") + @Log(title = "40S设备规格参数", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody DeviceSpec40sBo bo) { + return toAjax(iDeviceSpec40sService.updateByBo(bo)); + } + + /** + * 删除40S设备规格参数 + * + * @param ids 主键串 + */ + @SaCheckPermission("system:spec40s:remove") + @Log(title = "40S设备规格参数", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iDeviceSpec40sService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec60rController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec60rController.java new file mode 100644 index 0000000..a464c05 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec60rController.java @@ -0,0 +1,106 @@ +package com.ruoyi.system.controller; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.system.domain.vo.DeviceSpec60rVo; +import com.ruoyi.system.domain.bo.DeviceSpec60rBo; +import com.ruoyi.system.service.IDeviceSpec60rService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 60R设备规格参数 + * + * @author ruoyi + * @date 2025-12-03 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/spec60r") +public class DeviceSpec60rController extends BaseController { + + private final IDeviceSpec60rService iDeviceSpec60rService; + + /** + * 查询60R设备规格参数列表 + */ + @SaCheckPermission("system:spec60r:list") + @GetMapping("/list") + public TableDataInfo list(DeviceSpec60rBo bo, PageQuery pageQuery) { + return iDeviceSpec60rService.queryPageList(bo, pageQuery); + } + + /** + * 导出60R设备规格参数列表 + */ + @SaCheckPermission("system:spec60r:export") + @Log(title = "60R设备规格参数", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(DeviceSpec60rBo bo, HttpServletResponse response) { + List list = iDeviceSpec60rService.queryList(bo); + ExcelUtil.exportExcel(list, "60R设备规格参数", DeviceSpec60rVo.class, response); + } + + /** + * 获取60R设备规格参数详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:spec60r:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iDeviceSpec60rService.queryById(id)); + } + + /** + * 新增60R设备规格参数 + */ + @SaCheckPermission("system:spec60r:add") + @Log(title = "60R设备规格参数", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DeviceSpec60rBo bo) { + return toAjax(iDeviceSpec60rService.insertByBo(bo)); + } + + /** + * 修改60R设备规格参数 + */ + @SaCheckPermission("system:spec60r:edit") + @Log(title = "60R设备规格参数", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody DeviceSpec60rBo bo) { + return toAjax(iDeviceSpec60rService.updateByBo(bo)); + } + + /** + * 删除60R设备规格参数 + * + * @param ids 主键串 + */ + @SaCheckPermission("system:spec60r:remove") + @Log(title = "60R设备规格参数", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iDeviceSpec60rService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec80rController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec80rController.java new file mode 100644 index 0000000..4a9123d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/DeviceSpec80rController.java @@ -0,0 +1,106 @@ +package com.ruoyi.system.controller; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.system.domain.vo.DeviceSpec80rVo; +import com.ruoyi.system.domain.bo.DeviceSpec80rBo; +import com.ruoyi.system.service.IDeviceSpec80rService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 80R设备规格参数 + * + * @author ruoyi + * @date 2025-12-03 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/spec80r") +public class DeviceSpec80rController extends BaseController { + + private final IDeviceSpec80rService iDeviceSpec80rService; + + /** + * 查询80R设备规格参数列表 + */ + @SaCheckPermission("system:spec80r:list") + @GetMapping("/list") + public TableDataInfo list(DeviceSpec80rBo bo, PageQuery pageQuery) { + return iDeviceSpec80rService.queryPageList(bo, pageQuery); + } + + /** + * 导出80R设备规格参数列表 + */ + @SaCheckPermission("system:spec80r:export") + @Log(title = "80R设备规格参数", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(DeviceSpec80rBo bo, HttpServletResponse response) { + List list = iDeviceSpec80rService.queryList(bo); + ExcelUtil.exportExcel(list, "80R设备规格参数", DeviceSpec80rVo.class, response); + } + + /** + * 获取80R设备规格参数详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:spec80r:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(iDeviceSpec80rService.queryById(id)); + } + + /** + * 新增80R设备规格参数 + */ + @SaCheckPermission("system:spec80r:add") + @Log(title = "80R设备规格参数", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DeviceSpec80rBo bo) { + return toAjax(iDeviceSpec80rService.insertByBo(bo)); + } + + /** + * 修改80R设备规格参数 + */ + @SaCheckPermission("system:spec80r:edit") + @Log(title = "80R设备规格参数", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody DeviceSpec80rBo bo) { + return toAjax(iDeviceSpec80rService.updateByBo(bo)); + } + + /** + * 删除80R设备规格参数 + * + * @param ids 主键串 + */ + @SaCheckPermission("system:spec80r:remove") + @Log(title = "80R设备规格参数", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iDeviceSpec80rService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/EleMaterialsController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/EleMaterialsController.java index 889746c..408d1a8 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/EleMaterialsController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/EleMaterialsController.java @@ -1,14 +1,17 @@ package com.ruoyi.system.controller; -import java.util.ArrayList; -import java.util.List; -import java.util.Arrays; +import java.io.File; +import java.math.BigDecimal; +import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.concurrent.Future; import java.util.concurrent.ExecutionException; +import java.util.stream.Collectors; +import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; import com.alibaba.fastjson.JSONObject; import com.kingdee.bos.webapi.entity.SuccessEntity; import com.ruoyi.common.core.domain.PageQuery; @@ -17,14 +20,17 @@ import com.ruoyi.common.excel.ExcelResult; import com.ruoyi.common.utils.JdUtils; import com.ruoyi.system.domain.EleMaterials; import com.ruoyi.system.domain.ImMaterial; +import com.ruoyi.system.domain.PartCost; import com.ruoyi.system.domain.dto.*; import com.ruoyi.system.domain.vo.ExcelVo; import com.ruoyi.system.mapper.ImMaterialMapper; +import com.ruoyi.system.mapper.PartCostMapper; import com.ruoyi.system.runner.JdUtil; import lombok.RequiredArgsConstructor; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; +import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.MediaType; @@ -58,6 +64,7 @@ public class EleMaterialsController extends BaseController { private final IEleMaterialsService iEleMaterialsService; private final ImMaterialMapper materialMapper; private static final Logger log = LoggerFactory.getLogger(EleMaterialsController.class); + private final PartCostMapper partCostMapper; /** * 查询电器物料管理列表 @@ -540,4 +547,35 @@ public class EleMaterialsController extends BaseController { return R.ok("更新成功"); } + + + @Log(title = "获取金蝶成本价", businessType = BusinessType.IMPORT) + @SaCheckPermission("system:materials:importDataTime") + @PostMapping(value = "/importMAMA", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public R importMAMA(@RequestParam("file") MultipartFile file) throws Exception { + String originalFilename = file.getOriginalFilename(); + log.info("读取文件名: " + originalFilename); + ExcelResult result = ExcelUtil.importExcelSheet1(file.getInputStream(), ChengBeDTO.class, true); + List list = result.getList(); + List costList = partCostMapper.selectList(); + Map costMap = costList.stream() + .collect(Collectors.toMap(PartCost::getMaterialCode, PartCost::getCostPrice, (a, b) -> a)); + List chengBeDTOS = new ArrayList<>(list.size()); + for (ChengBeDTO dto : list) { + BigDecimal price = costMap.get(dto.getDrawingNo()); + if (price != null) { + dto.setCostUnitPrice(price); + } + chengBeDTOS.add(dto); + } + String ts = DateUtil.format(new Date(), "yyyyMMddHHmmss"); + String fileName = "成本数据_" + ts + ".xlsx"; + String filePath = FileUtils.getTempDirectoryPath() + File.separator + fileName; + EasyExcel.write(filePath, ChengBeDTO.class) + .sheet("成本数据") + .doWrite(chengBeDTOS); + log.info("成本数据已写入本地Excel: {}", filePath); + return R.ok("更新成功"); + } + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/FigureSaveController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/FigureSaveController.java index 7606d62..20e9ded 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/FigureSaveController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/FigureSaveController.java @@ -87,10 +87,13 @@ public class FigureSaveController extends BaseController { @SaCheckPermission("system:save:edit") @Log(title = "外购件临时", businessType = BusinessType.UPDATE) @RepeatSubmit() - @PutMapping() - public R edit(@Validated(EditGroup.class) @RequestBody FigureSaveBo bo) { - return toAjax(iFigureSaveService.updateByBo(bo)); - } + @PutMapping() + public R edit(@RequestBody @Validated FigureSaveBo bo) { + if (bo.getId() == null) { + return toAjax(iFigureSaveService.insertByBo(bo)); + } + return toAjax(iFigureSaveService.updateByBo(bo)); + } /** * 删除外购件临时 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/KingdeeWorkCenterDataController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/KingdeeWorkCenterDataController.java index 8b08b54..8f78421 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/KingdeeWorkCenterDataController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/KingdeeWorkCenterDataController.java @@ -2,6 +2,7 @@ package com.ruoyi.system.controller; import java.io.File; import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.time.format.DateTimeFormatter; @@ -22,16 +23,13 @@ import com.ruoyi.common.utils.HttpRequestUtil; import com.ruoyi.common.utils.WxRobotUtil; import com.ruoyi.common.poi.ExcelTemplateProc; import com.ruoyi.common.poi.DynamicDataMapping; -import com.ruoyi.system.domain.ProcessRoute; import com.ruoyi.system.domain.SafetyStock; import com.ruoyi.system.domain.WlStockData; import com.ruoyi.system.domain.dto.*; import com.ruoyi.system.domain.vo.WlStockDataVo; import com.ruoyi.system.mapper.WlStockDataMapper; import com.ruoyi.system.runner.JdUtil; -import com.ruoyi.system.service.IProcessRouteService; -import com.ruoyi.system.service.ISafetyStockService; -import com.ruoyi.system.service.IWeComService; +import com.ruoyi.system.service.*; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.RequiredArgsConstructor; @@ -59,8 +57,6 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.system.domain.vo.KingdeeWorkCenterDataVo; import com.ruoyi.system.domain.bo.KingdeeWorkCenterDataBo; -import com.ruoyi.system.service.IKingdeeWorkCenterDataService; -import java.util.stream.Collectors; import com.ruoyi.common.core.page.TableDataInfo; import org.springframework.util.StringUtils; @@ -85,11 +81,20 @@ public class KingdeeWorkCenterDataController extends BaseController { private final WlStockDataMapper baseMapper; private final ISafetyStockService iSafetyStockService; private final IWeComService iWeComService; + private final MssqlQueryService mssqlQueryService; @Autowired IProcessRouteService iProcessRouteService; private static final String QUALITY_KANBAN_URL = "http://192.168.5.8/K3Cloud/DataBoard/QualityKanBan/index.html#/"; + /** + * 获取金蝶生产看板数据 (SQL Server直连) + */ + @GetMapping("/produceData") + public R> produceData(@RequestParam(required = false) String workCenter) { + return R.ok(mssqlQueryService.getKingdeeProduceData(workCenter)); + } + /** * 查询金蝶工段数据列表 */ @@ -158,7 +163,7 @@ public class KingdeeWorkCenterDataController extends BaseController { /** * 获取金蝶相关工段数据 */ - @SaCheckPermission("system:workCenterData:remove") + @SaCheckPermission("system:workCenterData:getKingdeeWorkCenterData") @Log(title = "金蝶工段数据提前2天", businessType = BusinessType.DELETE) @PostMapping("/getKingdeeWorkCenterData") public R> getKingdeeWorkCenterData(@RequestParam(value = "workCenter") String workCenter) { @@ -208,9 +213,9 @@ public class KingdeeWorkCenterDataController extends BaseController { data.setMoOrderNo(item.getString("MoOrderNo")); data.setMaterialNumber(item.getString("FMaterialNumber")); data.setMaterialName(item.getString("FMaterialName")); - data.setOperQty(item.getLong("FOperQty")); - data.setTransInQty(item.getLong("FTransInQty")); - data.setTransOutQty(item.getLong("FTransOutQty")); + data.setOperQty(item.getBigDecimal("FOperQty")); + data.setTransInQty(item.getBigDecimal("FTransInQty")); + data.setTransOutQty(item.getBigDecimal("FTransOutQty")); data.setMaterialStatus(item.getString("FMaterialStatus")); data.setOperNumber(item.getString("FOperNumber")); data.setProcessName(item.getString("FProcessName")); @@ -240,7 +245,7 @@ public class KingdeeWorkCenterDataController extends BaseController { } @Log(title = "获取金蝶工段数据模板2") - @SaCheckPermission("system:route:sendMsg") + @SaCheckPermission("system:route:getMassage") @PostMapping("/sendMsg") public R getMassage(@RequestParam String workCenter) { String robotId = "4d2f037d-0cee-493a-a4ff-1758f67b8069"; @@ -305,8 +310,7 @@ public class KingdeeWorkCenterDataController extends BaseController { parameter.addProperty("FWorkCenterName", "委外中心"); Object[] parameters = new Object[]{parameter.toString()}; String execute = client.execute( - "Ljint.Kingdee.YiTe.KanBan.WebApi.ProduceWebApi.ExecuteService,Ljint.Kingdee.YiTe.KanBan.WebApi", - parameters); + "Ljint.Kingdee.YiTe.KanBan.WebApi.ProduceWebApi.ExecuteService,Ljint.Kingdee.YiTe.KanBan.WebApi", parameters); // 解析响应 JSONObject response = JSONObject.parseObject(execute); @@ -406,10 +410,18 @@ public class KingdeeWorkCenterDataController extends BaseController { DateUtil.format(new Date(), "yyyyMMddHHmmss")); String filePath = FileUtils.getTempDirectoryPath() + File.separator + fileName; - // 使用EasyExcel写入数据 - EasyExcel.write(filePath, KingdeeWorkCenterDataVo.class) - .sheet("工段数据") - .doWrite(BeanUtil.copyToList(dataList, KingdeeWorkCenterDataVo.class)); + // 使用模板+动态数据映射写入数据 + String templatePath = "jpg/工段数据模板.xlsx"; + Map staticDataMap = new HashMap<>(); + staticDataMap.put("workCenter", workCenter); + staticDataMap.put("generatedAt", currentTime); + + List dynamicDataMappingList = new ArrayList<>(); + List voList = BeanUtil.copyToList(dataList, KingdeeWorkCenterDataVo.class); + List> workCenterData = convertWorkCenterToMapList(voList, workCenter); + dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("WorkCenterData", workCenterData)); + + ExcelTemplateProc.doExportExcelByTemplateProc(templatePath, filePath, staticDataMap, dynamicDataMappingList); // 发送Excel文件 File excelFile = new File(filePath); @@ -444,12 +456,12 @@ public class KingdeeWorkCenterDataController extends BaseController { @PostMapping("/getKingdeeDelayData") public R> getKingdeeDelayData(@RequestParam(value = "workCenter") String workCenter) { try { - K3CloudApi client = new K3CloudApi(); + /* K3CloudApi client = new K3CloudApi(); JsonObject parameter = new JsonObject(); List kingdeeWorkCenterDataVos = new ArrayList<>(); parameter.addProperty("FWorkCenterName", workCenter); Object[] parameters = new Object[]{parameter.toString()}; - String execute = client.execute("Ljint.Kingdee.YiTe.KanBan.WebApi.ProduceWebApi.ExecuteService,Ljint.Kingdee.YiTe.KanBan.WebApi121303", parameters); + String execute = client.execute("Ljint.Kingdee.YiTe.KanBan.WebApi.ProduceWebApi.ExecuteService,Ljint.Kingdee.YiTe.KanBan.WebApi", parameters); log.info("金蝶接口:" + workCenter + "===> 返回数据: {}", execute); // 解析响应 @@ -457,24 +469,22 @@ public class KingdeeWorkCenterDataController extends BaseController { if (!"true".equals(response.getString("IsSuccess"))) { String errorMsg = response.getString("Message"); return R.fail("获取工段数据失败:" + errorMsg); - } + }*/ // 获取明天的日期字符串 (格式: yyyy-MM-dd) String yesterday = DateUtil.format(DateUtil.yesterday(), "yyyy-MM-dd"); - // 获取数据数组 + /* // 获取数据数组 JSONArray dataArray = response.getJSONArray("data"); if (dataArray == null || dataArray.isEmpty()) { return R.ok("无数据"); } - - for (int i = 0; i < dataArray.size(); i++) { - JSONArray queryList = dataArray.getJSONObject(i).getJSONArray("QueryList"); - for (int j = 0; j < queryList.size(); j++) { - JSONObject item = queryList.getJSONObject(j); - +*/ + List kingdeeProduceData = mssqlQueryService.getKingdeeProduceData(workCenter); + List kingdeeWorkCenterDataVos = new ArrayList<>(); + for (KingdeeWorkCenterDataBo kingnum : kingdeeProduceData) { // 获取计划结束时间并转换为日期格式进行比较 - String planFinishTime = item.getString("FOperPlanFinishTime2"); - String delayDaysStr = item.getString("FDelayDays"); + String planFinishTime = kingnum.getOperPlanFinishTime2(); + String delayDaysStr = kingnum.getDelayDays(); Long delayDays = null; if (delayDaysStr != null && !delayDaysStr.isEmpty()) { try { @@ -485,34 +495,20 @@ public class KingdeeWorkCenterDataController extends BaseController { } if (delayDays != null && delayDays > 0) { // 只处理延期天数大于0的工单 - long transOutQty = item.getLong("FTransOutQty"); + BigDecimal transOutQty = kingnum.getTransOutQty(); // 转入 - long transInQty = item.getLong("FTransInQty"); + BigDecimal transInQty = kingnum.getTransInQty(); //转出小于转入数量 - if (transOutQty < transInQty) { - // 转换为实体对象 - KingdeeWorkCenterDataBo data = new KingdeeWorkCenterDataBo(); - data.setWorkCenter(workCenter); - data.setMoBillNo(item.getString("MoBillNo")); - data.setMoOrderNo(item.getString("MoOrderNo")); - data.setMaterialNumber(item.getString("FMaterialNumber")); - data.setMaterialName(item.getString("FMaterialName")); - data.setOperQty(item.getLong("FOperQty")); - data.setTransInQty(transInQty); - data.setTransOutQty(transOutQty); - data.setOperNumber(item.getString("FOperNumber")); - data.setProcessName(item.getString("FProcessName")); - data.setOperPlanStartTime(item.getString("FOperPlanStartTime2")); - data.setOperPlanFinishTime(planFinishTime); - data.setDelayDays(item.getString("FDelayDays")); - kingdeeWorkCenterDataVos.add(data); - Boolean b = iKingdeeWorkCenterDataService.insertByBo(data); + if (transOutQty.compareTo( transInQty)<0) { + + kingdeeWorkCenterDataVos.add(kingnum); + Boolean b = iKingdeeWorkCenterDataService.insertByBo(kingnum); if (!b) { return R.fail("保存工段数据失败"); } } } - } + } if (kingdeeWorkCenterDataVos.isEmpty()) { @@ -546,7 +542,6 @@ public class KingdeeWorkCenterDataController extends BaseController { for (String workCenter : workCenters) { try { R> result = getKingdeeDelayData(workCenter); - List data = result.getData(); if (R.isError(result) || CollUtil.isEmpty(result.getData())) { markdownMsg.append("- ").append(workCenter).append(":无数据\n"); continue; @@ -561,10 +556,18 @@ public class KingdeeWorkCenterDataController extends BaseController { DateUtil.format(new Date(), "yyyyMMddHHmmss")); String filePath = FileUtils.getTempDirectoryPath() + File.separator + fileName; - // 使用EasyExcel写入数据 - EasyExcel.write(filePath, KingdeeWorkCenterDataVo.class) - .sheet("工段数据") - .doWrite(BeanUtil.copyToList(dataList, KingdeeWorkCenterDataVo.class)); + // 使用模板+动态数据映射写入延期数据 + String templatePath = "jpg/延期工段数据模板.xlsx"; + Map staticDataMap = new HashMap<>(); + staticDataMap.put("workCenter", workCenter); + staticDataMap.put("generatedAt", currentTime); + + List dynamicDataMappingList = new ArrayList<>(); + List voList = BeanUtil.copyToList(dataList, KingdeeWorkCenterDataVo.class); + List> workCenterData = convertWorkCenterToMapList(voList, workCenter); + dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("WorkCenterData", workCenterData)); + + ExcelTemplateProc.doExportExcelByTemplateProc(templatePath, filePath, staticDataMap, dynamicDataMappingList); // 发送Excel文件 File excelFile = new File(filePath); @@ -648,10 +651,17 @@ public class KingdeeWorkCenterDataController extends BaseController { String fileName = String.format("%s安全预警数据_%s.xlsx", "企标", DateUtil.format(new Date(), "yyyyMMddHHmmss")); String filePath = FileUtils.getTempDirectoryPath() + File.separator + fileName; - // 使用EasyExcel写入数据 - EasyExcel.write(filePath, WlStockDataVo.class) - .sheet("工段数据") - .doWrite(BeanUtil.copyToList(safetyStocks, WlStockDataVo.class)); + // 使用模板+动态数据映射写入安全库存数据 + String templatePath = "jpg/安全库存数据模板.xlsx"; + Map staticDataMap = new HashMap<>(); + staticDataMap.put("generatedAt", DateUtil.format(new Date(), "yyyy年MM月dd日 HH:mm:ss")); + + List dynamicDataMappingList = new ArrayList<>(); + List voList = BeanUtil.copyToList(safetyStocks, WlStockDataVo.class); + List> safetyData = convertSafetyStockToMapList(voList); + dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("SafetyStockData", safetyData)); + + ExcelTemplateProc.doExportExcelByTemplateProc(templatePath, filePath, staticDataMap, dynamicDataMappingList); // 发送Excel文件 File excelFile = new File(filePath); @@ -673,6 +683,57 @@ public class KingdeeWorkCenterDataController extends BaseController { } } + private List> convertWorkCenterToMapList(List data, String workCenter) { + List> list = new ArrayList<>(); + for (KingdeeWorkCenterDataVo vo : data) { + Map map = new HashMap<>(); + map.put("workCenter", workCenter); + map.put("id", vo.getId()); + map.put("moBillNo", vo.getMoBillNo()); + map.put("moOrderNo", vo.getMoOrderNo()); + map.put("materialNumber", vo.getMaterialNumber()); + map.put("materialName", vo.getMaterialName()); + map.put("operQty", vo.getOperQty()); + map.put("transInQty", vo.getTransInQty()); + map.put("transOutQty", vo.getTransOutQty()); + map.put("materialStatus", vo.getMaterialStatus()); + map.put("operNumber", vo.getOperNumber()); + map.put("processName", vo.getProcessName()); + map.put("operPlanStartTime", vo.getOperPlanStartTime2()); + map.put("operPlanFinishTime", vo.getOperPlanFinishTime2()); + map.put("FReportQty", vo.getFReportQty()); + map.put("FScrapQty", vo.getFScrapQty()); + map.put("delayDays", vo.getDelayDays()); + list.add(map); + } + return list; + } + + private List> convertSafetyStockToMapList(List data) { + List> list = new ArrayList<>(); + for (WlStockDataVo vo : data) { + Map map = new HashMap<>(); + map.put("id", vo.getId()); + map.put("materialCode", vo.getMaterialCode()); + map.put("materialName", vo.getMaterialName()); + map.put("documentType", vo.getDocumentType()); + map.put("requiredStock", vo.getRequiredStock()); + map.put("currentStock", vo.getCurrentStock()); + map.put("availableStock", vo.getAvailableStock()); + map.put("secAvbqty", vo.getSecAvbqty()); + map.put("productionQty", vo.getProductionQty()); + map.put("purchaseQty", vo.getPurchaseQty()); + map.put("secQty", vo.getSecQty()); + map.put("maxsafetyStock", vo.getMaxsafetyStock()); + map.put("minsafetyStock", vo.getMinsafetyStock()); + map.put("safeStatus", vo.getSafeStatus()); + map.put("wlMaterial", vo.getWlMaterial()); + map.put("triggerTime", vo.getTriggerTime()); + list.add(map); + } + return list; + } + private List processMaterialGroups(List originalStocks) { if (CollUtil.isEmpty(originalStocks)) { return new ArrayList<>(); @@ -875,8 +936,7 @@ public class KingdeeWorkCenterDataController extends BaseController { msg.append("- 采购申请单:").append(purchaseRequestList.size()).append("条\n"); // 生成Excel文件使用采购模板 - String fileName = String.format("采购订单和申请数据_%s.xlsx", - DateUtil.format(new Date(), "yyyyMMddHHmmss")); + String fileName = String.format("采购订单和申请数据_%s.xlsx",DateUtil.format(new Date(), "yyyyMMddHHmmss")); String filePath = FileUtils.getTempDirectoryPath() + File.separator + fileName; // 准备模板数据 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/MssqlQueryController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/MssqlQueryController.java new file mode 100644 index 0000000..4b2815f --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/MssqlQueryController.java @@ -0,0 +1,37 @@ +package com.ruoyi.system.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.system.service.MssqlQueryService; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/system/mssql") +public class MssqlQueryController { + + private final MssqlQueryService mssqlQueryService; + + public MssqlQueryController(MssqlQueryService mssqlQueryService) { + this.mssqlQueryService = mssqlQueryService; + } + + @SaCheckPermission("system:mssql:query") + @PostMapping("/query") + public R>> query(@RequestBody String sql) { + String s = sql == null ? "" : sql.trim(); + String up = s.toUpperCase(); + if (!up.startsWith("SELECT") || up.contains(";") || up.contains("UPDATE") || up.contains("DELETE") || up.contains("INSERT") || up.contains("DROP")) { + return R.fail("仅支持只读的 SELECT 查询,且禁止分号和写操作关键字"); + } + try { + List> rows = mssqlQueryService.queryForList(s); + return R.ok(rows); + } catch (Exception e) { + return R.fail("查询失败: " + e.getMessage()); + } + } +} + diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/PlanOrderController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/PlanOrderController.java index 6adc488..18f63aa 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/PlanOrderController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/PlanOrderController.java @@ -1,3 +1,6 @@ + + + package com.ruoyi.system.controller; import java.util.List; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/ProcessOrderProController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/ProcessOrderProController.java index e8ad875..8c3f83f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/ProcessOrderProController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/ProcessOrderProController.java @@ -5,10 +5,8 @@ import java.math.BigDecimal; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.*; - -import cn.hutool.json.JSONUtil; import com.alibaba.excel.EasyExcel; -import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fasterxml.jackson.core.JsonProcessingException; import com.ruoyi.common.excel.DefaultExcelListener; import com.ruoyi.common.exception.ServiceException; @@ -18,26 +16,23 @@ import com.ruoyi.common.utils.file.SmbUtil; import com.ruoyi.common.poi.ExcelTemplateProc; import com.ruoyi.common.poi.DynamicDataMapping; import com.ruoyi.system.domain.*; -import com.ruoyi.system.domain.bo.FigureSaveBo; import com.ruoyi.system.domain.dto.MaterialUseDTO; import com.ruoyi.system.domain.dto.ProcessRouteDTO; import com.ruoyi.system.domain.dto.ProcessRouteExcelDTO; -import com.ruoyi.system.domain.dto.ProcessRoutePushResultDTO; +import com.ruoyi.system.domain.dto.excuteDrawing.RigidChainModelDTO; import com.ruoyi.system.domain.vo.*; import com.ruoyi.system.domain.vo.BomDataVO; import com.ruoyi.system.mapper.ProcessOrderProMapper; +import com.ruoyi.system.mapper.SafetyStockMapper; import com.ruoyi.system.runner.JdUtil; import com.ruoyi.system.service.*; -import com.ruoyi.system.service.impl.ProductionOrderServiceImpl; import lombok.RequiredArgsConstructor; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; - import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.*; - import cn.dev33.satoken.annotation.SaCheckPermission; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -56,10 +51,10 @@ import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.system.domain.bo.ProcessOrderProBo; import com.ruoyi.common.core.page.TableDataInfo; import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; /** - * 项目令号 - * + * 生产项目 * @author tzy * @date 2024-10-22 */ @@ -74,7 +69,9 @@ public class ProcessOrderProController extends BaseController { private final IMrpResultCheckService iMrpResultCheckService; private final ProcessOrderProMapper processOrderProMapper; private final IImMaterialService imMaterialService; - private final ISafetyStockService iSafetyStockService; + private final ISafetyStockService safetyStockService; + private final IProcessRouteService processRouteService; + private final SafetyStockMapper stockMapper; private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy年MM月dd日"); /** @@ -86,7 +83,7 @@ public class ProcessOrderProController extends BaseController { return iProcessOrderProService.queryPageList(bo, pageQuery); } - @SaCheckPermission("system:orderPro:list") + @SaCheckPermission("system:orderPro:processlist") @GetMapping("/processlist") public List processList(ProcessOrderProBo bo) { @@ -196,16 +193,16 @@ public class ProcessOrderProController extends BaseController { iProcessOrderProService.batchUpdateProjectTimeRanges(); } - @SaCheckPermission("system:plan:add") + @SaCheckPermission("system:orderPro:addProduct") @Log(title = "排产计划", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping("/addProduct") - public R addProduct(@Validated(AddGroup.class) @RequestBody FigureSaveBo bo, @RequestBody ProcessOrderProBo orderPro) { - iProcessOrderProService.addProduct(bo, orderPro); + public R addProduct(@Validated(AddGroup.class) @RequestBody RigidChainModelDTO orderPro) { + iProcessOrderProService.addProduct(orderPro); return R.ok(); } - @SaCheckPermission("system:plan:add") + @SaCheckPermission("system:orderPro:executDrawing") @Log(title = "执行出图", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping("/executDrawing") @@ -214,36 +211,46 @@ public class ProcessOrderProController extends BaseController { return R.ok(s); } + @GetMapping("/executDrawing/progress/{id}") + public SseEmitter executDrawingProgress(@PathVariable Long id) { + return iProcessOrderProService.startDrawingSse(id); + } + /** * 上传dwg图纸 * - * @param id * @param filePath * @return */ + @SaCheckPermission("system:orderPro:uploadDwg") + @Log(title = "上传dwg图纸", businessType = BusinessType.INSERT) @PostMapping("/uploadDwg") @ResponseBody - public R uploadContractPDF(@RequestParam("id") Integer id, @RequestParam("file") MultipartFile filePath) { + public R uploadContractPDF(@RequestParam("ids") List ids, @RequestParam("file") MultipartFile filePath) { String originalFilename = filePath.getOriginalFilename(); if (StringUtils.isEmpty(originalFilename)) { return R.fail("获取文件名称错误!!"); } - //校验文件后缀 jpg jpeg pdf 格式的文件不允许上传 - String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1); - if (!"dwg".equals(suffix)) { + String suffix = originalFilename.substring(originalFilename.lastIndexOf('.') + 1); + if (!"dwg".equalsIgnoreCase(suffix)) { return R.fail("禁止非法文件上传!!"); } - - String reslut = iProcessOrderProService.uploadContractPDF(id, originalFilename, filePath); - - return R.ok(reslut); + List results = new ArrayList<>(); + for (Long id : ids) { + if (id == null) { + results.add("ID为空,已跳过"); + continue; + } + String res = iProcessOrderProService.uploadContractPDF(id.intValue(), originalFilename, filePath); + results.add("ID=" + id + ":" + res); + } + return R.ok(StringUtils.join(results, ",")); } /** * 下载PDF并生成zip包 */ - - @SaCheckPermission("system:processOrderPro:uploadPDF") + @SaCheckPermission("system:orderPro:uploadPDF") @Log(title = "下载PDF", businessType = BusinessType.UPDATE) @CrossOrigin(origins = "*", allowedHeaders = "*", exposedHeaders = {"Content-Disposition", "Content-Length"}) @GetMapping("/uploadPDF") @@ -303,7 +310,7 @@ public class ProcessOrderProController extends BaseController { /** * 下载ZIP包 */ - @SaCheckPermission("system:processOrderPro:downloadZip") + @SaCheckPermission("system:orderPro:downloadZip") @Log(title = "下载ZIP包", businessType = BusinessType.OTHER) @GetMapping("/downloadZip/{id}") public void downloadZip(@PathVariable Long id, HttpServletResponse response) { @@ -364,7 +371,7 @@ public class ProcessOrderProController extends BaseController { return iMrpResultCheckService.getMRPResults(id); } - @SaCheckPermission("system:orderPro:geMRPResults") + @SaCheckPermission("system:orderPro:getRouteLog") @Log(title = "获取工艺上传结果", businessType = BusinessType.OTHER) @PostMapping("/getRouteLog/{id}") public R getRouteLog(@PathVariable Long id) throws JsonProcessingException { @@ -372,7 +379,7 @@ public class ProcessOrderProController extends BaseController { } - @SaCheckPermission("system:route:exportRoute") + @SaCheckPermission("system:orderPro:exportRoute") @Log(title = "下载工艺生产表", businessType = BusinessType.EXPORT) @PostMapping("/exportRoute") public void exportRoute(@RequestParam("id") Long id, HttpServletResponse response) { @@ -452,7 +459,7 @@ public class ProcessOrderProController extends BaseController { || materialCode.startsWith("009001") || materialCode.startsWith("009081") || (remark != null && remark.contains("外购"))) { // 过滤安全库存:如果属于安全库存,则进入工艺数据列表 - Boolean isSafeStock = iSafetyStockService.isSafeCode(materialCode.trim()); + Boolean isSafeStock = safetyStockService.isSafeCode(materialCode.trim()); if (isSafeStock) { // 属于安全库存,添加到工艺数据列表 processDataList.add(item); @@ -1139,9 +1146,9 @@ public class ProcessOrderProController extends BaseController { } - @SaCheckPermission("system:route:exportRoute") + @SaCheckPermission("system:orderPro:exportRoute2") @Log(title = "下载工艺生产表2", businessType = BusinessType.EXPORT) - @PostMapping("/exportRoute2") + @GetMapping ("/exportRoute2") public void exportRoute2(@RequestParam("id") Long id, HttpServletResponse response) { try { ProcessOrderPro orderPro = processOrderProMapper.selectById(id); @@ -1164,7 +1171,26 @@ public class ProcessOrderProController extends BaseController { List routes = new ArrayList<>(); List> kingdeeBomRows = new ArrayList<>(); for (ProcessRoute base : routeList) { + + String materialCode = base.getMaterialCode(); + //如果项目零号是CP 跳过安全库存物料 + LambdaQueryWrapper wr = new LambdaQueryWrapper<>(); + wr.eq(SafetyStock::getMaterialCode, materialCode); + SafetyStock safetyStock = stockMapper.selectOne(wr); + if (safetyStock != null && base.getRouteDescription().startsWith("CP")) { + ProcessRoute item = new ProcessRoute(); + item.setRouteDescription(base.getRouteDescription()); + item.setMaterialCode(base.getMaterialCode()); + item.setMaterialName(base.getMaterialName()); + item.setMaterial(base.getMaterial()); + item.setDiscWeight(base.getDiscWeight()); + item.setUnitQuantity(base.getUnitQuantity()); + item.setBatchQuantity(base.getBatchQuantity()); + routes.add(item); + continue; + } + if (StringUtils.isBlank(materialCode)) { ProcessRoute item = new ProcessRoute(); item.setRouteDescription(base.getRouteDescription()); @@ -1296,9 +1322,10 @@ public class ProcessOrderProController extends BaseController { // 电气外包分类条件:物料编码开头空格/特定前缀 或 备注包含"外购" if (materialCode.startsWith(" ") || materialCode.startsWith("009301") || materialCode.startsWith("009999") || materialCode.startsWith("017003") || materialCode.startsWith("017002") - || materialCode.startsWith("009001") || materialCode.startsWith("009081") || (remark != null && remark.contains("外购"))) { + || materialCode.startsWith("009001") || materialCode.startsWith("009081") + || (remark != null && remark.contains("外购"))) { // 过滤安全库存:如果属于安全库存,则进入工艺数据列表 - Boolean isSafeStock = iSafetyStockService.isSafeCode(materialCode.trim()); + Boolean isSafeStock = safetyStockService.isSafeCode(materialCode.trim()); if (isSafeStock) { // 属于安全库存,添加到工艺数据列表 processDataList.add(item); @@ -1638,5 +1665,380 @@ public class ProcessOrderProController extends BaseController { return mapList; } + @SaCheckPermission("system:orderPro:exportRoute3") + @Log(title = "下载工艺生产表3", businessType = BusinessType.EXPORT) + @GetMapping ("/exportRoute3") + public void exportRoute3(@RequestParam("id") Long id, HttpServletResponse response) { + try { + ProcessOrderPro orderPro = processOrderProMapper.selectById(id); + // 下载Excel文件 + SmbUtil.downloadExcelFiles(orderPro.getProductionOrderNo()); + // 构建文件路径 + String excelName = "D:\\file\\" + orderPro.getProductionOrderNo() + "汇总表.xlsx"; + String rawDataFile = "D:\\file\\RawDataTable.xlsx"; + File file = new File(excelName); + if (!file.exists()) { + throw new ServiceException("项目 " + orderPro.getProductionOrderNo() + " 未出图"); + } + // 1. 读取第一个sheet的数据list - 使用POI直接读取以保留空格 + List allDataList = readExcelWithPOI(excelName,orderPro.getProductionOrderNo()); + List routeList = readExcelPOIRoute(excelName,orderPro.getProductionOrderNo()); + List routes = new ArrayList<>(); + List> kingdeeBomRows = new ArrayList<>(); + for (ProcessRoute base : routeList) { + String processDescription = base.getRouteDescription(); + String materialCode = base.getMaterialCode(); + String materialName = base.getMaterialName(); + //如果项目零号是CP 跳过安全库存物料 + LambdaQueryWrapper wr = new LambdaQueryWrapper<>(); + wr.eq(SafetyStock::getMaterialCode, materialCode); + SafetyStock safetyStock = stockMapper.selectOne(wr); + if (safetyStock != null && base.getRouteDescription().startsWith("CP")) { + ProcessRoute item = new ProcessRoute(); + item.setRouteDescription(base.getRouteDescription()); + item.setMaterialCode(base.getMaterialCode()); + item.setMaterialName(base.getMaterialName()); + item.setMaterial(base.getMaterial()); + item.setDiscWeight(base.getDiscWeight()); + item.setUnitQuantity(base.getUnitQuantity()); + item.setBatchQuantity(base.getBatchQuantity()); + routes.add(item); + continue; + } + + if (StringUtils.isBlank(materialCode)) { + ProcessRoute item = new ProcessRoute(); + item.setRouteDescription(base.getRouteDescription()); + item.setMaterialCode(base.getMaterialCode()); + item.setMaterialName(base.getMaterialName()); + item.setMaterial(base.getMaterial()); + item.setDiscWeight(base.getDiscWeight()); + item.setUnitQuantity(base.getUnitQuantity()); + item.setBatchQuantity(base.getBatchQuantity()); + routes.add(item); + continue; + } + + //List routeGuDing = JdUtil.getRouteGuDing(materialCode);processRouteService + List bomItems = processRouteService.getProcessMaterialList(materialCode, materialName, processDescription); + List routeGuDing = processRouteService.getProcessRoutesByOrder(processDescription, materialCode); + if (routeGuDing != null && !routeGuDing.isEmpty()) { + routeGuDing.stream().forEach(r -> { + ProcessRoute item = new ProcessRoute(); + item.setRouteDescription(base.getRouteDescription()); + item.setMaterialCode(base.getMaterialCode()); + item.setMaterialName(base.getMaterialName()); + item.setMaterial(base.getMaterial()); + item.setDiscWeight(base.getDiscWeight()); + item.setUnitQuantity(base.getUnitQuantity()); + item.setBatchQuantity(base.getBatchQuantity()); + // 不写入BOM字段,保持纯工艺数据行 + item.setProcessNo(r.getProcessNo()); + item.setWorkCenter(r.getWorkCenter()); + item.setProcessName(r.getProcessName()); + item.setProcessDescription(r.getProcessDescription()); + item.setProcessControl(r.getProcessControl()); + item.setActivityDuration(r.getActivityDuration()); + item.setActivityUnit(r.getActivityUnit()); + routes.add(item); + }); + } else { + ProcessRoute item = new ProcessRoute(); + item.setRouteDescription(base.getRouteDescription()); + item.setMaterialCode(base.getMaterialCode()); + item.setMaterialName(base.getMaterialName()); + item.setMaterial(base.getMaterial()); + item.setDiscWeight(base.getDiscWeight()); + item.setUnitQuantity(base.getUnitQuantity()); + item.setBatchQuantity(base.getBatchQuantity()); + // 不写入BOM字段,保持纯工艺数据行 + routes.add(item); + } + if (bomItems != null && !bomItems.isEmpty()) { + if ("总装部件".equals(Objects.toString(base.getMaterial(), "").trim())) { + + } else { + for (MaterialBom b : bomItems) { + Map bomMap = new HashMap<>(); + bomMap.put("routeDescription", base.getRouteDescription()); + bomMap.put("materialCode", base.getMaterialCode()); + bomMap.put("materialName", base.getMaterialName()); + bomMap.put("material", base.getMaterial()); + bomMap.put("discWeight", base.getDiscWeight()); + bomMap.put("rawMaterialCode", b.getMaterialCode()); + bomMap.put("rawMaterialName", b.getMaterialName()); + bomMap.put("bomMaterial", b.getMaterialType()); + bomMap.put("bomDanZhong", null); + if ("根".equals(b.getUnit())) { + if (b.getQuantity() != null && b.getQuantity().contains("/")) { + String[] arr = b.getQuantity().split("/"); + bomMap.put("discUsage", Double.parseDouble(arr[0]) / Double.parseDouble(arr[1])); + } else { + bomMap.put("discUsage", null); + } + } else if ("mm".equals(b.getUnit())) { + b.setUnit("m"); + bomMap.put("discUsage", b.getQuantity()); + } else { + bomMap.put("discUsage", b.getQuantity()); + } + + + bomMap.put("bomUnit", b.getUnit()); + kingdeeBomRows.add(bomMap); + } + } + } + } + // 用生成的 routes 替换原始 routeList,保持原序展开后的结构用于后续导出 + routeList = routes; + // 2. 读取原始表数据 + List rawDataList = readRawDataTable(rawDataFile); + + // 3. 数据分类处理 + List vmiList = new ArrayList<>(); // 009开头 + List elecOutList = new ArrayList<>(); // 两个空格和017开头 + List supplierList = new ArrayList<>(); // 甲供件 + List evoProductsList = new ArrayList<>(); // 伊特 + List processDataList = new ArrayList<>(); // 工艺数据(剩余数据) + + // 分类逻辑 + for (ProductionOrderVo item : allDataList) { + String materialCode = item.getDrawingNo(); + String remark = item.getRemark(); // 使用备注字段 + + // 009开头的加入VMI表 + if (materialCode != null) { + String drawingNo = item.getDrawingNo(); + String drawingName = item.getDrawingName(); + if (drawingName != null) { + ImMaterial material = imMaterialService.selectByCodeAndName(drawingNo, drawingName); + if (material != null) { + //判断是否是VMI物料 + if ("true".equals(material.getClassificationName())) { + // 检查是否已存在相同的DrawingNo + boolean found = false; + for (VMIDataVO existingVmi : vmiList) { + if (drawingNo.equals(existingVmi.getDrawingNo())) { + // 将数量和批次数量相加 + Integer currentQuantity = existingVmi.getQuantity() != null ? existingVmi.getQuantity() : 0; + Integer itemQuantity = item.getQuantity() != null ? item.getQuantity().intValue() : 0; + existingVmi.setQuantity(currentQuantity + itemQuantity); + + Integer currentBatchQuantity = existingVmi.getBatchQuantity() != null ? existingVmi.getBatchQuantity() : 0; + Integer itemBatchQuantity = item.getBatchQuantity() != null ? Integer.parseInt(item.getBatchQuantity()) : 0; + existingVmi.setBatchQuantity(currentBatchQuantity + itemBatchQuantity); + found = true; + break; + } + } + + // 如果没有找到相同的DrawingNo,则添加新的VMI数据 + if (!found) { + VMIDataVO vmiData = convertToVMIDataVO(item); + vmiList.add(vmiData); + } + continue; // 已分类,跳过后续检查 + } + } + } + + // 电气外包分类条件:物料编码开头空格/特定前缀 或 备注包含"外购" + if (materialCode.startsWith(" ") + || materialCode.startsWith("009301") || materialCode.startsWith("009999") || materialCode.startsWith("017003") || materialCode.startsWith("017002") + || materialCode.startsWith("009001") || materialCode.startsWith("009081") + || (remark != null && remark.contains("外购"))) { + // 过滤安全库存:如果属于安全库存,则进入工艺数据列表 + Boolean isSafeStock = safetyStockService.isSafeCode(materialCode.trim()); + if (isSafeStock) { + // 属于安全库存,添加到工艺数据列表 + processDataList.add(item); + continue; // 已分类,跳过后续检查 + } else { + // 不属于安全库存,检查是否已存在相同的DrawingNo + boolean found = false; + for (ElecOutDataVO existingElec : elecOutList) { + if (item.getDrawingNo() != null && item.getDrawingNo().equals(existingElec.getDrawingNo())) { + // 将数量和批次数量相加 + Double currentQuantity = existingElec.getQuantity() != null ? existingElec.getQuantity() : 0.0; + Double itemQuantity = item.getQuantity() != null ? item.getQuantity() : 0.0; + Double newQuantity = currentQuantity + itemQuantity; + existingElec.setQuantity(newQuantity); + + // 批次数量相加(String类型) + String currentBatchQuantity = existingElec.getBatchQuantity() != null ? (existingElec.getBatchQuantity()).toString() : "0"; + String itemBatchQuantity = item.getBatchQuantity() != null ? item.getBatchQuantity() : "0"; + try { + Integer currentBatch = Integer.valueOf(currentBatchQuantity); + Integer itemBatch = Integer.valueOf(itemBatchQuantity); + String newBatchQuantity = String.valueOf(currentBatch + itemBatch); + existingElec.setBatchQuantity(Integer.valueOf(newBatchQuantity)); + } catch (NumberFormatException e) { + // 如果转换失败,保持原值 + existingElec.setBatchQuantity(Integer.valueOf(currentBatchQuantity)); + } + found = true; + break; + } + } + + // 如果没有找到相同的DrawingNo,则添加新的电气外包数据 + if (!found) { + ElecOutDataVO elecData = convertToElecOutDataVO(item); + elecOutList.add(elecData); + } + continue; // 已分类,跳过后续检查 + } + } + + // 备注是甲供件的 + if (remark != null && remark.contains("甲供件")) { + SupProvidDataVO supplierData = convertToSupProvidDataVO(item); + supplierList.add(supplierData); + continue; // 已分类,跳过后续检查 + } + + // 备注是伊特 + if (remark != null && remark.contains("伊特")) { + EVOProductsDataVO evoData = convertToEVOProductsDataVO(item); + evoProductsList.add(evoData); + continue; // 已分类,跳过后续检查 + } + } + + // 检查是否已存在相同的DrawingNo + boolean found = false; + for (ProductionOrderVo existingProcess : processDataList) { + if (item.getDrawingNo() != null && item.getDrawingNo().equals(existingProcess.getDrawingNo())) { + // 将数量和批次数量相加 + Double currentQuantity = existingProcess.getQuantity() != null ? existingProcess.getQuantity() : 0.0; + Double itemQuantity = item.getQuantity() != null ? item.getQuantity() : 0.0; + Double newQuantity = currentQuantity + itemQuantity; + existingProcess.setQuantity(newQuantity); + + // 批次数量相加(String类型) + String currentBatchQuantity = existingProcess.getBatchQuantity() != null ? existingProcess.getBatchQuantity() : "0"; + String itemBatchQuantity = item.getBatchQuantity() != null ? item.getBatchQuantity() : "0"; + try { + Integer currentBatch = Integer.valueOf(currentBatchQuantity); + Integer itemBatch = Integer.valueOf(itemBatchQuantity); + String newBatchQuantity = String.valueOf(currentBatch + itemBatch); + existingProcess.setBatchQuantity(newBatchQuantity); + } catch (NumberFormatException e) { + // 如果转换失败,保持原值 + existingProcess.setBatchQuantity(currentBatchQuantity); + } + found = true; + break; + } + } + + // 如果没有找到相同的DrawingNo,则添加新的工艺数据 + if (!found) { + processDataList.add(item); + } + + } + + // 使用Excel模板文件 + String templatePath = "jpg/生产及工艺计划模版.xlsx"; + String outputPath = "D:/file/" + orderPro.getProductionOrderNo() + "生产及工艺计划表.xlsx"; + + // 准备模板数据 + Map staticDataMap = new HashMap<>(); + staticDataMap.put("productionOrderNo", orderPro.getProductionOrderNo()); + staticDataMap.put("productionName", orderPro.getProductionName()); + + // 准备动态数据映射 + List dynamicDataMappingList = new ArrayList<>(); + + // 添加生产订单数据 + if (!allDataList.isEmpty()) { + List> productionDataList = convertProductionOrderToMapList(allDataList, orderPro.getProductionOrderNo()); + dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("ProductionOrder", productionDataList)); + } + + // 添加工艺数据(第七个sheet:工艺及生产计划表) + if (!processDataList.isEmpty()) { + List> processDataMapList = convertProductionOrderToMapList(processDataList, orderPro.getProductionOrderNo()); + + dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("ProcessData", processDataMapList)); + } + + // 添加VMI数据 + if (!vmiList.isEmpty()) { + List> vmiDataList = convertVMIDataToMapList(vmiList); + dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("VMIDataVO", vmiDataList)); + } + + // 添加电气外购数据 + if (!elecOutList.isEmpty()) { + List> elecDataList = convertElecOutDataToMapList(elecOutList); + dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("ElecOutDataVO", elecDataList)); + } + + // 添加BOM数据 + if (!rawDataList.isEmpty()) { + List> bomDataList = convertBomDataToMapList(rawDataList); + dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("BomDataVO", bomDataList)); + } + + // 添加甲供件数据 + if (!supplierList.isEmpty()) { + List> supplierDataList = convertSupProvidDataToMapList(supplierList); + dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("SupProvidDataVO", supplierDataList)); + } + + // 添加伊特产品数据 + if (!evoProductsList.isEmpty()) { + List> evoDataList = convertEVOProductsDataToMapList(evoProductsList); + dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("EVOProductsDataVO", evoDataList)); + } + if (!kingdeeBomRows.isEmpty()) { + List> bomDataList2 = convertKingdeeBomToMapList(kingdeeBomRows); + // 合并到 RouteBomData 中统一按物料分组导出(方案A) + } + // 添加伊特产品数据 + if (!routeList.isEmpty()) { + // 合并到 RouteBomData 中统一按物料分组导出(方案A) + } + + // 方案A:合并工艺与BOM为单一数据集并按物料分组 + if (!routeList.isEmpty() || !kingdeeBomRows.isEmpty()) { + List> routeBomDataList = convertRouteBomToMapList(routeList, kingdeeBomRows); + dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("RouteBomData", routeBomDataList)); + } + + // 使用模板导出Excel + ExcelTemplateProc.doExportExcelByTemplateProc(templatePath, outputPath, staticDataMap, dynamicDataMappingList); + + // 设置响应头 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode(orderPro.getProductionOrderNo() + "_分类BOM表", "UTF-8") + .replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + + // 将生成的文件写入响应 + File outputFile = new File(outputPath); + if (outputFile.exists()) { + try (FileInputStream fis = new FileInputStream(outputFile); + OutputStream os = response.getOutputStream()) { + byte[] buffer = new byte[8192]; + int length; + while ((length = fis.read(buffer)) > 0) { + os.write(buffer, 0, length); + } + os.flush(); + } + // 删除临时文件 + outputFile.delete(); + } + + } catch (Exception e) { + log.error("导出分类BOM表失败", e); + throw new RuntimeException("导出失败: " + e.getMessage()); + } + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/ProcessRouteController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/ProcessRouteController.java index bb0fff5..3dba7a8 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/ProcessRouteController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/ProcessRouteController.java @@ -73,6 +73,7 @@ public class ProcessRouteController extends BaseController { MaterialBomMapper materialBomMapper; private final IBomDetailsService iBomDetailsService; private final ProcessOrderProMapper proMapper; + private Long generateUniqueParentId(Long originalId) { return originalId + 1000; } @@ -221,10 +222,11 @@ public class ProcessRouteController extends BaseController { child.setXuEndTime(processRouteVo.getXuEndTime()); return child; } + /** * 导出工艺路线列表 */ - @SaCheckPermission("system:route:export") + @SaCheckPermission("system:route:export2") @Log(title = "工艺路线", businessType = BusinessType.EXPORT) @PostMapping("/export2") public void export2(ProcessRouteBo bo, HttpServletResponse response) { @@ -270,6 +272,7 @@ public class ProcessRouteController extends BaseController { throw new RuntimeException("导出Excel异常: " + e.getMessage(), e); } } + @SaCheckPermission("system:route:export") @Log(title = "工艺路线", businessType = BusinessType.EXPORT) @PostMapping("/export") @@ -289,7 +292,7 @@ public class ProcessRouteController extends BaseController { if (file.exists()) { // 读取Excel的sheet6 从第三行开始 读取到第4列 无数据的跳过 DefaultExcelListener listener = new DefaultExcelListener<>(true); - EasyExcel.read(ExcelName, ProcessRoute.class,listener) + EasyExcel.read(ExcelName, ProcessRoute.class, listener) .sheet(6) .headRowNumber(3) .doRead(); @@ -316,7 +319,7 @@ public class ProcessRouteController extends BaseController { .build()) { // 写入到第七个 sheet(index=6),并命名为“工艺路线” - WriteSheet writeSheet = EasyExcel.writerSheet( "已有工艺路线") + WriteSheet writeSheet = EasyExcel.writerSheet("已有工艺路线") .head(ProcessRoute.class) .needHead(true) .build(); @@ -331,8 +334,6 @@ public class ProcessRouteController extends BaseController { } - - /** * 获取工艺路线详细信息 * @@ -355,7 +356,8 @@ public class ProcessRouteController extends BaseController { return toAjax(iProcessRouteService.insertByBo(bo)); } - /**导出 + /** + * 导出 * 修改工艺路线 */ @SaCheckPermission("system:route:edit") @@ -378,8 +380,8 @@ public class ProcessRouteController extends BaseController { return toAjax(iProcessRouteService.deleteWithValidByIds(Arrays.asList(ids), true)); } - @Log(title = "明细导入", businessType = BusinessType.IMPORT) - @SaCheckPermission("system:route:import") + @Log(title = "生产工艺计划表导入", businessType = BusinessType.IMPORT) + @SaCheckPermission("system:route:importRoute") @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public R importData(@RequestParam("file") MultipartFile file) throws Exception { String originalFilename = file.getOriginalFilename(); @@ -392,16 +394,16 @@ public class ProcessRouteController extends BaseController { ExcelResult result1 = ExcelUtil.importExcelSheet1(file.getInputStream(), ProductionOrderVo.class, true); List list = result1.getList(); String productionOrderNo = list1.get(0).getRouteDescription(); - List bomDetails = iBomDetailsService.selectByProjectNumber(list1.get(0).getRouteDescription()); + List bomDetails = iBomDetailsService.selectByProjectNumber(list1.get(0).getRouteDescription()); List route = iProcessRouteService.selectByProjectNumber(list1.get(0).getRouteDescription()); - if (list1.isEmpty()){ - return R.fail("项目 "+productionOrderNo+"工艺生产计划表为空,请检查此表或将sheet移动至第七个!"); + if (list1.isEmpty()) { + return R.fail("项目 " + productionOrderNo + "工艺生产计划表为空,请检查此表或将sheet移动至第七个!"); } - if (!bomDetails.isEmpty()){ - return R.fail("项目 "+productionOrderNo+"已导入过BOM,请先清空再上传"); + if (!bomDetails.isEmpty()) { + return R.fail("项目 " + productionOrderNo + "已导入过BOM,请先清空再上传"); } - if (!route.isEmpty()){ - return R.fail("项目 "+productionOrderNo+"已导入过工艺 ,请先清空再上传"); + if (!route.isEmpty()) { + return R.fail("项目 " + productionOrderNo + "已导入过工艺 ,请先清空再上传"); } if (iProcessRouteService.saveData(list1, list)) { return R.ok("上传物料成功"); @@ -433,8 +435,7 @@ public class ProcessRouteController extends BaseController { /** * 查询工艺表中所有的需要做工艺的物料 * - * @return - * RequestBody List routeVoList + * @return RequestBody List routeVoList */ public List getProcessRouteList(@RequestParam String rooteProdet) { List list = iProcessRouteService.pushRawMater(rooteProdet); @@ -451,36 +452,36 @@ public class ProcessRouteController extends BaseController { @Log(title = "推送工艺工序") @SaCheckPermission("system:route:pushRouteBom") @PostMapping("/pushRouteBom") - public R pushRouteBom(@RequestParam String rooteProdet,@RequestParam String groupName) { - return iProcessRouteService.pushRouteBom(rooteProdet,groupName); + public R pushRouteBom(@RequestParam String rooteProdet, @RequestParam String groupName) { + return iProcessRouteService.pushRouteBom(rooteProdet, groupName); } /** * 查询项目列表 */ @Log(title = "获取所有的项目令号") - @SaCheckPermission("system:route:getRawBom") + @SaCheckPermission("system:route:getDistinctProjectCodes") @GetMapping("/getDistinctProjectCodes") public ResponseEntity> getDistinctProjectCodes(String query) { return ResponseEntity.ok(iProcessRouteService.getDistinctProjectCodes(query)); } @Log(title = "获取工序列表") - @SaCheckPermission("system:route:getRawBom") + @SaCheckPermission("system:route:getProcessInfoList") @GetMapping("/getProcessInfoList") public ResponseEntity> getProcessInfoList(String query) { return ResponseEntity.ok(iProcessRouteService.getProcessInfoList(query)); } @Log(title = "根据生产令号获取生产编号==》获取计划编号") - @SaCheckPermission("system:route:getRawBom") + @SaCheckPermission("system:route:getSelecPlanRouteList") @PostMapping("/getSelecPlanRouteList") public List getSelecPlanRouteList(@RequestParam String rooteProdet) { return iProcessRouteService.getSelecPlanRouteList(rooteProdet); } - @Log(title = "生成这个项目的pdf") - @SaCheckPermission("system:route:getRawBom") + @Log(title = "生成项目图纸PDF") + @SaCheckPermission("system:route:generatePDFs") @GetMapping("/generatePDFs") public void generatePDFs(String rooteProdet, HttpServletResponse response) throws IOException { // 调用服务层方法生成 ZIP 文件并获取其路径 @@ -513,6 +514,7 @@ public class ProcessRouteController extends BaseController { public List updateProcessPlan(@RequestParam String rooteProdet) throws Exception { return iProcessRouteService.updateProcessPlan(rooteProdet); } + /** * 更新生产订单的时间 */ @@ -544,10 +546,9 @@ public class ProcessRouteController extends BaseController { } @Log(title = "获取材料bom列表") - @SaCheckPermission("system:route:getRawBom") + @SaCheckPermission("system:route:getBomInfo") @PostMapping("/getBomInfo") - public ResponseEntity> getProcessMaterialList( - @RequestParam(value = "materialCode") String materialCode, + public ResponseEntity> getProcessMaterialList( @RequestParam(value = "materialCode") String materialCode, @RequestParam(value = "materialName") String materialName, @RequestParam(value = "productionOrderNo") String productionOrderNo) { @@ -578,12 +579,12 @@ public class ProcessRouteController extends BaseController { @Log(title = "导入时间", businessType = BusinessType.IMPORT) - @SaCheckPermission("system:route:importDataTime") + @SaCheckPermission("system:route:importDataTime123") @PostMapping(value = "/importDataTime123", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public R importDataTime123(@RequestParam("file") MultipartFile file) throws Exception { DefaultExcelListener listener = new DefaultExcelListener<>(true); - EasyExcel.read(file.getInputStream(), PcRigidChainVo.class,listener) .excelType(ExcelTypeEnum.XLS).sheet(1).headRowNumber(4).doRead(); + EasyExcel.read(file.getInputStream(), PcRigidChainVo.class, listener).excelType(ExcelTypeEnum.XLS).sheet(1).headRowNumber(4).doRead(); List list1 = listener.getExcelResult().getList(); for (PcRigidChainVo pcRigidChainVO : list1) { @@ -594,9 +595,8 @@ public class ProcessRouteController extends BaseController { } - @Log(title = "获取金蝶工艺路线") - @SaCheckPermission("system:route:getSelectProcessRoute") + @SaCheckPermission("system:route:getSelectProcessRout1e") @PostMapping("/getSelectProcessRout1e") public List getSelectProcessRoute1(@RequestParam String materilCode) { return iProcessRouteService.getSelectProcessRoute(materilCode); @@ -620,9 +620,10 @@ public class ProcessRouteController extends BaseController { }); } + private void processMaterAndRoute(JDMaterialAndRoute materialAndRoute, List bomDetailsList, List routeList, List materialBoms, String productionOrderNo) { // 处理工序列表 - materialAndRoute.getPlannedProcessVos().forEach(processRouteDTO -> { + materialAndRoute.getPlannedProcessVos().forEach(processRouteDTO -> { ProcessRoute processRoute = createProcessRoute1(processRouteDTO, materialAndRoute, productionOrderNo); routeList.add(processRoute); }); @@ -649,7 +650,7 @@ public class ProcessRouteController extends BaseController { materialBom.setUnit(materialUsageDTO.getChildUnit()); materialBom.setMaterialType(materialUsageDTO.getCaizhi()); //保留四位小数 - materialBom.setQuantity(String.valueOf(BigDecimal.valueOf(materialUsageDTO.getFenzi()).divide(new BigDecimal(materialUsageDTO.getFenmu()),4, RoundingMode.HALF_UP))); + materialBom.setQuantity(String.valueOf(BigDecimal.valueOf(materialUsageDTO.getFenzi()).divide(new BigDecimal(materialUsageDTO.getFenmu()), 4, RoundingMode.HALF_UP))); return materialBom; } @@ -705,7 +706,7 @@ public class ProcessRouteController extends BaseController { processRoute.setRawMaterialCode(materialUsageDTO.getMaterialCode()); processRoute.setRawMaterialName(materialUsageDTO.getMaterialName()); processRoute.setBomUnit(materialUsageDTO.getChildUnit()); - if (materialUsageDTO.getChildUnit().equals("根")) { + if (materialUsageDTO.getChildUnit().equals("根")) { processRoute.setDiscUsage(String.valueOf(Double.valueOf(materialUsageDTO.getFenmu()))); } else { processRoute.setDiscUsage(String.valueOf((double) (materialUsageDTO.getFenzi() / materialUsageDTO.getFenmu()))); @@ -810,9 +811,9 @@ public class ProcessRouteController extends BaseController { //子项分母 bomDetails.setDenominator(materialUsageDTO.getFDenominator()); bomDetails.setName(materialUsageDTO.getMaterialName()); - if (materialUsageDTO.getItemType().equals("1")){ + if (materialUsageDTO.getItemType().equals("1")) { bomDetails.setStats("外购"); - }else{ + } else { bomDetails.setStats("自制"); } @@ -821,7 +822,7 @@ public class ProcessRouteController extends BaseController { } private MaterialBom creatBomMaterial(MaterialUsageDTO materialUsageDTO, CombinedDTO combinedDTO, - String productionOrderNo) { + String productionOrderNo) { MaterialBom materialBom = new MaterialBom(); materialBom.setProjectNumber(productionOrderNo); materialBom.setParentMaterialCode(combinedDTO.getMaterialCode()); @@ -865,7 +866,7 @@ public class ProcessRouteController extends BaseController { .headRowNumber(3) .doRead(); List list = listener.getExcelResult().getList(); - List list1 = iProcessRouteService.getProcessRouteGD(list,rooteProdet); + List list1 = iProcessRouteService.getProcessRouteGD(list, rooteProdet); List bomDetailsList = new ArrayList<>(); List routeList = new ArrayList<>(); @@ -875,13 +876,38 @@ public class ProcessRouteController extends BaseController { processMaterAndRoute(materialAndRoute, bomDetailsList, routeList, materialBoms, rooteProdet); } - bomDetailsMapper.insertBatch(bomDetailsList); - baseMapper.insertBatch(routeList); - materialBomMapper.insertBatch(materialBoms); + bomDetailsMapper.insertBatch(bomDetailsList); + baseMapper.insertBatch(routeList); + materialBomMapper.insertBatch(materialBoms); } } catch (Exception e) { throw new RuntimeException(e); } } + + + /** + * 更新生产订单仓库字段 + */ + @SaCheckPermission("system:route:updateProductionOrders") + @Log(title = "获取全部工艺路线和物料清单", businessType = BusinessType.OTHER) + @PostMapping("/updateProductionOrders") + public R updateProductionOrders(@RequestParam("rooteProdet") String rooteProdet,@RequestParam("cangKuNum")String cangKuNum) throws Exception { + //判断此项目是否有 + List list = iProcessRouteService.updateProductionOrders(rooteProdet,cangKuNum); + return R.ok(list); + } + + /** + * 更新采购申请仓库字段 + */ + @SaCheckPermission("system:route:updateProductionOrders") + @Log(title = "获取全部工艺路线和物料清单", businessType = BusinessType.OTHER) + @PostMapping("/updateCgOrders") + public R updateCgOrders(@RequestParam("rooteProdet") String rooteProdet,@RequestParam("cangKuNum")String cangKuNum) { + //判断此项目是否有 + List list = iProcessRouteService.updateCgOrders(rooteProdet,cangKuNum); + return R.ok(list); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec100r.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec100r.java new file mode 100644 index 0000000..a7c10ce --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec100r.java @@ -0,0 +1,173 @@ +package com.ruoyi.system.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 100R设备规格参数对象 device_spec_100r + * + * @author ruoyi + * @date 2025-12-03 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("device_spec_100r") +public class DeviceSpec100r extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + /** + * 行程变量 + */ + private String travelLength; + /** + * 类型 + */ + private String itemType; + /** + * 轴向 + */ + private String axialType; + /** + * 箱体 + */ + private String boxType; + /** + * 行程 + */ + private Long V1; + /** + * 设备总长 + */ + private Long V2; + /** + * 地脚位置1 + */ + private Long V3; + /** + * 地脚位置1 + */ + private Long V4; + /** + * 箱体装配长度 + */ + private Long V5; + /** + * 箱体地脚位置1 + */ + private Long V6; + /** + * 箱体地脚位置1 + */ + private Long V7; + /** + * 铝箱长度1 + */ + private Long V8; + /** + * 铝箱1重量 + */ + private BigDecimal G1; + /** + * 铝箱长度2 + */ + private Long V9; + /** + * 铝箱2重量 + */ + private BigDecimal G2; + /** + * 导向条长度1 + */ + private Long V10; + /** + * 导向条1单重 + */ + private BigDecimal G5; + /** + * 导向条长度1数量 + */ + private Long V11; + /** + * 导向条长度2 + */ + private Long V12; + /** + * 导向条2单重 + */ + private BigDecimal G6; + /** + * 导向条2数量 + */ + private Long V13; + /** + * 导向条长度3 + */ + private Long V14; + /** + * 导向条3单重 + */ + private BigDecimal G7; + /** + * 导向条3数量 + */ + private Long V15; + /** + * 外链板 + */ + private Long V41; + /** + * 内链板 + */ + private Long V42; + /** + * 连接板 + */ + private Long V43; + /** + * 滚轮轴 + */ + private Long V44; + /** + * 隔套 + */ + private Long V45; + /** + * 隔垫 + */ + private Long V46; + /** + * 滚轮 + */ + private Long V47; + /** + * 垫圈 + */ + private Long V48; + /** + * 挡圈 + */ + private Long V49; + /** + * 滚轮隔套 + */ + private Long V50; + /** + * 内链板组件 + */ + private Long V51; + /** + * 内链板组件 + */ + private Long V52; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec125r.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec125r.java new file mode 100644 index 0000000..a15995f --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec125r.java @@ -0,0 +1,197 @@ +package com.ruoyi.system.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 125R设备规格参数对象 device_spec_125r + * + * @author ruoyi + * @date 2025-12-06 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("device_spec_125r") +public class DeviceSpec125r extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + /** + * 行程 + */ + private String travelLength; + /** + * 类型 + */ + private String itemType; + /** + * 轴向 + */ + private String axialType; + /** + * 箱体 + */ + private String boxType; + /** + * v1 + */ + private Long v1; + /** + * v2 + */ + private Long v2; + /** + * v3 + */ + private Long v3; + /** + * v4 + */ + private Long v4; + /** + * v5 + */ + private Long v5; + /** + * v6 + */ + private Long v6; + /** + * v7 + */ + private Long v7; + /** + * v8 + */ + private Long v8; + /** + * g1 + */ + private BigDecimal g1; + /** + * v9 + */ + private Long v9; + /** + * g2 + */ + private BigDecimal g2; + /** + * g3 + */ + private BigDecimal g3; + /** + * g4 + */ + private BigDecimal g4; + /** + * v10 + */ + private Long v10; + /** + * g5 + */ + private BigDecimal g5; + /** + * v11 + */ + private Long v11; + /** + * v12 + */ + private Long v12; + /** + * g6 + */ + private BigDecimal g6; + /** + * v13 + */ + private Long v13; + /** + * v14 + */ + private Long v14; + /** + * g7 + */ + private BigDecimal g7; + /** + * v15 + */ + private Long v15; + /** + * v16 + */ + private Long v16; + /** + * v17 + */ + private Long v17; + /** + * v18 + */ + private Long v18; + /** + * v19 + */ + private Long v19; + /** + * v20 + */ + private Long v20; + /** + * v41 + */ + private Long v41; + /** + * v42 + */ + private Long v42; + /** + * v43 + */ + private Long v43; + /** + * v44 + */ + private Long v44; + /** + * v45 + */ + private Long v45; + /** + * v46 + */ + private Long v46; + /** + * v47 + */ + private Long v47; + /** + * v48 + */ + private Long v48; + /** + * v49 + */ + private Long v49; + /** + * v50 + */ + private Long v50; + /** + * v51 + */ + private Long v51; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec150r.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec150r.java new file mode 100644 index 0000000..d5e3f84 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec150r.java @@ -0,0 +1,213 @@ +package com.ruoyi.system.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 150R设备规格参数对象 device_spec_150r + * + * @author ruoyi + * @date 2025-12-06 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("device_spec_150r") +public class DeviceSpec150r extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + /** + * 行程 + */ + private String travelLength; + /** + * 类型 + */ + private String itemType; + /** + * 轴向 + */ + private String axialType; + /** + * 箱体 + */ + private String boxType; + /** + * v1 + */ + private Long v1; + /** + * v2 + */ + private Long v2; + /** + * v3 + */ + private Long v3; + /** + * v4 + */ + private Long v4; + /** + * v21 + */ + private Long v21; + /** + * v22 + */ + private Long v22; + /** + * v23 + */ + private Long v23; + /** + * v24 + */ + private Long v24; + /** + * v5 + */ + private Long v5; + /** + * v6 + */ + private Long v6; + /** + * v7 + */ + private Long v7; + /** + * v8 + */ + private Long v8; + /** + * g1 + */ + private BigDecimal g1; + /** + * v9 + */ + private Long v9; + /** + * g2 + */ + private BigDecimal g2; + /** + * g3 + */ + private BigDecimal g3; + /** + * g4 + */ + private BigDecimal g4; + /** + * v10 + */ + private Long v10; + /** + * g5 + */ + private BigDecimal g5; + /** + * v11 + */ + private Long v11; + /** + * v12 + */ + private Long v12; + /** + * g6 + */ + private BigDecimal g6; + /** + * v13 + */ + private Long v13; + /** + * v14 + */ + private Long v14; + /** + * g7 + */ + private BigDecimal g7; + /** + * v15 + */ + private Long v15; + /** + * v16 + */ + private Long v16; + /** + * v17 + */ + private Long v17; + /** + * v18 + */ + private Long v18; + /** + * v19 + */ + private Long v19; + /** + * v20 + */ + private Long v20; + /** + * v41 + */ + private Long v41; + /** + * v42 + */ + private Long v42; + /** + * v43 + */ + private Long v43; + /** + * v44 + */ + private Long v44; + /** + * v45 + */ + private Long v45; + /** + * v46 + */ + private Long v46; + /** + * v47 + */ + private Long v47; + /** + * v48 + */ + private Long v48; + /** + * v49 + */ + private Long v49; + /** + * v50 + */ + private Long v50; + /** + * v51 + */ + private Long v51; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec30d.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec30d.java new file mode 100644 index 0000000..fe0efc8 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec30d.java @@ -0,0 +1,129 @@ +package com.ruoyi.system.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * device_spec_30D 对象 device_spec_30d + * + * @author ruoyi + * @date 2025-12-03 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("device_spec_30d") +public class DeviceSpec30d extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + /** + * 行程变量 + */ + private String travelLength; + /** + * 类型 + */ + private String itemType; + /** + * 轴向 + */ + private String axialType; + /** + * 箱体 + */ + private String boxType; + /** + * v1 + */ + private Long v1; + /** + * v2 + */ + private Long v2; + /** + * v3 + */ + private Long v3; + /** + * v5 + */ + private Long v5; + /** + * v6 + */ + private Long v6; + /** + * v8 + */ + private Long v8; + /** + * g1 + */ + private BigDecimal g1; + /** + * v10 + */ + private Long v10; + /** + * g5 + */ + private BigDecimal g5; + /** + * g8 + */ + private BigDecimal g8; + /** + * v12 + */ + private Long v12; + /** + * g6 + */ + private BigDecimal g6; + /** + * g9 + */ + private BigDecimal g9; + /** + * v41 + */ + private Long v41; + /** + * v42 + */ + private Long v42; + /** + * v43 + */ + private Long v43; + /** + * v44 + */ + private Long v44; + /** + * v45 + */ + private Long v45; + /** + * v46 + */ + private Long v46; + /** + * v47 + */ + private Long v47; + /** + * v48 + */ + private Long v48; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec30s.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec30s.java new file mode 100644 index 0000000..2cfe070 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec30s.java @@ -0,0 +1,109 @@ +package com.ruoyi.system.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 30S设备规格参数对象 device_spec_30s + * + * @author ruoyi + * @date 2025-12-03 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("device_spec_30s") +public class DeviceSpec30s extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + /** + * 行程变量 + */ + private String travelLength; + /** + * 类型 + */ + private String itemType; + /** + * 轴向 + */ + private String axialType; + /** + * 箱体 + */ + private String boxType; + /** + * v1 + */ + private Long v1; + /** + * v2 + */ + private Long v2; + /** + * v3 + */ + private Long v3; + /** + * v5 + */ + private Long v5; + /** + * v8 + */ + private Long v8; + /** + * g1 + */ + private BigDecimal g1; + /** + * v10 + */ + private Long v10; + /** + * g5 + */ + private BigDecimal g5; + /** + * v12 + */ + private Long v12; + /** + * g6 + */ + private BigDecimal g6; + /** + * v41 + */ + private Long v41; + /** + * v42 + */ + private Long v42; + /** + * v43 + */ + private Long v43; + /** + * v44 + */ + private Long v44; + /** + * v45 + */ + private Long v45; + /** + * v46 + */ + private Long v46; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec35r.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec35r.java index 2866ee0..fff0e28 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec35r.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec35r.java @@ -125,5 +125,12 @@ public class DeviceSpec35r extends BaseEntity { * 35E链板 */ private Long V46; - + /** + * + */ + private Long V47; + /** + * + */ + private Long V48; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec40r.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec40r.java new file mode 100644 index 0000000..090d424 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec40r.java @@ -0,0 +1,157 @@ +package com.ruoyi.system.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 40R设备规格参数对象 device_spec_40r + * + * @author ruoyi + * @date 2025-12-03 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("device_spec_40r") +public class DeviceSpec40r extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + /** + * 行程变量 + */ + private String travelLength; + /** + * 类型 + */ + private String itemType; + /** + * 轴向 + */ + private String axialType; + /** + * 箱体 + */ + private String boxType; + /** + * 行程 + */ + private Long V1; + /** + * 设备总长 + */ + private Long V2; + /** + * 地脚位置1 + */ + private Long V3; + /** + * 箱体装配长度 + */ + private Long V5; + /** + * 箱体地脚位置1 + */ + private Long V6; + /** + * 铝箱长度1 + */ + private Long V8; + /** + * 铝箱1重量 + */ + private BigDecimal G1; + /** + * 铝箱长度2 + */ + private Long V9; + /** + * 铝箱2重量 + */ + private BigDecimal G2; + /** + * 导向条长度1 + */ + private Long V10; + /** + * 导向条1单重 + */ + private BigDecimal G5; + /** + * 导向条长度1数量 + */ + private Long V11; + /** + * 导向条长度2 + */ + private Long V12; + /** + * 导向条2单重 + */ + private BigDecimal G6; + /** + * 导向条2数量 + */ + private Long V13; + /** + * 导向条长度3 + */ + private Long V14; + /** + * 导向条3单重 + */ + private BigDecimal G7; + /** + * 导向条3数量 + */ + private Long V15; + /** + * 外链板 + */ + private Long V41; + /** + * 内链板 + */ + private Long V42; + /** + * 连接板 + */ + private Long V43; + /** + * 滚轮轴 + */ + private Long V44; + /** + * 隔套 + */ + private Long V45; + /** + * 隔垫 + */ + private Long V46; + /** + * 滚轮 + */ + private Long V47; + /** + * 卡簧 + */ + private Long V48; + /** + * 链套轴 + */ + private Long V49; + /** + * 链套 + */ + private Long V50; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec40s.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec40s.java new file mode 100644 index 0000000..c5203ac --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec40s.java @@ -0,0 +1,169 @@ +package com.ruoyi.system.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 40S设备规格参数对象 device_spec_40s + * + * @author ruoyi + * @date 2025-12-03 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("device_spec_40s") +public class DeviceSpec40s extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + /** + * 行程变量 + */ + private String travelLength; + /** + * 类型 + */ + private String itemType; + /** + * 轴向 + */ + private String axialType; + /** + * 箱体 + */ + private String boxType; + /** + * 行程 + */ + private Long V1; + /** + * 设备总长 + */ + private Long V2; + /** + * P40SI设备总仓 + */ + private Long V22; + /** + * 地脚位置1 + */ + private Long V3; + /** + * P40SI地脚位置 + */ + private Long V23; + /** + * 箱体装配长度 + */ + private Long V5; + /** + * 箱体地脚位置1 + */ + private Long V6; + /** + * 铝箱长度1 + */ + private Long V8; + /** + * 铝箱1重量 + */ + private BigDecimal G1; + /** + * 铝箱长度2 + */ + private Long V9; + /** + * 铝箱2重量 + */ + private BigDecimal G2; + /** + * 导向条长度1 + */ + private Long V10; + /** + * 导向条1单重 + */ + private BigDecimal G5; + /** + * 导向条长度1数量 + */ + private Long V11; + /** + * 导向条长度2 + */ + private Long V12; + /** + * 导向条2单重 + */ + private BigDecimal G6; + /** + * 导向条2数量 + */ + private Long V13; + /** + * 导向条长度3 + */ + private Long V14; + /** + * 导向条3单重 + */ + private BigDecimal G7; + /** + * 导向条3数量 + */ + private Long V15; + /** + * 外链板 + */ + private Long V41; + /** + * 内链板 + */ + private Long V42; + /** + * 连接板 + */ + private Long V43; + /** + * 滚轮轴 + */ + private Long V44; + /** + * 隔套 + */ + private Long V45; + /** + * 隔垫 + */ + private Long V46; + /** + * 滚轮 + */ + private Long V47; + /** + * 垫圈 + */ + private Long V48; + /** + * 挡圈 + */ + private Long V49; + /** + * 滚轮隔套 + */ + private Long V50; + /** + * 内链板组件 + */ + private Long V51; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec60r.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec60r.java new file mode 100644 index 0000000..7f409a7 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec60r.java @@ -0,0 +1,157 @@ +package com.ruoyi.system.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 60R设备规格参数对象 device_spec_60r + * + * @author ruoyi + * @date 2025-12-03 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("device_spec_60r") +public class DeviceSpec60r extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + /** + * 行程变量 + */ + private String travelLength; + /** + * 类型 + */ + private String itemType; + /** + * 轴向 + */ + private String axialType; + /** + * 箱体 + */ + private String boxType; + /** + * v1 + */ + private Long v1; + /** + * v2 + */ + private Long v2; + /** + * v3 + */ + private Long v3; + /** + * v5 + */ + private Long v5; + /** + * v6 + */ + private Long v6; + /** + * v8 + */ + private Long v8; + /** + * g1 + */ + private BigDecimal g1; + /** + * v9 + */ + private Long v9; + /** + * g2 + */ + private BigDecimal g2; + /** + * v10 + */ + private Long v10; + /** + * g5 + */ + private BigDecimal g5; + /** + * v11 + */ + private Long v11; + /** + * v12 + */ + private Long v12; + /** + * g6 + */ + private BigDecimal g6; + /** + * v13 + */ + private Long v13; + /** + * v14 + */ + private Long v14; + /** + * g7 + */ + private BigDecimal g7; + /** + * v15 + */ + private Long v15; + /** + * v41 + */ + private Long v41; + /** + * v42 + */ + private Long v42; + /** + * v43 + */ + private Long v43; + /** + * v44 + */ + private Long v44; + /** + * v45 + */ + private Long v45; + /** + * v46 + */ + private Long v46; + /** + * v47 + */ + private Long v47; + /** + * v48 + */ + private Long v48; + /** + * v49 + */ + private Long v49; + /** + * v50 + */ + private Long v50; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec80r.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec80r.java new file mode 100644 index 0000000..80e3277 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/DeviceSpec80r.java @@ -0,0 +1,161 @@ +package com.ruoyi.system.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 80R设备规格参数对象 device_spec_80r + * + * @author ruoyi + * @date 2025-12-03 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("device_spec_80r") +public class DeviceSpec80r extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + /** + * 行程变量 + */ + private String travelLength; + /** + * 类型 + */ + private String itemType; + /** + * 轴向 + */ + private String axialType; + /** + * 箱体 + */ + private String boxType; + /** + * v1 + */ + private Long v1; + /** + * v2 + */ + private Long v2; + /** + * v3 + */ + private Long v3; + /** + * v5 + */ + private Long v5; + /** + * v6 + */ + private Long v6; + /** + * v8 + */ + private Long v8; + /** + * g1 + */ + private BigDecimal g1; + /** + * v9 + */ + private Long v9; + /** + * g2 + */ + private BigDecimal g2; + /** + * v10 + */ + private Long v10; + /** + * g5 + */ + private BigDecimal g5; + /** + * v11 + */ + private Long v11; + /** + * v12 + */ + private Long v12; + /** + * g6 + */ + private BigDecimal g6; + /** + * v13 + */ + private Long v13; + /** + * v14 + */ + private Long v14; + /** + * g7 + */ + private BigDecimal g7; + /** + * v15 + */ + private Long v15; + /** + * v41 + */ + private Long v41; + /** + * v42 + */ + private Long v42; + /** + * v43 + */ + private Long v43; + /** + * v44 + */ + private Long v44; + /** + * v45 + */ + private Long v45; + /** + * v46 + */ + private Long v46; + /** + * v47 + */ + private Long v47; + /** + * v48 + */ + private Long v48; + /** + * v49 + */ + private Long v49; + /** + * v50 + */ + private Long v50; + /** + * v51 + */ + private Long v51; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FigureSave.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FigureSave.java index 4efccb4..a3ed058 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/FigureSave.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/FigureSave.java @@ -57,4 +57,12 @@ public class FigureSave extends BaseEntity { * 关联项目表 */ private Long pid; + /** + * 轴向 + */ + private String axialType; + /** + * 箱体类型 + */ + private String boxType; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec100rBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec100rBo.java new file mode 100644 index 0000000..98d53b6 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec100rBo.java @@ -0,0 +1,246 @@ +package com.ruoyi.system.domain.bo; + +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.math.BigDecimal; + +/** + * 100R设备规格参数业务对象 device_spec_100r + * + * @author ruoyi + * @date 2025-12-03 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class DeviceSpec100rBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 行程变量 + */ + @NotBlank(message = "行程变量不能为空", groups = { AddGroup.class, EditGroup.class }) + private String travelLength; + + /** + * 类型 + */ + @NotBlank(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private String itemType; + + /** + * 轴向 + */ + @NotBlank(message = "轴向不能为空", groups = { AddGroup.class, EditGroup.class }) + private String axialType; + + /** + * 箱体 + */ + @NotBlank(message = "箱体不能为空", groups = { AddGroup.class, EditGroup.class }) + private String boxType; + + /** + * 行程 + */ + @NotNull(message = "行程不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V1; + + /** + * 设备总长 + */ + @NotNull(message = "设备总长不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V2; + + /** + * 地脚位置1 + */ + @NotNull(message = "地脚位置1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V3; + + /** + * 地脚位置1 + */ + @NotNull(message = "地脚位置1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V4; + + /** + * 箱体装配长度 + */ + @NotNull(message = "箱体装配长度不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V5; + + /** + * 箱体地脚位置1 + */ + @NotNull(message = "箱体地脚位置1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V6; + + /** + * 箱体地脚位置1 + */ + @NotNull(message = "箱体地脚位置1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V7; + + /** + * 铝箱长度1 + */ + @NotNull(message = "铝箱长度1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V8; + + /** + * 铝箱1重量 + */ + @NotNull(message = "铝箱1重量不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal G1; + + /** + * 铝箱长度2 + */ + @NotNull(message = "铝箱长度2不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V9; + + /** + * 铝箱2重量 + */ + @NotNull(message = "铝箱2重量不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal G2; + + /** + * 导向条长度1 + */ + @NotNull(message = "导向条长度1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V10; + + /** + * 导向条1单重 + */ + @NotNull(message = "导向条1单重不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal G5; + + /** + * 导向条长度1数量 + */ + @NotNull(message = "导向条长度1数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V11; + + /** + * 导向条长度2 + */ + @NotNull(message = "导向条长度2不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V12; + + /** + * 导向条2单重 + */ + @NotNull(message = "导向条2单重不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal G6; + + /** + * 导向条2数量 + */ + @NotNull(message = "导向条2数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V13; + + /** + * 导向条长度3 + */ + @NotNull(message = "导向条长度3不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V14; + + /** + * 导向条3单重 + */ + @NotNull(message = "导向条3单重不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal G7; + + /** + * 导向条3数量 + */ + @NotNull(message = "导向条3数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V15; + + /** + * 外链板 + */ + @NotNull(message = "外链板不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V41; + + /** + * 内链板 + */ + @NotNull(message = "内链板不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V42; + + /** + * 连接板 + */ + @NotNull(message = "连接板不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V43; + + /** + * 滚轮轴 + */ + @NotNull(message = "滚轮轴不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V44; + + /** + * 隔套 + */ + @NotNull(message = "隔套不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V45; + + /** + * 隔垫 + */ + @NotNull(message = "隔垫不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V46; + + /** + * 滚轮 + */ + @NotNull(message = "滚轮不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V47; + + /** + * 垫圈 + */ + @NotNull(message = "垫圈不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V48; + + /** + * 挡圈 + */ + @NotNull(message = "挡圈不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V49; + + /** + * 滚轮隔套 + */ + @NotNull(message = "滚轮隔套不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V50; + + /** + * 内链板组件 + */ + @NotNull(message = "内链板组件不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V51; + + /** + * 内链板组件 + */ + @NotNull(message = "内链板组件不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V52; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec125rBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec125rBo.java new file mode 100644 index 0000000..f73fc12 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec125rBo.java @@ -0,0 +1,282 @@ +package com.ruoyi.system.domain.bo; + +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.math.BigDecimal; + +/** + * 125R设备规格参数业务对象 device_spec_125r + * + * @author ruoyi + * @date 2025-12-06 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class DeviceSpec125rBo extends BaseEntity { + + /** + * id + */ + @NotNull(message = "id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 行程 + */ + @NotBlank(message = "行程不能为空", groups = { AddGroup.class, EditGroup.class }) + private String travelLength; + + /** + * 类型 + */ + @NotBlank(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private String itemType; + + /** + * 轴向 + */ + @NotBlank(message = "轴向不能为空", groups = { AddGroup.class, EditGroup.class }) + private String axialType; + + /** + * 箱体 + */ + @NotBlank(message = "箱体不能为空", groups = { AddGroup.class, EditGroup.class }) + private String boxType; + + /** + * v1 + */ + @NotNull(message = "v1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v1; + + /** + * v2 + */ + @NotNull(message = "v2不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v2; + + /** + * v3 + */ + @NotNull(message = "v3不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v3; + + /** + * v4 + */ + @NotNull(message = "v4不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v4; + + /** + * v5 + */ + @NotNull(message = "v5不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v5; + + /** + * v6 + */ + @NotNull(message = "v6不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v6; + + /** + * v7 + */ + @NotNull(message = "v7不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v7; + + /** + * v8 + */ + @NotNull(message = "v8不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v8; + + /** + * g1 + */ + @NotNull(message = "g1不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g1; + + /** + * v9 + */ + @NotNull(message = "v9不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v9; + + /** + * g2 + */ + @NotNull(message = "g2不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g2; + + /** + * g3 + */ + @NotNull(message = "g3不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g3; + + /** + * g4 + */ + @NotNull(message = "g4不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g4; + + /** + * v10 + */ + @NotNull(message = "v10不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v10; + + /** + * g5 + */ + @NotNull(message = "g5不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g5; + + /** + * v11 + */ + @NotNull(message = "v11不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v11; + + /** + * v12 + */ + @NotNull(message = "v12不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v12; + + /** + * g6 + */ + @NotNull(message = "g6不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g6; + + /** + * v13 + */ + @NotNull(message = "v13不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v13; + + /** + * v14 + */ + @NotNull(message = "v14不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v14; + + /** + * g7 + */ + @NotNull(message = "g7不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g7; + + /** + * v15 + */ + @NotNull(message = "v15不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v15; + + /** + * v16 + */ + @NotNull(message = "v16不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v16; + + /** + * v17 + */ + @NotNull(message = "v17不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v17; + + /** + * v18 + */ + @NotNull(message = "v18不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v18; + + /** + * v19 + */ + @NotNull(message = "v19不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v19; + + /** + * v20 + */ + @NotNull(message = "v20不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v20; + + /** + * v41 + */ + @NotNull(message = "v41不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v41; + + /** + * v42 + */ + @NotNull(message = "v42不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v42; + + /** + * v43 + */ + @NotNull(message = "v43不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v43; + + /** + * v44 + */ + @NotNull(message = "v44不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v44; + + /** + * v45 + */ + @NotNull(message = "v45不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v45; + + /** + * v46 + */ + @NotNull(message = "v46不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v46; + + /** + * v47 + */ + @NotNull(message = "v47不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v47; + + /** + * v48 + */ + @NotNull(message = "v48不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v48; + + /** + * v49 + */ + @NotNull(message = "v49不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v49; + + /** + * v50 + */ + @NotNull(message = "v50不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v50; + + /** + * v51 + */ + @NotNull(message = "v51不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v51; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec150rBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec150rBo.java new file mode 100644 index 0000000..82ed377 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec150rBo.java @@ -0,0 +1,306 @@ +package com.ruoyi.system.domain.bo; + +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.math.BigDecimal; + +/** + * 150R设备规格参数业务对象 device_spec_150r + * + * @author ruoyi + * @date 2025-12-06 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class DeviceSpec150rBo extends BaseEntity { + + /** + * id + */ + @NotNull(message = "id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 行程 + */ + @NotBlank(message = "行程不能为空", groups = { AddGroup.class, EditGroup.class }) + private String travelLength; + + /** + * 类型 + */ + @NotBlank(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private String itemType; + + /** + * 轴向 + */ + @NotBlank(message = "轴向不能为空", groups = { AddGroup.class, EditGroup.class }) + private String axialType; + + /** + * 箱体 + */ + @NotBlank(message = "箱体不能为空", groups = { AddGroup.class, EditGroup.class }) + private String boxType; + + /** + * v1 + */ + @NotNull(message = "v1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v1; + + /** + * v2 + */ + @NotNull(message = "v2不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v2; + + /** + * v3 + */ + @NotNull(message = "v3不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v3; + + /** + * v4 + */ + @NotNull(message = "v4不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v4; + + /** + * v21 + */ + @NotNull(message = "v21不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v21; + + /** + * v22 + */ + @NotNull(message = "v22不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v22; + + /** + * v23 + */ + @NotNull(message = "v23不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v23; + + /** + * v24 + */ + @NotNull(message = "v24不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v24; + + /** + * v5 + */ + @NotNull(message = "v5不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v5; + + /** + * v6 + */ + @NotNull(message = "v6不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v6; + + /** + * v7 + */ + @NotNull(message = "v7不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v7; + + /** + * v8 + */ + @NotNull(message = "v8不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v8; + + /** + * g1 + */ + @NotNull(message = "g1不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g1; + + /** + * v9 + */ + @NotNull(message = "v9不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v9; + + /** + * g2 + */ + @NotNull(message = "g2不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g2; + + /** + * g3 + */ + @NotNull(message = "g3不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g3; + + /** + * g4 + */ + @NotNull(message = "g4不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g4; + + /** + * v10 + */ + @NotNull(message = "v10不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v10; + + /** + * g5 + */ + @NotNull(message = "g5不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g5; + + /** + * v11 + */ + @NotNull(message = "v11不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v11; + + /** + * v12 + */ + @NotNull(message = "v12不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v12; + + /** + * g6 + */ + @NotNull(message = "g6不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g6; + + /** + * v13 + */ + @NotNull(message = "v13不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v13; + + /** + * v14 + */ + @NotNull(message = "v14不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v14; + + /** + * g7 + */ + @NotNull(message = "g7不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g7; + + /** + * v15 + */ + @NotNull(message = "v15不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v15; + + /** + * v16 + */ + @NotNull(message = "v16不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v16; + + /** + * v17 + */ + @NotNull(message = "v17不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v17; + + /** + * v18 + */ + @NotNull(message = "v18不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v18; + + /** + * v19 + */ + @NotNull(message = "v19不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v19; + + /** + * v20 + */ + @NotNull(message = "v20不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v20; + + /** + * v41 + */ + @NotNull(message = "v41不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v41; + + /** + * v42 + */ + @NotNull(message = "v42不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v42; + + /** + * v43 + */ + @NotNull(message = "v43不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v43; + + /** + * v44 + */ + @NotNull(message = "v44不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v44; + + /** + * v45 + */ + @NotNull(message = "v45不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v45; + + /** + * v46 + */ + @NotNull(message = "v46不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v46; + + /** + * v47 + */ + @NotNull(message = "v47不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v47; + + /** + * v48 + */ + @NotNull(message = "v48不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v48; + + /** + * v49 + */ + @NotNull(message = "v49不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v49; + + /** + * v50 + */ + @NotNull(message = "v50不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v50; + + /** + * v51 + */ + @NotNull(message = "v51不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v51; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec30dBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec30dBo.java new file mode 100644 index 0000000..a0f634d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec30dBo.java @@ -0,0 +1,179 @@ +package com.ruoyi.system.domain.bo; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.math.BigDecimal; +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +/** + * device_spec_30D 业务对象 device_spec_30d + * + * @author ruoyi + * @date 2025-12-03 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class DeviceSpec30dBo extends BaseEntity { + + /** + * id + */ + @NotNull(message = "id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 行程变量 + */ + @NotBlank(message = "行程变量不能为空", groups = { AddGroup.class, EditGroup.class }) + private String travelLength; + + /** + * 类型 + */ + @NotBlank(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private String itemType; + + /** + * 轴向 + */ + @NotBlank(message = "轴向不能为空", groups = { AddGroup.class, EditGroup.class }) + private String axialType; + + /** + * 箱体 + */ + @NotBlank(message = "箱体不能为空", groups = { AddGroup.class, EditGroup.class }) + private String boxType; + + /** + * v1 + */ + @NotNull(message = "v1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v1; + + /** + * v2 + */ + @NotNull(message = "v2不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v2; + + /** + * v3 + */ + @NotNull(message = "v3不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v3; + + /** + * v5 + */ + @NotNull(message = "v5不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v5; + + /** + * v6 + */ + @NotNull(message = "v6不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v6; + + /** + * v8 + */ + @NotNull(message = "v8不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v8; + + /** + * g1 + */ + @NotNull(message = "g1不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g1; + + /** + * v10 + */ + @NotNull(message = "v10不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v10; + + /** + * g5 + */ + @NotNull(message = "g5不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g5; + + /** + * g8 + */ + @NotNull(message = "g8不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g8; + + /** + * v12 + */ + @NotNull(message = "v12不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v12; + + /** + * g6 + */ + @NotNull(message = "g6不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g6; + + /** + * g9 + */ + @NotNull(message = "g9不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g9; + + /** + * v41 + */ + @NotNull(message = "v41不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v41; + + /** + * v42 + */ + @NotNull(message = "v42不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v42; + + /** + * v43 + */ + @NotNull(message = "v43不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v43; + + /** + * v44 + */ + @NotNull(message = "v44不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v44; + + /** + * v45 + */ + @NotNull(message = "v45不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v45; + + /** + * v46 + */ + @NotNull(message = "v46不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v46; + + /** + * v47 + */ + @NotNull(message = "v47不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v47; + + /** + * v48 + */ + @NotNull(message = "v48不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v48; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec30sBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec30sBo.java new file mode 100644 index 0000000..331db77 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec30sBo.java @@ -0,0 +1,149 @@ +package com.ruoyi.system.domain.bo; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.math.BigDecimal; +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +/** + * 30S设备规格参数业务对象 device_spec_30s + * + * @author ruoyi + * @date 2025-12-03 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class DeviceSpec30sBo extends BaseEntity { + + /** + * id + */ + @NotNull(message = "id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 行程变量 + */ + @NotBlank(message = "行程变量不能为空", groups = { AddGroup.class, EditGroup.class }) + private String travelLength; + + /** + * 类型 + */ + @NotBlank(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private String itemType; + + /** + * 轴向 + */ + @NotBlank(message = "轴向不能为空", groups = { AddGroup.class, EditGroup.class }) + private String axialType; + + /** + * 箱体 + */ + @NotBlank(message = "箱体不能为空", groups = { AddGroup.class, EditGroup.class }) + private String boxType; + + /** + * v1 + */ + @NotNull(message = "v1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v1; + + /** + * v2 + */ + @NotNull(message = "v2不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v2; + + /** + * v3 + */ + @NotNull(message = "v3不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v3; + + /** + * v5 + */ + @NotNull(message = "v5不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v5; + + /** + * v8 + */ + @NotNull(message = "v8不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v8; + + /** + * g1 + */ + @NotNull(message = "g1不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g1; + + /** + * v10 + */ + @NotNull(message = "v10不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v10; + + /** + * g5 + */ + @NotNull(message = "g5不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g5; + + /** + * v12 + */ + @NotNull(message = "v12不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v12; + + /** + * g6 + */ + @NotNull(message = "g6不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g6; + + /** + * v41 + */ + @NotNull(message = "v41不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v41; + + /** + * v42 + */ + @NotNull(message = "v42不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v42; + + /** + * v43 + */ + @NotNull(message = "v43不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v43; + + /** + * v44 + */ + @NotNull(message = "v44不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v44; + + /** + * v45 + */ + @NotNull(message = "v45不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v45; + + /** + * v46 + */ + @NotNull(message = "v46不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v46; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec35rBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec35rBo.java index 4d1bd82..e697ec7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec35rBo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec35rBo.java @@ -175,6 +175,17 @@ public class DeviceSpec35rBo extends BaseEntity { */ @NotNull(message = "35E链板不能为空", groups = { AddGroup.class, EditGroup.class }) private Long V46; + /** + * + */ + @NotNull(message = "V47不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V47; + + /** + * + */ + @NotNull(message = "V48不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V48; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec40rBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec40rBo.java new file mode 100644 index 0000000..f8b3228 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec40rBo.java @@ -0,0 +1,222 @@ +package com.ruoyi.system.domain.bo; + +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.math.BigDecimal; + +/** + * 40R设备规格参数业务对象 device_spec_40r + * + * @author ruoyi + * @date 2025-12-03 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class DeviceSpec40rBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 行程变量 + */ + @NotBlank(message = "行程变量不能为空", groups = { AddGroup.class, EditGroup.class }) + private String travelLength; + + /** + * 类型 + */ + @NotBlank(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private String itemType; + + /** + * 轴向 + */ + @NotBlank(message = "轴向不能为空", groups = { AddGroup.class, EditGroup.class }) + private String axialType; + + /** + * 箱体 + */ + @NotBlank(message = "箱体不能为空", groups = { AddGroup.class, EditGroup.class }) + private String boxType; + + /** + * 行程 + */ + @NotNull(message = "行程不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V1; + + /** + * 设备总长 + */ + @NotNull(message = "设备总长不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V2; + + /** + * 地脚位置1 + */ + @NotNull(message = "地脚位置1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V3; + + /** + * 箱体装配长度 + */ + @NotNull(message = "箱体装配长度不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V5; + + /** + * 箱体地脚位置1 + */ + @NotNull(message = "箱体地脚位置1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V6; + + /** + * 铝箱长度1 + */ + @NotNull(message = "铝箱长度1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V8; + + /** + * 铝箱1重量 + */ + @NotNull(message = "铝箱1重量不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal G1; + + /** + * 铝箱长度2 + */ + @NotNull(message = "铝箱长度2不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V9; + + /** + * 铝箱2重量 + */ + @NotNull(message = "铝箱2重量不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal G2; + + /** + * 导向条长度1 + */ + @NotNull(message = "导向条长度1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V10; + + /** + * 导向条1单重 + */ + @NotNull(message = "导向条1单重不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal G5; + + /** + * 导向条长度1数量 + */ + @NotNull(message = "导向条长度1数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V11; + + /** + * 导向条长度2 + */ + @NotNull(message = "导向条长度2不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V12; + + /** + * 导向条2单重 + */ + @NotNull(message = "导向条2单重不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal G6; + + /** + * 导向条2数量 + */ + @NotNull(message = "导向条2数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V13; + + /** + * 导向条长度3 + */ + @NotNull(message = "导向条长度3不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V14; + + /** + * 导向条3单重 + */ + @NotNull(message = "导向条3单重不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal G7; + + /** + * 导向条3数量 + */ + @NotNull(message = "导向条3数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V15; + + /** + * 外链板 + */ + @NotNull(message = "外链板不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V41; + + /** + * 内链板 + */ + @NotNull(message = "内链板不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V42; + + /** + * 连接板 + */ + @NotNull(message = "连接板不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V43; + + /** + * 滚轮轴 + */ + @NotNull(message = "滚轮轴不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V44; + + /** + * 隔套 + */ + @NotNull(message = "隔套不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V45; + + /** + * 隔垫 + */ + @NotNull(message = "隔垫不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V46; + + /** + * 滚轮 + */ + @NotNull(message = "滚轮不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V47; + + /** + * 卡簧 + */ + @NotNull(message = "卡簧不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V48; + + /** + * 链套轴 + */ + @NotNull(message = "链套轴不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V49; + + /** + * 链套 + */ + @NotNull(message = "链套不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V50; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec40sBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec40sBo.java new file mode 100644 index 0000000..7ae5b85 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec40sBo.java @@ -0,0 +1,240 @@ +package com.ruoyi.system.domain.bo; + +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.math.BigDecimal; + +/** + * 40S设备规格参数业务对象 device_spec_40s + * + * @author ruoyi + * @date 2025-12-03 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class DeviceSpec40sBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 行程变量 + */ + @NotBlank(message = "行程变量不能为空", groups = { AddGroup.class, EditGroup.class }) + private String travelLength; + + /** + * 类型 + */ + @NotBlank(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private String itemType; + + /** + * 轴向 + */ + @NotBlank(message = "轴向不能为空", groups = { AddGroup.class, EditGroup.class }) + private String axialType; + + /** + * 箱体 + */ + @NotBlank(message = "箱体不能为空", groups = { AddGroup.class, EditGroup.class }) + private String boxType; + + /** + * 行程 + */ + @NotNull(message = "行程不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V1; + + /** + * 设备总长 + */ + @NotNull(message = "设备总长不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V2; + + /** + * P40SI设备总仓 + */ + @NotNull(message = "P40SI设备总仓不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V22; + + /** + * 地脚位置1 + */ + @NotNull(message = "地脚位置1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V3; + + /** + * P40SI地脚位置 + */ + @NotNull(message = "P40SI地脚位置不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V23; + + /** + * 箱体装配长度 + */ + @NotNull(message = "箱体装配长度不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V5; + + /** + * 箱体地脚位置1 + */ + @NotNull(message = "箱体地脚位置1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V6; + + /** + * 铝箱长度1 + */ + @NotNull(message = "铝箱长度1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V8; + + /** + * 铝箱1重量 + */ + @NotNull(message = "铝箱1重量不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal G1; + + /** + * 铝箱长度2 + */ + @NotNull(message = "铝箱长度2不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V9; + + /** + * 铝箱2重量 + */ + @NotNull(message = "铝箱2重量不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal G2; + + /** + * 导向条长度1 + */ + @NotNull(message = "导向条长度1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V10; + + /** + * 导向条1单重 + */ + @NotNull(message = "导向条1单重不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal G5; + + /** + * 导向条长度1数量 + */ + @NotNull(message = "导向条长度1数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V11; + + /** + * 导向条长度2 + */ + @NotNull(message = "导向条长度2不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V12; + + /** + * 导向条2单重 + */ + @NotNull(message = "导向条2单重不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal G6; + + /** + * 导向条2数量 + */ + @NotNull(message = "导向条2数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V13; + + /** + * 导向条长度3 + */ + @NotNull(message = "导向条长度3不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V14; + + /** + * 导向条3单重 + */ + @NotNull(message = "导向条3单重不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal G7; + + /** + * 导向条3数量 + */ + @NotNull(message = "导向条3数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V15; + + /** + * 外链板 + */ + @NotNull(message = "外链板不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V41; + + /** + * 内链板 + */ + @NotNull(message = "内链板不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V42; + + /** + * 连接板 + */ + @NotNull(message = "连接板不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V43; + + /** + * 滚轮轴 + */ + @NotNull(message = "滚轮轴不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V44; + + /** + * 隔套 + */ + @NotNull(message = "隔套不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V45; + + /** + * 隔垫 + */ + @NotNull(message = "隔垫不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V46; + + /** + * 滚轮 + */ + @NotNull(message = "滚轮不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V47; + + /** + * 垫圈 + */ + @NotNull(message = "垫圈不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V48; + + /** + * 挡圈 + */ + @NotNull(message = "挡圈不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V49; + + /** + * 滚轮隔套 + */ + @NotNull(message = "滚轮隔套不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V50; + + /** + * 内链板组件 + */ + @NotNull(message = "内链板组件不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long V51; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec60rBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec60rBo.java new file mode 100644 index 0000000..11fad18 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec60rBo.java @@ -0,0 +1,221 @@ +package com.ruoyi.system.domain.bo; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.math.BigDecimal; +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +/** + * 60R设备规格参数业务对象 device_spec_60r + * + * @author ruoyi + * @date 2025-12-03 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class DeviceSpec60rBo extends BaseEntity { + + /** + * id + */ + @NotNull(message = "id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 行程变量 + */ + @NotBlank(message = "行程变量不能为空", groups = { AddGroup.class, EditGroup.class }) + private String travelLength; + + /** + * 类型 + */ + @NotBlank(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private String itemType; + + /** + * 轴向 + */ + @NotBlank(message = "轴向不能为空", groups = { AddGroup.class, EditGroup.class }) + private String axialType; + + /** + * 箱体 + */ + @NotBlank(message = "箱体不能为空", groups = { AddGroup.class, EditGroup.class }) + private String boxType; + + /** + * v1 + */ + @NotNull(message = "v1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v1; + + /** + * v2 + */ + @NotNull(message = "v2不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v2; + + /** + * v3 + */ + @NotNull(message = "v3不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v3; + + /** + * v5 + */ + @NotNull(message = "v5不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v5; + + /** + * v6 + */ + @NotNull(message = "v6不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v6; + + /** + * v8 + */ + @NotNull(message = "v8不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v8; + + /** + * g1 + */ + @NotNull(message = "g1不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g1; + + /** + * v9 + */ + @NotNull(message = "v9不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v9; + + /** + * g2 + */ + @NotNull(message = "g2不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g2; + + /** + * v10 + */ + @NotNull(message = "v10不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v10; + + /** + * g5 + */ + @NotNull(message = "g5不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g5; + + /** + * v11 + */ + @NotNull(message = "v11不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v11; + + /** + * v12 + */ + @NotNull(message = "v12不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v12; + + /** + * g6 + */ + @NotNull(message = "g6不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g6; + + /** + * v13 + */ + @NotNull(message = "v13不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v13; + + /** + * v14 + */ + @NotNull(message = "v14不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v14; + + /** + * g7 + */ + @NotNull(message = "g7不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g7; + + /** + * v15 + */ + @NotNull(message = "v15不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v15; + + /** + * v41 + */ + @NotNull(message = "v41不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v41; + + /** + * v42 + */ + @NotNull(message = "v42不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v42; + + /** + * v43 + */ + @NotNull(message = "v43不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v43; + + /** + * v44 + */ + @NotNull(message = "v44不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v44; + + /** + * v45 + */ + @NotNull(message = "v45不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v45; + + /** + * v46 + */ + @NotNull(message = "v46不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v46; + + /** + * v47 + */ + @NotNull(message = "v47不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v47; + + /** + * v48 + */ + @NotNull(message = "v48不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v48; + + /** + * v49 + */ + @NotNull(message = "v49不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v49; + + /** + * v50 + */ + @NotNull(message = "v50不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v50; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec80rBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec80rBo.java new file mode 100644 index 0000000..44e70b9 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/DeviceSpec80rBo.java @@ -0,0 +1,228 @@ +package com.ruoyi.system.domain.bo; + +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.math.BigDecimal; + +/** + * 80R设备规格参数业务对象 device_spec_80r + * + * @author ruoyi + * @date 2025-12-03 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class DeviceSpec80rBo extends BaseEntity { + + /** + * id + */ + @NotNull(message = "id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 行程变量 + */ + @NotBlank(message = "行程变量不能为空", groups = { AddGroup.class, EditGroup.class }) + private String travelLength; + + /** + * 类型 + */ + @NotBlank(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private String itemType; + + /** + * 轴向 + */ + @NotBlank(message = "轴向不能为空", groups = { AddGroup.class, EditGroup.class }) + private String axialType; + + /** + * 箱体 + */ + @NotBlank(message = "箱体不能为空", groups = { AddGroup.class, EditGroup.class }) + private String boxType; + + /** + * v1 + */ + @NotNull(message = "v1不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v1; + + /** + * v2 + */ + @NotNull(message = "v2不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v2; + + /** + * v3 + */ + @NotNull(message = "v3不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v3; + + /** + * v5 + */ + @NotNull(message = "v5不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v5; + + /** + * v6 + */ + @NotNull(message = "v6不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v6; + + /** + * v8 + */ + @NotNull(message = "v8不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v8; + + /** + * g1 + */ + @NotNull(message = "g1不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g1; + + /** + * v9 + */ + @NotNull(message = "v9不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v9; + + /** + * g2 + */ + @NotNull(message = "g2不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g2; + + /** + * v10 + */ + @NotNull(message = "v10不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v10; + + /** + * g5 + */ + @NotNull(message = "g5不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g5; + + /** + * v11 + */ + @NotNull(message = "v11不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v11; + + /** + * v12 + */ + @NotNull(message = "v12不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v12; + + /** + * g6 + */ + @NotNull(message = "g6不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g6; + + /** + * v13 + */ + @NotNull(message = "v13不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v13; + + /** + * v14 + */ + @NotNull(message = "v14不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v14; + + /** + * g7 + */ + @NotNull(message = "g7不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal g7; + + /** + * v15 + */ + @NotNull(message = "v15不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v15; + + /** + * v41 + */ + @NotNull(message = "v41不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v41; + + /** + * v42 + */ + @NotNull(message = "v42不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v42; + + /** + * v43 + */ + @NotNull(message = "v43不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v43; + + /** + * v44 + */ + @NotNull(message = "v44不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v44; + + /** + * v45 + */ + @NotNull(message = "v45不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v45; + + /** + * v46 + */ + @NotNull(message = "v46不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v46; + + /** + * v47 + */ + @NotNull(message = "v47不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v47; + + /** + * v48 + */ + @NotNull(message = "v48不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v48; + + /** + * v49 + */ + @NotNull(message = "v49不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v49; + + /** + * v50 + */ + @NotNull(message = "v50不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v50; + + /** + * v51 + */ + @NotNull(message = "v51不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long v51; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/FigureSaveBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/FigureSaveBo.java index c2916f9..9973f35 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/FigureSaveBo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/FigureSaveBo.java @@ -1,31 +1,35 @@ package com.ruoyi.system.domain.bo; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import lombok.Data; import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; /** * 外购件临时业务对象 figure_save * - * @author tzy - * @date 2024-05-28 + * @author ruoyi + * @date 2025-12-04 */ @Data @EqualsAndHashCode(callSuper = true) public class FigureSaveBo extends BaseEntity { - - @TableId(value = "id", type = IdType.AUTO) + /** + * + */ private Long id; + /** + * 关联项目表 + */ + @NotNull(message = "关联项目表不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long pid; + /** * 产品名称 */ @@ -44,6 +48,12 @@ public class FigureSaveBo extends BaseEntity { @NotBlank(message = "产品型号不能为空", groups = { AddGroup.class, EditGroup.class }) private String figureNumber; + /** + * 图纸路径 + */ + @NotBlank(message = "图纸路径不能为空", groups = { AddGroup.class, EditGroup.class }) + private String drawPath; + /** * 数量 */ @@ -58,16 +68,17 @@ public class FigureSaveBo extends BaseEntity { /** * 类型 */ - @NotBlank(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class }) private String productType; - /** - * 图纸路径 - */ - private String drawPath; /** - * 关联项目表 + * 轴向 */ - @NotNull(message = "关联项目表不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long pid; + private String axialType; + + /** + * 箱体 + */ + private String boxType; + + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/KingdeeWorkCenterDataBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/KingdeeWorkCenterDataBo.java index 35e4886..0d88d9d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/KingdeeWorkCenterDataBo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/KingdeeWorkCenterDataBo.java @@ -6,6 +6,7 @@ import com.ruoyi.common.core.validate.EditGroup; import lombok.Data; import lombok.EqualsAndHashCode; import javax.validation.constraints.*; +import java.math.BigDecimal; /** @@ -53,19 +54,19 @@ public class KingdeeWorkCenterDataBo extends BaseEntity { * 生产数量 */ @NotNull(message = "生产数量不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long operQty; + private BigDecimal operQty; /** * 转入数量 */ @NotNull(message = "转入数量不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long transInQty; + private BigDecimal transInQty; /** * 转出数量 */ @NotNull(message = "转出数量不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long transOutQty; + private BigDecimal transOutQty; /** * 物料状态 @@ -97,6 +98,16 @@ public class KingdeeWorkCenterDataBo extends BaseEntity { @NotBlank(message = "计划完成时间不能为空", groups = { AddGroup.class, EditGroup.class }) private String operPlanFinishTime; + /** + * 计划开始时间2 (YYYY-MM-DD) + */ + private String operPlanStartTime2; + + /** + * 计划完成时间2 (YYYY-MM-DD) + */ + private String operPlanFinishTime2; + /** * 延迟天数 */ @@ -109,5 +120,13 @@ public class KingdeeWorkCenterDataBo extends BaseEntity { */ @NotBlank(message = "工作中心不能为空", groups = { AddGroup.class, EditGroup.class }) private String workCenter; + /** + * 汇报数量 + */ + private BigDecimal FReportQty; + /** + * 工废数量 + */ + private BigDecimal FScrapQty; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysConfigIniBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysConfigIniBo.java index 3439d63..6eb197e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysConfigIniBo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysConfigIniBo.java @@ -22,25 +22,21 @@ public class SysConfigIniBo extends BaseEntity { /** * 主键id */ - @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) private Long id; /** * dir */ - @NotBlank(message = "dir不能为空", groups = { AddGroup.class, EditGroup.class }) private String dir; /** * 路径 */ - @NotBlank(message = "路径不能为空", groups = { AddGroup.class, EditGroup.class }) private String url; /** * 项目图纸路径 */ - @NotBlank(message = "项目图纸路径不能为空", groups = { AddGroup.class, EditGroup.class }) private String productDir; /** @@ -58,31 +54,26 @@ public class SysConfigIniBo extends BaseEntity { /** * 备注 */ - @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class }) private String remark; /** * 备用字段1 */ - @NotBlank(message = "备用字段1不能为空", groups = { AddGroup.class, EditGroup.class }) private String sparedOne; /** * 备用字段2 */ - @NotBlank(message = "备用字段2不能为空", groups = { AddGroup.class, EditGroup.class }) private String sparedTwo; /** * 备用字段3 */ - @NotNull(message = "备用字段3不能为空", groups = { AddGroup.class, EditGroup.class }) private Long sparedThree; /** * 备用字段4 */ - @NotNull(message = "备用字段4不能为空", groups = { AddGroup.class, EditGroup.class }) private Long sparedFour; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/ChengBeDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/ChengBeDTO.java new file mode 100644 index 0000000..5a2844d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/ChengBeDTO.java @@ -0,0 +1,50 @@ +package com.ruoyi.system.domain.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +@Data +public class ChengBeDTO { + /** 序号 */ + @ExcelProperty(value = "序号") + private String seqNo; + + /** 图号 */ + @ExcelProperty(value = "图号") + private String drawingNo; + + /** 名称 */ + @ExcelProperty(value = "名称") + private String name; + + /** 单台数量 */ + @ExcelProperty(value = "单台数量") + private BigDecimal qtyPerUnit; + + /** 材料 */ + @ExcelProperty(value = "材料") + private String material; + + /** 规格型号 */ + @ExcelProperty(value = "规格型号") + private String specification; + + /** 单重 */ + @ExcelProperty(value = "单重") + private BigDecimal unitWeight; + + /** 本批数量 */ + @ExcelProperty(value = "本批数量") + private BigDecimal batchQty; + + /** 成本单价 */ + @ExcelProperty(value = "成本单价") + private BigDecimal costUnitPrice; + + /** 备注 */ + @ExcelProperty(value = "备注") + private String remark; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/PlanPrcessNumDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/PlanPrcessNumDTO.java index e0b5351..b9d6e06 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/PlanPrcessNumDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/PlanPrcessNumDTO.java @@ -33,4 +33,6 @@ public class PlanPrcessNumDTO { private Date FOperPlanFinishTime; @JsonProperty("FMONumber") private String FMONumber; + @JsonProperty("F_HBYT_RKCK.FName") + private String FRKCKFName; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/excuteDrawing/RigidChainModelDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/excuteDrawing/RigidChainModelDTO.java new file mode 100644 index 0000000..584c7b9 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/excuteDrawing/RigidChainModelDTO.java @@ -0,0 +1,32 @@ +package com.ruoyi.system.domain.dto.excuteDrawing; + +import lombok.Data; + + +@Data +public class RigidChainModelDTO { + private Long id; + + private Long pid; + //生产令号 + private String productionCode; + //类型 + private String productType; + //变量 + private String journey; + //轴向 + private String axialType; + //箱体 + private String boxType; + //数量 + private Integer figureNum; + //文件类型 + private String selectedFileType; + //文件路径 + private String drawPath; + + private String figureNumber; + private String productName; + private String figureName; +} + diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec100rVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec100rVo.java new file mode 100644 index 0000000..09a68dd --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec100rVo.java @@ -0,0 +1,246 @@ +package com.ruoyi.system.domain.vo; + +import java.math.BigDecimal; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; + + +/** + * 100R设备规格参数视图对象 device_spec_100r + * + * @author ruoyi + * @date 2025-12-03 + */ +@Data +@ExcelIgnoreUnannotated +public class DeviceSpec100rVo { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 行程变量 + */ + @ExcelProperty(value = "行程变量") + private String travelLength; + + /** + * 类型 + */ + @ExcelProperty(value = "类型") + private String itemType; + + /** + * 轴向 + */ + @ExcelProperty(value = "轴向") + private String axialType; + + /** + * 箱体 + */ + @ExcelProperty(value = "箱体") + private String boxType; + + /** + * 行程 + */ + @ExcelProperty(value = "行程") + private Long V1; + + /** + * 设备总长 + */ + @ExcelProperty(value = "设备总长") + private Long V2; + + /** + * 地脚位置1 + */ + @ExcelProperty(value = "地脚位置1") + private Long V3; + + /** + * 地脚位置1 + */ + @ExcelProperty(value = "地脚位置1") + private Long V4; + + /** + * 箱体装配长度 + */ + @ExcelProperty(value = "箱体装配长度") + private Long V5; + + /** + * 箱体地脚位置1 + */ + @ExcelProperty(value = "箱体地脚位置1") + private Long V6; + + /** + * 箱体地脚位置1 + */ + @ExcelProperty(value = "箱体地脚位置1") + private Long V7; + + /** + * 铝箱长度1 + */ + @ExcelProperty(value = "铝箱长度1") + private Long V8; + + /** + * 铝箱1重量 + */ + @ExcelProperty(value = "铝箱1重量") + private BigDecimal G1; + + /** + * 铝箱长度2 + */ + @ExcelProperty(value = "铝箱长度2") + private Long V9; + + /** + * 铝箱2重量 + */ + @ExcelProperty(value = "铝箱2重量") + private BigDecimal G2; + + /** + * 导向条长度1 + */ + @ExcelProperty(value = "导向条长度1") + private Long V10; + + /** + * 导向条1单重 + */ + @ExcelProperty(value = "导向条1单重") + private BigDecimal G5; + + /** + * 导向条长度1数量 + */ + @ExcelProperty(value = "导向条长度1数量") + private Long V11; + + /** + * 导向条长度2 + */ + @ExcelProperty(value = "导向条长度2") + private Long V12; + + /** + * 导向条2单重 + */ + @ExcelProperty(value = "导向条2单重") + private BigDecimal G6; + + /** + * 导向条2数量 + */ + @ExcelProperty(value = "导向条2数量") + private Long V13; + + /** + * 导向条长度3 + */ + @ExcelProperty(value = "导向条长度3") + private Long V14; + + /** + * 导向条3单重 + */ + @ExcelProperty(value = "导向条3单重") + private BigDecimal G7; + + /** + * 导向条3数量 + */ + @ExcelProperty(value = "导向条3数量") + private Long V15; + + /** + * 外链板 + */ + @ExcelProperty(value = "外链板") + private Long V41; + + /** + * 内链板 + */ + @ExcelProperty(value = "内链板") + private Long V42; + + /** + * 连接板 + */ + @ExcelProperty(value = "连接板") + private Long V43; + + /** + * 滚轮轴 + */ + @ExcelProperty(value = "滚轮轴") + private Long V44; + + /** + * 隔套 + */ + @ExcelProperty(value = "隔套") + private Long V45; + + /** + * 隔垫 + */ + @ExcelProperty(value = "隔垫") + private Long V46; + + /** + * 滚轮 + */ + @ExcelProperty(value = "滚轮") + private Long V47; + + /** + * 垫圈 + */ + @ExcelProperty(value = "垫圈") + private Long V48; + + /** + * 挡圈 + */ + @ExcelProperty(value = "挡圈") + private Long V49; + + /** + * 滚轮隔套 + */ + @ExcelProperty(value = "滚轮隔套") + private Long V50; + + /** + * 内链板组件 + */ + @ExcelProperty(value = "内链板组件") + private Long V51; + + /** + * 内链板组件 + */ + @ExcelProperty(value = "内链板组件") + private Long V52; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec125rVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec125rVo.java new file mode 100644 index 0000000..4b76072 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec125rVo.java @@ -0,0 +1,282 @@ +package com.ruoyi.system.domain.vo; + +import java.math.BigDecimal; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; + + +/** + * 125R设备规格参数视图对象 device_spec_125r + * + * @author ruoyi + * @date 2025-12-06 + */ +@Data +@ExcelIgnoreUnannotated +public class DeviceSpec125rVo { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 行程 + */ + @ExcelProperty(value = "行程") + private String travelLength; + + /** + * 类型 + */ + @ExcelProperty(value = "类型") + private String itemType; + + /** + * 轴向 + */ + @ExcelProperty(value = "轴向") + private String axialType; + + /** + * 箱体 + */ + @ExcelProperty(value = "箱体") + private String boxType; + + /** + * v1 + */ + @ExcelProperty(value = "v1") + private Long v1; + + /** + * v2 + */ + @ExcelProperty(value = "v2") + private Long v2; + + /** + * v3 + */ + @ExcelProperty(value = "v3") + private Long v3; + + /** + * v4 + */ + @ExcelProperty(value = "v4") + private Long v4; + + /** + * v5 + */ + @ExcelProperty(value = "v5") + private Long v5; + + /** + * v6 + */ + @ExcelProperty(value = "v6") + private Long v6; + + /** + * v7 + */ + @ExcelProperty(value = "v7") + private Long v7; + + /** + * v8 + */ + @ExcelProperty(value = "v8") + private Long v8; + + /** + * g1 + */ + @ExcelProperty(value = "g1") + private BigDecimal g1; + + /** + * v9 + */ + @ExcelProperty(value = "v9") + private Long v9; + + /** + * g2 + */ + @ExcelProperty(value = "g2") + private BigDecimal g2; + + /** + * g3 + */ + @ExcelProperty(value = "g3") + private BigDecimal g3; + + /** + * g4 + */ + @ExcelProperty(value = "g4") + private BigDecimal g4; + + /** + * v10 + */ + @ExcelProperty(value = "v10") + private Long v10; + + /** + * g5 + */ + @ExcelProperty(value = "g5") + private BigDecimal g5; + + /** + * v11 + */ + @ExcelProperty(value = "v11") + private Long v11; + + /** + * v12 + */ + @ExcelProperty(value = "v12") + private Long v12; + + /** + * g6 + */ + @ExcelProperty(value = "g6") + private BigDecimal g6; + + /** + * v13 + */ + @ExcelProperty(value = "v13") + private Long v13; + + /** + * v14 + */ + @ExcelProperty(value = "v14") + private Long v14; + + /** + * g7 + */ + @ExcelProperty(value = "g7") + private BigDecimal g7; + + /** + * v15 + */ + @ExcelProperty(value = "v15") + private Long v15; + + /** + * v16 + */ + @ExcelProperty(value = "v16") + private Long v16; + + /** + * v17 + */ + @ExcelProperty(value = "v17") + private Long v17; + + /** + * v18 + */ + @ExcelProperty(value = "v18") + private Long v18; + + /** + * v19 + */ + @ExcelProperty(value = "v19") + private Long v19; + + /** + * v20 + */ + @ExcelProperty(value = "v20") + private Long v20; + + /** + * v41 + */ + @ExcelProperty(value = "v41") + private Long v41; + + /** + * v42 + */ + @ExcelProperty(value = "v42") + private Long v42; + + /** + * v43 + */ + @ExcelProperty(value = "v43") + private Long v43; + + /** + * v44 + */ + @ExcelProperty(value = "v44") + private Long v44; + + /** + * v45 + */ + @ExcelProperty(value = "v45") + private Long v45; + + /** + * v46 + */ + @ExcelProperty(value = "v46") + private Long v46; + + /** + * v47 + */ + @ExcelProperty(value = "v47") + private Long v47; + + /** + * v48 + */ + @ExcelProperty(value = "v48") + private Long v48; + + /** + * v49 + */ + @ExcelProperty(value = "v49") + private Long v49; + + /** + * v50 + */ + @ExcelProperty(value = "v50") + private Long v50; + + /** + * v51 + */ + @ExcelProperty(value = "v51") + private Long v51; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec150rVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec150rVo.java new file mode 100644 index 0000000..5bb9598 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec150rVo.java @@ -0,0 +1,306 @@ +package com.ruoyi.system.domain.vo; + +import java.math.BigDecimal; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; + + +/** + * 150R设备规格参数视图对象 device_spec_150r + * + * @author ruoyi + * @date 2025-12-06 + */ +@Data +@ExcelIgnoreUnannotated +public class DeviceSpec150rVo { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 行程 + */ + @ExcelProperty(value = "行程") + private String travelLength; + + /** + * 类型 + */ + @ExcelProperty(value = "类型") + private String itemType; + + /** + * 轴向 + */ + @ExcelProperty(value = "轴向") + private String axialType; + + /** + * 箱体 + */ + @ExcelProperty(value = "箱体") + private String boxType; + + /** + * v1 + */ + @ExcelProperty(value = "v1") + private Long v1; + + /** + * v2 + */ + @ExcelProperty(value = "v2") + private Long v2; + + /** + * v3 + */ + @ExcelProperty(value = "v3") + private Long v3; + + /** + * v4 + */ + @ExcelProperty(value = "v4") + private Long v4; + + /** + * v21 + */ + @ExcelProperty(value = "v21") + private Long v21; + + /** + * v22 + */ + @ExcelProperty(value = "v22") + private Long v22; + + /** + * v23 + */ + @ExcelProperty(value = "v23") + private Long v23; + + /** + * v24 + */ + @ExcelProperty(value = "v24") + private Long v24; + + /** + * v5 + */ + @ExcelProperty(value = "v5") + private Long v5; + + /** + * v6 + */ + @ExcelProperty(value = "v6") + private Long v6; + + /** + * v7 + */ + @ExcelProperty(value = "v7") + private Long v7; + + /** + * v8 + */ + @ExcelProperty(value = "v8") + private Long v8; + + /** + * g1 + */ + @ExcelProperty(value = "g1") + private BigDecimal g1; + + /** + * v9 + */ + @ExcelProperty(value = "v9") + private Long v9; + + /** + * g2 + */ + @ExcelProperty(value = "g2") + private BigDecimal g2; + + /** + * g3 + */ + @ExcelProperty(value = "g3") + private BigDecimal g3; + + /** + * g4 + */ + @ExcelProperty(value = "g4") + private BigDecimal g4; + + /** + * v10 + */ + @ExcelProperty(value = "v10") + private Long v10; + + /** + * g5 + */ + @ExcelProperty(value = "g5") + private BigDecimal g5; + + /** + * v11 + */ + @ExcelProperty(value = "v11") + private Long v11; + + /** + * v12 + */ + @ExcelProperty(value = "v12") + private Long v12; + + /** + * g6 + */ + @ExcelProperty(value = "g6") + private BigDecimal g6; + + /** + * v13 + */ + @ExcelProperty(value = "v13") + private Long v13; + + /** + * v14 + */ + @ExcelProperty(value = "v14") + private Long v14; + + /** + * g7 + */ + @ExcelProperty(value = "g7") + private BigDecimal g7; + + /** + * v15 + */ + @ExcelProperty(value = "v15") + private Long v15; + + /** + * v16 + */ + @ExcelProperty(value = "v16") + private Long v16; + + /** + * v17 + */ + @ExcelProperty(value = "v17") + private Long v17; + + /** + * v18 + */ + @ExcelProperty(value = "v18") + private Long v18; + + /** + * v19 + */ + @ExcelProperty(value = "v19") + private Long v19; + + /** + * v20 + */ + @ExcelProperty(value = "v20") + private Long v20; + + /** + * v41 + */ + @ExcelProperty(value = "v41") + private Long v41; + + /** + * v42 + */ + @ExcelProperty(value = "v42") + private Long v42; + + /** + * v43 + */ + @ExcelProperty(value = "v43") + private Long v43; + + /** + * v44 + */ + @ExcelProperty(value = "v44") + private Long v44; + + /** + * v45 + */ + @ExcelProperty(value = "v45") + private Long v45; + + /** + * v46 + */ + @ExcelProperty(value = "v46") + private Long v46; + + /** + * v47 + */ + @ExcelProperty(value = "v47") + private Long v47; + + /** + * v48 + */ + @ExcelProperty(value = "v48") + private Long v48; + + /** + * v49 + */ + @ExcelProperty(value = "v49") + private Long v49; + + /** + * v50 + */ + @ExcelProperty(value = "v50") + private Long v50; + + /** + * v51 + */ + @ExcelProperty(value = "v51") + private Long v51; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec30dVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec30dVo.java new file mode 100644 index 0000000..b931f61 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec30dVo.java @@ -0,0 +1,180 @@ +package com.ruoyi.system.domain.vo; + +import java.math.BigDecimal; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; + + +/** + * device_spec_30D 视图对象 device_spec_30d + * + * @author ruoyi + * @date 2025-12-03 + */ +@Data +@ExcelIgnoreUnannotated +public class DeviceSpec30dVo { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 行程变量 + */ + @ExcelProperty(value = "行程变量") + private String travelLength; + + /** + * 类型 + */ + @ExcelProperty(value = "类型") + private String itemType; + + /** + * 轴向 + */ + @ExcelProperty(value = "轴向") + private String axialType; + + /** + * 箱体 + */ + @ExcelProperty(value = "箱体") + private String boxType; + + /** + * v1 + */ + @ExcelProperty(value = "v1") + private Long v1; + + /** + * v2 + */ + @ExcelProperty(value = "v2") + private Long v2; + + /** + * v3 + */ + @ExcelProperty(value = "v3") + private Long v3; + + /** + * v5 + */ + @ExcelProperty(value = "v5") + private Long v5; + + /** + * v6 + */ + @ExcelProperty(value = "v6") + private Long v6; + + /** + * v8 + */ + @ExcelProperty(value = "v8") + private Long v8; + + /** + * g1 + */ + @ExcelProperty(value = "g1") + private BigDecimal g1; + + /** + * v10 + */ + @ExcelProperty(value = "v10") + private Long v10; + + /** + * g5 + */ + @ExcelProperty(value = "g5") + private BigDecimal g5; + + /** + * g8 + */ + @ExcelProperty(value = "g8") + private BigDecimal g8; + + /** + * v12 + */ + @ExcelProperty(value = "v12") + private Long v12; + + /** + * g6 + */ + @ExcelProperty(value = "g6") + private BigDecimal g6; + + /** + * g9 + */ + @ExcelProperty(value = "g9") + private BigDecimal g9; + + /** + * v41 + */ + @ExcelProperty(value = "v41") + private Long v41; + + /** + * v42 + */ + @ExcelProperty(value = "v42") + private Long v42; + + /** + * v43 + */ + @ExcelProperty(value = "v43") + private Long v43; + + /** + * v44 + */ + @ExcelProperty(value = "v44") + private Long v44; + + /** + * v45 + */ + @ExcelProperty(value = "v45") + private Long v45; + + /** + * v46 + */ + @ExcelProperty(value = "v46") + private Long v46; + + /** + * v47 + */ + @ExcelProperty(value = "v47") + private Long v47; + + /** + * v48 + */ + @ExcelProperty(value = "v48") + private Long v48; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec30sVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec30sVo.java new file mode 100644 index 0000000..e7f6100 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec30sVo.java @@ -0,0 +1,150 @@ +package com.ruoyi.system.domain.vo; + +import java.math.BigDecimal; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; + + +/** + * 30S设备规格参数视图对象 device_spec_30s + * + * @author ruoyi + * @date 2025-12-03 + */ +@Data +@ExcelIgnoreUnannotated +public class DeviceSpec30sVo { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 行程变量 + */ + @ExcelProperty(value = "行程变量") + private String travelLength; + + /** + * 类型 + */ + @ExcelProperty(value = "类型") + private String itemType; + + /** + * 轴向 + */ + @ExcelProperty(value = "轴向") + private String axialType; + + /** + * 箱体 + */ + @ExcelProperty(value = "箱体") + private String boxType; + + /** + * v1 + */ + @ExcelProperty(value = "v1") + private Long v1; + + /** + * v2 + */ + @ExcelProperty(value = "v2") + private Long v2; + + /** + * v3 + */ + @ExcelProperty(value = "v3") + private Long v3; + + /** + * v5 + */ + @ExcelProperty(value = "v5") + private Long v5; + + /** + * v8 + */ + @ExcelProperty(value = "v8") + private Long v8; + + /** + * g1 + */ + @ExcelProperty(value = "g1") + private BigDecimal g1; + + /** + * v10 + */ + @ExcelProperty(value = "v10") + private Long v10; + + /** + * g5 + */ + @ExcelProperty(value = "g5") + private BigDecimal g5; + + /** + * v12 + */ + @ExcelProperty(value = "v12") + private Long v12; + + /** + * g6 + */ + @ExcelProperty(value = "g6") + private BigDecimal g6; + + /** + * v41 + */ + @ExcelProperty(value = "v41") + private Long v41; + + /** + * v42 + */ + @ExcelProperty(value = "v42") + private Long v42; + + /** + * v43 + */ + @ExcelProperty(value = "v43") + private Long v43; + + /** + * v44 + */ + @ExcelProperty(value = "v44") + private Long v44; + + /** + * v45 + */ + @ExcelProperty(value = "v45") + private Long v45; + + /** + * v46 + */ + @ExcelProperty(value = "v46") + private Long v46; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec35rVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec35rVo.java index 86766b6..ae57eff 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec35rVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec35rVo.java @@ -176,5 +176,15 @@ public class DeviceSpec35rVo { @ExcelProperty(value = "35E链板") private Long V46; + /** + * + */ + @ExcelProperty(value = "V47") + private Long V47; + /** + * + */ + @ExcelProperty(value = "V48") + private Long V48; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec40rVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec40rVo.java new file mode 100644 index 0000000..99a18fd --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec40rVo.java @@ -0,0 +1,222 @@ +package com.ruoyi.system.domain.vo; + +import java.math.BigDecimal; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; + + +/** + * 40R设备规格参数视图对象 device_spec_40r + * + * @author ruoyi + * @date 2025-12-03 + */ +@Data +@ExcelIgnoreUnannotated +public class DeviceSpec40rVo { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 行程变量 + */ + @ExcelProperty(value = "行程变量") + private String travelLength; + + /** + * 类型 + */ + @ExcelProperty(value = "类型") + private String itemType; + + /** + * 轴向 + */ + @ExcelProperty(value = "轴向") + private String axialType; + + /** + * 箱体 + */ + @ExcelProperty(value = "箱体") + private String boxType; + + /** + * 行程 + */ + @ExcelProperty(value = "行程") + private Long V1; + + /** + * 设备总长 + */ + @ExcelProperty(value = "设备总长") + private Long V2; + + /** + * 地脚位置1 + */ + @ExcelProperty(value = "地脚位置1") + private Long V3; + + /** + * 箱体装配长度 + */ + @ExcelProperty(value = "箱体装配长度") + private Long V5; + + /** + * 箱体地脚位置1 + */ + @ExcelProperty(value = "箱体地脚位置1") + private Long V6; + + /** + * 铝箱长度1 + */ + @ExcelProperty(value = "铝箱长度1") + private Long V8; + + /** + * 铝箱1重量 + */ + @ExcelProperty(value = "铝箱1重量") + private BigDecimal G1; + + /** + * 铝箱长度2 + */ + @ExcelProperty(value = "铝箱长度2") + private Long V9; + + /** + * 铝箱2重量 + */ + @ExcelProperty(value = "铝箱2重量") + private BigDecimal G2; + + /** + * 导向条长度1 + */ + @ExcelProperty(value = "导向条长度1") + private Long V10; + + /** + * 导向条1单重 + */ + @ExcelProperty(value = "导向条1单重") + private BigDecimal G5; + + /** + * 导向条长度1数量 + */ + @ExcelProperty(value = "导向条长度1数量") + private Long V11; + + /** + * 导向条长度2 + */ + @ExcelProperty(value = "导向条长度2") + private Long V12; + + /** + * 导向条2单重 + */ + @ExcelProperty(value = "导向条2单重") + private BigDecimal G6; + + /** + * 导向条2数量 + */ + @ExcelProperty(value = "导向条2数量") + private Long V13; + + /** + * 导向条长度3 + */ + @ExcelProperty(value = "导向条长度3") + private Long V14; + + /** + * 导向条3单重 + */ + @ExcelProperty(value = "导向条3单重") + private BigDecimal G7; + + /** + * 导向条3数量 + */ + @ExcelProperty(value = "导向条3数量") + private Long V15; + + /** + * 外链板 + */ + @ExcelProperty(value = "外链板") + private Long V41; + + /** + * 内链板 + */ + @ExcelProperty(value = "内链板") + private Long V42; + + /** + * 连接板 + */ + @ExcelProperty(value = "连接板") + private Long V43; + + /** + * 滚轮轴 + */ + @ExcelProperty(value = "滚轮轴") + private Long V44; + + /** + * 隔套 + */ + @ExcelProperty(value = "隔套") + private Long V45; + + /** + * 隔垫 + */ + @ExcelProperty(value = "隔垫") + private Long V46; + + /** + * 滚轮 + */ + @ExcelProperty(value = "滚轮") + private Long V47; + + /** + * 卡簧 + */ + @ExcelProperty(value = "卡簧") + private Long V48; + + /** + * 链套轴 + */ + @ExcelProperty(value = "链套轴") + private Long V49; + + /** + * 链套 + */ + @ExcelProperty(value = "链套") + private Long V50; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec40sVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec40sVo.java new file mode 100644 index 0000000..ad788aa --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec40sVo.java @@ -0,0 +1,240 @@ +package com.ruoyi.system.domain.vo; + +import java.math.BigDecimal; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; + + +/** + * 40S设备规格参数视图对象 device_spec_40s + * + * @author ruoyi + * @date 2025-12-03 + */ +@Data +@ExcelIgnoreUnannotated +public class DeviceSpec40sVo { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 行程变量 + */ + @ExcelProperty(value = "行程变量") + private String travelLength; + + /** + * 类型 + */ + @ExcelProperty(value = "类型") + private String itemType; + + /** + * 轴向 + */ + @ExcelProperty(value = "轴向") + private String axialType; + + /** + * 箱体 + */ + @ExcelProperty(value = "箱体") + private String boxType; + + /** + * 行程 + */ + @ExcelProperty(value = "行程") + private Long V1; + + /** + * 设备总长 + */ + @ExcelProperty(value = "设备总长") + private Long V2; + + /** + * P40SI设备总仓 + */ + @ExcelProperty(value = "P40SI设备总仓") + private Long V22; + + /** + * 地脚位置1 + */ + @ExcelProperty(value = "地脚位置1") + private Long V3; + + /** + * P40SI地脚位置 + */ + @ExcelProperty(value = "P40SI地脚位置") + private Long V23; + + /** + * 箱体装配长度 + */ + @ExcelProperty(value = "箱体装配长度") + private Long V5; + + /** + * 箱体地脚位置1 + */ + @ExcelProperty(value = "箱体地脚位置1") + private Long V6; + + /** + * 铝箱长度1 + */ + @ExcelProperty(value = "铝箱长度1") + private Long V8; + + /** + * 铝箱1重量 + */ + @ExcelProperty(value = "铝箱1重量") + private BigDecimal G1; + + /** + * 铝箱长度2 + */ + @ExcelProperty(value = "铝箱长度2") + private Long V9; + + /** + * 铝箱2重量 + */ + @ExcelProperty(value = "铝箱2重量") + private BigDecimal G2; + + /** + * 导向条长度1 + */ + @ExcelProperty(value = "导向条长度1") + private Long V10; + + /** + * 导向条1单重 + */ + @ExcelProperty(value = "导向条1单重") + private BigDecimal G5; + + /** + * 导向条长度1数量 + */ + @ExcelProperty(value = "导向条长度1数量") + private Long V11; + + /** + * 导向条长度2 + */ + @ExcelProperty(value = "导向条长度2") + private Long V12; + + /** + * 导向条2单重 + */ + @ExcelProperty(value = "导向条2单重") + private BigDecimal G6; + + /** + * 导向条2数量 + */ + @ExcelProperty(value = "导向条2数量") + private Long V13; + + /** + * 导向条长度3 + */ + @ExcelProperty(value = "导向条长度3") + private Long V14; + + /** + * 导向条3单重 + */ + @ExcelProperty(value = "导向条3单重") + private BigDecimal G7; + + /** + * 导向条3数量 + */ + @ExcelProperty(value = "导向条3数量") + private Long V15; + + /** + * 外链板 + */ + @ExcelProperty(value = "外链板") + private Long V41; + + /** + * 内链板 + */ + @ExcelProperty(value = "内链板") + private Long V42; + + /** + * 连接板 + */ + @ExcelProperty(value = "连接板") + private Long V43; + + /** + * 滚轮轴 + */ + @ExcelProperty(value = "滚轮轴") + private Long V44; + + /** + * 隔套 + */ + @ExcelProperty(value = "隔套") + private Long V45; + + /** + * 隔垫 + */ + @ExcelProperty(value = "隔垫") + private Long V46; + + /** + * 滚轮 + */ + @ExcelProperty(value = "滚轮") + private Long V47; + + /** + * 垫圈 + */ + @ExcelProperty(value = "垫圈") + private Long V48; + + /** + * 挡圈 + */ + @ExcelProperty(value = "挡圈") + private Long V49; + + /** + * 滚轮隔套 + */ + @ExcelProperty(value = "滚轮隔套") + private Long V50; + + /** + * 内链板组件 + */ + @ExcelProperty(value = "内链板组件") + private Long V51; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec60rVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec60rVo.java new file mode 100644 index 0000000..9fa1b58 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec60rVo.java @@ -0,0 +1,224 @@ +package com.ruoyi.system.domain.vo; + +import java.math.BigDecimal; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; + +/** + * 60R设备规格参数视图对象 device_spec_60r + * + * @author ruoyi + * @date 2025-12-03 + */ +@Data +@ExcelIgnoreUnannotated +public class DeviceSpec60rVo { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 行程变量 + */ + @ExcelProperty(value = "行程变量") + private String travelLength; + + /** + * 类型 + */ + @ExcelProperty(value = "类型") + private String itemType; + + /** + * 轴向 + */ + @ExcelProperty(value = "轴向") + private String axialType; + + /** + * 箱体 + */ + @ExcelProperty(value = "箱体") + private String boxType; + + /** + * v1 + */ + @ExcelProperty(value = "v1") + private Long v1; + + /** + * v2 + */ + @ExcelProperty(value = "v2") + private Long v2; + + /** + * v3 + */ + @ExcelProperty(value = "v3") + private Long v3; + + /** + * v5 + */ + @ExcelProperty(value = "v5") + private Long v5; + + /** + * v6 + */ + @ExcelProperty(value = "v6") + private Long v6; + + /** + * v8 + */ + @ExcelProperty(value = "v8") + private Long v8; + + /** + * g1 + */ + @ExcelProperty(value = "g1") + private BigDecimal g1; + + /** + * v9 + */ + @ExcelProperty(value = "v9") + private Long v9; + + /** + * g2 + */ + @ExcelProperty(value = "g2") + private BigDecimal g2; + + /** + * v10 + */ + @ExcelProperty(value = "v10") + private Long v10; + + /** + * g5 + */ + @ExcelProperty(value = "g5") + private BigDecimal g5; + + /** + * v11 + */ + @ExcelProperty(value = "v11") + private Long v11; + + /** + * v12 + */ + @ExcelProperty(value = "v12") + private Long v12; + + /** + * g6 + */ + @ExcelProperty(value = "g6") + private BigDecimal g6; + + /** + * v13 + */ + @ExcelProperty(value = "v13") + private Long v13; + + /** + * v14 + */ + @ExcelProperty(value = "v14") + private Long v14; + + /** + * g7 + */ + @ExcelProperty(value = "g7") + private BigDecimal g7; + + /** + * v15 + */ + @ExcelProperty(value = "v15") + private Long v15; + + /** + * v41 + */ + @ExcelProperty(value = "v41") + private Long v41; + + /** + * v42 + */ + @ExcelProperty(value = "v42") + private Long v42; + + /** + * v43 + */ + @ExcelProperty(value = "v43") + private Long v43; + + /** + * v44 + */ + @ExcelProperty(value = "v44") + private Long v44; + + /** + * v45 + */ + @ExcelProperty(value = "v45") + private Long v45; + + /** + * v46 + */ + @ExcelProperty(value = "v46") + private Long v46; + + /** + * v47 + */ + @ExcelProperty(value = "v47") + private Long v47; + + /** + * v48 + */ + @ExcelProperty(value = "v48") + private Long v48; + + /** + * v49 + */ + @ExcelProperty(value = "v49") + private Long v49; + + /** + * v50 + */ + @ExcelProperty(value = "v50") + private Long v50; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec80rVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec80rVo.java new file mode 100644 index 0000000..2ad7eff --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeviceSpec80rVo.java @@ -0,0 +1,228 @@ +package com.ruoyi.system.domain.vo; + +import java.math.BigDecimal; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.annotation.ExcelDictFormat; +import com.ruoyi.common.convert.ExcelDictConvert; +import lombok.Data; + + +/** + * 80R设备规格参数视图对象 device_spec_80r + * + * @author ruoyi + * @date 2025-12-03 + */ +@Data +@ExcelIgnoreUnannotated +public class DeviceSpec80rVo { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 行程变量 + */ + @ExcelProperty(value = "行程变量") + private String travelLength; + + /** + * 类型 + */ + @ExcelProperty(value = "类型") + private String itemType; + + /** + * 轴向 + */ + @ExcelProperty(value = "轴向") + private String axialType; + + /** + * 箱体 + */ + @ExcelProperty(value = "箱体") + private String boxType; + + /** + * v1 + */ + @ExcelProperty(value = "v1") + private Long v1; + + /** + * v2 + */ + @ExcelProperty(value = "v2") + private Long v2; + + /** + * v3 + */ + @ExcelProperty(value = "v3") + private Long v3; + + /** + * v5 + */ + @ExcelProperty(value = "v5") + private Long v5; + + /** + * v6 + */ + @ExcelProperty(value = "v6") + private Long v6; + + /** + * v8 + */ + @ExcelProperty(value = "v8") + private Long v8; + + /** + * g1 + */ + @ExcelProperty(value = "g1") + private BigDecimal g1; + + /** + * v9 + */ + @ExcelProperty(value = "v9") + private Long v9; + + /** + * g2 + */ + @ExcelProperty(value = "g2") + private BigDecimal g2; + + /** + * v10 + */ + @ExcelProperty(value = "v10") + private Long v10; + + /** + * g5 + */ + @ExcelProperty(value = "g5") + private BigDecimal g5; + + /** + * v11 + */ + @ExcelProperty(value = "v11") + private Long v11; + + /** + * v12 + */ + @ExcelProperty(value = "v12") + private Long v12; + + /** + * g6 + */ + @ExcelProperty(value = "g6") + private BigDecimal g6; + + /** + * v13 + */ + @ExcelProperty(value = "v13") + private Long v13; + + /** + * v14 + */ + @ExcelProperty(value = "v14") + private Long v14; + + /** + * g7 + */ + @ExcelProperty(value = "g7") + private BigDecimal g7; + + /** + * v15 + */ + @ExcelProperty(value = "v15") + private Long v15; + + /** + * v41 + */ + @ExcelProperty(value = "v41") + private Long v41; + + /** + * v42 + */ + @ExcelProperty(value = "v42") + private Long v42; + + /** + * v43 + */ + @ExcelProperty(value = "v43") + private Long v43; + + /** + * v44 + */ + @ExcelProperty(value = "v44") + private Long v44; + + /** + * v45 + */ + @ExcelProperty(value = "v45") + private Long v45; + + /** + * v46 + */ + @ExcelProperty(value = "v46") + private Long v46; + + /** + * v47 + */ + @ExcelProperty(value = "v47") + private Long v47; + + /** + * v48 + */ + @ExcelProperty(value = "v48") + private Long v48; + + /** + * v49 + */ + @ExcelProperty(value = "v49") + private Long v49; + + /** + * v50 + */ + @ExcelProperty(value = "v50") + private Long v50; + + /** + * v51 + */ + @ExcelProperty(value = "v51") + private Long v51; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ElectricalMaterialBomVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ElectricalMaterialBomVO.java index 01edf56..36233fc 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ElectricalMaterialBomVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ElectricalMaterialBomVO.java @@ -51,7 +51,7 @@ public class ElectricalMaterialBomVO { /** * 批次数量 */ - @ExcelProperty(value = "批次数量") + @ExcelProperty(value = "本批数量") private String batchQuantity; /** diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/FigureSaveVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/FigureSaveVo.java index dc6ba54..38a4cf7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/FigureSaveVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/FigureSaveVo.java @@ -69,4 +69,15 @@ public class FigureSaveVo { */ @ExcelProperty(value = "关联项目表") private Long pid; + /** + * 轴向 + */ + @ExcelProperty(value = "轴向") + private String axialType; + + /** + * 箱体类型 + */ + @ExcelProperty(value = "箱体类型") + private String boxType; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/KingdeeWorkCenterDataVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/KingdeeWorkCenterDataVo.java index 2754492..fc129a1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/KingdeeWorkCenterDataVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/KingdeeWorkCenterDataVo.java @@ -6,6 +6,8 @@ import com.ruoyi.common.annotation.ExcelDictFormat; import com.ruoyi.common.convert.ExcelDictConvert; import lombok.Data; +import java.math.BigDecimal; + /** * 金蝶工段数据视图对象 kingdee_work_center_data @@ -96,6 +98,15 @@ public class KingdeeWorkCenterDataVo { */ @ExcelProperty(value = "计划完成时间") private String operPlanFinishTime; + /** + * 计划开始时间2 (YYYY-MM-DD) + */ + private String operPlanStartTime2; + + /** + * 计划完成时间2 (YYYY-MM-DD) + */ + private String operPlanFinishTime2; /** * 延迟天数 @@ -107,6 +118,16 @@ public class KingdeeWorkCenterDataVo { */ @ExcelProperty(value = "工作中心") private String workCenter; - + /** + * 汇报数量 + */ + @ExcelProperty(value = "汇报数量") + private BigDecimal FReportQty; + /** + * 工废数量 + * + */ + @ExcelProperty(value = "工废数量") + private BigDecimal FScrapQty; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ProcessOrderProVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ProcessOrderProVo.java index 6ffb6ff..8d87f2a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ProcessOrderProVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ProcessOrderProVo.java @@ -116,6 +116,10 @@ public class ProcessOrderProVo { private String drawingPathUrl; private Date createTime; + /** + * 创建人 + */ + private String createBy; /** * 工艺上传日志 */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/jdmain/rouplan/FSubEntity.java b/ruoyi-system/src/main/java/com/ruoyi/system/jdmain/rouplan/FSubEntity.java index 6b24249..8f52c22 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/jdmain/rouplan/FSubEntity.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/jdmain/rouplan/FSubEntity.java @@ -18,4 +18,9 @@ public class FSubEntity { @JsonProperty("FOperNumber") private Long FOperNumber; + /* + 入库仓库 + */ + @JsonProperty("F_HBYT_RKCK.FName") + private String rkckName; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/jdmain/rouplan/FidEntryIdDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/jdmain/rouplan/FidEntryIdDTO.java new file mode 100644 index 0000000..7a45b87 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/jdmain/rouplan/FidEntryIdDTO.java @@ -0,0 +1,27 @@ +package com.ruoyi.system.jdmain.rouplan; + +import lombok.Data; + +@Data +public class FidEntryIdDTO { + private Long fid; + private Long fEntryId; + private String warehouseNumber; + public FidEntryIdDTO(Long fid, Long fEntryId, String warehouseNumber) { + this.fid = fid; + this.fEntryId = fEntryId; + this.warehouseNumber = warehouseNumber; + } + + public Long getFid() { + return fid; + } + + public Long getFEntryId() { + return fEntryId; + } + + public String getWarehouseNumber() { + return warehouseNumber; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/jdmain/rouplan/Model.java b/ruoyi-system/src/main/java/com/ruoyi/system/jdmain/rouplan/Model.java index 7758964..1d4707c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/jdmain/rouplan/Model.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/jdmain/rouplan/Model.java @@ -18,7 +18,6 @@ public class Model { private String FProcessId_number; @JsonProperty("FMONumber") private String FMONumber; - @JsonProperty("FPlanFinishTime") private Date FPlanFinishTime; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec100rMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec100rMapper.java new file mode 100644 index 0000000..887463e --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec100rMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.system.mapper; + +import com.ruoyi.system.domain.DeviceSpec100r; +import com.ruoyi.system.domain.vo.DeviceSpec100rVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 100R设备规格参数Mapper接口 + * + * @author ruoyi + * @date 2025-12-03 + */ +public interface DeviceSpec100rMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec125rMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec125rMapper.java new file mode 100644 index 0000000..e66bd14 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec125rMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.system.mapper; + +import com.ruoyi.system.domain.DeviceSpec125r; +import com.ruoyi.system.domain.vo.DeviceSpec125rVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 125R设备规格参数Mapper接口 + * + * @author ruoyi + * @date 2025-12-06 + */ +public interface DeviceSpec125rMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec150rMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec150rMapper.java new file mode 100644 index 0000000..db5d5be --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec150rMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.system.mapper; + +import com.ruoyi.system.domain.DeviceSpec150r; +import com.ruoyi.system.domain.vo.DeviceSpec150rVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 150R设备规格参数Mapper接口 + * + * @author ruoyi + * @date 2025-12-06 + */ +public interface DeviceSpec150rMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec30dMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec30dMapper.java new file mode 100644 index 0000000..3874858 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec30dMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.system.mapper; + +import com.ruoyi.system.domain.DeviceSpec30d; +import com.ruoyi.system.domain.vo.DeviceSpec30dVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * device_spec_30D Mapper接口 + * + * @author ruoyi + * @date 2025-12-03 + */ +public interface DeviceSpec30dMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec30sMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec30sMapper.java new file mode 100644 index 0000000..c7f0361 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec30sMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.system.mapper; + +import com.ruoyi.system.domain.DeviceSpec30s; +import com.ruoyi.system.domain.vo.DeviceSpec30sVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 30S设备规格参数Mapper接口 + * + * @author ruoyi + * @date 2025-12-03 + */ +public interface DeviceSpec30sMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec40rMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec40rMapper.java new file mode 100644 index 0000000..5893c2b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec40rMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.system.mapper; + +import com.ruoyi.system.domain.DeviceSpec40r; +import com.ruoyi.system.domain.vo.DeviceSpec40rVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 40R设备规格参数Mapper接口 + * + * @author ruoyi + * @date 2025-12-03 + */ +public interface DeviceSpec40rMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec40sMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec40sMapper.java new file mode 100644 index 0000000..26e0bcc --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec40sMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.system.mapper; + +import com.ruoyi.system.domain.DeviceSpec40s; +import com.ruoyi.system.domain.vo.DeviceSpec40sVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 40S设备规格参数Mapper接口 + * + * @author ruoyi + * @date 2025-12-03 + */ +public interface DeviceSpec40sMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec60rMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec60rMapper.java new file mode 100644 index 0000000..e47308d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec60rMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.system.mapper; + +import com.ruoyi.system.domain.DeviceSpec60r; +import com.ruoyi.system.domain.vo.DeviceSpec60rVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 60R设备规格参数Mapper接口 + * + * @author ruoyi + * @date 2025-12-03 + */ +public interface DeviceSpec60rMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec80rMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec80rMapper.java new file mode 100644 index 0000000..850e83b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/DeviceSpec80rMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.system.mapper; + +import com.ruoyi.system.domain.DeviceSpec80r; +import com.ruoyi.system.domain.vo.DeviceSpec80rVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 80R设备规格参数Mapper接口 + * + * @author ruoyi + * @date 2025-12-03 + */ +public interface DeviceSpec80rMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/runner/JdUtil.java b/ruoyi-system/src/main/java/com/ruoyi/system/runner/JdUtil.java index 1db5393..174c15d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/runner/JdUtil.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/runner/JdUtil.java @@ -4,10 +4,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.gson.Gson; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; +import com.google.gson.*; import com.kingdee.bos.webapi.entity.RepoRet; import com.kingdee.bos.webapi.sdk.K3CloudApi; import com.ruoyi.common.core.domain.R; @@ -17,6 +14,7 @@ import com.ruoyi.system.domain.BomDetails; import com.ruoyi.system.domain.PartCost; import com.ruoyi.system.domain.dto.*; import com.ruoyi.system.domain.vo.*; +import com.ruoyi.system.jdmain.rouplan.FidEntryIdDTO; import com.ruoyi.system.jdmain.rouplan.Model; import org.aspectj.bridge.MessageUtil; import org.slf4j.Logger; @@ -2055,8 +2053,9 @@ public class JdUtil { return null; // 如果没有找到,返回 null } - - //保存更新生产订单的开工时间 + /** + * 保存更新生产订单的开工时间 + */ public static String updateOrder(JdHuoZhu jdHuoZhu, Model numDTO, Date xuStartTime, Date xuEndTime) throws Exception { String planStartDate = dateFormat.format(xuStartTime); String planFinishDate = dateFormat.format(xuEndTime); @@ -3332,4 +3331,218 @@ public class JdUtil { } return Collections.emptyList(); } + + /** + * 获取此令号下的所有物料编码 + * @param productionOrderNo + * @return + */ + public static List getOrderNumberCollection(String productionOrderNo) { + K3CloudApi client = new K3CloudApi(); + // 请求参数,要求为json字符串 + JsonObject json = new JsonObject(); + json.addProperty("FormId", "PRD_MO"); + json.addProperty("FieldKeys", "FMaterialId.FNumber"); + JsonArray filterString = new JsonArray(); + JsonObject filterObject = new JsonObject(); + filterObject.addProperty("FieldName", "F_HBYT_SCLH"); + filterObject.addProperty("Compare", "67"); + filterObject.addProperty("Value", productionOrderNo); + filterObject.addProperty("Left", ""); + filterObject.addProperty("Right", ""); + filterObject.addProperty("Logic", 0); + filterString.add(filterObject); + + json.add("FilterString", filterString); + json.addProperty("OrderString", ""); + json.addProperty("TopRowCount", 0); + json.addProperty("StartRow", 0); + json.addProperty("Limit", 2000); + json.addProperty("SubSystemId", ""); + + String jsonData = json.toString(); + try { + String resultJson = String.valueOf(client.billQuery(jsonData)); + JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); + List list = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + JsonObject jsonObject = jsonArray.get(i).getAsJsonObject(); + if (jsonObject.has("FMaterialId.FNumber")) { + list.add(jsonObject.get("FMaterialId.FNumber").getAsString()); + } + } + return list; + } catch (Exception e) { + log.error("调用接口时发生异常: " + e.getMessage(), e); + } + return Collections.emptyList(); + } + /** + * 获取此令号下的采购申请单对应的所有物料编码 + * @param productionOrderNo + * @return + */ + public static List getCaiGouOrderNumberList(String productionOrderNo) { + K3CloudApi client = new K3CloudApi(); + // 请求参数,要求为json字符串 + JsonObject json = new JsonObject(); + json.addProperty("FormId", "PUR_Requisition"); + json.addProperty("FieldKeys", "FMaterialId.FNumber"); + JsonArray filterString = new JsonArray(); + JsonObject filterObject = new JsonObject(); + filterObject.addProperty("FieldName", "F_UCHN_Text"); + filterObject.addProperty("Compare", "67"); + filterObject.addProperty("Value", productionOrderNo); + filterObject.addProperty("Left", ""); + filterObject.addProperty("Right", ""); + filterObject.addProperty("Logic", 0); + filterString.add(filterObject); + json.add("FilterString", filterString); + json.addProperty("OrderString", ""); + json.addProperty("TopRowCount", 0); + json.addProperty("StartRow", 0); + json.addProperty("Limit", 2000); + json.addProperty("SubSystemId", ""); + + String jsonData = json.toString(); + try { + String resultJson = String.valueOf(client.billQuery(jsonData)); + JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); + List list = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + JsonObject jsonObject = jsonArray.get(i).getAsJsonObject(); + if (jsonObject.has("FMaterialId.FNumber")) { + list.add(jsonObject.get("FMaterialId.FNumber").getAsString()); + } + } + return list; + } catch (Exception e) { + log.error("调用接口时发生异常: " + e.getMessage(), e); + } + return Collections.emptyList(); + } + public static String updateOrder2(JdHuoZhu jdHuoZhu, String cangKuNum) throws Exception { + + K3CloudApi api = new K3CloudApi(false); + JsonObject json = new JsonObject(); + + JsonArray needUpDateFields = new JsonArray(); + needUpDateFields.add("FID"); + needUpDateFields.add("F_HBYT_RKCK.FName"); + needUpDateFields.add("FTreeEntity_FENTRYID"); + json.add("NeedUpDateFields", needUpDateFields); + + json.addProperty("IsDeleteEntry", "false"); + + JsonObject model = new JsonObject(); + model.addProperty("FID", jdHuoZhu.getFID()); + + JsonArray fTreeEntity = new JsonArray(); + JsonObject fTreeEntityItem = new JsonObject(); + fTreeEntityItem.addProperty("F_HBYT_RKCK.FName", cangKuNum); + fTreeEntityItem.addProperty("FENTRYID", jdHuoZhu.getFTreeEntityFENTRYID()); + fTreeEntity.add(fTreeEntityItem); + model.add("FTreeEntity", fTreeEntity); + + json.add("Model", model); + + // Gson 自己序列化自己 + String data = json.toString(); + System.out.println(data); + + String result = api.save("PRD_MO", data); + + Gson gson = new Gson(); + RepoRet sRet = gson.fromJson(result, RepoRet.class); + + if (sRet.isSuccessfully()) { + return "生产订单保存成功"; + } else { + return "生产订单保存失败:" + gson.toJson(sRet.getResult()); + } + } + + public static String updateCgOrder1(List list, String cangKuNum) throws Exception { + + K3CloudApi api = new K3CloudApi(false); + JsonObject json = new JsonObject(); + + JsonArray needUpDateFields = new JsonArray(); + needUpDateFields.add("FID"); + needUpDateFields.add("F_HBYT_RKCK.FName"); + needUpDateFields.add("FTreeEntity_FENTRYID"); + json.add("NeedUpDateFields", needUpDateFields); + + json.addProperty("IsDeleteEntry", "false"); + + JsonObject model = new JsonObject(); + model.addProperty("FID", jdHuoZhu.getFID()); + + JsonArray fTreeEntity = new JsonArray(); + JsonObject fTreeEntityItem = new JsonObject(); + fTreeEntityItem.addProperty("F_HBYT_RKCK.FName", cangKuNum); + fTreeEntityItem.addProperty("FENTRYID", jdHuoZhu.getFTreeEntityFENTRYID()); + fTreeEntity.add(fTreeEntityItem); + model.add("FTreeEntity", fTreeEntity); + + json.add("Model", model); + + // Gson 自己序列化自己 + String data = json.toString(); + System.out.println(data); + + String result = api.save("PRD_MO", data); + + Gson gson = new Gson(); + RepoRet sRet = gson.fromJson(result, RepoRet.class); + + if (sRet.isSuccessfully()) { + return "生产订单保存成功"; + } else { + return "生产订单保存失败:" + gson.toJson(sRet.getResult()); + } + } + /* + + */ + public static List getCaiGouOrderNumberList(String productionOrderNo) { + K3CloudApi client = new K3CloudApi(); + // 请求参数,要求为json字符串 + JsonObject json = new JsonObject(); + json.addProperty("FormId", "PUR_Requisition"); + json.addProperty("FieldKeys", "FMaterialId.FNumber"); + JsonArray filterString = new JsonArray(); + JsonObject filterObject = new JsonObject(); + filterObject.addProperty("FieldName", "F_UCHN_Text"); + filterObject.addProperty("Compare", "67"); + filterObject.addProperty("Value", productionOrderNo); + filterObject.addProperty("Left", ""); + filterObject.addProperty("Right", ""); + filterObject.addProperty("Logic", 0); + filterString.add(filterObject); + json.add("FilterString", filterString); + json.addProperty("OrderString", ""); + json.addProperty("TopRowCount", 0); + json.addProperty("StartRow", 0); + json.addProperty("Limit", 2000); + json.addProperty("SubSystemId", ""); + + String jsonData = json.toString(); + try { + String resultJson = String.valueOf(client.billQuery(jsonData)); + JsonArray jsonArray = new Gson().fromJson(resultJson, JsonArray.class); + List list = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + JsonObject jsonObject = jsonArray.get(i).getAsJsonObject(); + if (jsonObject.has("FMaterialId.FNumber")) { + list.add(jsonObject.get("FMaterialId.FNumber").getAsString()); + } + } + return list; + } catch (Exception e) { + log.error("调用接口时发生异常: " + e.getMessage(), e); + } + return Collections.emptyList(); + } + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/runner/updatePcessPlanConver.java b/ruoyi-system/src/main/java/com/ruoyi/system/runner/updatePcessPlanConver.java index 4b49deb..2e683a1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/runner/updatePcessPlanConver.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/runner/updatePcessPlanConver.java @@ -25,30 +25,25 @@ public class updatePcessPlanConver { subEntity.setFDetailID(numDTO.getFEntity().get(0).getFSubEntity().get(0).getFDetailID()); // 确保获取正确的 FDetailID subEntity.setFOperPlanStartTime(processRoute.getXuStartTime()); subEntity.setFOperPlanFinishTime(processRoute.getXuEndTime()); - // 创建 Entity 对象并设置字段 FEntity entity = new FEntity(); entity.setFEntryID(numDTO.getFEntity().get(0).getFEntryID()); entity.setFSeqNumber(numDTO.getFEntity().get(0).getFSeqNumber()); entity.setFSeqName(numDTO.getFEntity().get(0).getFSeqName()); - // 将 SubEntity 添加到 Entity 的 FSubEntity 列表中 List subEntities = new ArrayList<>(); subEntities.add(subEntity); entity.setFSubEntity(subEntities); - // 创建 Model 对象并设置字段 Model model = new Model(); model.setFID(numDTO.getFID()); model.setFPlanStartTime(processTimeInfo.getTenthProcessStartTime()); model.setFPlanFinishTime(processTimeInfo.getLastProcessEndTime()); - // 将 Entity 添加到 Model 的 FEntity 列表中 List entities = new ArrayList<>(); entities.add(entity); model.setFEntity(entities); - // 创建 MainModel 并设置字段 MainModel mainModel = new MainModel(); List needUpDateFields = Arrays.asList( @@ -113,7 +108,7 @@ public class updatePcessPlanConver { //对返回结果进行解析和校验 repoRet = gson.fromJson(resultJson, RepoRet.class); if (repoRet.getResult().getResponseStatus().isIsSuccess()) { - System.out.printf("接口返回结果: %s%n", gson.toJson(repoRet.getResult())); + System.out.printf("接口返回结果====================》: %s%n", gson.toJson(repoRet.getResult())); } else { fail("接口返回结果: " + gson.toJson(repoRet.getResult().getResponseStatus().getErrors().get(1))); } @@ -125,5 +120,42 @@ public class updatePcessPlanConver { return repoRet; } + public static RepoRet updatePcessPlan2(List numDTO) { + + RepoRet repoRet = null; + for (Model model : numDTO) { + MainModel mainModel = new MainModel(); + List needUpDateFields = Arrays.asList( + "FEntity", "FSubEntity", "F_HBYT_RKCK.FName" + ); + mainModel.setNeedUpDateFields(needUpDateFields); + mainModel.setDeleteEntry(false); + mainModel.setModel(model); + // 将对象转换为 JSON + Gson gson1 = new GsonBuilder().setPrettyPrinting().create(); + K3CloudApi client = new K3CloudApi(); + String jsonOutput = gson1.toJson(mainModel); + repoRet = null; + try { + //业务对象标识工序计划表 + String formId = "SFC_OperationPlanning"; + //调用接口 + String resultJson = client.save(formId, jsonOutput); + //用于记录结果 + Gson gson = new Gson(); + //对返回结果进行解析和校验 + repoRet = gson.fromJson(resultJson, RepoRet.class); + if (repoRet.getResult().getResponseStatus().isIsSuccess()) { + System.out.printf("接口返回结果====================》: %s%n", gson.toJson(repoRet.getResult())); + } else { + fail("接口返回结果: " + gson.toJson(repoRet.getResult().getResponseStatus().getErrors().get(1))); + } + } catch (Exception e) { + fail(e.getMessage()); + return repoRet; + } + } + return repoRet; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec100rService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec100rService.java new file mode 100644 index 0000000..d1f482b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec100rService.java @@ -0,0 +1,49 @@ +package com.ruoyi.system.service; + +import com.ruoyi.system.domain.DeviceSpec100r; +import com.ruoyi.system.domain.vo.DeviceSpec100rVo; +import com.ruoyi.system.domain.bo.DeviceSpec100rBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 100R设备规格参数Service接口 + * + * @author ruoyi + * @date 2025-12-03 + */ +public interface IDeviceSpec100rService { + + /** + * 查询100R设备规格参数 + */ + DeviceSpec100rVo queryById(Long id); + + /** + * 查询100R设备规格参数列表 + */ + TableDataInfo queryPageList(DeviceSpec100rBo bo, PageQuery pageQuery); + + /** + * 查询100R设备规格参数列表 + */ + List queryList(DeviceSpec100rBo bo); + + /** + * 新增100R设备规格参数 + */ + Boolean insertByBo(DeviceSpec100rBo bo); + + /** + * 修改100R设备规格参数 + */ + Boolean updateByBo(DeviceSpec100rBo bo); + + /** + * 校验并批量删除100R设备规格参数信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec125rService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec125rService.java new file mode 100644 index 0000000..054f99e --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec125rService.java @@ -0,0 +1,49 @@ +package com.ruoyi.system.service; + +import com.ruoyi.system.domain.DeviceSpec125r; +import com.ruoyi.system.domain.vo.DeviceSpec125rVo; +import com.ruoyi.system.domain.bo.DeviceSpec125rBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 125R设备规格参数Service接口 + * + * @author ruoyi + * @date 2025-12-06 + */ +public interface IDeviceSpec125rService { + + /** + * 查询125R设备规格参数 + */ + DeviceSpec125rVo queryById(Long id); + + /** + * 查询125R设备规格参数列表 + */ + TableDataInfo queryPageList(DeviceSpec125rBo bo, PageQuery pageQuery); + + /** + * 查询125R设备规格参数列表 + */ + List queryList(DeviceSpec125rBo bo); + + /** + * 新增125R设备规格参数 + */ + Boolean insertByBo(DeviceSpec125rBo bo); + + /** + * 修改125R设备规格参数 + */ + Boolean updateByBo(DeviceSpec125rBo bo); + + /** + * 校验并批量删除125R设备规格参数信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec150rService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec150rService.java new file mode 100644 index 0000000..3ece96d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec150rService.java @@ -0,0 +1,49 @@ +package com.ruoyi.system.service; + +import com.ruoyi.system.domain.DeviceSpec150r; +import com.ruoyi.system.domain.vo.DeviceSpec150rVo; +import com.ruoyi.system.domain.bo.DeviceSpec150rBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 150R设备规格参数Service接口 + * + * @author ruoyi + * @date 2025-12-06 + */ +public interface IDeviceSpec150rService { + + /** + * 查询150R设备规格参数 + */ + DeviceSpec150rVo queryById(Long id); + + /** + * 查询150R设备规格参数列表 + */ + TableDataInfo queryPageList(DeviceSpec150rBo bo, PageQuery pageQuery); + + /** + * 查询150R设备规格参数列表 + */ + List queryList(DeviceSpec150rBo bo); + + /** + * 新增150R设备规格参数 + */ + Boolean insertByBo(DeviceSpec150rBo bo); + + /** + * 修改150R设备规格参数 + */ + Boolean updateByBo(DeviceSpec150rBo bo); + + /** + * 校验并批量删除150R设备规格参数信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec30dService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec30dService.java new file mode 100644 index 0000000..8ac8659 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec30dService.java @@ -0,0 +1,49 @@ +package com.ruoyi.system.service; + +import com.ruoyi.system.domain.DeviceSpec30d; +import com.ruoyi.system.domain.vo.DeviceSpec30dVo; +import com.ruoyi.system.domain.bo.DeviceSpec30dBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * device_spec_30D Service接口 + * + * @author ruoyi + * @date 2025-12-03 + */ +public interface IDeviceSpec30dService { + + /** + * 查询device_spec_30D + */ + DeviceSpec30dVo queryById(Long id); + + /** + * 查询device_spec_30D 列表 + */ + TableDataInfo queryPageList(DeviceSpec30dBo bo, PageQuery pageQuery); + + /** + * 查询device_spec_30D 列表 + */ + List queryList(DeviceSpec30dBo bo); + + /** + * 新增device_spec_30D + */ + Boolean insertByBo(DeviceSpec30dBo bo); + + /** + * 修改device_spec_30D + */ + Boolean updateByBo(DeviceSpec30dBo bo); + + /** + * 校验并批量删除device_spec_30D 信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec30sService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec30sService.java new file mode 100644 index 0000000..33550bf --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec30sService.java @@ -0,0 +1,49 @@ +package com.ruoyi.system.service; + +import com.ruoyi.system.domain.DeviceSpec30s; +import com.ruoyi.system.domain.vo.DeviceSpec30sVo; +import com.ruoyi.system.domain.bo.DeviceSpec30sBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 30S设备规格参数Service接口 + * + * @author ruoyi + * @date 2025-12-03 + */ +public interface IDeviceSpec30sService { + + /** + * 查询30S设备规格参数 + */ + DeviceSpec30sVo queryById(Long id); + + /** + * 查询30S设备规格参数列表 + */ + TableDataInfo queryPageList(DeviceSpec30sBo bo, PageQuery pageQuery); + + /** + * 查询30S设备规格参数列表 + */ + List queryList(DeviceSpec30sBo bo); + + /** + * 新增30S设备规格参数 + */ + Boolean insertByBo(DeviceSpec30sBo bo); + + /** + * 修改30S设备规格参数 + */ + Boolean updateByBo(DeviceSpec30sBo bo); + + /** + * 校验并批量删除30S设备规格参数信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec40rService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec40rService.java new file mode 100644 index 0000000..5537133 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec40rService.java @@ -0,0 +1,49 @@ +package com.ruoyi.system.service; + +import com.ruoyi.system.domain.DeviceSpec40r; +import com.ruoyi.system.domain.vo.DeviceSpec40rVo; +import com.ruoyi.system.domain.bo.DeviceSpec40rBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 40R设备规格参数Service接口 + * + * @author ruoyi + * @date 2025-12-03 + */ +public interface IDeviceSpec40rService { + + /** + * 查询40R设备规格参数 + */ + DeviceSpec40rVo queryById(Long id); + + /** + * 查询40R设备规格参数列表 + */ + TableDataInfo queryPageList(DeviceSpec40rBo bo, PageQuery pageQuery); + + /** + * 查询40R设备规格参数列表 + */ + List queryList(DeviceSpec40rBo bo); + + /** + * 新增40R设备规格参数 + */ + Boolean insertByBo(DeviceSpec40rBo bo); + + /** + * 修改40R设备规格参数 + */ + Boolean updateByBo(DeviceSpec40rBo bo); + + /** + * 校验并批量删除40R设备规格参数信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec40sService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec40sService.java new file mode 100644 index 0000000..a48b9bc --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec40sService.java @@ -0,0 +1,49 @@ +package com.ruoyi.system.service; + +import com.ruoyi.system.domain.DeviceSpec40s; +import com.ruoyi.system.domain.vo.DeviceSpec40sVo; +import com.ruoyi.system.domain.bo.DeviceSpec40sBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 40S设备规格参数Service接口 + * + * @author ruoyi + * @date 2025-12-03 + */ +public interface IDeviceSpec40sService { + + /** + * 查询40S设备规格参数 + */ + DeviceSpec40sVo queryById(Long id); + + /** + * 查询40S设备规格参数列表 + */ + TableDataInfo queryPageList(DeviceSpec40sBo bo, PageQuery pageQuery); + + /** + * 查询40S设备规格参数列表 + */ + List queryList(DeviceSpec40sBo bo); + + /** + * 新增40S设备规格参数 + */ + Boolean insertByBo(DeviceSpec40sBo bo); + + /** + * 修改40S设备规格参数 + */ + Boolean updateByBo(DeviceSpec40sBo bo); + + /** + * 校验并批量删除40S设备规格参数信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec60rService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec60rService.java new file mode 100644 index 0000000..93f2a97 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec60rService.java @@ -0,0 +1,49 @@ +package com.ruoyi.system.service; + +import com.ruoyi.system.domain.DeviceSpec60r; +import com.ruoyi.system.domain.vo.DeviceSpec60rVo; +import com.ruoyi.system.domain.bo.DeviceSpec60rBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 60R设备规格参数Service接口 + * + * @author ruoyi + * @date 2025-12-03 + */ +public interface IDeviceSpec60rService { + + /** + * 查询60R设备规格参数 + */ + DeviceSpec60rVo queryById(Long id); + + /** + * 查询60R设备规格参数列表 + */ + TableDataInfo queryPageList(DeviceSpec60rBo bo, PageQuery pageQuery); + + /** + * 查询60R设备规格参数列表 + */ + List queryList(DeviceSpec60rBo bo); + + /** + * 新增60R设备规格参数 + */ + Boolean insertByBo(DeviceSpec60rBo bo); + + /** + * 修改60R设备规格参数 + */ + Boolean updateByBo(DeviceSpec60rBo bo); + + /** + * 校验并批量删除60R设备规格参数信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec80rService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec80rService.java new file mode 100644 index 0000000..6a3a50e --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IDeviceSpec80rService.java @@ -0,0 +1,49 @@ +package com.ruoyi.system.service; + +import com.ruoyi.system.domain.DeviceSpec80r; +import com.ruoyi.system.domain.vo.DeviceSpec80rVo; +import com.ruoyi.system.domain.bo.DeviceSpec80rBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 80R设备规格参数Service接口 + * + * @author ruoyi + * @date 2025-12-03 + */ +public interface IDeviceSpec80rService { + + /** + * 查询80R设备规格参数 + */ + DeviceSpec80rVo queryById(Long id); + + /** + * 查询80R设备规格参数列表 + */ + TableDataInfo queryPageList(DeviceSpec80rBo bo, PageQuery pageQuery); + + /** + * 查询80R设备规格参数列表 + */ + List queryList(DeviceSpec80rBo bo); + + /** + * 新增80R设备规格参数 + */ + Boolean insertByBo(DeviceSpec80rBo bo); + + /** + * 修改80R设备规格参数 + */ + Boolean updateByBo(DeviceSpec80rBo bo); + + /** + * 校验并批量删除80R设备规格参数信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IProcessOrderProService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IProcessOrderProService.java index 2ebeefc..6df141d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IProcessOrderProService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IProcessOrderProService.java @@ -9,6 +9,7 @@ import com.ruoyi.system.domain.bo.FigureSaveBo; import com.ruoyi.system.domain.dto.ProcessRouteExcelDTO; import com.ruoyi.system.domain.dto.ProcessRoutePushResultDTO; import com.ruoyi.system.domain.dto.ProcessRouteXuDTO; +import com.ruoyi.system.domain.dto.excuteDrawing.RigidChainModelDTO; import com.ruoyi.system.domain.vo.OverdueProjectVo; import com.ruoyi.system.domain.vo.ProcessOrderProVo; import com.ruoyi.system.domain.bo.ProcessOrderProBo; @@ -16,6 +17,7 @@ import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.system.domain.vo.ProductionOrderVo; import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import java.util.Collection; import java.util.List; @@ -67,7 +69,7 @@ public interface IProcessOrderProService { void batchUpdateProjectTimeRanges(); List selectByProjectNumbers(Set routeDescSet); - void addProduct(FigureSaveBo bo, ProcessOrderProBo orderPro); + void addProduct( RigidChainModelDTO orderPro); String executDrawing(ProcessOrderProBo orderPro); @@ -85,4 +87,6 @@ public interface IProcessOrderProService { List getRouteAndBomDetail(List routlist,List processDataList,ProcessOrderPro orderPro); R getRouteLog(Long id) throws JsonProcessingException; + + SseEmitter startDrawingSse(Long id); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IProcessRouteService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IProcessRouteService.java index 81df52b..7ee9796 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IProcessRouteService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IProcessRouteService.java @@ -149,4 +149,8 @@ public interface IProcessRouteService { //根据令号和物料编码 查询工艺路线 ProcessRoute getProcessRoutesXuTime(String productionOrderNo, String materialCode,String xu); + + List updateProductionOrders(String rooteProdet,String cangKuNum) throws Exception; + + List updateCgOrders(String rooteProdet, String cangKuNum) throws Exception; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IProductionOrderService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IProductionOrderService.java index ec9954c..3d4ee71 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IProductionOrderService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IProductionOrderService.java @@ -58,4 +58,8 @@ public interface IProductionOrderService { Boolean executDrawing(ProcessOrderProBo orderPro); List selectByProCode(String productionOrderNo); + /** + * 是否属于外购件 + */ + Boolean isPurchas(String proCode,String materialCode); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/MssqlQueryService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/MssqlQueryService.java new file mode 100644 index 0000000..372f183 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/MssqlQueryService.java @@ -0,0 +1,139 @@ +package com.ruoyi.system.service; + +import com.baomidou.dynamic.datasource.annotation.DS; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.system.domain.bo.KingdeeWorkCenterDataBo; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Service +public class MssqlQueryService { + + private final JdbcTemplate jdbcTemplate; + + public MssqlQueryService(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + @DS("sqlserver") + public List> queryForList(String sql) { + return jdbcTemplate.queryForList(sql); + } + + @DS("sqlserver") + public List getKingdeeProduceData(String workCenterName) { + String sql = "select t8.FBillNo as MoBillNo,t8.F_HBYT_SCLH as MoOrderNo, \n" + + " t5.FNumber as FMaterialNumber,t6.FName as FMaterialName, \n" + + " t3.FOperQty,t4.FTransInQty,t4.FTransOutQty, \n" + + " t4.FReportQty as FReportQty, \n" + + " t4.FScrapQty as FScrapQty, \n" + + " case when FTransOutQty = 0 and FTransInQty > 0 \n" + + " \t then '未转出' \n" + + " \t when FTransOutQty = 0 and FTransInQty = 0 \n" + + " \t then '未转入' \n" + + " \t when FTransOutQty > 0 and FTransInQty > 0 \n" + + " \t then '已转出' \n" + + " end as FMaterialStatus, \n" + + " t3.FOperNumber,t7.FName as FProcessName, \n" + + " SUBSTRING(CONVERT(varchar,t3.FOperPlanStartTime,23),6,8) as FOperPlanStartTime, \n" + + " SUBSTRING(CONVERT(varchar,t3.FOperPlanFinishTime,23),6,8) as FOperPlanFinishTime, \n" + + " CONVERT(varchar,t3.FOperPlanStartTime,23) as FOperPlanStartTime2, \n" + + " CONVERT(varchar,t3.FOperPlanFinishTime,23) as FOperPlanFinishTime2, \n" + + " DATEDIFF(day,t3.FOperPlanFinishTime,GETDATE()) as FDelayDays, \n" + + " t9.FName as WorkCenterName \n" + + " from T_SFC_OPERPLANNING t1 \n" + + " inner join T_SFC_OPERPLANNINGSEQ t2 on t1.FID = t2.FID \n" + + " inner join T_SFC_OPERPLANNINGDETAIL t3 on t2.FENTRYID = t3.FENTRYID \n" + + " inner join T_SFC_OPERPLANNINGDETAIL_B t4 on t3.FDETAILID = t4.FDETAILID \n" + + " inner join T_BD_MATERIAL t5 on t1.FProductId = t5.FMaterialId \n" + + " inner join T_BD_MATERIAL_L t6 on t1.FProductId = t6.FMaterialId \n" + + " inner join T_ENG_PROCESS_L t7 on t3.FProcessId = t7.FID \n" + + " left join T_PRD_MO t8 on t1.FMoId = t8.FID \n" + + " inner join T_ENG_WORKCENTER_L t9 on t3.FWorkCenterId = t9.FID \n" + + " where t1.FDOCUMENTSTATUS = 'C' and (FOperStatus =2 or FOperStatus =3 or FOperStatus =4) \n" + + " and t8.F_HBYT_SCLH not like '%YF%'"; + + List> resultList; + if (StringUtils.isNotEmpty(workCenterName)) { + sql += " and t9.FName = ?"; + resultList = jdbcTemplate.queryForList(sql, workCenterName); + } else { + resultList = jdbcTemplate.queryForList(sql); + } + + List boList = new ArrayList<>(); + for (Map row : resultList) { + KingdeeWorkCenterDataBo bo = new KingdeeWorkCenterDataBo(); + bo.setMoBillNo(getString(row, "MoBillNo")); + bo.setMoOrderNo(getString(row, "MoOrderNo")); + bo.setMaterialNumber(getString(row, "FMaterialNumber")); + bo.setMaterialName(getString(row, "FMaterialName")); + + BigDecimal operQty = getBigDecimal(row, "FOperQty"); + bo.setOperQty(operQty); + + BigDecimal FTransInQty = getBigDecimal(row, "FTransInQty"); + bo.setTransInQty(FTransInQty); + + BigDecimal FTransOutQty = getBigDecimal(row, "FTransOutQty"); + bo.setTransOutQty(FTransOutQty); + + bo.setFReportQty(getBigDecimal(row, "FReportQty")); + bo.setFScrapQty(getBigDecimal(row, "FScrapQty")); + + /* FRemainQty = FTransInQty - FTransOutQty + if (transInQty != null && transOutQty != null) { + bo.setRemainQty(transInQty.subtract(transOutQty).setScale(2, RoundingMode.HALF_UP)); + } else { + bo.setRemainQty(BigDecimal.ZERO); + }*/ + + bo.setMaterialStatus(getString(row, "FMaterialStatus")); + bo.setOperNumber(getString(row, "FOperNumber")); + bo.setProcessName(getString(row, "FProcessName")); + bo.setOperPlanStartTime(getString(row, "FOperPlanStartTime")); + bo.setOperPlanFinishTime(getString(row, "FOperPlanFinishTime")); + bo.setOperPlanStartTime2(getString(row, "FOperPlanStartTime2")); + bo.setOperPlanFinishTime2(getString(row, "FOperPlanFinishTime2")); + bo.setWorkCenter(getString(row, "WorkCenterName")); + + // Delay Days Logic + Object delayDaysObj = row.get("FDelayDays"); + int delayDays = 0; + if (delayDaysObj != null) { + try { + delayDays = Integer.parseInt(delayDaysObj.toString()); + } catch (NumberFormatException e) { + // ignore + } + } + bo.setDelayDays(delayDays <= 0 ? "" : String.valueOf(delayDays)); + + boList.add(bo); + } + return boList; + } + + private String getString(Map row, String key) { + Object val = row.get(key); + return val != null ? val.toString() : ""; + } + + + private BigDecimal getBigDecimal(Map row, String key) { + Object val = row.get(key); + if (val == null) return BigDecimal.ZERO; + try { + return new BigDecimal(val.toString()).setScale(2, RoundingMode.HALF_UP); + } catch (Exception e) { + return BigDecimal.ZERO; + } + } +} + diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec100rServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec100rServiceImpl.java new file mode 100644 index 0000000..2c03d1e --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec100rServiceImpl.java @@ -0,0 +1,144 @@ +package com.ruoyi.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.common.utils.StringUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.system.domain.bo.DeviceSpec100rBo; +import com.ruoyi.system.domain.vo.DeviceSpec100rVo; +import com.ruoyi.system.domain.DeviceSpec100r; +import com.ruoyi.system.mapper.DeviceSpec100rMapper; +import com.ruoyi.system.service.IDeviceSpec100rService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 100R设备规格参数Service业务层处理 + * + * @author ruoyi + * @date 2025-12-03 + */ +@RequiredArgsConstructor +@Service +public class DeviceSpec100rServiceImpl implements IDeviceSpec100rService { + + private final DeviceSpec100rMapper baseMapper; + + /** + * 查询100R设备规格参数 + */ + @Override + public DeviceSpec100rVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询100R设备规格参数列表 + */ + @Override + public TableDataInfo queryPageList(DeviceSpec100rBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询100R设备规格参数列表 + */ + @Override + public List queryList(DeviceSpec100rBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(DeviceSpec100rBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getTravelLength()), DeviceSpec100r::getTravelLength, bo.getTravelLength()); + lqw.eq(StringUtils.isNotBlank(bo.getItemType()), DeviceSpec100r::getItemType, bo.getItemType()); + lqw.eq(StringUtils.isNotBlank(bo.getAxialType()), DeviceSpec100r::getAxialType, bo.getAxialType()); + lqw.eq(StringUtils.isNotBlank(bo.getBoxType()), DeviceSpec100r::getBoxType, bo.getBoxType()); + lqw.eq(bo.getV1() != null, DeviceSpec100r::getV1, bo.getV1()); + lqw.eq(bo.getV2() != null, DeviceSpec100r::getV2, bo.getV2()); + lqw.eq(bo.getV3() != null, DeviceSpec100r::getV3, bo.getV3()); + lqw.eq(bo.getV4() != null, DeviceSpec100r::getV4, bo.getV4()); + lqw.eq(bo.getV5() != null, DeviceSpec100r::getV5, bo.getV5()); + lqw.eq(bo.getV6() != null, DeviceSpec100r::getV6, bo.getV6()); + lqw.eq(bo.getV7() != null, DeviceSpec100r::getV7, bo.getV7()); + lqw.eq(bo.getV8() != null, DeviceSpec100r::getV8, bo.getV8()); + lqw.eq(bo.getG1() != null, DeviceSpec100r::getG1, bo.getG1()); + lqw.eq(bo.getV9() != null, DeviceSpec100r::getV9, bo.getV9()); + lqw.eq(bo.getG2() != null, DeviceSpec100r::getG2, bo.getG2()); + lqw.eq(bo.getV10() != null, DeviceSpec100r::getV10, bo.getV10()); + lqw.eq(bo.getG5() != null, DeviceSpec100r::getG5, bo.getG5()); + lqw.eq(bo.getV11() != null, DeviceSpec100r::getV11, bo.getV11()); + lqw.eq(bo.getV12() != null, DeviceSpec100r::getV12, bo.getV12()); + lqw.eq(bo.getG6() != null, DeviceSpec100r::getG6, bo.getG6()); + lqw.eq(bo.getV13() != null, DeviceSpec100r::getV13, bo.getV13()); + lqw.eq(bo.getV14() != null, DeviceSpec100r::getV14, bo.getV14()); + lqw.eq(bo.getG7() != null, DeviceSpec100r::getG7, bo.getG7()); + lqw.eq(bo.getV15() != null, DeviceSpec100r::getV15, bo.getV15()); + lqw.eq(bo.getV41() != null, DeviceSpec100r::getV41, bo.getV41()); + lqw.eq(bo.getV42() != null, DeviceSpec100r::getV42, bo.getV42()); + lqw.eq(bo.getV43() != null, DeviceSpec100r::getV43, bo.getV43()); + lqw.eq(bo.getV44() != null, DeviceSpec100r::getV44, bo.getV44()); + lqw.eq(bo.getV45() != null, DeviceSpec100r::getV45, bo.getV45()); + lqw.eq(bo.getV46() != null, DeviceSpec100r::getV46, bo.getV46()); + lqw.eq(bo.getV47() != null, DeviceSpec100r::getV47, bo.getV47()); + lqw.eq(bo.getV48() != null, DeviceSpec100r::getV48, bo.getV48()); + lqw.eq(bo.getV49() != null, DeviceSpec100r::getV49, bo.getV49()); + lqw.eq(bo.getV50() != null, DeviceSpec100r::getV50, bo.getV50()); + lqw.eq(bo.getV51() != null, DeviceSpec100r::getV51, bo.getV51()); + lqw.eq(bo.getV52() != null, DeviceSpec100r::getV52, bo.getV52()); + return lqw; + } + + /** + * 新增100R设备规格参数 + */ + @Override + public Boolean insertByBo(DeviceSpec100rBo bo) { + DeviceSpec100r add = BeanUtil.toBean(bo, DeviceSpec100r.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改100R设备规格参数 + */ + @Override + public Boolean updateByBo(DeviceSpec100rBo bo) { + DeviceSpec100r update = BeanUtil.toBean(bo, DeviceSpec100r.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DeviceSpec100r entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除100R设备规格参数 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec125rServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec125rServiceImpl.java new file mode 100644 index 0000000..9cefbd8 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec125rServiceImpl.java @@ -0,0 +1,150 @@ +package com.ruoyi.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.common.utils.StringUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.system.domain.bo.DeviceSpec125rBo; +import com.ruoyi.system.domain.vo.DeviceSpec125rVo; +import com.ruoyi.system.domain.DeviceSpec125r; +import com.ruoyi.system.mapper.DeviceSpec125rMapper; +import com.ruoyi.system.service.IDeviceSpec125rService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 125R设备规格参数Service业务层处理 + * + * @author ruoyi + * @date 2025-12-06 + */ +@RequiredArgsConstructor +@Service +public class DeviceSpec125rServiceImpl implements IDeviceSpec125rService { + + private final DeviceSpec125rMapper baseMapper; + + /** + * 查询125R设备规格参数 + */ + @Override + public DeviceSpec125rVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询125R设备规格参数列表 + */ + @Override + public TableDataInfo queryPageList(DeviceSpec125rBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询125R设备规格参数列表 + */ + @Override + public List queryList(DeviceSpec125rBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(DeviceSpec125rBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getTravelLength()), DeviceSpec125r::getTravelLength, bo.getTravelLength()); + lqw.eq(StringUtils.isNotBlank(bo.getItemType()), DeviceSpec125r::getItemType, bo.getItemType()); + lqw.eq(StringUtils.isNotBlank(bo.getAxialType()), DeviceSpec125r::getAxialType, bo.getAxialType()); + lqw.eq(StringUtils.isNotBlank(bo.getBoxType()), DeviceSpec125r::getBoxType, bo.getBoxType()); + lqw.eq(bo.getV1() != null, DeviceSpec125r::getV1, bo.getV1()); + lqw.eq(bo.getV2() != null, DeviceSpec125r::getV2, bo.getV2()); + lqw.eq(bo.getV3() != null, DeviceSpec125r::getV3, bo.getV3()); + lqw.eq(bo.getV4() != null, DeviceSpec125r::getV4, bo.getV4()); + lqw.eq(bo.getV5() != null, DeviceSpec125r::getV5, bo.getV5()); + lqw.eq(bo.getV6() != null, DeviceSpec125r::getV6, bo.getV6()); + lqw.eq(bo.getV7() != null, DeviceSpec125r::getV7, bo.getV7()); + lqw.eq(bo.getV8() != null, DeviceSpec125r::getV8, bo.getV8()); + lqw.eq(bo.getG1() != null, DeviceSpec125r::getG1, bo.getG1()); + lqw.eq(bo.getV9() != null, DeviceSpec125r::getV9, bo.getV9()); + lqw.eq(bo.getG2() != null, DeviceSpec125r::getG2, bo.getG2()); + lqw.eq(bo.getG3() != null, DeviceSpec125r::getG3, bo.getG3()); + lqw.eq(bo.getG4() != null, DeviceSpec125r::getG4, bo.getG4()); + lqw.eq(bo.getV10() != null, DeviceSpec125r::getV10, bo.getV10()); + lqw.eq(bo.getG5() != null, DeviceSpec125r::getG5, bo.getG5()); + lqw.eq(bo.getV11() != null, DeviceSpec125r::getV11, bo.getV11()); + lqw.eq(bo.getV12() != null, DeviceSpec125r::getV12, bo.getV12()); + lqw.eq(bo.getG6() != null, DeviceSpec125r::getG6, bo.getG6()); + lqw.eq(bo.getV13() != null, DeviceSpec125r::getV13, bo.getV13()); + lqw.eq(bo.getV14() != null, DeviceSpec125r::getV14, bo.getV14()); + lqw.eq(bo.getG7() != null, DeviceSpec125r::getG7, bo.getG7()); + lqw.eq(bo.getV15() != null, DeviceSpec125r::getV15, bo.getV15()); + lqw.eq(bo.getV16() != null, DeviceSpec125r::getV16, bo.getV16()); + lqw.eq(bo.getV17() != null, DeviceSpec125r::getV17, bo.getV17()); + lqw.eq(bo.getV18() != null, DeviceSpec125r::getV18, bo.getV18()); + lqw.eq(bo.getV19() != null, DeviceSpec125r::getV19, bo.getV19()); + lqw.eq(bo.getV20() != null, DeviceSpec125r::getV20, bo.getV20()); + lqw.eq(bo.getV41() != null, DeviceSpec125r::getV41, bo.getV41()); + lqw.eq(bo.getV42() != null, DeviceSpec125r::getV42, bo.getV42()); + lqw.eq(bo.getV43() != null, DeviceSpec125r::getV43, bo.getV43()); + lqw.eq(bo.getV44() != null, DeviceSpec125r::getV44, bo.getV44()); + lqw.eq(bo.getV45() != null, DeviceSpec125r::getV45, bo.getV45()); + lqw.eq(bo.getV46() != null, DeviceSpec125r::getV46, bo.getV46()); + lqw.eq(bo.getV47() != null, DeviceSpec125r::getV47, bo.getV47()); + lqw.eq(bo.getV48() != null, DeviceSpec125r::getV48, bo.getV48()); + lqw.eq(bo.getV49() != null, DeviceSpec125r::getV49, bo.getV49()); + lqw.eq(bo.getV50() != null, DeviceSpec125r::getV50, bo.getV50()); + lqw.eq(bo.getV51() != null, DeviceSpec125r::getV51, bo.getV51()); + return lqw; + } + + /** + * 新增125R设备规格参数 + */ + @Override + public Boolean insertByBo(DeviceSpec125rBo bo) { + DeviceSpec125r add = BeanUtil.toBean(bo, DeviceSpec125r.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改125R设备规格参数 + */ + @Override + public Boolean updateByBo(DeviceSpec125rBo bo) { + DeviceSpec125r update = BeanUtil.toBean(bo, DeviceSpec125r.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DeviceSpec125r entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除125R设备规格参数 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec150rServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec150rServiceImpl.java new file mode 100644 index 0000000..679707c --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec150rServiceImpl.java @@ -0,0 +1,154 @@ +package com.ruoyi.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.common.utils.StringUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.system.domain.bo.DeviceSpec150rBo; +import com.ruoyi.system.domain.vo.DeviceSpec150rVo; +import com.ruoyi.system.domain.DeviceSpec150r; +import com.ruoyi.system.mapper.DeviceSpec150rMapper; +import com.ruoyi.system.service.IDeviceSpec150rService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 150R设备规格参数Service业务层处理 + * + * @author ruoyi + * @date 2025-12-06 + */ +@RequiredArgsConstructor +@Service +public class DeviceSpec150rServiceImpl implements IDeviceSpec150rService { + + private final DeviceSpec150rMapper baseMapper; + + /** + * 查询150R设备规格参数 + */ + @Override + public DeviceSpec150rVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询150R设备规格参数列表 + */ + @Override + public TableDataInfo queryPageList(DeviceSpec150rBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询150R设备规格参数列表 + */ + @Override + public List queryList(DeviceSpec150rBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(DeviceSpec150rBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getTravelLength()), DeviceSpec150r::getTravelLength, bo.getTravelLength()); + lqw.eq(StringUtils.isNotBlank(bo.getItemType()), DeviceSpec150r::getItemType, bo.getItemType()); + lqw.eq(StringUtils.isNotBlank(bo.getAxialType()), DeviceSpec150r::getAxialType, bo.getAxialType()); + lqw.eq(StringUtils.isNotBlank(bo.getBoxType()), DeviceSpec150r::getBoxType, bo.getBoxType()); + lqw.eq(bo.getV1() != null, DeviceSpec150r::getV1, bo.getV1()); + lqw.eq(bo.getV2() != null, DeviceSpec150r::getV2, bo.getV2()); + lqw.eq(bo.getV3() != null, DeviceSpec150r::getV3, bo.getV3()); + lqw.eq(bo.getV4() != null, DeviceSpec150r::getV4, bo.getV4()); + lqw.eq(bo.getV21() != null, DeviceSpec150r::getV21, bo.getV21()); + lqw.eq(bo.getV22() != null, DeviceSpec150r::getV22, bo.getV22()); + lqw.eq(bo.getV23() != null, DeviceSpec150r::getV23, bo.getV23()); + lqw.eq(bo.getV24() != null, DeviceSpec150r::getV24, bo.getV24()); + lqw.eq(bo.getV5() != null, DeviceSpec150r::getV5, bo.getV5()); + lqw.eq(bo.getV6() != null, DeviceSpec150r::getV6, bo.getV6()); + lqw.eq(bo.getV7() != null, DeviceSpec150r::getV7, bo.getV7()); + lqw.eq(bo.getV8() != null, DeviceSpec150r::getV8, bo.getV8()); + lqw.eq(bo.getG1() != null, DeviceSpec150r::getG1, bo.getG1()); + lqw.eq(bo.getV9() != null, DeviceSpec150r::getV9, bo.getV9()); + lqw.eq(bo.getG2() != null, DeviceSpec150r::getG2, bo.getG2()); + lqw.eq(bo.getG3() != null, DeviceSpec150r::getG3, bo.getG3()); + lqw.eq(bo.getG4() != null, DeviceSpec150r::getG4, bo.getG4()); + lqw.eq(bo.getV10() != null, DeviceSpec150r::getV10, bo.getV10()); + lqw.eq(bo.getG5() != null, DeviceSpec150r::getG5, bo.getG5()); + lqw.eq(bo.getV11() != null, DeviceSpec150r::getV11, bo.getV11()); + lqw.eq(bo.getV12() != null, DeviceSpec150r::getV12, bo.getV12()); + lqw.eq(bo.getG6() != null, DeviceSpec150r::getG6, bo.getG6()); + lqw.eq(bo.getV13() != null, DeviceSpec150r::getV13, bo.getV13()); + lqw.eq(bo.getV14() != null, DeviceSpec150r::getV14, bo.getV14()); + lqw.eq(bo.getG7() != null, DeviceSpec150r::getG7, bo.getG7()); + lqw.eq(bo.getV15() != null, DeviceSpec150r::getV15, bo.getV15()); + lqw.eq(bo.getV16() != null, DeviceSpec150r::getV16, bo.getV16()); + lqw.eq(bo.getV17() != null, DeviceSpec150r::getV17, bo.getV17()); + lqw.eq(bo.getV18() != null, DeviceSpec150r::getV18, bo.getV18()); + lqw.eq(bo.getV19() != null, DeviceSpec150r::getV19, bo.getV19()); + lqw.eq(bo.getV20() != null, DeviceSpec150r::getV20, bo.getV20()); + lqw.eq(bo.getV41() != null, DeviceSpec150r::getV41, bo.getV41()); + lqw.eq(bo.getV42() != null, DeviceSpec150r::getV42, bo.getV42()); + lqw.eq(bo.getV43() != null, DeviceSpec150r::getV43, bo.getV43()); + lqw.eq(bo.getV44() != null, DeviceSpec150r::getV44, bo.getV44()); + lqw.eq(bo.getV45() != null, DeviceSpec150r::getV45, bo.getV45()); + lqw.eq(bo.getV46() != null, DeviceSpec150r::getV46, bo.getV46()); + lqw.eq(bo.getV47() != null, DeviceSpec150r::getV47, bo.getV47()); + lqw.eq(bo.getV48() != null, DeviceSpec150r::getV48, bo.getV48()); + lqw.eq(bo.getV49() != null, DeviceSpec150r::getV49, bo.getV49()); + lqw.eq(bo.getV50() != null, DeviceSpec150r::getV50, bo.getV50()); + lqw.eq(bo.getV51() != null, DeviceSpec150r::getV51, bo.getV51()); + return lqw; + } + + /** + * 新增150R设备规格参数 + */ + @Override + public Boolean insertByBo(DeviceSpec150rBo bo) { + DeviceSpec150r add = BeanUtil.toBean(bo, DeviceSpec150r.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改150R设备规格参数 + */ + @Override + public Boolean updateByBo(DeviceSpec150rBo bo) { + DeviceSpec150r update = BeanUtil.toBean(bo, DeviceSpec150r.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DeviceSpec150r entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除150R设备规格参数 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec30dServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec30dServiceImpl.java new file mode 100644 index 0000000..1cace98 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec30dServiceImpl.java @@ -0,0 +1,133 @@ +package com.ruoyi.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.common.utils.StringUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.system.domain.bo.DeviceSpec30dBo; +import com.ruoyi.system.domain.vo.DeviceSpec30dVo; +import com.ruoyi.system.domain.DeviceSpec30d; +import com.ruoyi.system.mapper.DeviceSpec30dMapper; +import com.ruoyi.system.service.IDeviceSpec30dService; +import com.ruoyi.common.utils.StringUtils; +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * device_spec_30D Service业务层处理 + * + * @author ruoyi + * @date 2025-12-03 + */ +@RequiredArgsConstructor +@Service +public class DeviceSpec30dServiceImpl implements IDeviceSpec30dService { + + private final DeviceSpec30dMapper baseMapper; + + /** + * 查询device_spec_30D + */ + @Override + public DeviceSpec30dVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询device_spec_30D 列表 + */ + @Override + public TableDataInfo queryPageList(DeviceSpec30dBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询device_spec_30D 列表 + */ + @Override + public List queryList(DeviceSpec30dBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(DeviceSpec30dBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getTravelLength()), DeviceSpec30d::getTravelLength, bo.getTravelLength()); + lqw.eq(StringUtils.isNotBlank(bo.getItemType()), DeviceSpec30d::getItemType, bo.getItemType()); + lqw.eq(StringUtils.isNotBlank(bo.getAxialType()), DeviceSpec30d::getAxialType, bo.getAxialType()); + lqw.eq(StringUtils.isNotBlank(bo.getBoxType()), DeviceSpec30d::getBoxType, bo.getBoxType()); + lqw.eq(bo.getV1() != null, DeviceSpec30d::getV1, bo.getV1()); + lqw.eq(bo.getV2() != null, DeviceSpec30d::getV2, bo.getV2()); + lqw.eq(bo.getV3() != null, DeviceSpec30d::getV3, bo.getV3()); + lqw.eq(bo.getV5() != null, DeviceSpec30d::getV5, bo.getV5()); + lqw.eq(bo.getV6() != null, DeviceSpec30d::getV6, bo.getV6()); + lqw.eq(bo.getV8() != null, DeviceSpec30d::getV8, bo.getV8()); + lqw.eq(bo.getG1() != null, DeviceSpec30d::getG1, bo.getG1()); + lqw.eq(bo.getV10() != null, DeviceSpec30d::getV10, bo.getV10()); + lqw.eq(bo.getG5() != null, DeviceSpec30d::getG5, bo.getG5()); + lqw.eq(bo.getG8() != null, DeviceSpec30d::getG8, bo.getG8()); + lqw.eq(bo.getV12() != null, DeviceSpec30d::getV12, bo.getV12()); + lqw.eq(bo.getG6() != null, DeviceSpec30d::getG6, bo.getG6()); + lqw.eq(bo.getG9() != null, DeviceSpec30d::getG9, bo.getG9()); + lqw.eq(bo.getV41() != null, DeviceSpec30d::getV41, bo.getV41()); + lqw.eq(bo.getV42() != null, DeviceSpec30d::getV42, bo.getV42()); + lqw.eq(bo.getV43() != null, DeviceSpec30d::getV43, bo.getV43()); + lqw.eq(bo.getV44() != null, DeviceSpec30d::getV44, bo.getV44()); + lqw.eq(bo.getV45() != null, DeviceSpec30d::getV45, bo.getV45()); + lqw.eq(bo.getV46() != null, DeviceSpec30d::getV46, bo.getV46()); + lqw.eq(bo.getV47() != null, DeviceSpec30d::getV47, bo.getV47()); + lqw.eq(bo.getV48() != null, DeviceSpec30d::getV48, bo.getV48()); + return lqw; + } + + /** + * 新增device_spec_30D + */ + @Override + public Boolean insertByBo(DeviceSpec30dBo bo) { + DeviceSpec30d add = BeanUtil.toBean(bo, DeviceSpec30d.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改device_spec_30D + */ + @Override + public Boolean updateByBo(DeviceSpec30dBo bo) { + DeviceSpec30d update = BeanUtil.toBean(bo, DeviceSpec30d.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DeviceSpec30d entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除device_spec_30D + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec30sServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec30sServiceImpl.java new file mode 100644 index 0000000..9676f1c --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec30sServiceImpl.java @@ -0,0 +1,127 @@ +package com.ruoyi.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.system.domain.bo.DeviceSpec30sBo; +import com.ruoyi.system.domain.vo.DeviceSpec30sVo; +import com.ruoyi.system.domain.DeviceSpec30s; +import com.ruoyi.system.mapper.DeviceSpec30sMapper; +import com.ruoyi.system.service.IDeviceSpec30sService; +import com.ruoyi.common.utils.StringUtils; +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 30S设备规格参数Service业务层处理 + * + * @author ruoyi + * @date 2025-12-03 + */ +@RequiredArgsConstructor +@Service +public class DeviceSpec30sServiceImpl implements IDeviceSpec30sService { + + private final DeviceSpec30sMapper baseMapper; + + /** + * 查询30S设备规格参数 + */ + @Override + public DeviceSpec30sVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询30S设备规格参数列表 + */ + @Override + public TableDataInfo queryPageList(DeviceSpec30sBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询30S设备规格参数列表 + */ + @Override + public List queryList(DeviceSpec30sBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(DeviceSpec30sBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getTravelLength()), DeviceSpec30s::getTravelLength, bo.getTravelLength()); + lqw.eq(StringUtils.isNotBlank(bo.getItemType()), DeviceSpec30s::getItemType, bo.getItemType()); + lqw.eq(StringUtils.isNotBlank(bo.getAxialType()), DeviceSpec30s::getAxialType, bo.getAxialType()); + lqw.eq(StringUtils.isNotBlank(bo.getBoxType()), DeviceSpec30s::getBoxType, bo.getBoxType()); + lqw.eq(bo.getV1() != null, DeviceSpec30s::getV1, bo.getV1()); + lqw.eq(bo.getV2() != null, DeviceSpec30s::getV2, bo.getV2()); + lqw.eq(bo.getV3() != null, DeviceSpec30s::getV3, bo.getV3()); + lqw.eq(bo.getV5() != null, DeviceSpec30s::getV5, bo.getV5()); + lqw.eq(bo.getV8() != null, DeviceSpec30s::getV8, bo.getV8()); + lqw.eq(bo.getG1() != null, DeviceSpec30s::getG1, bo.getG1()); + lqw.eq(bo.getV10() != null, DeviceSpec30s::getV10, bo.getV10()); + lqw.eq(bo.getG5() != null, DeviceSpec30s::getG5, bo.getG5()); + lqw.eq(bo.getV12() != null, DeviceSpec30s::getV12, bo.getV12()); + lqw.eq(bo.getG6() != null, DeviceSpec30s::getG6, bo.getG6()); + lqw.eq(bo.getV41() != null, DeviceSpec30s::getV41, bo.getV41()); + lqw.eq(bo.getV42() != null, DeviceSpec30s::getV42, bo.getV42()); + lqw.eq(bo.getV43() != null, DeviceSpec30s::getV43, bo.getV43()); + lqw.eq(bo.getV44() != null, DeviceSpec30s::getV44, bo.getV44()); + lqw.eq(bo.getV45() != null, DeviceSpec30s::getV45, bo.getV45()); + lqw.eq(bo.getV46() != null, DeviceSpec30s::getV46, bo.getV46()); + return lqw; + } + + /** + * 新增30S设备规格参数 + */ + @Override + public Boolean insertByBo(DeviceSpec30sBo bo) { + DeviceSpec30s add = BeanUtil.toBean(bo, DeviceSpec30s.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改30S设备规格参数 + */ + @Override + public Boolean updateByBo(DeviceSpec30sBo bo) { + DeviceSpec30s update = BeanUtil.toBean(bo, DeviceSpec30s.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DeviceSpec30s entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除30S设备规格参数 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec40rServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec40rServiceImpl.java new file mode 100644 index 0000000..cd98c71 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec40rServiceImpl.java @@ -0,0 +1,140 @@ +package com.ruoyi.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.common.utils.StringUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.system.domain.bo.DeviceSpec40rBo; +import com.ruoyi.system.domain.vo.DeviceSpec40rVo; +import com.ruoyi.system.domain.DeviceSpec40r; +import com.ruoyi.system.mapper.DeviceSpec40rMapper; +import com.ruoyi.system.service.IDeviceSpec40rService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 40R设备规格参数Service业务层处理 + * + * @author ruoyi + * @date 2025-12-03 + */ +@RequiredArgsConstructor +@Service +public class DeviceSpec40rServiceImpl implements IDeviceSpec40rService { + + private final DeviceSpec40rMapper baseMapper; + + /** + * 查询40R设备规格参数 + */ + @Override + public DeviceSpec40rVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询40R设备规格参数列表 + */ + @Override + public TableDataInfo queryPageList(DeviceSpec40rBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询40R设备规格参数列表 + */ + @Override + public List queryList(DeviceSpec40rBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(DeviceSpec40rBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getTravelLength()), DeviceSpec40r::getTravelLength, bo.getTravelLength()); + lqw.eq(StringUtils.isNotBlank(bo.getItemType()), DeviceSpec40r::getItemType, bo.getItemType()); + lqw.eq(StringUtils.isNotBlank(bo.getAxialType()), DeviceSpec40r::getAxialType, bo.getAxialType()); + lqw.eq(StringUtils.isNotBlank(bo.getBoxType()), DeviceSpec40r::getBoxType, bo.getBoxType()); + lqw.eq(bo.getV1() != null, DeviceSpec40r::getV1, bo.getV1()); + lqw.eq(bo.getV2() != null, DeviceSpec40r::getV2, bo.getV2()); + lqw.eq(bo.getV3() != null, DeviceSpec40r::getV3, bo.getV3()); + lqw.eq(bo.getV5() != null, DeviceSpec40r::getV5, bo.getV5()); + lqw.eq(bo.getV6() != null, DeviceSpec40r::getV6, bo.getV6()); + lqw.eq(bo.getV8() != null, DeviceSpec40r::getV8, bo.getV8()); + lqw.eq(bo.getG1() != null, DeviceSpec40r::getG1, bo.getG1()); + lqw.eq(bo.getV9() != null, DeviceSpec40r::getV9, bo.getV9()); + lqw.eq(bo.getG2() != null, DeviceSpec40r::getG2, bo.getG2()); + lqw.eq(bo.getV10() != null, DeviceSpec40r::getV10, bo.getV10()); + lqw.eq(bo.getG5() != null, DeviceSpec40r::getG5, bo.getG5()); + lqw.eq(bo.getV11() != null, DeviceSpec40r::getV11, bo.getV11()); + lqw.eq(bo.getV12() != null, DeviceSpec40r::getV12, bo.getV12()); + lqw.eq(bo.getG6() != null, DeviceSpec40r::getG6, bo.getG6()); + lqw.eq(bo.getV13() != null, DeviceSpec40r::getV13, bo.getV13()); + lqw.eq(bo.getV14() != null, DeviceSpec40r::getV14, bo.getV14()); + lqw.eq(bo.getG7() != null, DeviceSpec40r::getG7, bo.getG7()); + lqw.eq(bo.getV15() != null, DeviceSpec40r::getV15, bo.getV15()); + lqw.eq(bo.getV41() != null, DeviceSpec40r::getV41, bo.getV41()); + lqw.eq(bo.getV42() != null, DeviceSpec40r::getV42, bo.getV42()); + lqw.eq(bo.getV43() != null, DeviceSpec40r::getV43, bo.getV43()); + lqw.eq(bo.getV44() != null, DeviceSpec40r::getV44, bo.getV44()); + lqw.eq(bo.getV45() != null, DeviceSpec40r::getV45, bo.getV45()); + lqw.eq(bo.getV46() != null, DeviceSpec40r::getV46, bo.getV46()); + lqw.eq(bo.getV47() != null, DeviceSpec40r::getV47, bo.getV47()); + lqw.eq(bo.getV48() != null, DeviceSpec40r::getV48, bo.getV48()); + lqw.eq(bo.getV49() != null, DeviceSpec40r::getV49, bo.getV49()); + lqw.eq(bo.getV50() != null, DeviceSpec40r::getV50, bo.getV50()); + return lqw; + } + + /** + * 新增40R设备规格参数 + */ + @Override + public Boolean insertByBo(DeviceSpec40rBo bo) { + DeviceSpec40r add = BeanUtil.toBean(bo, DeviceSpec40r.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改40R设备规格参数 + */ + @Override + public Boolean updateByBo(DeviceSpec40rBo bo) { + DeviceSpec40r update = BeanUtil.toBean(bo, DeviceSpec40r.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DeviceSpec40r entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除40R设备规格参数 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec40sServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec40sServiceImpl.java new file mode 100644 index 0000000..8818057 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec40sServiceImpl.java @@ -0,0 +1,143 @@ +package com.ruoyi.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.common.utils.StringUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.system.domain.bo.DeviceSpec40sBo; +import com.ruoyi.system.domain.vo.DeviceSpec40sVo; +import com.ruoyi.system.domain.DeviceSpec40s; +import com.ruoyi.system.mapper.DeviceSpec40sMapper; +import com.ruoyi.system.service.IDeviceSpec40sService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 40S设备规格参数Service业务层处理 + * + * @author ruoyi + * @date 2025-12-03 + */ +@RequiredArgsConstructor +@Service +public class DeviceSpec40sServiceImpl implements IDeviceSpec40sService { + + private final DeviceSpec40sMapper baseMapper; + + /** + * 查询40S设备规格参数 + */ + @Override + public DeviceSpec40sVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询40S设备规格参数列表 + */ + @Override + public TableDataInfo queryPageList(DeviceSpec40sBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询40S设备规格参数列表 + */ + @Override + public List queryList(DeviceSpec40sBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(DeviceSpec40sBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getTravelLength()), DeviceSpec40s::getTravelLength, bo.getTravelLength()); + lqw.eq(StringUtils.isNotBlank(bo.getItemType()), DeviceSpec40s::getItemType, bo.getItemType()); + lqw.eq(StringUtils.isNotBlank(bo.getAxialType()), DeviceSpec40s::getAxialType, bo.getAxialType()); + lqw.eq(StringUtils.isNotBlank(bo.getBoxType()), DeviceSpec40s::getBoxType, bo.getBoxType()); + lqw.eq(bo.getV1() != null, DeviceSpec40s::getV1, bo.getV1()); + lqw.eq(bo.getV2() != null, DeviceSpec40s::getV2, bo.getV2()); + lqw.eq(bo.getV22() != null, DeviceSpec40s::getV22, bo.getV22()); + lqw.eq(bo.getV3() != null, DeviceSpec40s::getV3, bo.getV3()); + lqw.eq(bo.getV23() != null, DeviceSpec40s::getV23, bo.getV23()); + lqw.eq(bo.getV5() != null, DeviceSpec40s::getV5, bo.getV5()); + lqw.eq(bo.getV6() != null, DeviceSpec40s::getV6, bo.getV6()); + lqw.eq(bo.getV8() != null, DeviceSpec40s::getV8, bo.getV8()); + lqw.eq(bo.getG1() != null, DeviceSpec40s::getG1, bo.getG1()); + lqw.eq(bo.getV9() != null, DeviceSpec40s::getV9, bo.getV9()); + lqw.eq(bo.getG2() != null, DeviceSpec40s::getG2, bo.getG2()); + lqw.eq(bo.getV10() != null, DeviceSpec40s::getV10, bo.getV10()); + lqw.eq(bo.getG5() != null, DeviceSpec40s::getG5, bo.getG5()); + lqw.eq(bo.getV11() != null, DeviceSpec40s::getV11, bo.getV11()); + lqw.eq(bo.getV12() != null, DeviceSpec40s::getV12, bo.getV12()); + lqw.eq(bo.getG6() != null, DeviceSpec40s::getG6, bo.getG6()); + lqw.eq(bo.getV13() != null, DeviceSpec40s::getV13, bo.getV13()); + lqw.eq(bo.getV14() != null, DeviceSpec40s::getV14, bo.getV14()); + lqw.eq(bo.getG7() != null, DeviceSpec40s::getG7, bo.getG7()); + lqw.eq(bo.getV15() != null, DeviceSpec40s::getV15, bo.getV15()); + lqw.eq(bo.getV41() != null, DeviceSpec40s::getV41, bo.getV41()); + lqw.eq(bo.getV42() != null, DeviceSpec40s::getV42, bo.getV42()); + lqw.eq(bo.getV43() != null, DeviceSpec40s::getV43, bo.getV43()); + lqw.eq(bo.getV44() != null, DeviceSpec40s::getV44, bo.getV44()); + lqw.eq(bo.getV45() != null, DeviceSpec40s::getV45, bo.getV45()); + lqw.eq(bo.getV46() != null, DeviceSpec40s::getV46, bo.getV46()); + lqw.eq(bo.getV47() != null, DeviceSpec40s::getV47, bo.getV47()); + lqw.eq(bo.getV48() != null, DeviceSpec40s::getV48, bo.getV48()); + lqw.eq(bo.getV49() != null, DeviceSpec40s::getV49, bo.getV49()); + lqw.eq(bo.getV50() != null, DeviceSpec40s::getV50, bo.getV50()); + lqw.eq(bo.getV51() != null, DeviceSpec40s::getV51, bo.getV51()); + return lqw; + } + + /** + * 新增40S设备规格参数 + */ + @Override + public Boolean insertByBo(DeviceSpec40sBo bo) { + DeviceSpec40s add = BeanUtil.toBean(bo, DeviceSpec40s.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改40S设备规格参数 + */ + @Override + public Boolean updateByBo(DeviceSpec40sBo bo) { + DeviceSpec40s update = BeanUtil.toBean(bo, DeviceSpec40s.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DeviceSpec40s entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除40S设备规格参数 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec60rServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec60rServiceImpl.java new file mode 100644 index 0000000..1be9b5d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec60rServiceImpl.java @@ -0,0 +1,139 @@ +package com.ruoyi.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.system.domain.bo.DeviceSpec60rBo; +import com.ruoyi.system.domain.vo.DeviceSpec60rVo; +import com.ruoyi.system.domain.DeviceSpec60r; +import com.ruoyi.system.mapper.DeviceSpec60rMapper; +import com.ruoyi.system.service.IDeviceSpec60rService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; +import com.ruoyi.common.utils.StringUtils; +/** + * 60R设备规格参数Service业务层处理 + * + * @author ruoyi + * @date 2025-12-03 + */ +@RequiredArgsConstructor +@Service +public class DeviceSpec60rServiceImpl implements IDeviceSpec60rService { + + private final DeviceSpec60rMapper baseMapper; + + /** + * 查询60R设备规格参数 + */ + @Override + public DeviceSpec60rVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询60R设备规格参数列表 + */ + @Override + public TableDataInfo queryPageList(DeviceSpec60rBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询60R设备规格参数列表 + */ + @Override + public List queryList(DeviceSpec60rBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(DeviceSpec60rBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getTravelLength()), DeviceSpec60r::getTravelLength, bo.getTravelLength()); + lqw.eq(StringUtils.isNotBlank(bo.getItemType()), DeviceSpec60r::getItemType, bo.getItemType()); + lqw.eq(StringUtils.isNotBlank(bo.getAxialType()), DeviceSpec60r::getAxialType, bo.getAxialType()); + lqw.eq(StringUtils.isNotBlank(bo.getBoxType()), DeviceSpec60r::getBoxType, bo.getBoxType()); + lqw.eq(bo.getV1() != null, DeviceSpec60r::getV1, bo.getV1()); + lqw.eq(bo.getV2() != null, DeviceSpec60r::getV2, bo.getV2()); + lqw.eq(bo.getV3() != null, DeviceSpec60r::getV3, bo.getV3()); + lqw.eq(bo.getV5() != null, DeviceSpec60r::getV5, bo.getV5()); + lqw.eq(bo.getV6() != null, DeviceSpec60r::getV6, bo.getV6()); + lqw.eq(bo.getV8() != null, DeviceSpec60r::getV8, bo.getV8()); + lqw.eq(bo.getG1() != null, DeviceSpec60r::getG1, bo.getG1()); + lqw.eq(bo.getV9() != null, DeviceSpec60r::getV9, bo.getV9()); + lqw.eq(bo.getG2() != null, DeviceSpec60r::getG2, bo.getG2()); + lqw.eq(bo.getV10() != null, DeviceSpec60r::getV10, bo.getV10()); + lqw.eq(bo.getG5() != null, DeviceSpec60r::getG5, bo.getG5()); + lqw.eq(bo.getV11() != null, DeviceSpec60r::getV11, bo.getV11()); + lqw.eq(bo.getV12() != null, DeviceSpec60r::getV12, bo.getV12()); + lqw.eq(bo.getG6() != null, DeviceSpec60r::getG6, bo.getG6()); + lqw.eq(bo.getV13() != null, DeviceSpec60r::getV13, bo.getV13()); + lqw.eq(bo.getV14() != null, DeviceSpec60r::getV14, bo.getV14()); + lqw.eq(bo.getG7() != null, DeviceSpec60r::getG7, bo.getG7()); + lqw.eq(bo.getV15() != null, DeviceSpec60r::getV15, bo.getV15()); + lqw.eq(bo.getV41() != null, DeviceSpec60r::getV41, bo.getV41()); + lqw.eq(bo.getV42() != null, DeviceSpec60r::getV42, bo.getV42()); + lqw.eq(bo.getV43() != null, DeviceSpec60r::getV43, bo.getV43()); + lqw.eq(bo.getV44() != null, DeviceSpec60r::getV44, bo.getV44()); + lqw.eq(bo.getV45() != null, DeviceSpec60r::getV45, bo.getV45()); + lqw.eq(bo.getV46() != null, DeviceSpec60r::getV46, bo.getV46()); + lqw.eq(bo.getV47() != null, DeviceSpec60r::getV47, bo.getV47()); + lqw.eq(bo.getV48() != null, DeviceSpec60r::getV48, bo.getV48()); + lqw.eq(bo.getV49() != null, DeviceSpec60r::getV49, bo.getV49()); + lqw.eq(bo.getV50() != null, DeviceSpec60r::getV50, bo.getV50()); + return lqw; + } + + /** + * 新增60R设备规格参数 + */ + @Override + public Boolean insertByBo(DeviceSpec60rBo bo) { + DeviceSpec60r add = BeanUtil.toBean(bo, DeviceSpec60r.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改60R设备规格参数 + */ + @Override + public Boolean updateByBo(DeviceSpec60rBo bo) { + DeviceSpec60r update = BeanUtil.toBean(bo, DeviceSpec60r.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DeviceSpec60r entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除60R设备规格参数 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec80rServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec80rServiceImpl.java new file mode 100644 index 0000000..903089a --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DeviceSpec80rServiceImpl.java @@ -0,0 +1,140 @@ +package com.ruoyi.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.system.domain.bo.DeviceSpec80rBo; +import com.ruoyi.system.domain.vo.DeviceSpec80rVo; +import com.ruoyi.system.domain.DeviceSpec80r; +import com.ruoyi.system.mapper.DeviceSpec80rMapper; +import com.ruoyi.system.service.IDeviceSpec80rService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; +import com.ruoyi.common.utils.StringUtils; +/** + * 80R设备规格参数Service业务层处理 + * + * @author ruoyi + * @date 2025-12-03 + */ +@RequiredArgsConstructor +@Service +public class DeviceSpec80rServiceImpl implements IDeviceSpec80rService { + + private final DeviceSpec80rMapper baseMapper; + + /** + * 查询80R设备规格参数 + */ + @Override + public DeviceSpec80rVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询80R设备规格参数列表 + */ + @Override + public TableDataInfo queryPageList(DeviceSpec80rBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询80R设备规格参数列表 + */ + @Override + public List queryList(DeviceSpec80rBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(DeviceSpec80rBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getTravelLength()), DeviceSpec80r::getTravelLength, bo.getTravelLength()); + lqw.eq(StringUtils.isNotBlank(bo.getItemType()), DeviceSpec80r::getItemType, bo.getItemType()); + lqw.eq(StringUtils.isNotBlank(bo.getAxialType()), DeviceSpec80r::getAxialType, bo.getAxialType()); + lqw.eq(StringUtils.isNotBlank(bo.getBoxType()), DeviceSpec80r::getBoxType, bo.getBoxType()); + lqw.eq(bo.getV1() != null, DeviceSpec80r::getV1, bo.getV1()); + lqw.eq(bo.getV2() != null, DeviceSpec80r::getV2, bo.getV2()); + lqw.eq(bo.getV3() != null, DeviceSpec80r::getV3, bo.getV3()); + lqw.eq(bo.getV5() != null, DeviceSpec80r::getV5, bo.getV5()); + lqw.eq(bo.getV6() != null, DeviceSpec80r::getV6, bo.getV6()); + lqw.eq(bo.getV8() != null, DeviceSpec80r::getV8, bo.getV8()); + lqw.eq(bo.getG1() != null, DeviceSpec80r::getG1, bo.getG1()); + lqw.eq(bo.getV9() != null, DeviceSpec80r::getV9, bo.getV9()); + lqw.eq(bo.getG2() != null, DeviceSpec80r::getG2, bo.getG2()); + lqw.eq(bo.getV10() != null, DeviceSpec80r::getV10, bo.getV10()); + lqw.eq(bo.getG5() != null, DeviceSpec80r::getG5, bo.getG5()); + lqw.eq(bo.getV11() != null, DeviceSpec80r::getV11, bo.getV11()); + lqw.eq(bo.getV12() != null, DeviceSpec80r::getV12, bo.getV12()); + lqw.eq(bo.getG6() != null, DeviceSpec80r::getG6, bo.getG6()); + lqw.eq(bo.getV13() != null, DeviceSpec80r::getV13, bo.getV13()); + lqw.eq(bo.getV14() != null, DeviceSpec80r::getV14, bo.getV14()); + lqw.eq(bo.getG7() != null, DeviceSpec80r::getG7, bo.getG7()); + lqw.eq(bo.getV15() != null, DeviceSpec80r::getV15, bo.getV15()); + lqw.eq(bo.getV41() != null, DeviceSpec80r::getV41, bo.getV41()); + lqw.eq(bo.getV42() != null, DeviceSpec80r::getV42, bo.getV42()); + lqw.eq(bo.getV43() != null, DeviceSpec80r::getV43, bo.getV43()); + lqw.eq(bo.getV44() != null, DeviceSpec80r::getV44, bo.getV44()); + lqw.eq(bo.getV45() != null, DeviceSpec80r::getV45, bo.getV45()); + lqw.eq(bo.getV46() != null, DeviceSpec80r::getV46, bo.getV46()); + lqw.eq(bo.getV47() != null, DeviceSpec80r::getV47, bo.getV47()); + lqw.eq(bo.getV48() != null, DeviceSpec80r::getV48, bo.getV48()); + lqw.eq(bo.getV49() != null, DeviceSpec80r::getV49, bo.getV49()); + lqw.eq(bo.getV50() != null, DeviceSpec80r::getV50, bo.getV50()); + lqw.eq(bo.getV51() != null, DeviceSpec80r::getV51, bo.getV51()); + return lqw; + } + + /** + * 新增80R设备规格参数 + */ + @Override + public Boolean insertByBo(DeviceSpec80rBo bo) { + DeviceSpec80r add = BeanUtil.toBean(bo, DeviceSpec80r.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改80R设备规格参数 + */ + @Override + public Boolean updateByBo(DeviceSpec80rBo bo) { + DeviceSpec80r update = BeanUtil.toBean(bo, DeviceSpec80r.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DeviceSpec80r entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除80R设备规格参数 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EleMaterialsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EleMaterialsServiceImpl.java index ebb23fa..11f6b11 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EleMaterialsServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/EleMaterialsServiceImpl.java @@ -198,41 +198,27 @@ public class EleMaterialsServiceImpl implements IEleMaterialsService { */ @Override public R> addToJindie() { - // 查询未处理的物料 - List newMaterials = baseMapper.selectList( - new LambdaQueryWrapper() - .eq(EleMaterials::getMaterialValue, "0") - ); - - if (newMaterials.isEmpty()) { + List newMaterials = baseMapper.selectList(new LambdaQueryWrapper() + .eq(EleMaterials::getMaterialValue, "0")); + if (newMaterials == null || newMaterials.isEmpty()) { log.warn("未找到符合条件的物料"); return R.fail("未找到需要处理的物料"); } - - // 处理物料并收集结果 - List results = newMaterials.stream() - .filter(material -> isValidMaterialValue(material.getMaterialValue())) - //推送金蝶 - .map(this::processMaterial) - .collect(Collectors.toList()); - - // 统计处理结果 - List successMaterials = results.stream() - .filter(ProcessResult::isSuccess) - .map(ProcessResult::getMaterial) - .collect(Collectors.toList()); - - List errorMessages = results.stream() - .filter(result -> !result.isSuccess()) - .map(ProcessResult::getErrorMessage) - .collect(Collectors.toList()); - - // 返回处理结果 + List successMaterials = new ArrayList<>(); + List errorMessages = new ArrayList<>(); + for (EleMaterials m : newMaterials) { + ProcessResult pr = processMaterial(m); + if (pr.success) { + successMaterials.add(pr.material); + } else { + String err = pr.errorMessage != null ? pr.errorMessage : "未知错误"; + errorMessages.add("ID=" + (m.getId() == null ? "" : m.getId()) + ":" + err); + } + } if (!successMaterials.isEmpty()) { return R.ok("成功推送 " + successMaterials.size() + " 条物料", successMaterials); - } else { - return R.fail("推送失败,错误信息: " + String.join(", ", errorMessages)); } + return R.fail("推送失败,错误信息: " + String.join(", ", errorMessages)); } /** @@ -342,7 +328,6 @@ public class EleMaterialsServiceImpl implements IEleMaterialsService { // 如果没有找到旧的物料编码,设置为默认编码 newCode = newMaterialsVo.getMaterialType() + "0000000001"; } - newMaterialsVo.setMaterialCode(newCode); log.info("生成新的物料编码======================>: {}", newCode); EleMaterials eleMaterials = BeanUtil.copyProperties(newMaterialsVo, EleMaterials.class); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessOrderProServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessOrderProServiceImpl.java index aef41c0..2f44f3d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessOrderProServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessOrderProServiceImpl.java @@ -1,13 +1,12 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.bean.BeanUtil; -import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; + import java.math.BigDecimal; + import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.PdfReader; import com.ruoyi.common.constant.Constants; @@ -23,18 +22,17 @@ import com.ruoyi.common.utils.file.DeleteFile; import com.ruoyi.common.utils.file.PDFDocHelper; import com.ruoyi.system.domain.*; -import com.ruoyi.system.domain.bo.FigureSaveBo; import com.ruoyi.system.domain.dto.ProcessRouteExcelDTO; -import com.ruoyi.system.domain.dto.ProcessRoutePushResultDTO; import com.ruoyi.system.domain.dto.excuteDrawing.DataInfo; import com.ruoyi.system.domain.dto.excuteDrawing.ProductInfo; import com.ruoyi.system.domain.dto.excuteDrawing.PwProductionBill; +import com.ruoyi.system.domain.dto.excuteDrawing.RigidChainModelDTO; import com.ruoyi.system.domain.vo.OverdueProjectVo; import com.ruoyi.system.domain.vo.ProductionOrderVo; import com.ruoyi.system.listener.FileToZip; import com.ruoyi.system.listener.SmbUtils; -import com.ruoyi.system.mapper.FigureSaveMapper; -import com.ruoyi.system.mapper.ProcessRouteMapper; +import com.ruoyi.system.mapper.*; +import com.ruoyi.system.runner.JdUtil; import com.ruoyi.system.service.*; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -46,17 +44,19 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.system.domain.bo.ProcessOrderProBo; import com.ruoyi.system.domain.vo.ProcessOrderProVo; -import com.ruoyi.system.mapper.ProcessOrderProMapper; import com.ruoyi.common.utils.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.multipart.MultipartFile; -import com.fasterxml.jackson.core.type.TypeReference; +import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; + import java.io.*; import java.nio.file.Paths; import java.text.SimpleDateFormat; import java.time.ZoneId; import java.time.temporal.ChronoUnit; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.ArrayList; import java.util.HashMap; @@ -77,20 +77,27 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService { private final IMaterialBomService materialBomService; private final ProcessOrderProMapper baseMapper; + private final DeviceSpec35rMapper deviceSpec35rMapper; + private final DeviceSpec30sMapper deviceSpec30sMapper; + private final DeviceSpec30dMapper deviceSpec30dMapper; + private final DeviceSpec40rMapper deviceSpec40rMapper; + private final DeviceSpec40sMapper deviceSpec40sMapper; + private final DeviceSpec60rMapper deviceSpec60rMapper; + private final DeviceSpec80rMapper deviceSpec80rMapper; + private final DeviceSpec100rMapper deviceSpec100rMapper; + + private final SafetyStockMapper safetyStockMapper; + @Autowired private ProcessRouteMapper processRouteMapper; @Autowired private IPcRigidChainService pcRigidChainService; private final IProcessRouteService iProcessRouteService; - private final IBomDetailsService iBomDetailsService; + private final IProductionOrderService iProductionOrderService; private static final String FILE_EXTENSION = ".xlsx"; // 目标文件后缀 private static final String LOCAL_DIR = "D:/file/"; private static final String ROBOTID = "8af8abea-3f21-4ca7-ad0a-5b7a2cf4d78e"; - // 企业ID - public static final String corpsecret = "ww3cd1a87df502cf3a"; - //应用ID - public static final String corpid = "1000002"; @Value("${app.drawing.base-path:F:}") private String basePath; @@ -100,11 +107,129 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService { @Value("${app.drawing.api-url:http://192.168.5.18:9000/generatedrawingscompatible}") private String apiUrl; - @Value("${app.drawing.api-url:http://192.168.5.18:9000/getstate}") - private String status; + @Value("${app.drawing.status-url:http://192.168.5.18:9000/getstate}") + private String statusUrl; @Autowired private IFigureSaveService iFigureSaveService; + private interface SpecStrategy { + ProductInfo build(FigureSave figureSave); + } + + private Map specStrategies; + + private void initStrategies() { + if (specStrategies != null) return; + specStrategies = new HashMap<>(); + specStrategies.put("35R", figureSave -> { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(DeviceSpec35r::getBoxType, figureSave.getBoxType()) + .eq(DeviceSpec35r::getTravelLength, Objects.toString(figureSave.getJdInventory(), "")) + .eq(DeviceSpec35r::getItemType, figureSave.getProductType()); + DeviceSpec35r device = deviceSpec35rMapper.selectOne(wrapper); + if (device == null) return null; + return buildProductInfo(figureSave, device); + }); + specStrategies.put("30S", figureSave -> { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(DeviceSpec30s::getBoxType, figureSave.getBoxType()) + .eq(DeviceSpec30s::getTravelLength, Objects.toString(figureSave.getJdInventory(), "")) + .eq(DeviceSpec30s::getItemType, figureSave.getProductType()); + DeviceSpec30s device = deviceSpec30sMapper.selectOne(wrapper); + if (device == null) return null; + return buildProductInfo30S(figureSave, device); + }); + specStrategies.put("30D", figureSave -> { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.eq(DeviceSpec30d::getBoxType, figureSave.getBoxType()) + .eq(DeviceSpec30d::getTravelLength, Objects.toString(figureSave.getJdInventory(), "")) + .eq(DeviceSpec30d::getItemType, figureSave.getProductType()); + DeviceSpec30d d = deviceSpec30dMapper.selectOne(w); + if (d == null) return null; + return buildProductInfoGeneric(figureSave, d); + }); + specStrategies.put("40R", figureSave -> { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.eq(DeviceSpec40r::getBoxType, figureSave.getBoxType()) + .eq(DeviceSpec40r::getTravelLength, Objects.toString(figureSave.getJdInventory(), "")) + .eq(DeviceSpec40r::getItemType, figureSave.getProductType()); + DeviceSpec40r d = deviceSpec40rMapper.selectOne(w); + if (d == null) return null; + return buildProductInfoGeneric(figureSave, d); + }); + specStrategies.put("40S", figureSave -> { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.eq(DeviceSpec40s::getBoxType, figureSave.getBoxType()) + .eq(DeviceSpec40s::getTravelLength, Objects.toString(figureSave.getJdInventory(), "")) + .eq(DeviceSpec40s::getItemType, figureSave.getProductType()); + DeviceSpec40s d = deviceSpec40sMapper.selectOne(w); + if (d == null) return null; + return buildProductInfoGeneric(figureSave, d); + }); + specStrategies.put("60R", figureSave -> { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.eq(DeviceSpec60r::getBoxType, figureSave.getBoxType()) + .eq(DeviceSpec60r::getTravelLength, Objects.toString(figureSave.getJdInventory(), "")) + .eq(DeviceSpec60r::getItemType, figureSave.getProductType()); + DeviceSpec60r d = deviceSpec60rMapper.selectOne(w); + if (d == null) return null; + return buildProductInfoGeneric(figureSave, d); + }); + specStrategies.put("80R", figureSave -> { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.eq(DeviceSpec80r::getBoxType, figureSave.getBoxType()) + .eq(DeviceSpec80r::getTravelLength, Objects.toString(figureSave.getJdInventory(), "")) + .eq(DeviceSpec80r::getItemType, figureSave.getProductType()); + DeviceSpec80r d = deviceSpec80rMapper.selectOne(w); + if (d == null) return null; + return buildProductInfoGeneric(figureSave, d); + }); + specStrategies.put("100R", figureSave -> { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.eq(DeviceSpec100r::getBoxType, figureSave.getBoxType()) + .eq(DeviceSpec100r::getTravelLength, Objects.toString(figureSave.getJdInventory(), "")) + .eq(DeviceSpec100r::getItemType, figureSave.getProductType()); + DeviceSpec100r d = deviceSpec100rMapper.selectOne(w); + if (d == null) return null; + return buildProductInfoGeneric(figureSave, d); + }); + + + } + + private SpecStrategy getStrategyForType(String productType) { + initStrategies(); + String key = Objects.toString(productType, "").toUpperCase().replace(" ", ""); + Map alias = new HashMap<>(); + alias.put("35R(W)", "35R"); + alias.put("35RX", "35R"); + alias.put("60R-FR", "60R"); + alias.put("60RX", "60R"); + alias.put("40P", "40S"); + alias.put("40RX", "40R"); + alias.put("40RT", "40R"); + alias.put("40R-FR", "40R"); + alias.put("80R-FR04", "80R"); + alias.put("80R-FR06", "80R"); + alias.put("80RX", "80R"); + + alias.put("100R-FR15", "100R"); + alias.put("100R-FR25", "100R"); + alias.put("100RX", "100R"); + alias.put("125R-FR", "125R"); + String mapped = alias.get(key); + if (mapped != null) { + SpecStrategy st = specStrategies.get(mapped); + if (st != null) return st; + } + for (String prefix : specStrategies.keySet()) { + if (key.startsWith(prefix)){ + return specStrategies.get(prefix); + } + } + return null; + } + /** * 查询项目令号 */ @@ -325,13 +450,47 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService { return baseMapper.selectList(qw); } - /** - * @param bo - */ + @Override - public void addProduct(FigureSaveBo bo, ProcessOrderProBo orderPro) { + public void addProduct(RigidChainModelDTO orderPro) { FigureSave figureSave = new FigureSave(); - BeanUtils.copyProperties(bo, figureSave); + // 解析图号格式: 类型/轴向-变量/层级(D|T|S) + // 仅当符合该格式时执行解析; 不符合时使用入参中的各字段直接生成名称 + String fig = orderPro.getFigureNumber(); + String type; + String axial; + String journey; + String box; + Pattern FIGURE_PATTERN = Pattern.compile("^(?[^/]+)/(?[^/-]+)-(?[^/]+)(?:/(?[DTS]))?$"); + Matcher m = fig != null ? FIGURE_PATTERN.matcher(fig) : null; + if (m != null && m.matches()) { + type = m.group("type"); + axial = m.group("axial"); + journey = m.group("journey"); + box = m.group("box"); + } else { + axial = Objects.toString(orderPro.getAxialType(), ""); + type = Objects.toString(orderPro.getProductType(),""); + journey = Objects.toString(orderPro.getJourney(), ""); + box = Objects.toString(orderPro.getBoxType(), ""); + } + + + figureSave.setProductionCode(orderPro.getProductionCode()); + figureSave.setFigureNum(Long.valueOf(orderPro.getFigureNum())); + figureSave.setDrawPath(orderPro.getDrawPath()); + figureSave.setPid(orderPro.getPid()); + figureSave.setId(orderPro.getId()); + figureSave.setProductType(type); + figureSave.setFigureNumber(fig); + figureSave.setFigureName(orderPro.getFigureName()); + figureSave.setAxialType(axial); + figureSave.setBoxType(box); + try { + figureSave.setJdInventory(Long.valueOf(journey)); + } catch (Exception ignore) { + } + //更新产品类型 figureSaveMapper.insert(figureSave); } @@ -419,17 +578,25 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService { } private List buildProductInfos(Long orderId) { - // 查询FigureSave - List productionOrders = figureSaveMapper.selectList(new LambdaQueryWrapper().eq(FigureSave::getPid, orderId)); - - // 批量查询PcRigidChain,避免N+1问题 - Set figureNumbers = productionOrders.stream().map(FigureSave::getFigureNumber).collect(Collectors.toSet()); - - Map rigidChainMap = pcRigidChainService.selectByTypeNames(figureNumbers).stream().collect(Collectors.toMap(PcRigidChain::getTypeName, Function.identity())); - - return productionOrders.stream().map(figureSave -> buildProductInfo(figureSave, rigidChainMap.get(figureSave.getFigureNumber()))).collect(Collectors.toList()); + List figureSaveList = figureSaveMapper.selectList(new LambdaQueryWrapper().eq(FigureSave::getPid, orderId)); + return figureSaveList.stream() + .map(fs -> { + SpecStrategy st = getStrategyForType(fs.getProductType()); + ProductInfo pi = st != null ? st.build(fs) : null; + return pi != null ? pi : buildProductInfoFallback(fs); + }) + .collect(Collectors.toList()); } - + //出图时如果不是标准的产品,而是零件图的话,变量会为空 + private ProductInfo buildProductInfoFallback(FigureSave figureSave) { + ProductInfo productInfo = new ProductInfo(); + productInfo.setAssembledrawing(figureSave.getFigureNumber()); + productInfo.setNumber(String.valueOf(figureSave.getFigureNum())); + productInfo.setSourcefile(figureSave.getDrawPath().replace("/", "\\")); + productInfo.setVars(new DataInfo()); + return productInfo; + } +/* private ProductInfo buildProductInfo(FigureSave figureSave, PcRigidChain rigidChain) { ProductInfo productInfo = new ProductInfo(); productInfo.setAssembledrawing(figureSave.getFigureNumber()); @@ -439,6 +606,37 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService { DataInfo datainfo = buildDataInfo(rigidChain); productInfo.setVars(datainfo); return productInfo; + }*/ + + private ProductInfo buildProductInfo(FigureSave figureSave, DeviceSpec35r device) { + ProductInfo productInfo = new ProductInfo(); + productInfo.setAssembledrawing(figureSave.getFigureNumber()); + productInfo.setNumber(String.valueOf(figureSave.getFigureNum())); + productInfo.setSourcefile(figureSave.getDrawPath().replace("/", "\\")); + log.info("项目生产令号为:{}查询设备参数: {}+ 产品名称: {}", figureSave.getProductionCode(), figureSave.getFigureNumber(), figureSave.getFigureName()); + DataInfo datainfo = buildDataInfo(device); + productInfo.setVars(datainfo); + return productInfo; + } + private ProductInfo buildProductInfo30S(FigureSave figureSave, DeviceSpec30s device) { + ProductInfo productInfo = new ProductInfo(); + productInfo.setAssembledrawing(figureSave.getFigureNumber()); + productInfo.setNumber(String.valueOf(figureSave.getFigureNum())); + productInfo.setSourcefile(figureSave.getDrawPath().replace("/", "\\")); + log.info("项目生产令号为:{}查询设备参数: {}+ 产品名称: {}", figureSave.getProductionCode(), figureSave.getFigureNumber(), figureSave.getFigureName()); + DataInfo datainfo = buildDataInfo30S(device); + productInfo.setVars(datainfo); + return productInfo; + } + + private ProductInfo buildProductInfoGeneric(FigureSave figureSave, Object device) { + ProductInfo productInfo = new ProductInfo(); + productInfo.setAssembledrawing(figureSave.getFigureNumber()); + productInfo.setNumber(String.valueOf(figureSave.getFigureNum())); + productInfo.setSourcefile(figureSave.getDrawPath().replace("/", "\\")); + DataInfo datainfo = buildDataInfoGeneric(device); + productInfo.setVars(datainfo); + return productInfo; } private DataInfo buildDataInfo(PcRigidChain rigidChain) { @@ -449,6 +647,28 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService { return datainfo; } + private DataInfo buildDataInfo(DeviceSpec35r device) { + DataInfo datainfo = new DataInfo(); + if (device != null) { + setDataInfoFields(datainfo, device); + } + return datainfo; + } private DataInfo buildDataInfo30S(DeviceSpec30s device) { + DataInfo datainfo = new DataInfo(); + if (device != null) { + setDataInfoFields(datainfo, device); + } + return datainfo; + } + + private DataInfo buildDataInfoGeneric(Object device) { + DataInfo datainfo = new DataInfo(); + if (device != null) { + setDataInfoFields(datainfo, device); + } + return datainfo; + } + private void setDataInfoFields(DataInfo datainfo, PcRigidChain rigidChain) { if (rigidChain == null) { return; @@ -531,41 +751,180 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService { datainfo.setG20(String.valueOf(rigidChain.getGTwenty())); } + private void setDataInfoFields(DataInfo datainfo, Object device) { + BeanWrapper bw = new BeanWrapperImpl(device); + Function read = name -> { + Object val = null; + if (bw.isReadableProperty(name)) val = bw.getPropertyValue(name); + else { + String alt = name.toLowerCase(); + if (bw.isReadableProperty(alt)) val = bw.getPropertyValue(alt); + } + return Objects.toString(val, ""); + }; + datainfo.setV1(read.apply("V1")); + datainfo.setV2(read.apply("V2")); + datainfo.setV3(read.apply("V3")); + datainfo.setV4(read.apply("V4")); + datainfo.setV5(read.apply("V5")); + datainfo.setV6(read.apply("V6")); + datainfo.setV7(read.apply("V7")); + datainfo.setV8(read.apply("V8")); + datainfo.setV9(read.apply("V9")); + datainfo.setV10(read.apply("V10")); + datainfo.setV11(read.apply("V11")); + datainfo.setV12(read.apply("V12")); + datainfo.setV13(read.apply("V13")); + datainfo.setV14(read.apply("V14")); + datainfo.setV15(read.apply("V15")); + datainfo.setV16(read.apply("V16")); + datainfo.setV17(read.apply("V17")); + datainfo.setV18(read.apply("V18")); + datainfo.setV19(read.apply("V19")); + datainfo.setV20(read.apply("V20")); + datainfo.setV21(read.apply("V21")); + datainfo.setV22(read.apply("V22")); + datainfo.setV23(read.apply("V23")); + datainfo.setV24(read.apply("V24")); + datainfo.setV25(read.apply("V25")); + datainfo.setV26(read.apply("V26")); + datainfo.setV27(read.apply("V27")); + datainfo.setV28(read.apply("V28")); + datainfo.setV29(read.apply("V29")); + datainfo.setV30(read.apply("V30")); + datainfo.setV31(read.apply("V31")); + datainfo.setV32(read.apply("V32")); + datainfo.setV33(read.apply("V33")); + datainfo.setV34(read.apply("V34")); + datainfo.setV35(read.apply("V35")); + datainfo.setV36(read.apply("V36")); + datainfo.setV37(read.apply("V37")); + datainfo.setV38(read.apply("V38")); + datainfo.setV39(read.apply("V39")); + datainfo.setV40(read.apply("V40")); + datainfo.setV41(read.apply("V41")); + datainfo.setV42(read.apply("V42")); + datainfo.setV43(read.apply("V43")); + datainfo.setV44(read.apply("V44")); + datainfo.setV45(read.apply("V45")); + datainfo.setV46(read.apply("V46")); + datainfo.setV47(read.apply("V47")); + datainfo.setV48(read.apply("V48")); + datainfo.setV49(read.apply("V49")); + datainfo.setV50(read.apply("V50")); + datainfo.setV51(read.apply("V51")); + datainfo.setV52(read.apply("V52")); + datainfo.setV53(read.apply("V53")); + + datainfo.setG1(read.apply("G1")); + datainfo.setG2(read.apply("G2")); + datainfo.setG3(read.apply("G3")); + datainfo.setG4(read.apply("G4")); + datainfo.setG5(read.apply("G5")); + datainfo.setG6(read.apply("G6")); + datainfo.setG7(read.apply("G7")); + } + + /** + * 创建35R变量实体 + * @param datainfo + * @param device + */ + private void setDataInfoFields(DataInfo datainfo, DeviceSpec35r device) { + if (device == null) { + return; + } + + datainfo.setV1(Objects.toString(device.getV1(), "")); + datainfo.setV2(Objects.toString(device.getV2(), "")); + datainfo.setV3(Objects.toString(device.getV3(), "")); + datainfo.setV5(Objects.toString(device.getV5(), "")); + datainfo.setV6(Objects.toString(device.getV6(), "")); + datainfo.setV8(Objects.toString(device.getV8(), "")); + datainfo.setV9(Objects.toString(device.getV9(), "")); + datainfo.setV10(Objects.toString(device.getV10(), "")); + datainfo.setV12(Objects.toString(device.getV12(), "")); + datainfo.setV14(Objects.toString(device.getV14(), "")); + datainfo.setV41(Objects.toString(device.getV41(), "")); + datainfo.setV42(Objects.toString(device.getV42(), "")); + datainfo.setV43(Objects.toString(device.getV43(), "")); + datainfo.setV44(Objects.toString(device.getV44(), "")); + datainfo.setV45(Objects.toString(device.getV45(), "")); + datainfo.setV46(Objects.toString(device.getV46(), "")); + datainfo.setV47(Objects.toString(device.getV47(), "")); + datainfo.setV48(Objects.toString(device.getV48(), "")); + + datainfo.setG1(Objects.toString(device.getG1(), "")); + datainfo.setG2(Objects.toString(device.getG2(), "")); + datainfo.setG5(Objects.toString(device.getG5(), "")); + datainfo.setG6(Objects.toString(device.getG6(), "")); + datainfo.setG7(Objects.toString(device.getG7(), "")); + } + /** + * 创建30S变量实体 + * @param datainfo + * @param device + */ + private void setDataInfoFields(DataInfo datainfo, DeviceSpec30s device) { + if (device == null) { + return; + } + + datainfo.setV1(Objects.toString(device.getV1(), "")); + datainfo.setV2(Objects.toString(device.getV2(), "")); + datainfo.setV3(Objects.toString(device.getV3(), "")); + datainfo.setV5(Objects.toString(device.getV5(), "")); + datainfo.setV8(Objects.toString(device.getV8(), "")); + datainfo.setV10(Objects.toString(device.getV10(), "")); + datainfo.setV12(Objects.toString(device.getV12(), "")); + datainfo.setV41(Objects.toString(device.getV41(), "")); + datainfo.setV42(Objects.toString(device.getV42(), "")); + datainfo.setV43(Objects.toString(device.getV43(), "")); + datainfo.setV44(Objects.toString(device.getV44(), "")); + datainfo.setV45(Objects.toString(device.getV45(), "")); + datainfo.setV46(Objects.toString(device.getV46(), "")); + + datainfo.setG1(Objects.toString(device.getG1(), "")); + datainfo.setG5(Objects.toString(device.getG5(), "")); + datainfo.setG6(Objects.toString(device.getG6(), "")); + } + private String callDrawingApi(PwProductionBill pwProductionBill, ProcessOrderProBo orderPro) { try { String drawingDate = JSONObject.toJSONString(pwProductionBill); log.info("请求出图报文=====>{}", drawingDate); + String preStatusResp = HttpUtils.sendGet(statusUrl, "UTF-8"); + JSONObject preJson = JSONObject.parseObject(preStatusResp); + String preStatus = preJson.getString("status"); + if ("busy".equals(preStatus)) { + throw new RuntimeException("出图服务忙,请稍后再试"); + } + // 1. 先发起生成请求 String response = HttpUtils.sendPost(apiUrl, drawingDate); log.info("出图接口响应=====>{}", response); - // 2. 开始轮询状态接口,直到完成 - boolean finished = false; - int maxRetry = 360; // 最多轮询 60 次(根据需求调整,比如 60*5s=5分钟) - int count = 0; - - while (!finished && count < maxRetry) { - String statusResp = HttpUtils.sendGet(status, "UTF-8"); + int productCount = pwProductionBill.getProduct() == null ? 1 : pwProductionBill.getProduct().size(); + long start = System.currentTimeMillis(); + long maxWaitMs = Math.min(30 * 60_000L, 8 * 60_000L + productCount * 60_000L); + int tick = 0; + while (System.currentTimeMillis() - start < maxWaitMs) { + String statusResp = HttpUtils.sendGet(statusUrl, "UTF-8"); JSONObject json = JSONObject.parseObject(statusResp); - String currentStatus = json.getString("status"); int processState = json.getIntValue("processstate"); - log.info("进度状态=====>status={}, processstate={}", currentStatus, processState); - // 判断完成条件processstate=4 表示完成 if ("idle".equals(currentStatus) && processState == 4) { ProcessOrderPro processOrderPro = new ProcessOrderPro(); BeanUtils.copyProperties(orderPro, processOrderPro); - - processOrderPro.setBomStatus(1L);// + processOrderPro.setBomStatus(1L); baseMapper.updateById(processOrderPro); log.info("图纸处理完成!"); return response; } - - // 没完成就等待一会儿再查 - Thread.sleep(1000); // 1 秒轮询一次 - count++; + long sleepMs = tick < 60 ? 1000L : (tick < 240 ? 2000L : 5000L); + Thread.sleep(sleepMs); + tick++; } throw new RuntimeException("图纸生成超时未完成"); @@ -576,6 +935,54 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService { } } + @Override + public SseEmitter startDrawingSse(Long id) { + SseEmitter emitter = new SseEmitter(0L); + new Thread(() -> { + try { + ProcessOrderPro order = baseMapper.selectById(id); + ProcessOrderProBo bo = new ProcessOrderProBo(); + BeanUtils.copyProperties(order, bo); + String dirPath = buildDirectoryPath(order.getProductionOrderNo()); + PwProductionBill bill = buildProductionBill(bo, dirPath); + List infos = buildProductInfos(order.getId()); + bill.setProduct(infos); + String startResp = HttpUtils.sendPost(apiUrl, JSONObject.toJSONString(bill)); + emitter.send(SseEmitter.event().name("start").data(startResp)); + boolean finished = false; + int maxRetry = 360; + int count = 0; + while (count < maxRetry) { + String statusResp = HttpUtils.sendGet(statusUrl, "UTF-8"); + JSONObject json = JSONObject.parseObject(statusResp); + String currentStatus = json.getString("status"); + int processState = json.getIntValue("processstate"); + emitter.send(SseEmitter.event().name("progress").id(String.valueOf(count)).data(json.toJSONString())); + if ("idle".equals(currentStatus) && processState == 4) { + ProcessOrderPro update = new ProcessOrderPro(); + BeanUtils.copyProperties(order, update); + update.setBomStatus(1L); + baseMapper.updateById(update); + emitter.send(SseEmitter.event().name("completed").data(startResp)); + finished = true; + emitter.complete(); + return; + } + Thread.sleep(1000); + count++; + } + emitter.send(SseEmitter.event().name("error").data("timeout")); + emitter.complete(); + } catch (Exception ex) { + try { + emitter.send(SseEmitter.event().name("error").data(Objects.toString(ex.getMessage(), "error"))); + } catch (Exception ignore) {} + emitter.completeWithError(ex); + } + }).start(); + return emitter; + } + /** * @param id @@ -670,7 +1077,9 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService { // 8. 分类PDF到 zip/工作中心/ 文件夹 String watermarkedPdfDir = arr + code + "/zip"; - classifyPdfByWorkCenterToTarget(watermarkedPdfDir, code, arr + code + "/zip"); + String productionOrderNo = processOrderPro.getProductionOrderNo(); + + classifyPdfByWorkCenterToTarget(productionOrderNo,watermarkedPdfDir, code, arr + code + "/zip"); // 8.1 删除 zip/ 根目录中未分类的 PDF 文件(只保留分类目录) File[] zipPdfFiles = new File(watermarkedPdfDir).listFiles((dir, name) -> name.toLowerCase().endsWith(".pdf")); @@ -737,19 +1146,36 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService { /** * 将 PDF 按工作中心分类复制到目标目录(如 zip/工作中心/) */ - private void classifyPdfByWorkCenterToTarget(String sourceDirPath, String code, String targetBaseDirPath) { + private void classifyPdfByWorkCenterToTarget(String productionOrderNo,String sourceDirPath, String code, String targetBaseDirPath) { + //按工作中心 分类时 查找是否有采购申请单 和生产订单 + //获取这个项目的所有生产令号 + List orderList = JdUtil.getOrderNumberCollection(productionOrderNo); + List cgorderList = JdUtil.getCaiGouOrderNumberList(productionOrderNo); + + File sourceDir = new File(sourceDirPath); if (!sourceDir.exists() || !sourceDir.isDirectory()) return; - File[] pdfFiles = sourceDir.listFiles((dir, name) -> name.endsWith(".pdf")); + File[] pdfFiles = sourceDir.listFiles((dir, name) -> name.toLowerCase().endsWith(".pdf")); if (pdfFiles == null || pdfFiles.length == 0) return; + List unmovedMaterials = new ArrayList<>(); + for (File pdf : pdfFiles) { String materialCode = extractMaterialCode(pdf.getName()); if (materialCode == null) continue; - String workCenter = iProcessRouteService.getRouteCode(materialCode, code); - if (workCenter == null || workCenter.isEmpty()) workCenter = "无工段"; + String workCenter; + //如果这个文件的生产令号 在 生产令号列表 中 或者 采购申请单列表 中 ,则 可以分类到对应的文件夹中 + // 由于物料名近似(如KP08和KP08.7),使用equals精确匹配,不使用contains + if (!orderList.contains(materialCode) && !cgorderList.contains(materialCode)) { + unmovedMaterials.add(materialCode); + workCenter = "未匹配订单"; + } else { + workCenter = iProcessRouteService.getRouteCode(materialCode, code); + if (iProductionOrderService.isPurchas(productionOrderNo, materialCode)) workCenter = "外购件"; + if (workCenter == null || workCenter.isEmpty()) workCenter = "无工段"; + } File workCenterDir = new File(targetBaseDirPath, workCenter); if (!workCenterDir.exists()) workCenterDir.mkdirs(); @@ -762,6 +1188,10 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService { log.warn("PDF {} 复制失败: {}", pdf.getName(), e.getMessage()); } } + + if (!unmovedMaterials.isEmpty()) { + log.info("以下物料未匹配到生产订单或采购申请单,未进行分类移动: {}", unmovedMaterials); + } } /** @@ -967,9 +1397,11 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService { @Override public String uploadContractPDF(Integer id, String originalFilename, MultipartFile filePath) { + if (id == null) { + return "ID不能为空"; + } // 1. 获取数据 FigureSave figureSave = figureSaveMapper.selectById(id); - ProcessOrderPro processOrderPro = baseMapper.selectById(figureSave); if (figureSave == null) return "图纸信息不存在"; String code = figureSave.getProductionCode(); // 2. 拼接本地路径和FTP路径 @@ -1132,7 +1564,7 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService { * @return */ @Override - public List getRouteAndBomDetail(List routlist,List processDataList, ProcessOrderPro orderPro) { + public List getRouteAndBomDetail(List routlist, List processDataList, ProcessOrderPro orderPro) { String proRoot = orderPro.getProductionOrderNo(); // 查出所有工艺路线和BOM diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessRouteServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessRouteServiceImpl.java index 8d38d77..3208e4e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessRouteServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessRouteServiceImpl.java @@ -30,6 +30,7 @@ import com.ruoyi.system.domain.dto.*; import com.ruoyi.system.domain.vo.*; import com.ruoyi.system.jdmain.rouplan.FEntity; import com.ruoyi.system.jdmain.rouplan.FSubEntity; +import com.ruoyi.system.jdmain.rouplan.FidEntryIdDTO; import com.ruoyi.system.jdmain.rouplan.Model; import com.ruoyi.system.jdmain.route.ProcessModel; import com.ruoyi.system.listener.LoadBomResult; @@ -54,8 +55,10 @@ import java.util.concurrent.*; import java.util.stream.Collectors; import static com.ruoyi.system.controller.BomDetailsController.*; +import static com.ruoyi.system.runner.JdUtil.updateCgOrder1; import static com.ruoyi.system.runner.JsonConverter.createProcessModel; import static com.ruoyi.system.runner.updatePcessPlanConver.updatePcessPlan1; +import static com.ruoyi.system.runner.updatePcessPlanConver.updatePcessPlan2; /** * 工艺路线Service业务层处理 @@ -331,6 +334,7 @@ public class ProcessRouteServiceImpl implements IProcessRouteService { } + private String generateKey1(BomDetails bomDetail, ProcessRoute processRoute) { return String.format("%s:%s:%s", processRoute.getMaterialCode(), processRoute.getMaterialName(), bomDetail.getName(), bomDetail.getPartNumber()); } @@ -839,11 +843,8 @@ public class ProcessRouteServiceImpl implements IProcessRouteService { bomDetails.setMaterial(productionOrderVo.getMaterial()); String materialCode = productionOrderVo.getDrawingNo(); - if (iMaterialTotalService.getVMIByCode(materialCode)) { - bomDetails.setRemarks("VMI"); - } else { - bomDetails.setRemarks(productionOrderVo.getRemark()); - } + bomDetails.setRemarks(productionOrderVo.getRemark()); + bomDetails.setDanZhong(productionOrderVo.getSingleWeight()); // 判断外购或自制 String drawingNo = productionOrderVo.getDrawingNo(); @@ -1519,20 +1520,14 @@ public class ProcessRouteServiceImpl implements IProcessRouteService { public List getSelectProceOrder1(String rooteProdet) { K3CloudApi client = new K3CloudApi(); - // 第一次查询:使用 F_HBYT_SCLH List result = queryWithFieldName(client, "F_HBYT_SCLH", rooteProdet); - - /* - * // 如果第一次查询结果为空,使用 子生产令号 重新查询 - * if (result == null || result.isEmpty()) { - * result = queryWithFieldName(client, "F_HBYT_ZSCLH", rooteProdet); - * } - */ return result; } - // 将查询方法提取为私有方法 + /* + 根据生产令号查询 返回订单编号 物料编码名称 + */ private List queryWithFieldName(K3CloudApi client, String fieldName, String rooteProdet) { JsonObject json = new JsonObject(); json.addProperty("FormId", "PRD_MO"); @@ -1669,11 +1664,15 @@ public class ProcessRouteServiceImpl implements IProcessRouteService { for (ProcessRoute processRoute : rawBomList) { ProcessTimeInfo processTimeInfo = selectProcessRouteByMaterialCode(numDTO.getFProcessId_number(), rooteProdet); if (numDTO.getFProcessId_number().equals(processRoute.getMaterialCode())) { + numDTO.setFPlanStartTime(processTimeInfo.getTenthProcessStartTime()); numDTO.setFPlanFinishTime(processTimeInfo.getLastProcessEndTime()); List fEntity = numDTO.getFEntity(); + for (FEntity entity : fEntity) { + for (FSubEntity fSubEntity : entity.getFSubEntity()) { + if (fSubEntity.getFOperNumber().equals(processRoute.getProcessNo())) { fSubEntity.setFOperPlanStartTime(processRoute.getXuStartTime()); fSubEntity.setFOperPlanFinishTime(processRoute.getXuEndTime()); @@ -2031,7 +2030,7 @@ public class ProcessRouteServiceImpl implements IProcessRouteService { json.addProperty("FieldKeys", "FID,FSubEntity_FDetailID,FProductId.FNumber,FOperNumber,FEntity_FEntryID,FProcessId.FName,FSeqNumber,FSeqName,FPlanStartTime,FPlanFinishTime," + - "FOperPlanStartTime,FOperPlanFinishTime,FMONumber"); + "FOperPlanStartTime,FOperPlanFinishTime,FMONumber,F_HBYT_RKCK.FName"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); @@ -2115,6 +2114,7 @@ public class ProcessRouteServiceImpl implements IProcessRouteService { fSubEntity.setFOperNumber(dto.getFOperNumber()); fSubEntity.setFOperPlanStartTime((dto.getFOperPlanStartTime())); fSubEntity.setFOperPlanFinishTime(dto.getFOperPlanFinishTime()); + fSubEntity.setRkckName(dto.getFRKCKFName()); fEntity.getFSubEntity().add(fSubEntity); } @@ -2495,17 +2495,12 @@ public class ProcessRouteServiceImpl implements IProcessRouteService { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ProcessRoute::getRouteDescription, rooteProdet); List routeList = baseMapper.selectList(wrapper); - - Map> groupedByMaterialCode = routeList.stream() - .collect(Collectors.groupingBy(ProcessRoute::getMaterialCode)); - + Map> groupedByMaterialCode = routeList.stream().collect(Collectors.groupingBy(ProcessRoute::getMaterialCode)); Set processedMaterialCodes = new HashSet<>(); // 用于去重 - if (planOrderList == null || planOrderList.isEmpty()) { log.warn("没有找到生产订单"); return Collections.emptyList(); } - for (PlanOrderVo planOrder : planOrderList) { for (Model numDTO : numDTOS) { if (planOrder.getFBillNo().equals(numDTO.getFMONumber())) { @@ -2514,8 +2509,7 @@ public class ProcessRouteServiceImpl implements IProcessRouteService { String materialCode = String.valueOf(fidToProductionOrder.getFID()); if (!processedMaterialCodes.contains(materialCode)) { try { - List routeList1 = groupedByMaterialCode - .get(planOrder.getFmaterialidFnumber()); + List routeList1 = groupedByMaterialCode.get(planOrder.getFmaterialidFnumber()); Date xuStartTime = null; Date xuEndTime = null; if (routeList1 != null && !routeList1.isEmpty()) { @@ -2601,5 +2595,57 @@ public class ProcessRouteServiceImpl implements IProcessRouteService { return null; // 如果没有找到,返回 null } + /** + * 更新生产订单仓库字段 + */ + @Override + public List updateProductionOrders(String rooteProdet, String cangKuNum) throws Exception { + // 1. 更新生产订单 (PRD_MO) + List planOrderList = getSelectProceOrder1(rooteProdet); + for (PlanOrderVo planOrderVo : planOrderList) { + JdHuoZhu fidToProductionOrder = JdUtil.getFIDToProductionOrder(planOrderVo); + if (fidToProductionOrder != null) { + // 更新生产订单的仓库 + JdUtil.updateOrder2(fidToProductionOrder, cangKuNum); + } + } + + // 2. 更新工序计划单 (SFC_OperationPlanning) + List numDTOS = getSelecPlan(rooteProdet); + boolean needUpdate = false; + for (Model numDTO : numDTOS) { + List fEntityList = numDTO.getFEntity(); + if (fEntityList != null && !fEntityList.isEmpty()) { + for (FEntity fEntity : fEntityList) { + List fSubEntityList = fEntity.getFSubEntity(); + if (fSubEntityList != null && !fSubEntityList.isEmpty()) { + for (FSubEntity fSubEntity : fSubEntityList) { + // 设置入库仓库 + fSubEntity.setRkckName(cangKuNum); + needUpdate = true; + } + } + } + } + } + + if (needUpdate) { + updatePcessPlan2(numDTOS); + } + + return Collections.emptyList(); + } + + public List updateCgOrders(String rooteProdet, String cangKuNum) throws Exception { + List planOrderList = getSelectProceOrder1(rooteProdet); + for (PlanOrderVo planOrderVo : planOrderList) { + List fidEntryIdDTOS = JdUtil.queryFidAndEntryId(planOrderVo.getFBillNo()); + for (FidEntryIdDTO fidEntryIdDTO : fidEntryIdDTOS) { + + } + String s = updateCgOrder1(fidEntryIdDTOS, cangKuNum); + } + return null; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProductionOrderServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProductionOrderServiceImpl.java index f0a523f..a2c1ad3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProductionOrderServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProductionOrderServiceImpl.java @@ -320,5 +320,27 @@ public class ProductionOrderServiceImpl implements IProductionOrderService { return baseMapper.selectList(wrapper); } + /** + * 判断如果是外购产品,返回true + * @param proCode + * @param materialCode + * @return + */ + @Override + public Boolean isPurchas(String proCode, String materialCode) { + if (proCode == null || materialCode == null) { + return false; + } + String p = proCode.trim(); + String m = materialCode.trim(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ProductionOrder::getProductionOrderNo, p) + .eq(ProductionOrder::getDrawingNo, m) + .isNotNull(ProductionOrder::getRemark) + .like(ProductionOrder::getRemark, "外购"); + Long count = baseMapper.selectCount(wrapper); + return count != null && count > 0; + } + } diff --git a/ruoyi-system/src/main/resources/jpg/安全库存数据模板.xlsx b/ruoyi-system/src/main/resources/jpg/安全库存数据模板.xlsx new file mode 100644 index 0000000..edc75bf Binary files /dev/null and b/ruoyi-system/src/main/resources/jpg/安全库存数据模板.xlsx differ diff --git a/ruoyi-system/src/main/resources/jpg/工段数据模板.xlsx b/ruoyi-system/src/main/resources/jpg/工段数据模板.xlsx new file mode 100644 index 0000000..e10e4ad Binary files /dev/null and b/ruoyi-system/src/main/resources/jpg/工段数据模板.xlsx differ diff --git a/ruoyi-system/src/main/resources/jpg/延期工段数据模板.xlsx b/ruoyi-system/src/main/resources/jpg/延期工段数据模板.xlsx new file mode 100644 index 0000000..fce416c Binary files /dev/null and b/ruoyi-system/src/main/resources/jpg/延期工段数据模板.xlsx differ diff --git a/ruoyi-system/src/main/resources/mapper/system/DeviceSpec100rMapper.xml b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec100rMapper.xml new file mode 100644 index 0000000..42e1044 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec100rMapper.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/DeviceSpec125rMapper.xml b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec125rMapper.xml new file mode 100644 index 0000000..a66287e --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec125rMapper.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/DeviceSpec150rMapper.xml b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec150rMapper.xml new file mode 100644 index 0000000..3375708 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec150rMapper.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/DeviceSpec30dMapper.xml b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec30dMapper.xml new file mode 100644 index 0000000..b9f7939 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec30dMapper.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/DeviceSpec30sMapper.xml b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec30sMapper.xml new file mode 100644 index 0000000..66c1858 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec30sMapper.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/DeviceSpec35rMapper.xml b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec35rMapper.xml index fec99dc..9b6a356 100644 --- a/ruoyi-system/src/main/resources/mapper/system/DeviceSpec35rMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec35rMapper.xml @@ -31,6 +31,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + diff --git a/ruoyi-system/src/main/resources/mapper/system/DeviceSpec40rMapper.xml b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec40rMapper.xml new file mode 100644 index 0000000..8e93acb --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec40rMapper.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/DeviceSpec40sMapper.xml b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec40sMapper.xml new file mode 100644 index 0000000..d9c9fd7 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec40sMapper.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/DeviceSpec60rMapper.xml b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec60rMapper.xml new file mode 100644 index 0000000..4eb0020 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec60rMapper.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/DeviceSpec80rMapper.xml b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec80rMapper.xml new file mode 100644 index 0000000..59c9318 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/DeviceSpec80rMapper.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/FigureSaveMapper.xml b/ruoyi-system/src/main/resources/mapper/system/FigureSaveMapper.xml index 9180074..b7ad7d3 100644 --- a/ruoyi-system/src/main/resources/mapper/system/FigureSaveMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/FigureSaveMapper.xml @@ -18,6 +18,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + +