Browse Source

附件类型管理功能

lizhenhao 2 năm trước cách đây
mục cha
commit
e8d36f3fb6

+ 141 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/program/configuration/fileDict/controller/ProgramFileDictController.java

@@ -0,0 +1,141 @@
+package com.jeeplus.test.program.configuration.fileDict.controller;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+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.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.sys.constant.enums.LogTypeEnum;
+import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.test.program.configuration.fileDict.domain.ProgramFileDict;
+import com.jeeplus.test.program.configuration.fileDict.service.ProgramFileDictService;
+import com.jeeplus.test.program.configuration.fileDict.service.dto.ProgramFileDictDTO;
+import com.jeeplus.test.program.configuration.typeDict.domain.ProgramTypeDict;
+import com.jeeplus.test.program.configuration.typeDict.service.ProgramTypeDictService;
+import com.jeeplus.test.program.configuration.typeDict.service.dto.ProgramTypeDictDTO;
+import io.swagger.annotations.Api;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Api("项目配置管理-附件类型管理")
+@RestController
+@RequestMapping(value = "/program/configuration/file")
+public class ProgramFileDictController {
+
+    @Resource
+    private ProgramFileDictService programFileDictService;
+
+    /**
+     * 查询附件类型管理列表
+     * @param programFileDictDTO
+     * @param page
+     * @return
+     * @throws Exception
+     */
+    @ApiLog("查询附件类型管理列表")
+    @PreAuthorize("hasAuthority('program:configuration:file:list')")
+    @GetMapping("list")
+    public ResponseEntity<IPage<ProgramFileDictDTO>> data(ProgramFileDictDTO programFileDictDTO, Page<ProgramFileDictDTO> page) throws Exception {
+        page.setSize(-1);
+        IPage<ProgramFileDictDTO> result = new Page<ProgramFileDictDTO>();
+        if(ObjectUtil.isNotEmpty(programFileDictDTO)){
+            if(StringUtils.isNotBlank(programFileDictDTO.getName())){
+                //根据name模糊查询
+                List<ProgramFileDict> programFileDictList = programFileDictService.list(new QueryWrapper<ProgramFileDict>().lambda()
+                        .like(StringUtils.isNotBlank(programFileDictDTO.getName()), ProgramFileDict::getName, programFileDictDTO.getName())
+                );
+                //获取到其中不是一级附件类型的数据
+                List<ProgramFileDict> childList = programFileDictList.stream().distinct().filter(item -> {
+                    if (!"0".equals(item.getParentId())) {
+                        return true;
+                    }
+                    return false;
+                }).collect(Collectors.toList());
+                //childList的id全部获取
+                List<String> cIdList = childList.stream().distinct().map(ProgramFileDict::getId).collect(Collectors.toList());
+                //childList的父级id全部获取
+                List<String> cupIdList = childList.stream().distinct().map(ProgramFileDict::getParentId).collect(Collectors.toList());
+                //获取到其中一级附件类型的数据的id
+                List<String> pIdList = programFileDictList.stream().distinct().filter(item -> {
+                    if ("0".equals(item.getParentId())) {
+                        return true;
+                    }
+                    return false;
+                }).map(ProgramFileDict::getId).collect(Collectors.toList());
+                //获取pIdList下的所有子附件类型的id
+                if(CollectionUtil.isNotEmpty(pIdList)){
+                    pIdList.addAll(programFileDictService.list(new QueryWrapper<ProgramFileDict>().lambda()
+                            .in(ProgramFileDict::getParentId,pIdList)).stream().map(ProgramFileDict::getId).collect(Collectors.toList()));
+                }
+                //将获取到的这几个id集合融合到一起并去重,然后根据id查询,即可得到结果
+                cIdList.addAll(cupIdList);
+                cIdList.addAll(pIdList);
+                List<String> idList = cIdList.stream().distinct().collect(Collectors.toList());
+                if(CollectionUtil.isNotEmpty(idList)){
+                    QueryWrapper<ProgramFileDict> wrapper = new QueryWrapper<ProgramFileDict>()
+                            .in("pfd.id",idList);
+                    result = programFileDictService.findList (page,wrapper);
+                }
+            }else{
+                result = programFileDictService.findList (page,new QueryWrapper<ProgramFileDict>());
+            }
+        }
+        return ResponseEntity.ok (result);
+    }
+
+    /**
+     * 查询附件类型管理数据
+     * @param id
+     * @return
+     */
+    @ApiLog("查询附件类型管理数据")
+    @PreAuthorize ("hasAnyAuthority('program:configuration:file:view','program:configuration:file:add','program:configuration:file:edit')")
+    @GetMapping("queryById")
+    public ResponseEntity queryById(@RequestParam("id") String id) {
+        ProgramFileDictDTO programFileDictDTO = programFileDictService.queryById ( id );
+        return ResponseEntity.ok (programFileDictDTO);
+    }
+
+    /**
+     * 保存附件类型
+     * @param programFileDictDTO
+     * @return
+     */
+    @ApiLog(value = "修改/新增附件类型", type = LogTypeEnum.SAVE)
+    @PreAuthorize("hasAnyAuthority('program:configuration:type:save','program:configuration:type:edit')")
+    @PostMapping("save")
+    public ResponseEntity save(@Valid @RequestBody ProgramFileDictDTO programFileDictDTO) {
+        programFileDictService.saveType(programFileDictDTO);
+        return ResponseEntity.ok ("操作成功");
+    }
+
+    /**
+     * 删除附件类型
+     * @param ids
+     * @return
+     */
+    @ApiLog(value = "删除附件类型", type = LogTypeEnum.SAVE)
+    @PreAuthorize ("hasAuthority('program:configuration:type:del')")
+    @DeleteMapping("delete")
+    public ResponseEntity delete(String ids) {
+        return programFileDictService.deleteByIds(ids);
+    }
+
+    /**
+     * 查询附件类型
+     * @return
+     */
+    @ApiLog("查询附件类型")
+    @GetMapping("getAllFileType")
+    public ResponseEntity getAllFileType() {
+        List<ProgramFileDict> list = programFileDictService.list ( new QueryWrapper<ProgramFileDict>().lambda().eq(ProgramFileDict::getParentId,"0") );
+        return ResponseEntity.ok (list);
+    }
+}

