Procházet zdrojové kódy

Merge branch '2.0' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into 2.0

LAPTOP-KB9HII50\70708 před 2 roky
rodič
revize
f5c9a302fd
21 změnil soubory, kde provedl 1978 přidání a 0 odebrání
  1. 24 0
      business/base-service/src/main/java/com/yihu/jw/knowledge/dao/BaseKnowledgeDictDao.java
  2. 27 0
      business/base-service/src/main/java/com/yihu/jw/knowledge/dao/BaseKnowledgeDictRelationDao.java
  3. 22 0
      business/base-service/src/main/java/com/yihu/jw/knowledge/dao/BaseKnowledgeFlowConfigurationRelationDao.java
  4. 28 0
      business/base-service/src/main/java/com/yihu/jw/knowledge/dao/BaseKnowledgeQuestionDao.java
  5. 24 0
      business/base-service/src/main/java/com/yihu/jw/knowledge/dao/BaseKnowledgeQuestionsDao.java
  6. 27 0
      business/base-service/src/main/java/com/yihu/jw/knowledge/dao/BaseKnowledgeQuestionsRelationDao.java
  7. 21 0
      business/base-service/src/main/java/com/yihu/jw/knowledge/dao/BaseSystemDialogSettingDao.java
  8. 223 0
      business/base-service/src/main/java/com/yihu/jw/knowledge/service/BaseKnowledgeDictService.java
  9. 365 0
      business/base-service/src/main/java/com/yihu/jw/knowledge/service/BaseKnowledgeQuestionService.java
  10. 104 0
      business/base-service/src/main/java/com/yihu/jw/knowledge/service/BaseSystemDialogSettingService.java
  11. 85 0
      common/common-entity/src/main/java/com/yihu/jw/entity/knowledge/BaseKnowledgeDict.java
  12. 73 0
      common/common-entity/src/main/java/com/yihu/jw/entity/knowledge/BaseKnowledgeDictRelation.java
  13. 89 0
      common/common-entity/src/main/java/com/yihu/jw/entity/knowledge/BaseKnowledgeFlowConfigurationRelation.java
  14. 112 0
      common/common-entity/src/main/java/com/yihu/jw/entity/knowledge/BaseKnowledgeQuestion.java
  15. 116 0
      common/common-entity/src/main/java/com/yihu/jw/entity/knowledge/BaseKnowledgeQuestions.java
  16. 56 0
      common/common-entity/src/main/java/com/yihu/jw/entity/knowledge/BaseKnowledgeQuestionsRelation.java
  17. 140 0
      common/common-entity/src/main/java/com/yihu/jw/entity/knowledge/BaseSystemDialogSetting.java
  18. 48 0
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/hospital/BaseHospitalRequestMapping.java
  19. 114 0
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/knowledge/BaseKnowledgeDictController.java
  20. 214 0
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/knowledge/BaseKnowledgeQuestionController.java
  21. 66 0
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/knowledge/BaseSystemDialogSettingController.java

+ 24 - 0
business/base-service/src/main/java/com/yihu/jw/knowledge/dao/BaseKnowledgeDictDao.java

@ -0,0 +1,24 @@
package com.yihu.jw.knowledge.dao;
import com.yihu.jw.entity.knowledge.BaseKnowledgeDict;
import com.yihu.jw.entity.knowledge.BaseKnowledgeQuestion;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
/**
 * 知识库-字典dao
 * @wangzhinan
 */
@Transactional
public interface BaseKnowledgeDictDao extends JpaRepository<BaseKnowledgeDict, String>, JpaSpecificationExecutor<BaseKnowledgeDict> {
    @Modifying
    @Query("update BaseKnowledgeDict p set p.del = ?2 where p.id = ?1")
    void updateDelById(String id,Integer del);
    @Query("from BaseKnowledgeDict p where p.sort = ?1 ")
    BaseKnowledgeDict selectBySort(Integer sort);
}

+ 27 - 0
business/base-service/src/main/java/com/yihu/jw/knowledge/dao/BaseKnowledgeDictRelationDao.java

@ -0,0 +1,27 @@
package com.yihu.jw.knowledge.dao;
import com.yihu.jw.entity.knowledge.BaseKnowledgeDictRelation;
import com.yihu.jw.entity.knowledge.BaseKnowledgeQuestionsRelation;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
 * 知识库-字典关联dao
 * @wangzhinan
 */
@Transactional
public interface BaseKnowledgeDictRelationDao extends JpaRepository<BaseKnowledgeDictRelation, String>, JpaSpecificationExecutor<BaseKnowledgeDictRelation> {
    @Query("from BaseKnowledgeDictRelation p where p.dictId = ?1 ")
    List<BaseKnowledgeDictRelation> selectByDictId(String dictId);
    @Modifying
    @Query("delete from BaseKnowledgeDictRelation p where p.dictId=?1 ")
    void deleteByDictId(String dictId);
}

+ 22 - 0
business/base-service/src/main/java/com/yihu/jw/knowledge/dao/BaseKnowledgeFlowConfigurationRelationDao.java

@ -0,0 +1,22 @@
package com.yihu.jw.knowledge.dao;
import com.yihu.jw.entity.knowledge.BaseKnowledgeFlowConfigurationRelation;
import com.yihu.jw.entity.knowledge.BaseKnowledgeQuestionsRelation;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
 * 知识库-流程问题配置关联dao
 * @wangzhinan
 */
@Transactional
public interface BaseKnowledgeFlowConfigurationRelationDao extends JpaRepository<BaseKnowledgeFlowConfigurationRelation, String>, JpaSpecificationExecutor<BaseKnowledgeFlowConfigurationRelation> {
    @Query("from BaseKnowledgeFlowConfigurationRelation p where p.questionId = ?1 ")
    List<BaseKnowledgeFlowConfigurationRelation> selectByQuestionId(String questionId);
}

+ 28 - 0
business/base-service/src/main/java/com/yihu/jw/knowledge/dao/BaseKnowledgeQuestionDao.java

@ -0,0 +1,28 @@
package com.yihu.jw.knowledge.dao;
import com.yihu.jw.entity.knowledge.BaseKnowledgeQuestion;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
/**
 * 知识库-常见问题dao
 * @wangzhinan
 */
@Transactional
public interface BaseKnowledgeQuestionDao extends JpaRepository<BaseKnowledgeQuestion, String>, JpaSpecificationExecutor<BaseKnowledgeQuestion> {
    @Modifying
    @Query("update BaseKnowledgeQuestion p set p.del = ?2 where p.id = ?1")
    void updateDelById(String id,Integer del);
    @Modifying
    @Query("update BaseKnowledgeQuestion p set p.flag = ?2 where p.id = ?1")
    void updateFlagById(String id,Integer flag);
    @Query("from BaseKnowledgeQuestion p where p.sort = ?1 ")
    BaseKnowledgeQuestion selectBySort(Integer sort);
}

+ 24 - 0
business/base-service/src/main/java/com/yihu/jw/knowledge/dao/BaseKnowledgeQuestionsDao.java

@ -0,0 +1,24 @@
package com.yihu.jw.knowledge.dao;
import com.yihu.jw.entity.knowledge.BaseKnowledgeQuestion;
import com.yihu.jw.entity.knowledge.BaseKnowledgeQuestions;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
/**
 * 知识库-问题集dao
 * @wangzhinan
 */
@Transactional
public interface BaseKnowledgeQuestionsDao extends JpaRepository<BaseKnowledgeQuestions, String>, JpaSpecificationExecutor<BaseKnowledgeQuestions> {
    @Query("from BaseKnowledgeQuestions p where p.sort = ?1 ")
    BaseKnowledgeQuestions selectBySort(Integer sort);
    @Modifying
    @Query("update BaseKnowledgeQuestions p set p.del = ?2 where p.id = ?1")
    void updateDelById(String id,Integer del);
}

+ 27 - 0
business/base-service/src/main/java/com/yihu/jw/knowledge/dao/BaseKnowledgeQuestionsRelationDao.java

