瀏覽代碼

职级模块开发

lizhenhao 2 年之前
父節點
當前提交
9510409bd5

+ 1 - 2
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/controller/RankController.java

@@ -97,8 +97,7 @@ public class RankController {
     @PreAuthorize("hasAnyAuthority('rank:rank:save','rank:rank:edit')")
     @PostMapping("save")
     public ResponseEntity save(@Valid @RequestBody RankDTO rankDTO, HttpServletRequest request) {
-        rankService.saveRank(rankDTO);
-        return ResponseEntity.ok ("保存职级成功");
+        return rankService.saveRank(rankDTO);
     }
 
     /**

+ 37 - 9
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/mapper/xml/RankMapper.xml

@@ -29,23 +29,50 @@
     <result column="sort" jdbcType="INTEGER" property="sort" />
     <result column="group_name" jdbcType="VARCHAR" property="groupName" />
     <result column="use_flag" jdbcType="VARCHAR" property="useFlag" />
-    <collection property="sequenceDTOList" ofType="com.jeeplus.test.rank.service.dto.RankSequenceDTO">
-      <id property="id" column="rs_id" jdbcType="VARCHAR"></id>
-      <result property="name" column="rs_name" jdbcType="VARCHAR"></result>
-    </collection>
+    <collection property="sequenceDTOList" ofType="com.jeeplus.test.rank.service.dto.RankSequenceDTO" column="id" select="getSequenceDTOList"/>
+    <collection property="rankList" ofType="com.jeeplus.test.rank.service.dto.RankChildrenDTO" column="id" select="getRankList"/>
   </resultMap>
 
+
   <select id="findList" resultType="com.jeeplus.test.rank.service.dto.RankDTO" resultMap="listMap">
     select
-    <include refid="Base_Column_List"></include>,
-    rs.id rs_id,
-    rs.name rs_name
+    <include refid="Base_Column_List"></include>
     from rank r
-    left join rank_r_rs rrr on rrr.rank_id = r.id and rrr.del_flag = '0'
-    left join rank_sequence rs on rrr.rs_id = rs.id and rs.del_flag = '0'
     ${ew.customSqlSegment}
   </select>
 
+  <select id="getSequenceDTOList" resultType="com.jeeplus.test.rank.service.dto.RankSequenceDTO">
+    select
+        rs.id,
+        rs.name
+    from rank_r_rs rrr
+    left join rank_sequence rs on rs.id = rrr.rs_id and rs.del_flag = '0'
+    where rrr.rank_id = #{id} and rrr.del_flag = '0'
+  </select>
+
+
+  <select id="getRankList" resultType="com.jeeplus.test.rank.service.dto.RankChildrenDTO" resultMap="getChildren">
+    select
+        rc.id,
+        rc.name,
+        rc.rank_parent
+    from rank_children rc
+    where rc.rank_id = #{id} and rc.del_flag = '0' and rc.rank_parent = '0'
+  </select>
+
+  <resultMap id="getChildren" type="com.jeeplus.test.rank.service.dto.RankChildrenDTO">
+    <collection property="rankListChildren" ofType="com.jeeplus.test.rank.service.dto.RankChildrenDTO" column="id" select="getRankListChildren"/>
+  </resultMap>
+
+  <select id="getRankListChildren" resultType="com.jeeplus.test.rank.service.dto.RankChildrenDTO">
+    select
+        rc_c.id,
+        rc_c.name,
+        rc_c.rank_parent
+    from rank_children rc_c
+    where rc_c.rank_parent = #{id} and rc_c.del_flag = '0'
+  </select>
+
   <select id="getById" resultMap="queryByIdMap">
     select
     <include refid="Base_Column_List"></include>,
@@ -69,6 +96,7 @@
     <collection property="sequenceIdList" ofType="string">
       <id column="rs_id" jdbcType="VARCHAR"></id>
     </collection>
+    <collection property="rankList" ofType="com.jeeplus.test.rank.service.dto.RankChildrenDTO" column="id" select="getRankList"/>
   </resultMap>
 
   <update id="updateUseFlagById">

+ 120 - 7
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/service/RankService.java

@@ -9,19 +9,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jeeplus.sys.utils.UserUtils;
 import com.jeeplus.test.rank.domain.*;
-import com.jeeplus.test.rank.mapper.RankLevelMapper;
+import com.jeeplus.test.rank.mapper.RankChildrenMapper;
 import com.jeeplus.test.rank.mapper.RankMapper;
 import com.jeeplus.test.rank.mapper.RankRRsMapper;
 import com.jeeplus.test.rank.service.dto.RankDTO;
-import com.jeeplus.test.rank.service.dto.RankSequenceDTO;
-import com.jeeplus.test.rank.service.mapstruct.RankSequenceWrapper;
+import com.jeeplus.test.rank.service.mapstruct.RankChildrenWrapper;
 import com.jeeplus.test.rank.service.mapstruct.RankWrapper;
 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.List;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
 
 @Service
 @Transactional
@@ -33,6 +35,9 @@ public class RankService extends ServiceImpl<RankMapper, Rank> {
     @Autowired
     private RankRRsMapper rankRRsMapper;
 
+    @Autowired
+    private RankChildrenMapper rankChildrenMapper;
+
     public IPage<RankDTO> findList(Page<RankDTO> page, QueryWrapper<Rank> queryWrapper){
         queryWrapper.eq("r.del_flag","0");
         return rankMapper.findList(page,queryWrapper);
@@ -42,19 +47,127 @@ public class RankService extends ServiceImpl<RankMapper, Rank> {
         return rankMapper.getById(id);
     }
 
-    public void saveRank(RankDTO rankDTO){
+    public ResponseEntity saveRank(RankDTO rankDTO){
         Rank rank = RankWrapper.INSTANCE.toEntity(rankDTO);
+        if(ObjectUtil.isNotEmpty(rank)){
+            if(StrUtil.isNotEmpty(rank.getId())&&StrUtil.isNotEmpty(rank.getGroupName())){
+                List<Rank> rank1 = rankMapper.selectList(new QueryWrapper<Rank>().ne("id", rank.getId()).eq("group_name", rank.getGroupName()));
+                if(CollectionUtil.isNotEmpty(rank1)){
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return ResponseEntity.badRequest().body("分组名称已存在");
+                }
+            }else if(StrUtil.isEmpty(rank.getId())&&StrUtil.isNotEmpty(rank.getGroupName())){
+                List<Rank> rank2 = rankMapper.selectList(new QueryWrapper<Rank>().eq("group_name", rank.getGroupName()));
+                if(CollectionUtil.isNotEmpty(rank2)){
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return ResponseEntity.badRequest().body("分组名称已存在");
+                }
+            }
+        }
         this.saveOrUpdate(rank);
         if(ObjectUtil.isNotEmpty(rankDTO)){
             if(StrUtil.isNotEmpty(rankDTO.getId())){
+                rankChildrenMapper.delete(new QueryWrapper<RankChildren>().eq("rank_id",rankDTO.getId()));
+//                List<String> rankChildrenIdList = rankChildrenMapper.selectList(new QueryWrapper<RankChildren>().eq("rank_id", rankDTO.getId())).stream().map(RankChildren::getId).collect(Collectors.toList());
+                /*List<String> childIdList = new ArrayList<>();
+                if(CollectionUtil.isNotEmpty(rankDTO.getRankList())){
+                    rankDTO.getRankList().stream().forEach(item->{
+                        if(StrUtil.isNotEmpty(item.getId())){
+                            childIdList.add(item.getId());
+                            if(CollectionUtil.isNotEmpty(item.getRankListChildren())){
+                                item.getRankListChildren().stream().forEach(item2->{
+                                    if(StrUtil.isNotEmpty(item2.getId())){
+                                        childIdList.add(item2.getId());
+                                    }
+                                });
+                            }
+                        }
+                    });
+                }
+                if(CollectionUtil.isNotEmpty(childIdList)){
+                    rankChildrenMapper.delete(new QueryWrapper<RankChildren>().notIn("id",childIdList).eq("rank_id",rankDTO.getId()));
+                }else{
+                    rankChildrenMapper.delete(new QueryWrapper<RankChildren>().eq("rank_id",rankDTO.getId()));
+                }*/
                 rankRRsMapper.delete(new QueryWrapper<RankRRs>().eq("rank_id",rankDTO.getId()));
                 if(CollectionUtil.isNotEmpty(rankDTO.getSequenceIdList())){
                     rankRRsMapper.insertListById(rankDTO.getId(),rankDTO, UserUtils.getCurrentUserDTO().getId());
                 }
-            }{
+            }else{
                 rankRRsMapper.insertListById(rank.getId(),rankDTO, UserUtils.getCurrentUserDTO().getId());
             }
