Jelajahi Sumber

业务提问关注功能

lizhenhao 2 tahun lalu
induk
melakukan
b11e3d6d08

+ 27 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/controller/KlgBaseQuestionsController.java

@@ -60,6 +60,22 @@ public class KlgBaseQuestionsController {
     }
 
     /**
+     * 查询关注的业务提问列表
+     * @param klgBaseQuestionsDTO
+     * @param page
+     * @return
+     * @throws Exception
+     */
+    @ApiLog("查询关注的业务提问列表")
+    @PreAuthorize("hasAuthority('klg:question:list')")
+    @GetMapping("list_focus")
+    public ResponseEntity<IPage<KlgBaseQuestionsDTO>> findListFocus(KlgBaseQuestionsDTO klgBaseQuestionsDTO, Page<KlgBaseQuestionsDTO> page) throws Exception {
+        IPage<KlgBaseQuestionsDTO> result = new Page<KlgBaseQuestionsDTO>();
+        result = klgBaseQuestionsService.findListFocus (page,klgBaseQuestionsDTO);
+        return ResponseEntity.ok (result);
+    }
+
+    /**
      * 查询业务提问数据
      * @param id
      * @return
@@ -122,4 +138,15 @@ public class KlgBaseQuestionsController {
         return ResponseEntity.ok(s);
     }
 
+    /**
+     * 关注业务提问
+     * @param ids
+     * @return
+     */
+    @ApiLog(value = "关注业务提问", type = LogTypeEnum.SAVE)
+    @PreAuthorize ("hasAuthority('klg:question:add')")
+    @GetMapping("focusByIds")
+    public ResponseEntity focusByIds(String ids) {
+        return klgBaseQuestionsService.focusByIds(ids);
+    }
 }

+ 1 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/domain/KlgBaseQuestions.java

