Browse Source

Merge remote-tracking branch 'origin/master'

user5 2 năm trước cách đây
mục cha
commit
a3cf7e2e18
19 tập tin đã thay đổi với 938 bổ sung2 xóa
  1. 125 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/controller/KlgBaseQuestionsController.java
  2. 33 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/domain/KlgBaseDispose.java
  3. 70 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/domain/KlgBaseQuestions.java
  4. 49 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/domain/KlgBaseReply.java
  5. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/mapper/KlgBaseDisposeMapper.java
  6. 30 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/mapper/KlgBaseQuestionsMapper.java
  7. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/mapper/KlgBaseReplyMapper.java
  8. 30 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/mapper/xml/KlgBaseDisposeMapper.xml
  9. 161 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/mapper/xml/KlgBaseQuestionsMapper.xml
  10. 36 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/mapper/xml/KlgBaseReplyMapper.xml
  11. 133 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/service/KlgBaseQuestionsService.java
  12. 31 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/service/dto/KlgBaseDisposeDTO.java
  13. 95 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/service/dto/KlgBaseQuestionsDTO.java
  14. 48 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/service/dto/KlgBaseReplyDTO.java
  15. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/service/mapstruct/KlgBaseDisposeWrapper.java
  16. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/service/mapstruct/KlgBaseQuestionsWrapper.java
  17. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/service/mapstruct/KlgBaseReplyWrapper.java
  18. 2 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/proofread/mapper/xml/ProofreadInfoMapper.xml
  19. 10 1
      jeeplus-plugins/jeeplus-flowable/src/main/java/com/jeeplus/flowable/controller/FlowableTaskController.java

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

@@ -0,0 +1,125 @@
+package com.jeeplus.test.klgBase.question.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.aop.demo.annotation.DemoMode;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.core.excel.utils.EasyPoiUtil;
+import com.jeeplus.sys.constant.enums.LogTypeEnum;
+import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.test.finance.invoice.service.FinanceInvoiceService;
+import com.jeeplus.test.finance.invoice.service.dto.FinanceDTO;
+import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDTO;
+import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDetailDTO;
+import com.jeeplus.test.klgBase.question.service.KlgBaseQuestionsService;
+import com.jeeplus.test.klgBase.question.service.dto.KlgBaseQuestionsDTO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import static com.jeeplus.test.jobPosion.utils.BeanUtils.objectCheckIsNull;
+
+@Api("知识库-业务提问")
+@RestController
+@RequestMapping(value = "/klg/questions")
+public class KlgBaseQuestionsController {
+
+    @Resource
+    private KlgBaseQuestionsService klgBaseQuestionsService;
+
+    /**
+     * 查询业务提问列表
+     * @param klgBaseQuestionsDTO
+     * @param page
+     * @return
+     * @throws Exception
+     */
+    @ApiLog("查询业务提问列表")
+    @PreAuthorize("hasAuthority('klg:question:list')")
+    @GetMapping("list")
+    public ResponseEntity<IPage<KlgBaseQuestionsDTO>> data(KlgBaseQuestionsDTO klgBaseQuestionsDTO, Page<KlgBaseQuestionsDTO> page) throws Exception {
+        IPage<KlgBaseQuestionsDTO> result = new Page<KlgBaseQuestionsDTO>();
+        result = klgBaseQuestionsService.findList (page,klgBaseQuestionsDTO);
+        return ResponseEntity.ok (result);
+    }
+
+    /**
+     * 查询业务提问数据
+     * @param id
+     * @return
+     */
+    @ApiLog("查询业务提问数据")
+    @PreAuthorize ("hasAnyAuthority('klg:question:view','klg:question:add','klg:question:edit')")
+    @GetMapping("queryById")
+    public ResponseEntity queryById(@RequestParam("id") String id) {
+        KlgBaseQuestionsDTO klgBaseQuestionsDTO = klgBaseQuestionsService.queryById ( id );
+        return ResponseEntity.ok (klgBaseQuestionsDTO);
+    }
+
+    /**
+     * 保存业务提问
+     * @param klgBaseQuestionsDTO
+     * @return
+     */
+    @ApiLog(value = "修改/新增业务提问", type = LogTypeEnum.SAVE)
+    @PreAuthorize("hasAnyAuthority('klg:question:add','klg:question:edit')")
+    @PostMapping("save")
+    public ResponseEntity save(@Valid @RequestBody KlgBaseQuestionsDTO klgBaseQuestionsDTO) throws Exception {
+        klgBaseQuestionsService.saveQuestion(klgBaseQuestionsDTO);
+        return ResponseEntity.ok ("操作成功");
+    }
+
+    /**
+     * 保存业务提问-流程
+     * @param klgBaseQuestionsDTO
+     * @return
+     */
+    @ApiLog(value = "保存发票数据-流程", type = LogTypeEnum.SAVE)
+    @PreAuthorize("hasAnyAuthority('klg:question:add','klg:question:edit')")
+    @PostMapping("saveForm")
+    public ResponseEntity saveForm(@Valid @RequestBody KlgBaseQuestionsDTO klgBaseQuestionsDTO) throws Exception {
+        String id = klgBaseQuestionsService.saveForm(klgBaseQuestionsDTO);
+        return ResponseUtil.newInstance().add("businessTable", "klg_base_questions").add("businessId", id).ok ("操作成功");
+    }
+
+    /**
+     * 删除业务提问
+     * @param ids
+     * @return
+     */
+    @ApiLog(value = "删除业务提问", type = LogTypeEnum.SAVE)
+    @PreAuthorize ("hasAuthority('klg:question:del')")
+    @DeleteMapping("delete")
+    public ResponseEntity delete(String ids) {
+        return klgBaseQuestionsService.deleteByIds(ids);
+    }
+
+    /**
+     * 根据id修改状态值status
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "根据id修改状态值status")
+    @PostMapping(value = "/updateStatusById")
+    public ResponseEntity<String> updateStatusById(@RequestBody KlgBaseQuestionsDTO dto) {
+        String s = klgBaseQuestionsService.updateStatusById(dto);
+        return ResponseEntity.ok(s);
+    }
+
+}

+ 33 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/domain/KlgBaseDispose.java

@@ -0,0 +1,33 @@
+package com.jeeplus.test.klgBase.question.domain;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 知识库-业务提问-问题处理人
+ * @TableName klg_base_dispose
+ */
+@Data
+@TableName("klg_base_dispose")
+public class KlgBaseDispose extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 提问id
+     */
+    private String questionId;
+
+    /**
+     * 问题处理人
+     */
+    private String disposeBy;
+
+    private static final long serialVersionUID = 1L;
+}

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

