Forráskód Böngészése

feat(controller): 项目管理静态证据-上传的文件改为显示“文件名.文件格式”了

lixuesong 4 éve
szülő
commit
7f34efca50

+ 15 - 0
db/v2.0/0713.sql

@@ -0,0 +1,15 @@
+-- 新增 项目管理-静态证据子表
+CREATE TABLE `wm_project_evidence` (
+   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
+   `project_id` int(11) NOT NULL COMMENT '项目id',
+   `filename` VARCHAR(64) NOT NULL COMMENT '文件名称',
+   `url` varchar(512) NOT NULL COMMENT '静态证据url',
+   `type` VARCHAR(10) NOT NULL COMMENT '文件类型',
+   `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+   `create_user` int(11) DEFAULT NULL COMMENT '创建人',
+   PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目管理-静态证据子表';
+-- 项目管理表 删除字段
+ALTER TABLE `wm_project`
+    DROP COLUMN `evidence_url`;
+

+ 9 - 37
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmProjectController.java

@@ -69,30 +69,18 @@ public class WmProjectController {
 	 * 分页查询项目
 	 *
 	 * @param page 分页对象
-	 * @param wmProject 项目对象
+	 * @param projectName 项目名称
+	 * @param delegate 委托方
 	 * @return 项目分页列表
 	 */
 	@GetMapping("/page")
 	@ApiOperation(value = "分页查询项目", notes = "分页查询项目")
-	public R page(Page page, WmProject wmProject) {
+	public R page(Page page, String projectName, String delegate) {
 		try {
-			LambdaQueryWrapper<WmProject> queryWrapper = Wrappers.<WmProject>lambdaQuery();
-			if (wmProject != null) {
-				// 查询条件
-				if (StringUtils.isNotBlank(wmProject.getProjectName())) {
-					// 项目名称
-					queryWrapper.like(WmProject::getProjectName, wmProject.getProjectName());
-				}
-				if (StringUtils.isNotBlank(wmProject.getDelegate())) {
-					// 委托方
-					queryWrapper.like(WmProject::getDelegate, wmProject.getDelegate());
-				}
-			}
-			queryWrapper.eq(WmProject::getDeptId, SecurityUtils.getUser().getDeptId());
-			queryWrapper.orderByDesc(WmProject::getCreateTime);
-			IPage<WmProject> pageResult = wmProjectService.page(page, queryWrapper);
 
+			IPage<WmProject> pageResult = wmProjectService.listProjectPage(page, projectName, delegate);
 			List<WmProject> records = pageResult.getRecords();
+
 			if (CollectionUtil.isNotEmpty(records)) {
 				records.forEach(project -> {
 					// 判断项目编号projectNumber是不是只读
@@ -130,7 +118,7 @@ public class WmProjectController {
 	@ApiOperation(value = "根据id查询", notes = "根据id查询")
 	public R getById(@PathVariable("projectId") Integer projectId) {
 		try {
-			WmProject wmProject = wmProjectService.getById(projectId);
+			WmProject wmProject = wmProjectService.getProjectById(projectId);
 			// 判断项目编号projectNumber是不是只读
 			if (wmProject != null && StringUtils.isNotBlank(wmProject.getProjectNumber())) {
 				// 查询上传证据链的积分包,是否已经关联了这个项目编号
@@ -178,16 +166,7 @@ public class WmProjectController {
 			if (extCount > 0) {
 				return R.failed("项目名称已存在");
 			}
-			// 当前时间
-			LocalDateTime now = LocalDateTime.now();
-			// 当前用户
-			Integer currentUserId = user.getId();
-			wmProject.setDeptId(deptId);
-			wmProject.setCreateTime(now);
-			wmProject.setCreateUser(currentUserId);
-			wmProject.setUpdateTime(now);
-			wmProject.setUpdateUser(currentUserId);
-			wmProjectService.save(wmProject);
+			wmProjectService.saveProject(wmProject);
 			return R.ok();
 		} catch (Exception e) {
 			log.error("新增项目失败", e);
@@ -234,14 +213,7 @@ public class WmProjectController {
 					return R.failed("项目编号已关联积分包,不能修改");
 				}
 			}
-			// 当前时间
-			LocalDateTime now = LocalDateTime.now();
-			// 当前用户
-			Integer currentUserId = user.getId();
-			wmProject.setDeptId(deptId);
-			wmProject.setUpdateTime(now);
-			wmProject.setUpdateUser(currentUserId);
-			wmProjectService.updateById(wmProject);
+			wmProjectService.updateProjectById(wmProject);
 			return R.ok();
 		} catch (Exception e) {
 			log.error("更新项目失败", e);
@@ -277,7 +249,7 @@ public class WmProjectController {
 					return R.failed("项目编号已关联积分包,不能删除");
 				}
 			}
-			wmProjectService.removeById(projectId);
+			wmProjectService.removeProjectById(projectId);
 			return R.ok();
 		} catch (Exception e) {
 			log.error("删除项目失败", e);

+ 7 - 8
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmProject.java

@@ -10,9 +10,9 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * CRO关联的项目管理表
@@ -60,13 +60,6 @@ public class WmProject extends Model<WmProject> {
 	@NotBlank(groups = BaseEntity.Create.class, message = "委托方不能为空")
 	private String delegate;
 
-	/**
-	 * 静态证据url
-	 */
-	@ApiModelProperty(value="静态证据url")
-	@NotEmpty(groups = BaseEntity.Create.class, message = "静态证据不能为空")
-	private String[] evidenceUrl;
-
 	/**
 	 * 项目签约时间
 	 */
@@ -109,4 +102,10 @@ public class WmProject extends Model<WmProject> {
 	 */
 	@TableField(exist = false)
 	private Integer readOnlyFlag;
+
+	/**
+	 * 静态证据列表
+	 */
+	@TableField(exist = false)
+	private List<WmProjectEvidence> evidenceList;
 }

+ 65 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmProjectEvidence.java

@@ -0,0 +1,65 @@
+package com.qunzhixinxi.hnqz.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+
+/**
+ * 项目管理-静态证据子表
+ *
+ * @author lixuesong
+ * @date 2021年07月13日 10:28
+ */
+@Data
+@TableName("wm_project_evidence")
+@EqualsAndHashCode(callSuper = true)
+public class WmProjectEvidence extends Model<WmProjectEvidence> {
+
+	/**
+	 * 主键id
+	 */
+	@TableId
+	@ApiModelProperty(value="主键id")
+	private Integer id;
+
+	/**
+	 * 项目id
+	 */
+	@ApiModelProperty(value="项目id")
+	private Integer projectId;
+
+	/**
+	 * 文件名称
+	 */
+	@ApiModelProperty(value="文件名称")
+	private String filename;
+
+	/**
+	 * 静态证据url
+	 */
+	@ApiModelProperty(value="静态证据url")
+	private String url;
+
+	/**
+	 * 文件类型
+	 */
+	@ApiModelProperty(value="文件类型")
+	private String type;
+
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value="创建时间")
+	private LocalDateTime createTime;
+
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value="创建人")
+	private Integer createUser;
+}

+ 25 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmProjectEvidenceMapper.java

@@ -0,0 +1,25 @@
+package com.qunzhixinxi.hnqz.admin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qunzhixinxi.hnqz.admin.entity.WmProjectEvidence;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 项目管理-静态证据子表mapper
+ *
+ * @author lixuesong
+ * @date 2021年07月13日 10:42
+ */
+@Mapper
+public interface WmProjectEvidenceMapper extends BaseMapper<WmProjectEvidence> {
+
+	/**
+	 * 根据项目id查询
+	 *
+	 * @param projectId
+	 * @return
+	 */
+	List<WmProjectEvidence> listByProjectId(Integer projectId);
+}

+ 21 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmProjectMapper.java

@@ -1,8 +1,11 @@
 package com.qunzhixinxi.hnqz.admin.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qunzhixinxi.hnqz.admin.entity.WmProject;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * CRO关联的项目管理表
@@ -12,4 +15,22 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface WmProjectMapper extends BaseMapper<WmProject> {
+
+	/**
+	 * 分页查询
+	 *
+	 * @param page
+	 * @param projectName
+	 * @param delegate
+	 * @return
+	 */
+	IPage<WmProject> listProjectPage(Page page, @Param("projectName") String projectName, @Param("delegate") String delegate);
+
+	/**
+	 * 根据id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	WmProject getProjectById(@Param("id") Integer id);
 }

+ 41 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmProjectService.java

@@ -1,5 +1,7 @@
 package com.qunzhixinxi.hnqz.admin.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qunzhixinxi.hnqz.admin.entity.WmProject;
 
@@ -10,4 +12,43 @@ import com.qunzhixinxi.hnqz.admin.entity.WmProject;
  * @date 2021年06月21日 13:18
  */
 public interface WmProjectService extends IService<WmProject> {
+
+	/**
+	 * 分页查询
+	 *
+	 * @param page
+	 * @param projectName
+	 * @param delegate
+	 * @return
+	 */
+	IPage<WmProject> listProjectPage(Page page, String projectName, String delegate);
+
+	/**
+	 * 根据id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	WmProject getProjectById(Integer id);
+
+	/**
+	 * 保存项目
+	 *
+	 * @param wmProject
+	 */
+	void saveProject(WmProject wmProject);
+
+	/**
+	 * 更新项目
+	 *
+	 * @param wmProject
+	 */
+	void updateProjectById(WmProject wmProject);
+
+	/**
+	 * 删除项目
+	 *
+	 * @param projectId
+	 */
+	void removeProjectById(Integer projectId);
 }

+ 127 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmProjectServiceImpl.java

@@ -1,12 +1,25 @@
 package com.qunzhixinxi.hnqz.admin.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qunzhixinxi.hnqz.admin.entity.WmProject;
+import com.qunzhixinxi.hnqz.admin.entity.WmProjectEvidence;
+import com.qunzhixinxi.hnqz.admin.mapper.WmProjectEvidenceMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmProjectMapper;
 import com.qunzhixinxi.hnqz.admin.service.WmProjectService;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * CRO关联的项目管理表
@@ -18,4 +31,118 @@ import org.springframework.stereotype.Service;
 @Service
 @AllArgsConstructor
 public class WmProjectServiceImpl extends ServiceImpl<WmProjectMapper, WmProject> implements WmProjectService {
+
+	private final WmProjectMapper wmProjectMapper;
+	private final WmProjectEvidenceMapper wmProjectEvidenceMapper;
+
+	/**
+	 * 分页查询
+	 *
+	 * @param page
+	 * @param projectName
+	 * @param delegate
+	 * @return
+	 */
+	@Override
+	public IPage<WmProject> listProjectPage(Page page, String projectName, String delegate) {
+		return wmProjectMapper.listProjectPage(page, projectName, delegate);
+	}
+
+	/**
+	 * 根据id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	@Override
+	public WmProject getProjectById(Integer id) {
+		return wmProjectMapper.getProjectById(id);
+	}
+
+	/**
+	 * 保存项目
+	 *
+	 * @param wmProject
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void saveProject(WmProject wmProject) {
+		HnqzUser user = SecurityUtils.getUser();
+		// 当前时间
+		LocalDateTime now = LocalDateTime.now();
+		// 当前用户
+		Integer currentUserId = user.getId();
+		wmProject.setDeptId(user.getDeptId());
+		wmProject.setCreateTime(now);
+		wmProject.setCreateUser(currentUserId);
+		wmProject.setUpdateTime(now);
+		wmProject.setUpdateUser(currentUserId);
+		// 保存主表
+		this.save(wmProject);
+		// 保存静态证据字表
+		if (CollectionUtil.isNotEmpty(wmProject.getEvidenceList())) {
+			wmProject.getEvidenceList().forEach(projectEvidence -> {
+				projectEvidence.setProjectId(wmProject.getId());
+				projectEvidence.setCreateTime(now);
+				projectEvidence.setCreateUser(currentUserId);
+			});
+			// 先删除旧数据
+			List<Integer> evidenceIdList = wmProject.getEvidenceList().stream()
+					.map(WmProjectEvidence::getId)
+					.collect(Collectors.toList());
+			wmProjectEvidenceMapper.deleteBatchIds(evidenceIdList);
+			// 再保存
+			wmProject.getEvidenceList().forEach(projectEvidence -> wmProjectEvidenceMapper.insert(projectEvidence));
+		}
+	}
+
+	/**
+	 * 更新项目
+	 *
+	 * @param wmProject
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateProjectById(WmProject wmProject) {
+		HnqzUser user = SecurityUtils.getUser();
+		// 当前时间
+		LocalDateTime now = LocalDateTime.now();
+		// 当前用户
+		Integer currentUserId = user.getId();
+		wmProject.setDeptId(user.getDeptId());
+		wmProject.setUpdateTime(now);
+		wmProject.setUpdateUser(currentUserId);
+		// 保存主表
+		this.updateById(wmProject);
+		// 保存静态证据字表
+		if (CollectionUtil.isNotEmpty(wmProject.getEvidenceList())) {
+			wmProject.getEvidenceList().forEach(projectEvidence -> {
+				projectEvidence.setProjectId(wmProject.getId());
+				projectEvidence.setCreateTime(now);
+				projectEvidence.setCreateUser(currentUserId);
+			});
+			// 先删除旧数据
+			List<Integer> evidenceIdList = wmProject.getEvidenceList().stream()
+					.map(WmProjectEvidence::getId)
+					.collect(Collectors.toList());
+			wmProjectEvidenceMapper.deleteBatchIds(evidenceIdList);
+			// 再保存
+			wmProject.getEvidenceList().forEach(projectEvidence -> wmProjectEvidenceMapper.insert(projectEvidence));
+		}
+	}
+
+	/**
+	 * 删除项目
+	 *
+	 * @param projectId
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void removeProjectById(Integer projectId) {
+		// 删除主表数据
+		this.removeById(projectId);
+		// 删除子表数据
+		wmProjectEvidenceMapper.delete(Wrappers.<WmProjectEvidence>lambdaQuery()
+				.eq(WmProjectEvidence::getProjectId, projectId));
+	}
 }

+ 25 - 0
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmProjectEvidenceMapper.xml

@@ -0,0 +1,25 @@
+<?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.qunzhixinxi.hnqz.admin.mapper.WmProjectEvidenceMapper" >
+	<resultMap id="BaseResultMap" type="com.qunzhixinxi.hnqz.admin.entity.WmProjectEvidence" >
+		<result column="id" property="id" jdbcType="INTEGER" />
+		<result column="project_id" property="projectId" jdbcType="INTEGER" />
+		<result column="filename" property="filename" jdbcType="VARCHAR" />
+		<result column="url" property="url" jdbcType="VARCHAR" />
+		<result column="type" property="type" jdbcType="VARCHAR" />
+		<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
+		<result column="create_user" property="createUser" jdbcType="INTEGER" />
+	</resultMap>
+
+	<!-- 根据项目id查询 -->
+	<select id="listByProjectId" resultMap="BaseResultMap">
+		SELECT
+			*
+		FROM
+			wm_project_evidence
+		WHERE
+			project_id = #{projectId}
+		ORDER BY
+			create_time DESC
+	</select>
+</mapper>

+ 24 - 1
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmProjectMapper.xml

@@ -6,13 +6,36 @@
 		<result column="project_number" property="projectNumber" jdbcType="VARCHAR" />
 		<result column="project_name" property="projectName" jdbcType="VARCHAR" />
 		<result column="delegate" property="delegate" jdbcType="VARCHAR" />
-		<result column="evidence_url" property="evidenceUrl" jdbcType="VARCHAR" />
 		<result column="sign_time" property="signTime" jdbcType="TIMESTAMP" />
 		<result column="remark" property="remark" jdbcType="VARCHAR" />
 		<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
 		<result column="create_user" property="createUser" jdbcType="INTEGER" />
 		<result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
 		<result column="update_user" property="updateUser" jdbcType="INTEGER" />
+		<!-- 根据项目id查询静态证据子表数据 -->
+		<collection property="evidenceList" ofType="com.qunzhixinxi.hnqz.admin.entity.WmProjectEvidence"
+					select="com.qunzhixinxi.hnqz.admin.mapper.WmProjectEvidenceMapper.listByProjectId" column="id"></collection>
 	</resultMap>
 
+	<!-- 分页查询 -->
+	<select id="listProjectPage" resultMap="BaseResultMap">
+		SELECT
+			*
+		FROM
+			wm_project
+		<where>
+			<if test="projectName != null and projectName != ''">
+				AND project_name = CONCAT('%',#{projectName},'%')
+			</if>
+			<if test="delegate != null and delegate != ''">
+				AND delegate = CONCAT('%',#{delegate},'%')
+			</if>
+		</where>
+		ORDER BY create_time DESC
+	</select>
+
+	<!-- 根据id查询 -->
+	<select id="getProjectById" resultMap="BaseResultMap">
+		SELECT * FROM wm_project WHERE id = #{id}
+	</select>
 </mapper>