jingyuanchao 2 жил өмнө
parent
commit
1b7080f580

+ 31 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/dto/SysLearningMaterialsFileListPageDto.java

@@ -0,0 +1,31 @@
+package com.xunmei.common.core.domain.edu.dto;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.xunmei.common.core.web.domain.PageRequest;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * @author jingyuanchao
+ * @date 2023/9/3 15:40
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SysLearningMaterialsFileListPageDto extends PageRequest {
+    @ApiModelProperty(value = "机构id")
+    private Long orgId;
+
+    @ApiModelProperty(value = "学习标题")
+    private String title;
+
+    @ApiModelProperty(value = "附件名称")
+    private String fileName;
+
+    @ApiModelProperty(value = "上级id集合",notes = "此字段无需传递,后台自行获取")
+    private List<Long> orgIdList;
+}

+ 2 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/vo/CoreEduTrainingPlanDataVo.java

@@ -79,4 +79,6 @@ public class CoreEduTrainingPlanDataVo {
     @ApiModelProperty(value = "附件")
     private List<String> fileList;
 
+    @ApiModelProperty(value = "附件",notes = "此字段不可用,仅作为mapper查询时映射暂存")
+    private String file;
 }

+ 4 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/controller/SysLearningMaterialsController.java

@@ -1,6 +1,7 @@
 package com.xunmei.core.edu.controller;
 
 import com.xunmei.common.core.domain.edu.domain.SysLearningMaterials;
+import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsFileListPageDto;
 import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsInsertDto;
 import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsPageDto;
 import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsUpdateDto;
@@ -114,9 +115,9 @@ public class SysLearningMaterialsController extends BaseController {
     }
 
     @ApiOperation(value = "获取学习资料及文件列表")
-    @GetMapping("/fileList/{orgId}")
-    public AjaxResult fileList(@PathVariable Long orgId) {
-        return AjaxResult.success(sysLearningMaterialsService.fileList(orgId));
+    @PostMapping("/fileList")
+    public AjaxResult filePageList(@RequestBody SysLearningMaterialsFileListPageDto request) {
+        return AjaxResult.success(sysLearningMaterialsService.filePageList(request));
     }
 
 }

+ 7 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/SysLearningMaterialsMapper.java

@@ -1,10 +1,15 @@
 package com.xunmei.core.edu.mapper;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.common.core.domain.edu.domain.SysLearningMaterials;
+import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsFileListPageDto;
 import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsPageDto;
+import com.xunmei.common.core.domain.edu.vo.SysLearningMaterialsFileListVo;
 import com.xunmei.common.core.domain.edu.vo.SysLearningMaterialsPageVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -64,4 +69,6 @@ public interface SysLearningMaterialsMapper extends BaseMapper<SysLearningMateri
     public int deleteSysLearningMaterialsByIds(Long[] ids);
 
     Page<SysLearningMaterialsPageVo> selectPageData(@Param("page") Page<SysLearningMaterialsPageVo> page, @Param("request") SysLearningMaterialsPageDto sysLearningMaterials);
+
+    IPage<SysLearningMaterialsFileListVo> selectFilePageList(Page<SysLearningMaterialsFileListVo> pageRequest, @Param("request") SysLearningMaterialsFileListPageDto request);
 }

+ 2 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/ICoreEduTrainingPlanService.java

@@ -52,6 +52,8 @@ public interface ICoreEduTrainingPlanService extends IService<CoreEduTrainingPla
      */
     int updateCoreEduTrainingPlan(CoreEduTrainingPlanEditDto coreEduTrainingPlan);
 
+    CoreEduTrainingPlanDataVo getCoreEduTrainingPlanDataVo(Long id);
+
     /**
      * 批量删除教育培训计划
      *
@@ -87,7 +89,4 @@ public interface ICoreEduTrainingPlanService extends IService<CoreEduTrainingPla
      * @return Page
      */
     List<SysOrg> getExecuteOrg(CoreEduTrainingPlan plan);
-
-    CoreEduTrainingPlanDataVo getDetailPlanData(Long id);
-
 }

+ 3 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/ISysLearningMaterialsService.java

@@ -3,7 +3,9 @@ package com.xunmei.core.edu.service;
 import java.io.IOException;
 import java.util.List;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsFileListPageDto;
 import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsInsertDto;
 import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsUpdateDto;
 import com.xunmei.common.core.domain.edu.vo.SysLearningMaterialsDetailVo;