@@ -0,0 +1,70 @@
+package com.jeeplus.test.klgBase.question.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 知识库-业务提问
+ * @TableName klg_base_questions
+ */
+@Data
+@TableName("klg_base_questions")
+public class KlgBaseQuestions extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 问题类型
+     */
+    private String type;
+
+    /**
+     * 项目名称
+     */
+    private String programId;
+
+    /**
+     * 问题处理人
+     */
+    private String disposeBy;
+
+    /**
+     * 期望完成时间
+     */
+    private Date expectFinishDate;
+
+    /**
+     * 问题内容
+     */
+    private String content;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 流程信息
+     */
+    private String processDefinitionId;
+
+    private static final long serialVersionUID = 1L;
+}

+ 49 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/domain/KlgBaseReply.java

@@ -0,0 +1,49 @@
+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_reply
+ */
+@Data
+@TableName("klg_base_reply")
+public class KlgBaseReply extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 提问id
+     */
+    private String questionId;
+
+    /**
+     * 回复内容
+     */
+    private String content;
+
+    /**
+     * 回复人
+     */
+    private String replyBy;
+
+    /**
+     * 回复时间
+     */
+    private Date replyDate;
+
+    /**
+     * 序号
+     */
+    private String sort;
+
+    private static final long serialVersionUID = 1L;
+}

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

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

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

@@ -0,0 +1,30 @@
+package com.jeeplus.test.klgBase.question.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.finance.invoice.domain.FinanceInvoice;
+import com.jeeplus.test.finance.invoice.service.dto.FinanceInvoiceDTO;
+import com.jeeplus.test.klgBase.question.domain.KlgBaseQuestions;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.klgBase.question.service.dto.KlgBaseQuestionsDTO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Entity com.jeeplus.test.klgBase.question.domain.KlgBaseQuestions
+ */
+@Mapper
+public interface KlgBaseQuestionsMapper extends BaseMapper<KlgBaseQuestions> {
+
+    public IPage<KlgBaseQuestionsDTO> findList(Page<KlgBaseQuestionsDTO> page, @Param(Constants.WRAPPER) QueryWrapper<KlgBaseQuestions> queryWrapper);
+
+    public KlgBaseQuestionsDTO queryById(@Param("id") String id);
+
+    public String getMaxSortByQues(@Param("id") String id);
+}
+
+
+
+

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

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