+ 48 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/program/configuration/fileDict/domain/ProgramFileDict.java

@@ -0,0 +1,48 @@
+package com.jeeplus.test.program.configuration.fileDict.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ * @TableName program_file_dict
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("program_file_dict")
+public class ProgramFileDict extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 上级类型
+     */
+    private String parentId;
+
+    /**
+     * 附件结构名称
+     */
+    private String name;
+
+    /**
+     * 序号
+     */
+    private String sort;
+
+    /**
+     * 文件类型
+     */
+    private String type;
+
+    /**
+     * 文件大小
+     */
+    private String size;
+
+    private static final long serialVersionUID = 1L;
+}

+ 28 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/program/configuration/fileDict/mapper/ProgramFileDictMapper.java

@@ -0,0 +1,28 @@
+package com.jeeplus.test.program.configuration.fileDict.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.jeeplus.test.program.configuration.fileDict.domain.ProgramFileDict;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.program.configuration.fileDict.service.dto.ProgramFileDictDTO;
+import com.jeeplus.test.program.configuration.typeDict.domain.ProgramTypeDict;
+import com.jeeplus.test.program.configuration.typeDict.service.dto.ProgramTypeDictDTO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Entity com.jeeplus.test.program.configuration.fileDict.dimain.ProgramFileDict
+ */
+@Mapper
+public interface ProgramFileDictMapper extends BaseMapper<ProgramFileDict> {
+
+    public IPage<ProgramFileDictDTO> findList(Page<ProgramFileDictDTO> page, @Param(Constants.WRAPPER) QueryWrapper<ProgramFileDict> queryWrapper);
+
+    public ProgramFileDictDTO queryById(@Param("id") String id);
+}
+
+
+
+

+ 51 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/program/configuration/fileDict/mapper/xml/ProgramFileDictMapper.xml

@@ -0,0 +1,51 @@
+<?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.jeeplus.test.program.configuration.fileDict.mapper.ProgramFileDictMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.test.program.configuration.fileDict.service.dto.ProgramFileDictDTO">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/>
+            <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+            <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+            <result property="parentId" column="parent_id" jdbcType="VARCHAR"/>
+            <result property="name" column="name" jdbcType="VARCHAR"/>
+            <result property="sort" column="sort" jdbcType="VARCHAR"/>
+            <result property="type" column="type" jdbcType="VARCHAR"/>
+            <result property="size" column="size" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        pfd.id,
+        pfd.create_by,
+        pfd.create_date,
+        pfd.update_by,
+        pfd.update_date,
+        pfd.del_flag,
+        pfd.remarks,
+        pfd.parent_id,
+        pfd.name,
+        pfd.sort,
+        pfd.type,
+        pfd.size
+    </sql>
+
+    <select id="findList" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>
+        from program_file_dict pfd
+        ${ew.customSqlSegment}
+    </select>
+
+    <select id="queryById" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>
+        from program_file_dict pfd
+        where pfd.del_flag = '0' and pfd.id = ${id}
+    </select>
+
+</mapper>

+ 59 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/program/configuration/fileDict/service/ProgramFileDictService.java

