lizhenhao 2 лет назад
Родитель
Сommit
68c37b659b

+ 39 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/editor/domain/EditorFiles.java

@@ -0,0 +1,39 @@
+package com.jeeplus.test.editor.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 editor_files
+ */
+@Data
+@TableName("editor_files")
+public class EditorFiles extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 来源id
+     */
+    private String sourceId;
+
+    /**
+     * 临时地址
+     */
+    private String temporaryUrl;
+
+    /**
+     * 图片路径
+     */
+    private String url;
+
+    private static final long serialVersionUID = 1L;
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/editor/mapper/EditorFilesMapper.java

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

+ 32 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/editor/mapper/xml/EditorFilesMapper.xml

@@ -0,0 +1,32 @@
+<?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.editor.mapper.EditorFilesMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.test.editor.service.dto.EditorFilesDTO">
+            <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="sourceId" column="source_id" jdbcType="VARCHAR"/>
+            <result property="temporaryUrl" column="temporary_url" jdbcType="VARCHAR"/>
+            <result property="url" column="url" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ef.id,
+        ef.create_by,
+        ef.create_date,
+        ef.update_by,
+        ef.update_date,
+        ef.del_flag,
+        ef.remarks,
+        ef.source_id,
+        ef.temporary_url,
+        ef.url
+    </sql>
+</mapper>

+ 63 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/editor/service/EditorFilesService.java

@@ -0,0 +1,63 @@
+package com.jeeplus.test.editor.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.test.editor.domain.EditorFiles;
+import com.jeeplus.test.editor.mapper.EditorFilesMapper;
+import com.jeeplus.test.oss.service.OssService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicReference;
+
+@Service
+@Transactional
+public class EditorFilesService extends ServiceImpl<EditorFilesMapper, EditorFiles> {
+
+    @Resource
+    private OssService ossService;
+
+    @Resource
+    private EditorFilesMapper editorFilesMapper;
+
+    /**
+     * 将富文本内容中的临时图片地址替换为新的
+     * @param content 富文本内容
+     * @param sourceId 数据id
+     * @return
+     */
+    public String getNewContent(String content,String sourceId){
+        List<EditorFiles> list = this.list(new QueryWrapper<EditorFiles>().lambda().eq(EditorFiles::getSourceId, sourceId));
+        AtomicReference<String> replace = new AtomicReference<>(content.replace("amp;", ""));
+        list.stream().forEach(item->{
+            boolean contains = replace.get().contains(item.getTemporaryUrl());
+            if(contains){
+                String fileTemporaryLookUrl = ossService.getFileTemporaryLookUrl(item.getUrl());
+                String r = replace.get().replace(item.getTemporaryUrl(),fileTemporaryLookUrl);
+                replace.set(r);
+                EditorFiles editorFiles = new EditorFiles();
+                editorFiles.setTemporaryUrl(fileTemporaryLookUrl);
+                editorFiles.setSourceId(sourceId);
+                this.update(editorFiles,new QueryWrapper<EditorFiles>().lambda().eq(EditorFiles::getSourceId,sourceId).eq(EditorFiles::getTemporaryUrl,item.getTemporaryUrl()));
+            }
+        });
+        return replace.get();
+    }
+
+    /**
+     * 富文本图片新增
+     * @param temporaryUrl
+     * @param url
+     * @param sourceId
+     * @return
+     */
+    public void saveUrl(String temporaryUrl,String url,String sourceId){
+        EditorFiles editorFiles = new EditorFiles();
+        editorFiles.setSourceId(sourceId);
+        editorFiles.setTemporaryUrl(temporaryUrl);
+        editorFiles.setUrl(url);
+        this.save(editorFiles);
+    }
+}

+ 36 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/editor/service/dto/EditorFilesDTO.java

@@ -0,0 +1,36 @@
+package com.jeeplus.test.editor.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 editor_files
+ */
+@Data
+public class EditorFilesDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 来源id
+     */
+    private String sourceId;
+
+    /**
+     * 临时地址
+     */
+    private String temporaryUrl;
+
+    /**
+     * 图片路径
+     */
+    private String url;
+
+    private static final long serialVersionUID = 1L;
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/editor/service/mapstruct/EditorFilesWrapper.java

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

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

@@ -6,6 +6,8 @@ import java.util.Date;
 import cn.afterturn.easypoi.excel.annotation.Excel;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.query.Query;
+import com.jeeplus.core.query.QueryType;
 import lombok.Data;
 
 /**
@@ -24,6 +26,7 @@ public class KlgBaseQuestions extends BaseEntity {
     /**
      * 标题
      */