+ 30 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/mapper/xml/KlgBaseDisposeMapper.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.KlgBaseDisposeMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.test.klgBase.question.service.dto.KlgBaseDisposeDTO">
+            <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="questionId" column="question_id" jdbcType="VARCHAR"/>
+            <result property="disposeBy" column="dispose_by" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        kbd.id,
+        kbd.create_by,
+        kbd.create_date,
+        kbd.update_by,
+        kbd.update_date,
+        kbd.del_flag,
+        kbd.remarks,
+        kbd.question_id,
+        kbd.dispose_by
+    </sql>
+</mapper>

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

@@ -0,0 +1,161 @@
+<?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.KlgBaseQuestionsMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.test.klgBase.question.service.dto.KlgBaseQuestionsDTO">
+            <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="title" column="title" jdbcType="VARCHAR"/>
+            <result property="type" column="type" jdbcType="VARCHAR"/>
+            <result property="programId" column="program_id" jdbcType="VARCHAR"/>
+            <result property="programName" column="program_name" jdbcType="VARCHAR"/>
+            <result property="disposeBy" column="dispose_by" jdbcType="VARCHAR"/>
+            <result property="expectFinishDate" column="expect_finish_date" jdbcType="TIMESTAMP"/>
+            <result property="content" column="content" jdbcType="VARCHAR"/>
+            <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"/>
+            <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>
+    </resultMap>
+
+    <resultMap id="AttachmentMap" type="com.jeeplus.test.workContract.service.dto.WorkAttachmentDto">
+        <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="createBy.name" column="create_name" jdbcType="VARCHAR"/>
+        <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/>
+        <result property="delFlag" column="del_flag" jdbcType="VARCHAR"/>
+        <result property="url" column="url" jdbcType="VARCHAR"/>
+<!--        <result property="type" column="type" jdbcType="VARCHAR"/>-->
+<!--        <result property="attachmentId" column="attachment_id" jdbcType="VARCHAR"/>-->
+        <result property="name" column="attachment_name" jdbcType="VARCHAR"/>
+<!--        <result property="attachmentFlag" column="attachment_flag" jdbcType="VARCHAR"/>-->
+<!--        <result property="moduleType" column="module_type" jdbcType="VARCHAR"/>-->
+<!--        <result property="attachmentType" column="attachment_type" jdbcType="VARCHAR"/>-->
+        <result property="size" column="file_size" jdbcType="VARCHAR"/>
+<!--        <result property="sort" column="sort" jdbcType="SMALLINT"/>-->
+<!--        <result property="description" column="description" jdbcType="VARCHAR"/>-->
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        kbq.id,
+        kbq.create_by,
+        kbq.create_date,
+        kbq.update_by,
+        kbq.update_date,
+        kbq.del_flag,
+        kbq.remarks,
+        kbq.title,
+        kbq.type,
+        kbq.program_id,
+        kbq.dispose_by,
+        kbq.expect_finish_date,
+        kbq.content,
+        kbq.status,
+        kbq.proc_ins_id,
+        kbq.process_definition_id
+    </sql>
+    <sql id="Kbr_Column_List">
+        kbr.id,
+        kbr.create_by,
+        kbr.create_date,
+        kbr.update_by,
+        kbr.update_date,
+        kbr.del_flag,
+        kbr.remarks,
+        kbr.question_id,
+        kbr.content,
+        kbr.reply_by,
+        kbr.reply_date,
+        kbr.sort
+    </sql>
+    <sql id="Kbd_Column_List">
+        kbd.id,
+        kbd.create_by,
+        kbd.create_date,
+        kbd.update_by,
+        kbd.update_date,
+        kbd.del_flag,
+        kbd.remarks,
+        kbd.question_id,
+        kbd.dispose_by
+    </sql>
+    <sql id="File_Column_List">
+        wa.id,
+        wa.create_by,
+        wa.create_date,
+        wa.update_by,
+        wa.update_date,
+        wa.remarks,
+        wa.del_flag,
+        wa.url,
+        wa.type,
+        wa.attachment_id,
+        wa.attachment_name,
+        wa.attachment_flag,
+        wa.module_type,
+        wa.attachment_type,
+        wa.file_size,
+        wa.sort,
+        wa.description
+    </sql>
+
+    <select id="getFileList" resultMap="AttachmentMap">
+        select
+        <include refid="File_Column_List"></include>,
+        su.name as create_name
+        from work_attachment wa
+        left join sys_user su on su.id = wa.create_by and su.del_flag = '0'
+        where wa.del_flag = '0' and wa.attachment_id = #{id}
+    </select>
+    <select id="getDisposeList" resultType="com.jeeplus.test.klgBase.question.service.dto.KlgBaseDisposeDTO">
+        select
+        <include refid="Kbd_Column_List"></include>
+        from klg_base_dispose kbd
+        where kbd.del_flag = '0' and kbd.question_id = #{id}
+    </select>
+
+    <select id="getReplyList" resultType="com.jeeplus.test.klgBase.question.service.dto.KlgBaseReplyDTO">
+        select
+        <include refid="Kbr_Column_List"></include>
+        from klg_base_reply kbr
+        where kbr.del_flag = '0' and kbr.question_id = #{id}
+    </select>
+
+    <select id="findList" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>,
+        ppli.name as program_name
+        from klg_base_questions kbq
+        left join program_project_list_info ppli on ppli.id = kbq.program_id and ppli.del_flag = '0'
+        ${ew.customSqlSegment}
+    </select>
+
+    <select id="queryById" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>,
+        ppli.name as program_name
+        from klg_base_questions kbq
+        left join program_project_list_info ppli on ppli.id = kbq.program_id and ppli.del_flag = '0'
+        where kbq.del_flag = '0' and kbq.id = ${id}
+    </select>
+
+    <select id="getMaxSortByQues" resultType="string">
+        select
+        kbr.sort
+        from klg_base_reply kbr
+        where kbr.question_id = #{id}
+        order by CONVERT(sort,SIGNED) desc
+        limit 1
+    </select>
+</mapper>

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

