business/src/main/java/com/ycl/controller/IndexController.java
@@ -1,8 +1,11 @@ package com.ycl.controller; import com.ycl.common.core.controller.BaseController; import com.ycl.common.core.domain.R; import com.ycl.common.core.page.TableDataInfo; import com.ycl.domain.entity.AuditHistory; import com.ycl.domain.vo.*; import com.ycl.service.AuditHistoryService; import com.ycl.service.ProjectInfoService; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; @@ -17,11 +20,15 @@ @RequiredArgsConstructor @RestController @RequestMapping("/") public class IndexController { public class IndexController extends BaseController { @Autowired private ProjectInfoService projectInfoService; @Autowired private AuditHistoryService auditHistoryService; /** * 项目数量统计 @@ -49,7 +56,18 @@ */ @GetMapping("/audit-message") public TableDataInfo<Object> auditMessage(PageQuery pageQuery) { return null; AuditHistory auditHistory = new AuditHistory(); auditHistory.setTaskId("001"); auditHistory.setTaskDefinitionKey("key"); auditHistory.setViewer("张三"); auditHistory.setCommitDept("部门1"); auditHistory.setAuditType("01"); auditHistory.setIsRead("0"); auditHistory.setBusinessKey("12"); auditHistory.setBusinessTable("t_plan"); auditHistory.setContent("消息回复"); // auditHistoryService.save(auditHistory); return getDataTable(auditHistoryService.list()); } /** business/src/main/java/com/ycl/domain/entity/AuditHistory.java
New file @@ -0,0 +1,25 @@ package com.ycl.domain.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.ycl.system.domain.base.AbsEntity; import lombok.Data; @Data @TableName("t_audit_history") public class AuditHistory extends AbsEntity { private String taskId; private String taskDefinitionKey; private String viewer; private String commitDept; /** * 1:提交,2:审核,3:驳回,4:转交 */ private String auditType; /** * 是否阅读(0:未读,1:已读) */ private String isRead; private String businessKey; private String businessTable; private String content; } business/src/main/java/com/ycl/domain/entity/File.java
@@ -1,9 +1,7 @@ package com.ycl.domain.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.*; import com.ycl.common.enums.business.FileTypeEnum; import com.ycl.system.domain.base.AbsEntity; import lombok.Data; @@ -22,8 +20,6 @@ private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.ASSIGN_ID) private Integer id; /** * 文件路径 */ @@ -35,7 +31,8 @@ /** * 文件分类 */ private String type; @TableField(value = "type") private FileTypeEnum type; /** * 文件名 */ business/src/main/java/com/ycl/domain/vo/ProjectInfoVO.java
@@ -1,5 +1,7 @@ package com.ycl.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.ycl.domain.entity.File; import com.ycl.domain.entity.ProjectInfo; import com.ycl.system.domain.base.AbsVo; import io.swagger.annotations.ApiModel; @@ -93,14 +95,17 @@ /** 立项时间 */ @ApiModelProperty("立项时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createProjectTime; /** 计划开工时间 */ @ApiModelProperty("计划开工时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date planStartTime; /** 计划竣工时间 */ @ApiModelProperty("计划竣工时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date planCompleteTime; /** 中标单位 */ @@ -113,6 +118,7 @@ /** 中标时间 */ @ApiModelProperty("中标时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date winTime; /** 详细地址 */ @@ -147,6 +153,13 @@ @ApiModelProperty("创建人") private Long createBy; /** 状态码 */ @ApiModelProperty("状态码") private String projectColorCode; @ApiModelProperty("文件") private List<File> fileList; public static ProjectInfoVO getVoByEntity(@NonNull ProjectInfo entity, ProjectInfoVO vo) { if(vo == null) { vo = new ProjectInfoVO(); business/src/main/java/com/ycl/mapper/AuditHistoryMapper.java
New file @@ -0,0 +1,16 @@ package com.ycl.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ycl.domain.entity.AuditHistory; import com.ycl.domain.entity.File; import org.apache.ibatis.annotations.Mapper; /** * 审核记录 Mapper 接口 * */ @Mapper public interface AuditHistoryMapper extends BaseMapper<AuditHistory> { } business/src/main/java/com/ycl/mapper/ProjectInfoMapper.java
@@ -22,7 +22,7 @@ * @param id * @return */ ProjectInfoVO getById(Integer id); ProjectInfo getById(Integer id); /** * 分页 business/src/main/java/com/ycl/service/AuditHistoryService.java
New file @@ -0,0 +1,12 @@ package com.ycl.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.domain.entity.AuditHistory; /** * 审核记录 服务类 */ public interface AuditHistoryService extends IService<AuditHistory> { } business/src/main/java/com/ycl/service/impl/AuditHistoryServiceImpl.java
New file @@ -0,0 +1,22 @@ package com.ycl.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.common.base.Result; import com.ycl.domain.entity.AuditHistory; import com.ycl.mapper.AuditHistoryMapper; import com.ycl.service.AuditHistoryService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.util.Assert; import java.util.List; /** * 审核记录 服务实现类 * */ @Service @RequiredArgsConstructor public class AuditHistoryServiceImpl extends ServiceImpl<AuditHistoryMapper, AuditHistory> implements AuditHistoryService { } business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
@@ -1,15 +1,20 @@ package com.ycl.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.common.base.Result; import com.ycl.common.enums.business.FileTypeEnum; import com.ycl.common.utils.SecurityUtils; import com.ycl.domain.entity.File; import com.ycl.domain.entity.ProjectInfo; import com.ycl.domain.form.ProjectInfoForm; import com.ycl.domain.query.ProjectInfoQuery; import com.ycl.domain.vo.*; import com.ycl.framework.utils.PageUtil; import com.ycl.mapper.FileMapper; import com.ycl.mapper.ProjectInfoMapper; import com.ycl.service.FileService; import com.ycl.service.ProjectInfoService; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; @@ -34,7 +39,8 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, ProjectInfo> implements ProjectInfoService { private final ProjectInfoMapper projectInfoMapper; private final FileService fileService; private final FileMapper fileMapper; /** * 添加 * @@ -46,10 +52,17 @@ public Result add(ProjectInfoForm form) { //添加基本信息 ProjectInfo entity = ProjectInfoForm.getEntityByForm(form, null); // baseMapper.insert(entity); Long userId = SecurityUtils.getUserId(); entity.setCreateBy(userId); entity.setUpdateBy(userId); baseMapper.insert(entity); //添加文件 List<File> fileList = form.getFileList(); fileList.forEach(item->{ item.setBusId(entity.getId()); item.setType(FileTypeEnum.PROJECT_INFO); }); fileService.saveBatch(fileList); return Result.ok("添加成功"); } @@ -60,12 +73,28 @@ * @return */ @Override @Transactional(rollbackFor = Exception.class) public Result update(ProjectInfoForm form) { ProjectInfo entity = baseMapper.selectById(form.getId()); // 为空抛IllegalArgumentException,做全局异常处理 Assert.notNull(entity, "记录不存在"); BeanUtils.copyProperties(form, entity); ProjectInfoForm.getEntityByForm(form,entity); Long userId = SecurityUtils.getUserId(); entity.setUpdateBy(userId); List<File> fileList = form.getFileList(); fileList.forEach(item->{ item.setBusId(entity.getId()); item.setType(FileTypeEnum.PROJECT_INFO); }); //删除原有文件 QueryWrapper<File> fileQueryWrapper = new QueryWrapper<>(); fileQueryWrapper.eq("type",FileTypeEnum.PROJECT_INFO.getType()); fileQueryWrapper.eq("bus_id",entity.getId()); fileMapper.delete(fileQueryWrapper); //替换成现有 fileService.saveBatch(fileList); //更新项目信息 baseMapper.updateById(entity); return Result.ok("修改成功"); } @@ -77,6 +106,7 @@ * @return */ @Override //TODO:待完善 public Result remove(List<String> ids) { baseMapper.deleteBatchIds(ids); return Result.ok("删除成功"); @@ -89,6 +119,7 @@ * @return */ @Override //TODO:待完善 public Result removeById(String id) { baseMapper.deleteById(id); return Result.ok("删除成功"); @@ -102,9 +133,17 @@ */ @Override public Result page(ProjectInfoQuery query) { IPage<ProjectInfoVO> page = PageUtil.getPage(query, ProjectInfoVO.class); IPage<ProjectInfo> page = PageUtil.getPage(query, ProjectInfo.class); baseMapper.getPage(page, query); return Result.ok().data(page.getRecords()).total(page.getTotal()); List<ProjectInfo> records = page.getRecords(); List<ProjectInfoVO> list = records.stream() .map(entity -> { ProjectInfoVO vo = ProjectInfoVO.getVoByEntity(entity, null); vo.setProjectColorCode("green"); return vo; }) .collect(Collectors.toList()); return Result.ok().data(list).total(page.getTotal()); } /** @@ -115,8 +154,14 @@ */ @Override public Result detail(Integer id) { ProjectInfoVO vo = baseMapper.getById(id); Assert.notNull(vo, "记录不存在"); ProjectInfo entity = baseMapper.getById(id); Assert.notNull(entity, "记录不存在"); ProjectInfoVO vo = ProjectInfoVO.getVoByEntity(entity, null); QueryWrapper<File> fileQueryWrapper = new QueryWrapper<>(); fileQueryWrapper.eq("type",FileTypeEnum.PROJECT_INFO.getType()); fileQueryWrapper.eq("bus_id",vo.getId()); List<File> files = fileMapper.selectList(fileQueryWrapper); vo.setFileList(files); return Result.ok().data(vo); } business/src/main/resources/mapper/AuditHistoryMapper.xml
New file @@ -0,0 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ycl.mapper.AuditHistoryMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ycl.domain.entity.AuditHistory"> <result column="task_id" property="taskId" /> <result column="task_definition_key" property="taskDefinitionKey" /> <result column="viewer" property="viewer" /> <result column="commit_dept" property="commitDept" /> <result column="audit_type" property="auditType" /> <result column="is_read" property="isRead" /> <result column="business_key" property="businessKey" /> <result column="business_table" property="businessTable" /> <result column="content" property="content" /> </resultMap> </mapper> business/src/main/resources/mapper/ProgressPlanMapper.xml
@@ -13,12 +13,6 @@ <result column="gmt_update_time" property="gmtUpdateTime" /> </resultMap> <select id="getById" resultMap="BaseResultMap"> SELECT TPP.project_info_id, business/src/main/resources/mapper/ProjectProcessMapper.xml
@@ -14,9 +14,9 @@ <result column="invest_type" property="investType" /> <result column="project_phase" property="projectPhase" /> <result column="tag" property="tag" /> <result column="competent_department" property="competentDepartment" /> <!-- <result column="competent_department" property="competentDepartment" />--> <result column="area_code" property="areaCode" /> <result column="management_centralization" property="managementCentralization" /> <!-- <result column="management_centralization" property="managementCentralization" />--> <result column="project_approval_type" property="projectApprovalType" /> <result column="investment_catalogue" property="investmentCatalogue" /> <result column="importance_type" property="importanceType" /> @@ -41,9 +41,6 @@ <result column="flowable_process_id" property="flowableProcessId" /> <!-- <association property="id" column=""--> </resultMap> common/pom.xml
@@ -16,7 +16,11 @@ </description> <dependencies> <!-- MybatisPlus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> </dependency> <!-- lombok --> <dependency> <groupId>org.projectlombok</groupId> common/src/main/java/com/ycl/common/enums/business/FileTypeEnum.java
New file @@ -0,0 +1,27 @@ package com.ycl.common.enums.business; import com.baomidou.mybatisplus.annotation.EnumValue; import com.fasterxml.jackson.annotation.JsonValue; import lombok.Getter; /** * 文件类型枚举 * * @author:flq * @date:2024/11/27 18:21 */ @Getter public enum FileTypeEnum { PROJECT_INFO("project_info", "项目基本信息"); @EnumValue // 标明该字段存入数据库 private final String type; @JsonValue // 标明在转JSON时使用该字段 private final String desc; FileTypeEnum(String type, String desc) { this.type = type; this.desc = desc; } } start/src/main/resources/application.yml
@@ -5,7 +5,7 @@ # 实体扫描,多个package用逗号或者分号分隔 typeAliasesPackage: com.ycl.**.domain configuration: default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler # 通用枚举处理器 default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler # 通用枚举处理器 # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 日志打印 global-config: db-config: system/pom.xml
@@ -28,11 +28,6 @@ <artifactId>easyexcel</artifactId> </dependency> <!-- MybatisPlus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> </dependency> <!-- 验证码 --> <dependency> system/src/main/java/com/ycl/system/domain/base/AbsEntity.java
@@ -17,8 +17,8 @@ private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.ASSIGN_ID) private Integer id; @TableId(value = "id", type = IdType.AUTO) private Long id; /** 创建时间 */ @TableField(value = "gmt_create", fill = FieldFill.INSERT) system/src/main/java/com/ycl/system/domain/base/AbsVo.java
@@ -13,7 +13,7 @@ public abstract class AbsVo { @ApiModelProperty("id") private Integer id; private Long id; @ApiModelProperty("创建时间") private Date gmtCreate;