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>
<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; package com.ruoyi;
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@ -20,7 +21,13 @@ import org.springframework.cache.annotation.EnableCaching;
@MapperScan("com.ruoyi.**.mapper") @MapperScan("com.ruoyi.**.mapper")
@EnableCaching @EnableCaching
public class RuoYiApplication { public class RuoYiApplication {
static {
// 全局放宽启动时执行一次即可
ZipSecureFile.setMaxFileCount(100000);
ZipSecureFile.setMinInflateRatio(0.005);
}
public static void main(String[] args) { public static void main(String[] args) {
System.setProperty("spring.devtools.restart.enabled", "false"); System.setProperty("spring.devtools.restart.enabled", "false");
SpringApplication application = new SpringApplication(RuoYiApplication.class); SpringApplication application = new SpringApplication(RuoYiApplication.class);
application.setApplicationStartup(new BufferingApplicationStartup(2048)); 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 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 username: root
password: root password: root
# oracle: sqlserver:
# type: ${spring.datasource.type} type: com.zaxxer.hikari.HikariDataSource
# driverClassName: oracle.jdbc.OracleDriver driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
# url: jdbc:oracle:thin:@//localhost:1521/XE url: jdbc:sqlserver://192.168.5.8:1433;databaseName=AIS20241010133631;encrypt=false;trustServerCertificate=true
# username: ROOT username: sa
# password: root password: 1a!
# 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
hikari: hikari:
# 最大连接池数量 # 最大连接池数量
maxPoolSize: 20 maxPoolSize: 20

View File

@ -65,6 +65,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 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 username: root
password: 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: # oracle:
# type: ${spring.datasource.type} # type: ${spring.datasource.type}
# driverClassName: oracle.jdbc.OracleDriver # driverClassName: oracle.jdbc.OracleDriver

View File

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

View File

@ -121,6 +121,11 @@
<groupId>org.assertj</groupId> <groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId> <artifactId>assertj-core</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>12.4.2.jre8</version>
</dependency>
</dependencies> </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.AddGroup;
import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.dto.*; import com.ruoyi.system.domain.dto.*;
import com.ruoyi.common.utils.JdUtils; import com.ruoyi.common.utils.JdUtils;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
@ -212,7 +213,7 @@ public class BomDetailsController extends BaseController {
*/ */
@Log(title = "明细导入", businessType = BusinessType.IMPORT) @Log(title = "明细导入", businessType = BusinessType.IMPORT)
@SaCheckPermission("system:details:import") @SaCheckPermission("system:details:importData")
@PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> importData(@RequestPart("file") MultipartFile file) throws Exception { public R<Void> importData(@RequestPart("file") MultipartFile file) throws Exception {
List<BomDetailsVo> bomDetailsVos = ExcelUtil.importExcel(file.getInputStream(), BomDetailsVo.class); List<BomDetailsVo> bomDetailsVos = ExcelUtil.importExcel(file.getInputStream(), BomDetailsVo.class);
@ -1778,8 +1779,10 @@ public class BomDetailsController extends BaseController {
// 创建SubHeadEntity对象并加入Model // 创建SubHeadEntity对象并加入Model
JsonObject subHeadEntity = new JsonObject(); JsonObject subHeadEntity = new JsonObject();
model.add("SubHeadEntity", subHeadEntity); model.add("SubHeadEntity", subHeadEntity);
if (bomDetails1.getWareHouse().contains("伊特")){
subHeadEntity.addProperty("FErpClsID", states); subHeadEntity.addProperty("FErpClsID", "2");
}
subHeadEntity.addProperty("FErpClsID", "1");
subHeadEntity.addProperty("FFeatureItem", "1"); subHeadEntity.addProperty("FFeatureItem", "1");
// 创建FCategoryID对象并加入SubHeadEntity // 创建FCategoryID对象并加入SubHeadEntity
@ -2076,7 +2079,7 @@ public class BomDetailsController extends BaseController {
// 创建FBOMUnitId对象并加入SubHeadEntity5 // 创建FBOMUnitId对象并加入SubHeadEntity5
JsonObject fBOMUnitId = new JsonObject(); JsonObject fBOMUnitId = new JsonObject();
switch (bomDetails1.getWareHouse()) { switch (bomDetails1.getRemarks()) {
case "": case "":
fBaseUnitId.addProperty("FNumber", "002"); fBaseUnitId.addProperty("FNumber", "002");
break; break;
@ -2185,30 +2188,57 @@ public class BomDetailsController extends BaseController {
@Log(title = "导入电气bom", businessType = BusinessType.IMPORT) @Log(title = "导入电气bom", businessType = BusinessType.IMPORT)
@SaCheckPermission("system:details:importElectricalBom") @SaCheckPermission("system:details:importElectricalBom")
@PostMapping(value = "/importElectricalBom", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/importElectricalBom", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public void importElectricalBom(@RequestPart("file") MultipartFile file) throws Exception { public R<Map<String, Object>> importElectricalBom(@RequestPart("file") MultipartFile file) {
List<ElectricalMaterialBomVO> electricalMaterialBomVOS = ExcelUtil.importExcel(file.getInputStream(), ElectricalMaterialBomVO.class); 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<>(); List<BomDetails> list = new ArrayList<>();
for (ElectricalMaterialBomVO bomVO : electricalMaterialBomVOS) { if (rows != null) {
for (ElectricalMaterialBomVO bomVO : rows) {
BomDetails bomDetails = new BomDetails(); BomDetails bomDetails = new BomDetails();
bomDetails.setTotalWeight(bomVO.getProductionOrderNo()); bomDetails.setTotalWeight(bomVO.getProductionOrderNo());
bomDetails.setFNumber(bomVO.getParentDrawingNo()); bomDetails.setFNumber(bomVO.getParentDrawingNo());
bomDetails.setFName(bomVO.getParentPart()); bomDetails.setFName(bomVO.getParentPart());
bomDetails.setPartNumber(bomVO.getDrawingNo()); bomDetails.setPartNumber(bomVO.getDrawingNo());
bomDetails.setName(bomVO.getDrawingName()); bomDetails.setName(bomVO.getDrawingName());
bomDetails.setMaterial(bomVO.getModel());// bomDetails.setMaterial(bomVO.getModel());
bomDetails.setWareHouse(bomVO.getBrand()); bomDetails.setWareHouse(bomVO.getBrand());
bomDetails.setStats("外购"); bomDetails.setStats("外购");
String quantity = bomVO.getQuantity().toString(); bomDetails.setQuantity(bomVO.getQuantity() == null ? null : bomVO.getQuantity().toString());
bomDetails.setQuantity(quantity);
bomDetails.setRemarks(bomVO.getUnit()); bomDetails.setRemarks(bomVO.getUnit());
bomDetails.setUpdateTime(new Date()); bomDetails.setUpdateTime(new Date());
bomDetails.setBomType("1");//0 是生产bom 1 是电气bom bomDetails.setQuantity(String.valueOf(bomVO.getQuantity()));
bomDetails.setDenominator(1.0);
bomDetails.setBomType("1");
list.add(bomDetails); list.add(bomDetails);
} }
List<BomDetailsVo> bomDetailsVos1 = BeanUtil.copyToList(list, BomDetailsVo.class); }
List<BomDetails> bomDetails = saveBomDetails(bomDetailsVos1);
bomDetailsMapper.insertBatch(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 表中 // 保存到 BomDetails 表中
@ -2232,7 +2262,7 @@ public class BomDetailsController extends BaseController {
} }
return materialsToAdd; return materialsToAdd;
} }
@Log(title = "推送工艺工序") @Log(title = "查看BOM上传日志")
@SaCheckPermission("system:route:viewGetBomUploadStatus") @SaCheckPermission("system:route:viewGetBomUploadStatus")
@PostMapping("/viewGetBomUploadStatus") @PostMapping("/viewGetBomUploadStatus")
public R<String> viewGetBomUploadStatus(@RequestParam String rooteProdet) { 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; package com.ruoyi.system.controller;
import java.util.ArrayList; import java.io.File;
import java.util.List; import java.math.BigDecimal;
import java.util.Arrays; import java.util.*;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.concurrent.ExecutionException; 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.alibaba.fastjson.JSONObject;
import com.kingdee.bos.webapi.entity.SuccessEntity; import com.kingdee.bos.webapi.entity.SuccessEntity;
import com.ruoyi.common.core.domain.PageQuery; 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.common.utils.JdUtils;
import com.ruoyi.system.domain.EleMaterials; import com.ruoyi.system.domain.EleMaterials;
import com.ruoyi.system.domain.ImMaterial; import com.ruoyi.system.domain.ImMaterial;
import com.ruoyi.system.domain.PartCost;
import com.ruoyi.system.domain.dto.*; import com.ruoyi.system.domain.dto.*;
import com.ruoyi.system.domain.vo.ExcelVo; import com.ruoyi.system.domain.vo.ExcelVo;
import com.ruoyi.system.mapper.ImMaterialMapper; import com.ruoyi.system.mapper.ImMaterialMapper;
import com.ruoyi.system.mapper.PartCostMapper;
import com.ruoyi.system.runner.JdUtil; import com.ruoyi.system.runner.JdUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*; import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
@ -58,6 +64,7 @@ public class EleMaterialsController extends BaseController {
private final IEleMaterialsService iEleMaterialsService; private final IEleMaterialsService iEleMaterialsService;
private final ImMaterialMapper materialMapper; private final ImMaterialMapper materialMapper;
private static final Logger log = LoggerFactory.getLogger(EleMaterialsController.class); 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("更新成功"); 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

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

View File

@ -2,6 +2,7 @@ package com.ruoyi.system.controller;
import java.io.File; import java.io.File;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.time.format.DateTimeFormatter; 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.utils.WxRobotUtil;
import com.ruoyi.common.poi.ExcelTemplateProc; import com.ruoyi.common.poi.ExcelTemplateProc;
import com.ruoyi.common.poi.DynamicDataMapping; import com.ruoyi.common.poi.DynamicDataMapping;
import com.ruoyi.system.domain.ProcessRoute;
import com.ruoyi.system.domain.SafetyStock; import com.ruoyi.system.domain.SafetyStock;
import com.ruoyi.system.domain.WlStockData; import com.ruoyi.system.domain.WlStockData;
import com.ruoyi.system.domain.dto.*; import com.ruoyi.system.domain.dto.*;
import com.ruoyi.system.domain.vo.WlStockDataVo; import com.ruoyi.system.domain.vo.WlStockDataVo;
import com.ruoyi.system.mapper.WlStockDataMapper; import com.ruoyi.system.mapper.WlStockDataMapper;
import com.ruoyi.system.runner.JdUtil; import com.ruoyi.system.runner.JdUtil;
import com.ruoyi.system.service.IProcessRouteService; import com.ruoyi.system.service.*;
import com.ruoyi.system.service.ISafetyStockService;
import com.ruoyi.system.service.IWeComService;
import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -59,8 +57,6 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.domain.vo.KingdeeWorkCenterDataVo; import com.ruoyi.system.domain.vo.KingdeeWorkCenterDataVo;
import com.ruoyi.system.domain.bo.KingdeeWorkCenterDataBo; 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 com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@ -85,11 +81,20 @@ public class KingdeeWorkCenterDataController extends BaseController {
private final WlStockDataMapper baseMapper; private final WlStockDataMapper baseMapper;
private final ISafetyStockService iSafetyStockService; private final ISafetyStockService iSafetyStockService;
private final IWeComService iWeComService; private final IWeComService iWeComService;
private final MssqlQueryService mssqlQueryService;
@Autowired @Autowired
IProcessRouteService iProcessRouteService; IProcessRouteService iProcessRouteService;
private static final String QUALITY_KANBAN_URL = "http://192.168.5.8/K3Cloud/DataBoard/QualityKanBan/index.html#/"; 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) @Log(title = "金蝶工段数据提前2天", businessType = BusinessType.DELETE)
@PostMapping("/getKingdeeWorkCenterData") @PostMapping("/getKingdeeWorkCenterData")
public R<List<KingdeeWorkCenterDataBo>> getKingdeeWorkCenterData(@RequestParam(value = "workCenter") String workCenter) { 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.setMoOrderNo(item.getString("MoOrderNo"));
data.setMaterialNumber(item.getString("FMaterialNumber")); data.setMaterialNumber(item.getString("FMaterialNumber"));
data.setMaterialName(item.getString("FMaterialName")); data.setMaterialName(item.getString("FMaterialName"));
data.setOperQty(item.getLong("FOperQty")); data.setOperQty(item.getBigDecimal("FOperQty"));
data.setTransInQty(item.getLong("FTransInQty")); data.setTransInQty(item.getBigDecimal("FTransInQty"));
data.setTransOutQty(item.getLong("FTransOutQty")); data.setTransOutQty(item.getBigDecimal("FTransOutQty"));
data.setMaterialStatus(item.getString("FMaterialStatus")); data.setMaterialStatus(item.getString("FMaterialStatus"));
data.setOperNumber(item.getString("FOperNumber")); data.setOperNumber(item.getString("FOperNumber"));
data.setProcessName(item.getString("FProcessName")); data.setProcessName(item.getString("FProcessName"));
@ -240,7 +245,7 @@ public class KingdeeWorkCenterDataController extends BaseController {
} }
@Log(title = "获取金蝶工段数据模板2") @Log(title = "获取金蝶工段数据模板2")
@SaCheckPermission("system:route:sendMsg") @SaCheckPermission("system:route:getMassage")
@PostMapping("/sendMsg") @PostMapping("/sendMsg")
public R<Void> getMassage(@RequestParam String workCenter) { public R<Void> getMassage(@RequestParam String workCenter) {
String robotId = "4d2f037d-0cee-493a-a4ff-1758f67b8069"; String robotId = "4d2f037d-0cee-493a-a4ff-1758f67b8069";
@ -305,8 +310,7 @@ public class KingdeeWorkCenterDataController extends BaseController {
parameter.addProperty("FWorkCenterName", "委外中心"); parameter.addProperty("FWorkCenterName", "委外中心");
Object[] parameters = new Object[]{parameter.toString()}; Object[] parameters = new Object[]{parameter.toString()};
String execute = client.execute( String execute = client.execute(
"Ljint.Kingdee.YiTe.KanBan.WebApi.ProduceWebApi.ExecuteService,Ljint.Kingdee.YiTe.KanBan.WebApi", "Ljint.Kingdee.YiTe.KanBan.WebApi.ProduceWebApi.ExecuteService,Ljint.Kingdee.YiTe.KanBan.WebApi", parameters);
parameters);
// 解析响应 // 解析响应
JSONObject response = JSONObject.parseObject(execute); JSONObject response = JSONObject.parseObject(execute);
@ -406,10 +410,18 @@ public class KingdeeWorkCenterDataController extends BaseController {
DateUtil.format(new Date(), "yyyyMMddHHmmss")); DateUtil.format(new Date(), "yyyyMMddHHmmss"));
String filePath = FileUtils.getTempDirectoryPath() + File.separator + fileName; String filePath = FileUtils.getTempDirectoryPath() + File.separator + fileName;
// 使用EasyExcel写入数据 // 使用模板+动态数据映射写入数据
EasyExcel.write(filePath, KingdeeWorkCenterDataVo.class) String templatePath = "jpg/工段数据模板.xlsx";
.sheet("工段数据") Map<String, Object> staticDataMap = new HashMap<>();
.doWrite(BeanUtil.copyToList(dataList, KingdeeWorkCenterDataVo.class)); 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文件 // 发送Excel文件
File excelFile = new File(filePath); File excelFile = new File(filePath);
@ -444,12 +456,12 @@ public class KingdeeWorkCenterDataController extends BaseController {
@PostMapping("/getKingdeeDelayData") @PostMapping("/getKingdeeDelayData")
public R<List<KingdeeWorkCenterDataBo>> getKingdeeDelayData(@RequestParam(value = "workCenter") String workCenter) { public R<List<KingdeeWorkCenterDataBo>> getKingdeeDelayData(@RequestParam(value = "workCenter") String workCenter) {
try { try {
K3CloudApi client = new K3CloudApi(); /* K3CloudApi client = new K3CloudApi();
JsonObject parameter = new JsonObject(); JsonObject parameter = new JsonObject();
List<KingdeeWorkCenterDataBo> kingdeeWorkCenterDataVos = new ArrayList<>(); List<KingdeeWorkCenterDataBo> kingdeeWorkCenterDataVos = new ArrayList<>();
parameter.addProperty("FWorkCenterName", workCenter); parameter.addProperty("FWorkCenterName", workCenter);
Object[] parameters = new Object[]{parameter.toString()}; 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); log.info("金蝶接口:" + workCenter + "===> 返回数据: {}", execute);
// 解析响应 // 解析响应
@ -457,24 +469,22 @@ public class KingdeeWorkCenterDataController extends BaseController {
if (!"true".equals(response.getString("IsSuccess"))) { if (!"true".equals(response.getString("IsSuccess"))) {
String errorMsg = response.getString("Message"); String errorMsg = response.getString("Message");
return R.fail("获取工段数据失败:" + errorMsg); return R.fail("获取工段数据失败:" + errorMsg);
} }*/
// 获取明天的日期字符串 (格式: yyyy-MM-dd) // 获取明天的日期字符串 (格式: yyyy-MM-dd)
String yesterday = DateUtil.format(DateUtil.yesterday(), "yyyy-MM-dd"); String yesterday = DateUtil.format(DateUtil.yesterday(), "yyyy-MM-dd");
// 获取数据数组 /* // 获取数据数组
JSONArray dataArray = response.getJSONArray("data"); JSONArray dataArray = response.getJSONArray("data");
if (dataArray == null || dataArray.isEmpty()) { if (dataArray == null || dataArray.isEmpty()) {
return R.ok("无数据"); return R.ok("无数据");
} }
*/
for (int i = 0; i < dataArray.size(); i++) { List<KingdeeWorkCenterDataBo> kingdeeProduceData = mssqlQueryService.getKingdeeProduceData(workCenter);
JSONArray queryList = dataArray.getJSONObject(i).getJSONArray("QueryList"); List<KingdeeWorkCenterDataBo> kingdeeWorkCenterDataVos = new ArrayList<>();
for (int j = 0; j < queryList.size(); j++) { for (KingdeeWorkCenterDataBo kingnum : kingdeeProduceData) {
JSONObject item = queryList.getJSONObject(j);
// 获取计划结束时间并转换为日期格式进行比较 // 获取计划结束时间并转换为日期格式进行比较
String planFinishTime = item.getString("FOperPlanFinishTime2"); String planFinishTime = kingnum.getOperPlanFinishTime2();
String delayDaysStr = item.getString("FDelayDays"); String delayDaysStr = kingnum.getDelayDays();
Long delayDays = null; Long delayDays = null;
if (delayDaysStr != null && !delayDaysStr.isEmpty()) { if (delayDaysStr != null && !delayDaysStr.isEmpty()) {
try { try {
@ -485,34 +495,20 @@ public class KingdeeWorkCenterDataController extends BaseController {
} }
if (delayDays != null && delayDays > 0) { if (delayDays != null && delayDays > 0) {
// 只处理延期天数大于0的工单 // 只处理延期天数大于0的工单
long transOutQty = item.getLong("FTransOutQty"); BigDecimal transOutQty = kingnum.getTransOutQty();
// 转入 // 转入
long transInQty = item.getLong("FTransInQty"); BigDecimal transInQty = kingnum.getTransInQty();
//转出小于转入数量 //转出小于转入数量
if (transOutQty < transInQty) { if (transOutQty.compareTo( transInQty)<0) {
// 转换为实体对象
KingdeeWorkCenterDataBo data = new KingdeeWorkCenterDataBo(); kingdeeWorkCenterDataVos.add(kingnum);
data.setWorkCenter(workCenter); Boolean b = iKingdeeWorkCenterDataService.insertByBo(kingnum);
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 (!b) { if (!b) {
return R.fail("保存工段数据失败"); return R.fail("保存工段数据失败");
} }
} }
} }
}
} }
if (kingdeeWorkCenterDataVos.isEmpty()) { if (kingdeeWorkCenterDataVos.isEmpty()) {
@ -546,7 +542,6 @@ public class KingdeeWorkCenterDataController extends BaseController {
for (String workCenter : workCenters) { for (String workCenter : workCenters) {
try { try {
R<List<KingdeeWorkCenterDataBo>> result = getKingdeeDelayData(workCenter); R<List<KingdeeWorkCenterDataBo>> result = getKingdeeDelayData(workCenter);
List<KingdeeWorkCenterDataBo> data = result.getData();
if (R.isError(result) || CollUtil.isEmpty(result.getData())) { if (R.isError(result) || CollUtil.isEmpty(result.getData())) {
markdownMsg.append("- ").append(workCenter).append("<font color=\"comment\">无数据</font>\n"); markdownMsg.append("- ").append(workCenter).append("<font color=\"comment\">无数据</font>\n");
continue; continue;
@ -561,10 +556,18 @@ public class KingdeeWorkCenterDataController extends BaseController {
DateUtil.format(new Date(), "yyyyMMddHHmmss")); DateUtil.format(new Date(), "yyyyMMddHHmmss"));
String filePath = FileUtils.getTempDirectoryPath() + File.separator + fileName; String filePath = FileUtils.getTempDirectoryPath() + File.separator + fileName;
// 使用EasyExcel写入数据 // 使用模板+动态数据映射写入延期数据
EasyExcel.write(filePath, KingdeeWorkCenterDataVo.class) String templatePath = "jpg/延期工段数据模板.xlsx";
.sheet("工段数据") Map<String, Object> staticDataMap = new HashMap<>();
.doWrite(BeanUtil.copyToList(dataList, KingdeeWorkCenterDataVo.class)); 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文件 // 发送Excel文件
File excelFile = new File(filePath); 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 fileName = String.format("%s安全预警数据_%s.xlsx", "企标", DateUtil.format(new Date(), "yyyyMMddHHmmss"));
String filePath = FileUtils.getTempDirectoryPath() + File.separator + fileName; String filePath = FileUtils.getTempDirectoryPath() + File.separator + fileName;
// 使用EasyExcel写入数据 // 使用模板+动态数据映射写入安全库存数据
EasyExcel.write(filePath, WlStockDataVo.class) String templatePath = "jpg/安全库存数据模板.xlsx";
.sheet("工段数据") Map<String, Object> staticDataMap = new HashMap<>();
.doWrite(BeanUtil.copyToList(safetyStocks, WlStockDataVo.class)); 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文件 // 发送Excel文件
File excelFile = new File(filePath); 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) { private List<WlStockData> processMaterialGroups(List<WlStockData> originalStocks) {
if (CollUtil.isEmpty(originalStocks)) { if (CollUtil.isEmpty(originalStocks)) {
return new ArrayList<>(); return new ArrayList<>();
@ -875,8 +936,7 @@ public class KingdeeWorkCenterDataController extends BaseController {
msg.append("- 采购申请单:").append(purchaseRequestList.size()).append("\n"); msg.append("- 采购申请单:").append(purchaseRequestList.size()).append("\n");
// 生成Excel文件使用采购模板 // 生成Excel文件使用采购模板
String fileName = String.format("采购订单和申请数据_%s.xlsx", String fileName = String.format("采购订单和申请数据_%s.xlsx",DateUtil.format(new Date(), "yyyyMMddHHmmss"));
DateUtil.format(new Date(), "yyyyMMddHHmmss"));
String filePath = FileUtils.getTempDirectoryPath() + File.separator + fileName; 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; package com.ruoyi.system.controller;
import java.util.List; import java.util.List;

View File

@ -5,10 +5,8 @@ import java.math.BigDecimal;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import cn.hutool.json.JSONUtil;
import com.alibaba.excel.EasyExcel; 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.fasterxml.jackson.core.JsonProcessingException;
import com.ruoyi.common.excel.DefaultExcelListener; import com.ruoyi.common.excel.DefaultExcelListener;
import com.ruoyi.common.exception.ServiceException; 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.ExcelTemplateProc;
import com.ruoyi.common.poi.DynamicDataMapping; import com.ruoyi.common.poi.DynamicDataMapping;
import com.ruoyi.system.domain.*; 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.MaterialUseDTO;
import com.ruoyi.system.domain.dto.ProcessRouteDTO; import com.ruoyi.system.domain.dto.ProcessRouteDTO;
import com.ruoyi.system.domain.dto.ProcessRouteExcelDTO; 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.*;
import com.ruoyi.system.domain.vo.BomDataVO; import com.ruoyi.system.domain.vo.BomDataVO;
import com.ruoyi.system.mapper.ProcessOrderProMapper; import com.ruoyi.system.mapper.ProcessOrderProMapper;
import com.ruoyi.system.mapper.SafetyStockMapper;
import com.ruoyi.system.runner.JdUtil; import com.ruoyi.system.runner.JdUtil;
import com.ruoyi.system.service.*; import com.ruoyi.system.service.*;
import com.ruoyi.system.service.impl.ProductionOrderServiceImpl;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*; import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; 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.system.domain.bo.ProcessOrderProBo;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
/** /**
* 项目令号 * 生产项目
*
* @author tzy * @author tzy
* @date 2024-10-22 * @date 2024-10-22
*/ */
@ -74,7 +69,9 @@ public class ProcessOrderProController extends BaseController {
private final IMrpResultCheckService iMrpResultCheckService; private final IMrpResultCheckService iMrpResultCheckService;
private final ProcessOrderProMapper processOrderProMapper; private final ProcessOrderProMapper processOrderProMapper;
private final IImMaterialService imMaterialService; 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日"); 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); return iProcessOrderProService.queryPageList(bo, pageQuery);
} }
@SaCheckPermission("system:orderPro:list") @SaCheckPermission("system:orderPro:processlist")
@GetMapping("/processlist") @GetMapping("/processlist")
public List<ProcessRoute> processList(ProcessOrderProBo bo) { public List<ProcessRoute> processList(ProcessOrderProBo bo) {
@ -196,16 +193,16 @@ public class ProcessOrderProController extends BaseController {
iProcessOrderProService.batchUpdateProjectTimeRanges(); iProcessOrderProService.batchUpdateProjectTimeRanges();
} }
@SaCheckPermission("system:plan:add") @SaCheckPermission("system:orderPro:addProduct")
@Log(title = "排产计划", businessType = BusinessType.INSERT) @Log(title = "排产计划", businessType = BusinessType.INSERT)
@RepeatSubmit() @RepeatSubmit()
@PostMapping("/addProduct") @PostMapping("/addProduct")
public R<Void> addProduct(@Validated(AddGroup.class) @RequestBody FigureSaveBo bo, @RequestBody ProcessOrderProBo orderPro) { public R<Void> addProduct(@Validated(AddGroup.class) @RequestBody RigidChainModelDTO orderPro) {
iProcessOrderProService.addProduct(bo, orderPro); iProcessOrderProService.addProduct(orderPro);
return R.ok(); return R.ok();
} }
@SaCheckPermission("system:plan:add") @SaCheckPermission("system:orderPro:executDrawing")
@Log(title = "执行出图", businessType = BusinessType.INSERT) @Log(title = "执行出图", businessType = BusinessType.INSERT)
@RepeatSubmit() @RepeatSubmit()
@PostMapping("/executDrawing") @PostMapping("/executDrawing")
@ -214,36 +211,46 @@ public class ProcessOrderProController extends BaseController {
return R.ok(s); return R.ok(s);
} }
@GetMapping("/executDrawing/progress/{id}")
public SseEmitter executDrawingProgress(@PathVariable Long id) {
return iProcessOrderProService.startDrawingSse(id);
}
/** /**
* 上传dwg图纸 * 上传dwg图纸
* *
* @param id
* @param filePath * @param filePath
* @return * @return
*/ */
@SaCheckPermission("system:orderPro:uploadDwg")
@Log(title = "上传dwg图纸", businessType = BusinessType.INSERT)
@PostMapping("/uploadDwg") @PostMapping("/uploadDwg")
@ResponseBody @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(); String originalFilename = filePath.getOriginalFilename();
if (StringUtils.isEmpty(originalFilename)) { if (StringUtils.isEmpty(originalFilename)) {
return R.fail("获取文件名称错误!!"); return R.fail("获取文件名称错误!!");
} }
//校验文件后缀 jpg jpeg pdf 格式的文件不允许上传 String suffix = originalFilename.substring(originalFilename.lastIndexOf('.') + 1);
String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1); if (!"dwg".equalsIgnoreCase(suffix)) {
if (!"dwg".equals(suffix)) {
return R.fail("禁止非法文件上传!!"); return R.fail("禁止非法文件上传!!");
} }
List<String> results = new ArrayList<>();
String reslut = iProcessOrderProService.uploadContractPDF(id, originalFilename, filePath); for (Long id : ids) {
if (id == null) {
return R.ok(reslut); 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包 * 下载PDF并生成zip包
*/ */
@SaCheckPermission("system:orderPro:uploadPDF")
@SaCheckPermission("system:processOrderPro:uploadPDF")
@Log(title = "下载PDF", businessType = BusinessType.UPDATE) @Log(title = "下载PDF", businessType = BusinessType.UPDATE)
@CrossOrigin(origins = "*", allowedHeaders = "*", exposedHeaders = {"Content-Disposition", "Content-Length"}) @CrossOrigin(origins = "*", allowedHeaders = "*", exposedHeaders = {"Content-Disposition", "Content-Length"})
@GetMapping("/uploadPDF") @GetMapping("/uploadPDF")
@ -303,7 +310,7 @@ public class ProcessOrderProController extends BaseController {
/** /**
* 下载ZIP包 * 下载ZIP包
*/ */
@SaCheckPermission("system:processOrderPro:downloadZip") @SaCheckPermission("system:orderPro:downloadZip")
@Log(title = "下载ZIP包", businessType = BusinessType.OTHER) @Log(title = "下载ZIP包", businessType = BusinessType.OTHER)
@GetMapping("/downloadZip/{id}") @GetMapping("/downloadZip/{id}")
public void downloadZip(@PathVariable Long id, HttpServletResponse response) { public void downloadZip(@PathVariable Long id, HttpServletResponse response) {
@ -364,7 +371,7 @@ public class ProcessOrderProController extends BaseController {
return iMrpResultCheckService.getMRPResults(id); return iMrpResultCheckService.getMRPResults(id);
} }
@SaCheckPermission("system:orderPro:geMRPResults") @SaCheckPermission("system:orderPro:getRouteLog")
@Log(title = "获取工艺上传结果", businessType = BusinessType.OTHER) @Log(title = "获取工艺上传结果", businessType = BusinessType.OTHER)
@PostMapping("/getRouteLog/{id}") @PostMapping("/getRouteLog/{id}")
public R<String> getRouteLog(@PathVariable Long id) throws JsonProcessingException { 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) @Log(title = "下载工艺生产表", businessType = BusinessType.EXPORT)
@PostMapping("/exportRoute") @PostMapping("/exportRoute")
public void exportRoute(@RequestParam("id") Long id, HttpServletResponse response) { public void exportRoute(@RequestParam("id") Long id, HttpServletResponse response) {
@ -452,7 +459,7 @@ public class ProcessOrderProController extends BaseController {
|| materialCode.startsWith("009001") || materialCode.startsWith("009081") || materialCode.startsWith("009001") || materialCode.startsWith("009081")
|| (remark != null && remark.contains("外购"))) { || (remark != null && remark.contains("外购"))) {
// 过滤安全库存如果属于安全库存则进入工艺数据列表 // 过滤安全库存如果属于安全库存则进入工艺数据列表
Boolean isSafeStock = iSafetyStockService.isSafeCode(materialCode.trim()); Boolean isSafeStock = safetyStockService.isSafeCode(materialCode.trim());
if (isSafeStock) { if (isSafeStock) {
// 属于安全库存添加到工艺数据列表 // 属于安全库存添加到工艺数据列表
processDataList.add(item); 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) @Log(title = "下载工艺生产表2", businessType = BusinessType.EXPORT)
@PostMapping("/exportRoute2") @GetMapping ("/exportRoute2")
public void exportRoute2(@RequestParam("id") Long id, HttpServletResponse response) { public void exportRoute2(@RequestParam("id") Long id, HttpServletResponse response) {
try { try {
ProcessOrderPro orderPro = processOrderProMapper.selectById(id); ProcessOrderPro orderPro = processOrderProMapper.selectById(id);
@ -1164,7 +1171,26 @@ public class ProcessOrderProController extends BaseController {
List<ProcessRoute> routes = new ArrayList<>(); List<ProcessRoute> routes = new ArrayList<>();
List<Map<String, Object>> kingdeeBomRows = new ArrayList<>(); List<Map<String, Object>> kingdeeBomRows = new ArrayList<>();
for (ProcessRoute base : routeList) { for (ProcessRoute base : routeList) {
String materialCode = base.getMaterialCode(); 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)) { if (StringUtils.isBlank(materialCode)) {
ProcessRoute item = new ProcessRoute(); ProcessRoute item = new ProcessRoute();
item.setRouteDescription(base.getRouteDescription()); item.setRouteDescription(base.getRouteDescription());
@ -1296,9 +1322,10 @@ public class ProcessOrderProController extends BaseController {
// 电气外包分类条件物料编码开头空格/特定前缀 备注包含"外购" // 电气外包分类条件物料编码开头空格/特定前缀 备注包含"外购"
if (materialCode.startsWith(" ") if (materialCode.startsWith(" ")
|| materialCode.startsWith("009301") || materialCode.startsWith("009999") || materialCode.startsWith("017003") || materialCode.startsWith("017002") || 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) { if (isSafeStock) {
// 属于安全库存添加到工艺数据列表 // 属于安全库存添加到工艺数据列表
processDataList.add(item); processDataList.add(item);
@ -1638,5 +1665,380 @@ public class ProcessOrderProController extends BaseController {
return mapList; 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; MaterialBomMapper materialBomMapper;
private final IBomDetailsService iBomDetailsService; private final IBomDetailsService iBomDetailsService;
private final ProcessOrderProMapper proMapper; private final ProcessOrderProMapper proMapper;
private Long generateUniqueParentId(Long originalId) { private Long generateUniqueParentId(Long originalId) {
return originalId + 1000; return originalId + 1000;
} }
@ -221,10 +222,11 @@ public class ProcessRouteController extends BaseController {
child.setXuEndTime(processRouteVo.getXuEndTime()); child.setXuEndTime(processRouteVo.getXuEndTime());
return child; return child;
} }
/** /**
* 导出工艺路线列表 * 导出工艺路线列表
*/ */
@SaCheckPermission("system:route:export") @SaCheckPermission("system:route:export2")
@Log(title = "工艺路线", businessType = BusinessType.EXPORT) @Log(title = "工艺路线", businessType = BusinessType.EXPORT)
@PostMapping("/export2") @PostMapping("/export2")
public void export2(ProcessRouteBo bo, HttpServletResponse response) { public void export2(ProcessRouteBo bo, HttpServletResponse response) {
@ -270,6 +272,7 @@ public class ProcessRouteController extends BaseController {
throw new RuntimeException("导出Excel异常: " + e.getMessage(), e); throw new RuntimeException("导出Excel异常: " + e.getMessage(), e);
} }
} }
@SaCheckPermission("system:route:export") @SaCheckPermission("system:route:export")
@Log(title = "工艺路线", businessType = BusinessType.EXPORT) @Log(title = "工艺路线", businessType = BusinessType.EXPORT)
@PostMapping("/export") @PostMapping("/export")
@ -331,8 +334,6 @@ public class ProcessRouteController extends BaseController {
} }
/** /**
* 获取工艺路线详细信息 * 获取工艺路线详细信息
* *
@ -355,7 +356,8 @@ public class ProcessRouteController extends BaseController {
return toAjax(iProcessRouteService.insertByBo(bo)); return toAjax(iProcessRouteService.insertByBo(bo));
} }
/**导出 /**
* 导出
* 修改工艺路线 * 修改工艺路线
*/ */
@SaCheckPermission("system:route:edit") @SaCheckPermission("system:route:edit")
@ -378,8 +380,8 @@ public class ProcessRouteController extends BaseController {
return toAjax(iProcessRouteService.deleteWithValidByIds(Arrays.asList(ids), true)); return toAjax(iProcessRouteService.deleteWithValidByIds(Arrays.asList(ids), true));
} }
@Log(title = "明细导入", businessType = BusinessType.IMPORT) @Log(title = "生产工艺计划表导入", businessType = BusinessType.IMPORT)
@SaCheckPermission("system:route:import") @SaCheckPermission("system:route:importRoute")
@PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R importData(@RequestParam("file") MultipartFile file) throws Exception { public R importData(@RequestParam("file") MultipartFile file) throws Exception {
String originalFilename = file.getOriginalFilename(); String originalFilename = file.getOriginalFilename();
@ -433,8 +435,7 @@ public class ProcessRouteController extends BaseController {
/** /**
* 查询工艺表中所有的需要做工艺的物料 * 查询工艺表中所有的需要做工艺的物料
* *
* @return * @return RequestBody List<ProcessRouteVo> routeVoList
* RequestBody List<ProcessRouteVo> routeVoList
*/ */
public List<ProcessRoute> getProcessRouteList(@RequestParam String rooteProdet) { public List<ProcessRoute> getProcessRouteList(@RequestParam String rooteProdet) {
List<ProcessRoute> list = iProcessRouteService.pushRawMater(rooteProdet); List<ProcessRoute> list = iProcessRouteService.pushRawMater(rooteProdet);
@ -459,28 +460,28 @@ public class ProcessRouteController extends BaseController {
* 查询项目列表 * 查询项目列表
*/ */
@Log(title = "获取所有的项目令号") @Log(title = "获取所有的项目令号")
@SaCheckPermission("system:route:getRawBom") @SaCheckPermission("system:route:getDistinctProjectCodes")
@GetMapping("/getDistinctProjectCodes") @GetMapping("/getDistinctProjectCodes")
public ResponseEntity<List<String>> getDistinctProjectCodes(String query) { public ResponseEntity<List<String>> getDistinctProjectCodes(String query) {
return ResponseEntity.ok(iProcessRouteService.getDistinctProjectCodes(query)); return ResponseEntity.ok(iProcessRouteService.getDistinctProjectCodes(query));
} }
@Log(title = "获取工序列表") @Log(title = "获取工序列表")
@SaCheckPermission("system:route:getRawBom") @SaCheckPermission("system:route:getProcessInfoList")
@GetMapping("/getProcessInfoList") @GetMapping("/getProcessInfoList")
public ResponseEntity<List<String>> getProcessInfoList(String query) { public ResponseEntity<List<String>> getProcessInfoList(String query) {
return ResponseEntity.ok(iProcessRouteService.getProcessInfoList(query)); return ResponseEntity.ok(iProcessRouteService.getProcessInfoList(query));
} }
@Log(title = "根据生产令号获取生产编号==》获取计划编号") @Log(title = "根据生产令号获取生产编号==》获取计划编号")
@SaCheckPermission("system:route:getRawBom") @SaCheckPermission("system:route:getSelecPlanRouteList")
@PostMapping("/getSelecPlanRouteList") @PostMapping("/getSelecPlanRouteList")
public List<CombinedDTO> getSelecPlanRouteList(@RequestParam String rooteProdet) { public List<CombinedDTO> getSelecPlanRouteList(@RequestParam String rooteProdet) {
return iProcessRouteService.getSelecPlanRouteList(rooteProdet); return iProcessRouteService.getSelecPlanRouteList(rooteProdet);
} }
@Log(title = "生成这个项目的pdf") @Log(title = "生成项目图纸PDF")
@SaCheckPermission("system:route:getRawBom") @SaCheckPermission("system:route:generatePDFs")
@GetMapping("/generatePDFs") @GetMapping("/generatePDFs")
public void generatePDFs(String rooteProdet, HttpServletResponse response) throws IOException { public void generatePDFs(String rooteProdet, HttpServletResponse response) throws IOException {
// 调用服务层方法生成 ZIP 文件并获取其路径 // 调用服务层方法生成 ZIP 文件并获取其路径
@ -513,6 +514,7 @@ public class ProcessRouteController extends BaseController {
public List<Model> updateProcessPlan(@RequestParam String rooteProdet) throws Exception { public List<Model> updateProcessPlan(@RequestParam String rooteProdet) throws Exception {
return iProcessRouteService.updateProcessPlan(rooteProdet); return iProcessRouteService.updateProcessPlan(rooteProdet);
} }
/** /**
* 更新生产订单的时间 * 更新生产订单的时间
*/ */
@ -544,10 +546,9 @@ public class ProcessRouteController extends BaseController {
} }
@Log(title = "获取材料bom列表") @Log(title = "获取材料bom列表")
@SaCheckPermission("system:route:getRawBom") @SaCheckPermission("system:route:getBomInfo")
@PostMapping("/getBomInfo") @PostMapping("/getBomInfo")
public ResponseEntity<List<MaterialBom>> getProcessMaterialList( public ResponseEntity<List<MaterialBom>> getProcessMaterialList( @RequestParam(value = "materialCode") String materialCode,
@RequestParam(value = "materialCode") String materialCode,
@RequestParam(value = "materialName") String materialName, @RequestParam(value = "materialName") String materialName,
@RequestParam(value = "productionOrderNo") String productionOrderNo) { @RequestParam(value = "productionOrderNo") String productionOrderNo) {
@ -578,7 +579,7 @@ public class ProcessRouteController extends BaseController {
@Log(title = "导入时间", businessType = BusinessType.IMPORT) @Log(title = "导入时间", businessType = BusinessType.IMPORT)
@SaCheckPermission("system:route:importDataTime") @SaCheckPermission("system:route:importDataTime123")
@PostMapping(value = "/importDataTime123", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/importDataTime123", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> importDataTime123(@RequestParam("file") MultipartFile file) throws Exception { public R<Void> importDataTime123(@RequestParam("file") MultipartFile file) throws Exception {
@ -594,9 +595,8 @@ public class ProcessRouteController extends BaseController {
} }
@Log(title = "获取金蝶工艺路线") @Log(title = "获取金蝶工艺路线")
@SaCheckPermission("system:route:getSelectProcessRoute") @SaCheckPermission("system:route:getSelectProcessRout1e")
@PostMapping("/getSelectProcessRout1e") @PostMapping("/getSelectProcessRout1e")
public List<ProcessRouteSelectDTO> getSelectProcessRoute1(@RequestParam String materilCode) { public List<ProcessRouteSelectDTO> getSelectProcessRoute1(@RequestParam String materilCode) {
return iProcessRouteService.getSelectProcessRoute(materilCode); return iProcessRouteService.getSelectProcessRoute(materilCode);
@ -620,6 +620,7 @@ public class ProcessRouteController extends BaseController {
}); });
} }
private void processMaterAndRoute(JDMaterialAndRoute materialAndRoute, List<BomDetails> bomDetailsList, List<ProcessRoute> routeList, List<MaterialBom> materialBoms, String productionOrderNo) { private void processMaterAndRoute(JDMaterialAndRoute materialAndRoute, List<BomDetails> bomDetailsList, List<ProcessRoute> routeList, List<MaterialBom> materialBoms, String productionOrderNo) {
// 处理工序列表 // 处理工序列表
materialAndRoute.getPlannedProcessVos().forEach(processRouteDTO -> { materialAndRoute.getPlannedProcessVos().forEach(processRouteDTO -> {
@ -884,4 +885,29 @@ public class ProcessRouteController extends BaseController {
} }
} }
/**
* 更新生产订单仓库字段
*/
@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链板 * 35E链板
*/ */
private Long V46; 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 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 }) @NotNull(message = "35E链板不能为空", groups = { AddGroup.class, EditGroup.class })
private Long V46; 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; 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.domain.BaseEntity;
import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/** /**
* 外购件临时业务对象 figure_save * 外购件临时业务对象 figure_save
* *
* @author tzy * @author ruoyi
* @date 2024-05-28 * @date 2025-12-04
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class FigureSaveBo extends BaseEntity { public class FigureSaveBo extends BaseEntity {
/**
@TableId(value = "id", type = IdType.AUTO) *
*/
private Long id; 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 }) @NotBlank(message = "产品型号不能为空", groups = { AddGroup.class, EditGroup.class })
private String figureNumber; 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 productType;
/**
* 图纸路径
*/
private String drawPath;
/** /**
* 关联项目表 * 轴向
*/ */
@NotNull(message = "关联项目表不能为空", groups = { AddGroup.class, EditGroup.class }) private String axialType;
private Long pid;
/**
* 箱体
*/
private String boxType;
} }

View File

@ -6,6 +6,7 @@ import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import javax.validation.constraints.*; import javax.validation.constraints.*;
import java.math.BigDecimal;
/** /**
@ -53,19 +54,19 @@ public class KingdeeWorkCenterDataBo extends BaseEntity {
* 生产数量 * 生产数量
*/ */
@NotNull(message = "生产数量不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "生产数量不能为空", groups = { AddGroup.class, EditGroup.class })
private Long operQty; private BigDecimal operQty;
/** /**
* 转入数量 * 转入数量
*/ */
@NotNull(message = "转入数量不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "转入数量不能为空", groups = { AddGroup.class, EditGroup.class })
private Long transInQty; private BigDecimal transInQty;
/** /**
* 转出数量 * 转出数量
*/ */
@NotNull(message = "转出数量不能为空", groups = { AddGroup.class, EditGroup.class }) @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 }) @NotBlank(message = "计划完成时间不能为空", groups = { AddGroup.class, EditGroup.class })
private String operPlanFinishTime; 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 }) @NotBlank(message = "工作中心不能为空", groups = { AddGroup.class, EditGroup.class })
private String workCenter; private String workCenter;
/**
* 汇报数量
*/
private BigDecimal FReportQty;
/**
* 工废数量
*/
private BigDecimal FScrapQty;
} }

View File

@ -22,25 +22,21 @@ public class SysConfigIniBo extends BaseEntity {
/** /**
* 主键id * 主键id
*/ */
@NotNull(message = "主键id不能为空", groups = { EditGroup.class })
private Long id; private Long id;
/** /**
* dir * dir
*/ */
@NotBlank(message = "dir不能为空", groups = { AddGroup.class, EditGroup.class })
private String dir; private String dir;
/** /**
* 路径 * 路径
*/ */
@NotBlank(message = "路径不能为空", groups = { AddGroup.class, EditGroup.class })
private String url; private String url;
/** /**
* 项目图纸路径 * 项目图纸路径
*/ */
@NotBlank(message = "项目图纸路径不能为空", groups = { AddGroup.class, EditGroup.class })
private String productDir; private String productDir;
/** /**
@ -58,31 +54,26 @@ public class SysConfigIniBo extends BaseEntity {
/** /**
* 备注 * 备注
*/ */
@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark; private String remark;
/** /**
* 备用字段1 * 备用字段1
*/ */
@NotBlank(message = "备用字段1不能为空", groups = { AddGroup.class, EditGroup.class })
private String sparedOne; private String sparedOne;
/** /**
* 备用字段2 * 备用字段2
*/ */
@NotBlank(message = "备用字段2不能为空", groups = { AddGroup.class, EditGroup.class })
private String sparedTwo; private String sparedTwo;
/** /**
* 备用字段3 * 备用字段3
*/ */
@NotNull(message = "备用字段3不能为空", groups = { AddGroup.class, EditGroup.class })
private Long sparedThree; private Long sparedThree;
/** /**
* 备用字段4 * 备用字段4
*/ */
@NotNull(message = "备用字段4不能为空", groups = { AddGroup.class, EditGroup.class })
private Long sparedFour; 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; private Date FOperPlanFinishTime;
@JsonProperty("FMONumber") @JsonProperty("FMONumber")
private String 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链板") @ExcelProperty(value = "35E链板")
private Long V46; 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; private String batchQuantity;
/** /**

View File

@ -69,4 +69,15 @@ public class FigureSaveVo {
*/ */
@ExcelProperty(value = "关联项目表") @ExcelProperty(value = "关联项目表")
private Long pid; 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 com.ruoyi.common.convert.ExcelDictConvert;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
/** /**
* 金蝶工段数据视图对象 kingdee_work_center_data * 金蝶工段数据视图对象 kingdee_work_center_data
@ -96,6 +98,15 @@ public class KingdeeWorkCenterDataVo {
*/ */
@ExcelProperty(value = "计划完成时间") @ExcelProperty(value = "计划完成时间")
private String operPlanFinishTime; 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 = "工作中心") @ExcelProperty(value = "工作中心")
private String workCenter; 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 String drawingPathUrl;
private Date createTime; private Date createTime;
/**
* 创建人
*/
private String createBy;
/** /**
* 工艺上传日志 * 工艺上传日志
*/ */

View File

@ -18,4 +18,9 @@ public class FSubEntity {
@JsonProperty("FOperNumber") @JsonProperty("FOperNumber")
private Long 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; private String FProcessId_number;
@JsonProperty("FMONumber") @JsonProperty("FMONumber")
private String FMONumber; private String FMONumber;
@JsonProperty("FPlanFinishTime") @JsonProperty("FPlanFinishTime")
private Date 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.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson; import com.google.gson.*;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.kingdee.bos.webapi.entity.RepoRet; import com.kingdee.bos.webapi.entity.RepoRet;
import com.kingdee.bos.webapi.sdk.K3CloudApi; import com.kingdee.bos.webapi.sdk.K3CloudApi;
import com.ruoyi.common.core.domain.R; 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.PartCost;
import com.ruoyi.system.domain.dto.*; import com.ruoyi.system.domain.dto.*;
import com.ruoyi.system.domain.vo.*; import com.ruoyi.system.domain.vo.*;
import com.ruoyi.system.jdmain.rouplan.FidEntryIdDTO;
import com.ruoyi.system.jdmain.rouplan.Model; import com.ruoyi.system.jdmain.rouplan.Model;
import org.aspectj.bridge.MessageUtil; import org.aspectj.bridge.MessageUtil;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -2055,8 +2053,9 @@ public class JdUtil {
return null; // 如果没有找到返回 null return null; // 如果没有找到返回 null
} }
/**
//保存更新生产订单的开工时间 * 保存更新生产订单的开工时间
*/
public static String updateOrder(JdHuoZhu jdHuoZhu, Model numDTO, Date xuStartTime, Date xuEndTime) throws Exception { public static String updateOrder(JdHuoZhu jdHuoZhu, Model numDTO, Date xuStartTime, Date xuEndTime) throws Exception {
String planStartDate = dateFormat.format(xuStartTime); String planStartDate = dateFormat.format(xuStartTime);
String planFinishDate = dateFormat.format(xuEndTime); String planFinishDate = dateFormat.format(xuEndTime);
@ -3332,4 +3331,218 @@ public class JdUtil {
} }
return Collections.emptyList(); 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.setFDetailID(numDTO.getFEntity().get(0).getFSubEntity().get(0).getFDetailID()); // 确保获取正确的 FDetailID
subEntity.setFOperPlanStartTime(processRoute.getXuStartTime()); subEntity.setFOperPlanStartTime(processRoute.getXuStartTime());
subEntity.setFOperPlanFinishTime(processRoute.getXuEndTime()); subEntity.setFOperPlanFinishTime(processRoute.getXuEndTime());
// 创建 Entity 对象并设置字段 // 创建 Entity 对象并设置字段
FEntity entity = new FEntity(); FEntity entity = new FEntity();
entity.setFEntryID(numDTO.getFEntity().get(0).getFEntryID()); entity.setFEntryID(numDTO.getFEntity().get(0).getFEntryID());
entity.setFSeqNumber(numDTO.getFEntity().get(0).getFSeqNumber()); entity.setFSeqNumber(numDTO.getFEntity().get(0).getFSeqNumber());
entity.setFSeqName(numDTO.getFEntity().get(0).getFSeqName()); entity.setFSeqName(numDTO.getFEntity().get(0).getFSeqName());
// SubEntity 添加到 Entity FSubEntity 列表中 // SubEntity 添加到 Entity FSubEntity 列表中
List<FSubEntity> subEntities = new ArrayList<>(); List<FSubEntity> subEntities = new ArrayList<>();
subEntities.add(subEntity); subEntities.add(subEntity);
entity.setFSubEntity(subEntities); entity.setFSubEntity(subEntities);
// 创建 Model 对象并设置字段 // 创建 Model 对象并设置字段
Model model = new Model(); Model model = new Model();
model.setFID(numDTO.getFID()); model.setFID(numDTO.getFID());
model.setFPlanStartTime(processTimeInfo.getTenthProcessStartTime()); model.setFPlanStartTime(processTimeInfo.getTenthProcessStartTime());
model.setFPlanFinishTime(processTimeInfo.getLastProcessEndTime()); model.setFPlanFinishTime(processTimeInfo.getLastProcessEndTime());
// Entity 添加到 Model FEntity 列表中 // Entity 添加到 Model FEntity 列表中
List<FEntity> entities = new ArrayList<>(); List<FEntity> entities = new ArrayList<>();
entities.add(entity); entities.add(entity);
model.setFEntity(entities); model.setFEntity(entities);
// 创建 MainModel 并设置字段 // 创建 MainModel 并设置字段
MainModel mainModel = new MainModel(); MainModel mainModel = new MainModel();
List<String> needUpDateFields = Arrays.asList( List<String> needUpDateFields = Arrays.asList(
@ -113,7 +108,7 @@ public class updatePcessPlanConver {
//对返回结果进行解析和校验 //对返回结果进行解析和校验
repoRet = gson.fromJson(resultJson, RepoRet.class); repoRet = gson.fromJson(resultJson, RepoRet.class);
if (repoRet.getResult().getResponseStatus().isIsSuccess()) { if (repoRet.getResult().getResponseStatus().isIsSuccess()) {
System.out.printf("接口返回结果: %s%n", gson.toJson(repoRet.getResult())); System.out.printf("接口返回结果====================》: %s%n", gson.toJson(repoRet.getResult()));
} else { } else {
fail("接口返回结果: " + gson.toJson(repoRet.getResult().getResponseStatus().getErrors().get(1))); fail("接口返回结果: " + gson.toJson(repoRet.getResult().getResponseStatus().getErrors().get(1)));
} }
@ -125,5 +120,42 @@ public class updatePcessPlanConver {
return repoRet; 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.ProcessRouteExcelDTO;
import com.ruoyi.system.domain.dto.ProcessRoutePushResultDTO; import com.ruoyi.system.domain.dto.ProcessRoutePushResultDTO;
import com.ruoyi.system.domain.dto.ProcessRouteXuDTO; 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.OverdueProjectVo;
import com.ruoyi.system.domain.vo.ProcessOrderProVo; import com.ruoyi.system.domain.vo.ProcessOrderProVo;
import com.ruoyi.system.domain.bo.ProcessOrderProBo; 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.common.core.domain.PageQuery;
import com.ruoyi.system.domain.vo.ProductionOrderVo; import com.ruoyi.system.domain.vo.ProductionOrderVo;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -67,7 +69,7 @@ public interface IProcessOrderProService {
void batchUpdateProjectTimeRanges(); void batchUpdateProjectTimeRanges();
List<ProcessOrderPro> selectByProjectNumbers(Set<String> routeDescSet); List<ProcessOrderPro> selectByProjectNumbers(Set<String> routeDescSet);
void addProduct(FigureSaveBo bo, ProcessOrderProBo orderPro); void addProduct( RigidChainModelDTO orderPro);
String executDrawing(ProcessOrderProBo orderPro); String executDrawing(ProcessOrderProBo orderPro);
@ -85,4 +87,6 @@ public interface IProcessOrderProService {
List<ProcessRouteExcelDTO> getRouteAndBomDetail(List<ProcessRoute> routlist,List<ProductionOrderVo> processDataList,ProcessOrderPro orderPro); List<ProcessRouteExcelDTO> getRouteAndBomDetail(List<ProcessRoute> routlist,List<ProductionOrderVo> processDataList,ProcessOrderPro orderPro);
R<String> getRouteLog(Long id) throws JsonProcessingException; 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); 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); Boolean executDrawing(ProcessOrderProBo orderPro);
List<ProductionOrder> selectByProCode(String productionOrderNo); 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