@@ -32,6 +32,7 @@ public class KlgBaseQuestions extends BaseEntity {
     /**
      * 问题类型
      */
+    @Query(tableColumn = "kbq.type",type = QueryType.EQ)
     private String type;
 
     /**

+ 35 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/domain/KlgBaseQuestionsFocus.java

@@ -0,0 +1,35 @@
+package com.jeeplus.test.klgBase.question.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 知识库-关注问题
+ * @TableName klg_base_questions_focus
+ */
+@Data
+@TableName("klg_base_questions_focus")
+public class KlgBaseQuestionsFocus extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 人员id
+     */
+    private String userId;
+
+    /**
+     * 问题id
+     */
+    private String questionId;
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/mapper/KlgBaseQuestionsFocusMapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.klgBase.question.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.klgBase.question.domain.KlgBaseQuestionsFocus;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Entity com.jeeplus.test.klgBase.question.domain.KlgBaseQuestionsFocus
+ */
+@Mapper
+public interface KlgBaseQuestionsFocusMapper extends BaseMapper<KlgBaseQuestionsFocus> {
+
+}
+
+
+
+

+ 2 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/mapper/KlgBaseQuestionsMapper.java

@@ -20,6 +20,8 @@ public interface KlgBaseQuestionsMapper extends BaseMapper<KlgBaseQuestions> {
 
     public IPage<KlgBaseQuestionsDTO> findList(Page<KlgBaseQuestionsDTO> page, @Param(Constants.WRAPPER) QueryWrapper<KlgBaseQuestions> queryWrapper);
 
+    public IPage<KlgBaseQuestionsDTO> findListFocus(Page<KlgBaseQuestionsDTO> page, @Param(Constants.WRAPPER) QueryWrapper<KlgBaseQuestions> queryWrapper);
+
     public KlgBaseQuestionsDTO queryById(@Param("id") String id);
 
     public String getMaxSortByQues(@Param("id") String id);

+ 30 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/mapper/xml/KlgBaseQuestionsFocusMapper.xml

@@ -0,0 +1,30 @@
+<?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.klgBase.question.mapper.KlgBaseQuestionsFocusMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.test.klgBase.question.service.dto.KlgBaseQuestionsFocusDTO">
+            <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="userId" column="user_id" jdbcType="VARCHAR"/>
+            <result property="questionId" column="question_id" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        kqf.id,
+        kqf.create_by,
+        kqf.create_date,
+        kqf.update_by,
+        kqf.update_date,
+        kqf.del_flag,
+        kqf.remarks,
+        kqf.user_id,
+        kqf.question_id
+    </sql>
+</mapper>

+ 12 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/mapper/xml/KlgBaseQuestionsMapper.xml

@@ -148,6 +148,18 @@
         ${ew.customSqlSegment}
     </select>
 
+    <select id="findListFocus" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>,
+        ppli.name as program_name,
+        su.name as create_name
+        from klg_base_questions kbq
+        left join program_project_list_info ppli on ppli.id = kbq.program_id and ppli.del_flag = '0'
+        left join sys_user su on su.id = kbq.create_by and su.del_flag = '0'
+        inner join klg_base_questions_focus kbqf on kbqf.question_id = kbq.id and kbqf.del_flag = '0'
+        ${ew.customSqlSegment}
+    </select>
+
     <select id="queryById" resultMap="BaseResultMap">
         select
         <include refid="Base_Column_List"></include>,

+ 66 - 18
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/service/KlgBaseQuestionsService.java

@@ -2,7 +2,6 @@ package com.jeeplus.test.klgBase.question.service;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
-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;
@@ -15,42 +14,27 @@ import com.jeeplus.sys.service.dto.UserDTO;
 import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.sys.utils.UserUtils;
 import com.jeeplus.test.editor.domain.EditorFiles;
-import com.jeeplus.test.editor.mapper.EditorFilesMapper;
 import com.jeeplus.test.editor.service.EditorFilesService;
 import com.jeeplus.test.editor.service.dto.EditorFilesDTO;
-import com.jeeplus.test.finance.invoice.domain.*;
-import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceBaseDTO;
-import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDTO;
-import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDetailDTO;
-import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceReceivablesDTO;
-import com.jeeplus.test.finance.invoice.service.mapstruct.*;
 import com.jeeplus.test.klgBase.question.domain.KlgBaseDispose;
 import com.jeeplus.test.klgBase.question.domain.KlgBaseQuestions;
+import com.jeeplus.test.klgBase.question.domain.KlgBaseQuestionsFocus;
 import com.jeeplus.test.klgBase.question.domain.KlgBaseReply;
 import com.jeeplus.test.klgBase.question.mapper.KlgBaseDisposeMapper;
+import com.jeeplus.test.klgBase.question.mapper.KlgBaseQuestionsFocusMapper;
 import com.jeeplus.test.klgBase.question.mapper.KlgBaseQuestionsMapper;
 import com.jeeplus.test.klgBase.question.mapper.KlgBaseReplyMapper;
 import com.jeeplus.test.klgBase.question.service.dto.KlgBaseQuestionsDTO;
 import com.jeeplus.test.klgBase.question.service.mapstruct.KlgBaseDisposeWrapper;
 import com.jeeplus.test.klgBase.question.service.mapstruct.KlgBaseQuestionsWrapper;
 import com.jeeplus.test.klgBase.question.service.mapstruct.KlgBaseReplyWrapper;
-import com.jeeplus.test.oss.domain.WorkAttachment;
 import com.jeeplus.test.oss.service.OssService;
-import com.jeeplus.test.program.configuration.projectList.domain.ProgramAuditAssessPeople;
-import com.jeeplus.test.program.configuration.projectList.service.mapstruct.ProgramAuditAssessPeopleWrapper;
-import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
-import org.flowable.editor.language.json.converter.util.CollectionUtils;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
 import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.stream.Collectors;
-
 @Service
 @Transactional
 public class KlgBaseQuestionsService extends ServiceImpl<KlgBaseQuestionsMapper, KlgBaseQuestions> {
@@ -73,6 +57,9 @@ public class KlgBaseQuestionsService extends ServiceImpl<KlgBaseQuestionsMapper,
     @Resource
     private EditorFilesService editorFilesService;
 
+    @Resource
+    private KlgBaseQuestionsFocusMapper klgBaseQuestionsFocusMapper;
+
     public IPage<KlgBaseQuestionsDTO> findList(Page<KlgBaseQuestionsDTO> page, KlgBaseQuestionsDTO klgBaseQuestionsDTO) throws Exception{
         QueryWrapper<KlgBaseQuestions> queryWrapper = QueryWrapperGenerator.buildQueryCondition ( KlgBaseQuestionsWrapper.INSTANCE.toEntity(klgBaseQuestionsDTO), KlgBaseQuestions.class );
         queryWrapper.eq("kbq.del_flag","0");
@@ -86,6 +73,11 @@ public class KlgBaseQuestionsService extends ServiceImpl<KlgBaseQuestionsMapper,
                     queryWrapper.eq("kbq.status","2").or().eq("kbq.status","5");
                 }
             }
+            if (ObjectUtil.isNotEmpty(klgBaseQuestionsDTO.getCreateBy())){
+                if(StringUtils.isNotBlank(klgBaseQuestionsDTO.getCreateBy().getId())){
+                    queryWrapper.eq("kbq.create_by",klgBaseQuestionsDTO.getCreateBy().getId());
+                }
+            }
         }
         IPage<KlgBaseQuestionsDTO> list = klgBaseQuestionsMapper.findList(page, queryWrapper);
         list.getRecords().stream().forEach(item->{
@@ -106,6 +98,45 @@ public class KlgBaseQuestionsService extends ServiceImpl<KlgBaseQuestionsMapper,
         return list;
     }
 
+    public IPage<KlgBaseQuestionsDTO> findListFocus(Page<KlgBaseQuestionsDTO> page, KlgBaseQuestionsDTO klgBaseQuestionsDTO) throws Exception{
+        QueryWrapper<KlgBaseQuestions> queryWrapper = QueryWrapperGenerator.buildQueryCondition ( KlgBaseQuestionsWrapper.INSTANCE.toEntity(klgBaseQuestionsDTO), KlgBaseQuestions.class );
+        queryWrapper.eq("kbq.del_flag","0");
+        queryWrapper.orderByDesc("kbq.create_date");
+        if (ObjectUtil.isNotEmpty(klgBaseQuestionsDTO)){
+            if(ObjectUtil.isNotEmpty(klgBaseQuestionsDTO.getCreateDateBegin())&&ObjectUtil.isNotEmpty(klgBaseQuestionsDTO.getCreateDateEnd())){
+                queryWrapper.between("kbq.create_date",klgBaseQuestionsDTO.getCreateDateBegin(),klgBaseQuestionsDTO.getCreateDateEnd());
+            }
+            if(StringUtils.isNotBlank(klgBaseQuestionsDTO.getStatus())) {
+                if ("2".equals(klgBaseQuestionsDTO.getStatus())){
+                    queryWrapper.eq("kbq.status","2").or().eq("kbq.status","5");
+                }
+            }
+            if (ObjectUtil.isNotEmpty(klgBaseQuestionsDTO.getCreateBy())){
+                if(StringUtils.isNotBlank(klgBaseQuestionsDTO.getCreateBy().getId())){
+                    queryWrapper.eq("kbq.create_by",klgBaseQuestionsDTO.getCreateBy().getId());
+                }
+            }
+            queryWrapper.eq("kbqf.user_id",UserUtils.getCurrentUserDTO().getId());
+        }
+        IPage<KlgBaseQuestionsDTO> list = klgBaseQuestionsMapper.findListFocus(page, queryWrapper);
+        list.getRecords().stream().forEach(item->{
+            if(StringUtils.isNotBlank(item.getDisposeBy())) {
+                String disposeByName = new String();
+                String[] split = item.getDisposeBy().split(",");
+                for (int i = 0; i < split.length; i++) {
+                    User user = userMapper.selectById(split[i]);
+                    if (i != split.length-1) {
+                        disposeByName = disposeByName + user.getName() + ",";
+                    } else {
+                        disposeByName = disposeByName + user.getName();
+                    }
+                }
+                item.setDisposeByName(disposeByName);
+            }
+        });
+        return list;
+    }
+
     public KlgBaseQuestionsDTO queryById(String id) {
 
         KlgBaseQuestionsDTO klgBaseQuestionsDTO = klgBaseQuestionsMapper.queryById(id);
@@ -215,4 +246,21 @@ public class KlgBaseQuestionsService extends ServiceImpl<KlgBaseQuestionsMapper,
         klgBaseQuestionsMapper.update(klgBaseQuestions, new QueryWrapper<KlgBaseQuestions>().lambda().eq(KlgBaseQuestions::getId, klgBaseQuestions.getId()));
         return "操作成功";
     }
+
+    public ResponseEntity focusByIds(String idList) {
+        String ids[] =idList.split(",");
+        UserDTO currentUserDTO = UserUtils.getCurrentUserDTO();
+        for (String id : ids) {
+            List<KlgBaseQuestionsFocus> klgBaseQuestionsFoci = klgBaseQuestionsFocusMapper.selectList(new QueryWrapper<KlgBaseQuestionsFocus>().lambda()
+                    .eq(KlgBaseQuestionsFocus::getUserId, currentUserDTO.getId())
+                    .eq(KlgBaseQuestionsFocus::getQuestionId, id));
+            if(CollectionUtil.isEmpty(klgBaseQuestionsFoci)){
+                KlgBaseQuestionsFocus klgBaseQuestionsFocus = new KlgBaseQuestionsFocus();
+                klgBaseQuestionsFocus.setQuestionId(id);
+                klgBaseQuestionsFocus.setUserId(currentUserDTO.getId());
+                klgBaseQuestionsFocusMapper.insert(klgBaseQuestionsFocus);
+            }
+        }
+        return ResponseEntity.ok ("关注成功");
+    }
 }

+ 5 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/service/dto/KlgBaseQuestionsDTO.java

@@ -101,6 +101,11 @@ public class KlgBaseQuestionsDTO extends BaseDTO {
     private Date createDateEnd;
 
     /**
+     * 关注人
+     */
+    private String focusBy;
+
+    /**
      * 富文本图片集合
      */
     private List<EditorFilesDTO> editorFilesDTOList;

+ 32 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/service/dto/KlgBaseQuestionsFocusDTO.java

@@ -0,0 +1,32 @@
+package com.jeeplus.test.klgBase.question.service.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+
+/**
+ * 知识库-关注问题
+ * @TableName klg_base_questions_focus
+ */
+@Data
+public class KlgBaseQuestionsFocusDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 人员id
+     */
+    private String userId;
+
+    /**
+     * 问题id
+     */
+    private String questionId;
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/service/mapstruct/KlgBaseQuestionsFocusWrapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.klgBase.question.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.klgBase.question.domain.KlgBaseDispose;
+import com.jeeplus.test.klgBase.question.domain.KlgBaseQuestionsFocus;
+import com.jeeplus.test.klgBase.question.service.dto.KlgBaseDisposeDTO;
+import com.jeeplus.test.klgBase.question.service.dto.KlgBaseQuestionsFocusDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface KlgBaseQuestionsFocusWrapper extends EntityWrapper<KlgBaseQuestionsFocusDTO, KlgBaseQuestionsFocus> {
+
+    KlgBaseQuestionsFocusWrapper INSTANCE = Mappers.getMapper(KlgBaseQuestionsFocusWrapper.class);
+
+}