新增起草组-在研项目的查询、新增、编辑、删除等功能

This commit is contained in:
sunzheng
2024-01-05 11:34:02 +08:00
parent e594e5ba35
commit da941fef86
7 changed files with 468 additions and 7 deletions
@@ -0,0 +1,215 @@
package com.jero.drafting.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.util.ValidUtil;
import com.jero.drafting.entity.PayDraftingGroupResearchProject;
import com.jero.drafting.entity.PayDraftingGroupSubItemContacts;
import com.jero.drafting.service.IPayDraftingGroupResearchProjectService;
import com.jero.drafting.service.IPayDraftingGroupService;
import com.jero.drafting.service.IPayDraftingGroupSubItemContactsService;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.project.entity.PayResearchProject;
import com.jero.project.service.IPayResearchProjectService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
/**
* <p>
* 起草组 在研项目表 前端控制器
* </p>
*
* @author sz
* @since 2024-01-05
*/
@Api(tags="起草组 在研项目")
@RestController
@RequestMapping("/drafting/payDraftingGroupResearchProject")
@Slf4j
public class PayDraftingGroupResearchProjectController extends JeroController<PayDraftingGroupResearchProject, IPayDraftingGroupResearchProjectService> {
@Autowired
private IPayDraftingGroupResearchProjectService payDraftingGroupResearchProjectService;
@Autowired
private IOSSFileService iossFileService;
/**
* 分页列表查询
*
* @param payResearchProject
* @param pageNo
* @param pageSize
* @param
* @return
*/
@AutoLog(value = "起草组-在研项目-分页列表查询")
@ApiOperation(value="起草组-在研项目-分页列表查询", notes="起草组-在研项目-分页列表查询")
@GetMapping(value = "/list")
public Result<?> queryPageList(PayDraftingGroupResearchProject payResearchProject,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize
) {
QueryWrapper<PayDraftingGroupResearchProject> queryWrapper = new QueryWrapper<>();
if(StringUtils.isNotBlank(payResearchProject.getDraftingGroupId())){
queryWrapper.eq("drafting_group_id",payResearchProject.getDraftingGroupId());
}else {
return Result.error("起草组id为空!");
}
if(StringUtils.isNotBlank(payResearchProject.getProjectName())){
queryWrapper.like("project_name",payResearchProject.getProjectName());
}
Page<PayDraftingGroupResearchProject> page = new Page<>(pageNo, pageSize);
IPage<PayDraftingGroupResearchProject> pageList = payDraftingGroupResearchProjectService.pageList(page,queryWrapper);
return Result.OK(pageList);
}
/**
* 新增
*
* @param payResearchProject
* @return
*/
@Transactional
@AutoLog(value = "起草组-在研项目-新增")
@ApiOperation(value="起草组-在研项目-新增", notes="起草组-在研项目-新增")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody PayDraftingGroupResearchProject payResearchProject) {
StringBuilder msg = ValidUtil.validateAll(payResearchProject);
if (!StringUtils.isBlank(msg)) {
return Result.error(msg.toString());
}
QueryWrapper<PayDraftingGroupResearchProject> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("drafting_group_id",payResearchProject.getDraftingGroupId());
queryWrapper.eq("project_name",payResearchProject.getProjectName());
int count = payDraftingGroupResearchProjectService.count(queryWrapper);
if (count>0) {
return Result.error("项目名称已存在");
}
payDraftingGroupResearchProjectService.save(payResearchProject);
if(StringUtils.isNotBlank(payResearchProject.getFiles())){
String files = payResearchProject.getFiles();
List<String> filesList = Arrays.asList(files.split(","));
for(String s:filesList){
if(StringUtils.isBlank(s)){
throw new JeroBootException("文件id不能为空!");
}
UUID uuid = UUID.randomUUID();
payDraftingGroupResearchProjectService.saveFile(uuid.toString(),s,payResearchProject.getId());
}
}
return Result.OK("新增成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@Transactional
@AutoLog(value = "起草组-在研项目-通过id删除")
@ApiOperation(value="起草组-在研项目-通过id删除", notes="起草组-在研项目-通过id删除")
@GetMapping(value = "/delete")
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
if (StringUtils.isBlank(id)) {
return Result.error("id不能为空");
}
//删除关联文件表
payDraftingGroupResearchProjectService.deleteFile(id);
//删除文件表
PayDraftingGroupResearchProject payResearchProject = payDraftingGroupResearchProjectService.getById(id);
if (Objects.isNull(payResearchProject)) {
return Result.error("对象不存在");
}
if(StringUtils.isNotBlank(payResearchProject.getFiles())){
List<String> filesList = Arrays.asList(payResearchProject.getFiles().split(","));
iossFileService.removeByIds(filesList);
}
payDraftingGroupResearchProjectService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "起草组-在研项目-批量删除")
@ApiOperation(value="起草组-在研项目-批量删除", notes="起草组-在研项目-批量删除")
@GetMapping(value = "/deleteBatch")
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
if (StringUtils.isBlank(ids)) {
return Result.error("id不能为空");
}
List<String> strings = Arrays.asList(ids.split(","));
for(String s:strings){
delete(s);
}
return Result.OK("批量删除成功!");
}
/**
* 编辑
*
* @param payResearchProject
* @return
*/
@Transactional
@AutoLog(value = "起草组-在研项目-编辑")
@ApiOperation(value="起草组-在研项目-编辑", notes="起草组-在研项目-编辑")
@PostMapping(value = "/edit")
public Result<?> edit(@RequestBody PayDraftingGroupResearchProject payResearchProject) {
StringBuilder msg = ValidUtil.validateAll(payResearchProject);
if (!StringUtils.isBlank(msg)) {
return Result.error(msg.toString());
}
if (StringUtils.isBlank(payResearchProject.getId())) {
return Result.error("在研项目的id不能为空");
}
PayDraftingGroupResearchProject dbPayResearchProject = payDraftingGroupResearchProjectService.getById(payResearchProject.getId());
if (Objects.isNull(dbPayResearchProject)) {
return Result.error("该项目不存在");
}
QueryWrapper<PayDraftingGroupResearchProject> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("project_name",payResearchProject.getProjectName());
queryWrapper.eq("drafting_group_id",payResearchProject.getDraftingGroupId());
queryWrapper.ne("id",payResearchProject.getId());
int count = payDraftingGroupResearchProjectService.count(queryWrapper);
if (count>0) {
return Result.error("项目名称已存在,请修改");
}
//删除关联文件表
payDraftingGroupResearchProjectService.deleteFile(payResearchProject.getId());
//重新加入关系表
if(StringUtils.isNotBlank(payResearchProject.getFiles())){
String files = payResearchProject.getFiles();
List<String> filesList = Arrays.asList(files.split(","));
for(String s:filesList){
if(StringUtils.isBlank(s)){
throw new JeroBootException("文件id不能为空!");
}
UUID uuid = UUID.randomUUID();
payDraftingGroupResearchProjectService.saveFile(uuid.toString(),s,payResearchProject.getId());
}
}
//更新
payDraftingGroupResearchProjectService.updateById(payResearchProject);
return Result.OK("编辑成功!");
}
}
@@ -0,0 +1,84 @@
package com.jero.drafting.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.fasterxml.jackson.annotation.JsonFormat;
import com.jero.data.entity.Files;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
@Data
@TableName("pay_drafting_group_research_project")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="pay_drafting_group_research_project对象", description="pay_drafting_group_research_project")
public class PayDraftingGroupResearchProject {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private String id;
/**起草组id*/
@NotNull(message ="起草组id不能为空")
@ApiModelProperty(value = "起草组id")
private String draftingGroupId;
/**项目名称*/
@Excel(name = "项目名称", width = 15)
@NotNull(message ="项目名称不能为空")
@Size(max = 50,message = "项目名称长度不超过50个字符")
@ApiModelProperty(value = "项目名称")
private String projectName;
/**主要起草单位*/
@Excel(name = "主要起草单位", width = 15)
@ApiModelProperty(value = "主要起草单位")
@NotEmpty(message = "主要起草单位不能为空")
private String draftCompany;
/**过程文件*/
@Excel(name = "过程文件", width = 15)
@ApiModelProperty(value = "过程文件(多个都好隔开)")
@NotEmpty(message = "过程文件不能为空")
private String files;
/**文件集合*/
@TableField(exist = false)
@Excel(name = "文件集合", width = 15)
@ApiModelProperty(value = "文件集合")
private List<Files> filesList;
/**项目进度*/
@Excel(name = "项目进度", width = 15)
@ApiModelProperty(value = "项目进度")
@NotEmpty(message = "项目进度不能为空")
private java.lang.String projectSchedule;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "更新时间")
private java.util.Date updateTime;
}
@@ -5,9 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import com.jero.contract.entity.PayIncomeContract;
import com.jero.project.entity.PayWorkingGroupSubItemContacts;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -15,12 +12,8 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
@@ -0,0 +1,27 @@
package com.jero.drafting.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
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.drafting.entity.PayDraftingGroupResearchProject;
import com.jero.drafting.entity.PayDraftingGroupSubItem;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 起草组 在研项目表 Mapper 接口
* </p>
*
* @author sz
* @since 2024-01-05
*/
public interface PayDraftingGroupResearchProjectMapper extends BaseMapper<PayDraftingGroupResearchProject> {
IPage<PayDraftingGroupResearchProject> pageList(Page<PayDraftingGroupResearchProject> page, @Param(Constants.WRAPPER) QueryWrapper<PayDraftingGroupResearchProject> queryWrapper);
void saveFile(@Param("id")String id,@Param("fileId")String fileId,@Param("projectId") String projectId);
void deleteFile(@Param("id")String id);
}
@@ -0,0 +1,35 @@
<?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.jero.drafting.mapper.PayDraftingGroupResearchProjectMapper">
<resultMap id="page" type="com.jero.drafting.entity.PayDraftingGroupResearchProject">
<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="pageList" resultMap="page">
select * from pay_drafting_group_research_project
${ew.customSqlSegment}
</select>
<insert id="saveFile" >
insert into pay_drafting_group_research_project_file (id,project_id,file_id) value (#{id},#{projectId},#{fileId})
</insert>
<select id="pageFile" resultType="com.jero.data.entity.Files">
select oof.id AS fileId,oof.file_name,oof.create_time from pay_drafting_group_research_project_file prpf left join oss_file oof on(prpf.file_id=oof.id) where prpf.project_id=#{id}
</select>
<delete id="deleteFile">
delete from pay_drafting_group_research_project_file ppf where ppf.project_id=#{id}
</delete>
</mapper>
@@ -0,0 +1,42 @@
package com.jero.drafting.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.drafting.entity.PayDraftingGroupResearchProject;
import com.jero.drafting.entity.PayDraftingGroupSubItemContacts;
import com.jero.project.entity.PayResearchProject;
/**
* <p>
* 起草组 在研项目表 服务类
* </p>
*
* @author sz
* @since 2024-01-05
*/
public interface IPayDraftingGroupResearchProjectService extends IService<PayDraftingGroupResearchProject> {
/**
* 分页条件查询
* @param page
* @param queryWrapper
* @return
*/
IPage<PayDraftingGroupResearchProject> pageList(Page<PayDraftingGroupResearchProject> page, QueryWrapper<PayDraftingGroupResearchProject> queryWrapper);
/**
* 新增
* @param id
* @param fileId
* @param projectId
*/
void saveFile(String id, String fileId, String projectId);
/**
* 通过id删除
* @param id
*/
void deleteFile(String id);
}
@@ -0,0 +1,65 @@
package com.jero.drafting.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.drafting.entity.PayDraftingGroupResearchProject;
import com.jero.drafting.entity.PayDraftingGroupSubItemContacts;
import com.jero.drafting.mapper.PayDraftingGroupResearchProjectMapper;
import com.jero.drafting.mapper.PayDraftingGroupSubItemContactsMapper;
import com.jero.drafting.service.IPayDraftingGroupResearchProjectService;
import com.jero.drafting.service.IPayDraftingGroupSubItemContactsService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
/**
* <p>
* 起草组 在研项目表 服务实现类
* </p>
*
* @author sz
* @since 2024-01-05
*/
@Service
@Transactional
public class PayDraftingGroupResearchProjectServiceImpl extends ServiceImpl<PayDraftingGroupResearchProjectMapper, PayDraftingGroupResearchProject> implements IPayDraftingGroupResearchProjectService {
@Resource
private PayDraftingGroupResearchProjectMapper researchProjectMapper;
/**
* 分页条件查询
* @param page
* @param queryWrapper
* @return
*/
@Override
public IPage<PayDraftingGroupResearchProject> pageList(Page<PayDraftingGroupResearchProject> page, QueryWrapper<PayDraftingGroupResearchProject> queryWrapper) {
return researchProjectMapper.pageList(page,queryWrapper);
}
/**
* 新增
* @param id
* @param fileId
* @param projectId
*/
@Override
public void saveFile(String id, String fileId, String projectId) {
researchProjectMapper.saveFile(id,fileId,projectId);
}
/**
* 通过id删除
*
* @param id
*/
@Override
public void deleteFile(String id) {
researchProjectMapper.deleteFile(id);
}
}