@ -0,0 +1,27 @@
package com.yihu.jw.knowledge.dao;
import com.yihu.jw.entity.knowledge.BaseKnowledgeQuestion;
import com.yihu.jw.entity.knowledge.BaseKnowledgeQuestionsRelation;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
 * 知识库-常见问题集关联关系dao
 * @wangzhinan
 */
@Transactional
public interface BaseKnowledgeQuestionsRelationDao extends JpaRepository<BaseKnowledgeQuestionsRelation, String>, JpaSpecificationExecutor<BaseKnowledgeQuestionsRelation> {
    @Query("from BaseKnowledgeQuestionsRelation p where p.questionsId = ?1 ")
    List<BaseKnowledgeQuestionsRelation> selectByQuestionsId(String questionsId);
    @Modifying
    @Query("delete from BaseKnowledgeQuestionsRelation p where p.questionsId=?1 ")
    void deleteByQuestionsId(String questionsId);
}

+ 21 - 0
business/base-service/src/main/java/com/yihu/jw/knowledge/dao/BaseSystemDialogSettingDao.java

@ -0,0 +1,21 @@
package com.yihu.jw.knowledge.dao;
import com.yihu.jw.entity.knowledge.BaseKnowledgeDictRelation;
import com.yihu.jw.entity.knowledge.BaseSystemDialogSetting;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
 * 系统会话设置dao
 * @wangzhinan
 */
@Transactional
public interface BaseSystemDialogSettingDao extends JpaRepository<BaseSystemDialogSetting, String>, JpaSpecificationExecutor<BaseSystemDialogSettingDao> {
    @Query("from BaseSystemDialogSetting p where p.systemType = ?1 ")
    List<BaseSystemDialogSetting> selectBySystemType(String systemType);
}

+ 223 - 0
business/base-service/src/main/java/com/yihu/jw/knowledge/service/BaseKnowledgeDictService.java

@ -0,0 +1,223 @@
package com.yihu.jw.knowledge.service;
import com.yihu.jw.dict.dao.DictHospitalDeptDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.knowledge.BaseKnowledgeDict;
import com.yihu.jw.entity.knowledge.BaseKnowledgeDictRelation;
import com.yihu.jw.entity.knowledge.BaseKnowledgeQuestion;
import com.yihu.jw.knowledge.dao.*;
import com.yihu.jw.mysql.query.BaseJpaService;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 字典中心
 *
 * @wangzhinan
 */
@Service
public class BaseKnowledgeDictService extends BaseJpaService<BaseKnowledgeDict, BaseKnowledgeDictDao> {
    private org.slf4j.Logger logger = LoggerFactory.getLogger(BaseKnowledgeDictService.class);
    @Autowired
    private BaseKnowledgeDictDao dictDao;
    @Autowired
    private BaseKnowledgeDictRelationDao dictRelationDao;
    @Autowired
    private HibenateUtils hibenateUtils;
    @Autowired
    private DictHospitalDeptDao hospitalDeptDao;
    @Autowired
    private BaseDoctorDao doctorDao;
    /**
     * 新增及修改字典
     * @param knowledgeDict
     * @return
     */
    public BaseKnowledgeDict insertAndUpdateDict(BaseKnowledgeDict knowledgeDict){
        if (StringUtils.isNoneBlank(knowledgeDict.getId())){
            BaseKnowledgeDict dict = dictDao.findById(knowledgeDict.getId()).get();
            knowledgeDict.setDel(dict.getDel());
            knowledgeDict.setSort(dict.getSort());
            knowledgeDict.setStatus(dict.getStatus());
            knowledgeDict.setUpdateTime(new Date());
        }else {
            knowledgeDict.setDel(1);
            knowledgeDict.setSort(maxSort("base_knowledge_dict")+1);
            knowledgeDict.setStatus(0);
            knowledgeDict.setCreateTime(new Date());
            knowledgeDict.setUpdateTime(new Date());
        }
        return dictDao.save(knowledgeDict);
    }
    /**
     * 获取排序的序号
     *
     * @param tableName
     * @return
     */
    public  Integer maxSort(String tableName){
        String sql = "SELECT MAX(sort) as sort from "+tableName+" where del=1  ";
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(sql);
        Integer count = 0;
        if (rstotal != null && rstotal.size() > 0) {
            if (rstotal.get(0).get("sort")!=null){
                count = Integer.parseInt(rstotal.get(0).get("sort").toString());
            }
        }
        return count;
    }
    /**
     * 删除字典
     * @param id
     * @return
     */
    public void deleteDict(String id){
        dictDao.updateDelById(id, 0);
    }
    /**
     * 查询字典列表
     * @param name
     * @param type
     * @param status
     */
    public MixEnvelop selectDictList(String name, String type, String status, Integer page, Integer size){
        String condition = " and del = 1 order by sort asc,create_time desc ";
        String sql = "SELECT\n" +
                "\tid,\n" +
                "\ttype,\n" +
                "\tname,\n" +
                "\tdescription,\n" +
                "\tcreate_user as createUser,\n" +
                "\tcreate_user_name as createUserName,\n" +
                "\tstatus,\n" +
                "\tsort\n" +
                "FROM\n" +
                "\tbase_knowledge_dict where 1=1 ";
        if (StringUtils.isNoneBlank(name)){
            condition +=" and NAME like '%"+name+"%' ";
        }
        if (StringUtils.isNoneBlank(type)){
            condition +=" and type ='"+type+"' ";
        }
        if (StringUtils.isNoneBlank(status)){
            condition +=" and status ='"+type+"' ";
        }
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql+condition, page, size);
        String sqlCount ="select COUNT(1) as total from base_knowledge_dict where 1=1 ";
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(sqlCount+condition);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
            count = Long.parseLong(rstotal.get(0).get("total").toString());
        }
        return MixEnvelop.getSuccessListWithPage("success", list, page, size, count);
    }
    /**
     * 根据id查询某一个字典详情(关联数据)
     * @param id
     * @return
     */
    public BaseKnowledgeDict selectById(String id){
        BaseKnowledgeDict dict = dictDao.findById(id).get();
        if (dict.getStatus()==1){
            List<BaseKnowledgeDictRelation> dictRelations = dictRelationDao.selectByDictId(dict.getId());
            for (BaseKnowledgeDictRelation dictRelation:dictRelations){
                String dept = dictRelation.getDept();
                String doctor = dictRelation.getDoctor();
                String deptstr[]= dept.split(",");
                String doctorstr[]= doctor.split(",");
                List<DictHospitalDeptDO> hospitalDeptDOS = new ArrayList<>();
                List<BaseDoctorDO> doctorDOS = new ArrayList<>();
                for (int i=0;i<deptstr.length-1;i++){
                    DictHospitalDeptDO hospitalDeptDO = hospitalDeptDao.findByCode(deptstr[i]);
                    hospitalDeptDOS.add(hospitalDeptDO);
                }
                for (int i=0;i<doctorstr.length-1;i++){
                    BaseDoctorDO doctorDO = doctorDao.findById(doctorstr[i]).get();
                    doctorDOS.add(doctorDO);
                }
                dictRelation.setDeptDOS(hospitalDeptDOS);
                dictRelation.setDoctorDOS(doctorDOS);
            }
            dict.setDictRelations(dictRelations);
        }
        return dict;
    }
    /**
     * 字典设置排序
     * @param id
     * @param flag 1上移2下移
     */
    public BaseKnowledgeDict setDictSortById(String id,Integer flag){
        BaseKnowledgeDict knowledgeDict = dictDao.findById(id).get();
        int sort = 0;
        if (flag==1){
            sort = knowledgeDict.getSort()-1;
            BaseKnowledgeDict knowledgeDict1= dictDao.selectBySort(sort);
            if (knowledgeDict1!=null){
                knowledgeDict1.setSort(knowledgeDict.getSort()+1);
                dictDao.save(knowledgeDict1);
            }
        }else if (flag==2){
            sort = knowledgeDict.getSort()+1;
            BaseKnowledgeDict knowledgeDict1= dictDao.selectBySort(sort);
            if (knowledgeDict1!=null){
                knowledgeDict1.setSort(knowledgeDict.getSort()-1);
                dictDao.save(knowledgeDict1);
            }
        }else if (flag==3){
            sort = 1;
            BaseKnowledgeDict knowledgeDict1= dictDao.selectBySort(sort);
            if (knowledgeDict1!=null){
                knowledgeDict1.setSort(knowledgeDict.getSort());
                dictDao.save(knowledgeDict1);
            }
        }
        if (sort!=0){
            knowledgeDict.setSort(sort);
        }
        return dictDao.save(knowledgeDict);
    }
    public void setDictRelation(BaseKnowledgeDictRelation baseKnowledgeDictRelation,Integer status){
        if (status==0){
            dictRelationDao.deleteByDictId(baseKnowledgeDictRelation.getDictId());
        }else {
            baseKnowledgeDictRelation.setUpdateTime(new Date());
            baseKnowledgeDictRelation.setCreateTime(new Date());
            dictRelationDao.save(baseKnowledgeDictRelation);
        }
        BaseKnowledgeDict dict = dictDao.findById(baseKnowledgeDictRelation.getDictId()).get();
        dict.setStatus(status);
        dictDao.save(dict);
    }
}

