Browse Source

职级模块开发

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

+ 26 - 4
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/controller/RankSequenceController.java

@@ -72,6 +72,29 @@ public class RankSequenceController {
     }
 
     /**
+     * 查询序列列表
+     * @param rankSequenceDTO
+     * @return
+     * @throws Exception
+     */
+    @ApiLog("查询序列列表")
+    @PreAuthorize("hasAuthority('rank:rank_sequence:list')")
+    @GetMapping("getList")
+    public ResponseEntity<List<RankSequenceDTO>> getList(RankSequenceDTO rankSequenceDTO) throws Exception {
+        RankSequence rankSequence = RankSequenceWrapper.INSTANCE.toEntity(rankSequenceDTO);
+        QueryWrapper<RankSequence> queryWrapper = QueryWrapperGenerator.buildQueryCondition ( rankSequence, RankSequence.class );
+        if(ObjectUtil.isNotEmpty(rankSequenceDTO)){
+            if(CollectionUtil.isNotEmpty(rankSequenceDTO.getOfficeIdList())){
+                List<RankRsOffice> rankRsOffices = rankRsOfficeService.list(new QueryWrapper<RankRsOffice>().in("office_id", rankSequenceDTO.getOfficeIdList()));
+                List<String> collect = rankRsOffices.stream().distinct().map(RankRsOffice::getRsId).collect(Collectors.toList());
+                queryWrapper.in("rs.id",collect);
+            }
+        }
+        List<RankSequenceDTO> result = rankSequenceService.getList (queryWrapper);
+        return ResponseEntity.ok (result);
+    }
+
+    /**
      * 查询序列数据
      * @param id
      * @return
@@ -86,15 +109,14 @@ public class RankSequenceController {
 
     /**
      * 添加序列
-     * @param rankSequenceDTO
+     * @param rankSequenceDTOList
      * @return
      */
     @ApiLog(value = "修改/新增序列", type = LogTypeEnum.SAVE)
     @PreAuthorize("hasAnyAuthority('rank:rank_sequence:save','rank:rank_sequence:edit')")
     @PostMapping("save")
-    public ResponseEntity save(@Valid @RequestBody RankSequenceDTO rankSequenceDTO, HttpServletRequest request) {
-        rankSequenceService.saveRankSequence(rankSequenceDTO);
-        return ResponseEntity.ok ("保存序列成功");
+    public ResponseEntity save(@Valid @RequestBody List<RankSequenceDTO> rankSequenceDTOList, HttpServletRequest request) {
+        return rankSequenceService.saveRankSequence(rankSequenceDTOList);
     }
 
     /**

+ 5 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/domain/RankSequence.java

@@ -42,5 +42,10 @@ public class RankSequence extends BaseEntity {
     @Query(type = QueryType.EQ, tableColumn = "rs.use_flag")
     private String useFlag;
 
+    /**
+     * 父序列id
+     */
+    private String parentId;
+
     private static final long serialVersionUID = 1L;
 }

+ 2 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/mapper/RankSequenceMapper.java

