diff --git a/xinnengyuan/ruoyi-admin/src/main/resources/application.yml b/xinnengyuan/ruoyi-admin/src/main/resources/application.yml index 634794e0..b6f3f126 100644 --- a/xinnengyuan/ruoyi-admin/src/main/resources/application.yml +++ b/xinnengyuan/ruoyi-admin/src/main/resources/application.yml @@ -259,6 +259,8 @@ springdoc: packages-to-scan: org.dromara.cailiaoshebei - group: 18.产值模块 packages-to-scan: org.dromara.out + - group: 19.消息模块 + packages-to-scan: org.dromara.message # knife4j的增强配置,不需要增强可以不配 knife4j: enable: 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/cailiaoshebei/controller/BusTotalsupplyplanController.java similarity index 70% rename from xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/controller/BusTotalsupplyplanController.java rename to xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusTotalsupplyplanController.java index cf253b52..4df5c0a6 100644 --- 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/cailiaoshebei/controller/BusTotalsupplyplanController.java @@ -1,11 +1,18 @@ -package org.dromara.design.controller; +package org.dromara.cailiaoshebei.controller; import java.util.List; +import cn.hutool.core.bean.BeanUtil; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.cailiaoshebei.domain.bo.BusTotalsupplyplanAuditBo; +import org.dromara.cailiaoshebei.domain.bo.MasterDataReq; +import org.dromara.cailiaoshebei.domain.bo.TotalsupplyplanQueryListReq; +import org.dromara.cailiaoshebei.domain.dto.MasterDataReqDto; +import org.dromara.cailiaoshebei.domain.vo.BusTotalsupplyplanAuditVo; +import org.dromara.cailiaoshebei.service.IBusTotalsupplyplanAuditService; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -13,13 +20,12 @@ 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.cailiaoshebei.domain.vo.BusTotalsupplyplanVo; +import org.dromara.cailiaoshebei.domain.bo.BusTotalsupplyplanBo; +import org.dromara.cailiaoshebei.service.IBusTotalsupplyplanService; import org.dromara.common.mybatis.core.page.TableDataInfo; /** @@ -35,6 +41,26 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; public class BusTotalsupplyplanController extends BaseController { private final IBusTotalsupplyplanService busTotalsupplyplanService; + private final IBusTotalsupplyplanAuditService busTotalsupplyplanAuditService; + + /** + * 获取主数据列表 + */ + @SaCheckPermission("design:totalsupplyplan:queryList") + @GetMapping("/queryList") + public R> queryList(TotalsupplyplanQueryListReq bo) { + BusTotalsupplyplanAuditBo busTotalsupplyplanAuditBo = BeanUtil.copyProperties(bo, BusTotalsupplyplanAuditBo.class); + return R.ok(busTotalsupplyplanAuditService.queryList(busTotalsupplyplanAuditBo)); + } + + /** + * 根据主数据获取到详情 + */ + @SaCheckPermission("design:totalsupplyplan:masterData") + @GetMapping("/masterData") + public R masterData(MasterDataReq bo) { + return R.ok(busTotalsupplyplanService.masterData(bo)); + } /** * 查询物资-总供应计划列表 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/cailiaoshebei/domain/BusTotalsupplyplan.java similarity index 95% rename from xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusTotalsupplyplan.java rename to xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusTotalsupplyplan.java index daad748d..9abae07c 100644 --- 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/cailiaoshebei/domain/BusTotalsupplyplan.java @@ -1,11 +1,10 @@ -package org.dromara.design.domain; +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; 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/cailiaoshebei/domain/BusTotalsupplyplanAudit.java similarity index 95% rename from xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/BusTotalsupplyplanAudit.java rename to xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusTotalsupplyplanAudit.java index 670c949f..aa5eba9c 100644 --- 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/cailiaoshebei/domain/BusTotalsupplyplanAudit.java @@ -1,4 +1,4 @@ -package org.dromara.design.domain; +package org.dromara.cailiaoshebei.domain; import org.dromara.common.mybatis.core.domain.BaseEntity; import com.baomidou.mybatisplus.annotation.*; 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/cailiaoshebei/domain/bo/BusTotalsupplyplanAuditBo.java similarity index 91% rename from xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusTotalsupplyplanAuditBo.java rename to xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusTotalsupplyplanAuditBo.java index dd530fd2..a7e90f33 100644 --- 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/cailiaoshebei/domain/bo/BusTotalsupplyplanAuditBo.java @@ -1,6 +1,6 @@ -package org.dromara.design.domain.bo; +package org.dromara.cailiaoshebei.domain.bo; -import org.dromara.design.domain.BusTotalsupplyplanAudit; +import org.dromara.cailiaoshebei.domain.BusTotalsupplyplanAudit; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; 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/cailiaoshebei/domain/bo/BusTotalsupplyplanBo.java similarity index 86% rename from xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/bo/BusTotalsupplyplanBo.java rename to xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusTotalsupplyplanBo.java index ca0c1888..2d9e103e 100644 --- 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/cailiaoshebei/domain/bo/BusTotalsupplyplanBo.java @@ -1,15 +1,13 @@ -package org.dromara.design.domain.bo; +package org.dromara.cailiaoshebei.domain.bo; -import org.dromara.design.domain.BusTotalsupplyplan; +import org.dromara.cailiaoshebei.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 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/MasterDataReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/MasterDataReq.java new file mode 100644 index 00000000..edf70c0c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/MasterDataReq.java @@ -0,0 +1,28 @@ +package org.dromara.cailiaoshebei.domain.bo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.experimental.Accessors; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; + +import java.io.Serializable; + +/** + * @Author 铁憨憨 + * @Date 2025/8/14 11:21 + * @Version 1.0 + */ + +@Data +@Accessors(chain = true) +public class MasterDataReq implements Serializable { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/TotalsupplyplanQueryListReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/TotalsupplyplanQueryListReq.java new file mode 100644 index 00000000..0dfe53ed --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/TotalsupplyplanQueryListReq.java @@ -0,0 +1,27 @@ +package org.dromara.cailiaoshebei.domain.bo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.experimental.Accessors; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; + +import java.io.Serializable; + +/** + * @Author 铁憨憨 + * @Date 2025/8/14 11:32 + * @Version 1.0 + */ + +@Data +@Accessors(chain = true) +public class TotalsupplyplanQueryListReq implements Serializable { + + /** + * 项目Id + */ + @NotNull(message = "项目Id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long projectId; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/MasterDataReqDto.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/MasterDataReqDto.java new file mode 100644 index 00000000..364dc3a5 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/dto/MasterDataReqDto.java @@ -0,0 +1,50 @@ +package org.dromara.cailiaoshebei.domain.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.dromara.cailiaoshebei.domain.BusTotalsupplyplan; + +import java.io.Serializable; +import java.util.List; + +/** + * @Author 铁憨憨 + * @Date 2025/8/14 11:24 + * @Version 1.0 + */ + +@Data +@Accessors(chain = true) +public class MasterDataReqDto implements Serializable { + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 项目Id + */ + @ExcelProperty(value = "项目Id") + private Long projectId; + + /** + * 批次号 + */ + @ExcelProperty(value = "批次号") + private String batchNumber; + + /** + * 审核状态 + */ + @ExcelProperty(value = "审核状态") + private String status; + + /** + * 子数据 + */ + private List subData; + +} 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/cailiaoshebei/domain/vo/BusTotalsupplyplanAuditVo.java similarity index 81% rename from xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusTotalsupplyplanAuditVo.java rename to xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusTotalsupplyplanAuditVo.java index 48ad00ea..67995e46 100644 --- 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/cailiaoshebei/domain/vo/BusTotalsupplyplanAuditVo.java @@ -1,17 +1,13 @@ -package org.dromara.design.domain.vo; +package org.dromara.cailiaoshebei.domain.vo; -import org.dromara.design.domain.BusTotalsupplyplanAudit; +import org.dromara.cailiaoshebei.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; - /** 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/cailiaoshebei/domain/vo/BusTotalsupplyplanVo.java similarity index 89% rename from xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/domain/vo/BusTotalsupplyplanVo.java rename to xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusTotalsupplyplanVo.java index e555a029..f7fdc18d 100644 --- 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/cailiaoshebei/domain/vo/BusTotalsupplyplanVo.java @@ -1,19 +1,15 @@ -package org.dromara.design.domain.vo; +package org.dromara.cailiaoshebei.domain.vo; import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; -import org.dromara.design.domain.BusTotalsupplyplan; + +import org.dromara.cailiaoshebei.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; - /** 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/cailiaoshebei/mapper/BusTotalsupplyplanAuditMapper.java similarity index 61% rename from xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/BusTotalsupplyplanAuditMapper.java rename to xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/mapper/BusTotalsupplyplanAuditMapper.java index d1e62ff5..2b13f18b 100644 --- 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/cailiaoshebei/mapper/BusTotalsupplyplanAuditMapper.java @@ -1,7 +1,7 @@ -package org.dromara.design.mapper; +package org.dromara.cailiaoshebei.mapper; -import org.dromara.design.domain.BusTotalsupplyplanAudit; -import org.dromara.design.domain.vo.BusTotalsupplyplanAuditVo; +import org.dromara.cailiaoshebei.domain.BusTotalsupplyplanAudit; +import org.dromara.cailiaoshebei.domain.vo.BusTotalsupplyplanAuditVo; import org.dromara.common.mybatis.core.mapper.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/cailiaoshebei/mapper/BusTotalsupplyplanMapper.java similarity index 61% rename from xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/mapper/BusTotalsupplyplanMapper.java rename to xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/mapper/BusTotalsupplyplanMapper.java index 438e58cb..362e66ee 100644 --- 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/cailiaoshebei/mapper/BusTotalsupplyplanMapper.java @@ -1,7 +1,7 @@ -package org.dromara.design.mapper; +package org.dromara.cailiaoshebei.mapper; -import org.dromara.design.domain.BusTotalsupplyplan; -import org.dromara.design.domain.vo.BusTotalsupplyplanVo; +import org.dromara.cailiaoshebei.domain.BusTotalsupplyplan; +import org.dromara.cailiaoshebei.domain.vo.BusTotalsupplyplanVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** 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/cailiaoshebei/service/IBusTotalsupplyplanAuditService.java similarity index 88% rename from xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IBusTotalsupplyplanAuditService.java rename to xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusTotalsupplyplanAuditService.java index 28960e88..503f5935 100644 --- 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/cailiaoshebei/service/IBusTotalsupplyplanAuditService.java @@ -1,8 +1,8 @@ -package org.dromara.design.service; +package org.dromara.cailiaoshebei.service; -import org.dromara.design.domain.vo.BusTotalsupplyplanAuditVo; -import org.dromara.design.domain.bo.BusTotalsupplyplanAuditBo; -import org.dromara.design.domain.BusTotalsupplyplanAudit; +import org.dromara.cailiaoshebei.domain.vo.BusTotalsupplyplanAuditVo; +import org.dromara.cailiaoshebei.domain.bo.BusTotalsupplyplanAuditBo; +import org.dromara.cailiaoshebei.domain.BusTotalsupplyplanAudit; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; 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/cailiaoshebei/service/IBusTotalsupplyplanService.java similarity index 76% rename from xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/IBusTotalsupplyplanService.java rename to xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusTotalsupplyplanService.java index c159a3c2..53f25945 100644 --- 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/cailiaoshebei/service/IBusTotalsupplyplanService.java @@ -1,8 +1,10 @@ -package org.dromara.design.service; +package org.dromara.cailiaoshebei.service; -import org.dromara.design.domain.vo.BusTotalsupplyplanVo; -import org.dromara.design.domain.bo.BusTotalsupplyplanBo; -import org.dromara.design.domain.BusTotalsupplyplan; +import org.dromara.cailiaoshebei.domain.bo.MasterDataReq; +import org.dromara.cailiaoshebei.domain.dto.MasterDataReqDto; +import org.dromara.cailiaoshebei.domain.vo.BusTotalsupplyplanVo; +import org.dromara.cailiaoshebei.domain.bo.BusTotalsupplyplanBo; +import org.dromara.cailiaoshebei.domain.BusTotalsupplyplan; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; @@ -67,4 +69,13 @@ public interface IBusTotalsupplyplanService extends IService * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + + /** + * 物资-总供应计划-主数据 + * + * @param bo 主数据查询条件 + * @return 主数据列表 + */ + MasterDataReqDto masterData(MasterDataReq bo); } 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/cailiaoshebei/service/impl/BusTotalsupplyplanAuditServiceImpl.java similarity index 89% rename from xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusTotalsupplyplanAuditServiceImpl.java rename to xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusTotalsupplyplanAuditServiceImpl.java index d48bafad..68afa54b 100644 --- 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/cailiaoshebei/service/impl/BusTotalsupplyplanAuditServiceImpl.java @@ -1,4 +1,4 @@ -package org.dromara.design.service.impl; +package org.dromara.cailiaoshebei.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.dromara.common.core.utils.MapstructUtils; @@ -10,11 +10,11 @@ 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 org.dromara.cailiaoshebei.domain.bo.BusTotalsupplyplanAuditBo; +import org.dromara.cailiaoshebei.domain.vo.BusTotalsupplyplanAuditVo; +import org.dromara.cailiaoshebei.domain.BusTotalsupplyplanAudit; +import org.dromara.cailiaoshebei.mapper.BusTotalsupplyplanAuditMapper; +import org.dromara.cailiaoshebei.service.IBusTotalsupplyplanAuditService; import java.util.List; import java.util.Map; @@ -66,7 +66,8 @@ public class BusTotalsupplyplanAuditServiceImpl extends ServiceImpl queryList(BusTotalsupplyplanAuditBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + List busTotalsupplyplanAuditVos = baseMapper.selectVoList(lqw); + return busTotalsupplyplanAuditVos; } private LambdaQueryWrapper buildQueryWrapper(BusTotalsupplyplanAuditBo bo) { 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/cailiaoshebei/service/impl/BusTotalsupplyplanServiceImpl.java similarity index 78% rename from xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/BusTotalsupplyplanServiceImpl.java rename to xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusTotalsupplyplanServiceImpl.java index e5388349..28db77f3 100644 --- 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/cailiaoshebei/service/impl/BusTotalsupplyplanServiceImpl.java @@ -1,8 +1,10 @@ -package org.dromara.design.service.impl; +package org.dromara.cailiaoshebei.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.dromara.cailiaoshebei.domain.bo.MasterDataReq; +import org.dromara.cailiaoshebei.domain.dto.MasterDataReqDto; import org.dromara.common.core.domain.event.ProcessDeleteEvent; import org.dromara.common.core.domain.event.ProcessEvent; import org.dromara.common.core.domain.event.ProcessTaskEvent; @@ -14,15 +16,15 @@ 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.dromara.cailiaoshebei.domain.BusTotalsupplyplanAudit; +import org.dromara.cailiaoshebei.service.IBusTotalsupplyplanAuditService; 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 org.dromara.cailiaoshebei.domain.bo.BusTotalsupplyplanBo; +import org.dromara.cailiaoshebei.domain.vo.BusTotalsupplyplanVo; +import org.dromara.cailiaoshebei.domain.BusTotalsupplyplan; +import org.dromara.cailiaoshebei.mapper.BusTotalsupplyplanMapper; +import org.dromara.cailiaoshebei.service.IBusTotalsupplyplanService; import java.util.List; import java.util.Map; @@ -41,6 +43,10 @@ public class BusTotalsupplyplanServiceImpl extends ServiceImpl 0; } + @Override + public MasterDataReqDto masterData(MasterDataReq bo) { + //1、获取主数据 + BusTotalsupplyplanAudit byId = busTotalsupplyplanAuditService.getById(bo.getId()); + MasterDataReqDto masterDataReqDto = BeanUtil.copyProperties(byId, MasterDataReqDto.class); + //2、获取所有主数据 + LambdaQueryWrapper busTotalsupplyplanLambdaQueryWrapper = new LambdaQueryWrapper<>(); + busTotalsupplyplanLambdaQueryWrapper.eq(BusTotalsupplyplan::getBatchNumber, byId.getBatchNumber()); + List busTotalsupplyplans = baseMapper.selectList(busTotalsupplyplanLambdaQueryWrapper); + masterDataReqDto.setSubData(busTotalsupplyplans); + return masterDataReqDto; + } + /** * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) * 正常使用只需#processEvent.flowCode=='leave1' @@ -154,7 +173,11 @@ public class BusTotalsupplyplanServiceImpl extends ServiceImpl { +// /** +// * 获取出入库数据 +// */ +// Page getInventoryList(@Param("bo") MatMaterialsInventoryQueryReq req, @Param("page") Page page); + + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/MatMaterialsInventoryServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/MatMaterialsInventoryServiceImpl.java index 70234dd3..92d8529b 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/MatMaterialsInventoryServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/materials/service/impl/MatMaterialsInventoryServiceImpl.java @@ -313,10 +313,13 @@ public class MatMaterialsInventoryServiceImpl extends ServiceImpl allUsersOfTheDepartment() { + Long deptId = Objects.requireNonNull(LoginHelper.getLoginUser()).getDeptId(); + System.out.println("1!!!! "+deptId); + //获取当前用户的上级部门 + SysDeptVo sysDeptVo = deptService.selectDeptById(deptId); + System.out.println("2!!!! "+sysDeptVo.toString()); + return R.ok(sysDeptVo); + } /** * 查询消息配置列表 @@ -45,17 +71,6 @@ public class MsgConfigController extends BaseController { return msgConfigService.queryPageList(bo, pageQuery); } - /** - * 导出消息配置列表 - */ - @SaCheckPermission("message:config:export") - @Log(title = "消息配置", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(MsgConfigBo bo, HttpServletResponse response) { - List list = msgConfigService.queryList(bo); - ExcelUtil.exportExcel(list, "消息配置", MsgConfigVo.class, response); - } - /** * 获取消息配置详细信息 * @@ -75,8 +90,9 @@ public class MsgConfigController extends BaseController { @Log(title = "消息配置", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody MsgConfigBo bo) { - return toAjax(msgConfigService.insertByBo(bo)); + public R add(@Validated(AddGroup.class) @RequestBody MsgConfigAddReq bo) { + MsgConfigBo msgConfigBo = BeanUtil.copyProperties(bo, MsgConfigBo.class); + return toAjax(msgConfigService.insertByBo(msgConfigBo)); } /** @@ -86,8 +102,9 @@ public class MsgConfigController extends BaseController { @Log(title = "消息配置", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() - public R edit(@Validated(EditGroup.class) @RequestBody MsgConfigBo bo) { - return toAjax(msgConfigService.updateByBo(bo)); + public R edit(@Validated(EditGroup.class) @RequestBody MsgConfigEditReq bo) { + MsgConfigBo msgConfigBo = BeanUtil.copyProperties(bo, MsgConfigBo.class); + return toAjax(msgConfigService.updateByBo(msgConfigBo)); } /** diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/controller/MsgNoticeController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/controller/MsgNoticeController.java new file mode 100644 index 00000000..95a07228 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/controller/MsgNoticeController.java @@ -0,0 +1,132 @@ +package org.dromara.message.controller; + +import java.util.List; +import java.util.Objects; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.message.domain.bo.TheCurrentUserMessageListReq; +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.message.domain.vo.MsgNoticeVo; +import org.dromara.message.domain.bo.MsgNoticeBo; +import org.dromara.message.service.IMsgNoticeService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 消息 + * + * @author Lion Li + * @date 2025-08-13 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/message/notice") +public class MsgNoticeController extends BaseController { + + private final IMsgNoticeService msgNoticeService; + + /** + * 获取当前用户的消息列表 + */ + @SaCheckPermission("message:notice:theCurrentUserMessageList") + @GetMapping("/theCurrentUserMessageList") + public TableDataInfo theCurrentUserMessageList(TheCurrentUserMessageListReq bo, PageQuery pageQuery) { + if (bo.getUserId() == null) { + Long userId = Objects.requireNonNull(LoginHelper.getLoginUser()).getUserId(); + bo.setUserId(userId); + } + return msgNoticeService.theCurrentUserMessageList(bo, pageQuery); + } + + /** + * 变更消息为已读 + */ + @SaCheckPermission("message:notice:readUpdate") + @Log(title = "消息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/readUpdate") + public R readUpdate(@Validated @RequestBody MsgNoticeBo bo) { + return toAjax(msgNoticeService.readUpdate(bo)); + } + + /** + * 查询消息列表 + */ + @SaCheckPermission("message:notice:list") + @GetMapping("/list") + public TableDataInfo list(MsgNoticeBo bo, PageQuery pageQuery) { + return msgNoticeService.queryPageList(bo, pageQuery); + } + + /** + * 导出消息列表 + */ + @SaCheckPermission("message:notice:export") + @Log(title = "消息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(MsgNoticeBo bo, HttpServletResponse response) { + List list = msgNoticeService.queryList(bo); + ExcelUtil.exportExcel(list, "消息", MsgNoticeVo.class, response); + } + + /** + * 获取消息详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("message:notice:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(msgNoticeService.queryById(id)); + } + + /** + * 新增消息 + */ + @SaCheckPermission("message:notice:add") + @Log(title = "消息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody MsgNoticeBo bo) { + return toAjax(msgNoticeService.insertByBo(bo)); + } + + /** + * 修改消息 + */ + @SaCheckPermission("message:notice:edit") + @Log(title = "消息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody MsgNoticeBo bo) { + return toAjax(msgNoticeService.updateByBo(bo)); + } + + /** + * 删除消息 + * + * @param ids 主键串 + */ + @SaCheckPermission("message:notice:remove") + @Log(title = "消息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(msgNoticeService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/MsgNotice.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/MsgNotice.java new file mode 100644 index 00000000..26d4ceb9 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/MsgNotice.java @@ -0,0 +1,78 @@ +package org.dromara.message.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; + +/** + * 消息对象 msg_notice + * + * @author Lion Li + * @date 2025-08-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("msg_notice") +public class MsgNotice extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 接收通知的用户ID + */ + private Long recipientId; + + /** + * 发送通知的用户ID(系统通知 0) + */ + private Long senderId; + + /** + * 配置id + */ + private Long configId; + + /** + * 详情id + */ + private String detailId; + + /** + * 通知内容 + */ + private String content; + + /** + * 查看状态(0未读 1已读) + */ + private String viewStatus; + + /** + * 查看时间 + */ + private Date viewTime; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/bo/MsgConfigAddReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/bo/MsgConfigAddReq.java new file mode 100644 index 00000000..711f8f0f --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/bo/MsgConfigAddReq.java @@ -0,0 +1,50 @@ +package org.dromara.message.domain.bo; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.experimental.Accessors; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; + +import java.io.Serializable; + +/** + * @Author 铁憨憨 + * @Date 2025/8/13 21:40 + * @Version 1.0 + */ + +@Data +@Accessors(chain = true) +public class MsgConfigAddReq implements Serializable { + /** + * 项目ID + */ + @NotNull(message = "项目ID不能为空") + private Long projectId; + + /** + * 消息名称 + */ + @NotNull(message = "消息名称不能为空") + private Long msgName; + + /** + * 消息模板 + */ + @NotBlank(message = "消息模板不能为空") + private String msgContent; + + /** + * 消息标识 + */ + @NotBlank(message = "消息标识不能为空") + private String msgKey; + + /** + * 跳转路由 + */ + @NotBlank(message = "跳转路由不能为空") + private String route; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/bo/MsgConfigEditReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/bo/MsgConfigEditReq.java new file mode 100644 index 00000000..496414c1 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/bo/MsgConfigEditReq.java @@ -0,0 +1,55 @@ +package org.dromara.message.domain.bo; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.experimental.Accessors; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; + +import java.io.Serializable; + +/** + * @Author 铁憨憨 + * @Date 2025/8/13 21:42 + * @Version 1.0 + */ + +@Data +@Accessors(chain = true) +public class MsgConfigEditReq implements Serializable { + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空") + private Long id; + + /** + * 消息名称 + */ + @NotNull(message = "消息名称不能为空") + private Long msgName; + + /** + * 消息模板 + */ + @NotBlank(message = "消息模板不能为空") + private String msgContent; + + /** + * 消息标识 + */ + @NotBlank(message = "消息标识不能为空") + private String msgKey; + + /** + * 跳转路由 + */ + @NotBlank(message = "跳转路由不能为空") + private String route; + + /** + * 通知人 + */ + private String userId; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/bo/MsgNoticeBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/bo/MsgNoticeBo.java new file mode 100644 index 00000000..f622c32c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/bo/MsgNoticeBo.java @@ -0,0 +1,84 @@ +package org.dromara.message.domain.bo; + +import org.dromara.message.domain.MsgNotice; +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; + +/** + * 消息业务对象 msg_notice + * + * @author Lion Li + * @date 2025-08-13 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = MsgNotice.class, reverseConvertGenerate = false) +public class MsgNoticeBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 项目ID + */ + @NotNull(message = "项目ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long projectId; + + /** + * 接收通知的用户ID + */ + @NotNull(message = "接收通知的用户ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long recipientId; + + /** + * 发送通知的用户ID(系统通知 0) + */ + @NotNull(message = "发送通知的用户ID(系统通知 0)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long senderId; + + /** + * 配置id + */ + @NotNull(message = "配置id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long configId; + + /** + * 详情id + */ + @NotNull(message = "详情id不能为空", groups = { AddGroup.class, EditGroup.class }) + private String detailId; + + /** + * 通知内容 + */ + @NotBlank(message = "通知内容不能为空", groups = { AddGroup.class, EditGroup.class }) + private String content; + + /** + * 查看状态(0未读 1已读) + */ + @NotBlank(message = "查看状态(0未读 1已读)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String viewStatus; + + /** + * 查看时间 + */ + private Date viewTime; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/bo/ReadUpdateReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/bo/ReadUpdateReq.java new file mode 100644 index 00000000..2585867f --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/bo/ReadUpdateReq.java @@ -0,0 +1,26 @@ +package org.dromara.message.domain.bo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.experimental.Accessors; +import org.dromara.common.core.validate.EditGroup; + +import java.io.Serializable; + +/** + * @Author 铁憨憨 + * @Date 2025/8/13 22:39 + * @Version 1.0 + */ + +@Data +@Accessors(chain = true) +public class ReadUpdateReq implements Serializable { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/bo/TheCurrentUserMessageListReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/bo/TheCurrentUserMessageListReq.java new file mode 100644 index 00000000..6b49b465 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/bo/TheCurrentUserMessageListReq.java @@ -0,0 +1,34 @@ +package org.dromara.message.domain.bo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * @Author 铁憨憨 + * @Date 2025/8/13 22:14 + * @Version 1.0 + */ + +@Data +@Accessors(chain = true) +public class TheCurrentUserMessageListReq implements Serializable { + + /** + * 查看状态(0未读 1已读 2全部) + */ + private String viewStatus; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 用户ID (不传递默认当前用户) + */ + private Long userId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/dto/SendMsgDto.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/dto/SendMsgDto.java new file mode 100644 index 00000000..36871814 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/dto/SendMsgDto.java @@ -0,0 +1,75 @@ +package org.dromara.message.domain.dto; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.experimental.Accessors; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @Author 铁憨憨 + * @Date 2025/8/13 22:57 + * @Version 1.0 + */ + +@Data +@Accessors(chain = true) +public class SendMsgDto implements Serializable { + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 项目ID + */ + @NotNull(message = "项目ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long projectId; + + /** + * 接收通知的用户ID + */ + @NotNull(message = "接收通知的用户ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private List recipientIds; + + /** + * 发送通知的用户ID(系统通知 0) + */ + @NotNull(message = "发送通知的用户ID(系统通知 0)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long senderId; + + /** + * 配置id + */ + @NotNull(message = "配置id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long configId; + + /** + * 详情id + */ + @NotNull(message = "详情id不能为空", groups = { AddGroup.class, EditGroup.class }) + private String detailId; + + /** + * 通知内容 + */ + @NotBlank(message = "通知内容不能为空", groups = { AddGroup.class, EditGroup.class }) + private String content; + + + /** + * 查看时间 + */ + private Date viewTime; + + /** + * 备注 + */ + private String remark; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/vo/MsgNoticeVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/vo/MsgNoticeVo.java new file mode 100644 index 00000000..5b398172 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/domain/vo/MsgNoticeVo.java @@ -0,0 +1,95 @@ +package org.dromara.message.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.message.domain.MsgNotice; +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; + + + +/** + * 消息视图对象 msg_notice + * + * @author Lion Li + * @date 2025-08-13 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = MsgNotice.class) +public class MsgNoticeVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 接收通知的用户ID + */ + @ExcelProperty(value = "接收通知的用户ID") + private Long recipientId; + + /** + * 发送通知的用户ID(系统通知 0) + */ + @ExcelProperty(value = "发送通知的用户ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "系=统通知,0=") + private Long senderId; + + /** + * 配置id + */ + @ExcelProperty(value = "配置id") + private Long configId; + + /** + * 详情id + */ + @ExcelProperty(value = "详情id") + private String detailId; + + /** + * 通知内容 + */ + @ExcelProperty(value = "通知内容") + private String content; + + /** + * 查看状态(0未读 1已读) + */ + @ExcelProperty(value = "查看状态(0未读 1已读)") + private String viewStatus; + + /** + * 查看时间 + */ + @ExcelProperty(value = "查看时间") + private Date viewTime; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/mapper/MsgNoticeMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/mapper/MsgNoticeMapper.java new file mode 100644 index 00000000..849c18c3 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/mapper/MsgNoticeMapper.java @@ -0,0 +1,15 @@ +package org.dromara.message.mapper; + +import org.dromara.message.domain.MsgNotice; +import org.dromara.message.domain.vo.MsgNoticeVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 消息Mapper接口 + * + * @author Lion Li + * @date 2025-08-13 + */ +public interface MsgNoticeMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/service/IMsgNoticeService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/service/IMsgNoticeService.java new file mode 100644 index 00000000..a890c369 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/service/IMsgNoticeService.java @@ -0,0 +1,92 @@ +package org.dromara.message.service; + +import org.dromara.message.domain.bo.TheCurrentUserMessageListReq; +import org.dromara.message.domain.dto.SendMsgDto; +import org.dromara.message.domain.vo.MsgNoticeVo; +import org.dromara.message.domain.bo.MsgNoticeBo; +import org.dromara.message.domain.MsgNotice; +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.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Collection; +import java.util.List; + +/** + * 消息Service接口 + * + * @author Lion Li + * @date 2025-08-13 + */ +public interface IMsgNoticeService extends IService{ + + /** + * 查询消息 + * + * @param id 主键 + * @return 消息 + */ + MsgNoticeVo queryById(Long id); + + /** + * 分页查询消息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 消息分页列表 + */ + TableDataInfo queryPageList(MsgNoticeBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的消息列表 + * + * @param bo 查询条件 + * @return 消息列表 + */ + List queryList(MsgNoticeBo bo); + + /** + * 新增消息 + * + * @param bo 消息 + * @return 是否新增成功 + */ + Boolean insertByBo(MsgNoticeBo bo); + + /** + * 修改消息 + * + * @param bo 消息 + * @return 是否修改成功 + */ + Boolean updateByBo(MsgNoticeBo bo); + + /** + * 校验并批量删除消息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + + /** + * 获取当前用户的消息列表 + */ + TableDataInfo theCurrentUserMessageList(TheCurrentUserMessageListReq bo, PageQuery pageQuery); + + + /** + * 变更消息为已读 + */ + Boolean readUpdate(MsgNoticeBo bo); + + /** + * 指定用户向指定用户发送消息 + */ + Boolean sendMsg(SendMsgDto bo); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/service/impl/MsgConfigServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/service/impl/MsgConfigServiceImpl.java index edd51b2d..c9942cf1 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/service/impl/MsgConfigServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/service/impl/MsgConfigServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.message.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -90,6 +91,14 @@ public class MsgConfigServiceImpl extends ServiceImpl lqw = Wrappers.lambdaQuery(); + lqw.eq(MsgConfig::getMsgKey, bo.getMsgKey()); + MsgConfig msgConfig = baseMapper.selectOne(lqw); + if (msgConfig != null) { + throw new ServiceException(bo.getMsgKey()+" 消息标识已存在"); + } + //2、新增 MsgConfig add = MapstructUtils.convert(bo, MsgConfig.class); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; @@ -107,6 +116,15 @@ public class MsgConfigServiceImpl extends ServiceImpl lqw = Wrappers.lambdaQuery(); + lqw.eq(MsgConfig::getMsgKey, bo.getMsgKey()); + lqw.ne(MsgConfig::getId, bo.getId()); + MsgConfig msgConfig = baseMapper.selectOne(lqw); + if (msgConfig != null) { + throw new ServiceException(bo.getMsgKey()+" 消息标识已存在"); + } + //2、修改 MsgConfig update = MapstructUtils.convert(bo, MsgConfig.class); validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/service/impl/MsgNoticeServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/service/impl/MsgNoticeServiceImpl.java new file mode 100644 index 00000000..e390ab35 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/message/service/impl/MsgNoticeServiceImpl.java @@ -0,0 +1,195 @@ +package org.dromara.message.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.exception.ServiceException; +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.sse.dto.SseMessageDto; +import org.dromara.common.sse.utils.SseMessageUtils; +import org.dromara.message.domain.bo.TheCurrentUserMessageListReq; +import org.dromara.message.domain.dto.SendMsgDto; +import org.springframework.stereotype.Service; +import org.dromara.message.domain.bo.MsgNoticeBo; +import org.dromara.message.domain.vo.MsgNoticeVo; +import org.dromara.message.domain.MsgNotice; +import org.dromara.message.mapper.MsgNoticeMapper; +import org.dromara.message.service.IMsgNoticeService; + +import java.util.*; + +/** + * 消息Service业务层处理 + * + * @author Lion Li + * @date 2025-08-13 + */ +@RequiredArgsConstructor +@Service +public class MsgNoticeServiceImpl extends ServiceImpl implements IMsgNoticeService { + + private final MsgNoticeMapper baseMapper; + + /** + * 查询消息 + * + * @param id 主键 + * @return 消息 + */ + @Override + public MsgNoticeVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询消息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 消息分页列表 + */ + @Override + public TableDataInfo queryPageList(MsgNoticeBo 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(MsgNoticeBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(MsgNoticeBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(MsgNotice::getId); + lqw.eq(bo.getProjectId() != null, MsgNotice::getProjectId, bo.getProjectId()); + lqw.eq(bo.getRecipientId() != null, MsgNotice::getRecipientId, bo.getRecipientId()); + lqw.eq(bo.getSenderId() != null, MsgNotice::getSenderId, bo.getSenderId()); + lqw.eq(bo.getConfigId() != null, MsgNotice::getConfigId, bo.getConfigId()); + lqw.eq(bo.getDetailId() != null, MsgNotice::getDetailId, bo.getDetailId()); + lqw.eq(StringUtils.isNotBlank(bo.getContent()), MsgNotice::getContent, bo.getContent()); + lqw.eq(StringUtils.isNotBlank(bo.getViewStatus()), MsgNotice::getViewStatus, bo.getViewStatus()); + lqw.eq(bo.getViewTime() != null, MsgNotice::getViewTime, bo.getViewTime()); + return lqw; + } + + /** + * 新增消息 + * + * @param bo 消息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(MsgNoticeBo bo) { + MsgNotice add = MapstructUtils.convert(bo, MsgNotice.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改消息 + * + * @param bo 消息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(MsgNoticeBo bo) { + MsgNotice update = MapstructUtils.convert(bo, MsgNotice.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(MsgNotice entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除消息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } + + + @Override + public TableDataInfo theCurrentUserMessageList(TheCurrentUserMessageListReq bo, PageQuery pageQuery) { + MsgNoticeBo msgNotice = new MsgNoticeBo(); + //消息类型不为2 viewStatus 就查询指定类型 + if (!Objects.equals(bo.getViewStatus(), "2")) { + msgNotice.setViewStatus(bo.getViewStatus()); + } + msgNotice.setProjectId(bo.getProjectId()); + msgNotice.setRecipientId(bo.getUserId()); + LambdaQueryWrapper lqw = buildQueryWrapper(msgNotice); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + + @Override + public Boolean readUpdate(MsgNoticeBo bo) { + MsgNotice me = new MsgNotice(); + me.setId(bo.getId()); + me.setViewStatus("1"); + return this.save(me); + } + + /** + * 指定用户向指定(一个或多个)用户发送消息 + */ + @Override + public Boolean sendMsg(SendMsgDto bo) { + List msgNotices = new ArrayList<>(); + List recipientIds = bo.getRecipientIds(); + for (Long recipientId : recipientIds) { + MsgNotice me = new MsgNotice(); + me.setProjectId(bo.getProjectId()); + me.setRecipientId(recipientId); + me.setSenderId(bo.getSenderId()); + me.setConfigId(bo.getConfigId()); + me.setDetailId(bo.getDetailId()); + me.setContent(bo.getContent()); + msgNotices.add(me); + } + //批量保存数据 + boolean b = this.saveBatch(msgNotices); + if(b){ + SseMessageDto messageDto = new SseMessageDto(); + messageDto.setUserIds(recipientIds); + messageDto.setMessage(bo.getContent()); + SseMessageUtils.publishMessage(messageDto); + }else{ + throw new RuntimeException("消息发送失败"); + } + return b; + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java index 252082f3..2ba7199f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java @@ -235,4 +235,6 @@ public interface ISysUserService { * @return 结果 */ List selectUserListByPostList(List postIds); + + } 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 index ded87c1d..053b8a51 100644 --- 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 @@ -2,6 +2,6 @@ - + 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 index 656a500d..cb688eab 100644 --- 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 @@ -2,6 +2,6 @@ - + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/message/MsgNoticeMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/message/MsgNoticeMapper.xml new file mode 100644 index 00000000..deda4fca --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/message/MsgNoticeMapper.xml @@ -0,0 +1,7 @@ + + + + +