+ 365 - 0
business/base-service/src/main/java/com/yihu/jw/knowledge/service/BaseKnowledgeQuestionService.java

@ -0,0 +1,365 @@
package com.yihu.jw.knowledge.service;
import com.yihu.jw.entity.knowledge.*;
import com.yihu.jw.knowledge.dao.*;
import com.yihu.jw.mysql.query.BaseJpaService;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 常见问题
 * @wangzhinan
 */
@Service
public class BaseKnowledgeQuestionService extends BaseJpaService<BaseKnowledgeQuestion, BaseKnowledgeQuestionDao> {
    private org.slf4j.Logger logger = LoggerFactory.getLogger(BaseKnowledgeQuestionService.class);
    @Autowired
    private BaseKnowledgeQuestionDao questionDao;
    @Autowired
    private BaseKnowledgeQuestionsDao questionsDao;
    @Autowired
    private BaseKnowledgeQuestionsRelationDao questionsRelationDao;
    @Autowired
    private BaseKnowledgeDictDao dictDao;
    @Autowired
    private BaseKnowledgeFlowConfigurationRelationDao flowConfigurationRelationDao;
    @Autowired
    private HibenateUtils hibenateUtils;
    /**
     * 新增常见问题
     * @param knowledgeQuestion
     * @return
     */
    public BaseKnowledgeQuestion insertAndUpdateQuestion(BaseKnowledgeQuestion knowledgeQuestion){
        if (StringUtils.isNoneBlank(knowledgeQuestion.getId())){
            BaseKnowledgeQuestion question = questionDao.findById(knowledgeQuestion.getId()).get();
            knowledgeQuestion.setDel(question.getDel());
            knowledgeQuestion.setSort(question.getSort());
            knowledgeQuestion.setUpdateTime(new Date());
        }else {
            knowledgeQuestion.setDel(1);
            knowledgeQuestion.setSort(maxSort("base_knowledge_question")+1);
            knowledgeQuestion.setCreateTime(new Date());
            knowledgeQuestion.setUpdateTime(new Date());
        }
        return questionDao.save(knowledgeQuestion);
    }
    /**
     * 获取排序的序号
     *
     * @param tableName
     * @return
     */
    public  Integer maxSort(String tableName){
        String sql = "SELECT MAX(sort) as sort from "+tableName+" where del=1  ";
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(sql);
        Integer count = 0;
        if (rstotal != null && rstotal.size() > 0) {
            if (rstotal.get(0).get("sort")!=null){
                count = Integer.parseInt(rstotal.get(0).get("sort").toString());
            }
        }
        return count;
    }
    /**
     * 删除常见问题
     * @param id
     * @return
     */
    public void deleteQuestion(String id){
        questionDao.updateDelById(id, 0);
    }
    /**
     * 查询问题列表
     * @param name
     * @param type
     * @param status
     */
    public MixEnvelop selectQuestionList(String name,String type,String status,Integer page,Integer size){
        String condition = " and del = 1 order by sort asc,create_time desc ";
        String sql = "SELECT\n" +
                "\tid,\n" +
                "\ttype,\n" +
                "\tquestion_name AS questionName,\n" +
                "\tsimilar_question_name AS similarQuestionName,\n" +
                "\tanswer,\n" +
                "\tcreate_user as createUser,\n" +
                "\tcreate_user_name as createUserName,\n" +
                "\tstatus,\n" +
                "\ttime,\n" +
                "\tsort\n" +
                "FROM\n" +
                "\tbase_knowledge_question where 1=1 ";
        if (StringUtils.isNoneBlank(name)){
            condition +=" and question_name like '"+name+"' ";
        }
        if (StringUtils.isNoneBlank(type)){
            condition +=" and type ='"+type+"' ";
        }
        if (StringUtils.isNoneBlank(status)){
            condition +=" and status ='"+type+"' ";
        }
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql+condition, page, size);
        String sqlCount ="select COUNT(1) as total from base_knowledge_question where 1=1 ";
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(sqlCount+condition);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
            count = Long.parseLong(rstotal.get(0).get("total").toString());
        }
        return MixEnvelop.getSuccessListWithPage("success", list, page, size, count);
    }
    /**
     * 根据id查询某一个问题详情
     * @param id
     * @return
     */
    public BaseKnowledgeQuestion selectById(String id){
        return questionDao.findById(id).get();
    }
    /**
     * 问题设置排序
     * @param id
     * @param flag 1上移2下移
     */
    public BaseKnowledgeQuestion setQuestionSortById(String id,Integer flag){
        BaseKnowledgeQuestion knowledgeQuestion = questionDao.findById(id).get();
        int sort = 0;
        if (flag==1){
            sort = knowledgeQuestion.getSort()-1;
            BaseKnowledgeQuestion knowledgeQuestion1= questionDao.selectBySort(sort);
            if (knowledgeQuestion1!=null){
                knowledgeQuestion1.setSort(knowledgeQuestion.getSort()+1);
                questionDao.save(knowledgeQuestion1);
            }
        }else if (flag==2){
            sort = knowledgeQuestion.getSort()+1;
            BaseKnowledgeQuestion knowledgeQuestion1= questionDao.selectBySort(sort);
            if (knowledgeQuestion1!=null){
                knowledgeQuestion1.setSort(knowledgeQuestion.getSort()-1);
                questionDao.save(knowledgeQuestion1);
            }
        }else if (flag==3){
            sort = 1;
            BaseKnowledgeQuestion knowledgeQuestion1= questionDao.selectBySort(sort);
            if (knowledgeQuestion1!=null){
                knowledgeQuestion1.setSort(knowledgeQuestion.getSort());
                questionDao.save(knowledgeQuestion1);
            }
        }
        if (sort!=0){
            knowledgeQuestion.setSort(sort);
        }
        return questionDao.save(knowledgeQuestion);
    }
    //=========================问题集合=============================
    /**
     * 新增问题集合
     * @param knowledgeQuestions
     * @return
     */
    public BaseKnowledgeQuestions insertAndUpdateQuestions(BaseKnowledgeQuestions knowledgeQuestions, List<BaseKnowledgeQuestionsRelation> questionsRelations){
        if (StringUtils.isNoneBlank(knowledgeQuestions.getId())){
            BaseKnowledgeQuestions question = questionsDao.findById(knowledgeQuestions.getId()).get();
            knowledgeQuestions.setDel(question.getDel());
            knowledgeQuestions.setCount(questionsRelations.size());
            knowledgeQuestions.setSort(question.getSort());
            knowledgeQuestions.setUpdateTime(new Date());
            questionsRelationDao.deleteByQuestionsId(question.getId());
        }else {
            knowledgeQuestions.setDel(1);
            knowledgeQuestions.setCount(questionsRelations.size());
            knowledgeQuestions.setSort(maxSort("base_knowledge_questions")+1);
            knowledgeQuestions.setCreateTime(new Date());
            knowledgeQuestions.setUpdateTime(new Date());
        }
        knowledgeQuestions = questionsDao.save(knowledgeQuestions);
        for (BaseKnowledgeQuestionsRelation questionsRelation:questionsRelations){
            questionsRelation.setQuestionsId(knowledgeQuestions.getId());
            questionsRelation.setCreateTime(new Date());
            questionsRelation.setUpdateTime(new Date());
            questionsRelationDao.save(questionsRelation);
        }
        return knowledgeQuestions;
    }
    /**
     * 删除问题集合
     * @param id
     * @return
     */
    public void deleteQuestions(String id){
        questionsDao.updateDelById(id, 0);
    }
    /**
     * 查询问题集合列表
     * @param name
     * @param type
     * @param status
     */
    public MixEnvelop selectQuestionsList(String name,String type,String status,Integer page,Integer size){
        String condition = " and del = 1 order by sort asc,create_time desc ";
        String sql = "SELECT\n" +
                "\tid,\n" +
                "\tbusiness_type AS businessType,\n" +
                "\tquestions_name AS questionsName,\n" +
                "\tcount,\n" +
                "\tdescription,\n" +
                "\tcreate_user as createUser,\n" +
                "\tcreate_user_name as createUserName,\n" +
                "\tstatus,\n" +
                "\ttime,\n" +
                "\tsort\n" +
                "FROM\n" +
                "\tbase_knowledge_questions where 1=1 ";
        if (StringUtils.isNoneBlank(name)){
            condition +=" and questions_name like '"+name+"' ";
        }
        if (StringUtils.isNoneBlank(type)){
            condition +=" and business_type ='"+type+"' ";
        }
        if (StringUtils.isNoneBlank(status)){
            condition +=" and status ='"+type+"' ";
        }
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql+condition, page, size);
        for (Map<String,Object> map:list){
            String id = map.get("id").toString();
            List<BaseKnowledgeQuestionsRelation> questionsRelations = questionsRelationDao.selectByQuestionsId(id);
            for (BaseKnowledgeQuestionsRelation questionsRelation:questionsRelations){
                BaseKnowledgeQuestion question = questionDao.findById(questionsRelation.getQuestionId()).get();
                questionsRelation.setQuestion(question);
            }
            map.put("questionsRelation",questionsRelations);
        }
        String sqlCount ="select COUNT(1) as total from base_knowledge_questions where 1=1 ";
        List<Map<String, Object>> rstotal = hibenateUtils.createSQLQuery(sqlCount+condition);
        Long count = 0L;
        if (rstotal != null && rstotal.size() > 0) {
            count = Long.parseLong(rstotal.get(0).get("total").toString());
        }
        return MixEnvelop.getSuccessListWithPage("success", list, page, size, count);
    }
    /**
     * 根据id查询某一个问题集合详情
     * @param id
     * @return
     */
    public BaseKnowledgeQuestions selectQuestionsById(String id){
        BaseKnowledgeQuestions questions = questionsDao.findById(id).get();
        String questionsId = questions.getId();
        List<BaseKnowledgeQuestionsRelation> questionsRelations = questionsRelationDao.selectByQuestionsId(questionsId);
        for (BaseKnowledgeQuestionsRelation questionsRelation:questionsRelations){
            BaseKnowledgeQuestion question = questionDao.findById(questionsRelation.getQuestionId()).get();
            questionsRelation.setQuestion(question);
        }
        questions.setQuestionsRelations(questionsRelations);
        return questions;
    }
    /**
     * 问题集合设置排序
     * @param id
     * @param flag 1上移2下移
     */
    public BaseKnowledgeQuestions setQuestionsSortById(String id,Integer flag){
        BaseKnowledgeQuestions knowledgeQuestions = questionsDao.findById(id).get();
        int sort = 0;
        if (flag==1){
            sort = knowledgeQuestions.getSort()-1;
            BaseKnowledgeQuestions knowledgeQuestions1= questionsDao.selectBySort(sort);
            if (knowledgeQuestions1!=null){
                knowledgeQuestions1.setSort(knowledgeQuestions.getSort()+1);
                questionsDao.save(knowledgeQuestions1);
            }
        }else if (flag==2){
            sort = knowledgeQuestions.getSort()+1;
            BaseKnowledgeQuestions knowledgeQuestions1= questionsDao.selectBySort(sort);
            if (knowledgeQuestions1!=null){
                knowledgeQuestions1.setSort(knowledgeQuestions.getSort()-1);
                questionsDao.save(knowledgeQuestions1);
            }
        }else if (flag==3){
            sort = 1;
            BaseKnowledgeQuestions knowledgeQuestions1= questionsDao.selectBySort(1);
            if (knowledgeQuestions1!=null){
                knowledgeQuestions1.setSort(knowledgeQuestions.getSort());
                questionsDao.save(knowledgeQuestions1);
            }
        }
        if (sort!=0){
            knowledgeQuestions.setSort(sort);
        }
        return questionsDao.save(knowledgeQuestions);
    }
    //=========================流程配置关联===========================================
    /**
     * 关联设置
     * @param flowConfigurationRelations
     */
    public List<BaseKnowledgeFlowConfigurationRelation> setQuestionConfigurationRelation(List<BaseKnowledgeFlowConfigurationRelation> flowConfigurationRelations){
        for (BaseKnowledgeFlowConfigurationRelation flowConfigurationRelation:flowConfigurationRelations){
            flowConfigurationRelation.setCreateTime(new Date());
            flowConfigurationRelation.setUpdateTime(new Date());
            flowConfigurationRelationDao.save(flowConfigurationRelation);
        }
        if (flowConfigurationRelations!=null&&flowConfigurationRelations.size()!=0){
            BaseKnowledgeFlowConfigurationRelation configurationRelation = flowConfigurationRelations.get(0);
            questionDao.updateFlagById(configurationRelation.getQuestionId(),1);
        }
        return flowConfigurationRelations;
    }
    /**
     * 根据问题id获取问题关联配置
     * @param questionId
     * @return
     */
    public List<BaseKnowledgeFlowConfigurationRelation> selectFlowConfigurationRelations(String questionId){
        List<BaseKnowledgeFlowConfigurationRelation> flowConfigurationRelations = flowConfigurationRelationDao.selectByQuestionId(questionId);
        for (BaseKnowledgeFlowConfigurationRelation flowConfigurationRelation:flowConfigurationRelations){
            if (flowConfigurationRelation.getRelationCode().equalsIgnoreCase("1")){
                flowConfigurationRelation.setQuestion(questionDao.findById(flowConfigurationRelation.getRelationCode()).get());
            }else if (flowConfigurationRelation.getRelationCode().equalsIgnoreCase("2")){
                flowConfigurationRelation.setDict(dictDao.findById(flowConfigurationRelation.getRelationCode()).get());
            }else if (flowConfigurationRelation.getRelationCode().equalsIgnoreCase("3")){
                flowConfigurationRelation.setQuestions(questionsDao.findById(flowConfigurationRelation.getRelationCode()).get());
            }
        }
        return flowConfigurationRelations;
    }
}