@@ -17,6 +17,8 @@ public interface RankSequenceMapper extends BaseMapper<RankSequence> {
 
     public IPage<RankSequenceDTO> findList(Page<RankSequenceDTO> page, @Param(Constants.WRAPPER)QueryWrapper<RankSequence> queryWrapper);
 
+    public List<RankSequenceDTO> getList(@Param(Constants.WRAPPER)QueryWrapper<RankSequence> queryWrapper);
+
     public void updateUseFlagById(@Param("ids") List<String> ids, @Param("useFlag") String useFlag);
 
     public RankSequenceDTO queryById(@Param("id") String id);

+ 68 - 5
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/mapper/xml/RankSequenceMapper.xml

@@ -21,7 +21,13 @@
     rs.remarks,
     rs.sort,
     rs.`name`,
-    rs.use_flag
+    rs.use_flag,
+    rs.parent_id
+  </sql>
+  <sql id="Child_Column_List">
+    rss.id rss_id,
+    rss.`name` rss_name,
+    rss.parent_id rss_parent_id
   </sql>
 
   <resultMap id="listMap" type="com.jeeplus.test.rank.service.dto.RankSequenceDTO">
@@ -34,20 +40,77 @@
     <result column="sort" jdbcType="INTEGER" property="sort" />
     <result column="name" jdbcType="VARCHAR" property="name" />
     <result column="use_flag" jdbcType="VARCHAR" property="useFlag" />
-    <collection property="officeList" ofType="com.jeeplus.sys.domain.Office">
-      <id property="id" column="so_id" jdbcType="VARCHAR"></id>
-      <result property="name" column="so_name" jdbcType="VARCHAR"></result>
+    <result column="parent_id" jdbcType="VARCHAR" property="parentId" />
+    <collection property="officeList" ofType="com.jeeplus.sys.domain.Office" column="id" select="selectOffice"/>
+    <collection property="rankSequenceDTOList" ofType="com.jeeplus.test.rank.service.dto.RankSequenceDTO">
+      <id column="id" jdbcType="VARCHAR" property="id" />
+      <result column="create_by" jdbcType="VARCHAR" property="createBy.id" />
+      <result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
+      <result column="update_by" jdbcType="VARCHAR" property="updateBy.id" />
+      <result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />
+      <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+      <result column="sort" jdbcType="INTEGER" property="sort" />
+      <result column="name" jdbcType="VARCHAR" property="name" />
+      <result column="use_flag" jdbcType="VARCHAR" property="useFlag" />
+      <result column="parent_id" jdbcType="VARCHAR" property="parentId" />
+      <collection property="rankSequenceDTOList" ofType="com.jeeplus.test.rank.service.dto.RankSequenceDTO">
+        <id column="rss_id" jdbcType="VARCHAR" property="id" />
+        <result column="rss_name" jdbcType="VARCHAR" property="name" />
+        <result column="rss_parent_id" jdbcType="VARCHAR" property="parentId" />
+      </collection>
+    </collection>
+  </resultMap>
+
+  <resultMap id="getListMap" type="com.jeeplus.test.rank.service.dto.RankSequenceDTO">
+    <id column="id" jdbcType="VARCHAR" property="id" />
+    <result column="create_by" jdbcType="VARCHAR" property="createBy.id" />
+    <result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
+    <result column="update_by" jdbcType="VARCHAR" property="updateBy.id" />
+    <result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />
+    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+    <result column="sort" jdbcType="INTEGER" property="sort" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+    <result column="use_flag" jdbcType="VARCHAR" property="useFlag" />
+    <result column="parent_id" jdbcType="VARCHAR" property="parentId" />
+    <collection property="officeIdList" ofType="string">
+      <id column="so_id" jdbcType="VARCHAR"></id>
+    </collection>
+    <collection property="rankSequenceDTOList" ofType="com.jeeplus.test.rank.service.dto.RankSequenceDTO">
+      <id column="rss_id" jdbcType="VARCHAR" property="id" />
+      <result column="rss_name" jdbcType="VARCHAR" property="name" />
+      <result column="rss_parent_id" jdbcType="VARCHAR" property="parentId" />
     </collection>
   </resultMap>
 
   <select id="findList" resultType="com.jeeplus.test.rank.domain.RankSequence" resultMap="listMap">
     select
     <include refid="Base_Column_List"></include>,
+    <include refid="Child_Column_List"></include>
+    from rank_sequence rs
+    left join rank_sequence rss on rss.parent_id = rs.id and rss.del_flag = '0'
+    ${ew.customSqlSegment}
+  </select>
+
+  <select id="selectOffice" resultType="com.jeeplus.sys.domain.Office">
+    select
+    so.id,
+    so.name
+    from rank_rs_office rro
+    left join sys_office so on rro.office_id = so.id and so.del_flag = '0'
+    where rro.del_flag = '0' and rro.rs_id = #{id}
+  </select>
+
+
+  <select id="getList" resultType="com.jeeplus.test.rank.domain.RankSequence" resultMap="getListMap">
+    select
+    <include refid="Base_Column_List"></include>,
     so.id so_id,
-    so.name so_name
+    so.name so_name,
+    <include refid="Child_Column_List"></include>
     from rank_sequence rs
     left join rank_rs_office rro on rro.rs_id = rs.id and rro.del_flag = '0'
     left join sys_office so on so.id = rro.office_id and so.del_flag = '0'
+    left join rank_sequence rss on rss.parent_id = rs.id and rss.del_flag = '0'
     ${ew.customSqlSegment}
   </select>
 

+ 74 - 14
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/service/RankSequenceService.java

@@ -1,5 +1,6 @@
 package com.jeeplus.test.rank.service;
 
+import cn.afterturn.easypoi.excel.annotation.Excel;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
@@ -14,15 +15,19 @@ import com.jeeplus.test.rank.mapper.RankRsOfficeMapper;
 import com.jeeplus.test.rank.mapper.RankSequenceMapper;
 import com.jeeplus.test.rank.service.dto.RankSequenceDTO;
 import com.jeeplus.test.rank.service.mapstruct.RankSequenceWrapper;
-import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicReference;
 
 @Service
-@Transactional
+@Transactional(rollbackFor = Exception.class)
 public class RankSequenceService extends ServiceImpl<RankSequenceMapper,RankSequence> {
 
     @Autowired
@@ -31,28 +36,83 @@ public class RankSequenceService extends ServiceImpl<RankSequenceMapper,RankSequ
     @Autowired
     private RankRsOfficeMapper rankRsOfficeMapper;
 
-    public void saveRankSequence(RankSequenceDTO rankSequenceDTO){
-        RankSequence rankSequence = RankSequenceWrapper.INSTANCE.toEntity(rankSequenceDTO);
-        this.saveOrUpdate(rankSequence);
-        if(ObjectUtil.isNotEmpty(rankSequenceDTO)){
-            if(StrUtil.isNotEmpty(rankSequenceDTO.getId())){
-                rankRsOfficeMapper.delete(new QueryWrapper<RankRsOffice>().eq("rs_id",rankSequenceDTO.getId()));
-                if(CollectionUtil.isNotEmpty(rankSequenceDTO.getOfficeIdList())){
-                    rankRsOfficeMapper.insertListById(rankSequenceDTO.getId(),rankSequenceDTO, UserUtils.getCurrentUserDTO().getId());
+    public ResponseEntity saveRankSequence(List<RankSequenceDTO> rankSequenceDTOList){
+        HashMap<String,Object> hashMap = new HashMap<>();
+        AtomicReference<Integer> listSize = new AtomicReference<>(rankSequenceDTOList.size());
+        List<String> ids = new ArrayList<>();
+        if(CollectionUtil.isNotEmpty(rankSequenceDTOList)){
+            rankSequenceDTOList.stream().forEach(item->{
+                if(StrUtil.isNotEmpty(item.getId())){
+                    ids.add(item.getId());
                 }
-            }else{
-                rankRsOfficeMapper.insertListById(rankSequence.getId(),rankSequenceDTO, UserUtils.getCurrentUserDTO().getId());
-            }
+                if(StrUtil.isNotEmpty(item.getName())){
+                    hashMap.put(item.getName(),null);
+                }
+                if(CollectionUtil.isNotEmpty(item.getRankSequenceDTOList())){
+                    listSize.set(listSize.get()+item.getRankSequenceDTOList().size());
+                    item.getRankSequenceDTOList().stream().forEach(item2->{
+                        if(StrUtil.isNotEmpty(item2.getId())){
+                            ids.add(item2.getId());
+                        }
+                        if(StrUtil.isNotEmpty(item2.getName())){
+                            hashMap.put(item2.getName(),null);
+                        }
+                    });
+                }
+            });
+        }
+        if(!Integer.valueOf(hashMap.size()).equals(listSize.get())){
+            //事务回滚
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return ResponseEntity.badRequest().body("不可以存在重复的序列");
+        }
+        this.rankSequenceMapper.delete(new QueryWrapper<RankSequence>().notIn("id",ids));
+        if(CollectionUtil.isNotEmpty(rankSequenceDTOList)){
+            rankSequenceDTOList.stream().forEach(item->{
+                RankSequence rankSequence = RankSequenceWrapper.INSTANCE.toEntity(item);
+                rankSequence.setParentId("0");
+                this.saveOrUpdate(rankSequence);
+                if(CollectionUtil.isNotEmpty(item.getRankSequenceDTOList())){
+                    item.getRankSequenceDTOList().stream().forEach(item2->{
+                        RankSequence rankSequence2 = RankSequenceWrapper.INSTANCE.toEntity(item2);
+                        rankSequence2.setParentId(rankSequence.getId());
+                        this.saveOrUpdate(rankSequence2);
+                    });
+                }
+                if(ObjectUtil.isNotEmpty(item)){
+                    if(StrUtil.isNotEmpty(item.getId())){
+                        rankRsOfficeMapper.delete(new QueryWrapper<RankRsOffice>().eq("rs_id",item.getId()));
+                        if(CollectionUtil.isNotEmpty(item.getOfficeIdList())){
+                            rankRsOfficeMapper.insertListById(item.getId(),item, UserUtils.getCurrentUserDTO().getId());
+                        }
+                    }else{
+                        if(CollectionUtil.isNotEmpty(item.getOfficeIdList())){
+                            rankRsOfficeMapper.insertListById(rankSequence.getId(),item, UserUtils.getCurrentUserDTO().getId());
+                        }
+                    }
+                }
+            });
         }
+
+        return ResponseEntity.ok("保存序列成功");
     }
 
     public IPage<RankSequenceDTO> findList(Page<RankSequenceDTO> page, QueryWrapper<RankSequence> queryWrapper){
-        queryWrapper.eq("rs.del_flag","0")
+        queryWrapper.eq("rs.parent_id","0")
+                .eq("rs.del_flag","0")
                 .orderByAsc("rs.sort")
                 .orderByDesc("rs.create_date");
         return rankSequenceMapper.findList(page,queryWrapper);
     }
 
+    public List<RankSequenceDTO> getList(QueryWrapper<RankSequence> queryWrapper){
+        queryWrapper.eq("rs.parent_id","0")
+                .eq("rs.del_flag","0")
+                .orderByAsc("rs.sort")
+                .orderByDesc("rs.create_date");
+        return rankSequenceMapper.getList(queryWrapper);
+    }
+
     public void updateUseFlagById(List<String> ids, String useFlag){
         rankSequenceMapper.updateUseFlagById(ids,useFlag);
     }

+ 7 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/service/dto/RankSequenceDTO.java

@@ -41,9 +41,16 @@ public class RankSequenceDTO extends BaseDTO {
      */
     private String useFlag;
 
+    /**
+     * 父序列id
+     */
+    private String parentId;
+
     private List<String> officeIdList;
 
     private List<Office> officeList;
 
+    private List<RankSequenceDTO> rankSequenceDTOList;
+
     private static final long serialVersionUID = 1L;
 }