@@ -81,5 +83,5 @@ public interface ISysLearningMaterialsService extends IService<SysLearningMateri
 
     void export(SysLearningMaterialsPageDto sysLearningMaterials, HttpServletResponse response) throws IOException;
 
-    List<SysLearningMaterialsFileListVo> fileList(Long orgId);
+    TableDataInfo filePageList(SysLearningMaterialsFileListPageDto request);
 }

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

@@ -209,7 +209,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 
         //如果不是省联社或者办事处,并且是无周期或者立即生效
         if ((!checkOrgType(plan.getExecOrgType())) && (ObjectUtil.equal(0, plan.getPlanCycle()) || ObjectUtil.equal(0, plan.getBuildTaskNow()))) {
-            CoreEduTrainingPlanDataVo detailPlanData = coreEduTrainingPlanMapper.getDetailPlanData(plan.getId());
+            CoreEduTrainingPlanDataVo detailPlanData = this.getCoreEduTrainingPlanDataVo(plan.getId());
             coreEduTrainingTaskService.createTaskForNow(detailPlanData, plan.getStartDate(), plan.getEndDate());
         }
 
@@ -255,6 +255,13 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         return coreEduTrainingPlanMapper.updateById(plan);
     }
 
+    @Override
+    public CoreEduTrainingPlanDataVo getCoreEduTrainingPlanDataVo(Long id) {
+        final CoreEduTrainingPlanDataVo dataVo = coreEduTrainingPlanMapper.getDetailPlanData(id);
+        dataVo.setFileList(ObjectUtil.isNotEmpty(dataVo.getFile()) ? JSON.parseArray(dataVo.getFile(), String.class) : null);
+        return dataVo;
+    }
+
     public void batchSavePlanToRole(List<Long> roleIdList, Long planId) {
         if (ObjectUtil.isEmpty(roleIdList)) {
             return;
@@ -398,8 +405,4 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 
     }
 
-    @Override
-    public CoreEduTrainingPlanDataVo getDetailPlanData(Long id) {
-        return coreEduTrainingPlanMapper.getDetailPlanData(id);
-    }
 }

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

@@ -35,6 +35,7 @@ import com.xunmei.core.edu.mapper.CoreEduTrainingPlanMapper;
 import com.xunmei.core.edu.mapper.CoreEduTrainingTaskMapper;
 import com.xunmei.core.edu.mapper.CoreEduTrainingTaskToRoleMapper;
 import com.xunmei.core.edu.mapper.CoreEduTrainingTaskToUserMapper;
+import com.xunmei.core.edu.service.ICoreEduTrainingPlanService;
 import com.xunmei.core.edu.service.ICoreEduTrainingTaskService;
 import com.xunmei.core.edu.service.ICoreEduTrainingTaskToRoleService;
 import com.xunmei.core.edu.service.ICoreEduTrainingTaskToUserService;
@@ -84,6 +85,8 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
     private ICoreEduTrainingTaskToUserService coreEduTrainingTaskToUserService;
     @Autowired
     private CoreEduTrainingPlanMapper coreEduTrainingPlanMapper;
+    @Autowired
+    private ICoreEduTrainingPlanService planService;
 
     @Override
     public TableDataInfo<CoreEduTrainingTaskPageVo> selectPage(CoreEduTrainingTaskPageDto request) {
@@ -483,12 +486,14 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         if (null == cycle) {
             planList = coreEduTrainingPlanMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingPlan>()
                     .eq(CoreEduTrainingPlan::getStandard, 0)
+                    .eq(CoreEduTrainingPlan::getPlanStatus, 0)
                     .in(CoreEduTrainingPlan::getPlanCycle, cycleList)
                     .eq(CoreEduTrainingPlan::getDeleted, 0)
                     .select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanCycle));
         } else {
             planList = coreEduTrainingPlanMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingPlan>()
                     .eq(CoreEduTrainingPlan::getStandard, 0)
+                    .eq(CoreEduTrainingPlan::getPlanStatus, 0)
                     .eq(CoreEduTrainingPlan::getPlanCycle, cycle)
                     .eq(CoreEduTrainingPlan::getDeleted, 0)
                     .select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanCycle));