+ 104 - 0
business/base-service/src/main/java/com/yihu/jw/knowledge/service/BaseSystemDialogSettingService.java

@ -0,0 +1,104 @@
package com.yihu.jw.knowledge.service;
import com.yihu.jw.entity.knowledge.BaseKnowledgeDict;
import com.yihu.jw.entity.knowledge.BaseKnowledgeQuestion;
import com.yihu.jw.entity.knowledge.BaseKnowledgeQuestions;
import com.yihu.jw.entity.knowledge.BaseSystemDialogSetting;
import com.yihu.jw.knowledge.dao.BaseKnowledgeDictDao;
import com.yihu.jw.knowledge.dao.BaseKnowledgeQuestionDao;
import com.yihu.jw.knowledge.dao.BaseKnowledgeQuestionsDao;
import com.yihu.jw.knowledge.dao.BaseSystemDialogSettingDao;
import com.yihu.jw.mysql.query.BaseJpaService;
import com.ylzinfo.onepay.sdk.utils.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * 系统会话设置
 *
 * @wangzhinan
 */
@Service
public class BaseSystemDialogSettingService extends BaseJpaService<BaseSystemDialogSetting, BaseSystemDialogSettingDao> {
    private org.slf4j.Logger logger = LoggerFactory.getLogger(BaseSystemDialogSettingService.class);
    @Autowired
    private BaseSystemDialogSettingDao dialogSettingDao;
    @Autowired
    private BaseKnowledgeQuestionDao questionDao;
    @Autowired
    private BaseKnowledgeQuestionsDao questionsDao;
    @Autowired
    private BaseKnowledgeDictDao dictDao;
    /**
     * 新增和修改系统会话设置
     *
     * @param dialogSettings
     * @return
     */
    public List<BaseSystemDialogSetting> insterAndUpdateSystemDialogSetting(List<BaseSystemDialogSetting> dialogSettings){
        for (BaseSystemDialogSetting dialogSetting:dialogSettings){
            if (StringUtils.isNoneBlank(dialogSetting.getId())){
                dialogSetting.setUpdateTime(new Date());
            }else {
                dialogSetting.setCreateTime(new Date());
            }
            dialogSettingDao.save(dialogSetting);
        }
        return dialogSettings;
    }
    /**
     * 根据不同业务code查询相关的系统会话设置配置信息;
     *
     * @param systemType
     * @return
     */
    public List<BaseSystemDialogSetting> selectBySystemType(String systemType){
        List<BaseSystemDialogSetting> systemDialogSettings = dialogSettingDao.selectBySystemType(systemType);
        for (BaseSystemDialogSetting dialogSetting:systemDialogSettings){
            if (dialogSetting.getRelaitonCodeType()!=null){
                if (dialogSetting.getRelaitonCodeType()==1){
                    String question[] = dialogSetting.getRelationCode().split(",");
                    List<BaseKnowledgeQuestion> questionList = new ArrayList<>();
                    for (int i=0;i<=question.length-1;i++){
                        String questionId = question[i];
                        BaseKnowledgeQuestion knowledgeQuestion = questionDao.findById(questionId).get();
                        questionList.add(knowledgeQuestion);
                    }
                    dialogSetting.setQuestions(questionList);
                }else  if (dialogSetting.getRelaitonCodeType()==2){
                    String dict[] = dialogSetting.getRelationCode().split(",");
                    List<BaseKnowledgeDict> dictList = new ArrayList<>();
                    for (int i=0;i<=dict.length-1;i++){
                        String dictId = dict[i];
                        BaseKnowledgeDict knowledgeDict = dictDao.findById(dictId).get();
                        dictList.add(knowledgeDict);
                    }
                    dialogSetting.setDictList(dictList);
                }else if (dialogSetting.getRelaitonCodeType()==3){
                    String questions[] = dialogSetting.getRelationCode().split(",");
                    List<BaseKnowledgeQuestions> questionsList = new ArrayList<>();
                    for (int i=0;i<=questions.length-1;i++){
                        String questionId = questions[i];
                        BaseKnowledgeQuestions knowledgeQuestions = questionsDao.findById(questionId).get();
                        questionsList.add(knowledgeQuestions);
                    }
                    dialogSetting.setQuestionsList(questionsList);
                }
            }
        }
        return systemDialogSettings;
    }
}

