jindie xiangguangognneng

This commit is contained in:
tzy 2025-12-30 21:00:03 +08:00
parent eeae37b7b7
commit 3c0a849df7
120 changed files with 11024 additions and 349 deletions

View File

@ -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` BeanService 里使用模板执行参数化 SQL
## 验证步骤
- 启动后编写一条简单查询TOP 10验证连通
- 确认连接池参数和超时生效;异常时输出清晰日志
确认后我按你选择的“动态数据源/JdbcTemplate”方式补全配置、注册 Bean并提供示例查询接口与 Service。

View File

@ -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<Map<String,Object>>
- 构建 `excelDTOList`(工艺 ProcessRouteExcelDTO 列表)
2. 动态映射:
- `DynamicDataMapping.createOneDataList("KingdeeBomData", kingdeeBomRows)`
- `DynamicDataMapping.createOneDataList("ProcessRouteExcelDTO", evoRouteDataList)`
3. 模板在同一Sheet中放置两个表格块分别绑定以上占位名
## 排序与顺序
- 物料:沿用 `routeList` 的顺序
- 工艺:`processNo` 升序,`null` 置后
## 边界情况
- 无工艺B区为空但A区仍输出该物料的BOM
- 无BOMA区不输出该物料B区正常输出工艺
- 版本查询失败A区跳过该物料或显示“未查询到”标记
## 验证
- 用两种物料进行导出测试:一个多工序、一个单工序;核对两区行数与内容
- 对比你提供的示例Excel确认列头、顺序与格式
## 请你确认/提供
- 同一Sheet模板文件或示意图两块区域位置与占位名是否采用 `KingdeeBomData``ProcessRouteExcelDTO`
- BOM“一条数据”的取值方式直接取第一条还是需要汇总若后续会出现多子项
- 是否需要在两区之间加入分隔行/标题行的样式要求
确认后我将按该方案更新导出逻辑并给你可下载的Excel。

View File

@ -100,11 +100,18 @@
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.4.0.jre8</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dingtalk</artifactId>
<version>2.2.41</version>
</dependency>

View File

@ -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));

View File

@ -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

View File

@ -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

View File

@ -289,3 +289,5 @@ management:
show-details: ALWAYS
logfile:
external-file: ./logs/sys-console.log
dingtalk:

View File

@ -121,6 +121,11 @@
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>12.4.2.jre8</version>
</dependency>
</dependencies>

View File

@ -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<Void> importData(@RequestPart("file") MultipartFile file) throws Exception {
List<BomDetailsVo> 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<ElectricalMaterialBomVO> electricalMaterialBomVOS = ExcelUtil.importExcel(file.getInputStream(), ElectricalMaterialBomVO.class);
List<BomDetails> 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<BomDetailsVo> bomDetailsVos1 = BeanUtil.copyToList(list, BomDetailsVo.class);
List<BomDetails> bomDetails = saveBomDetails(bomDetailsVos1);
bomDetailsMapper.insertBatch(bomDetails);
public R<Map<String, Object>> importElectricalBom(@RequestPart("file") MultipartFile file) {
Map<String, Object> 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<ElectricalMaterialBomVO> rows = ExcelUtil.importExcel(file.getInputStream(), ElectricalMaterialBomVO.class);
int total = rows != null ? rows.size() : 0;
List<BomDetails> 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<BomDetailsVo> vos = BeanUtil.copyToList(list, BomDetailsVo.class);
List<BomDetails> 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<String> viewGetBomUploadStatus(@RequestParam String rooteProdet) {

View File

@ -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<DeviceSpec100rVo> 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<DeviceSpec100rVo> list = iDeviceSpec100rService.queryList(bo);
ExcelUtil.exportExcel(list, "100R设备规格参数", DeviceSpec100rVo.class, response);
}
/**
* 获取100R设备规格参数详细信息
*
* @param id 主键
*/
@SaCheckPermission("system:spec100r:query")
@GetMapping("/{id}")
public R<DeviceSpec100rVo> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iDeviceSpec100rService.deleteWithValidByIds(Arrays.asList(ids), true));
}
}

View File

@ -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<DeviceSpec125rVo> 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<DeviceSpec125rVo> list = iDeviceSpec125rService.queryList(bo);
ExcelUtil.exportExcel(list, "125R设备规格参数", DeviceSpec125rVo.class, response);
}
/**
* 获取125R设备规格参数详细信息
*
* @param id 主键
*/
@SaCheckPermission("system:spec125r:query")
@GetMapping("/{id}")
public R<DeviceSpec125rVo> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iDeviceSpec125rService.deleteWithValidByIds(Arrays.asList(ids), true));
}
}

View File

@ -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<DeviceSpec150rVo> 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<DeviceSpec150rVo> list = iDeviceSpec150rService.queryList(bo);
ExcelUtil.exportExcel(list, "150R设备规格参数", DeviceSpec150rVo.class, response);
}
/**
* 获取150R设备规格参数详细信息
*
* @param id 主键
*/
@SaCheckPermission("system:spec150r:query")
@GetMapping("/{id}")
public R<DeviceSpec150rVo> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iDeviceSpec150rService.deleteWithValidByIds(Arrays.asList(ids), true));
}
}

View File

@ -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<DeviceSpec30dVo> 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<DeviceSpec30dVo> 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<DeviceSpec30dVo> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iDeviceSpec30dService.deleteWithValidByIds(Arrays.asList(ids), true));
}
}

View File

@ -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<DeviceSpec30sVo> 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<DeviceSpec30sVo> list = iDeviceSpec30sService.queryList(bo);
ExcelUtil.exportExcel(list, "30S设备规格参数", DeviceSpec30sVo.class, response);
}
/**
* 获取30S设备规格参数详细信息
*
* @param id 主键
*/
@SaCheckPermission("system:spec30s:query")
@GetMapping("/{id}")
public R<DeviceSpec30sVo> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iDeviceSpec30sService.deleteWithValidByIds(Arrays.asList(ids), true));
}
}

View File

@ -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<DeviceSpec40rVo> 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<DeviceSpec40rVo> list = iDeviceSpec40rService.queryList(bo);
ExcelUtil.exportExcel(list, "40R设备规格参数", DeviceSpec40rVo.class, response);
}
/**
* 获取40R设备规格参数详细信息
*
* @param id 主键
*/
@SaCheckPermission("system:spec40r:query")
@GetMapping("/{id}")
public R<DeviceSpec40rVo> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iDeviceSpec40rService.deleteWithValidByIds(Arrays.asList(ids), true));
}
}

View File

@ -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<DeviceSpec40sVo> 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<DeviceSpec40sVo> list = iDeviceSpec40sService.queryList(bo);
ExcelUtil.exportExcel(list, "40S设备规格参数", DeviceSpec40sVo.class, response);
}
/**
* 获取40S设备规格参数详细信息
*
* @param id 主键
*/
@SaCheckPermission("system:spec40s:query")
@GetMapping("/{id}")
public R<DeviceSpec40sVo> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iDeviceSpec40sService.deleteWithValidByIds(Arrays.asList(ids), true));
}
}

View File

@ -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<DeviceSpec60rVo> 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<DeviceSpec60rVo> list = iDeviceSpec60rService.queryList(bo);
ExcelUtil.exportExcel(list, "60R设备规格参数", DeviceSpec60rVo.class, response);
}
/**
* 获取60R设备规格参数详细信息
*
* @param id 主键
*/
@SaCheckPermission("system:spec60r:query")
@GetMapping("/{id}")
public R<DeviceSpec60rVo> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iDeviceSpec60rService.deleteWithValidByIds(Arrays.asList(ids), true));
}
}

View File

@ -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<DeviceSpec80rVo> 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<DeviceSpec80rVo> list = iDeviceSpec80rService.queryList(bo);
ExcelUtil.exportExcel(list, "80R设备规格参数", DeviceSpec80rVo.class, response);
}
/**
* 获取80R设备规格参数详细信息
*
* @param id 主键
*/
@SaCheckPermission("system:spec80r:query")
@GetMapping("/{id}")
public R<DeviceSpec80rVo> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iDeviceSpec80rService.deleteWithValidByIds(Arrays.asList(ids), true));
}
}

View File

@ -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<Void> importMAMA(@RequestParam("file") MultipartFile file) throws Exception {
String originalFilename = file.getOriginalFilename();
log.info("读取文件名: " + originalFilename);
ExcelResult<ChengBeDTO> result = ExcelUtil.importExcelSheet1(file.getInputStream(), ChengBeDTO.class, true);
List<ChengBeDTO> list = result.getList();
List<PartCost> costList = partCostMapper.selectList();
Map<String, BigDecimal> costMap = costList.stream()
.collect(Collectors.toMap(PartCost::getMaterialCode, PartCost::getCostPrice, (a, b) -> a));
List<ChengBeDTO> 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("更新成功");
}
}

View File

@ -87,10 +87,13 @@ public class FigureSaveController extends BaseController {
@SaCheckPermission("system:save:edit")
@Log(title = "外购件临时", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody FigureSaveBo bo) {
return toAjax(iFigureSaveService.updateByBo(bo));
}
@PutMapping()
public R<Void> edit(@RequestBody @Validated FigureSaveBo bo) {
if (bo.getId() == null) {
return toAjax(iFigureSaveService.insertByBo(bo));
}
return toAjax(iFigureSaveService.updateByBo(bo));
}
/**
* 删除外购件临时

View File

@ -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<List<KingdeeWorkCenterDataBo>> 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<List<KingdeeWorkCenterDataBo>> 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<Void> 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<String, Object> staticDataMap = new HashMap<>();
staticDataMap.put("workCenter", workCenter);
staticDataMap.put("generatedAt", currentTime);
List<DynamicDataMapping> dynamicDataMappingList = new ArrayList<>();
List<KingdeeWorkCenterDataVo> voList = BeanUtil.copyToList(dataList, KingdeeWorkCenterDataVo.class);
List<Map<String, Object>> 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<List<KingdeeWorkCenterDataBo>> getKingdeeDelayData(@RequestParam(value = "workCenter") String workCenter) {
try {
K3CloudApi client = new K3CloudApi();
/* K3CloudApi client = new K3CloudApi();
JsonObject parameter = new JsonObject();
List<KingdeeWorkCenterDataBo> 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<KingdeeWorkCenterDataBo> kingdeeProduceData = mssqlQueryService.getKingdeeProduceData(workCenter);
List<KingdeeWorkCenterDataBo> 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<List<KingdeeWorkCenterDataBo>> result = getKingdeeDelayData(workCenter);
List<KingdeeWorkCenterDataBo> data = result.getData();
if (R.isError(result) || CollUtil.isEmpty(result.getData())) {
markdownMsg.append("- ").append(workCenter).append("<font color=\"comment\">无数据</font>\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<String, Object> staticDataMap = new HashMap<>();
staticDataMap.put("workCenter", workCenter);
staticDataMap.put("generatedAt", currentTime);
List<DynamicDataMapping> dynamicDataMappingList = new ArrayList<>();
List<KingdeeWorkCenterDataVo> voList = BeanUtil.copyToList(dataList, KingdeeWorkCenterDataVo.class);
List<Map<String, Object>> 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<String, Object> staticDataMap = new HashMap<>();
staticDataMap.put("generatedAt", DateUtil.format(new Date(), "yyyy年MM月dd日 HH:mm:ss"));
List<DynamicDataMapping> dynamicDataMappingList = new ArrayList<>();
List<WlStockDataVo> voList = BeanUtil.copyToList(safetyStocks, WlStockDataVo.class);
List<Map<String, Object>> 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<Map<String, Object>> convertWorkCenterToMapList(List<KingdeeWorkCenterDataVo> data, String workCenter) {
List<Map<String, Object>> list = new ArrayList<>();
for (KingdeeWorkCenterDataVo vo : data) {
Map<String, Object> 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<Map<String, Object>> convertSafetyStockToMapList(List<WlStockDataVo> data) {
List<Map<String, Object>> list = new ArrayList<>();
for (WlStockDataVo vo : data) {
Map<String, Object> 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<WlStockData> processMaterialGroups(List<WlStockData> 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;
// 准备模板数据

View File

@ -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<List<Map<String, Object>>> 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<Map<String, Object>> rows = mssqlQueryService.queryForList(s);
return R.ok(rows);
} catch (Exception e) {
return R.fail("查询失败: " + e.getMessage());
}
}
}

View File

@ -1,3 +1,6 @@
package com.ruoyi.system.controller;
import java.util.List;

View File

@ -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<ProcessRoute> 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<Void> addProduct(@Validated(AddGroup.class) @RequestBody FigureSaveBo bo, @RequestBody ProcessOrderProBo orderPro) {
iProcessOrderProService.addProduct(bo, orderPro);
public R<Void> 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<Void> uploadContractPDF(@RequestParam("id") Integer id, @RequestParam("file") MultipartFile filePath) {
public R<Void> uploadContractPDF(@RequestParam("ids") List<Long> 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<String> 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<String> 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<ProcessRoute> routes = new ArrayList<>();
List<Map<String, Object>> kingdeeBomRows = new ArrayList<>();
for (ProcessRoute base : routeList) {
String materialCode = base.getMaterialCode();
//如果项目零号是CP 跳过安全库存物料
LambdaQueryWrapper<SafetyStock> 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<ProductionOrderVo> allDataList = readExcelWithPOI(excelName,orderPro.getProductionOrderNo());
List<ProcessRoute> routeList = readExcelPOIRoute(excelName,orderPro.getProductionOrderNo());
List<ProcessRoute> routes = new ArrayList<>();
List<Map<String, Object>> kingdeeBomRows = new ArrayList<>();
for (ProcessRoute base : routeList) {
String processDescription = base.getRouteDescription();
String materialCode = base.getMaterialCode();
String materialName = base.getMaterialName();
//如果项目零号是CP 跳过安全库存物料
LambdaQueryWrapper<SafetyStock> 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<ProcessRouteDTO> routeGuDing = JdUtil.getRouteGuDing(materialCode);processRouteService
List<MaterialBom> bomItems = processRouteService.getProcessMaterialList(materialCode, materialName, processDescription);
List<ProcessRoute> 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<String, Object> 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<BomDataVO> rawDataList = readRawDataTable(rawDataFile);
// 3. 数据分类处理
List<VMIDataVO> vmiList = new ArrayList<>(); // 009开头
List<ElecOutDataVO> elecOutList = new ArrayList<>(); // 两个空格和017开头
List<SupProvidDataVO> supplierList = new ArrayList<>(); // 甲供件
List<EVOProductsDataVO> evoProductsList = new ArrayList<>(); // 伊特
List<ProductionOrderVo> 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<String, Object> staticDataMap = new HashMap<>();
staticDataMap.put("productionOrderNo", orderPro.getProductionOrderNo());
staticDataMap.put("productionName", orderPro.getProductionName());
// 准备动态数据映射
List<DynamicDataMapping> dynamicDataMappingList = new ArrayList<>();
// 添加生产订单数据
if (!allDataList.isEmpty()) {
List<Map<String, Object>> productionDataList = convertProductionOrderToMapList(allDataList, orderPro.getProductionOrderNo());
dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("ProductionOrder", productionDataList));
}
// 添加工艺数据第七个sheet工艺及生产计划表
if (!processDataList.isEmpty()) {
List<Map<String, Object>> processDataMapList = convertProductionOrderToMapList(processDataList, orderPro.getProductionOrderNo());
dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("ProcessData", processDataMapList));
}
// 添加VMI数据
if (!vmiList.isEmpty()) {
List<Map<String, Object>> vmiDataList = convertVMIDataToMapList(vmiList);
dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("VMIDataVO", vmiDataList));
}
// 添加电气外购数据
if (!elecOutList.isEmpty()) {
List<Map<String, Object>> elecDataList = convertElecOutDataToMapList(elecOutList);
dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("ElecOutDataVO", elecDataList));
}
// 添加BOM数据
if (!rawDataList.isEmpty()) {
List<Map<String, Object>> bomDataList = convertBomDataToMapList(rawDataList);
dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("BomDataVO", bomDataList));
}
// 添加甲供件数据
if (!supplierList.isEmpty()) {
List<Map<String, Object>> supplierDataList = convertSupProvidDataToMapList(supplierList);
dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("SupProvidDataVO", supplierDataList));
}
// 添加伊特产品数据
if (!evoProductsList.isEmpty()) {
List<Map<String, Object>> evoDataList = convertEVOProductsDataToMapList(evoProductsList);
dynamicDataMappingList.addAll(DynamicDataMapping.createOneDataList("EVOProductsDataVO", evoDataList));
}
if (!kingdeeBomRows.isEmpty()) {
List<Map<String, Object>> bomDataList2 = convertKingdeeBomToMapList(kingdeeBomRows);
// 合并到 RouteBomData 中统一按物料分组导出方案A
}
// 添加伊特产品数据
if (!routeList.isEmpty()) {
// 合并到 RouteBomData 中统一按物料分组导出方案A
}
// 方案A合并工艺与BOM为单一数据集并按物料分组
if (!routeList.isEmpty() || !kingdeeBomRows.isEmpty()) {
List<Map<String, Object>> 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());
}
}
}

View File

@ -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<ProcessRoute> 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()) {
// 写入到第七个 sheetindex=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<ProductionOrderVo> result1 = ExcelUtil.importExcelSheet1(file.getInputStream(), ProductionOrderVo.class, true);
List<ProductionOrderVo> list = result1.getList();
String productionOrderNo = list1.get(0).getRouteDescription();
List<BomDetails> bomDetails = iBomDetailsService.selectByProjectNumber(list1.get(0).getRouteDescription());
List<BomDetails> bomDetails = iBomDetailsService.selectByProjectNumber(list1.get(0).getRouteDescription());
List<ProcessRoute> 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<ProcessRouteVo> routeVoList
* @return RequestBody List<ProcessRouteVo> routeVoList
*/
public List<ProcessRoute> getProcessRouteList(@RequestParam String rooteProdet) {
List<ProcessRoute> list = iProcessRouteService.pushRawMater(rooteProdet);
@ -451,36 +452,36 @@ public class ProcessRouteController extends BaseController {
@Log(title = "推送工艺工序")
@SaCheckPermission("system:route:pushRouteBom")
@PostMapping("/pushRouteBom")
public R<ProcessRoutePushResultDTO> pushRouteBom(@RequestParam String rooteProdet,@RequestParam String groupName) {
return iProcessRouteService.pushRouteBom(rooteProdet,groupName);
public R<ProcessRoutePushResultDTO> 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<List<String>> getDistinctProjectCodes(String query) {
return ResponseEntity.ok(iProcessRouteService.getDistinctProjectCodes(query));
}
@Log(title = "获取工序列表")
@SaCheckPermission("system:route:getRawBom")
@SaCheckPermission("system:route:getProcessInfoList")
@GetMapping("/getProcessInfoList")
public ResponseEntity<List<String>> getProcessInfoList(String query) {
return ResponseEntity.ok(iProcessRouteService.getProcessInfoList(query));
}
@Log(title = "根据生产令号获取生产编号==》获取计划编号")
@SaCheckPermission("system:route:getRawBom")
@SaCheckPermission("system:route:getSelecPlanRouteList")
@PostMapping("/getSelecPlanRouteList")
public List<CombinedDTO> 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<Model> 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<List<MaterialBom>> getProcessMaterialList(
@RequestParam(value = "materialCode") String materialCode,
public ResponseEntity<List<MaterialBom>> 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<Void> importDataTime123(@RequestParam("file") MultipartFile file) throws Exception {
DefaultExcelListener<PcRigidChainVo> 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<PcRigidChainVo> 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<ProcessRouteSelectDTO> getSelectProcessRoute1(@RequestParam String materilCode) {
return iProcessRouteService.getSelectProcessRoute(materilCode);
@ -620,9 +620,10 @@ public class ProcessRouteController extends BaseController {
});
}
private void processMaterAndRoute(JDMaterialAndRoute materialAndRoute, List<BomDetails> bomDetailsList, List<ProcessRoute> routeList, List<MaterialBom> 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<ProcessRouteGetDTO> list = listener.getExcelResult().getList();
List<JDMaterialAndRoute> list1 = iProcessRouteService.getProcessRouteGD(list,rooteProdet);
List<JDMaterialAndRoute> list1 = iProcessRouteService.getProcessRouteGD(list, rooteProdet);
List<BomDetails> bomDetailsList = new ArrayList<>();
List<ProcessRoute> 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<String> 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<String> list = iProcessRouteService.updateCgOrders(rooteProdet,cangKuNum);
return R.ok(list);
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -125,5 +125,12 @@ public class DeviceSpec35r extends BaseEntity {
* 35E链板
*/
private Long V46;
/**
*
*/
private Long V47;
/**
*
*/
private Long V48;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -57,4 +57,12 @@ public class FigureSave extends BaseEntity {
* 关联项目表
*/
private Long pid;
/**
* 轴向
*/
private String axialType;
/**
* 箱体类型
*/
private String boxType;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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;
}

View File

@ -33,4 +33,6 @@ public class PlanPrcessNumDTO {
private Date FOperPlanFinishTime;
@JsonProperty("FMONumber")
private String FMONumber;
@JsonProperty("F_HBYT_RKCK.FName")
private String FRKCKFName;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -51,7 +51,7 @@ public class ElectricalMaterialBomVO {
/**
* 批次数量
*/
@ExcelProperty(value = "数量")
@ExcelProperty(value = "批数量")
private String batchQuantity;
/**

View File

@ -69,4 +69,15 @@ public class FigureSaveVo {
*/
@ExcelProperty(value = "关联项目表")
private Long pid;
/**
* 轴向
*/
@ExcelProperty(value = "轴向")
private String axialType;
/**
* 箱体类型
*/
@ExcelProperty(value = "箱体类型")
private String boxType;
}

View File

@ -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;
}

View File

@ -116,6 +116,10 @@ public class ProcessOrderProVo {
private String drawingPathUrl;
private Date createTime;
/**
* 创建人
*/
private String createBy;
/**
* 工艺上传日志
*/

View File

@ -18,4 +18,9 @@ public class FSubEntity {
@JsonProperty("FOperNumber")
private Long FOperNumber;
/*
入库仓库
*/
@JsonProperty("F_HBYT_RKCK.FName")
private String rkckName;
}

View File

@ -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;
}
}

View File

@ -18,7 +18,6 @@ public class Model {
private String FProcessId_number;
@JsonProperty("FMONumber")
private String FMONumber;
@JsonProperty("FPlanFinishTime")
private Date FPlanFinishTime;

View File

@ -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<DeviceSpec100rMapper, DeviceSpec100r, DeviceSpec100rVo> {
}

View File

@ -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<DeviceSpec125rMapper, DeviceSpec125r, DeviceSpec125rVo> {
}

View File

@ -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<DeviceSpec150rMapper, DeviceSpec150r, DeviceSpec150rVo> {
}

View File

@ -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<DeviceSpec30dMapper, DeviceSpec30d, DeviceSpec30dVo> {
}

View File

@ -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<DeviceSpec30sMapper, DeviceSpec30s, DeviceSpec30sVo> {
}

View File

@ -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<DeviceSpec40rMapper, DeviceSpec40r, DeviceSpec40rVo> {
}

View File

@ -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<DeviceSpec40sMapper, DeviceSpec40s, DeviceSpec40sVo> {
}

View File

@ -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<DeviceSpec60rMapper, DeviceSpec60r, DeviceSpec60rVo> {
}

View File

@ -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<DeviceSpec80rMapper, DeviceSpec80r, DeviceSpec80rVo> {
}

View File

@ -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<String> 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<String> 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<String> 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<String> 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<FidEntryIdDTO> 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<String> 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<String> 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();
}
}

View File

@ -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<FSubEntity> 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<FEntity> entities = new ArrayList<>();
entities.add(entity);
model.setFEntity(entities);
// 创建 MainModel 并设置字段
MainModel mainModel = new MainModel();
List<String> 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<Model> numDTO) {
RepoRet repoRet = null;
for (Model model : numDTO) {
MainModel mainModel = new MainModel();
List<String> 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;
}
}

View File

@ -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<DeviceSpec100rVo> queryPageList(DeviceSpec100rBo bo, PageQuery pageQuery);
/**
* 查询100R设备规格参数列表
*/
List<DeviceSpec100rVo> queryList(DeviceSpec100rBo bo);
/**
* 新增100R设备规格参数
*/
Boolean insertByBo(DeviceSpec100rBo bo);
/**
* 修改100R设备规格参数
*/
Boolean updateByBo(DeviceSpec100rBo bo);
/**
* 校验并批量删除100R设备规格参数信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -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<DeviceSpec125rVo> queryPageList(DeviceSpec125rBo bo, PageQuery pageQuery);
/**
* 查询125R设备规格参数列表
*/
List<DeviceSpec125rVo> queryList(DeviceSpec125rBo bo);
/**
* 新增125R设备规格参数
*/
Boolean insertByBo(DeviceSpec125rBo bo);
/**
* 修改125R设备规格参数
*/
Boolean updateByBo(DeviceSpec125rBo bo);
/**
* 校验并批量删除125R设备规格参数信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -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<DeviceSpec150rVo> queryPageList(DeviceSpec150rBo bo, PageQuery pageQuery);
/**
* 查询150R设备规格参数列表
*/
List<DeviceSpec150rVo> queryList(DeviceSpec150rBo bo);
/**
* 新增150R设备规格参数
*/
Boolean insertByBo(DeviceSpec150rBo bo);
/**
* 修改150R设备规格参数
*/
Boolean updateByBo(DeviceSpec150rBo bo);
/**
* 校验并批量删除150R设备规格参数信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -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<DeviceSpec30dVo> queryPageList(DeviceSpec30dBo bo, PageQuery pageQuery);
/**
* 查询device_spec_30D 列表
*/
List<DeviceSpec30dVo> queryList(DeviceSpec30dBo bo);
/**
* 新增device_spec_30D
*/
Boolean insertByBo(DeviceSpec30dBo bo);
/**
* 修改device_spec_30D
*/
Boolean updateByBo(DeviceSpec30dBo bo);
/**
* 校验并批量删除device_spec_30D 信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -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<DeviceSpec30sVo> queryPageList(DeviceSpec30sBo bo, PageQuery pageQuery);
/**
* 查询30S设备规格参数列表
*/
List<DeviceSpec30sVo> queryList(DeviceSpec30sBo bo);
/**
* 新增30S设备规格参数
*/
Boolean insertByBo(DeviceSpec30sBo bo);
/**
* 修改30S设备规格参数
*/
Boolean updateByBo(DeviceSpec30sBo bo);
/**
* 校验并批量删除30S设备规格参数信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -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<DeviceSpec40rVo> queryPageList(DeviceSpec40rBo bo, PageQuery pageQuery);
/**
* 查询40R设备规格参数列表
*/
List<DeviceSpec40rVo> queryList(DeviceSpec40rBo bo);
/**
* 新增40R设备规格参数
*/
Boolean insertByBo(DeviceSpec40rBo bo);
/**
* 修改40R设备规格参数
*/
Boolean updateByBo(DeviceSpec40rBo bo);
/**
* 校验并批量删除40R设备规格参数信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -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<DeviceSpec40sVo> queryPageList(DeviceSpec40sBo bo, PageQuery pageQuery);
/**
* 查询40S设备规格参数列表
*/
List<DeviceSpec40sVo> queryList(DeviceSpec40sBo bo);
/**
* 新增40S设备规格参数
*/
Boolean insertByBo(DeviceSpec40sBo bo);
/**
* 修改40S设备规格参数
*/
Boolean updateByBo(DeviceSpec40sBo bo);
/**
* 校验并批量删除40S设备规格参数信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -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<DeviceSpec60rVo> queryPageList(DeviceSpec60rBo bo, PageQuery pageQuery);
/**
* 查询60R设备规格参数列表
*/
List<DeviceSpec60rVo> queryList(DeviceSpec60rBo bo);
/**
* 新增60R设备规格参数
*/
Boolean insertByBo(DeviceSpec60rBo bo);
/**
* 修改60R设备规格参数
*/
Boolean updateByBo(DeviceSpec60rBo bo);
/**
* 校验并批量删除60R设备规格参数信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -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<DeviceSpec80rVo> queryPageList(DeviceSpec80rBo bo, PageQuery pageQuery);
/**
* 查询80R设备规格参数列表
*/
List<DeviceSpec80rVo> queryList(DeviceSpec80rBo bo);
/**
* 新增80R设备规格参数
*/
Boolean insertByBo(DeviceSpec80rBo bo);
/**
* 修改80R设备规格参数
*/
Boolean updateByBo(DeviceSpec80rBo bo);
/**
* 校验并批量删除80R设备规格参数信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -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<ProcessOrderPro> selectByProjectNumbers(Set<String> routeDescSet);
void addProduct(FigureSaveBo bo, ProcessOrderProBo orderPro);
void addProduct( RigidChainModelDTO orderPro);
String executDrawing(ProcessOrderProBo orderPro);
@ -85,4 +87,6 @@ public interface IProcessOrderProService {
List<ProcessRouteExcelDTO> getRouteAndBomDetail(List<ProcessRoute> routlist,List<ProductionOrderVo> processDataList,ProcessOrderPro orderPro);
R<String> getRouteLog(Long id) throws JsonProcessingException;
SseEmitter startDrawingSse(Long id);
}

View File

@ -149,4 +149,8 @@ public interface IProcessRouteService {
//根据令号和物料编码 查询工艺路线
ProcessRoute getProcessRoutesXuTime(String productionOrderNo, String materialCode,String xu);
List<String> updateProductionOrders(String rooteProdet,String cangKuNum) throws Exception;
List<String> updateCgOrders(String rooteProdet, String cangKuNum) throws Exception;
}

View File

@ -58,4 +58,8 @@ public interface IProductionOrderService {
Boolean executDrawing(ProcessOrderProBo orderPro);
List<ProductionOrder> selectByProCode(String productionOrderNo);
/**
* 是否属于外购件
*/
Boolean isPurchas(String proCode,String materialCode);
}

View File

@ -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<Map<String, Object>> queryForList(String sql) {
return jdbcTemplate.queryForList(sql);
}
@DS("sqlserver")
public List<KingdeeWorkCenterDataBo> 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<Map<String, Object>> resultList;
if (StringUtils.isNotEmpty(workCenterName)) {
sql += " and t9.FName = ?";
resultList = jdbcTemplate.queryForList(sql, workCenterName);
} else {
resultList = jdbcTemplate.queryForList(sql);
}
List<KingdeeWorkCenterDataBo> boList = new ArrayList<>();
for (Map<String, Object> 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<String, Object> row, String key) {
Object val = row.get(key);
return val != null ? val.toString() : "";
}
private BigDecimal getBigDecimal(Map<String, Object> 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;
}
}
}

View File

@ -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<DeviceSpec100rVo> queryPageList(DeviceSpec100rBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<DeviceSpec100r> lqw = buildQueryWrapper(bo);
Page<DeviceSpec100rVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询100R设备规格参数列表
*/
@Override
public List<DeviceSpec100rVo> queryList(DeviceSpec100rBo bo) {
LambdaQueryWrapper<DeviceSpec100r> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<DeviceSpec100r> buildQueryWrapper(DeviceSpec100rBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<DeviceSpec100r> 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<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@ -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<DeviceSpec125rVo> queryPageList(DeviceSpec125rBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<DeviceSpec125r> lqw = buildQueryWrapper(bo);
Page<DeviceSpec125rVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询125R设备规格参数列表
*/
@Override
public List<DeviceSpec125rVo> queryList(DeviceSpec125rBo bo) {
LambdaQueryWrapper<DeviceSpec125r> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<DeviceSpec125r> buildQueryWrapper(DeviceSpec125rBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<DeviceSpec125r> 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<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@ -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<DeviceSpec150rVo> queryPageList(DeviceSpec150rBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<DeviceSpec150r> lqw = buildQueryWrapper(bo);
Page<DeviceSpec150rVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询150R设备规格参数列表
*/
@Override
public List<DeviceSpec150rVo> queryList(DeviceSpec150rBo bo) {
LambdaQueryWrapper<DeviceSpec150r> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<DeviceSpec150r> buildQueryWrapper(DeviceSpec150rBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<DeviceSpec150r> 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<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@ -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<DeviceSpec30dVo> queryPageList(DeviceSpec30dBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<DeviceSpec30d> lqw = buildQueryWrapper(bo);
Page<DeviceSpec30dVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询device_spec_30D 列表
*/
@Override
public List<DeviceSpec30dVo> queryList(DeviceSpec30dBo bo) {
LambdaQueryWrapper<DeviceSpec30d> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<DeviceSpec30d> buildQueryWrapper(DeviceSpec30dBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<DeviceSpec30d> 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<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@ -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<DeviceSpec30sVo> queryPageList(DeviceSpec30sBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<DeviceSpec30s> lqw = buildQueryWrapper(bo);
Page<DeviceSpec30sVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询30S设备规格参数列表
*/
@Override
public List<DeviceSpec30sVo> queryList(DeviceSpec30sBo bo) {
LambdaQueryWrapper<DeviceSpec30s> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<DeviceSpec30s> buildQueryWrapper(DeviceSpec30sBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<DeviceSpec30s> 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<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@ -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<DeviceSpec40rVo> queryPageList(DeviceSpec40rBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<DeviceSpec40r> lqw = buildQueryWrapper(bo);
Page<DeviceSpec40rVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询40R设备规格参数列表
*/
@Override
public List<DeviceSpec40rVo> queryList(DeviceSpec40rBo bo) {
LambdaQueryWrapper<DeviceSpec40r> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<DeviceSpec40r> buildQueryWrapper(DeviceSpec40rBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<DeviceSpec40r> 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<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@ -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<DeviceSpec40sVo> queryPageList(DeviceSpec40sBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<DeviceSpec40s> lqw = buildQueryWrapper(bo);
Page<DeviceSpec40sVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询40S设备规格参数列表
*/
@Override
public List<DeviceSpec40sVo> queryList(DeviceSpec40sBo bo) {
LambdaQueryWrapper<DeviceSpec40s> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<DeviceSpec40s> buildQueryWrapper(DeviceSpec40sBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<DeviceSpec40s> 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<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

Some files were not shown because too many files have changed in this diff Show More