add:工作组在研项目

This commit is contained in:
zhangqinlin
2021-12-14 17:16:40 +08:00
parent 0a36ed34ec
commit eb660dc66c
6 changed files with 254 additions and 63 deletions
@@ -2,6 +2,8 @@ package com.jero.project.controller;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@@ -9,14 +11,16 @@ import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog; import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.query.QueryGenerator; import com.jero.modules.oss.service.IOSSFileService;
import com.jero.project.entity.PayResearchProject; import com.jero.project.entity.PayResearchProject;
import com.jero.project.service.IPayResearchProjectService; import com.jero.project.service.IPayResearchProjectService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -36,13 +40,15 @@ public class PayResearchProjectController extends JeroController<PayResearchProj
@Autowired @Autowired
private IPayResearchProjectService payResearchProjectService; private IPayResearchProjectService payResearchProjectService;
@Autowired
private IOSSFileService iossFileService;
/** /**
* 分页列表查询 * 分页列表查询
* *
* @param payResearchProject * @param payResearchProject
* @param pageNo * @param pageNo
* @param pageSize * @param pageSize
* @param req * @param
* @return * @return
*/ */
@AutoLog(value = "在研项目-分页列表查询") @AutoLog(value = "在研项目-分页列表查询")
@@ -50,11 +56,19 @@ public class PayResearchProjectController extends JeroController<PayResearchProj
@GetMapping(value = "/list") @GetMapping(value = "/list")
public Result<?> queryPageList(PayResearchProject payResearchProject, public Result<?> queryPageList(PayResearchProject payResearchProject,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize
HttpServletRequest req) { ) {
QueryWrapper<PayResearchProject> queryWrapper = QueryGenerator.initQueryWrapper(payResearchProject, req.getParameterMap()); QueryWrapper<PayResearchProject> queryWrapper = new QueryWrapper<>();
if(StringUtils.isNotBlank(payResearchProject.getWorkingGroupId())){
queryWrapper.eq("working_group_id",payResearchProject.getWorkingGroupId());
}else {
return Result.error("工作组id为空!");
}
if(StringUtils.isNotBlank(payResearchProject.getProjectName())){
queryWrapper.like("project_name",payResearchProject.getProjectName());
}
Page<PayResearchProject> page = new Page<PayResearchProject>(pageNo, pageSize); Page<PayResearchProject> page = new Page<PayResearchProject>(pageNo, pageSize);
IPage<PayResearchProject> pageList = payResearchProjectService.page(page, queryWrapper); IPage<PayResearchProject> pageList = payResearchProjectService.pageList(page, queryWrapper);
return Result.OK(pageList); return Result.OK(pageList);
} }
@@ -94,16 +108,85 @@ public class PayResearchProjectController extends JeroController<PayResearchProj
payResearchProjectService.downLoad(fileId,fileName); payResearchProjectService.downLoad(fileId,fileName);
} }
/**
* 新增
*
* @param payResearchProject
* @return
*/
@Transactional
@AutoLog(value = "在研项目-新增")
@ApiOperation(value="在研项目-新增", notes="在研项目-新增")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody PayResearchProject payResearchProject) {
QueryWrapper<PayResearchProject> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("project_name",payResearchProject.getProjectName());
int count = payResearchProjectService.count(queryWrapper);
if (count>0) {
return Result.error("项目名称已存在");
}
payResearchProjectService.save(payResearchProject);
QueryWrapper<PayResearchProject> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("project_name",payResearchProject.getProjectName());
PayResearchProject one = payResearchProjectService.getOne(queryWrapper2);
if(StringUtils.isNotBlank(payResearchProject.getFiles())){
String files = payResearchProject.getFiles();
List<String> filesList = Arrays.asList(files.split(","));
for(String s:filesList){
UUID uuid = UUID.randomUUID();
payResearchProjectService.saveFile(uuid.toString(),s,one.getId());
}
}
return Result.OK("新增成功!");
}
/** /**
* 编辑 * 编辑
* *
* @param payResearchProject * @param payResearchProject
* @return * @return
*/ */
@Transactional
@AutoLog(value = "在研项目-编辑") @AutoLog(value = "在研项目-编辑")
@ApiOperation(value="在研项目-编辑", notes="在研项目-编辑") @ApiOperation(value="在研项目-编辑", notes="在研项目-编辑")
@PutMapping(value = "/edit") @PostMapping(value = "/edit")
public Result<?> edit(@RequestBody PayResearchProject payResearchProject) { public Result<?> edit(@RequestBody PayResearchProject payResearchProject) {
QueryWrapper<PayResearchProject> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("project_name",payResearchProject.getProjectName());
queryWrapper.ne("id",payResearchProject.getId());
int count = payResearchProjectService.count(queryWrapper);
if (count>0) {
return Result.error("项目名称已存在");
}
//删除关联文件表
payResearchProjectService.deleteFile(payResearchProject.getId());
//删除文件表
PayResearchProject byId = payResearchProjectService.getById(payResearchProject.getId());
if(StringUtils.isNotBlank(byId.getFiles())){
List<String> filesList = Arrays.asList(byId.getFiles().split(","));
if(StringUtils.isNotBlank(payResearchProject.getFiles())) {
List<String> newFilesList = Arrays.asList(payResearchProject.getFiles().split(","));
for(String s:filesList){
//旧文件包含在新文件中则不删除
if(!newFilesList.contains(s)){
iossFileService.removeById(s);
}
}
}else {
//新文件为空则全部删除旧文件
iossFileService.removeByIds(filesList);
}
}
//重新加入关系表
if(StringUtils.isNotBlank(payResearchProject.getFiles())){
String files = payResearchProject.getFiles();
List<String> filesList = Arrays.asList(files.split(","));
for(String s:filesList){
UUID uuid = UUID.randomUUID();
payResearchProjectService.saveFile(uuid.toString(),s,payResearchProject.getId());
}
}
//更新
payResearchProjectService.updateById(payResearchProject); payResearchProjectService.updateById(payResearchProject);
return Result.OK("编辑成功!"); return Result.OK("编辑成功!");
} }
@@ -116,64 +199,72 @@ public class PayResearchProjectController extends JeroController<PayResearchProj
*/ */
@AutoLog(value = "在研项目-通过id删除") @AutoLog(value = "在研项目-通过id删除")
@ApiOperation(value="在研项目-通过id删除", notes="在研项目-通过id删除") @ApiOperation(value="在研项目-通过id删除", notes="在研项目-通过id删除")
@DeleteMapping(value = "/delete") @GetMapping(value = "/delete")
public Result<?> delete(@RequestParam(name="id",required=true) String id) { public Result<?> delete(@RequestParam(name="id",required=true) String id) {
//删除关联文件表
payResearchProjectService.deleteFile(id);
//删除文件表
PayResearchProject byId = payResearchProjectService.getById(id);
if(StringUtils.isNotBlank(byId.getFiles())){
List<String> filesList = Arrays.asList(byId.getFiles().split(","));
iossFileService.removeByIds(filesList);
}
payResearchProjectService.removeById(id); payResearchProjectService.removeById(id);
return Result.OK("删除成功!"); return Result.OK("删除成功!");
} }
/** // /**
* 批量删除 // * 批量删除
* // *
* @param ids // * @param ids
* @return // * @return
*/ // */
@AutoLog(value = "在研项目-批量删除") // @AutoLog(value = "在研项目-批量删除")
@ApiOperation(value="在研项目-批量删除", notes="在研项目-批量删除") // @ApiOperation(value="在研项目-批量删除", notes="在研项目-批量删除")
@DeleteMapping(value = "/deleteBatch") // @DeleteMapping(value = "/deleteBatch")
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) { // public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.payResearchProjectService.removeByIds(Arrays.asList(ids.split(","))); // this.payResearchProjectService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!"); // return Result.OK("批量删除成功!");
} // }
//
/** // /**
* 通过id查询 // * 通过id查询
* // *
* @param id // * @param id
* @return // * @return
*/ // */
@AutoLog(value = "在研项目-通过id查询") // @AutoLog(value = "在研项目-通过id查询")
@ApiOperation(value="在研项目-通过id查询", notes="在研项目-通过id查询") // @ApiOperation(value="在研项目-通过id查询", notes="在研项目-通过id查询")
@GetMapping(value = "/queryById") // @GetMapping(value = "/queryById")
public Result<?> queryById(@RequestParam(name="id",required=true) String id) { // public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
PayResearchProject payResearchProject = payResearchProjectService.getById(id); // PayResearchProject payResearchProject = payResearchProjectService.getById(id);
if(payResearchProject==null) { // if(payResearchProject==null) {
return Result.error("未找到对应数据"); // return Result.error("未找到对应数据");
} // }
return Result.OK(payResearchProject); // return Result.OK(payResearchProject);
} // }
//
/** // /**
* 导出excel // * 导出excel
* // *
* @param request // * @param request
* @param payResearchProject // * @param payResearchProject
*/ // */
@RequestMapping(value = "/exportXls") // @RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, PayResearchProject payResearchProject) { // public ModelAndView exportXls(HttpServletRequest request, PayResearchProject payResearchProject) {
return super.exportXls(request, payResearchProject, PayResearchProject.class, "在研项目"); // return super.exportXls(request, payResearchProject, PayResearchProject.class, "在研项目");
} // }
//
/** // /**
* 通过excel导入数据 // * 通过excel导入数据
* // *
* @param request // * @param request
* @param response // * @param response
* @return // * @return
*/ // */
@RequestMapping(value = "/importExcel", method = RequestMethod.POST) // @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { // public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, PayResearchProject.class); // return super.importExcel(request, response, PayResearchProject.class);
} // }
} }
@@ -1,9 +1,13 @@
package com.jero.project.entity; package com.jero.project.entity;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.jero.data.entity.Files;
import lombok.Data; import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
@@ -13,6 +17,9 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/** /**
* @Description: pay_research_project * @Description: pay_research_project
* @Author: jeecg-boot * @Author: jeecg-boot
@@ -28,11 +35,18 @@ public class PayResearchProject implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**主键*/ /**主键*/
@TableId(type = IdType.ASSIGN_ID) @TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键") @ApiModelProperty(value = "主键")
private java.lang.String id; private java.lang.String id;
/**工作组id*/
@NotNull(message ="工作组id不能为空")
@ApiModelProperty(value = "工作组id")
private java.lang.String workingGroupId;
/**项目名称*/ /**项目名称*/
@Excel(name = "项目名称", width = 15) @Excel(name = "项目名称", width = 15)
@NotNull(message ="项目名称不能为空")
@Size(max = 50,message = "项目名称长度不超过50个字符")
@ApiModelProperty(value = "项目名称") @ApiModelProperty(value = "项目名称")
private java.lang.String projectName; private java.lang.String projectName;
/**主要起草单位*/ /**主要起草单位*/
@@ -43,6 +57,13 @@ public class PayResearchProject implements Serializable {
@Excel(name = "过程文件", width = 15) @Excel(name = "过程文件", width = 15)
@ApiModelProperty(value = "过程文件(多个都好隔开)") @ApiModelProperty(value = "过程文件(多个都好隔开)")
private java.lang.String files; private java.lang.String files;
/**文件集合*/
@TableField(exist = false)
@Excel(name = "文件集合", width = 15)
@ApiModelProperty(value = "文件集合")
private List<Files> filesList;
/**项目进度*/ /**项目进度*/
@Excel(name = "项目进度", width = 15) @Excel(name = "项目进度", width = 15)
@ApiModelProperty(value = "项目进度") @ApiModelProperty(value = "项目进度")
@@ -1,7 +1,13 @@
package com.jero.project.mapper; package com.jero.project.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.project.entity.PayResearchProject; import com.jero.project.entity.PayResearchProject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.yaml.snakeyaml.scanner.Constant;
/** /**
* @Description: pay_research_project * @Description: pay_research_project
@@ -11,4 +17,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/ */
public interface PayResearchProjectMapper extends BaseMapper<PayResearchProject> { public interface PayResearchProjectMapper extends BaseMapper<PayResearchProject> {
IPage<PayResearchProject> pageList(Page<PayResearchProject> page,@Param(Constants.WRAPPER) QueryWrapper<PayResearchProject> queryWrapper);
void saveFile(@Param("id")String id,@Param("fileId")String fileId,@Param("projectId") String projectId);
void deleteFile(@Param("id")String id);
} }
@@ -1,5 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.project.mapper.PayResearchProjectMapper"> <mapper namespace="com.jero.project.mapper.PayResearchProjectMapper">
<select id="pageList" resultMap="page">
select * from pay_research_project
${ew.customSqlSegment}
</select>
<resultMap id="page" type="com.jero.project.entity.PayResearchProject">
<id property="id" column="id" />
<result property="projectName" column="project_name" />
<result property="draftCompany" column="draft_company" />
<result property="files" column="files" />
<result property="projectSchedule" column="project_schedule" />
<collection property="filesList" ofType="com.jero.data.entity.Files" select="pageFile" javaType="java.util.List" column="id=id" >
<result property="fileId" column="fileId" />
<result property="fileName" column="file_name" />
<result property="createTime" column="create_time" />
</collection>
</resultMap>
<select id="pageFile" resultType="com.jero.data.entity.Files">
select oof.id AS fileId,oof.file_name,oof.create_time from pay_research_project_file prpf left join oss_file oof on(prpf.file_id=oof.id) where prpf.project_id=#{id}
</select>
<insert id="saveFile" >
insert into pay_research_project_file (id,project_id,file_id) value (#{id},#{projectId},#{fileId})
</insert>
<delete id="deleteFile" >
delete from pay_research_project_file where pay_research_project_file.project_id=#{id}
</delete>
</mapper> </mapper>
@@ -1,7 +1,9 @@
package com.jero.project.service; package com.jero.project.service;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.project.entity.PayResearchProject; import com.jero.project.entity.PayResearchProject;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
@@ -19,4 +21,10 @@ public interface IPayResearchProjectService extends IService<PayResearchProject>
void downLoad(Integer fileId,String fileName) throws IOException; void downLoad(Integer fileId,String fileName) throws IOException;
IPage<PayResearchProject> pageList(Page<PayResearchProject> page, QueryWrapper<PayResearchProject> queryWrapper);
void saveFile(String id,String fileId, String projectId);
void deleteFile(String id);
} }
@@ -2,7 +2,9 @@ package com.jero.project.service.impl;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.project.entity.PayResearchProject; import com.jero.project.entity.PayResearchProject;
import com.jero.project.mapper.PayResearchProjectMapper; import com.jero.project.mapper.PayResearchProjectMapper;
import com.jero.project.service.IPayResearchProjectService; import com.jero.project.service.IPayResearchProjectService;
@@ -19,6 +21,7 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import javax.activation.MimetypesFileTypeMap; import javax.activation.MimetypesFileTypeMap;
import javax.annotation.Resource;
import javax.crypto.Cipher; import javax.crypto.Cipher;
import javax.crypto.SecretKey; import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory; import javax.crypto.SecretKeyFactory;
@@ -26,6 +29,8 @@ import javax.crypto.spec.DESKeySpec;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
/** /**
@@ -44,9 +49,12 @@ public class PayResearchProjectServiceImpl extends ServiceImpl<PayResearchProjec
private String PREFIXF ="appId=QC_APP01&fid=";//文件下载参数 private String PREFIXF ="appId=QC_APP01&fid=";//文件下载参数
private String URL ="http://www.catarc.org.cn:8088/zxd/serviceInterface/getProjectInfoPage"; private String URL ="http://www.catarc.org.cn:8088/zxd/serviceInterface/getProjectInfoPage";//列表地址
private String URLF ="http://www.catarc.org.cn:8088/zxd/serviceInterface/downloadProjectFile"; private String URLF ="http://www.catarc.org.cn:8088/zxd/serviceInterface/downloadProjectFile";//文件下载地址
@Resource
private PayResearchProjectMapper payResearchProjectMapper;
/** /**
* 加密,并将结果转成16进制字符串 * 加密,并将结果转成16进制字符串
* *
@@ -90,6 +98,14 @@ public class PayResearchProjectServiceImpl extends ServiceImpl<PayResearchProjec
JSONObject jsonObject = JSONObject.parseObject(s1); JSONObject jsonObject = JSONObject.parseObject(s1);
return jsonObject; return jsonObject;
} }
// //传入时间戳即可
// public String conversionTime(String timeStamp) {
// //yyyy-MM-dd HH:mm:ss 转换的时间格式 可以自定义
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// //转换
// String time = sdf.format(new Date(Long.parseLong(timeStamp)));
// return time;
// }
@Override @Override
public void downLoad(Integer fileId,String fileName) throws IOException { public void downLoad(Integer fileId,String fileName) throws IOException {
@@ -123,4 +139,21 @@ public class PayResearchProjectServiceImpl extends ServiceImpl<PayResearchProjec
bis.close(); bis.close();
outputStream.close(); outputStream.close();
} }
@Override
public IPage<PayResearchProject> pageList(Page<PayResearchProject> page, QueryWrapper<PayResearchProject> queryWrapper) {
IPage<PayResearchProject> payResearchProjectIPage = payResearchProjectMapper.pageList(page, queryWrapper);
return payResearchProjectIPage;
}
@Override
public void saveFile(String id,String fileId, String projectId) {
payResearchProjectMapper.saveFile(id,fileId,projectId);
}
@Override
public void deleteFile(String id) {
payResearchProjectMapper.deleteFile(id);
}
} }