@@ -0,0 +1,36 @@
+<?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.KlgBaseReplyMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.test.klgBase.question.service.dto.KlgBaseReplyDTO">
+            <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="questionId" column="question_id" jdbcType="VARCHAR"/>
+            <result property="content" column="content" jdbcType="VARCHAR"/>
+            <result property="replyBy" column="reply_by" jdbcType="VARCHAR"/>
+            <result property="replyDate" column="reply_date" jdbcType="TIMESTAMP"/>
+            <result property="sort" column="sort" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        kbr.id,
+        kbr.create_by,
+        kbr.create_date,
+        kbr.update_by,
+        kbr.update_date,
+        kbr.del_flag,
+        kbr.remarks,
+        kbr.question_id,
+        kbr.content,
+        kbr.reply_by,
+        kbr.reply_date,
+        kbr.sort
+    </sql>
+</mapper>

+ 133 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/service/KlgBaseQuestionsService.java

@@ -0,0 +1,133 @@
+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;
+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.service.dto.UserDTO;
+import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.sys.utils.UserUtils;
+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.KlgBaseReply;
+import com.jeeplus.test.klgBase.question.mapper.KlgBaseDisposeMapper;
+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> {
+
+    @Resource
+    private KlgBaseQuestionsMapper klgBaseQuestionsMapper;
+
+    @Resource
+    private KlgBaseDisposeMapper klgBaseDisposeMapper;
+
+    @Resource
+    private KlgBaseReplyMapper klgBaseReplyMapper;
+
+    @Resource
+    private OssService ossService;
+
+    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);
+    }
+
+    public KlgBaseQuestionsDTO queryById(String id) {
+
+        KlgBaseQuestionsDTO klgBaseQuestionsDTO = klgBaseQuestionsMapper.queryById(id);
+
+        return klgBaseQuestionsDTO;
+    }
+
+    public String saveForm(KlgBaseQuestionsDTO klgBaseQuestionsDTO) throws Exception{
+        KlgBaseQuestions klgBaseQuestions = KlgBaseQuestionsWrapper.INSTANCE.toEntity(klgBaseQuestionsDTO);
+        this.saveOrUpdate(klgBaseQuestions);
+        if (ObjectUtil.isNotEmpty(klgBaseQuestionsDTO)) {
+            //附件
+            ossService.saveOrUpdateFileList(klgBaseQuestionsDTO.getWorkAttachmentDtoList(),klgBaseQuestions.getId(),"klg_question");
+            //处理人
+            if(CollectionUtil.isNotEmpty(klgBaseQuestionsDTO.getKlgBaseDisposeDTOList())){
+                klgBaseDisposeMapper.delete(new QueryWrapper<KlgBaseDispose>().lambda().eq(KlgBaseDispose::getQuestionId,klgBaseQuestions.getId()));
+                klgBaseQuestionsDTO.getKlgBaseDisposeDTOList().stream().forEach(item->{
+                    KlgBaseDispose klgBaseDispose = KlgBaseDisposeWrapper.INSTANCE.toEntity(item);
+                    klgBaseDisposeMapper.insert(klgBaseDispose);
+                });
+            }else{
+                klgBaseDisposeMapper.delete(new QueryWrapper<KlgBaseDispose>().lambda().eq(KlgBaseDispose::getQuestionId,klgBaseQuestions.getId()));
+            }
+            //回复
+            if(CollectionUtil.isNotEmpty(klgBaseQuestionsDTO.getKlgBaseReplyDTOList())){
+                String maxSortByQues = klgBaseQuestionsMapper.getMaxSortByQues(klgBaseQuestions.getId());
+                klgBaseQuestionsDTO.getKlgBaseReplyDTOList().stream().forEach((item)->{
+                    KlgBaseReply klgBaseReply = KlgBaseReplyWrapper.INSTANCE.toEntity(item);
+                    if (StringUtils.isNotBlank(klgBaseReply.getId())) {
+                        klgBaseReplyMapper.updateById(klgBaseReply);
+                    } else {
+                        if(StringUtils.isNotBlank(maxSortByQues)) {
+                            int i = Integer.parseInt(maxSortByQues);
+                            klgBaseReply.setSort(String.valueOf(i+1));
+                        }else{
+                            klgBaseReply.setSort("0");
+                        }
+                        klgBaseReplyMapper.insert(klgBaseReply);
+                    }
+                });
+            }
+        }
+        return klgBaseQuestions.getId();
+    }
+
+    public ResponseEntity saveQuestion(KlgBaseQuestionsDTO klgBaseQuestionsDTO) throws Exception{
+        this.saveForm(klgBaseQuestionsDTO);
+        return ResponseEntity.ok("保存成功");
+    }
+
+    public ResponseEntity deleteByIds(String ids) {
+        String idArray[] =ids.split(",");
+        this.removeByIds (Lists.newArrayList (idArray));
+        return ResponseEntity.ok ("删除成功");
+    }
+
+    public String updateStatusById(KlgBaseQuestionsDTO klgBaseQuestionsDTO) {
+        KlgBaseQuestions klgBaseQuestions = KlgBaseQuestionsWrapper.INSTANCE.toEntity(klgBaseQuestionsDTO);
+        klgBaseQuestionsMapper.update(klgBaseQuestions, new QueryWrapper<KlgBaseQuestions>().lambda().eq(KlgBaseQuestions::getId, klgBaseQuestions.getId()));
+        return "操作成功";
+    }
+}

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