+    @Query(tableColumn = "kbq.title",type = QueryType.LIKE)
     private String title;
 
     /**
@@ -34,6 +37,7 @@ public class KlgBaseQuestions extends BaseEntity {
     /**
      * 项目名称
      */
+    @Query(tableColumn = "kbq.program_id",type = QueryType.EQ)
     private String programId;
 
     /**
@@ -54,6 +58,7 @@ public class KlgBaseQuestions extends BaseEntity {
     /**
      * 状态
      */
+    @Query(tableColumn = "kbq.status",type = QueryType.EQ)
     private String status;
 
     /**
@@ -66,5 +71,10 @@ public class KlgBaseQuestions extends BaseEntity {
      */
     private String processDefinitionId;
 
+    /**
+     * 结案时间
+     */
+    private Date finishDate;
+
     private static final long serialVersionUID = 1L;
 }

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

@@ -22,6 +22,8 @@
             <result property="status" column="status" jdbcType="VARCHAR"/>
             <result property="procInsId" column="proc_ins_id" jdbcType="VARCHAR"/>
             <result property="processDefinitionId" column="process_definition_id" jdbcType="VARCHAR"/>
+            <result property="createBy.name" column="create_name" jdbcType="VARCHAR"/>
+            <result property="finishDate" column="finish_date" jdbcType="TIMESTAMP"/>
             <collection property="klgBaseDisposeDTOList" ofType="com.jeeplus.test.klgBase.question.service.dto.KlgBaseDisposeDTO" column="id" select="getDisposeList"></collection>
             <collection property="klgBaseReplyDTOList" ofType="com.jeeplus.test.klgBase.question.service.dto.KlgBaseReplyDTO" column="id" select="getReplyList"></collection>
             <collection property="workAttachmentDtoList" ofType="com.jeeplus.test.workContract.service.dto.WorkAttachmentDto" column="id" select="getFileList"></collection>
@@ -63,7 +65,8 @@
         kbq.content,
         kbq.status,
         kbq.proc_ins_id,
-        kbq.process_definition_id
+        kbq.process_definition_id,
+        kbq.finish_date
     </sql>
     <sql id="Kbr_Column_List">
         kbr.id,
@@ -137,18 +140,22 @@
     <select id="findList" resultMap="BaseResultMap">
         select
         <include refid="Base_Column_List"></include>,
-        ppli.name as program_name
+        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'
         ${ew.customSqlSegment}
     </select>
 
     <select id="queryById" resultMap="BaseResultMap">
         select
         <include refid="Base_Column_List"></include>,
-        ppli.name as program_name
+        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'
         where kbq.del_flag = '0' and kbq.id = ${id}
     </select>
 

+ 84 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/service/KlgBaseQuestionsService.java

@@ -10,9 +10,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import com.jeeplus.core.query.QueryWrapperGenerator;
 import com.jeeplus.sys.domain.User;
+import com.jeeplus.sys.mapper.UserMapper;
 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;
@@ -62,17 +67,82 @@ public class KlgBaseQuestionsService extends ServiceImpl<KlgBaseQuestionsMapper,
     @Resource
     private OssService ossService;
 
+    @Resource
+    private UserMapper userMapper;
+
+    @Resource
+    private EditorFilesService editorFilesService;
+
     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");
         queryWrapper.orderByDesc("kbq.create_date");
-        return klgBaseQuestionsMapper.findList(page,queryWrapper);
+        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");
+                }
+            }
+        }
+        IPage<KlgBaseQuestionsDTO> list = klgBaseQuestionsMapper.findList(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);
 
+        if (ObjectUtil.isNotEmpty(klgBaseQuestionsDTO)) {
+            if(StringUtils.isNotBlank(klgBaseQuestionsDTO.getContent())){
+                klgBaseQuestionsDTO.setContent(editorFilesService.getNewContent(klgBaseQuestionsDTO.getContent(), id));
+                List<EditorFiles> list = editorFilesService.list(new QueryWrapper<EditorFiles>().lambda().eq(EditorFiles::getSourceId, id));
+                List<EditorFilesDTO> editorFilesDTOList = new ArrayList<>();
+                list.stream().forEach(item->{
+                    EditorFilesDTO editorFilesDTO = new EditorFilesDTO();
+                    editorFilesDTO.setSourceId(item.getSourceId());
+                    editorFilesDTO.setTemporaryUrl(item.getTemporaryUrl());
+                    editorFilesDTO.setUrl(item.getUrl());
+                    editorFilesDTOList.add(editorFilesDTO);
+                });
+                klgBaseQuestionsDTO.setEditorFilesDTOList(editorFilesDTOList);
+            }
+            if (CollectionUtil.isNotEmpty(klgBaseQuestionsDTO.getKlgBaseReplyDTOList())){
+                klgBaseQuestionsDTO.getKlgBaseReplyDTOList().stream().forEach(item->{
+                    if (StringUtils.isNotBlank(item.getContent())){
+                        item.setContent(editorFilesService.getNewContent(item.getContent(), item.getId()));
+                        List<EditorFiles> list = editorFilesService.list(new QueryWrapper<EditorFiles>().lambda().eq(EditorFiles::getSourceId, item.getId()));
+                        List<EditorFilesDTO> editorFilesDTOS = new ArrayList<>();
+                        list.stream().forEach(i->{
+                            EditorFilesDTO editorFilesDTO = new EditorFilesDTO();
+                            editorFilesDTO.setSourceId(i.getSourceId());
+                            editorFilesDTO.setTemporaryUrl(i.getTemporaryUrl());
+                            editorFilesDTO.setUrl(i.getUrl());
+                            editorFilesDTOS.add(editorFilesDTO);
+                        });
+                        item.setEditorFilesDTOList(editorFilesDTOS);
+                    }
+                });
+            }
+        }
+
         return klgBaseQuestionsDTO;
     }
 