@@ -501,7 +506,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         //此list中Plan对象仅id与planCycle字段有值,
         for (CoreEduTrainingPlan plan : planList) {
             CompletableFuture.runAsync(() -> {
-                CoreEduTrainingPlanDataVo detailPlanData = coreEduTrainingPlanMapper.getDetailPlanData(plan.getId());
+                CoreEduTrainingPlanDataVo detailPlanData = planService.getCoreEduTrainingPlanDataVo(plan.getId());
                 DateRange range = DateUtils.getStartAndEnd(finalDate, plan.getPlanCycle());
                 this.createTaskForNow(detailPlanData, range.getStartTime(), range.getEndTime());
             });

+ 21 - 23
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/SysLearningMaterialsServiceImpl.java

@@ -6,11 +6,13 @@ import cn.hutool.poi.excel.ExcelWriter;
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.edu.domain.SysLearningMaterials;
+import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsFileListPageDto;
 import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsInsertDto;
 import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsPageDto;
 import com.xunmei.common.core.domain.edu.dto.SysLearningMaterialsUpdateDto;
@@ -60,7 +62,8 @@ public class SysLearningMaterialsServiceImpl extends ServiceImpl<SysLearningMate
         } else {
             page = new Page<>();
         }
-        dealParentOrgId(sysLearningMaterials);
+        final List<Long> list = dealParentOrgId(sysLearningMaterials.getOrgId());
+        sysLearningMaterials.setOrgIdList(list);
         sysLearningMaterials.setUserId(SecurityUtils.getUserId());
         //获取数据
         page = sysLearningMaterialsMapper.selectPageData(page, sysLearningMaterials);
@@ -76,16 +79,16 @@ public class SysLearningMaterialsServiceImpl extends ServiceImpl<SysLearningMate
         return tableDataInfo;
     }
 
