From efb32a5367a1427a854e419dd7a8949d62e2bc98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E6=88=90?= <2847920761@qq.com> Date: Thu, 31 Jul 2025 20:10:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=9A=E6=95=B0=E6=8D=AE=E6=BA=90=E7=9A=84?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusCailiaoshebeiController.java | 130 +++++++++++ .../BusCailiaoshebeiPiciController.java | 105 +++++++++ .../BusSuppliespriceController.java | 105 +++++++++ .../domain/BusCailiaoshebei.java | 108 +++++++++ .../domain/BusCailiaoshebeiPici.java | 65 ++++++ .../domain/BusSuppliesprice.java | 61 +++++ .../domain/bo/BusCailiaoshebeiAddReq.java | 113 +++++++++ .../domain/bo/BusCailiaoshebeiBo.java | 102 +++++++++ .../bo/BusCailiaoshebeiEditPlanReq.java | 53 +++++ .../domain/bo/BusCailiaoshebeiEditReq.java | 92 ++++++++ .../domain/bo/BusCailiaoshebeiPiciBo.java | 62 +++++ .../domain/bo/BusSuppliespriceBo.java | 60 +++++ .../dto/BusCailiaoshebeiEditPlanDto.java | 35 +++ .../vo/BusCailiaoshebeiListPlanRes.java | 115 ++++++++++ .../domain/vo/BusCailiaoshebeiPiciVo.java | 68 ++++++ .../domain/vo/BusCailiaoshebeiVo.java | 125 ++++++++++ .../domain/vo/BusSuppliespriceVo.java | 74 ++++++ .../mapper/BusCailiaoshebeiMapper.java | 15 ++ .../mapper/BusCailiaoshebeiPiciMapper.java | 15 ++ .../mapper/BusSuppliespriceMapper.java | 15 ++ .../service/IBusCailiaoshebeiPiciService.java | 70 ++++++ .../service/IBusCailiaoshebeiService.java | 88 +++++++ .../service/IBusSuppliespriceService.java | 70 ++++++ .../impl/BusCailiaoshebeiPiciServiceImpl.java | 134 +++++++++++ .../impl/BusCailiaoshebeiServiceImpl.java | 215 ++++++++++++++++++ .../impl/BusSuppliespriceServiceImpl.java | 135 +++++++++++ .../common/utils/BatchNumberGenerator.java | 53 +++++ .../cailiaoshebei/BusCailiaoshebeiMapper.xml | 7 + .../BusCailiaoshebeiPiciMapper.xml | 7 + 29 files changed, 2297 insertions(+) create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusCailiaoshebeiController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusCailiaoshebeiPiciController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusSuppliespriceController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusCailiaoshebei.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusCailiaoshebeiPici.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusSuppliesprice.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiAddReq.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiEditPlanReq.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiEditReq.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiPiciBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusSuppliespriceBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/BusCailiaoshebeiEditPlanDto.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusCailiaoshebeiListPlanRes.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusCailiaoshebeiPiciVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusCailiaoshebeiVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusSuppliespriceVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/mapper/BusCailiaoshebeiMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/mapper/BusCailiaoshebeiPiciMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/mapper/BusSuppliespriceMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusCailiaoshebeiPiciService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusCailiaoshebeiService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusSuppliespriceService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusCailiaoshebeiPiciServiceImpl.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusCailiaoshebeiServiceImpl.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusSuppliespriceServiceImpl.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/BatchNumberGenerator.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/cailiaoshebei/BusCailiaoshebeiMapper.xml create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/cailiaoshebei/BusCailiaoshebeiPiciMapper.xml diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusCailiaoshebeiController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusCailiaoshebeiController.java new file mode 100644 index 00000000..82c1895c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusCailiaoshebeiController.java @@ -0,0 +1,130 @@ +package org.dromara.cailiaoshebei.controller; + +import lombok.RequiredArgsConstructor; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.cailiaoshebei.domain.bo.*; +import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiListPlanRes; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiVo; +import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 物资-材料设备 + * + * @author Lion Li + * @date 2025-07-31 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/cailiaoshebei/cailiaoshebei") +public class BusCailiaoshebeiController extends BaseController { + + private final IBusCailiaoshebeiService busCailiaoshebeiService; + + //===============================设计=============================== + + /** + * 查询物资-材料设备列表 + */ + @SaCheckPermission("cailiaoshebei:cailiaoshebei:list") + @GetMapping("/list") + public TableDataInfo list(BusCailiaoshebeiBo bo, PageQuery pageQuery) { + return busCailiaoshebeiService.queryPageList(bo, pageQuery); + } + + /** + * 获取物资-材料设备详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("cailiaoshebei:cailiaoshebei:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(busCailiaoshebeiService.queryById(id)); + } + + /** + * 新增物资-材料设备 + */ + @SaCheckPermission("cailiaoshebei:cailiaoshebei:add") + @Log(title = "物资-材料设备", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody BusCailiaoshebeiAddReq req) { + return toAjax(busCailiaoshebeiService.insertByBo(req)); + } + + /** + * 修改物资-材料设备-设计部 + */ + @SaCheckPermission("cailiaoshebei:cailiaoshebei:edit") + @Log(title = "物资-材料设备-设计部", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody BusCailiaoshebeiEditReq bo) { + return toAjax(busCailiaoshebeiService.updateByBo(bo)); + } + +// /** +// * 导出物资-材料设备列表 +// */ +// @SaCheckPermission("cailiaoshebei:cailiaoshebei:export") +// @Log(title = "物资-材料设备", businessType = BusinessType.EXPORT) +// @PostMapping("/export") +// public void export(BusCailiaoshebeiBo bo, HttpServletResponse response) { +// List list = busCailiaoshebeiService.queryList(bo); +// ExcelUtil.exportExcel(list, "物资-材料设备", BusCailiaoshebeiVo.class, response); +// } + + +// /** +// * 删除物资-材料设备 +// * +// * @param ids 主键串 +// */ +// @SaCheckPermission("cailiaoshebei:cailiaoshebei:remove") +// @Log(title = "物资-材料设备", businessType = BusinessType.DELETE) +// @DeleteMapping("/{ids}") +// public R remove(@NotEmpty(message = "主键不能为空") +// @PathVariable Long[] ids) { +// return toAjax(busCailiaoshebeiService.deleteWithValidByIds(List.of(ids), true)); +// } + + //===============================计划=============================== + + /** + * 查询物资-材料设备列表 + */ + @SaCheckPermission("cailiaoshebei:cailiaoshebei:listPlan") + @GetMapping("/listPlan") + public TableDataInfo listPlan(BusCailiaoshebeiBo bo, PageQuery pageQuery) { + return busCailiaoshebeiService.queryPageListPlan(bo, pageQuery); + } + + /** + * 修改物资-材料设备-计划部` + */ + @SaCheckPermission("cailiaoshebei:cailiaoshebei:editPlan") + @Log(title = "物资-材料设备-计划部", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/editPlan") + public R editPlan(@Validated(EditGroup.class) @RequestBody BusCailiaoshebeiEditPlanReq bo) { + return toAjax(busCailiaoshebeiService.updateByPlanBo(bo)); + } + + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusCailiaoshebeiPiciController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusCailiaoshebeiPiciController.java new file mode 100644 index 00000000..1f608109 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusCailiaoshebeiPiciController.java @@ -0,0 +1,105 @@ +package org.dromara.cailiaoshebei.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiPiciVo; +import org.dromara.cailiaoshebei.domain.bo.BusCailiaoshebeiPiciBo; +import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiPiciService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 物资-批次号 + * + * @author Lion Li + * @date 2025-07-31 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/cailiaoshebei/cailiaoshebeiPici") +public class BusCailiaoshebeiPiciController extends BaseController { + + private final IBusCailiaoshebeiPiciService busCailiaoshebeiPiciService; + + /** + * 查询物资-批次号列表 + */ + @SaCheckPermission("cailiaoshebei:cailiaoshebeiPici:list") + @GetMapping("/list") + public TableDataInfo list(BusCailiaoshebeiPiciBo bo, PageQuery pageQuery) { + return busCailiaoshebeiPiciService.queryPageList(bo, pageQuery); + } + + /** + * 导出物资-批次号列表 + */ + @SaCheckPermission("cailiaoshebei:cailiaoshebeiPici:export") + @Log(title = "物资-批次号", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(BusCailiaoshebeiPiciBo bo, HttpServletResponse response) { + List list = busCailiaoshebeiPiciService.queryList(bo); + ExcelUtil.exportExcel(list, "物资-批次号", BusCailiaoshebeiPiciVo.class, response); + } + + /** + * 获取物资-批次号详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("cailiaoshebei:cailiaoshebeiPici:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(busCailiaoshebeiPiciService.queryById(id)); + } + + /** + * 新增物资-批次号 + */ + @SaCheckPermission("cailiaoshebei:cailiaoshebeiPici:add") + @Log(title = "物资-批次号", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody BusCailiaoshebeiPiciBo bo) { + return toAjax(busCailiaoshebeiPiciService.insertByBo(bo)); + } + + /** + * 修改物资-批次号 + */ + @SaCheckPermission("cailiaoshebei:cailiaoshebeiPici:edit") + @Log(title = "物资-批次号", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody BusCailiaoshebeiPiciBo bo) { + return toAjax(busCailiaoshebeiPiciService.updateByBo(bo)); + } + + /** + * 删除物资-批次号 + * + * @param ids 主键串 + */ + @SaCheckPermission("cailiaoshebei:cailiaoshebeiPici:remove") + @Log(title = "物资-批次号", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(busCailiaoshebeiPiciService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusSuppliespriceController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusSuppliespriceController.java new file mode 100644 index 00000000..50a69154 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusSuppliespriceController.java @@ -0,0 +1,105 @@ +package org.dromara.cailiaoshebei.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.cailiaoshebei.domain.vo.BusSuppliespriceVo; +import org.dromara.cailiaoshebei.domain.bo.BusSuppliespriceBo; +import org.dromara.cailiaoshebei.service.IBusSuppliespriceService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 物资-物资清单 + * + * @author Lion Li + * @date 2025-07-31 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/cailiaoshebei/suppliesprice") +public class BusSuppliespriceController extends BaseController { + + private final IBusSuppliespriceService busSuppliespriceService; + + /** + * 查询物资-物资清单列表 + */ + @SaCheckPermission("cailiaoshebei:suppliesprice:list") + @GetMapping("/list") + public TableDataInfo list(BusSuppliespriceBo bo, PageQuery pageQuery) { + return busSuppliespriceService.queryPageList(bo, pageQuery); + } + + /** + * 导出物资-物资清单列表 + */ + @SaCheckPermission("cailiaoshebei:suppliesprice:export") + @Log(title = "物资-物资清单", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(BusSuppliespriceBo bo, HttpServletResponse response) { + List list = busSuppliespriceService.queryList(bo); + ExcelUtil.exportExcel(list, "物资-物资清单", BusSuppliespriceVo.class, response); + } + + /** + * 获取物资-物资清单详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("cailiaoshebei:suppliesprice:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(busSuppliespriceService.queryById(id)); + } + + /** + * 新增物资-物资清单 + */ + @SaCheckPermission("cailiaoshebei:suppliesprice:add") + @Log(title = "物资-物资清单", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody BusSuppliespriceBo bo) { + return toAjax(busSuppliespriceService.insertByBo(bo)); + } + + /** + * 修改物资-物资清单 + */ + @SaCheckPermission("cailiaoshebei:suppliesprice:edit") + @Log(title = "物资-物资清单", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody BusSuppliespriceBo bo) { + return toAjax(busSuppliespriceService.updateByBo(bo)); + } + + /** + * 删除物资-物资清单 + * + * @param ids 主键串 + */ + @SaCheckPermission("cailiaoshebei:suppliesprice:remove") + @Log(title = "物资-物资清单", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(busSuppliespriceService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusCailiaoshebei.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusCailiaoshebei.java new file mode 100644 index 00000000..0ed9a856 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusCailiaoshebei.java @@ -0,0 +1,108 @@ +package org.dromara.cailiaoshebei.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serial; + +/** + * 物资-材料设备对象 bus_cailiaoshebei + * + * @author Lion Li + * @date 2025-07-31 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("bus_cailiaoshebei") +public class BusCailiaoshebei extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 批次ID + */ + private Long batchId; + + /** + * 供货商ID + */ + private Long supplierId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 供货商 + */ + private String supplier; + + /** + * 设备材料名称 + */ + private String name; + + /** + * 供货来源(字典) + */ + private String supply; + + /** + * 规格型号 + */ + private String specification; + + /** + * 特征描述 + */ + private String signalment; + + /** + * 物料编码 + */ + private String materialCode; + + /** + * 计划到场时间 + */ + private Date arrivalTime; + + /** + * 计划完成时间 + */ + private Date finishTime; + + /** + * 计量单位 + */ + private String unit; + + /** + * 计划数量 + */ + private Long plan; + + /** + * 实际数量 + */ + private Long realQuantity; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusCailiaoshebeiPici.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusCailiaoshebeiPici.java new file mode 100644 index 00000000..5892323b --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusCailiaoshebeiPici.java @@ -0,0 +1,65 @@ +package org.dromara.cailiaoshebei.domain; + +import jakarta.validation.constraints.NotNull; +import lombok.experimental.Accessors; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 物资-批次号对象 bus_cailiaoshebei_pici + * + * @author Lion Li + * @date 2025-07-31 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("bus_cailiaoshebei_pici") +@Accessors(chain = true) +public class BusCailiaoshebeiPici extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 批次号 + */ + private String batchNumber; + + /** + * 审批设计 + */ + private String approvalDesign; + + /** + * 审批计划 + */ + private String approvalPlan; + + /** + * 审批项目 + */ + private String approvalProject; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusSuppliesprice.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusSuppliesprice.java new file mode 100644 index 00000000..cbd270fd --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusSuppliesprice.java @@ -0,0 +1,61 @@ +package org.dromara.cailiaoshebei.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 物资-物资清单对象 bus_suppliesprice + * + * @author Lion Li + * @date 2025-07-31 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("bus_suppliesprice") +public class BusSuppliesprice extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * ID + */ + @TableId(value = "id") + private Long id; + + /** + * 材料设备ID + */ + private Long cailiaoshebeiId; + + /** + * 单价 + */ + private Long unitPrice; + + /** + * 合同号 + */ + private String contractNum; + + /** + * 预估供应周期 + */ + private Long estimatedCycle; + + /** + * 供货公司 + */ + private String supplierCompany; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiAddReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiAddReq.java new file mode 100644 index 00000000..2d5a68ff --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiAddReq.java @@ -0,0 +1,113 @@ +package org.dromara.cailiaoshebei.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.cailiaoshebei.domain.BusCailiaoshebei; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +import java.util.Date; + +/** + * @Author 铁憨憨 + * @Date 2025/7/31 10:04 + * @Version 1.0 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BusCailiaoshebei.class, reverseConvertGenerate = false) +@Accessors(chain = true) +public class BusCailiaoshebeiAddReq extends BaseEntity { + /** + * 主键ID (编辑时必填) + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 项目ID + */ + @NotNull(message = "项目ID不能为空", groups = { AddGroup.class }) + private Long projectId; + + /** + * 批次ID (必填) + */ + @NotBlank(message = "批次ID不能为空", groups = { AddGroup.class }) + @Size(max = 128, message = "批次ID长度不能超过128个字符", groups = {AddGroup.class, EditGroup.class}) + private String batchId; + + /** + * 供货商ID (必填) + */ + @NotNull(message = "供货商ID不能为空", groups = { AddGroup.class }) + private Long supplierId; + + /** + * 供货商 (必填) + */ + @NotBlank(message = "供货商不能为空", groups = { AddGroup.class }) + @Size(max = 64, message = "供货商名称长度不能超过64个字符", groups = {AddGroup.class, EditGroup.class}) + private String supplier; + + /** + * 设备材料名称 (必填) + */ + @NotBlank(message = "设备材料名称不能为空", groups = { AddGroup.class }) + @Size(max = 64, message = "设备材料名称长度不能超过64个字符", groups = {AddGroup.class, EditGroup.class}) + private String name; + + /** + * 规格型号 + */ + @NotBlank(message = "规格型号不能为空", groups = { AddGroup.class }) + @Size(max = 128, message = "规格型号长度不能超过128个字符", groups = {AddGroup.class, EditGroup.class}) + private String specification; + + /** + * 特征描述 + */ + @NotBlank(message = "特征描述不能为空", groups = { AddGroup.class }) + @Size(max = 128, message = "特征描述长度不能超过128个字符", groups = {AddGroup.class, EditGroup.class}) + private String signalment; + + /** + * 计量单位 (必填) + */ + @NotBlank(message = "计量单位不能为空", groups = { AddGroup.class }) + @Size(max = 10, message = "计量单位长度不能超过10个字符", groups = {AddGroup.class, EditGroup.class}) + private String unit; + + /** + * 计划数量 (必填) + */ + @NotNull(message = "计划数量不能为空", groups = { AddGroup.class }) + private Long plan; + + /** + * 供货来源(字典) (必填) + */ + @NotBlank(message = "供货来源不能为空", groups = { AddGroup.class }) + @Size(max = 1, message = "供货来源只能是1个字符", groups = {AddGroup.class, EditGroup.class}) + private String supply; + /** + * 物料编码 (必填) + */ + @NotBlank(message = "物料编码不能为空", groups = { AddGroup.class }) + @Size(max = 128, message = "物料编码长度不能超过255个字符", groups = {AddGroup.class, EditGroup.class}) + private String materialCode; + + /** + * 备注 + */ + @Size(max = 500, message = "备注长度不能超过500个字符", groups = {AddGroup.class, EditGroup.class}) + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiBo.java new file mode 100644 index 00000000..445f3c6e --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiBo.java @@ -0,0 +1,102 @@ +package org.dromara.cailiaoshebei.domain.bo; + +import org.dromara.cailiaoshebei.domain.BusCailiaoshebei; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 物资-材料设备业务对象 bus_cailiaoshebei + * + * @author Lion Li + * @date 2025-07-31 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BusCailiaoshebei.class, reverseConvertGenerate = false) +public class BusCailiaoshebeiBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 批次ID + */ + private String batchId; + + /** + * 供货商ID + */ + private Long supplierId; + + /** + * 供货商 + */ + private String supplier; + + /** + * 设备材料名称 + */ + private String name; + + /** + * 供货来源(字典) + */ + private String supply; + + /** + * 规格型号 + */ + private String specification; + + /** + * 特征描述 + */ + private String signalment; + + /** + * 物料编码 + */ + private String materialCode; + + /** + * 计划到场时间 + */ + private Date arrivalTime; + + /** + * 计划完成时间 + */ + private Date finishTime; + + /** + * 计量单位 + */ + private String unit; + + /** + * 计划数量 + */ + private Long plan; + + /** + * 实际数量 + */ + private Long realQuantity; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiEditPlanReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiEditPlanReq.java new file mode 100644 index 00000000..e9273526 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiEditPlanReq.java @@ -0,0 +1,53 @@ +package org.dromara.cailiaoshebei.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.cailiaoshebei.domain.BusCailiaoshebei; +import org.dromara.cailiaoshebei.domain.dto.BusCailiaoshebeiEditPlanDto; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +import java.util.Date; +import java.util.List; + +/** + * @Author 铁憨憨 + * @Date 2025/7/31 10:04 + * @Version 1.0 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BusCailiaoshebei.class, reverseConvertGenerate = false) +@Accessors(chain = true) +public class BusCailiaoshebeiEditPlanReq extends BaseEntity { + /** + * 主键ID (编辑时必填) + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 计划到场时间 + */ + @NotNull(message = "计划到场时间", groups = { EditGroup.class }) + private Date arrivalTime; + + /** + * 计划完成时间 + */ + @NotNull(message = "计划完成时间", groups = { EditGroup.class }) + private Date finishTime; + + /** + * 物资清单列表 + */ + private List listOfMaterialInventory; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiEditReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiEditReq.java new file mode 100644 index 00000000..c21768bd --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiEditReq.java @@ -0,0 +1,92 @@ +package org.dromara.cailiaoshebei.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.cailiaoshebei.domain.BusCailiaoshebei; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +/** + * @Author 铁憨憨 + * @Date 2025/7/31 10:04 + * @Version 1.0 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BusCailiaoshebei.class, reverseConvertGenerate = false) +@Accessors(chain = true) +public class BusCailiaoshebeiEditReq extends BaseEntity { + /** + * 主键ID (编辑时必填) + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 供货商ID (必填) + */ + @NotNull(message = "供货商ID不能为空", groups = { AddGroup.class }) + private Long supplierId; + + /** + * 供货商 (必填) + */ + @NotBlank(message = "供货商不能为空", groups = { AddGroup.class }) + @Size(max = 64, message = "供货商名称长度不能超过64个字符", groups = {AddGroup.class, EditGroup.class}) + private String supplier; + + /** + * 设备材料名称 (必填) + */ + @NotBlank(message = "设备材料名称不能为空", groups = { AddGroup.class }) + @Size(max = 64, message = "设备材料名称长度不能超过64个字符", groups = {AddGroup.class, EditGroup.class}) + private String name; + + /** + * 规格型号 + */ + @NotBlank(message = "规格型号不能为空", groups = { AddGroup.class }) + @Size(max = 128, message = "规格型号长度不能超过128个字符", groups = {AddGroup.class, EditGroup.class}) + private String specification; + + /** + * 特征描述 + */ + @NotBlank(message = "特征描述不能为空", groups = { AddGroup.class }) + @Size(max = 128, message = "特征描述长度不能超过128个字符", groups = {AddGroup.class, EditGroup.class}) + private String signalment; + + /** + * 计量单位 (必填) + */ + @NotBlank(message = "计量单位不能为空", groups = { AddGroup.class }) + @Size(max = 10, message = "计量单位长度不能超过10个字符", groups = {AddGroup.class, EditGroup.class}) + private String unit; + + /** + * 计划数量 (必填) + */ + @NotNull(message = "计划数量不能为空", groups = { AddGroup.class }) + private Long plan; + + /** + * 供货来源(字典) (必填) + */ + @NotBlank(message = "供货来源不能为空", groups = { AddGroup.class }) + @Size(max = 1, message = "供货来源只能是1个字符", groups = {AddGroup.class, EditGroup.class}) + private String supply; + + /** + * 备注 + */ + @Size(max = 500, message = "备注长度不能超过500个字符", groups = {AddGroup.class, EditGroup.class}) + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiPiciBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiPiciBo.java new file mode 100644 index 00000000..9a1b7e67 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusCailiaoshebeiPiciBo.java @@ -0,0 +1,62 @@ +package org.dromara.cailiaoshebei.domain.bo; + +import lombok.experimental.Accessors; +import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 物资-批次号业务对象 bus_cailiaoshebei_pici + * + * @author Lion Li + * @date 2025-07-31 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BusCailiaoshebeiPici.class, reverseConvertGenerate = false) +@Accessors(chain = true) +public class BusCailiaoshebeiPiciBo extends BaseEntity { + + /** + * id + */ + @NotNull(message = "id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 批次号 + */ + private String batchNumber; + + /** + * 审批设计 + */ + private String approvalDesign; + + /** + * 审批计划 + */ + private String approvalPlan; + + /** + * 审批项目 + */ + private String approvalProject; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusSuppliespriceBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusSuppliespriceBo.java new file mode 100644 index 00000000..74a4efca --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusSuppliespriceBo.java @@ -0,0 +1,60 @@ +package org.dromara.cailiaoshebei.domain.bo; + +import org.dromara.cailiaoshebei.domain.BusSuppliesprice; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 物资-物资清单业务对象 bus_suppliesprice + * + * @author Lion Li + * @date 2025-07-31 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BusSuppliesprice.class, reverseConvertGenerate = false) +public class BusSuppliespriceBo extends BaseEntity { + + /** + * ID + */ + @NotNull(message = "ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 材料设备ID + */ + private Long cailiaoshebeiId; + + /** + * 单价 + */ + private Long unitPrice; + + /** + * 合同号 + */ + private String contractNum; + + /** + * 预估供应周期 + */ + private Long estimatedCycle; + + /** + * 供货公司 + */ + private String supplierCompany; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/BusCailiaoshebeiEditPlanDto.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/BusCailiaoshebeiEditPlanDto.java new file mode 100644 index 00000000..9dd41861 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/BusCailiaoshebeiEditPlanDto.java @@ -0,0 +1,35 @@ +package org.dromara.cailiaoshebei.domain.dto; + +import java.io.Serializable; + +/** + * @Author 铁憨憨 + * @Date 2025/7/31 18:26 + * @Version 1.0 + */ +public class BusCailiaoshebeiEditPlanDto implements Serializable { + /** + * 单价 + */ + private Long unitPrice; + + /** + * 合同号 + */ + private String contractNum; + + /** + * 预估供应周期 + */ + private Long estimatedCycle; + + /** + * 供货公司 + */ + private String supplierCompany; + + /** + * 备注 + */ + private String remark; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusCailiaoshebeiListPlanRes.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusCailiaoshebeiListPlanRes.java new file mode 100644 index 00000000..22e3f629 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusCailiaoshebeiListPlanRes.java @@ -0,0 +1,115 @@ +package org.dromara.cailiaoshebei.domain.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * @Author 铁憨憨 + * @Date 2025/7/31 19:49 + * @Version 1.0 + */ + +@Data +@Accessors(chain = true) +public class BusCailiaoshebeiListPlanRes implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 批次ID + */ + @ExcelProperty(value = "批次ID") + private String batchId; + + /** + * 供货商ID + */ + @ExcelProperty(value = "供货商ID") + private Long supplierId; + + /** + * 供货商 + */ + @ExcelProperty(value = "供货商") + private String supplier; + + /** + * 设备材料名称 + */ + @ExcelProperty(value = "设备材料名称") + private String name; + + /** + * 供货来源(字典) + */ + @ExcelProperty(value = "供货来源(字典)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "supply") + private String supply; + + /** + * 规格型号 + */ + @ExcelProperty(value = "规格型号") + private String specification; + + /** + * 特征描述 + */ + @ExcelProperty(value = "特征描述") + private String signalment; + + /** + * 物料编码 + */ + @ExcelProperty(value = "物料编码") + private String materialCode; + + /** + * 计划到场时间 + */ + @ExcelProperty(value = "计划到场时间") + private Date arrivalTime; + + /** + * 计划完成时间 + */ + @ExcelProperty(value = "计划完成时间") + private Date finishTime; + + /** + * 计量单位 + */ + @ExcelProperty(value = "计量单位") + private String unit; + + /** + * 计划数量 + */ + @ExcelProperty(value = "计划数量") + private Long plan; + + /** + * 实际数量 + */ + @ExcelProperty(value = "实际数量") + private Long realQuantity; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusCailiaoshebeiPiciVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusCailiaoshebeiPiciVo.java new file mode 100644 index 00000000..ac8a3af9 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusCailiaoshebeiPiciVo.java @@ -0,0 +1,68 @@ +package org.dromara.cailiaoshebei.domain.vo; + +import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 物资-批次号视图对象 bus_cailiaoshebei_pici + * + * @author Lion Li + * @date 2025-07-31 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BusCailiaoshebeiPici.class) +public class BusCailiaoshebeiPiciVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 批次号 + */ + @ExcelProperty(value = "批次号") + private String batchNumber; + + /** + * 审批设计 + */ + @ExcelProperty(value = "审批设计") + private String approvalDesign; + + /** + * 审批计划 + */ + @ExcelProperty(value = "审批计划") + private String approvalPlan; + + /** + * 审批项目 + */ + @ExcelProperty(value = "审批项目") + private String approvalProject; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusCailiaoshebeiVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusCailiaoshebeiVo.java new file mode 100644 index 00000000..041241e7 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusCailiaoshebeiVo.java @@ -0,0 +1,125 @@ +package org.dromara.cailiaoshebei.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.cailiaoshebei.domain.BusCailiaoshebei; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 物资-材料设备视图对象 bus_cailiaoshebei + * + * @author Lion Li + * @date 2025-07-31 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BusCailiaoshebei.class) +public class BusCailiaoshebeiVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 批次ID + */ + @ExcelProperty(value = "批次ID") + private String batchId; + + /** + * 供货商ID + */ + @ExcelProperty(value = "供货商ID") + private Long supplierId; + + /** + * 供货商 + */ + @ExcelProperty(value = "供货商") + private String supplier; + + /** + * 设备材料名称 + */ + @ExcelProperty(value = "设备材料名称") + private String name; + + /** + * 供货来源(字典) + */ + @ExcelProperty(value = "供货来源(字典)", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "supply") + private String supply; + + /** + * 规格型号 + */ + @ExcelProperty(value = "规格型号") + private String specification; + + /** + * 特征描述 + */ + @ExcelProperty(value = "特征描述") + private String signalment; + + /** + * 物料编码 + */ + @ExcelProperty(value = "物料编码") + private String materialCode; + + /** + * 计划到场时间 + */ + @ExcelProperty(value = "计划到场时间") + private Date arrivalTime; + + /** + * 计划完成时间 + */ + @ExcelProperty(value = "计划完成时间") + private Date finishTime; + + /** + * 计量单位 + */ + @ExcelProperty(value = "计量单位") + private String unit; + + /** + * 计划数量 + */ + @ExcelProperty(value = "计划数量") + private Long plan; + + /** + * 实际数量 + */ + @ExcelProperty(value = "实际数量") + private Long realQuantity; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusSuppliespriceVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusSuppliespriceVo.java new file mode 100644 index 00000000..19f40b82 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusSuppliespriceVo.java @@ -0,0 +1,74 @@ +package org.dromara.cailiaoshebei.domain.vo; + +import org.dromara.cailiaoshebei.domain.BusSuppliesprice; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 物资-物资清单视图对象 bus_suppliesprice + * + * @author Lion Li + * @date 2025-07-31 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BusSuppliesprice.class) +public class BusSuppliespriceVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * ID + */ + @ExcelProperty(value = "ID") + private Long id; + + /** + * 材料设备ID + */ + @ExcelProperty(value = "材料设备ID") + private Long cailiaoshebeiId; + + /** + * 单价 + */ + @ExcelProperty(value = "单价") + private Long unitPrice; + + /** + * 合同号 + */ + @ExcelProperty(value = "合同号") + private String contractNum; + + /** + * 预估供应周期 + */ + @ExcelProperty(value = "预估供应周期") + private Long estimatedCycle; + + /** + * 供货公司 + */ + @ExcelProperty(value = "供货公司") + private String supplierCompany; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/mapper/BusCailiaoshebeiMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/mapper/BusCailiaoshebeiMapper.java new file mode 100644 index 00000000..f576075e --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/mapper/BusCailiaoshebeiMapper.java @@ -0,0 +1,15 @@ +package org.dromara.cailiaoshebei.mapper; + +import org.dromara.cailiaoshebei.domain.BusCailiaoshebei; +import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 物资-材料设备Mapper接口 + * + * @author Lion Li + * @date 2025-07-31 + */ +public interface BusCailiaoshebeiMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/mapper/BusCailiaoshebeiPiciMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/mapper/BusCailiaoshebeiPiciMapper.java new file mode 100644 index 00000000..a9fa2726 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/mapper/BusCailiaoshebeiPiciMapper.java @@ -0,0 +1,15 @@ +package org.dromara.cailiaoshebei.mapper; + +import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici; +import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiPiciVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 物资-批次号Mapper接口 + * + * @author Lion Li + * @date 2025-07-31 + */ +public interface BusCailiaoshebeiPiciMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/mapper/BusSuppliespriceMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/mapper/BusSuppliespriceMapper.java new file mode 100644 index 00000000..650e7cfd --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/mapper/BusSuppliespriceMapper.java @@ -0,0 +1,15 @@ +package org.dromara.cailiaoshebei.mapper; + +import org.dromara.cailiaoshebei.domain.BusSuppliesprice; +import org.dromara.cailiaoshebei.domain.vo.BusSuppliespriceVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 物资-物资清单Mapper接口 + * + * @author Lion Li + * @date 2025-07-31 + */ +public interface BusSuppliespriceMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusCailiaoshebeiPiciService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusCailiaoshebeiPiciService.java new file mode 100644 index 00000000..efc7cb61 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusCailiaoshebeiPiciService.java @@ -0,0 +1,70 @@ +package org.dromara.cailiaoshebei.service; + +import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiPiciVo; +import org.dromara.cailiaoshebei.domain.bo.BusCailiaoshebeiPiciBo; +import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * 物资-批次号Service接口 + * + * @author Lion Li + * @date 2025-07-31 + */ +public interface IBusCailiaoshebeiPiciService extends IService{ + + /** + * 查询物资-批次号 + * + * @param id 主键 + * @return 物资-批次号 + */ + BusCailiaoshebeiPiciVo queryById(Long id); + + /** + * 分页查询物资-批次号列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 物资-批次号分页列表 + */ + TableDataInfo queryPageList(BusCailiaoshebeiPiciBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的物资-批次号列表 + * + * @param bo 查询条件 + * @return 物资-批次号列表 + */ + List queryList(BusCailiaoshebeiPiciBo bo); + + /** + * 新增物资-批次号 + * + * @param bo 物资-批次号 + * @return 是否新增成功 + */ + Boolean insertByBo(BusCailiaoshebeiPiciBo bo); + + /** + * 修改物资-批次号 + * + * @param bo 物资-批次号 + * @return 是否修改成功 + */ + Boolean updateByBo(BusCailiaoshebeiPiciBo bo); + + /** + * 校验并批量删除物资-批次号信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusCailiaoshebeiService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusCailiaoshebeiService.java new file mode 100644 index 00000000..3521b422 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusCailiaoshebeiService.java @@ -0,0 +1,88 @@ +package org.dromara.cailiaoshebei.service; + +import org.dromara.cailiaoshebei.domain.bo.*; +import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiListPlanRes; +import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiVo; +import org.dromara.cailiaoshebei.domain.BusCailiaoshebei; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * 物资-材料设备Service接口 + * + * @author Lion Li + * @date 2025-07-31 + */ +public interface IBusCailiaoshebeiService extends IService{ + + /** + * 查询物资-材料设备 + * + * @param id 主键 + * @return 物资-材料设备 + */ + BusCailiaoshebeiVo queryById(Long id); + + /** + * 分页查询物资-材料设备列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 物资-材料设备分页列表 + */ + TableDataInfo queryPageList(BusCailiaoshebeiBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的物资-材料设备列表 + * + * @param bo 查询条件 + * @return 物资-材料设备列表 + */ + List queryList(BusCailiaoshebeiBo bo); + + /** + * 新增物资-材料设备 + * + * @param req 物资-材料设备 + * @return 是否新增成功 + */ + Boolean insertByBo(BusCailiaoshebeiAddReq req); + + /** + * 修改物资-材料设备(设计) + * + * @param bo 物资-材料设备 + * @return 是否修改成功 + */ + Boolean updateByBo(BusCailiaoshebeiEditReq bo); + + /** + * 校验并批量删除物资-材料设备信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 分页查询物资-材料设备列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 物资-材料设备分页列表 + */ + TableDataInfo queryPageListPlan(BusCailiaoshebeiBo bo, PageQuery pageQuery); + + /** + * 修改物资-材料设备(计划) + * + * @param bo 物资-材料设备 + * @return 是否修改成功 + */ + Boolean updateByPlanBo(BusCailiaoshebeiEditPlanReq bo); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusSuppliespriceService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusSuppliespriceService.java new file mode 100644 index 00000000..248938d3 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusSuppliespriceService.java @@ -0,0 +1,70 @@ +package org.dromara.cailiaoshebei.service; + +import org.dromara.cailiaoshebei.domain.vo.BusSuppliespriceVo; +import org.dromara.cailiaoshebei.domain.bo.BusSuppliespriceBo; +import org.dromara.cailiaoshebei.domain.BusSuppliesprice; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * 物资-物资清单Service接口 + * + * @author Lion Li + * @date 2025-07-31 + */ +public interface IBusSuppliespriceService extends IService{ + + /** + * 查询物资-物资清单 + * + * @param id 主键 + * @return 物资-物资清单 + */ + BusSuppliespriceVo queryById(Long id); + + /** + * 分页查询物资-物资清单列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 物资-物资清单分页列表 + */ + TableDataInfo queryPageList(BusSuppliespriceBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的物资-物资清单列表 + * + * @param bo 查询条件 + * @return 物资-物资清单列表 + */ + List queryList(BusSuppliespriceBo bo); + + /** + * 新增物资-物资清单 + * + * @param bo 物资-物资清单 + * @return 是否新增成功 + */ + Boolean insertByBo(BusSuppliespriceBo bo); + + /** + * 修改物资-物资清单 + * + * @param bo 物资-物资清单 + * @return 是否修改成功 + */ + Boolean updateByBo(BusSuppliespriceBo bo); + + /** + * 校验并批量删除物资-物资清单信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusCailiaoshebeiPiciServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusCailiaoshebeiPiciServiceImpl.java new file mode 100644 index 00000000..5a75deb1 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusCailiaoshebeiPiciServiceImpl.java @@ -0,0 +1,134 @@ +package org.dromara.cailiaoshebei.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.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 org.dromara.cailiaoshebei.domain.bo.BusCailiaoshebeiPiciBo; +import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiPiciVo; +import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici; +import org.dromara.cailiaoshebei.mapper.BusCailiaoshebeiPiciMapper; +import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiPiciService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 物资-批次号Service业务层处理 + * + * @author Lion Li + * @date 2025-07-31 + */ +@RequiredArgsConstructor +@Service +public class BusCailiaoshebeiPiciServiceImpl extends ServiceImpl implements IBusCailiaoshebeiPiciService { + + private final BusCailiaoshebeiPiciMapper baseMapper; + + /** + * 查询物资-批次号 + * + * @param id 主键 + * @return 物资-批次号 + */ + @Override + public BusCailiaoshebeiPiciVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询物资-批次号列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 物资-批次号分页列表 + */ + @Override + public TableDataInfo queryPageList(BusCailiaoshebeiPiciBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的物资-批次号列表 + * + * @param bo 查询条件 + * @return 物资-批次号列表 + */ + @Override + public List queryList(BusCailiaoshebeiPiciBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(BusCailiaoshebeiPiciBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(BusCailiaoshebeiPici::getId); + lqw.eq(StringUtils.isNotBlank(bo.getBatchNumber()), BusCailiaoshebeiPici::getBatchNumber, bo.getBatchNumber()); + lqw.eq(StringUtils.isNotBlank(bo.getApprovalDesign()), BusCailiaoshebeiPici::getApprovalDesign, bo.getApprovalDesign()); + lqw.eq(StringUtils.isNotBlank(bo.getApprovalPlan()), BusCailiaoshebeiPici::getApprovalPlan, bo.getApprovalPlan()); + lqw.eq(StringUtils.isNotBlank(bo.getApprovalProject()), BusCailiaoshebeiPici::getApprovalProject, bo.getApprovalProject()); + return lqw; + } + + /** + * 新增物资-批次号 + * + * @param bo 物资-批次号 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(BusCailiaoshebeiPiciBo bo) { + BusCailiaoshebeiPici add = MapstructUtils.convert(bo, BusCailiaoshebeiPici.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改物资-批次号 + * + * @param bo 物资-批次号 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(BusCailiaoshebeiPiciBo bo) { + BusCailiaoshebeiPici update = MapstructUtils.convert(bo, BusCailiaoshebeiPici.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(BusCailiaoshebeiPici entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除物资-批次号信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusCailiaoshebeiServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusCailiaoshebeiServiceImpl.java new file mode 100644 index 00000000..735ad921 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusCailiaoshebeiServiceImpl.java @@ -0,0 +1,215 @@ +package org.dromara.cailiaoshebei.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici; +import org.dromara.cailiaoshebei.domain.BusSuppliesprice; +import org.dromara.cailiaoshebei.domain.bo.*; +import org.dromara.cailiaoshebei.domain.dto.BusCailiaoshebeiEditPlanDto; +import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiListPlanRes; +import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiPiciService; +import org.dromara.cailiaoshebei.service.IBusSuppliespriceService; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.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.dromara.common.utils.BatchNumberGenerator; +import org.springframework.stereotype.Service; +import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiVo; +import org.dromara.cailiaoshebei.domain.BusCailiaoshebei; +import org.dromara.cailiaoshebei.mapper.BusCailiaoshebeiMapper; +import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiService; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Collection; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * 物资-材料设备Service业务层处理 + * + * @author Lion Li + * @date 2025-07-31 + */ +@RequiredArgsConstructor +@Service +public class BusCailiaoshebeiServiceImpl extends ServiceImpl implements IBusCailiaoshebeiService { + + private final BusCailiaoshebeiMapper baseMapper; + private final IBusCailiaoshebeiPiciService busCailiaoshebeiPiciService; + private final IBusSuppliespriceService busSuppliespriceService; + + + /** + * 查询物资-材料设备 + * + * @param id 主键 + * @return 物资-材料设备 + */ + @Override + public BusCailiaoshebeiVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询物资-材料设备列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 物资-材料设备分页列表 + */ + @Override + public TableDataInfo queryPageList(BusCailiaoshebeiBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的物资-材料设备列表 + * + * @param bo 查询条件 + * @return 物资-材料设备列表 + */ + @Override + public List queryList(BusCailiaoshebeiBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(BusCailiaoshebeiBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(BusCailiaoshebei::getId); + lqw.eq(StringUtils.isNotBlank(bo.getBatchId()), BusCailiaoshebei::getBatchId, bo.getBatchId()); + lqw.eq(bo.getSupplierId() != null, BusCailiaoshebei::getSupplierId, bo.getSupplierId()); + lqw.eq(StringUtils.isNotBlank(bo.getSupplier()), BusCailiaoshebei::getSupplier, bo.getSupplier()); + lqw.like(StringUtils.isNotBlank(bo.getName()), BusCailiaoshebei::getName, bo.getName()); + lqw.eq(StringUtils.isNotBlank(bo.getSupply()), BusCailiaoshebei::getSupply, bo.getSupply()); + lqw.eq(StringUtils.isNotBlank(bo.getSpecification()), BusCailiaoshebei::getSpecification, bo.getSpecification()); + lqw.eq(StringUtils.isNotBlank(bo.getSignalment()), BusCailiaoshebei::getSignalment, bo.getSignalment()); + lqw.eq(StringUtils.isNotBlank(bo.getMaterialCode()), BusCailiaoshebei::getMaterialCode, bo.getMaterialCode()); + lqw.eq(bo.getArrivalTime() != null, BusCailiaoshebei::getArrivalTime, bo.getArrivalTime()); + lqw.eq(bo.getFinishTime() != null, BusCailiaoshebei::getFinishTime, bo.getFinishTime()); + lqw.eq(StringUtils.isNotBlank(bo.getUnit()), BusCailiaoshebei::getUnit, bo.getUnit()); + lqw.eq(bo.getPlan() != null, BusCailiaoshebei::getPlan, bo.getPlan()); + lqw.eq(bo.getRealQuantity() != null, BusCailiaoshebei::getRealQuantity, bo.getRealQuantity()); + return lqw; + } + + /** + * 新增物资-材料设备 + * + * @param bo 物资-材料设备 + * @return 是否新增成功 + */ + @Override + @Transactional + public Boolean insertByBo(BusCailiaoshebeiAddReq bo) { + //1、创建批次号 + BusCailiaoshebeiPici busCailiaoshebeiPici = new BusCailiaoshebeiPici(). + setProjectId(bo.getProjectId()). + setBatchNumber(BatchNumberGenerator.generateBatchNumber("PC-")); + boolean save = busCailiaoshebeiPiciService.save(busCailiaoshebeiPici); + if (!save) { + return false; + } + //2、新增初始化数据信息 + BusCailiaoshebei add = MapstructUtils.convert(bo, BusCailiaoshebei.class); + assert add != null; + add.setBatchId(busCailiaoshebeiPici.getId()); //批次ID + add.setMaterialCode(BatchNumberGenerator.generateBatchNumber("WL-")); //物料编码 + validEntityBeforeSave(add); + Boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改物资-材料设备 + * + * @param bo 物资-材料设备 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(BusCailiaoshebeiEditReq bo) { + BusCailiaoshebei update = MapstructUtils.convert(bo, BusCailiaoshebei.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + @Override + @Transactional + public Boolean updateByPlanBo(BusCailiaoshebeiEditPlanReq bo) { + //1、计划部更新主体数据的计划时间和完成时间 + BusCailiaoshebei entity = MapstructUtils.convert(bo, BusCailiaoshebei.class); + validEntityBeforeSave(entity); + if (baseMapper.updateById(entity)==0){ + return false; + } + //2、为每个供应商确认单价等信息 + List listOfMaterialInventory = bo.getListOfMaterialInventory(); + List busSuppliesprices = BeanUtil.copyToList(listOfMaterialInventory, BusSuppliesprice.class); + busSuppliesprices.forEach(busSuppliesprice -> { + assert entity != null; + busSuppliesprice.setCailiaoshebeiId(entity.getId()); + }); + return busSuppliespriceService.saveBatch(busSuppliesprices); + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(BusCailiaoshebei entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除物资-材料设备信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } + + /** + * 分页查询物资-材料设备列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 物资-材料设备分页列表 + */ + @Override + public TableDataInfo queryPageListPlan(BusCailiaoshebeiBo bo, PageQuery pageQuery) { + // 1、查询原始数据分页对象 + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page originalPage = this.page(pageQuery.build(), lqw); + // 2、转换Page对象中的记录列表,同时保留分页信息 + Page convertedPage = (Page) originalPage.convert(busCailiaoshebei -> { + BusCailiaoshebeiListPlanRes res = new BusCailiaoshebeiListPlanRes();// 将单个BusCailiaoshebei转换为BusCailiaoshebeiListPlanRes + BeanUtil.copyProperties(busCailiaoshebei, res);// 可以使用BeanUtil.copyProperties进行属性复制 + return res;// 如果有需要手动处理的属性,可以在这里补充 + }); + // 3、用转换后的分页对象构建TableDataInfo + return TableDataInfo.build(convertedPage); + } + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusSuppliespriceServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusSuppliespriceServiceImpl.java new file mode 100644 index 00000000..5eed459d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusSuppliespriceServiceImpl.java @@ -0,0 +1,135 @@ +package org.dromara.cailiaoshebei.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.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 org.dromara.cailiaoshebei.domain.bo.BusSuppliespriceBo; +import org.dromara.cailiaoshebei.domain.vo.BusSuppliespriceVo; +import org.dromara.cailiaoshebei.domain.BusSuppliesprice; +import org.dromara.cailiaoshebei.mapper.BusSuppliespriceMapper; +import org.dromara.cailiaoshebei.service.IBusSuppliespriceService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 物资-物资清单Service业务层处理 + * + * @author Lion Li + * @date 2025-07-31 + */ +@RequiredArgsConstructor +@Service +public class BusSuppliespriceServiceImpl extends ServiceImpl implements IBusSuppliespriceService { + + private final BusSuppliespriceMapper baseMapper; + + /** + * 查询物资-物资清单 + * + * @param id 主键 + * @return 物资-物资清单 + */ + @Override + public BusSuppliespriceVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询物资-物资清单列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 物资-物资清单分页列表 + */ + @Override + public TableDataInfo queryPageList(BusSuppliespriceBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的物资-物资清单列表 + * + * @param bo 查询条件 + * @return 物资-物资清单列表 + */ + @Override + public List queryList(BusSuppliespriceBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(BusSuppliespriceBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(BusSuppliesprice::getId); + lqw.eq(bo.getCailiaoshebeiId() != null, BusSuppliesprice::getCailiaoshebeiId, bo.getCailiaoshebeiId()); + lqw.eq(bo.getUnitPrice() != null, BusSuppliesprice::getUnitPrice, bo.getUnitPrice()); + lqw.eq(StringUtils.isNotBlank(bo.getContractNum()), BusSuppliesprice::getContractNum, bo.getContractNum()); + lqw.eq(bo.getEstimatedCycle() != null, BusSuppliesprice::getEstimatedCycle, bo.getEstimatedCycle()); + lqw.eq(StringUtils.isNotBlank(bo.getSupplierCompany()), BusSuppliesprice::getSupplierCompany, bo.getSupplierCompany()); + return lqw; + } + + /** + * 新增物资-物资清单 + * + * @param bo 物资-物资清单 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(BusSuppliespriceBo bo) { + BusSuppliesprice add = MapstructUtils.convert(bo, BusSuppliesprice.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改物资-物资清单 + * + * @param bo 物资-物资清单 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(BusSuppliespriceBo bo) { + BusSuppliesprice update = MapstructUtils.convert(bo, BusSuppliesprice.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(BusSuppliesprice entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除物资-物资清单信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/BatchNumberGenerator.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/BatchNumberGenerator.java new file mode 100644 index 00000000..7070e726 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/BatchNumberGenerator.java @@ -0,0 +1,53 @@ +package org.dromara.common.utils; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * @Author 铁憨憨 + * @Date 2025/7/31 9:54 + * @Version 1.0 + */ +public class BatchNumberGenerator { + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); + private static final AtomicInteger COUNTER = new AtomicInteger(0); + private static final int MAX_COUNTER = 9999; + private static String lastTimestamp = ""; + + /** + * 生成唯一批次号,格式为 yyyyMMddHHmmssXXXX,XXXX为四位递增数字 + * @param str 自定义字符串 + * @return 唯一批次号字符串 + * @throws RuntimeException 当同一毫秒内生成数量超过9999时抛出异常 + */ + public static synchronized String generateBatchNumber(String str) { + String currentTimestamp = LocalDateTime.now().format(FORMATTER); + + if (!currentTimestamp.equals(lastTimestamp)) { + lastTimestamp = currentTimestamp; + COUNTER.set(0); + } + + int counterValue = COUNTER.getAndIncrement(); + if (counterValue >= MAX_COUNTER) { + throw new RuntimeException("批次号生成器在同一毫秒内生成的数量已达到上限"); + } + //判断str是否为空 + if (str == null || str.isEmpty()) { + return currentTimestamp + String.format("%04d", counterValue); + } + return currentTimestamp + str + String.format("%04d", counterValue); + } + + public static void main(String[] args) { + for (int i = 0; i < 5; i++) { + System.out.println(generateBatchNumber(null)); + try { + Thread.sleep(10); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/cailiaoshebei/BusCailiaoshebeiMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/cailiaoshebei/BusCailiaoshebeiMapper.xml new file mode 100644 index 00000000..ff5135fb --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/cailiaoshebei/BusCailiaoshebeiMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/cailiaoshebei/BusCailiaoshebeiPiciMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/cailiaoshebei/BusCailiaoshebeiPiciMapper.xml new file mode 100644 index 00000000..076ec114 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/cailiaoshebei/BusCailiaoshebeiPiciMapper.xml @@ -0,0 +1,7 @@ + + + + +