@@ -0,0 +1,59 @@
+package com.jeeplus.test.program.configuration.fileDict.service;
+
+import cn.hutool.core.collection.CollectionUtil;
+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.google.common.collect.Lists;
+import com.jeeplus.test.program.configuration.fileDict.domain.ProgramFileDict;
+import com.jeeplus.test.program.configuration.fileDict.mapper.ProgramFileDictMapper;
+import com.jeeplus.test.program.configuration.fileDict.service.dto.ProgramFileDictDTO;
+import com.jeeplus.test.program.configuration.fileDict.service.mapstruct.ProgramFileDictWrapper;
+import com.jeeplus.test.program.configuration.typeDict.domain.ProgramTypeDict;
+import com.jeeplus.test.program.configuration.typeDict.mapper.ProgramTypeDictMapper;
+import com.jeeplus.test.program.configuration.typeDict.service.dto.ProgramTypeDictDTO;
+import com.jeeplus.test.program.configuration.typeDict.service.mapstruct.ProgramTypeDictWrapper;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+@Transactional
+public class ProgramFileDictService extends ServiceImpl<ProgramFileDictMapper, ProgramFileDict> {
+
+    @Resource
+    private ProgramFileDictMapper programFileDictMapper;
+
+    public IPage<ProgramFileDictDTO> findList(Page<ProgramFileDictDTO> page, QueryWrapper<ProgramFileDict> queryWrapper){
+        queryWrapper.eq("pfd.del_flag","0").orderByAsc("pfd.sort");
+        return programFileDictMapper.findList(page,queryWrapper);
+    }
+
+    public ProgramFileDictDTO queryById(String id) {
+
+        ProgramFileDictDTO programFileDictDTO = programFileDictMapper.queryById(id);
+
+        return programFileDictDTO;
+    }
+
+    public ResponseEntity saveType(ProgramFileDictDTO programFileDictDTO) {
+        ProgramFileDict programFileDict = ProgramFileDictWrapper.INSTANCE.toEntity(programFileDictDTO);
+        this.saveOrUpdate(programFileDict);
+        return ResponseEntity.ok("保存成功");
+    }
+
+    public ResponseEntity deleteByIds(String ids) {
+        String idArray[] =ids.split(",");
+        if(CollectionUtil.isNotEmpty(Lists.newArrayList (idArray))){
+            List<String> list = this.list(new QueryWrapper<ProgramFileDict>().lambda().in(ProgramFileDict::getParentId, Lists.newArrayList(idArray))).stream().distinct().map(ProgramFileDict::getId).collect(Collectors.toList());
+            this.removeByIds (list);
+        }
+        this.removeByIds (Lists.newArrayList (idArray));
+        return ResponseEntity.ok ("删除成功");
+    }
+}

+ 48 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/program/configuration/fileDict/service/dto/ProgramFileDictDTO.java

@@ -0,0 +1,48 @@
+package com.jeeplus.test.program.configuration.fileDict.service.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ * @TableName program_file_dict
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ProgramFileDictDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 上级类型
+     */
+    private String parentId;
+
+    /**
+     * 附件结构名称
+     */
+    private String name;
+
+    /**
+     * 序号
+     */
+    private String sort;
+
+    /**
+     * 文件类型
+     */
+    private String type;
+
+    /**
+     * 文件大小
+     */
+    private String size;
+
+    private static final long serialVersionUID = 1L;
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/program/configuration/fileDict/service/mapstruct/ProgramFileDictWrapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.program.configuration.fileDict.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.program.configuration.fileDict.domain.ProgramFileDict;
+import com.jeeplus.test.program.configuration.fileDict.service.dto.ProgramFileDictDTO;
+import com.jeeplus.test.program.configuration.typeDict.domain.ProgramTypeDict;
+import com.jeeplus.test.program.configuration.typeDict.service.dto.ProgramTypeDictDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface ProgramFileDictWrapper extends EntityWrapper<ProgramFileDictDTO, ProgramFileDict>{
+
+        ProgramFileDictWrapper INSTANCE = Mappers.getMapper(ProgramFileDictWrapper.class);
+
+}

+ 5 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/program/configuration/typeDict/service/ProgramTypeDictService.java

@@ -26,6 +26,7 @@ import com.jeeplus.test.changes.dimission.service.dto.ChangesDimissionFilesDTO;
 import com.jeeplus.test.changes.dimission.service.dto.ChangesDimissionReaDTO;
 import com.jeeplus.test.changes.dimission.service.mapstruct.ChangesDimissionFilesWrapper;
 import com.jeeplus.test.changes.dimission.service.mapstruct.ChangesDimissionWrapper;
+import com.jeeplus.test.program.configuration.fileDict.domain.ProgramFileDict;
 import com.jeeplus.test.program.configuration.typeDict.domain.ProgramTypeDict;
 import com.jeeplus.test.program.configuration.typeDict.mapper.ProgramTypeDictMapper;
 import com.jeeplus.test.program.configuration.typeDict.service.dto.ProgramTypeDictDTO;
@@ -68,6 +69,10 @@ public class ProgramTypeDictService extends ServiceImpl<ProgramTypeDictMapper, P
 
     public ResponseEntity deleteByIds(String ids) {
         String idArray[] =ids.split(",");
+        if(CollectionUtil.isNotEmpty(Lists.newArrayList (idArray))){
+            List<String> list = this.list(new QueryWrapper<ProgramTypeDict>().lambda().in(ProgramTypeDict::getParentId, Lists.newArrayList(idArray))).stream().distinct().map(ProgramTypeDict::getId).collect(Collectors.toList());
+            this.removeByIds (list);
+        }
         this.removeByIds (Lists.newArrayList (idArray));
         return ResponseEntity.ok ("删除成功");
     }