-    private void dealParentOrgId(SysLearningMaterialsPageDto sysLearningMaterials) {
-        SysOrg sysOrg = remoteOrgService.selectSysOrgById(sysLearningMaterials.getOrgId(), SecurityConstants.INNER);
+    private List<Long> dealParentOrgId(Long orgId) {
+        SysOrg sysOrg = remoteOrgService.selectSysOrgById(orgId, SecurityConstants.INNER);
         if (sysOrg == null || ObjectUtil.isEmpty(sysOrg.getPath())) {
             throw new RuntimeException("机构不存在或机构信息缺失!");
         }
         String[] split = sysOrg.getPath().split("-");
         List<Long> list = new ArrayList<>();
         Stream.of(split).forEach(s -> list.add(Long.valueOf(s)));
-        list.remove(sysLearningMaterials.getOrgId());
-        sysLearningMaterials.setOrgIdList(list);
+        //list.remove(sysLearningMaterials.getOrgId());
+        return list;
     }
 
     public void extractStringFromUrl(SysLearningMaterialsPageVo record) {
@@ -143,7 +146,7 @@ public class SysLearningMaterialsServiceImpl extends ServiceImpl<SysLearningMate
         sysLearningMaterials.setCreateTime(DateUtils.getNowDate());
         sysLearningMaterials.setUpdateBy(String.valueOf(SecurityUtils.getUserId()));
         sysLearningMaterials.setUpdateTime(DateUtils.getNowDate());
-        sysLearningMaterials.setFileList(ObjectUtil.isNotEmpty(request.getFileList())?JSON.toJSONString(request.getFileList()):null);
+        sysLearningMaterials.setFileList(ObjectUtil.isNotEmpty(request.getFileList()) ? JSON.toJSONString(request.getFileList()) : null);
         sysLearningMaterials.setIsOpen(0);
         SysOrg sysOrg = remoteOrgService.selectSysOrgById(sysLearningMaterials.getOrgId(), SecurityConstants.INNER);
         if (sysOrg != null) {
@@ -163,7 +166,7 @@ public class SysLearningMaterialsServiceImpl extends ServiceImpl<SysLearningMate
     public int updateSysLearningMaterials(SysLearningMaterialsUpdateDto request) {
         final SysLearningMaterials materials = getById(request.getId());
         BeanUtils.copyProperties(request, materials);
-        materials.setFileList(ObjectUtil.isNotEmpty(request.getFileList())?JSON.toJSONString(request.getFileList()):null);
+        materials.setFileList(ObjectUtil.isNotEmpty(request.getFileList()) ? JSON.toJSONString(request.getFileList()) : null);
         materials.setUpdateBy(String.valueOf(SecurityUtils.getUserId()));
         materials.setUpdateTime(DateUtils.getNowDate());
         return sysLearningMaterialsMapper.updateById(materials);
@@ -204,23 +207,18 @@ public class SysLearningMaterialsServiceImpl extends ServiceImpl<SysLearningMate
     }
 
     @Override
-    public List<SysLearningMaterialsFileListVo> fileList(Long orgId) {
-        final LambdaQueryWrapper<SysLearningMaterials> wrapper = new LambdaQueryWrapper<>();
-        final SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() -> remoteOrgService.selectOrgById(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
-        wrapper.eq(SysLearningMaterials::getIsOpen, 1);
-        wrapper.eq(SysLearningMaterials::getDeleted, 0);
-        wrapper.isNotNull(SysLearningMaterials::getFileList);
-        wrapper.likeRight(SysLearningMaterials::getOrgPath, sysOrg.getPath());
-        final List<SysLearningMaterials> list = sysLearningMaterialsMapper.selectList(wrapper);
-        if (ObjectUtil.isEmpty(list)) {
-            return new ArrayList<>();
+    public TableDataInfo filePageList(SysLearningMaterialsFileListPageDto request) {
+        final List<Long> list = dealParentOrgId(request.getOrgId());
+        request.setOrgIdList(list);
+        final IPage<SysLearningMaterialsFileListVo> page = sysLearningMaterialsMapper.selectFilePageList(request.getPageRequest(), request);
+        final List<SysLearningMaterialsFileListVo> records = page.getRecords();
+        if (ObjectUtil.isEmpty(records)) {
+            return TableDataInfo.build(page);
+        }
+        for (SysLearningMaterialsFileListVo record : records) {
+            record.setFileList(ObjectUtil.isNotEmpty(record.getFile()) ? JSON.parseArray(record.getFile(), String.class) : new ArrayList<>());
         }
-        return list.stream().map(sysLearningMaterials -> {
-            final SysLearningMaterialsFileListVo sysLearningMaterialsFileListVo = new SysLearningMaterialsFileListVo();
-            BeanUtils.copyProperties(sysLearningMaterials, sysLearningMaterialsFileListVo);
-            sysLearningMaterialsFileListVo.setFileList(JSON.parseArray(sysLearningMaterials.getFileList(), String.class));
-            return sysLearningMaterialsFileListVo;
-        }).collect(Collectors.toList());
+        return TableDataInfo.build(page);
     }
 
     @Override

+ 2 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingPlanMapper.xml

@@ -49,6 +49,7 @@
         <result property="standard" column="standard"/>
         <result property="issue" column="issue"/>
         <result property="parentId" column="parent_id"/>
+        <result property="file" column="file_list"/>
         <collection property="planRoleList" ofType="com.xunmei.common.core.domain.edu.domain.CoreEduTrainingPlanToRole"
                     select="com.xunmei.core.edu.mapper.CoreEduTrainingPlanToRoleMapper.selectListByPlanId" column="id">
             <result column="plan_id" property="planId"/>
@@ -403,7 +404,7 @@
             left join (select id from core_edu_training_plan p1 inner join core_edu_training_plan_to_role r1 on p1.id =
             r1.plan_id where r1.role_id = #{request.planRoleId} and p1.deleted=0) t on p.id = t.id and p.deleted=0
         </if>
-        where p.deleted = 0 and p.create_org_id=p.belong_org_id
+        where p.deleted = 0 and p.create_org_id=p.belong_org_id and p.plan_status = 0 and p.parent_id is null
 
         <if test="request.execOrgType!=null">
             and p.exec_org_type = #{request.execOrgType}

+ 23 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/edu/SysLearningMaterialsMapper.xml

@@ -88,7 +88,7 @@
             and m.knowledge_id = #{request.knowledgeId}
         </if>
         <if test="request.title != null ">
-            and m.title = #{request.title}
+            and m.title  like concat('%', #{request.title}, '%')
         </if>
     </sql>
     <select id="selectPageData" resultType="com.xunmei.common.core.domain.edu.vo.SysLearningMaterialsPageVo">
@@ -293,4 +293,26 @@
             #{id}
         </foreach>
     </delete>
+
+    <select id="selectFilePageList" resultType="com.xunmei.common.core.domain.edu.vo.SysLearningMaterialsFileListVo">
+        select id,org_id as orgId,title as title,org_name as orgName,file_list as file
+
+        from sys_learning_materials m
+        where m.deleted = 0
+        and m.is_open = 1
+        and m.file_list is not null
+        <if test="request.title != null and request.title != '' ">
+            and m.title like concat('%', #{request.title}, '%')
+        </if>
+        <if test="request.fileName != null and request.fileName != '' ">
+            and m.file_list like concat('%', #{request.fileName}, '%')
+        </if>
+        <if test="request.orgIdList.size>0">
+            and m.org_id in
+            <foreach collection="request.orgIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        order by m.org_id, m.create_time desc
+    </select>
 </mapper>