@@ -0,0 +1,31 @@
+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_dispose
+ */
+@Data
+public class KlgBaseDisposeDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 提问id
+     */
+    private String questionId;
+
+    /**
+     * 问题处理人
+     */
+    private String disposeBy;
+
+    private static final long serialVersionUID = 1L;
+}

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

@@ -0,0 +1,95 @@
+package com.jeeplus.test.klgBase.question.service.dto;
+
+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.workContract.service.dto.WorkAttachmentDto;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 知识库-业务提问
+ * @TableName klg_base_questions
+ */
+@Data
+public class KlgBaseQuestionsDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 问题类型
+     */
+    private String type;
+
+    /**
+     * 项目名称id
+     */
+    private String programId;
+
+    /**
+     * 项目名称
+     */
+    private String programName;
+
+    /**
+     * 问题处理人
+     */
+    private String disposeBy;
+
+    /**
+     * 期望完成时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date expectFinishDate;
+
+    /**
+     * 问题内容
+     */
+    private String content;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 流程信息
+     */
+    private String processDefinitionId;
+
+    /**
+     * 问题处理人
+     */
+    private List<KlgBaseDisposeDTO> klgBaseDisposeDTOList;
+
+    /**
+     * 回复内容
+     */
+    private List<KlgBaseReplyDTO> klgBaseReplyDTOList;
+
+    /**
+     * 附件信息
+     */
+    private List<WorkAttachmentDto> workAttachmentDtoList;
+
+
+    private static final long serialVersionUID = 1L;
+}

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

