Browse Source

Merge branch 'V0.0.1' of http://10.87.10.227:4000/jzyd_yyds/soc into V0.0.1

# Conflicts:
#	soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppPlanMapper.java
#	soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java
#	soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppPlanMapper.xml
jiawuxian 2 years ago
parent
commit
581c4c0b7b

+ 6 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysUser.java

@@ -218,6 +218,12 @@ public class SysUser extends BaseEntity {
     @ApiModelProperty(value = "同步人员的编码")
     private String code;
 
+    /**
+     * 原始机构id
+     */
+    @ApiModelProperty(value = "原始机构id")
+    private Long originalOrgId;
+
 
     /** 机构对象 */
     @TableField(exist = false)

+ 2 - 2
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/dto/CoreEduTrainingPlanPageDto.java

@@ -1,6 +1,6 @@
 package com.xunmei.common.core.domain.edu.dto;
 
-import com.xunmei.common.core.web.domain.BaseEntity;
+import com.xunmei.common.core.web.domain.PageRequest;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -13,7 +13,7 @@ import lombok.experimental.Accessors;
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-public class CoreEduTrainingPlanPageDto extends BaseEntity {
+public class CoreEduTrainingPlanPageDto extends PageRequest {
     //页面左侧机构 针对的是培训机构也就是计划所属机构
 
     @ApiModelProperty(value = "执行机构类型")

+ 0 - 11
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/web/domain/BaseEntity.java

@@ -1,7 +1,6 @@
 package com.xunmei.common.core.web.domain;
 
 import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
@@ -147,14 +146,4 @@ public class BaseEntity implements Serializable {
         this.params = params;
     }
 
-    public <T> Page<T> getPage() {
-        Page<T> page;
-        //分页
-        if (getPageNum() != null && getPageSize() != null) {
-            page = new Page<>(getPageNum(), getPageSize());
-        } else {
-            page = new Page<>();
-        }
-        return page;
-    }
 }

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java

@@ -88,7 +88,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             request.setBelongOrgPath(r.getPath());
         }
         //获取数据
-        Page<CoreEduTrainingPlanPageVo> page = coreEduTrainingPlanMapper.selectPageData(request.getPage(), request);
+        Page<CoreEduTrainingPlanPageVo> page = coreEduTrainingPlanMapper.selectPageData(request.getPageRequest(), request);
         SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectTopOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         List<CoreEduTrainingPlanPageVo> records = page.getRecords();
         for (CoreEduTrainingPlanPageVo record : records) {

+ 2 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ApiPlanController.java

@@ -50,8 +50,8 @@ public class ApiPlanController {
     @RequiresPermissions("core:plan:find")
     public AjaxResult hostList(@RequestBody CoreResumptionPlanPageDto info) {
 
-        Page<AppPlan> result = appPlanService.selectPage(info);
-        return AjaxResult.success(result);
+//        Page<AppPlan> result = ;
+        return AjaxResult.success(appPlanService.selectPage(info));
     }
 
     @PostMapping("/distribute")

+ 5 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/AppPlan.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
+import io.swagger.models.auth.In;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -12,6 +13,7 @@ import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 履职,安全检查计划表(core_resumption_plan)实体类
@@ -27,7 +29,8 @@ import java.util.Date;
 @AllArgsConstructor
 public class AppPlan extends Model<AppPlan> implements Serializable {
     private static final long serialVersionUID = 1L;
-
+    @TableField(exist = false)
+    private Integer orgType;
     /**
      * 主键
      */
@@ -38,6 +41,7 @@ public class AppPlan extends Model<AppPlan> implements Serializable {
      */
 
     private String planName;
+    private List<AppPlan> children;
     /**
      * 计划类型 0:履职计划,1,安全检查,2教育培训
      */

+ 11 - 4
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppPlanMapper.java

@@ -18,37 +18,44 @@ import java.util.List;
  * 履职,安全检查计划表(core_resumption_plan)数据Mapper
  *
  * @author 高雄
- * @since 2022-04-27 16:38:43
  * @description 由 Mybatisplus Code Generator 创建
-*/
+ * @since 2022-04-27 16:38:43
+ */
 @Repository
 @Mapper
 public interface AppPlanMapper extends BaseMapper<AppPlan> {
 
     /**
      * 自定义分页查询
+     *
      * @param page
      * @param plan
      * @return
      */
     Page<AppPlan> selectPage(Page<AppPlan> page, @Param("info") CoreResumptionPlanPageDto plan);
 
+    List<AppPlan> selectAll(@Param("info") CoreResumptionPlanPageDto plan);
+
     /**
-     *通过履职计划id获取履职任务执行机构
+     * 通过履职计划id获取履职任务执行机构
+     *
      * @param plan_id
      * @return
      */
     List<Long> findExecOrgByPlan(Long plan_id);
+
     /**
      * 获取检查要点分页查询
+     *
      * @param page
      * @param item
      * @return
      */
-    Page<RuleItemVo> selectItemPage(Page<RuleItemVo> page, @Param("info")  RuleItemVo item);
+    Page<RuleItemVo> selectItemPage(Page<RuleItemVo> page, @Param("info") RuleItemVo item);
 
     /**
      * 获取计划下的履职要点
+     *
      * @param id
      * @return List<com.isp.plan.vo.RuleItemVo>
      * @author 高雄

+ 72 - 4
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java

@@ -17,6 +17,7 @@ import com.xunmei.core.resumption.vo.appPlan.AppPlanVo;
 import com.xunmei.core.resumption.vo.appPlan.RuleItemVo;
 import com.xunmei.core.resumption.vo.appPlan.RuleRequestVo;
 import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.domain.SysDept;
 import com.xunmei.system.api.domain.SysOrg;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -69,11 +70,75 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
 
     @Override
     public Page<AppPlan> selectPage(CoreResumptionPlanPageDto info) {
-        Page<AppPlan> page = info.getPageDto();
-        Page<AppPlan> result = baseMapper.selectPage(page, info);
+        //获取选择机构id
+        Long orgid = info.getOrgId();
+        //下穿计算
+//        if (info.isCheckSub()) {
+//            List<Long> ids = orgService.selectCheckSubOrgIdList(info.getOrgId(), SecurityConstants.INNER);
+//            info.setIds(ids);
+//            info.setOrgId(null);
+//
+//        }
+        //获取前段对应的数据库页数
+        int current = Math.toIntExact(info.getPageNum() - 1);
+        int size = Math.toIntExact(info.getPageSize());
+        Page<AppPlan> result = new Page<>();
+        //查询所有数据
+        List<AppPlan> sel = baseMapper.selectAll(info);
+        //list转树结构
+        List<AppPlan> appPlans = recursionDept(sel,orgid);
+        //计算分页所需数组起始位置
+        int start = current * size;
+        int end = Math.min(start + size, appPlans.size());
+        //封装前端需要的分页数据
+        result.setRecords(appPlans.subList(start, end));
+
+        //计算最外层数量
+        long total = appPlans.size();
+        result.setTotal(total);
+        result.setPages(total / info.getPageSize());
         return result;
     }
 
+    /**
+     * dept递归方法转换成树形结构
+     *
+     * @param treeList
+     * @return
+     */
+    public static List<AppPlan> recursionDept(List<AppPlan> treeList,Long orgid) {
+        List<AppPlan> trees = new ArrayList<>();
+        for (AppPlan tree : treeList) {
+            // 找出父节点
+            if (-1 == tree.getParentId()) {
+                // 调用递归方法填充子节点列表
+                trees.add(findChildren(tree, treeList));
+            }
+        }
+        return trees;
+    }
+
+    /**
+     * dept递归方法
+     *
+     * @param tree     父节点对象
+     * @param treeList 所有的List
+     * @return
+     */
+    public static AppPlan findChildren(AppPlan tree, List<AppPlan> treeList) {
+        for (AppPlan node : treeList) {
+            if (tree.getId().equals(node.getParentId())) {
+                if (tree.getChildren() == null) {
+                    tree.setChildren(new ArrayList<>());
+                }
+                // 递归 调用自身
+                tree.getChildren().add(findChildren(node, treeList));
+            }
+        }
+        return tree;
+    }
+
+
     @Override
     public List<Long> findExecOrgByPlan(Long plan_id) {
         return baseMapper.findExecOrgByPlan(plan_id);
@@ -91,6 +156,7 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
 
             AppPlan plan = baseMapper.selectById(dto.getId());
             plan.setOrgId(d.getOrgId().toString());
+            plan.setDistributeStatus("1");
             plan.setPlanOfOrgId(d.getOrgId().toString());
             plan.setPlanStatus(d.getStatus());
             plan.setDistributePlanStatus(d.getStatus().toString());
@@ -162,6 +228,8 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
     public void saveOrUpdatePlan(AppPlanVo app) throws Exception {
         AppPlan plan = convertToAppPlan(app);
         if (app.getId() == null) {
+            plan.setParentId(-1L);
+            plan.setDeleted(0);
             //新增
             plan.setPlanOfOrgId(app.getPlanCreateOrgId());
             plan.setPlanOfOrgName(app.getPlanCreateOrgName());
@@ -224,7 +292,7 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
 //
 //            }
         } else {
-            if(app.getRoleList()==null){
+            if (app.getRoleList() == null) {
                 app.setRoleList(new ArrayList<>());
             }
             //修改
@@ -242,7 +310,7 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
             baseMapper.updateById(plan);
 
             Long id = plan.getId();
-            if(app.getRoleList().size()>0){
+            if (app.getRoleList().size() > 0) {
                 QueryWrapper<AppPlanToRole> apr = new QueryWrapper<>();
                 apr.lambda().eq(AppPlanToRole::getPlanId, id);
                 appPlanToRoleMapper.delete(apr);

+ 5 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/appPlan/AppPlanVo.java

@@ -21,7 +21,7 @@ import java.util.List;
 @AllArgsConstructor
 public class AppPlanVo extends PageDto<AppPlan> {
 
-
+private List<Long> ids;
     private Long id;
 
     /**
@@ -74,7 +74,10 @@ public class AppPlanVo extends PageDto<AppPlan> {
     private String count;
     private String planCreateOrgId;
     private String planCreateOrgName;
-
+    /**
+     * 是否下穿
+     */
+    private boolean checkSub;
     /**
      * 备注
      */

+ 90 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppPlanMapper.xml

@@ -6,7 +6,8 @@
     </sql>
 
     <sql id="baseColumn">
-        id,plan_name,plan_type,plan_cycle,plan_exec,exec_org_type,check_org_type,check_type,exec_type,plan_status,description,create_time,modified_name,update_time,modified_by
+        id
+        ,plan_name,plan_type,plan_cycle,plan_exec,exec_org_type,check_org_type,check_type,exec_type,plan_status,description,create_time,modified_name,update_time,modified_by
     </sql>
 
     <resultMap id="appPlans" type="com.xunmei.core.resumption.domain.AppPlan">
@@ -82,6 +83,9 @@
             <if test="info.orgType != null">
                 and a.exec_org_type = #{info.orgType}
             </if>
+            <if test="info.orgId != null">
+                and a.plan_of_org_id = #{info.orgId}
+            </if>
             <if test="info.roleList != null and info.roleList.size > 0">
                 and a.id in (select plan_id from core_resumption_plan_to_role where role_id in
                 <foreach collection="info.roleList" item="roleId" index="index" open="(" separator="," close=")">
@@ -106,6 +110,12 @@
                                             where path like concat((select path from sys_org where id=#{info.orgId}),'%'))
                 </if>
             )
+            <if test="info.ids!=null and info.ids.size > 0">
+                and a.plan_of_org_id in
+                <foreach collection="info.ids" item="orgId" index="index" open="(" separator="," close=")">
+                    #{orgId}
+                </foreach>
+            </if>
         </where>
     </select>
     <select id="selectItemPage" parameterType="com.xunmei.core.resumption.vo.appPlan.RuleItemVo"
@@ -238,4 +248,83 @@
         </foreach>
         and deleted=0
     </select>
+    <select id="selectAll" resultType="com.xunmei.core.resumption.domain.AppPlan">
+        SELECT
+        a.*,
+        d.roleNames,
+        b.orgId,
+        b.orgNames,
+        o.name as plan_of_org_name,
+        g.name as plan_create_org_name,
+        g.type as org_type
+        FROM
+        core_resumption_plan a
+        LEFT JOIN (
+        SELECT
+        m.plan_id,
+        GROUP_CONCAT( n.`name` ) orgNames,
+        GROUP_CONCAT( n.id ) orgId
+        FROM
+        core_resumption_plan_to_exec_org m
+        LEFT JOIN sys_org n ON m.org_id = n.id
+
+        GROUP BY
+        m.plan_id
+        ) b ON a.id = b.plan_id
+        LEFT JOIN (
+        SELECT
+        r.plan_id,
+        group_concat( t.`role_name` ) roleNames
+        FROM
+        core_resumption_plan_to_role r
+        LEFT JOIN sys_role t ON r.role_id = t.id
+        GROUP BY
+        r.plan_id
+        ) d ON a.id = d.plan_id
+        LEFT JOIN sys_org o ON a.plan_of_org_id = o.id
+        LEFT JOIN sys_org g ON a.plan_create_org_id = g.id
+
+        <where>
+            a.deleted=0
+            <if test="info.planName != '' and info.planName != null">
+                and a.plan_name LIKE CONCAT('%', #{info.planName}, '%' )
+            </if>
+            <if test="info.planStatus != null">
+                and a.plan_status = #{info.planStatus}
+            </if>
+            <if test="info.planCycle != null">
+                and a.plan_cycle = #{info.planCycle}
+            </if>
+            <if test="info.planExec != null">
+                and a.plan_exec = #{info.planExec}
+            </if>
+            <if test="info.orgType != null">
+                and a.exec_org_type = #{info.orgType}
+            </if>
+            <if test="info.orgId != null">
+                and a.plan_of_org_id = #{info.orgId}
+            </if>
+            <if test="info.roleList != null and info.roleList.size > 0">
+                and a.id in (select plan_id from core_resumption_plan_to_role where role_id in
+                <foreach collection="info.roleList" item="roleId" index="index" open="(" separator="," close=")">
+                    #{roleId}
+                </foreach>
+                )
+            </if>
+            <if test="info.orgList != null and info.orgList.size > 0">
+                and a.id in (select plan_id from core_resumption_plan_to_exec_org where org_id in
+                <foreach collection="info.orgList" item="orgId" index="index" open="(" separator="," close=")">
+                    #{orgId}
+                </foreach>
+                )
+            </if>
+            <if test="info.ids!=null and info.ids.size > 0">
+                and a.plan_of_org_id in
+                <foreach collection="info.ids" item="orgId" index="index" open="(" separator="," close=")">
+                    #{orgId}
+                </foreach>
+            </if>
+        </where>
+
+    </select>
 </mapper>

+ 10 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysUserMapper.java

@@ -1,6 +1,7 @@
 package com.xunmei.system.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.domain.vo.SysUserVO;
@@ -10,7 +11,7 @@ import java.util.List;
 
 /**
  * 用户表 数据层
- * 
+ *
  * @author xunmei
  */
 public interface SysUserMapper extends BaseMapper<SysUser>
@@ -24,6 +25,14 @@ public interface SysUserMapper extends BaseMapper<SysUser>
      List<SysUser> selectUserList(SysUser sysUser);
 
     /**
+     * sql重写分页数据
+     * @param page
+     * @param info
+     * @return
+     */
+     Page<SysUser> getPage(Page<SysUser> page,@Param("info") SysUser info);
+
+    /**
      * 根据条件分页查询已配用户角色列表
      *
      * @param user 用户信息

+ 10 - 27
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java

@@ -91,38 +91,21 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         } else {
             page = new Page<>();
         }
+
         //查询条件
-        QueryWrapper<SysUser> query = new QueryWrapper<>(user);
-        QueryWrapper queryWrapper = new QueryWrapper();
-        queryWrapper.eq("parent_id", -1);
-        SysOrg sysOrg1 = sysOrgMapper.selectOne(queryWrapper);
+        QueryWrapper<SysOrg> queryWrapper = new QueryWrapper<>();
+        SysOrg org = null;
         if (null == user.getOrgId()) {
-            user.setOrgId(sysOrg1.getId());
+            queryWrapper.eq("parent_id", -1);
+            org = sysOrgMapper.selectOne(queryWrapper);
+        }else{
+            org = sysOrgMapper.selectById(user.getOrgId());
         }
-        //下穿
-        if (user.getCheckSub()) {
-            List<Long> ids = orgService.selectCheckSubOrgIdList(user.getOrgId());
-            //清空前端传递的org_id
-            user.setOrgId(null);
-            //添加in条件
-            query.in("org_id", ids);
+        user.setOrgPath(org.getPath());
 
-        }
-        //时间范围查询
-        if (user.getParams().get("beginTime") != null && user.getParams().get("endTime") != null) {
-            query.between("create_time", user.getParams().get("beginTime"), user.getParams().get("endTime"));
-        }
-        //模糊查询
-        if (StringUtils.isNotNull(user.getUsername())) {
-            query.like("username", user.getUsername());
-            user.setUsername(null);
-        }
         //获取数据
-        page = userMapper.selectPage(page, query);
-        for (SysUser u :
-                page.getRecords()) {
-            u.setOrgName(orgService.selectSysOrgById(u.getOrgId()).getName());
-        }
+        page = userMapper.getPage(page,user);
+
         //抓换为TableDataInfo适配前端
         return TableDataInfo.build(page);
 

+ 67 - 3
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -137,7 +137,7 @@
     </select>
 
     <select id="selectAllocatedList" parameterType="com.xunmei.system.domain.vo.SysUserVO"
-            resultType="com.xunmei.system.domain.vo.SysUserVO">
+            resultType="com.xunmei.system.api.domain.SysUser">
         select distinct u.name as name,u.is_lock as isLock, u.id as id, u.dept_id as deptId, u.username as username,
         u.phone as phone, u.create_time as createTime
         from sys_user u
@@ -156,7 +156,7 @@
     </select>
 
     <select id="selectUnallocatedList" parameterType="com.xunmei.system.domain.vo.SysUserVO"
-            resultType="com.xunmei.system.domain.vo.SysUserVO">
+            resultType="com.xunmei.system.api.domain.SysUser">
         select distinct u.id, u.dept_id, u.username, u.name, u.phone, u.is_lock, u.create_time
         from sys_user u
         left join sys_dept d on u.dept_id = d.dept_id
@@ -388,4 +388,68 @@
                  inner join sys_user u on o.id = u.org_id
         where u.id = #{userId}
     </select>
-</mapper>
+
+    <select id="getPage" resultType="com.xunmei.system.api.domain.SysUser">
+        select
+        u.id,
+        u.dept_id,
+        u.is_lock,
+        u.job_id,
+        u.name,
+        u.username,
+        u.org_id,
+        u.phone,
+        u.create_time,
+        u.modified_name,
+        u.update_time,
+        u.modified_id,
+        u.password,
+        u.salt,
+        u.deleted,
+        u.last_ip,
+        u.last_time,
+        o.name as org_name,
+        o.path as org_path,
+        u.image,
+        u.card,
+        u.gender,
+        u.job_number,
+        u.note,
+        u.is_sign,
+        u.sign_time,
+        u.agreement_id,
+        u.sign_version,
+        u.approve_status,
+        u.locked,
+        u.create_by,
+        u.update_by,
+        u.code,
+        u.source,
+        u.original_org_id
+        from sys_user u
+        left join  sys_org o on u.original_org_id = o.id
+        where 1=1
+        <choose>
+            <when test="info.checkSub">
+                AND o.path like concat('%', #{info.orgPath}, '%')
+            </when>
+            <otherwise>
+                AND o.id = #{info.orgId}
+            </otherwise>
+        </choose>
+        <if test="info.isLock != null and info.isLock != ''">
+            AND u.is_lock = #{isLock}
+        </if>
+        <if test="info.username != null and info.username != ''">
+            AND u.username like concat('%', #{info.username}, '%')
+        </if>
+        <if test="info.params.beginTime != null and info.params.beginTime != ''">
+            <!-- 开始时间检索 -->
+            AND date_format(u.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
+        </if>
+        <if test="info.params.endTime != null and info.params.endTime != ''">
+            <!-- 结束时间检索 -->
+            AND date_format(u.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
+        </if>
+    </select>
+</mapper>