@@ -80,6 +150,13 @@ public class KlgBaseQuestionsService extends ServiceImpl<KlgBaseQuestionsMapper,
         KlgBaseQuestions klgBaseQuestions = KlgBaseQuestionsWrapper.INSTANCE.toEntity(klgBaseQuestionsDTO);
         this.saveOrUpdate(klgBaseQuestions);
         if (ObjectUtil.isNotEmpty(klgBaseQuestionsDTO)) {
+            //问题内容
+            editorFilesService.remove(new QueryWrapper<EditorFiles>().lambda().eq(EditorFiles::getSourceId,klgBaseQuestions.getId()));
+            if (CollectionUtil.isNotEmpty(klgBaseQuestionsDTO.getEditorFilesDTOList())) {
+                klgBaseQuestionsDTO.getEditorFilesDTOList().stream().forEach(item->{
+                    editorFilesService.saveUrl(item.getTemporaryUrl(),item.getUrl(),klgBaseQuestions.getId());
+                });
+            }
             //附件
             ossService.saveOrUpdateFileList(klgBaseQuestionsDTO.getWorkAttachmentDtoList(),klgBaseQuestions.getId(),"klg_question");
             //处理人
@@ -110,6 +187,12 @@ public class KlgBaseQuestionsService extends ServiceImpl<KlgBaseQuestionsMapper,
                         klgBaseReply.setQuestionId(klgBaseQuestions.getId());
                         klgBaseReplyMapper.insert(klgBaseReply);
                     }
+                    editorFilesService.remove(new QueryWrapper<EditorFiles>().lambda().eq(EditorFiles::getSourceId,klgBaseReply.getId()));
+                    if (CollectionUtil.isNotEmpty(item.getEditorFilesDTOList())){
+                        item.getEditorFilesDTOList().stream().forEach(file->{
+                            editorFilesService.saveUrl(file.getTemporaryUrl(),file.getUrl(),klgBaseReply.getId());
+                        });
+                    }
                 });
             }
         }

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

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jeeplus.core.domain.BaseEntity;
 import com.jeeplus.core.service.dto.BaseDTO;
+import com.jeeplus.test.editor.service.dto.EditorFilesDTO;
 import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -44,11 +45,16 @@ public class KlgBaseQuestionsDTO extends BaseDTO {
     private String programName;
 
     /**
-     * 问题处理人
+     * 问题处理人ids
      */
     private String disposeBy;
 
     /**
+     * 问题处理人
+     */
+    private String disposeByName;
+
+    /**
      * 期望完成时间
      */
     @DateTimeFormat(pattern = "yyyy-MM-dd")
@@ -76,6 +82,30 @@ public class KlgBaseQuestionsDTO extends BaseDTO {
     private String processDefinitionId;
 
     /**
+     * 结案时间
+     */
+    private Date finishDate;
+
+    /**
+     * 提交时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDateBegin;
+
+    /**
+     * 提交时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDateEnd;
+
+    /**
+     * 富文本图片集合
+     */
+    private List<EditorFilesDTO> editorFilesDTOList;
+
+    /**
      * 问题处理人
      */
     private List<KlgBaseDisposeDTO> klgBaseDisposeDTOList;

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

@@ -3,9 +3,11 @@ 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 com.jeeplus.test.editor.service.dto.EditorFilesDTO;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 知识库-业务提问-回复表
@@ -49,5 +51,10 @@ public class KlgBaseReplyDTO extends BaseDTO {
      */
     private String sort;
 
+    /**
+     * 富文本图片集合
+     */
+    private List<EditorFilesDTO> editorFilesDTOList;
+
     private static final long serialVersionUID = 1L;
 }