+
+            if(CollectionUtil.isNotEmpty(rankDTO.getRankList())){
+                HashMap<String,Object> rankList = new HashMap<>();
+                AtomicReference<String> err = new AtomicReference<>("");
+                rankDTO.getRankList().stream().forEach(item->{
+                    rankList.put(item.getName(),null);
+                    if(CollectionUtil.isNotEmpty(item.getRankListChildren())){
+                        HashMap<String,Object> childrenList = new HashMap<>();
+                        item.getRankListChildren().stream().forEach(item2->{
+                            childrenList.put(item2.getName(),null);
+                        });
+                        if(childrenList.size() != item.getRankListChildren().size()){
+                            err.set("职级“"+item.getName()+"”下有子职级重复");
+                            return;
+                        }
+                    }
+                });
+                if(StrUtil.isNotEmpty(err.get())){
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return ResponseEntity.badRequest().body(err.get());
+                }
+                if(rankList.size() != rankDTO.getRankList().size()){
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                   return ResponseEntity.badRequest().body("含有重复职级");
+                }
+            }
+
+
+            if(CollectionUtil.isNotEmpty(rankDTO.getRankList())){
+                rankDTO.getRankList().stream().forEach(item->{
+                    if(ObjectUtil.isNotEmpty(item)){
+                        RankChildren rankChildren = new RankChildren();
+                        rankChildren.setName(item.getName());
+                        /*if(StrUtil.isNotEmpty(rankChildren.getId())){
+                            rankChildrenMapper.update(rankChildren,new QueryWrapper<RankChildren>().eq("id",rankChildren.getId()));
+                            if(CollectionUtil.isNotEmpty(item.getRankListChildren())){
+                                item.getRankListChildren().stream().forEach(item2->{
+                                    RankChildren rankChildren2 = RankChildrenWrapper.INSTANCE.toEntity(item2);
+                                    if(ObjectUtil.isNotEmpty(rankChildren2)){
+                                        if(StrUtil.isNotEmpty(rankChildren2.getId())){
+                                            rankChildrenMapper.update(rankChildren2,new QueryWrapper<RankChildren>().eq("id",rankChildren2.getId()));
+                                        }else{
+                                            rankChildren2.setRankLevel("2");
+                                            rankChildren2.setRankId(rank.getId());
+                                            rankChildren2.setRankParent(rankChildren.getId());
+                                            rankChildrenMapper.insert(rankChildren2);
+                                        }
+                                    }
+
+                                });
+                            }
+                        }else{*/
+                            rankChildren.setRankLevel("1");
+                            rankChildren.setRankId(rank.getId());
+                            rankChildren.setRankParent("0");
+                            rankChildrenMapper.insert(rankChildren);
+                            if(CollectionUtil.isNotEmpty(item.getRankListChildren())){
+                                item.getRankListChildren().stream().forEach(item2->{
+                                    RankChildren rankChildren2 = new RankChildren();
+                                    rankChildren2.setName(item2.getName());
+                                    rankChildren2.setRankLevel("2");
+                                    rankChildren2.setRankId(rank.getId());
+                                    rankChildren2.setRankParent(rankChildren.getId());
+                                    rankChildrenMapper.insert(rankChildren2);
+                                });
+                            }
+                        }
+                    /*}*/
+                });
+            }
         }
+        return ResponseEntity.ok("保存职级成功");
     }
 
     public void updateUseFlagById(List<String> ids, String useFlag){

+ 8 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/service/dto/RankChildrenDTO.java

@@ -6,6 +6,8 @@ import com.jeeplus.core.service.dto.BaseDTO;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * rank_children
  * @author 
@@ -40,9 +42,14 @@ public class RankChildrenDTO extends BaseDTO {
     private String rankParent;
 
     /**
-     * 职级名称
+     * 职级名称
      */
     private String name;
 
+    /**
+     * 子职级
+     */
+    private List<RankChildrenDTO> rankListChildren;
+
     private static final long serialVersionUID = 1L;
 }

+ 5 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/service/dto/RankDTO.java

@@ -46,5 +46,10 @@ public class RankDTO extends BaseDTO {
      */
     private List<RankSequenceDTO> sequenceDTOList;
 
+    /**
+     * 职级
+     */
+    private List<RankChildrenDTO> rankList;
+
     private static final long serialVersionUID = 1L;
 }