+ 85 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/knowledge/BaseKnowledgeDict.java

@ -0,0 +1,85 @@
package com.yihu.jw.entity.knowledge;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.List;
/**
 * 知识库-字典
 * @wangzhinan
 *
 */
@Entity
@Table(name = "base_knowledge_dict")
public class BaseKnowledgeDict extends UuidIdentityEntityWithOperator {
	private String type;//所属分类关联字典wlyy_hospital_sys_dict(dictTypeDict)
	private String name; //名称
	private String description; //描述
	private Integer status;//1已设置0未设置
	private Integer sort;//排序
	private Integer del;//0删除1正常
	private List<BaseKnowledgeDictRelation> dictRelations;
	@Transient
	public List<BaseKnowledgeDictRelation> getDictRelations() {
		return dictRelations;
	}
	public void setDictRelations(List<BaseKnowledgeDictRelation> dictRelations) {
		this.dictRelations = dictRelations;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public Integer getStatus() {
		return status;
	}
	public void setStatus(Integer status) {
		this.status = status;
	}
	public Integer getSort() {
		return sort;
	}
	public void setSort(Integer sort) {
		this.sort = sort;
	}
	public Integer getDel() {
		return del;
	}
	public void setDel(Integer del) {
		this.del = del;
	}
}

+ 73 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/knowledge/BaseKnowledgeDictRelation.java

@ -0,0 +1,73 @@
package com.yihu.jw.entity.knowledge;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.hospital.dict.BaseDeptDict;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.List;
/**
 * 知识库-字典关联关系
 *
 * @wangzhinan
 *
 */
@Entity
@Table(name = "base_knowledge_dict_relation")
public class BaseKnowledgeDictRelation extends UuidIdentityEntityWithOperator {
	private String dictId;//字典id
	private String dept; //科室code,多个以逗号隔开
	private String doctor; //医生code 多个以逗号隔开
	private List<DictHospitalDeptDO> deptDOS;
	private List<BaseDoctorDO> doctorDOS;
	@Transient
	public List<DictHospitalDeptDO> getDeptDOS() {
		return deptDOS;
	}
	public void setDeptDOS(List<DictHospitalDeptDO> deptDOS) {
		this.deptDOS = deptDOS;
	}
	@Transient
	public List<BaseDoctorDO> getDoctorDOS() {
		return doctorDOS;
	}
	public void setDoctorDOS(List<BaseDoctorDO> doctorDOS) {
		this.doctorDOS = doctorDOS;
	}
	public String getDictId() {
		return dictId;
	}
	public void setDictId(String dictId) {
		this.dictId = dictId;
	}
	public String getDept() {
		return dept;
	}
	public void setDept(String dept) {
		this.dept = dept;
	}
	public String getDoctor() {
		return doctor;
	}
	public void setDoctor(String doctor) {
		this.doctor = doctor;
	}
}

+ 89 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/knowledge/BaseKnowledgeFlowConfigurationRelation.java

@ -0,0 +1,89 @@
package com.yihu.jw.entity.knowledge;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
/**
 * 流程配置关联关系
 *
 * @wangzhinan
 */
@Entity
@Table(name = "base_knowledge_flow_configuration_relation")
public class BaseKnowledgeFlowConfigurationRelation extends UuidIdentityEntityWithOperator {
    private String questionId;//问题id
    private String relationType;//关联类型(1常见问题、2字典中心、3问题集)
    private String relationCode;//关联code
    private Integer sort;//排序
    private BaseKnowledgeQuestion question;//常见问题
    private BaseKnowledgeDict dict;//问题字典
    private BaseKnowledgeQuestions questions;//问题集
    @Transient
    public BaseKnowledgeQuestion getQuestion() {
        return question;
    }
    public void setQuestion(BaseKnowledgeQuestion question) {
        this.question = question;
    }
    @Transient
    public BaseKnowledgeDict getDict() {
        return dict;
    }
    public void setDict(BaseKnowledgeDict dict) {
        this.dict = dict;
    }
    @Transient
    public BaseKnowledgeQuestions getQuestions() {
        return questions;
    }
    public void setQuestions(BaseKnowledgeQuestions questions) {
        this.questions = questions;
    }
    public String getQuestionId() {
        return questionId;
    }
    public void setQuestionId(String questionId) {
        this.questionId = questionId;
    }
    public String getRelationType() {
        return relationType;
    }
    public void setRelationType(String relationType) {
        this.relationType = relationType;
    }
    public String getRelationCode() {
        return relationCode;
    }
    public void setRelationCode(String relationCode) {
        this.relationCode = relationCode;
    }
    public Integer getSort() {
        return sort;
    }
    public void setSort(Integer sort) {
        this.sort = sort;
    }
}

+ 112 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/knowledge/BaseKnowledgeQuestion.java

@ -0,0 +1,112 @@
package com.yihu.jw.entity.knowledge;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * 常见问题
 * @wangzhinan
 */
@Entity
@Table(name = "base_knowledge_question")
public class BaseKnowledgeQuestion extends UuidIdentityEntityWithOperator {
	private String type;//所属分类关联字典wlyy_hospital_sys_dict(questionTypeDict)
	private String questionName; //标准问题
	private String similarQuestionName; //相似问题
	private String answer;//答案
	private Integer flag;//是否关联(1关联0未关联)
	private Integer status;//1开启0关闭
	private Integer time;//时效(1永久有效 2自定义有效期)
	private Date date;//时间
	private Integer sort;//排序
	private Integer del;//0删除1正常
	public Integer getFlag() {
		return flag;
	}
	public void setFlag(Integer flag) {
		this.flag = flag;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public String getQuestionName() {
		return questionName;
	}
	public void setQuestionName(String questionName) {
		this.questionName = questionName;
	}
	public String getSimilarQuestionName() {
		return similarQuestionName;
	}
	public void setSimilarQuestionName(String similarQuestionName) {
		this.similarQuestionName = similarQuestionName;
	}
	public String getAnswer() {
		return answer;
	}
	public void setAnswer(String answer) {
		this.answer = answer;
	}
	public Integer getStatus() {
		return status;
	}
	public void setStatus(Integer status) {
		this.status = status;
	}
	public Integer getTime() {
		return time;
	}
	public void setTime(Integer time) {
		this.time = time;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	@Column(name = "date", nullable = false, length = 0,updatable = false)
	public Date getDate() {
		return date;
	}
	public void setDate(Date date) {
		this.date = date;
	}
	public Integer getSort() {
		return sort;
	}
	public void setSort(Integer sort) {
		this.sort = sort;
	}
	public Integer getDel() {
		return del;
	}
	public void setDel(Integer del) {
		this.del = del;
	}
}

+ 116 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/knowledge/BaseKnowledgeQuestions.java

@ -0,0 +1,116 @@
package com.yihu.jw.entity.knowledge;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
import java.util.List;
/**
 * 问题集
 *
 * @wangzhinan
 */
@Entity
@Table(name = "base_knowledge_questions")
public class BaseKnowledgeQuestions extends UuidIdentityEntityWithOperator {
	private String businessType;//业务类型wlyy_hospital_sys_dict(businessTypeDict)
	private String questionsName; //问题集名称
	private Integer count; //问题数量
	private String description;//问题集描述
	private Integer status;//1开启0关闭
	private Integer time;//时效(1永久有效 2自定义有效期)
	private Date date;//时间
	private Integer sort;//排序
	private Integer del;//0删除1正常
	private List<BaseKnowledgeQuestionsRelation> questionsRelations;
	@Transient
	public List<BaseKnowledgeQuestionsRelation> getQuestionsRelations() {
		return questionsRelations;
	}
	public void setQuestionsRelations(List<BaseKnowledgeQuestionsRelation> questionsRelations) {
		this.questionsRelations = questionsRelations;
	}
	public String getBusinessType() {
		return businessType;
	}
	public void setBusinessType(String businessType) {
		this.businessType = businessType;
	}
	public String getQuestionsName() {
		return questionsName;
	}
	public void setQuestionsName(String questionsName) {
		this.questionsName = questionsName;
	}
	public Integer getCount() {
		return count;
	}
	public void setCount(Integer count) {
		this.count = count;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public Integer getStatus() {
		return status;
	}
	public void setStatus(Integer status) {
		this.status = status;
	}
	public Integer getTime() {
		return time;
	}
	public void setTime(Integer time) {
		this.time = time;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	@Column(name = "date", nullable = false, length = 0,updatable = false)
	public Date getDate() {
		return date;
	}
	public void setDate(Date date) {
		this.date = date;
	}
	public Integer getSort() {
		return sort;
	}
	public void setSort(Integer sort) {
		this.sort = sort;
	}
	public Integer getDel() {
		return del;
	}
	public void setDel(Integer del) {
		this.del = del;
	}
}

+ 56 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/knowledge/BaseKnowledgeQuestionsRelation.java

@ -0,0 +1,56 @@
package com.yihu.jw.entity.knowledge;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
/**
 * 问题集合关联
 * @wangzhinan
 */
@Entity
@Table(name = "base_knowledge_questions_relation")
public class BaseKnowledgeQuestionsRelation extends UuidIdentityEntityWithOperator {
	private String questionsId; //问题集id
	private String questionId;//单个问题id
	private String questionName;//单个问题名称
	private BaseKnowledgeQuestion question;//问题实体
	@Transient
	public BaseKnowledgeQuestion getQuestion() {
		return question;
	}
	public void setQuestion(BaseKnowledgeQuestion question) {
		this.question = question;
	}
	public String getQuestionsId() {
		return questionsId;
	}
	public void setQuestionsId(String questionsId) {
		this.questionsId = questionsId;
	}
	public String getQuestionId() {
		return questionId;
	}
	public void setQuestionId(String questionId) {
		this.questionId = questionId;
	}
	public String getQuestionName() {
		return questionName;
	}
	public void setQuestionName(String questionName) {
		this.questionName = questionName;
	}
}

+ 140 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/knowledge/BaseSystemDialogSetting.java

@ -0,0 +1,140 @@
package com.yihu.jw.entity.knowledge;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.List;
/**
 * 系统会话设置
 * @wangzhinan
 *
 */
@Entity
@Table(name = "base_system_dialog_setting")
public class BaseSystemDialogSetting extends UuidIdentityEntityWithOperator {
	private String systemType;//系统业务类型(字典systemBusinessType)
	private String systemName;//系统业务名称
	private String functionType;//业务类型(字典 sessionFunctionType)
	private String functionName;//业务名称
	private Integer flag;//1开0关
	private Integer relationType;//1关联文本(对应content)2关联业务(对应relaitonCode)
	private Integer relaitonCodeType;//1常见问题2字典中心3问题集
	private String relationCode;//relationType2对应业务code,多个逗号隔开
	private String content;//文本
	private String time;//超时时间
	private List<BaseKnowledgeQuestion> questions;//问题列表
	private List<BaseKnowledgeQuestions> questionsList;//问题集列表
	private List<BaseKnowledgeDict> dictList;//字典列表
	@Transient
	public List<BaseKnowledgeQuestion> getQuestions() {
		return questions;
	}
	public void setQuestions(List<BaseKnowledgeQuestion> questions) {
		this.questions = questions;
	}
	@Transient
	public List<BaseKnowledgeQuestions> getQuestionsList() {
		return questionsList;
	}
	public void setQuestionsList(List<BaseKnowledgeQuestions> questionsList) {
		this.questionsList = questionsList;
	}
	@Transient
	public List<BaseKnowledgeDict> getDictList() {
		return dictList;
	}
	public void setDictList(List<BaseKnowledgeDict> dictList) {
		this.dictList = dictList;
	}
	public String getSystemType() {
		return systemType;
	}
	public void setSystemType(String systemType) {
		this.systemType = systemType;
	}
	public String getSystemName() {
		return systemName;
	}
	public void setSystemName(String systemName) {
		this.systemName = systemName;
	}
	public String getFunctionType() {
		return functionType;
	}
	public void setFunctionType(String functionType) {
		this.functionType = functionType;
	}
	public String getFunctionName() {
		return functionName;
	}
	public void setFunctionName(String functionName) {
		this.functionName = functionName;
	}
	public Integer getFlag() {
		return flag;
	}
	public void setFlag(Integer flag) {
		this.flag = flag;
	}
	public Integer getRelationType() {
		return relationType;
	}
	public void setRelationType(Integer relationType) {
		this.relationType = relationType;
	}
	public Integer getRelaitonCodeType() {
		return relaitonCodeType;
	}
	public void setRelaitonCodeType(Integer relaitonCodeType) {
		this.relaitonCodeType = relaitonCodeType;
	}
	public String getRelationCode() {
		return relationCode;
	}
	public void setRelationCode(String relationCode) {
		this.relationCode = relationCode;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getTime() {
		return time;
	}
	public void setTime(String time) {
		this.time = time;
	}
}

+ 48 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/hospital/BaseHospitalRequestMapping.java

@ -1571,4 +1571,52 @@ public class BaseHospitalRequestMapping {
    public static class UpWebTherapySupserviceInfo extends Basic {
        public static final String PREFIX = "/open/gc";
    }
    /**
     * 知识库-问题
     */
    public static class BaseKnowledgeQuestion extends Basic{
        public static final String PREFIX  = "/baseKnowledgeQuestion";
        //==============问题=================
        public static final String insertAndUpdateQuestion = "/insertAndUpdateQuestion";
        public static final String deleteQuestion = "/deleteQuestion";
        public static final String selectQuestionList = "/selectQuestionList";
        public static final String selectById = "/selectById";
        public static final String setQuestionSortById = "/setQuestionSortById";
        //===========问题集合=================
        public static final String insertAndUpdateQuestions = "/insertAndUpdateQuestions";
        public static final String deleteQuestions = "/deleteQuestions";
        public static final String selectQuestionsList = "/selectQuestionsList";
        public static final String selectQuestionsById = "/selectQuestionsById";
        public static final String setQuestionsSortById = "/setQuestionsSortById";
        public static final String setQuestionConfigurationRelation = "/setQuestionConfigurationRelation";
        public static final String selectFlowConfigurationRelations = "/selectFlowConfigurationRelations";
    }
    /**
     * 知识库-字典
     */
    public static class BaseKnowledgeDict extends Basic{
        public static final String PREFIX  = "/baseKnowledgeDict";
        public static final String insertAndUpdateDict = "/insertAndUpdateDict";
        public static final String deleteDict = "/deleteDict";
        public static final String selectDictList = "/selectDictList";
        public static final String selectById = "/selectById";
        public static final String setDictSortById = "/setDictSortById";
        public static final String setDictRelation= "/setDictRelation";
    }
    /**
     * 系统会话设置
     */
    public static class BaseSystemDialogSetting extends Basic{
        public static final String PREFIX  = "/baseSystemDialogSetting";
        public static final String insterAndUpdateSystemDialogSetting = "/insterAndUpdateSystemDialogSetting";
        public static final String selectBySystemType = "/selectBySystemType";
    }
}

+ 114 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/knowledge/BaseKnowledgeDictController.java

@ -0,0 +1,114 @@
package com.yihu.jw.hospital.endpoint.knowledge;
import com.yihu.jw.entity.knowledge.BaseKnowledgeDict;
import com.yihu.jw.entity.knowledge.BaseKnowledgeDictRelation;
import com.yihu.jw.knowledge.dao.BaseKnowledgeDictDao;
import com.yihu.jw.knowledge.service.BaseKnowledgeDictService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = BaseHospitalRequestMapping.BaseKnowledgeDict.PREFIX)
@Api(value = "知识库-字典配置", description = "知识库-字典配置", tags = {"知识库-字典配置"})
public class BaseKnowledgeDictController extends EnvelopRestEndpoint {
    @Autowired
    private BaseKnowledgeDictService dictService;
    @ApiOperation("新增/更新字典")
    @PostMapping(value= BaseHospitalRequestMapping.BaseKnowledgeDict.insertAndUpdateDict)
    public Envelop insertAndUpdateDict(@ApiParam(name = "json", value = "字典实体json", required = true)
                                   @RequestParam(value = "json", required = true)String json){
        try {
            BaseKnowledgeDict dict = toEntity(json,BaseKnowledgeDict.class);
            return success(dictService.insertAndUpdateDict(dict));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("删除字典")
    @PostMapping(value= BaseHospitalRequestMapping.BaseKnowledgeDict.deleteDict)
    public Envelop deleteDict(@ApiParam(name = "id", value = "字典id", required = true)
                                   @RequestParam(value = "id", required = true)String id){
        try {
            dictService.deleteDict(id);
            return success();
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("查询字典列表")
    @GetMapping(value= BaseHospitalRequestMapping.BaseKnowledgeDict.selectDictList)
    public Envelop selectDictList(@ApiParam(name = "name", value = "字典名称", required = false)
                              @RequestParam(value = "name", required = false)String name,
                              @ApiParam(name = "type", value = "字典类型", required = false)
                              @RequestParam(value = "type", required = false)String type,
                              @ApiParam(name = "status", value = "1已设置0未设置", required = false)
                                  @RequestParam(value = "status", required = false)String status,
                              @ApiParam(name = "page", value = "页码", required = false)
                                  @RequestParam(value = "page", required = false)Integer page,
                              @ApiParam(name = "size", value = "大小", required = false)
                                  @RequestParam(value = "size", required = false)Integer size){
        try {
            return success(dictService.selectDictList(name,type,status,page,size));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("根据id查询某一个字典详情(关联数据)")
    @GetMapping(value= BaseHospitalRequestMapping.BaseKnowledgeDict.selectById)
    public Envelop selectById(@ApiParam(name = "id", value = "字典id", required = true)
                              @RequestParam(value = "id", required = true)String id){
        try {
            return success(dictService.selectById(id));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("字典设置排序")
    @GetMapping(value= BaseHospitalRequestMapping.BaseKnowledgeDict.setDictSortById)
    public Envelop setDictSortById(@ApiParam(name = "id", value = "字典id", required = true)
                              @RequestParam(value = "id", required = true)String id,
                                   @ApiParam(name = "flag", value = "1上移2下移", required = true)
                                   @RequestParam(value = "flag", required = true)Integer flag){
        try {
            return success(dictService.setDictSortById(id,flag));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("设置关联关系及取消关联关系")
    @GetMapping(value= BaseHospitalRequestMapping.BaseKnowledgeDict.setDictRelation)
    public Envelop setDictRelation(@ApiParam(name = "json", value = "json关联实体", required = true)
                                   @RequestParam(value = "json", required = true)String json,
                                   @ApiParam(name = "status", value = "1已设置0未设置", required = true)
                                   @RequestParam(value = "status", required = true)Integer status){
        try {
            BaseKnowledgeDictRelation dictRelation = toEntity(json,BaseKnowledgeDictRelation.class);
            dictService.setDictRelation(dictRelation,status);
            return success();
        }catch (Exception e){
            return failedException(e);
        }
    }
}

+ 214 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/knowledge/BaseKnowledgeQuestionController.java

@ -0,0 +1,214 @@
package com.yihu.jw.hospital.endpoint.knowledge;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.knowledge.*;
import com.yihu.jw.knowledge.service.BaseKnowledgeQuestionService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping(value = BaseHospitalRequestMapping.BaseKnowledgeQuestion.PREFIX)
@Api(value = "知识库-问题配置", description = "知识库-问题配置", tags = {"知识库-问题配置"})
public class BaseKnowledgeQuestionController extends EnvelopRestEndpoint {
    @Autowired
    private BaseKnowledgeQuestionService questionService;
    @ApiOperation("新增/更新常见问题")
    @PostMapping(value= BaseHospitalRequestMapping.BaseKnowledgeQuestion.insertAndUpdateQuestion)
    public Envelop insertAndUpdateQuestion(@ApiParam(name = "json", value = "常见问题实体json", required = true)
                                       @RequestParam(value = "json", required = true)String json){
        try {
            BaseKnowledgeQuestion question = toEntity(json,BaseKnowledgeQuestion.class);
            return success(questionService.insertAndUpdateQuestion(question));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("删除常见问题")
    @PostMapping(value= BaseHospitalRequestMapping.BaseKnowledgeQuestion.deleteQuestion)
    public Envelop deleteQuestion(@ApiParam(name = "id", value = "常见问题id", required = true)
                              @RequestParam(value = "id", required = true)String id){
        try {
            questionService.deleteQuestion(id);
            return success();
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("查询常见问题列表")
    @GetMapping(value= BaseHospitalRequestMapping.BaseKnowledgeQuestion.selectQuestionList)
    public Envelop selectQuestionList(@ApiParam(name = "name", value = "问题名称", required = false)
                                  @RequestParam(value = "name", required = false)String name,
                                  @ApiParam(name = "type", value = "字典类型", required = false)
                                  @RequestParam(value = "type", required = false)String type,
                                  @ApiParam(name = "status", value = "1开启0关闭", required = false)
                                  @RequestParam(value = "status", required = false)String status,
                                  @ApiParam(name = "page", value = "页码", required = false)
                                  @RequestParam(value = "page", required = false)Integer page,
                                  @ApiParam(name = "size", value = "大小", required = false)
                                  @RequestParam(value = "size", required = false)Integer size){
        try {
            return success(questionService.selectQuestionList(name,type,status,page,size));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("根据id查询某一个常见问题详情")
    @GetMapping(value= BaseHospitalRequestMapping.BaseKnowledgeQuestion.selectById)
    public Envelop selectById(@ApiParam(name = "id", value = "常见问题id", required = true)
                              @RequestParam(value = "id", required = true)String id){
        try {
            return success(questionService.selectById(id));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("常见问题设置排序")
    @GetMapping(value= BaseHospitalRequestMapping.BaseKnowledgeQuestion.setQuestionSortById)
    public Envelop setQuestionSortById(@ApiParam(name = "id", value = "字典id", required = true)
                                   @RequestParam(value = "id", required = true)String id,
                                   @ApiParam(name = "flag", value = "1上移2下移", required = true)
                                   @RequestParam(value = "flag", required = true)Integer flag){
        try {
            return success(questionService.setQuestionSortById(id,flag));
        }catch (Exception e){
            return failedException(e);
        }
    }
    //======================问题集===================================
    @ApiOperation("新增/更新问题集合")
    @PostMapping(value= BaseHospitalRequestMapping.BaseKnowledgeQuestion.insertAndUpdateQuestions)
    public Envelop insertAndUpdateQuestions(@ApiParam(name = "json", value = "问题集实体json", required = true)
                                           @RequestParam(value = "json", required = true)String json,
                                            @ApiParam(name = "relationJson", value = "问题集关联实体json", required = true)
                                            @RequestParam(value = "relationJson", required = true)String relationJson){
        try {
            BaseKnowledgeQuestions questions = toEntity(json,BaseKnowledgeQuestions.class);
            JSONArray array = JSONArray.parseArray(relationJson);
            List<BaseKnowledgeQuestionsRelation> questionsRelationList = new ArrayList<>();
            for (int i=0;i<array.size();i++){
                JSONObject object = array.getJSONObject(i);
                BaseKnowledgeQuestionsRelation questionsRelation = toEntity(object.toJSONString(),BaseKnowledgeQuestionsRelation.class);
                questionsRelationList.add(questionsRelation);
            }
            return success(questionService.insertAndUpdateQuestions(questions,questionsRelationList));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("删除问题集合")
    @PostMapping(value= BaseHospitalRequestMapping.BaseKnowledgeQuestion.deleteQuestions)
    public Envelop deleteQuestions(@ApiParam(name = "id", value = "问题集id", required = true)
                                  @RequestParam(value = "id", required = true)String id){
        try {
            questionService.deleteQuestions(id);
            return success();
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("查询问题集合列表")
    @GetMapping(value= BaseHospitalRequestMapping.BaseKnowledgeQuestion.selectQuestionsList)
    public Envelop selectQuestionsList(@ApiParam(name = "name", value = "字典名称", required = false)
                                      @RequestParam(value = "name", required = false)String name,
                                      @ApiParam(name = "type", value = "字典类型", required = false)
                                      @RequestParam(value = "type", required = false)String type,
                                      @ApiParam(name = "status", value = "1开启0关闭", required = false)
                                      @RequestParam(value = "status", required = false)String status,
                                      @ApiParam(name = "page", value = "页码", required = false)
                                      @RequestParam(value = "page", required = false)Integer page,
                                      @ApiParam(name = "size", value = "大小", required = false)
                                      @RequestParam(value = "size", required = false)Integer size){
        try {
            return success(questionService.selectQuestionsList(name,type,status,page,size));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("根据id查询某一个问题集合详情")
    @GetMapping(value= BaseHospitalRequestMapping.BaseKnowledgeQuestion.selectQuestionsById)
    public Envelop selectQuestionsById(@ApiParam(name = "id", value = "问题集合id", required = true)
                              @RequestParam(value = "id", required = true)String id){
        try {
            return success(questionService.selectQuestionsById(id));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("问题集合设置排序")
    @GetMapping(value= BaseHospitalRequestMapping.BaseKnowledgeQuestion.setQuestionsSortById)
    public Envelop setQuestionsSortById(@ApiParam(name = "id", value = "字典id", required = true)
                                       @RequestParam(value = "id", required = true)String id,
                                       @ApiParam(name = "flag", value = "1上移2下移3置顶", required = true)
                                       @RequestParam(value = "flag", required = true)Integer flag){
        try {
            return success(questionService.setQuestionsSortById(id,flag));
        }catch (Exception e){
            return failedException(e);
        }
    }
    //--------------问题关联配置--------------------------
    @ApiOperation("问题流程关联配置")
    @PostMapping(value= BaseHospitalRequestMapping.BaseKnowledgeQuestion.setQuestionConfigurationRelation)
    public Envelop setQuestionConfigurationRelation(@ApiParam(name = "json", value = "问题关联配置JSON", required = true)
                                        @RequestParam(value = "json", required = true)String json){
        try {
            JSONArray array = JSONArray.parseArray(json);
            List<BaseKnowledgeFlowConfigurationRelation> flowConfigurationRelations = new ArrayList<>();
            for (int i=0;i<array.size();i++){
                BaseKnowledgeFlowConfigurationRelation flowConfigurationRelation = toEntity(array.getJSONObject(i).toJSONString(),BaseKnowledgeFlowConfigurationRelation.class);
                flowConfigurationRelations.add(flowConfigurationRelation);
            }
            return success(questionService.setQuestionConfigurationRelation(flowConfigurationRelations));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("根据问题id获取问题关联配置")
    @GetMapping(value= BaseHospitalRequestMapping.BaseKnowledgeQuestion.selectFlowConfigurationRelations)
    public Envelop selectFlowConfigurationRelations(@ApiParam(name = "questionId", value = "问题id", required = true)
                                                    @RequestParam(value = "questionId", required = true)String questionId){
        try {
            return success(questionService.selectFlowConfigurationRelations(questionId));
        }catch (Exception e){
            return failedException(e);
        }
    }
}

+ 66 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/knowledge/BaseSystemDialogSettingController.java

@ -0,0 +1,66 @@
package com.yihu.jw.hospital.endpoint.knowledge;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.ehr.constants.LisEntry;
import com.yihu.jw.entity.knowledge.BaseKnowledgeDict;
import com.yihu.jw.entity.knowledge.BaseKnowledgeDictRelation;
import com.yihu.jw.entity.knowledge.BaseSystemDialogSetting;
import com.yihu.jw.knowledge.service.BaseKnowledgeDictService;
import com.yihu.jw.knowledge.service.BaseSystemDialogSettingService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping(value = BaseHospitalRequestMapping.BaseSystemDialogSetting.PREFIX)
@Api(value = "系统会话配置", description = "系统会话配置", tags = {"系统会话配置"})
public class BaseSystemDialogSettingController extends EnvelopRestEndpoint {
    @Autowired
    private BaseSystemDialogSettingService dialogSettingService;
    @ApiOperation("新增/更新系统会话设置")
    @PostMapping(value= BaseHospitalRequestMapping.BaseSystemDialogSetting.insterAndUpdateSystemDialogSetting)
    public Envelop insertAndUpdateDict(@ApiParam(name = "json", value = "系统会话设置实体json", required = true)
                                   @RequestParam(value = "json", required = true)String json){
        try {
            JSONArray array = JSONArray.parseArray(json);
            List<BaseSystemDialogSetting> dialogSettings = new ArrayList<>();
            for (int i=0;i<array.size();i++){
                JSONObject object = array.getJSONObject(i);
                BaseSystemDialogSetting dialogSetting = toEntity(object.toJSONString(), BaseSystemDialogSetting.class);
                dialogSettings.add(dialogSetting);
            }
            return success(dialogSettingService.insterAndUpdateSystemDialogSetting(dialogSettings));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @ApiOperation("根据不同业务code查询相关的系统会话设置配置信息")
    @GetMapping(value= BaseHospitalRequestMapping.BaseKnowledgeDict.selectById)
    public Envelop selectById(@ApiParam(name = "systemType", value = "系统业务编码", required = true)
                              @RequestParam(value = "systemType", required = true)String systemType){
        try {
            return success(dialogSettingService.selectBySystemType(systemType));
        }catch (Exception e){
            return failedException(e);
        }
    }
}