@@ -0,0 +1,48 @@
+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;
+
+import java.util.Date;
+
+/**
+ * 知识库-业务提问-回复表
+ * @TableName klg_base_reply
+ */
+@Data
+public class KlgBaseReplyDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 提问id
+     */
+    private String questionId;
+
+    /**
+     * 回复内容
+     */
+    private String content;
+
+    /**
+     * 回复人
+     */
+    private String replyBy;
+
+    /**
+     * 回复时间
+     */
+    private Date replyDate;
+
+    /**
+     * 序号
+     */
+    private String sort;
+
+    private static final long serialVersionUID = 1L;
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/service/mapstruct/KlgBaseDisposeWrapper.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.service.dto.KlgBaseDisposeDTO;
+import com.jeeplus.test.rank.domain.RankLevel;
+import com.jeeplus.test.rank.service.dto.RankLevelDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface KlgBaseDisposeWrapper extends EntityWrapper<KlgBaseDisposeDTO, KlgBaseDispose> {
+
+    KlgBaseDisposeWrapper INSTANCE = Mappers.getMapper(KlgBaseDisposeWrapper.class);
+
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/service/mapstruct/KlgBaseQuestionsWrapper.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.KlgBaseQuestions;
+import com.jeeplus.test.klgBase.question.service.dto.KlgBaseDisposeDTO;
+import com.jeeplus.test.klgBase.question.service.dto.KlgBaseQuestionsDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface KlgBaseQuestionsWrapper extends EntityWrapper<KlgBaseQuestionsDTO, KlgBaseQuestions> {
+
+    KlgBaseQuestionsWrapper INSTANCE = Mappers.getMapper(KlgBaseQuestionsWrapper.class);
+
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/klgBase/question/service/mapstruct/KlgBaseReplyWrapper.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.KlgBaseReply;
+import com.jeeplus.test.klgBase.question.service.dto.KlgBaseDisposeDTO;
+import com.jeeplus.test.klgBase.question.service.dto.KlgBaseReplyDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface KlgBaseReplyWrapper extends EntityWrapper<KlgBaseReplyDTO, KlgBaseReply> {
+
+    KlgBaseReplyWrapper INSTANCE = Mappers.getMapper(KlgBaseReplyWrapper.class);
+
+}

+ 2 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/proofread/mapper/xml/ProofreadInfoMapper.xml

@@ -14,7 +14,7 @@
 			a.project_id,
 			b.`name` AS project_name,
 			b.assessment_date,
-			b.project_manager_name,
+			d.`name` AS project_manager_name,
 			a.process_user_id,
 			c.name AS process_user_name,
 			a.process_date,
@@ -23,6 +23,7 @@
 		FROM proofread_info a
 		LEFT JOIN program_project_list_info b ON a.project_id = b.id
 		LEFT JOIN sys_user c ON a.process_user_id = c.id
+		LEFT JOIN sys_user d ON b.project_manager = d.id
 		WHERE
 			a.del_flag = 0
 			AND a.project_id = #{id}

+ 10 - 1
jeeplus-plugins/jeeplus-flowable/src/main/java/com/jeeplus/flowable/controller/FlowableTaskController.java

@@ -171,7 +171,16 @@ public class FlowableTaskController {
         if(StringUtils.isNotBlank(flow.getAssignee ())){
             Task task = taskService.createTaskQuery().processInstanceId(procInsId).active().singleResult();
             if(task != null){
-                taskService.setAssignee(task.getId(), flow.getAssignee ());
+                String[] split = flow.getAssignee().split(",");
+                if (split.length == 1) {
+                    taskService.setAssignee(task.getId(), flow.getAssignee ());
+                } else {
+                    for (String i : split) {
+                        taskService.addCandidateUser(task.getId(),i);
+                    }
+                }
+
+
             }
         }
         return ResponseEntity.ok (procInsId);