From 92d5fefc2601c1a81363708cb574b03f4b073bd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E6=88=90?= <2847920761@qq.com> Date: Wed, 13 Aug 2025 20:03:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=80=BB=E4=BE=9B=E5=BA=94=E8=AE=A1=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusCailiaoshebeiController.java | 5 +- .../utils/excel/ExcelDynamicReader.java | 266 ++++++++++++++++++ ...BusBillofquantitiesVersionsController.java | 38 ++- .../BusDrawingreviewController.java | 19 +- .../BusDrawingreviewReceiptsController.java | 6 + .../BusTotalsupplyplanController.java | 105 +++++++ .../domain/BusBillofquantitiesVersions.java | 5 + .../domain/BusDrawingreviewReceipts.java | 8 +- .../design/domain/BusTotalsupplyplan.java | 118 ++++++++ .../domain/BusTotalsupplyplanAudit.java | 51 ++++ .../domain/bo/BusTotalsupplyplanAuditBo.java | 52 ++++ .../domain/bo/BusTotalsupplyplanBo.java | 72 +++++ .../FillOutTheDesignVerificationFormReq.java | 7 +- .../design/domain/bo/ObtainTheListReq.java | 3 +- .../dto/MaterialsAndEquipmentExcelDto.java | 51 ++++ .../vo/BusBillofquantitiesVersionsVo.java | 5 + .../domain/vo/BusDrawingreviewReceiptsVo.java | 7 +- .../domain/vo/BusTotalsupplyplanAuditVo.java | 62 ++++ .../domain/vo/BusTotalsupplyplanVo.java | 141 ++++++++++ ...etailsMaterialAndEquipmentApprovalRes.java | 35 +++ .../domain/{dto => vo}/ObtainTheListRes.java | 3 +- .../BusBillofquantitiesVersionsMapper.java | 5 +- .../mapper/BusTotalsupplyplanAuditMapper.java | 15 + .../mapper/BusTotalsupplyplanMapper.java | 15 + .../IBusBillofquantitiesVersionsService.java | 14 +- .../IBusTotalsupplyplanAuditService.java | 70 +++++ .../service/IBusTotalsupplyplanService.java | 70 +++++ ...usBillofquantitiesVersionsServiceImpl.java | 198 ++++++++++--- .../impl/BusDrawingreviewServiceImpl.java | 11 +- .../BusTotalsupplyplanAuditServiceImpl.java | 133 +++++++++ .../impl/BusTotalsupplyplanServiceImpl.java | 187 ++++++++++++ .../BusBillofquantitiesVersionsMapper.xml | 10 +- .../design/BusTotalsupplyplanAuditMapper.xml | 7 + .../design/BusTotalsupplyplanMapper.xml | 7 + 34 files changed, 1729 insertions(+), 72 deletions(-) create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/excel/ExcelDynamicReader.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusTotalsupplyplanController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusTotalsupplyplan.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusTotalsupplyplanAudit.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusTotalsupplyplanAuditBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusTotalsupplyplanBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/dto/MaterialsAndEquipmentExcelDto.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusTotalsupplyplanAuditVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusTotalsupplyplanVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/DetailsMaterialAndEquipmentApprovalRes.java rename xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/{dto => vo}/ObtainTheListRes.java (93%) create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/BusTotalsupplyplanAuditMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/BusTotalsupplyplanMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IBusTotalsupplyplanAuditService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IBusTotalsupplyplanService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusTotalsupplyplanAuditServiceImpl.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusTotalsupplyplanServiceImpl.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/design/BusTotalsupplyplanAuditMapper.xml create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/design/BusTotalsupplyplanMapper.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 index 086dc034..0c6108af 100644 --- 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 @@ -5,15 +5,12 @@ import lombok.RequiredArgsConstructor; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici; -import org.dromara.cailiaoshebei.domain.BusSuppliesprice; import org.dromara.cailiaoshebei.domain.bo.*; import org.dromara.cailiaoshebei.domain.vo.*; import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiPiciService; -import org.dromara.cailiaoshebei.service.IBusSuppliespriceService; -import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.utils.BatchNumberGenerator; import org.dromara.design.domain.bo.ObtainTheListReq; -import org.dromara.design.domain.dto.ObtainTheListRes; +import org.dromara.design.domain.vo.ObtainTheListRes; import org.dromara.design.service.IBusBillofquantitiesVersionsService; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/excel/ExcelDynamicReader.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/excel/ExcelDynamicReader.java new file mode 100644 index 00000000..b0d07fef --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/excel/ExcelDynamicReader.java @@ -0,0 +1,266 @@ +package org.dromara.common.utils.excel; + +/** + * @Author 铁憨憨 + * @Date 2025/8/13 14:17 + * @Version 1.0 + */ +import org.apache.poi.ss.usermodel.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Locale; + +public class ExcelDynamicReader { + + /** + * 动态读取Excel文件并映射到实体类(使用无参构造函数+Setter方法) + */ + public static List readExcel(MultipartFile file, int skipRows, int startColumn, + int endColumn, Class clazz) throws Exception { + List dataList = new ArrayList<>(); + + // 验证参数有效性 + if (startColumn < 0 || endColumn < startColumn) { + throw new IllegalArgumentException("列索引设置无效"); + } + + // 获取实体类的所有字段 + Field[] fields = clazz.getDeclaredFields(); + // 检查字段数量是否与要读取的列数匹配 + int columnCount = endColumn - startColumn + 1; + if (fields.length != columnCount) { + throw new IllegalArgumentException("实体类字段数量与要读取的列数不匹配: " + + fields.length + " vs " + columnCount); + } + + try (InputStream inputStream = file.getInputStream(); + Workbook workbook = WorkbookFactory.create(inputStream)) { + + // 获取第一个工作表 + Sheet sheet = workbook.getSheetAt(0); + + // 从指定行开始读取数据(跳过skipRows行) + for (int rowIndex = skipRows; rowIndex <= sheet.getLastRowNum(); rowIndex++) { + Row row = sheet.getRow(rowIndex); + if (row != null) { + // 使用无参构造函数创建对象 + T entity = clazz.getDeclaredConstructor().newInstance(); + + // 读取指定范围内的列并通过Setter方法设置值 + for (int colIndex = startColumn, fieldIndex = 0; + colIndex <= endColumn; colIndex++, fieldIndex++) { + + Cell cell = row.getCell(colIndex); + Field field = fields[fieldIndex]; + try { + // 获取并转换单元格值 + Object value = getCellValueByType(cell, field.getType()); + + // 调用Setter方法设置值 + String setterName = "set" + + field.getName().substring(0, 1).toUpperCase() + + field.getName().substring(1); + Method setter = clazz.getMethod(setterName, field.getType()); + setter.invoke(entity, value); + } catch (Exception e) { + // 增加详细的错误信息,方便调试 + throw new RuntimeException( + String.format("行号: %d, 列号: %d, 字段名: %s, 字段类型: %s 赋值失败: %s", + rowIndex + 1, colIndex + 1, field.getName(), + field.getType().getSimpleName(), e.getMessage()), + e + ); + } + } + + dataList.add(entity); + } + } + } + + return dataList; + } + + /** + * 增强的类型转换方法,处理更多类型不匹配场景 + */ + private static Object getCellValueByType(Cell cell, Class fieldType) { + if (cell == null) { + return getDefaultValue(fieldType); + } + + CellType cellType = cell.getCellType(); + if (cellType == CellType.FORMULA) { + cellType = cell.getCachedFormulaResultType(); + } + + // 先获取原始值 + Object rawValue = getRawCellValue(cell, cellType); + + // 如果已经匹配类型,直接返回 + if (rawValue == null) { + return null; + } + + // 处理类型转换 + if (fieldType.isAssignableFrom(rawValue.getClass())) { + return rawValue; + } + + // 字符串转其他类型 + if (rawValue instanceof String) { + return convertFromString((String) rawValue, fieldType); + } + + // 数字转其他类型 + if (rawValue instanceof Number) { + return convertFromNumber((Number) rawValue, fieldType); + } + + // 日期转其他类型 + if (rawValue instanceof Date) { + return convertFromDate((Date) rawValue, fieldType); + } + + // 布尔值转其他类型 + if (rawValue instanceof Boolean) { + return convertFromBoolean((Boolean) rawValue, fieldType); + } + + // 无法转换时返回字符串表示 + return rawValue.toString(); + } + + /** + * 获取单元格原始值 + */ + private static Object getRawCellValue(Cell cell, CellType cellType) { + switch (cellType) { + case STRING: + return cell.getStringCellValue().trim(); + case NUMERIC: + if (DateUtil.isCellDateFormatted(cell)) { + return cell.getDateCellValue(); + } else { + return cell.getNumericCellValue(); + } + case BOOLEAN: + return cell.getBooleanCellValue(); + default: + return ""; + } + } + + /** + * 从字符串转换到目标类型 + */ + private static Object convertFromString(String value, Class targetType) { + if (value.isEmpty()) { + return getDefaultValue(targetType); + } + + try { + if (targetType == Integer.class || targetType == int.class) { + return Integer.parseInt(value); + } else if (targetType == Long.class || targetType == long.class) { + return Long.parseLong(value); + } else if (targetType == Double.class || targetType == double.class) { + return Double.parseDouble(value); + } else if (targetType == Float.class || targetType == float.class) { + return Float.parseFloat(value); + } else if (targetType == BigDecimal.class) { + return new BigDecimal(value); + } else if (targetType == Boolean.class || targetType == boolean.class) { + return "true".equalsIgnoreCase(value) || "1".equals(value); + } else if (targetType == LocalDate.class) { + // 支持多种日期格式 + String[] patterns = {"yyyy-MM-dd", "yyyy/MM/dd", "MM/dd/yyyy", "dd-MM-yyyy"}; + for (String pattern : patterns) { + try { + return LocalDate.parse(value, DateTimeFormatter.ofPattern(pattern, Locale.US)); + } catch (Exception e) { + // 尝试下一种格式 + } + } + // 最后尝试默认格式 + return LocalDate.parse(value); + } + } catch (Exception e) { + throw new RuntimeException("无法将字符串 '" + value + "' 转换为 " + targetType.getSimpleName(), e); + } + + return value; + } + + /** + * 从数字转换到目标类型 + */ + private static Object convertFromNumber(Number number, Class targetType) { + if (targetType == Integer.class || targetType == int.class) { + return number.intValue(); + } else if (targetType == Long.class || targetType == long.class) { + return number.longValue(); + } else if (targetType == Double.class || targetType == double.class) { + return number.doubleValue(); + } else if (targetType == Float.class || targetType == float.class) { + return number.floatValue(); + } else if (targetType == BigDecimal.class) { + return BigDecimal.valueOf(number.doubleValue()); + } else if (targetType == String.class) { + return number.toString(); + } else if (targetType == Boolean.class || targetType == boolean.class) { + return number.doubleValue() != 0; + } + + return number; + } + + /** + * 从日期转换到目标类型 + */ + private static Object convertFromDate(Date date, Class targetType) { + if (targetType == LocalDate.class) { + return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + } else if (targetType == String.class) { + return date.toString(); + } + + return date; + } + + /** + * 从布尔值转换到目标类型 + */ + private static Object convertFromBoolean(Boolean bool, Class targetType) { + if (targetType == String.class) { + return bool.toString(); + } else if (targetType == Integer.class || targetType == int.class) { + return bool ? 1 : 0; + } + + return bool; + } + + /** + * 获取字段类型的默认值 + */ + private static Object getDefaultValue(Class fieldType) { + if (fieldType.isPrimitive()) { + if (fieldType == boolean.class) return false; + return 0; + } + return null; + } +} + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusBillofquantitiesVersionsController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusBillofquantitiesVersionsController.java index 932bdb78..637c6678 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusBillofquantitiesVersionsController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusBillofquantitiesVersionsController.java @@ -3,13 +3,13 @@ package org.dromara.design.controller; import java.io.IOException; import java.util.List; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.RequiredArgsConstructor; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.design.domain.BusBillofquantities; import org.dromara.design.domain.bo.*; -import org.dromara.design.domain.dto.ObtainTheListRes; -import org.dromara.design.domain.vo.BusBillofquantitiesVo; +import org.dromara.design.domain.vo.DetailsMaterialAndEquipmentApprovalRes; +import org.dromara.design.domain.vo.ObtainTheListRes; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -17,10 +17,7 @@ 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.design.domain.vo.BusBillofquantitiesVersionsVo; import org.dromara.design.service.IBusBillofquantitiesVersionsService; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -47,7 +44,7 @@ public class BusBillofquantitiesVersionsController extends BaseController { @Log(title = "导入excel", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping("/importExcelFile") - public R importExcelFile(ImportExcelFileReq bo, @RequestParam("file") MultipartFile file) throws IOException { + public R importExcelFile(ImportExcelFileReq bo, @RequestParam("file") MultipartFile file) throws Exception { return toAjax(busBillofquantitiesVersionsService.importExcelFile(bo,file)); } @@ -78,6 +75,31 @@ public class BusBillofquantitiesVersionsController extends BaseController { return R.ok(busBillofquantitiesVersionsService.obtainTheList(bo)); } + /** + * 物资设备清单审批详情 + */ + @SaCheckPermission("design:billofquantitiesVersions:detailsMaterialAndEquipmentApproval") + @GetMapping("/detailsMaterialAndEquipmentApproval/{versions}") + public R detailsMaterialAndEquipmentApproval(@PathVariable("versions") String versions) { + return R.ok(busBillofquantitiesVersionsService.detailsMaterialAndEquipmentApproval(versions)); + } + + + + + +// /** +// * 导入物资设备清单 +// */ +// @SaCheckPermission("design:billofquantitiesVersions:ListOfMaterialsAndEquipment") +// @Log(title = "导入物资设备清单", businessType = BusinessType.INSERT) +// @RepeatSubmit() +// @PostMapping("/ListOfMaterialsAndEquipment") +// public R ListOfMaterialsAndEquipment(ImportExcelFileReq bo, @RequestParam("file") MultipartFile file) throws IOException { +// ExcelReader.ExcelData excelData = ExcelReader.readExcelFromMultipartFile(file); +// return toAjax(busBillofquantitiesVersionsService.importExcelFile(bo,file)); +// } + // /** // * 查询工程量清单版本列表 // */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusDrawingreviewController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusDrawingreviewController.java index 1741ae34..04a81e77 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusDrawingreviewController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusDrawingreviewController.java @@ -2,6 +2,7 @@ package org.dromara.design.controller; import java.util.List; +import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; @@ -11,6 +12,8 @@ import org.dromara.design.domain.bo.DrawingReviewUploadReq; import org.dromara.design.domain.bo.FillOutTheDesignVerificationFormReq; import org.dromara.design.domain.vo.*; import org.dromara.design.service.IBusDrawingreviewReceiptsService; +import org.dromara.project.domain.vo.project.BusSubProjectVo; +import org.dromara.project.service.IBusProjectService; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -43,6 +46,10 @@ public class BusDrawingreviewController extends BaseController { private final IBusDrawingreviewReceiptsService busDrawingreviewReceiptsService; + + @Resource + private IBusProjectService projectService; + /** * 新增设计图纸评审 */ @@ -113,13 +120,23 @@ public class BusDrawingreviewController extends BaseController { * 填写设计验证表 */ @SaCheckPermission("design:drawingreview:fillOutTheDesignVerificationForm") - @Log(title = "重新上传设计图纸评审", businessType = BusinessType.INSERT) + @Log(title = "填写设计验证表", businessType = BusinessType.INSERT) @RepeatSubmit() @PutMapping("/fillOutTheDesignVerificationForm") public R fillOutTheDesignVerificationForm(@RequestBody FillOutTheDesignVerificationFormReq bo) { return toAjax(busDrawingreviewService.fillOutTheDesignVerificationForm(bo)); } + /** + * 查询项目下的子项目列表 + */ + @SaCheckPermission("design:drawingreviewReceipts:subProjectList") + @GetMapping("/subProjectList/{id}") + public R> listSubProject(@NotNull(message = "项目id不能为空") + @PathVariable Long id) { + return R.ok(projectService.querySubList(id)); + } + // /** // * 查询设计-图纸评审列表 // */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusDrawingreviewReceiptsController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusDrawingreviewReceiptsController.java index ddafb6ed..fe7122bc 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusDrawingreviewReceiptsController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusDrawingreviewReceiptsController.java @@ -2,10 +2,13 @@ package org.dromara.design.controller; import java.util.List; +import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.project.domain.vo.project.BusSubProjectVo; +import org.dromara.project.service.IBusProjectService; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -36,6 +39,7 @@ public class BusDrawingreviewReceiptsController extends BaseController { private final IBusDrawingreviewReceiptsService busDrawingreviewReceiptsService; + /** * 查询设计-图纸评审验证列表 */ @@ -102,4 +106,6 @@ public class BusDrawingreviewReceiptsController extends BaseController { @PathVariable Long[] ids) { return toAjax(busDrawingreviewReceiptsService.deleteWithValidByIds(List.of(ids), true)); } + + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusTotalsupplyplanController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusTotalsupplyplanController.java new file mode 100644 index 00000000..cf253b52 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusTotalsupplyplanController.java @@ -0,0 +1,105 @@ +package org.dromara.design.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.design.domain.vo.BusTotalsupplyplanVo; +import org.dromara.design.domain.bo.BusTotalsupplyplanBo; +import org.dromara.design.service.IBusTotalsupplyplanService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 物资-总供应计划 + * + * @author Lion Li + * @date 2025-08-13 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/design/totalsupplyplan") +public class BusTotalsupplyplanController extends BaseController { + + private final IBusTotalsupplyplanService busTotalsupplyplanService; + + /** + * 查询物资-总供应计划列表 + */ + @SaCheckPermission("design:totalsupplyplan:list") + @GetMapping("/list") + public TableDataInfo list(BusTotalsupplyplanBo bo, PageQuery pageQuery) { + return busTotalsupplyplanService.queryPageList(bo, pageQuery); + } + + /** + * 导出物资-总供应计划列表 + */ + @SaCheckPermission("design:totalsupplyplan:export") + @Log(title = "物资-总供应计划", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(BusTotalsupplyplanBo bo, HttpServletResponse response) { + List list = busTotalsupplyplanService.queryList(bo); + ExcelUtil.exportExcel(list, "物资-总供应计划", BusTotalsupplyplanVo.class, response); + } + + /** + * 获取物资-总供应计划详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("design:totalsupplyplan:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(busTotalsupplyplanService.queryById(id)); + } + +// /** +// * 新增物资-总供应计划 +// */ +// @SaCheckPermission("design:totalsupplyplan:add") +// @Log(title = "物资-总供应计划", businessType = BusinessType.INSERT) +// @RepeatSubmit() +// @PostMapping() +// public R add(@Validated(AddGroup.class) @RequestBody BusTotalsupplyplanBo bo) { +// return toAjax(busTotalsupplyplanService.insertByBo(bo)); +// } + + /** + * 修改物资-总供应计划 + */ + @SaCheckPermission("design:totalsupplyplan:edit") + @Log(title = "物资-总供应计划", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody BusTotalsupplyplanBo bo) { + return toAjax(busTotalsupplyplanService.updateByBo(bo)); + } + +// /** +// * 删除物资-总供应计划 +// * +// * @param ids 主键串 +// */ +// @SaCheckPermission("design:totalsupplyplan:remove") +// @Log(title = "物资-总供应计划", businessType = BusinessType.DELETE) +// @DeleteMapping("/{ids}") +// public R remove(@NotEmpty(message = "主键不能为空") +// @PathVariable Long[] ids) { +// return toAjax(busTotalsupplyplanService.deleteWithValidByIds(List.of(ids), true)); +// } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusBillofquantitiesVersions.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusBillofquantitiesVersions.java index 1a46ecc4..b68de523 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusBillofquantitiesVersions.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusBillofquantitiesVersions.java @@ -50,5 +50,10 @@ public class BusBillofquantitiesVersions extends BaseEntity { */ private Long projectId; + /** + * 状态 + */ + private String status; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusDrawingreviewReceipts.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusDrawingreviewReceipts.java index c3acc74a..65b4689d 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusDrawingreviewReceipts.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusDrawingreviewReceipts.java @@ -5,6 +5,8 @@ import org.dromara.common.mybatis.core.domain.BaseEntity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; + +import java.time.LocalDate; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; @@ -129,17 +131,17 @@ public class BusDrawingreviewReceipts extends BaseEntity { /** * 校审时间 */ - private Date proofreadingDate; + private LocalDate proofreadingDate; /** * 审核时间 */ - private Date auditDate; + private LocalDate auditDate; /** * 执行时间 */ - private Date executorDate; + private LocalDate executorDate; /** * 文件名 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusTotalsupplyplan.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusTotalsupplyplan.java new file mode 100644 index 00000000..daad748d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusTotalsupplyplan.java @@ -0,0 +1,118 @@ +package org.dromara.design.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_totalsupplyplan + * + * @author Lion Li + * @date 2025-08-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("bus_totalsupplyplan") +public class BusTotalsupplyplan extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 项目Id + */ + private Long projectId; + + /** + * 批次号 + */ + private String batchNumber; + + /** + * 编制日期 + */ + private Date compileDate; + + /** + * 计划编号 + */ + private String planNumber; + + /** + * 编号 + */ + private String num; + + /** + * 名称 + */ + private String name; + + /** + * 规格 + */ + private String specification; + + /** + * 材质 + */ + private String texture; + + /** + * 单位 + */ + private String unit; + + /** + * 数量 + */ + private Long quantity; + + /** + * 品牌 + */ + private String brand; + + /** + * 质量标准 + */ + private String qualityStandard; + + /** + * 预计使用日期 + */ + private Date dateService; + + /** + * 交货地点 + */ + private String deliveryPoints; + + /** + * 使用部位 + */ + private String partUsed; + + /** + * 审核状态 + */ + private String status; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusTotalsupplyplanAudit.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusTotalsupplyplanAudit.java new file mode 100644 index 00000000..670c949f --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusTotalsupplyplanAudit.java @@ -0,0 +1,51 @@ +package org.dromara.design.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_totalsupplyplan_audit + * + * @author Lion Li + * @date 2025-08-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("bus_totalsupplyplan_audit") +public class BusTotalsupplyplanAudit 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 status; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusTotalsupplyplanAuditBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusTotalsupplyplanAuditBo.java new file mode 100644 index 00000000..dd530fd2 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusTotalsupplyplanAuditBo.java @@ -0,0 +1,52 @@ +package org.dromara.design.domain.bo; + +import org.dromara.design.domain.BusTotalsupplyplanAudit; +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_totalsupplyplan_audit + * + * @author Lion Li + * @date 2025-08-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BusTotalsupplyplanAudit.class, reverseConvertGenerate = false) +public class BusTotalsupplyplanAuditBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 项目Id + */ + @NotNull(message = "项目Id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long projectId; + + /** + * 批次号 + */ + @NotBlank(message = "批次号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String batchNumber; + + /** + * 审核状态 + */ + private String status; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusTotalsupplyplanBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusTotalsupplyplanBo.java new file mode 100644 index 00000000..ca0c1888 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusTotalsupplyplanBo.java @@ -0,0 +1,72 @@ +package org.dromara.design.domain.bo; + +import org.dromara.design.domain.BusTotalsupplyplan; +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_totalsupplyplan + * + * @author Lion Li + * @date 2025-08-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BusTotalsupplyplan.class, reverseConvertGenerate = false) +public class BusTotalsupplyplanBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 批次号 + */ + private String batchNumber; + + /** + * 预计使用日期 + */ + private Date dateService; + + /** + * 交货地点 + */ + private String deliveryPoints; + + /** + * 使用部位 + */ + private String partUsed; + + /** + * 品牌 + */ + private String brand; + + /** + * 质量标准 + */ + private String qualityStandard; + + /** + * 材质 + */ + private String texture; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/FillOutTheDesignVerificationFormReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/FillOutTheDesignVerificationFormReq.java index d3c69d27..c8ecd98c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/FillOutTheDesignVerificationFormReq.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/FillOutTheDesignVerificationFormReq.java @@ -5,6 +5,7 @@ import lombok.Data; import lombok.experimental.Accessors; import java.io.Serializable; +import java.time.LocalDate; import java.util.Date; /** @@ -116,17 +117,17 @@ public class FillOutTheDesignVerificationFormReq implements Serializable { /** * 校审时间 */ - private Date proofreadingDate; + private LocalDate proofreadingDate; /** * 审核时间 */ - private Date auditDate; + private LocalDate auditDate; /** * 执行时间 */ - private Date executorDate; + private LocalDate executorDate; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/ObtainTheListReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/ObtainTheListReq.java index 3ba40033..715212c2 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/ObtainTheListReq.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/ObtainTheListReq.java @@ -32,9 +32,8 @@ public class ObtainTheListReq implements Serializable { private String versions; /** - * 表名 + * 表名 不传递就是物资材料 */ - @NotBlank(message = "表名不能为空") private String sheet; /** diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/dto/MaterialsAndEquipmentExcelDto.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/dto/MaterialsAndEquipmentExcelDto.java new file mode 100644 index 00000000..43c480ad --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/dto/MaterialsAndEquipmentExcelDto.java @@ -0,0 +1,51 @@ +package org.dromara.design.domain.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @Author 铁憨憨 + * @Date 2025/8/13 14:28 + * @Version 1.0 + */ + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = true) +public class MaterialsAndEquipmentExcelDto implements Serializable { + /** + * 编号 + */ + private String num; + + /** + * 名称 + */ + private String name; + + /** + * 规格 + */ + private String specification; + + /** + * 单位 + */ + private String unit; + + /** + * 数量 + */ + private BigDecimal quantity; + + /** + * 备注 + */ + private String remark; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusBillofquantitiesVersionsVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusBillofquantitiesVersionsVo.java index 74d95816..9468e74d 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusBillofquantitiesVersionsVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusBillofquantitiesVersionsVo.java @@ -54,5 +54,10 @@ public class BusBillofquantitiesVersionsVo implements Serializable { @ExcelProperty(value = "Excel文件") private String excelFile; + /** + * 审核状态 + */ + @ExcelProperty(value = "审核状态") + private String status; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusDrawingreviewReceiptsVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusDrawingreviewReceiptsVo.java index e77525eb..dccfe9c0 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusDrawingreviewReceiptsVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusDrawingreviewReceiptsVo.java @@ -1,5 +1,6 @@ package org.dromara.design.domain.vo; +import java.time.LocalDate; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import org.dromara.design.domain.BusDrawingreviewReceipts; @@ -154,19 +155,19 @@ public class BusDrawingreviewReceiptsVo implements Serializable { * 校审时间 */ @ExcelProperty(value = "校审时间") - private Date proofreadingDate; + private LocalDate proofreadingDate; /** * 审核时间 */ @ExcelProperty(value = "审核时间") - private Date auditDate; + private LocalDate auditDate; /** * 执行时间 */ @ExcelProperty(value = "执行时间") - private Date executorDate; + private LocalDate executorDate; /** * 图纸 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusTotalsupplyplanAuditVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusTotalsupplyplanAuditVo.java new file mode 100644 index 00000000..48ad00ea --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusTotalsupplyplanAuditVo.java @@ -0,0 +1,62 @@ +package org.dromara.design.domain.vo; + +import org.dromara.design.domain.BusTotalsupplyplanAudit; +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_totalsupplyplan_audit + * + * @author Lion Li + * @date 2025-08-13 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BusTotalsupplyplanAudit.class) +public class BusTotalsupplyplanAuditVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 项目Id + */ + @ExcelProperty(value = "项目Id") + private Long projectId; + + /** + * 批次号 + */ + @ExcelProperty(value = "批次号") + private String batchNumber; + + /** + * 审核状态 + */ + @ExcelProperty(value = "审核状态") + private String status; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusTotalsupplyplanVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusTotalsupplyplanVo.java new file mode 100644 index 00000000..e555a029 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusTotalsupplyplanVo.java @@ -0,0 +1,141 @@ +package org.dromara.design.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.design.domain.BusTotalsupplyplan; +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_totalsupplyplan + * + * @author Lion Li + * @date 2025-08-13 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BusTotalsupplyplan.class) +public class BusTotalsupplyplanVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 批次号 + */ + private String batchNumber; + + /** + * 项目Id + */ + @ExcelProperty(value = "项目Id") + private Long projectId; + + /** + * 编制日期 + */ + @ExcelProperty(value = "编制日期") + private Date compileDate; + + /** + * 计划编号 + */ + @ExcelProperty(value = "计划编号") + private String planNumber; + + /** + * 编号 + */ + @ExcelProperty(value = "编号") + private String num; + + /** + * 名称 + */ + @ExcelProperty(value = "名称") + private String name; + + /** + * 规格 + */ + @ExcelProperty(value = "规格") + private String specification; + + /** + * 材质 + */ + @ExcelProperty(value = "材质") + private String texture; + + /** + * 单位 + */ + @ExcelProperty(value = "单位") + private String unit; + + /** + * 数量 + */ + @ExcelProperty(value = "数量") + private Long quantity; + + /** + * 品牌 + */ + @ExcelProperty(value = "品牌") + private String brand; + + /** + * 质量标准 + */ + @ExcelProperty(value = "质量标准") + private String qualityStandard; + + /** + * 预计使用日期 + */ + @ExcelProperty(value = "预计使用日期") + private Date dateService; + + /** + * 交货地点 + */ + @ExcelProperty(value = "交货地点") + private String deliveryPoints; + + /** + * 使用部位 + */ + @ExcelProperty(value = "使用部位") + private String partUsed; + + /** + * 审核状态 + */ + @ExcelProperty(value = "审核状态") + private String status; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/DetailsMaterialAndEquipmentApprovalRes.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/DetailsMaterialAndEquipmentApprovalRes.java new file mode 100644 index 00000000..5abdeb61 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/DetailsMaterialAndEquipmentApprovalRes.java @@ -0,0 +1,35 @@ +package org.dromara.design.domain.vo; + +import lombok.Data; +import lombok.experimental.Accessors; +import org.dromara.design.domain.BusBillofquantities; + +import java.io.Serializable; +import java.util.List; + +/** + * @Author 铁憨憨 + * @Date 2025/8/13 16:24 + * @Version 1.0 + */ + +@Data +@Accessors(chain = true) +public class DetailsMaterialAndEquipmentApprovalRes implements Serializable { + /** + * 版本号 + */ + private String versions; + + + /** + * 审核状态 + */ + private String status; + + /** + * 审核数据 + */ + private List auditData; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/dto/ObtainTheListRes.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/ObtainTheListRes.java similarity index 93% rename from xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/dto/ObtainTheListRes.java rename to xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/ObtainTheListRes.java index 86c33c15..461b8704 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/dto/ObtainTheListRes.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/ObtainTheListRes.java @@ -1,9 +1,8 @@ -package org.dromara.design.domain.dto; +package org.dromara.design.domain.vo; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; import lombok.experimental.Accessors; -import org.dromara.design.domain.vo.BusBillofquantitiesVo; import java.io.Serializable; import java.math.BigDecimal; diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/BusBillofquantitiesVersionsMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/BusBillofquantitiesVersionsMapper.java index 2ff0080b..41a84ead 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/BusBillofquantitiesVersionsMapper.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/BusBillofquantitiesVersionsMapper.java @@ -1,14 +1,11 @@ package org.dromara.design.mapper; import org.apache.ibatis.annotations.Param; -import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.design.domain.BusBillofquantitiesVersions; import org.dromara.design.domain.bo.ObtainTheListReq; -import org.dromara.design.domain.dto.ObtainTheListRes; +import org.dromara.design.domain.vo.ObtainTheListRes; import org.dromara.design.domain.vo.BusBillofquantitiesVersionsVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; -import org.dromara.design.domain.vo.BusBillofquantitiesVo; import java.util.List; diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/BusTotalsupplyplanAuditMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/BusTotalsupplyplanAuditMapper.java new file mode 100644 index 00000000..d1e62ff5 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/BusTotalsupplyplanAuditMapper.java @@ -0,0 +1,15 @@ +package org.dromara.design.mapper; + +import org.dromara.design.domain.BusTotalsupplyplanAudit; +import org.dromara.design.domain.vo.BusTotalsupplyplanAuditVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 物资-总供应计划审核Mapper接口 + * + * @author Lion Li + * @date 2025-08-13 + */ +public interface BusTotalsupplyplanAuditMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/BusTotalsupplyplanMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/BusTotalsupplyplanMapper.java new file mode 100644 index 00000000..438e58cb --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/BusTotalsupplyplanMapper.java @@ -0,0 +1,15 @@ +package org.dromara.design.mapper; + +import org.dromara.design.domain.BusTotalsupplyplan; +import org.dromara.design.domain.vo.BusTotalsupplyplanVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 物资-总供应计划Mapper接口 + * + * @author Lion Li + * @date 2025-08-13 + */ +public interface BusTotalsupplyplanMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IBusBillofquantitiesVersionsService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IBusBillofquantitiesVersionsService.java index b792eac2..e83664f0 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IBusBillofquantitiesVersionsService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IBusBillofquantitiesVersionsService.java @@ -1,18 +1,17 @@ package org.dromara.design.service; -import org.dromara.common.core.domain.R; +import org.dromara.design.domain.BusBillofquantities; import org.dromara.design.domain.bo.*; -import org.dromara.design.domain.dto.ObtainTheListRes; +import org.dromara.design.domain.vo.DetailsMaterialAndEquipmentApprovalRes; +import org.dromara.design.domain.vo.ObtainTheListRes; import org.dromara.design.domain.vo.BusBillofquantitiesVersionsVo; import org.dromara.design.domain.BusBillofquantitiesVersions; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.service.IService; -import org.dromara.design.domain.vo.BusBillofquantitiesVo; import org.springframework.web.multipart.MultipartFile; -import java.io.IOException; import java.util.Collection; import java.util.List; @@ -77,7 +76,7 @@ public interface IBusBillofquantitiesVersionsService extends IService obtainTheList(ObtainTheListReq bo); + + /** + * 物资设备清单审批详情 + */ + DetailsMaterialAndEquipmentApprovalRes detailsMaterialAndEquipmentApproval(String versions); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IBusTotalsupplyplanAuditService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IBusTotalsupplyplanAuditService.java new file mode 100644 index 00000000..28960e88 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IBusTotalsupplyplanAuditService.java @@ -0,0 +1,70 @@ +package org.dromara.design.service; + +import org.dromara.design.domain.vo.BusTotalsupplyplanAuditVo; +import org.dromara.design.domain.bo.BusTotalsupplyplanAuditBo; +import org.dromara.design.domain.BusTotalsupplyplanAudit; +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-08-13 + */ +public interface IBusTotalsupplyplanAuditService extends IService{ + + /** + * 查询物资-总供应计划审核 + * + * @param id 主键 + * @return 物资-总供应计划审核 + */ + BusTotalsupplyplanAuditVo queryById(Long id); + + /** + * 分页查询物资-总供应计划审核列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 物资-总供应计划审核分页列表 + */ + TableDataInfo queryPageList(BusTotalsupplyplanAuditBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的物资-总供应计划审核列表 + * + * @param bo 查询条件 + * @return 物资-总供应计划审核列表 + */ + List queryList(BusTotalsupplyplanAuditBo bo); + + /** + * 新增物资-总供应计划审核 + * + * @param bo 物资-总供应计划审核 + * @return 是否新增成功 + */ + Boolean insertByBo(BusTotalsupplyplanAuditBo bo); + + /** + * 修改物资-总供应计划审核 + * + * @param bo 物资-总供应计划审核 + * @return 是否修改成功 + */ + Boolean updateByBo(BusTotalsupplyplanAuditBo 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/design/service/IBusTotalsupplyplanService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IBusTotalsupplyplanService.java new file mode 100644 index 00000000..c159a3c2 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IBusTotalsupplyplanService.java @@ -0,0 +1,70 @@ +package org.dromara.design.service; + +import org.dromara.design.domain.vo.BusTotalsupplyplanVo; +import org.dromara.design.domain.bo.BusTotalsupplyplanBo; +import org.dromara.design.domain.BusTotalsupplyplan; +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-08-13 + */ +public interface IBusTotalsupplyplanService extends IService{ + + /** + * 查询物资-总供应计划 + * + * @param id 主键 + * @return 物资-总供应计划 + */ + BusTotalsupplyplanVo queryById(Long id); + + /** + * 分页查询物资-总供应计划列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 物资-总供应计划分页列表 + */ + TableDataInfo queryPageList(BusTotalsupplyplanBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的物资-总供应计划列表 + * + * @param bo 查询条件 + * @return 物资-总供应计划列表 + */ + List queryList(BusTotalsupplyplanBo bo); + + /** + * 新增物资-总供应计划 + * + * @param bo 物资-总供应计划 + * @return 是否新增成功 + */ + Boolean insertByBo(BusTotalsupplyplanBo bo); + + /** + * 修改物资-总供应计划 + * + * @param bo 物资-总供应计划 + * @return 是否修改成功 + */ + Boolean updateByBo(BusTotalsupplyplanBo 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/design/service/impl/BusBillofquantitiesVersionsServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusBillofquantitiesVersionsServiceImpl.java index 45a73475..9188f2a3 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusBillofquantitiesVersionsServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusBillofquantitiesVersionsServiceImpl.java @@ -1,6 +1,13 @@ package org.dromara.design.service.impl; +import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.log4j.Log4j; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.event.ProcessDeleteEvent; +import org.dromara.common.core.domain.event.ProcessEvent; +import org.dromara.common.core.domain.event.ProcessTaskEvent; +import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; @@ -12,27 +19,28 @@ 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.dromara.design.domain.BusBillofquantities; +import org.dromara.common.utils.excel.ExcelDynamicReader; +import org.dromara.design.domain.*; import org.dromara.design.domain.bo.*; -import org.dromara.design.domain.dto.ObtainTheListRes; -import org.dromara.design.domain.vo.BusBillofquantitiesVo; -import org.dromara.design.mapper.BusBillofquantitiesMapper; +import org.dromara.design.domain.dto.MaterialsAndEquipmentExcelDto; +import org.dromara.design.domain.vo.DetailsMaterialAndEquipmentApprovalRes; +import org.dromara.design.domain.vo.ObtainTheListRes; import org.dromara.design.service.IBusBillofquantitiesService; +import org.dromara.design.service.IBusTotalsupplyplanAuditService; +import org.dromara.design.service.IBusTotalsupplyplanService; import org.dromara.system.domain.vo.SysOssUploadVo; import org.dromara.system.service.ISysOssService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; import org.dromara.design.domain.vo.BusBillofquantitiesVersionsVo; -import org.dromara.design.domain.BusBillofquantitiesVersions; import org.dromara.design.mapper.BusBillofquantitiesVersionsMapper; import org.dromara.design.service.IBusBillofquantitiesVersionsService; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; -import java.io.IOException; import java.math.BigDecimal; import java.util.*; -import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; import static org.dromara.common.constant.MinioPathConstant.BillOfQuantities; @@ -45,10 +53,13 @@ import static org.dromara.common.constant.MinioPathConstant.BillOfQuantities; */ @RequiredArgsConstructor @Service +@Slf4j public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl implements IBusBillofquantitiesVersionsService { private final BusBillofquantitiesVersionsMapper baseMapper; private final IBusBillofquantitiesService busBillofquantitiesService; + private final IBusTotalsupplyplanService busTotalsupplyplanService; + private final IBusTotalsupplyplanAuditService busTotalsupplyplanAuditService; @Autowired private ISysOssService ossService; @@ -156,8 +167,8 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl allMaterials = new ArrayList<>(); - for (ExcelReader.SheetData sheetData : excelData.getSheetDataList()) { - String sheetName = sheetData.getSheetName(); - List> rowDataList = sheetData.getData(); - - // 构建当前Sheet的树形结构(复用ExcelReader的buildTree方法) - ExcelReader.TreeNode rootNode = ExcelReader.buildTree(rowDataList); - - // 存储节点映射:TreeNode → ExcelMaterial(用于子节点关联父节点) - Map nodeMap = new HashMap<>(); - - // 递归遍历树形结构,生成sid和pid - traverseTree(rootNode, nodeMap, allMaterials, sheetName,banBen); + //走正常的工程清单 + if(!Objects.equals(bo.getWorkOrderType(), "3")){ + // 2. 解析所有工作表,转换为带父子关系的ExcelMaterial列表 解析所有Sheet数据,按规则生成sid和pid + List allMaterials = new ArrayList<>(); + for (ExcelReader.SheetData sheetData : excelData.getSheetDataList()) { + String sheetName = sheetData.getSheetName(); + List> rowDataList = sheetData.getData(); + // 构建当前Sheet的树形结构(复用ExcelReader的buildTree方法) + ExcelReader.TreeNode rootNode = ExcelReader.buildTree(rowDataList); + // 存储节点映射:TreeNode → ExcelMaterial(用于子节点关联父节点) + Map nodeMap = new HashMap<>(); + // 递归遍历树形结构,生成sid和pid + traverseTree(rootNode, nodeMap, allMaterials, sheetName,banBen); + } + // 3. 批量插入数据库 + for (BusBillofquantities allMaterial : allMaterials) { + allMaterial.setProjectId(bo.getProjectId()); + } + boolean b = busBillofquantitiesService.saveBatch(allMaterials); + if(!b){ + throw new RuntimeException("导入失败"); + } + return true; + }else{ + // 跳过1行(表头),读取0到6列(共7列),映射到ExcelData实体类 + List dataList = ExcelDynamicReader.readExcel( + file, // 上传的文件 + 1, // 跳过1行(表头) + 0, // 从第0列开始 + 5, // 到第5列结束 + MaterialsAndEquipmentExcelDto.class // 目标实体类 + ); + List busBillofquantities = BeanUtil.copyToList(dataList, BusBillofquantities.class); + for (BusBillofquantities busBillofquantity : busBillofquantities) { + busBillofquantity.setProjectId(bo.getProjectId()); + busBillofquantity.setVersions(banBen); + } + boolean b = busBillofquantitiesService.saveBatch(busBillofquantities); + if(!b){ + throw new RuntimeException("导入失败"); + } + return true; } - // 3. 批量插入数据库 - for (BusBillofquantities allMaterial : allMaterials) { - allMaterial.setProjectId(bo.getProjectId()); - } - boolean b = busBillofquantitiesService.saveBatch(allMaterials); - if(!b){ - throw new ServiceException("导入失败"); - } - return true; } @@ -209,7 +239,10 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl> parentMap = flatList.stream() .collect(Collectors.groupingBy(ObtainTheListRes::getPid)); @@ -220,6 +253,25 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl().eq(BusBillofquantitiesVersions::getVersions, versions)); + if(busBillofquantitiesVersions==null){ + throw new ServiceException("版本不存在"); + } + //根据版本号获取物资设备清单 + List busBillofquantities = busBillofquantitiesService.list(new LambdaQueryWrapper().eq(BusBillofquantities::getVersions, versions)); + if(busBillofquantities==null){ + throw new ServiceException("版本不存在"); + } + detailsMaterialAndEquipmentApprovalRes.setVersions(busBillofquantitiesVersions.getVersions()); + detailsMaterialAndEquipmentApprovalRes.setStatus(busBillofquantitiesVersions.getStatus()); + detailsMaterialAndEquipmentApprovalRes.setAuditData(busBillofquantities); + return detailsMaterialAndEquipmentApprovalRes; + } + /** * 递归构建树形结构 * @param parentId 父节点ID(顶级节点为0) @@ -352,6 +404,9 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl result = baseMapper.selectVoPage(pageQuery.build(), lqw); + result.getRecords().forEach(item -> { + System.out.println("1 "+item.getStatus()); + }); return TableDataInfo.build(result); } @@ -374,4 +429,79 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl eq = new LambdaQueryWrapper() + .eq(BusBillofquantitiesVersions::getVersions, id); + BusBillofquantitiesVersions busBillofquantitiesVersions = new BusBillofquantitiesVersions(); + busBillofquantitiesVersions.setStatus(processEvent.getStatus()); + boolean update = this.update(busBillofquantitiesVersions, eq); + //变更成功,增加数据 + if (update) { + //2、根据版本号查询数据 + BusBillofquantitiesVersions versions = this.getOne(eq); + //2、新增批次号 + String num = BatchNumberGenerator.generateBatchNumber("ZGY-"); + BusTotalsupplyplanAudit busTotalsupplyplanAudit = new BusTotalsupplyplanAudit(); + busTotalsupplyplanAudit.setProjectId(versions.getProjectId()); + busTotalsupplyplanAudit.setBatchNumber(num); + boolean save = busTotalsupplyplanAuditService.save(busTotalsupplyplanAudit); + if (!save){ + log.info("新增失败"); + } + //1、根据查询数据 + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BusBillofquantities::getVersions, id); + lqw.last("limit 1"); + List list = busBillofquantitiesService.list(lqw); + List busTotalsupplyplans = BeanUtil.copyToList(list, BusTotalsupplyplan.class); + for (BusTotalsupplyplan busTotalsupplyplan : busTotalsupplyplans) { + busTotalsupplyplan.setBatchNumber(num); + busTotalsupplyplan.setProjectId(versions.getProjectId()); + } + boolean b = busTotalsupplyplanService.saveBatch(busTotalsupplyplans); + if (!b){ + log.info("新增失败"); + } + } + } + + /** + * 执行任务创建监听 + * 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断 + * 在方法中判断流程节点key + * if ("xxx".equals(processTaskEvent.getNodeCode())) { + * //执行业务逻辑 + * } + * + * @param processTaskEvent 参数 + */ + @org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('equipmentList')") + public void processTaskPlansHandler(ProcessTaskEvent processTaskEvent) { + log.info("物资设备清单审核任务创建了{}", processTaskEvent.toString()); + } + + /** + * 监听删除流程事件 + * 正常使用只需#processDeleteEvent.flowCode=='leave1' + * 示例为了方便则使用startsWith匹配了全部示例key + * + * @param processDeleteEvent 参数 + */ + @EventListener(condition = "#processDeleteEvent.flowCode.endsWith('equipmentList')") + public void processDeletePlansHandler(ProcessDeleteEvent processDeleteEvent) { + log.info("物资设备清单计划删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString()); + } + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusDrawingreviewServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusDrawingreviewServiceImpl.java index 33067c6f..cc1bb05f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusDrawingreviewServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusDrawingreviewServiceImpl.java @@ -232,8 +232,18 @@ public class BusDrawingreviewServiceImpl extends ServiceImpl lqw = Wrappers.lambdaQuery(); + lqw.eq(BusDrawingreviewReceipts::getDrawingreviewId, bo.getId()); + lqw.orderByDesc(BusDrawingreviewReceipts::getCreateTime); + lqw.last("limit 1"); + BusDrawingreviewReceipts one = busDrawingreviewReceiptsService.getOne(lqw); + if (one == null) { + throw new RuntimeException("查询失败"); + } //修改busDrawingreviewReceiptsService数据 BusDrawingreviewReceipts busDrawingreviewReceipts = BeanUtil.copyProperties(bo, BusDrawingreviewReceipts.class); + busDrawingreviewReceipts.setId(one.getId()); return busDrawingreviewReceiptsService.updateById(busDrawingreviewReceipts); } @@ -250,7 +260,6 @@ public class BusDrawingreviewServiceImpl extends ServiceImpl lqw = Wrappers.lambdaQuery(); lqw.eq(BusDrawingreviewReceipts::getDrawingreviewId, id); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusTotalsupplyplanAuditServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusTotalsupplyplanAuditServiceImpl.java new file mode 100644 index 00000000..d48bafad --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusTotalsupplyplanAuditServiceImpl.java @@ -0,0 +1,133 @@ +package org.dromara.design.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.design.domain.bo.BusTotalsupplyplanAuditBo; +import org.dromara.design.domain.vo.BusTotalsupplyplanAuditVo; +import org.dromara.design.domain.BusTotalsupplyplanAudit; +import org.dromara.design.mapper.BusTotalsupplyplanAuditMapper; +import org.dromara.design.service.IBusTotalsupplyplanAuditService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 物资-总供应计划审核Service业务层处理 + * + * @author Lion Li + * @date 2025-08-13 + */ +@RequiredArgsConstructor +@Service +public class BusTotalsupplyplanAuditServiceImpl extends ServiceImpl implements IBusTotalsupplyplanAuditService { + + private final BusTotalsupplyplanAuditMapper baseMapper; + + /** + * 查询物资-总供应计划审核 + * + * @param id 主键 + * @return 物资-总供应计划审核 + */ + @Override + public BusTotalsupplyplanAuditVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询物资-总供应计划审核列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 物资-总供应计划审核分页列表 + */ + @Override + public TableDataInfo queryPageList(BusTotalsupplyplanAuditBo 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(BusTotalsupplyplanAuditBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(BusTotalsupplyplanAuditBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(BusTotalsupplyplanAudit::getId); + lqw.eq(bo.getProjectId() != null, BusTotalsupplyplanAudit::getProjectId, bo.getProjectId()); + lqw.eq(StringUtils.isNotBlank(bo.getBatchNumber()), BusTotalsupplyplanAudit::getBatchNumber, bo.getBatchNumber()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BusTotalsupplyplanAudit::getStatus, bo.getStatus()); + return lqw; + } + + /** + * 新增物资-总供应计划审核 + * + * @param bo 物资-总供应计划审核 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(BusTotalsupplyplanAuditBo bo) { + BusTotalsupplyplanAudit add = MapstructUtils.convert(bo, BusTotalsupplyplanAudit.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改物资-总供应计划审核 + * + * @param bo 物资-总供应计划审核 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(BusTotalsupplyplanAuditBo bo) { + BusTotalsupplyplanAudit update = MapstructUtils.convert(bo, BusTotalsupplyplanAudit.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(BusTotalsupplyplanAudit 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/design/service/impl/BusTotalsupplyplanServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusTotalsupplyplanServiceImpl.java new file mode 100644 index 00000000..e5388349 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusTotalsupplyplanServiceImpl.java @@ -0,0 +1,187 @@ +package org.dromara.design.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.event.ProcessDeleteEvent; +import org.dromara.common.core.domain.event.ProcessEvent; +import org.dromara.common.core.domain.event.ProcessTaskEvent; +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.design.domain.BusBillofquantities; +import org.dromara.design.domain.BusBillofquantitiesVersions; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; +import org.dromara.design.domain.bo.BusTotalsupplyplanBo; +import org.dromara.design.domain.vo.BusTotalsupplyplanVo; +import org.dromara.design.domain.BusTotalsupplyplan; +import org.dromara.design.mapper.BusTotalsupplyplanMapper; +import org.dromara.design.service.IBusTotalsupplyplanService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 物资-总供应计划Service业务层处理 + * + * @author Lion Li + * @date 2025-08-13 + */ +@RequiredArgsConstructor +@Service +@Slf4j +public class BusTotalsupplyplanServiceImpl extends ServiceImpl implements IBusTotalsupplyplanService { + + private final BusTotalsupplyplanMapper baseMapper; + + /** + * 查询物资-总供应计划 + * + * @param id 主键 + * @return 物资-总供应计划 + */ + @Override + public BusTotalsupplyplanVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询物资-总供应计划列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 物资-总供应计划分页列表 + */ + @Override + public TableDataInfo queryPageList(BusTotalsupplyplanBo 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(BusTotalsupplyplanBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(BusTotalsupplyplanBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(BusTotalsupplyplan::getId); + lqw.eq(StringUtils.isNotBlank(bo.getTexture()), BusTotalsupplyplan::getTexture, bo.getTexture()); + lqw.eq(StringUtils.isNotBlank(bo.getBrand()), BusTotalsupplyplan::getBrand, bo.getBrand()); + lqw.eq(StringUtils.isNotBlank(bo.getQualityStandard()), BusTotalsupplyplan::getQualityStandard, bo.getQualityStandard()); + lqw.eq(bo.getDateService() != null, BusTotalsupplyplan::getDateService, bo.getDateService()); + lqw.eq(StringUtils.isNotBlank(bo.getDeliveryPoints()), BusTotalsupplyplan::getDeliveryPoints, bo.getDeliveryPoints()); + lqw.eq(StringUtils.isNotBlank(bo.getPartUsed()), BusTotalsupplyplan::getPartUsed, bo.getPartUsed()); + return lqw; + } + + /** + * 新增物资-总供应计划 + * + * @param bo 物资-总供应计划 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(BusTotalsupplyplanBo bo) { + BusTotalsupplyplan add = MapstructUtils.convert(bo, BusTotalsupplyplan.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改物资-总供应计划 + * + * @param bo 物资-总供应计划 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(BusTotalsupplyplanBo bo) { + BusTotalsupplyplan update = MapstructUtils.convert(bo, BusTotalsupplyplan.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(BusTotalsupplyplan entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除物资-总供应计划信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } + + /** + * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) + * 正常使用只需#processEvent.flowCode=='leave1' + * 示例为了方便则使用startsWith匹配了全部示例key + * + * @param processEvent 参数 + */ + @org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('totalsupplyplan')") + public void processPlansHandler(ProcessEvent processEvent) { + log.info("物资总供应计划审核任务执行了{}", processEvent.toString()); + String id = processEvent.getBusinessId(); + + } + + /** + * 执行任务创建监听 + * 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断 + * 在方法中判断流程节点key + * if ("xxx".equals(processTaskEvent.getNodeCode())) { + * //执行业务逻辑 + * } + * + * @param processTaskEvent 参数 + */ + @org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('totalsupplyplan')") + public void processTaskPlansHandler(ProcessTaskEvent processTaskEvent) { + log.info("物资总供应计划审核任务创建了{}", processTaskEvent.toString()); + } + + /** + * 监听删除流程事件 + * 正常使用只需#processDeleteEvent.flowCode=='leave1' + * 示例为了方便则使用startsWith匹配了全部示例key + * + * @param processDeleteEvent 参数 + */ + @EventListener(condition = "#processDeleteEvent.flowCode.endsWith('totalsupplyplan')") + public void processDeletePlansHandler(ProcessDeleteEvent processDeleteEvent) { + log.info("物资总供应计划计划删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString()); + } + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/design/BusBillofquantitiesVersionsMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/design/BusBillofquantitiesVersionsMapper.xml index b615a509..73c95a70 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/design/BusBillofquantitiesVersionsMapper.xml +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/design/BusBillofquantitiesVersionsMapper.xml @@ -4,13 +4,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - select * from bus_billofquantities - versions = #{bo.versions} AND sheet = #{bo.sheet} AND project_id = #{bo.projectId} + versions = #{bo.versions} + + AND project_id = #{bo.projectId} + + + AND `sheet` = #{bo.sheet} + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/design/BusTotalsupplyplanAuditMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/design/BusTotalsupplyplanAuditMapper.xml new file mode 100644 index 00000000..ded87c1d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/design/BusTotalsupplyplanAuditMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/design/BusTotalsupplyplanMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/design/BusTotalsupplyplanMapper.xml new file mode 100644 index 00000000..656a500d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/design/BusTotalsupplyplanMapper.xml @@ -0,0 +1,7 @@ + + + + +