From 7a50fdb1cfeed5d485bc01f6320e1432fc84bcfb Mon Sep 17 00:00:00 2001 From: wanxiaoli Date: Fri, 16 Jan 2026 11:23:33 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=89=A9=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../css/controller/MaterialController.java | 2 +- .../business/css/service/MaterialService.java | 5 +++++ .../css/service/impl/MaterialServiceImpl.java | 17 +++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/business-css/src/main/java/com/yfd/business/css/controller/MaterialController.java b/business-css/src/main/java/com/yfd/business/css/controller/MaterialController.java index 7cedfb7..2b76f36 100644 --- a/business-css/src/main/java/com/yfd/business/css/controller/MaterialController.java +++ b/business-css/src/main/java/com/yfd/business/css/controller/MaterialController.java @@ -34,7 +34,7 @@ public class MaterialController { @PostMapping public boolean create(@RequestBody Material material) { material.setModifier(currentUsername()); - return materialService.save(material); + return materialService.saveMaterial(material); } /** diff --git a/business-css/src/main/java/com/yfd/business/css/service/MaterialService.java b/business-css/src/main/java/com/yfd/business/css/service/MaterialService.java index 6307664..c1137b1 100644 --- a/business-css/src/main/java/com/yfd/business/css/service/MaterialService.java +++ b/business-css/src/main/java/com/yfd/business/css/service/MaterialService.java @@ -9,4 +9,9 @@ public interface MaterialService extends IService { * 导入物料 */ boolean importMaterials(MultipartFile file); + + /** + * 新增物料 + */ + boolean saveMaterial(Material material); } diff --git a/business-css/src/main/java/com/yfd/business/css/service/impl/MaterialServiceImpl.java b/business-css/src/main/java/com/yfd/business/css/service/impl/MaterialServiceImpl.java index 74fa171..ae5a332 100644 --- a/business-css/src/main/java/com/yfd/business/css/service/impl/MaterialServiceImpl.java +++ b/business-css/src/main/java/com/yfd/business/css/service/impl/MaterialServiceImpl.java @@ -1,10 +1,15 @@ package com.yfd.business.css.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yfd.business.css.domain.Device; import com.yfd.business.css.domain.Material; import com.yfd.business.css.mapper.MaterialMapper; import com.yfd.business.css.service.MaterialService; import com.yfd.platform.system.service.IUserService; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; + import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -53,6 +58,18 @@ public class MaterialServiceImpl } } + @Override + public boolean saveMaterial(Material material) { + + // 1. 如果前端没有传 materialId,显式生成 + if (StrUtil.isBlank(material.getMaterialId())) { + material.setMaterialId(IdUtil.fastUUID()); + } + + // 2. 如果前端传了 materialId,直接使用 + return this.save(material); + } + private boolean importExcel(Workbook workbook) { try (Workbook wb = workbook) { Sheet sheet = wb.getSheetAt(0); From 8c0b313b0bf5426cd52fb304b2e861cc4358a655 Mon Sep 17 00:00:00 2001 From: wanxiaoli Date: Fri, 16 Jan 2026 17:26:44 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=94=BE=E4=B8=80=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../css/controller/DeviceController.java | 8 ++++++- .../business/css/service/DeviceService.java | 4 +++- .../css/service/impl/DeviceServiceImpl.java | 22 +++++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/business-css/src/main/java/com/yfd/business/css/controller/DeviceController.java b/business-css/src/main/java/com/yfd/business/css/controller/DeviceController.java index 64f0ecb..1601649 100644 --- a/business-css/src/main/java/com/yfd/business/css/controller/DeviceController.java +++ b/business-css/src/main/java/com/yfd/business/css/controller/DeviceController.java @@ -34,7 +34,13 @@ public class DeviceController { @PostMapping public boolean create(@RequestBody Device device) { device.setModifier(currentUsername()); - return deviceService.save(device); + return deviceService.createDevice(device); + } + + @PostMapping("/saveOrUpdate") + public boolean saveOrUpdate(@RequestBody Device device) { + device.setModifier(currentUsername()); + return deviceService.saveOrUpdateByBusiness(device); } /** diff --git a/business-css/src/main/java/com/yfd/business/css/service/DeviceService.java b/business-css/src/main/java/com/yfd/business/css/service/DeviceService.java index 9e44e17..5b755e5 100644 --- a/business-css/src/main/java/com/yfd/business/css/service/DeviceService.java +++ b/business-css/src/main/java/com/yfd/business/css/service/DeviceService.java @@ -9,5 +9,7 @@ public interface DeviceService extends IService { */ boolean importDevices(MultipartFile file, String deviceType); - public boolean createDevice(Device device) ; + boolean createDevice(Device device) ; + + boolean saveOrUpdateByBusiness(Device device); } diff --git a/business-css/src/main/java/com/yfd/business/css/service/impl/DeviceServiceImpl.java b/business-css/src/main/java/com/yfd/business/css/service/impl/DeviceServiceImpl.java index c706ff6..921fe5e 100644 --- a/business-css/src/main/java/com/yfd/business/css/service/impl/DeviceServiceImpl.java +++ b/business-css/src/main/java/com/yfd/business/css/service/impl/DeviceServiceImpl.java @@ -67,6 +67,28 @@ public class DeviceServiceImpl // 2. 如果前端传了 deviceId,直接使用 return this.save(device); } + + @Override + public boolean saveOrUpdateByBusiness(Device device) { + + String deviceId = device.getDeviceId(); + + // 情况 1:未传 deviceId → 直接新增 + if (StrUtil.isBlank(deviceId)) { + return this.save(device); + } + + // 情况 2:传了 deviceId,判断是否存在 + Device dbDevice = this.getById(deviceId); + + if (dbDevice == null) { + // 数据库不存在 → 新增(使用传入的 deviceId) + return this.save(device); + } else { + // 数据库存在 → 更新 + return this.updateById(device); + } + } private boolean importExcel(Workbook workbook, String deviceType) { try (Workbook wb = workbook) { From 912dd6075a1d2ae20f61e1e7a9ad6382060ade3d Mon Sep 17 00:00:00 2001 From: wanxiaoli Date: Fri, 16 Jan 2026 18:30:49 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E7=89=A9=E6=96=99=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=B8=8E=E4=BF=AE=E6=94=B9=E5=9C=A8=E5=90=8C=E4=B8=80=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../css/controller/DeviceController.java | 5 ++++- .../css/controller/MaterialController.java | 11 +++++++++- .../business/css/service/MaterialService.java | 3 +++ .../css/service/impl/MaterialServiceImpl.java | 22 +++++++++++++++++++ 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/business-css/src/main/java/com/yfd/business/css/controller/DeviceController.java b/business-css/src/main/java/com/yfd/business/css/controller/DeviceController.java index 1601649..44ee2d6 100644 --- a/business-css/src/main/java/com/yfd/business/css/controller/DeviceController.java +++ b/business-css/src/main/java/com/yfd/business/css/controller/DeviceController.java @@ -117,7 +117,7 @@ public class DeviceController { /** - * 6. 设备分页查询(类型 可选 + 名称 可选) + * 6. 设备模板库分页查询(类型 可选 + 名称 可选) * 输入参数:查询参数 type(可选),name(可选),pageNum(页码,默认1),pageSize(每页条数,默认10) * 输出参数:设备分页列表(按创建时间倒序) * @param type 设备类型(可选) @@ -132,6 +132,9 @@ public class DeviceController { @RequestParam(defaultValue = "1") long pageNum, @RequestParam(defaultValue = "20") long pageSize) { QueryWrapper qw = new QueryWrapper<>(); + // 模板库设备 project_id 为 -1 + qw.eq("project_id", "-1"); + if (type != null && !type.isEmpty()) { qw.eq("type", type); } diff --git a/business-css/src/main/java/com/yfd/business/css/controller/MaterialController.java b/business-css/src/main/java/com/yfd/business/css/controller/MaterialController.java index 2b76f36..6b70f45 100644 --- a/business-css/src/main/java/com/yfd/business/css/controller/MaterialController.java +++ b/business-css/src/main/java/com/yfd/business/css/controller/MaterialController.java @@ -2,6 +2,7 @@ package com.yfd.business.css.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yfd.business.css.domain.Device; import com.yfd.business.css.domain.Material; import com.yfd.business.css.service.MaterialService; import com.yfd.platform.system.service.IUserService; @@ -37,6 +38,12 @@ public class MaterialController { return materialService.saveMaterial(material); } + @PostMapping("/saveOrUpdate") + public boolean saveOrUpdate(@RequestBody Material material) { + material.setModifier(currentUsername()); + return materialService.saveOrUpdateByBusiness(material); + } + /** * 2. 编辑物料 * 输入参数:请求体中的物料对象(需包含主键) @@ -102,10 +109,12 @@ public class MaterialController { public Page search(@RequestParam(required = false) String name, @RequestParam(defaultValue = "1") long pageNum, @RequestParam(defaultValue = "20") long pageSize) { - QueryWrapper qw = new QueryWrapper().orderByDesc("created_at"); + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("project_id", "-1"); if (name != null && !name.isEmpty()) { qw.like("name", name); } + qw.orderByDesc("created_at"); Page page = new Page<>(pageNum, pageSize, true); return materialService.page(page, qw); } diff --git a/business-css/src/main/java/com/yfd/business/css/service/MaterialService.java b/business-css/src/main/java/com/yfd/business/css/service/MaterialService.java index c1137b1..e9b717d 100644 --- a/business-css/src/main/java/com/yfd/business/css/service/MaterialService.java +++ b/business-css/src/main/java/com/yfd/business/css/service/MaterialService.java @@ -1,6 +1,7 @@ package com.yfd.business.css.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.yfd.business.css.domain.Device; import com.yfd.business.css.domain.Material; import org.springframework.web.multipart.MultipartFile; @@ -14,4 +15,6 @@ public interface MaterialService extends IService { * 新增物料 */ boolean saveMaterial(Material material); + + boolean saveOrUpdateByBusiness(Material material); } diff --git a/business-css/src/main/java/com/yfd/business/css/service/impl/MaterialServiceImpl.java b/business-css/src/main/java/com/yfd/business/css/service/impl/MaterialServiceImpl.java index ae5a332..141dc0c 100644 --- a/business-css/src/main/java/com/yfd/business/css/service/impl/MaterialServiceImpl.java +++ b/business-css/src/main/java/com/yfd/business/css/service/impl/MaterialServiceImpl.java @@ -70,6 +70,28 @@ public class MaterialServiceImpl return this.save(material); } + @Override + public boolean saveOrUpdateByBusiness(Material material) { + + String materialId = material.getMaterialId(); + + // 情况 1:未传 materialId → 直接新增 + if (StrUtil.isBlank(materialId)) { + return this.save(material); + } + + // 情况 2:传了 materialId,判断是否存在 + Material dbMaterial = this.getById(materialId); + + if (dbMaterial == null) { + // 数据库不存在 → 新增(使用传入的 materialId) + return this.save(material); + } else { + // 数据库存在 → 更新 + return this.updateById(material); + } + } + private boolean importExcel(Workbook workbook) { try (Workbook wb = workbook) { Sheet sheet = wb.getSheetAt(0);