suqinyi преди 1 година
родител
ревизия
38597b900a

+ 642 - 611
business/base-service/src/main/java/com/yihu/jw/article/service/KnowledgeArticleDictService.java

@ -28,6 +28,7 @@ import com.yihu.jw.utils.EntityUtils;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.stereotype.Service;
import java.util.Date;
@ -37,636 +38,666 @@ import java.util.UUID;
/**
 * 健康文章业务层代码
 *
 * @author huangwenjie
 * @date 2019/9/10 13:54
 */
@Service
public class KnowledgeArticleDictService extends BaseJpaService<KnowledgeArticleDictDO, KnowledgeArticleDictDao> {
	
	@Autowired
	private KnowledgeArticleDictDao knowledgeArticleDictDao;
	@Autowired
	private BaseMenuDictDao baseMenuDictDao;
	
	@Autowired
	private KnowledgeArticleDeptDao knowledgeArticleDeptDao;
	@Autowired
	private WlyyHospitalSysDictDao hospitalSysDictDao;
	@Autowired
	private BasePatientBusinessDao patientBusinessDao;
	@Autowired
	private KnowledgeArticleUserDao knowledgeArticleUserDao;
	@Autowired
	private BaseDoctorHospitalDao doctorHospitalDao;
	@Autowired
	private BaseDoctorDao doctorDao;
	@Autowired
	private SurveyUserDao surveyUserDao;
	@Autowired
	private SurveyTemplateDao surveyTemplateDao;
	@Autowired
    @Autowired
    private KnowledgeArticleDictDao knowledgeArticleDictDao;
    @Autowired
    private BaseMenuDictDao baseMenuDictDao;
    @Autowired
    private KnowledgeArticleDeptDao knowledgeArticleDeptDao;
    @Autowired
    private WlyyHospitalSysDictDao hospitalSysDictDao;
    @Autowired
    private BasePatientBusinessDao patientBusinessDao;
    @Autowired
    private KnowledgeArticleUserDao knowledgeArticleUserDao;
    @Autowired
    private BaseDoctorHospitalDao doctorHospitalDao;
    @Autowired
    private BaseDoctorDao doctorDao;
    @Autowired
    private SurveyUserDao surveyUserDao;
    @Autowired
    private SurveyTemplateDao surveyTemplateDao;
    @Autowired
    private HibenateUtils hibenateUtils;
	@Autowired
	private UserDao userDao;
	@Autowired
	private BasePatientDao patientDao;
	@Autowired
	private KnowledgeArticleDoctorDao knowledgeArticleDoctorDao;
	//查询文章列表
	public List<Map<String,Object>> findArticleList(String first,String second,Integer type ,String key,Integer page ,Integer pageSize){
		String sql ="select b.id as \"id\", " +
				" b.title as \"title\"," +
				" b.intro as \"intro\"," +
				" b.category_first as \"categoryFirst\"," +
				" b.category_first_name as \"categoryFirstName\"," +
				" b.category_second as \"category_second\"," +
				" b.category_second_name as \"categorySecondName\"," +
				" b.create_user as \"createUser\"," +
				" b.status as \"status\"," +
				" b.used as \"used\"," +
				" b.create_user_name as \"createUserName\"," +
				" b.create_time as \"createTime\"," +
				" b.check_time as \"checkTime\"," +
				" b.release_status as \"releaseStatus\"," +
				" t.menu_id as \"menuId\"," +
				" t.parent_id as \"parentId\"," +
				" t.menu_name as \"menuName\"  " +
				" from wlyy_knowledge_article_menu t left join wlyy_knowledge_article_dict b" +
				" on t.article_id=b.id left join base_menu_dict c " +
				" on c.id= t.menu_id where t.del=1 and b.type="+type;
		if (StringUtils.isNotBlank(first)){
			sql+=" and t.category_first ='"+first+"'";
		}
		if (StringUtils.isNotBlank(second)){
			sql+=" and t.category_second ='"+second+"'";
		}
		if (StringUtils.isNotBlank(key)){
			sql+=" and (t.title like '%"+first+"&' or t.intro like '%"+key+"%' or t.content like '%"+key+"%')";
		}
		List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
		for (Map<String,Object> map:list){
			if (!"0".equalsIgnoreCase(map.get("parentId").toString())){
				BaseMenuDictDO baseMenuDictDO = baseMenuDictDao.findById(map.get("parentId").toString()).orElse(null);;
				if (baseMenuDictDO!=null){
					map.put("parentName",baseMenuDictDO.getName());
				}
			}else {
				map.put("parentName",map.get("menuName").toString());
			}
		}
		return list;
	}
	public boolean delArticle(String id){
		String str[]= id.split(",");
		for (int i=0;i<str.length;i++){
			KnowledgeArticleDictDO knowledgeArticleDictDO = findByIdAndDel(str[i]);
			if (knowledgeArticleDictDO!=null){
				knowledgeArticleDictDO.setDel(0);
				knowledgeArticleDictDao.save(knowledgeArticleDictDO);
			}
		}
		return true;
	}
	public KnowledgeArticleDictDO findById(String id){
		return knowledgeArticleDictDao.findById(id).orElse(null);
	}
	public KnowledgeArticleDictDO findByIdAndDel(String id){
		return knowledgeArticleDictDao.findByIdAndDel(id);
	}
	/**
	 * 更新/保存健康文章
	 * @param jsonData
	 * @return
	 * @throws Exception
	 */
	public KnowledgeArticleDictDO saveArticle(String jsonData,Integer type) throws  Exception {
		KnowledgeArticleDictDO knowledgeArticleDO = EntityUtils.jsonToEntity(jsonData, KnowledgeArticleDictDO.class);
		WlyyHospitalSysDictDO wlyyHospitalSysDictDO = hospitalSysDictDao.findById("articleNeedCheck").orElse(null);;
		Boolean articleNeedCheck= true;
		if (wlyyHospitalSysDictDO!=null){
			if (!wlyyHospitalSysDictDO.getDictValue().equalsIgnoreCase("1")){
				articleNeedCheck=false;
			}
		}
		if (StringUtils.isBlank(knowledgeArticleDO.getId()) ) {
			// 新增
			knowledgeArticleDO.setId(UUID.randomUUID().toString().replace("-", ""));
			knowledgeArticleDO.setCreateTime(new Date());
			knowledgeArticleDO.setStatus(0);
			knowledgeArticleDO.setReleaseStatus(0);
			knowledgeArticleDO.setDel(1);
			knowledgeArticleDO.setType(type);
			knowledgeArticleDO.setFabulous(0);
			knowledgeArticleDO.setReadCount(0);
			knowledgeArticleDO.setUsed(0);
			knowledgeArticleDO.setCollection(0);
			knowledgeArticleDO.setIsUsed(0);
			if(knowledgeArticleDO.getReleaseTime()==null){
				knowledgeArticleDO.setReleaseTime(new Date());
			}
			if(type==1){
				BaseDoctorDO userDO = doctorDao.findById(knowledgeArticleDO.getCreateUser()).orElse(null);;
				if (userDO!=null){
					knowledgeArticleDO.setCreateUserName(userDO.getName());
				}
			}else {
				BaseDoctorDO userDO = doctorDao.findById(knowledgeArticleDO.getCreateUser()).orElse(null);;
				if (userDO!=null){
					knowledgeArticleDO.setCreateUserName(userDO.getName());
				}
			}
			if (!articleNeedCheck){
				knowledgeArticleDO.setStatus(1);
				knowledgeArticleDO.setReleaseStatus(1);
			}
			knowledgeArticleDO = knowledgeArticleDictDao.save(knowledgeArticleDO);
			return knowledgeArticleDO;
		} else {
			KnowledgeArticleDictDO one = findById(knowledgeArticleDO.getId());
			one.setTitle(knowledgeArticleDO.getTitle());
			one.setContent(knowledgeArticleDO.getContent());
			one.setImage(knowledgeArticleDO.getImage());
			one.setIntro(knowledgeArticleDO.getIntro());
			one.setUpdateTime(new Date());
			one.setCategoryFirst(knowledgeArticleDO.getCategoryFirst());
			one.setCategoryFirstName(knowledgeArticleDO.getCategoryFirstName());
			one.setCategorySecond(knowledgeArticleDO.getCategorySecond());
			one.setCategorySecondName(knowledgeArticleDO.getCategorySecondName());
			one.setReleaseTime(knowledgeArticleDO.getReleaseTime());
			if(knowledgeArticleDO.getReleaseTime()==null){
				knowledgeArticleDO.setReleaseTime(new Date());
			}
			one.setStatus(0);
			one.setPuplishType(knowledgeArticleDO.getPuplishType());
			one.setPuplishTypeName(knowledgeArticleDO.getPuplishTypeName());
			one.setSource(knowledgeArticleDO.getSource());
			one.setUrl(knowledgeArticleDO.getUrl());
			one.setVedioUrl(knowledgeArticleDO.getVedioUrl());
			one.setRecommendDoctor(knowledgeArticleDO.getRecommendDoctor());
			one.setRecommendDoctorName(knowledgeArticleDO.getRecommendDoctorName());
			if (!articleNeedCheck){
				one.setStatus(1);
				one.setReleaseStatus(1);
			}
			knowledgeArticleDictDao.save(one);
			return  one;
		}
	}
	/**
	 * 获取doctorId获取医生发布的文章统计数据
	 * @param doctorId
	 * @return
	 */
	public JSONObject findArticleStaticsByDoctorId(String doctorId){
		String eulogySql = " select * from base_knowledge_article_doctor kad where kad.type=2 and kad.relation_code in (select ad.id from wlyy_knowledge_article_dict ad where ad.create_user ='"+doctorId+"') ";
		List<Map<String,Object>> mapList = jdbcTemplate.queryForList(eulogySql);//点赞数量
		String startDate = DateUtil.getNextDay(new Date(),-7)+" 00:00:00";
		String endDate = DateUtil.getStringDateShort()+" 23:59:59";
		String dateCondition = " and kad.create_time >='"+startDate+"' and kad.create_time <='"+endDate+"' ";
		String eulogy7Sql = " select * from base_knowledge_article_doctor kad where kad.type=2 and kad.relation_code in (select ad.id from wlyy_knowledge_article_dict ad where ad.create_user ='"+doctorId+"') "+dateCondition;
		List<Map<String,Object>> map7List = jdbcTemplate.queryForList(eulogy7Sql);//7日点赞数量
		//收藏数量
		String collectSql = " select * from base_knowledge_article_doctor kad where kad.type=3 and kad.relation_code in (select ad.id from wlyy_knowledge_article_dict ad where ad.create_user ='"+doctorId+"') ";
		List<Map<String,Object>> collectList = jdbcTemplate.queryForList(collectSql);//收藏数量
		String collect7Sql = " select * from base_knowledge_article_doctor kad where kad.type=3 and kad.relation_code in (select ad.id from wlyy_knowledge_article_dict ad where ad.create_user ='"+doctorId+"') "+dateCondition;
		List<Map<String,Object>> collect7List = jdbcTemplate.queryForList(collect7Sql);//7日收藏数量
		//评论数量
		String commentSql = " select * from base_knowledge_article_doctor kad where kad.type=1 and kad.relation_code in (select ad.id from wlyy_knowledge_article_dict ad where ad.create_user ='"+doctorId+"') ";
		List<Map<String,Object>> commentList = jdbcTemplate.queryForList(commentSql);//评论数量
		String comment7Sql = " select * from base_knowledge_article_doctor kad where kad.type=1 and kad.relation_code in (select ad.id from wlyy_knowledge_article_dict ad where ad.create_user ='"+doctorId+"') "+dateCondition;
		List<Map<String,Object>> comment7List = jdbcTemplate.queryForList(comment7Sql);//7日评论数量
		JSONObject object = new JSONObject();
		object.put("eulogyTotal",mapList.size());//点赞数量
		object.put("eulogy7Total",map7List.size());//7日新增点赞数量
		object.put("collectTotal",collectList.size());//收藏数量
		object.put("collect7Total",collect7List.size());//7日新增收藏数量
		object.put("commentTotal",commentList.size());//评论数量
		object.put("comment7Total",comment7List.size());//7日新增评论数量
		return object;
	}
	
	//审核/退回文章
	public KnowledgeArticleDictDO reviewArticle(String articleId,Integer status,String reason) throws Exception{
		KnowledgeArticleDictDO knowledgeArticleDO = findById(articleId);
		if (null == knowledgeArticleDO) {
			throw new Exception("该文章不存在");
		} else {
			knowledgeArticleDO.setStatus(status);
			knowledgeArticleDO.setCheckTime(new Date());
			if(StringUtils.isNotBlank(reason)){
				knowledgeArticleDO.setCancelReason(reason);
			}
			knowledgeArticleDO.setReleaseStatus(status);
			knowledgeArticleDictDao.save(knowledgeArticleDO);
			return  knowledgeArticleDO;
		}
	}
	
	/**
	 * 保存文章科室关系
	 * @param articleId
	 * @param sdJsons
	 * @return
	 * @throws Exception
	 */
	public Boolean saveArticleDept(String articleId,String sdJsons)throws Exception{
		
		//删除之前关系
		List<KnowledgeArticleDeptDO> list = knowledgeArticleDeptDao.findByArticleId(articleId);
		if(list!=null&&list.size()>0){
			knowledgeArticleDeptDao.deleteAll(list);
		}
		
		if(org.apache.commons.lang3.StringUtils.isNotBlank(sdJsons)){
			List<KnowledgeArticleDeptDO> _list = EntityUtils.jsonToList(sdJsons,KnowledgeArticleDeptDO.class);
			if(_list!=null&&_list.size()>0){
				knowledgeArticleDeptDao.saveAll(_list);
			}
		}
		return true;
	}
	/**
	 * 查询文章下科室
	 * @param articleId
	 * @return
	 */
	public List<Map<String,Object>> findDeptByArticle(String articleId)throws Exception{
		String sql ="SELECT " +
				" d.article_id AS \"articleId\"," +
				" d.dept as \"dept\", " +
				" d.dept_name AS \"deptName\" " +
				" FROM " +
				" wlyy_knowledge_article t " +
				" JOIN wlyy_knowledge_article_dept d ON t.id = d.article_id " +
				" WHERE " +
				" t.id = '"+articleId+"'";
		List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
		return list;
	}
	
	/**
	 * 查询文章下科室
	 * @param articleId
	 * @return
	 */
	public List<Map<String,Object>> findDeptByArticle2(String articleId)throws Exception{
		String sql ="SELECT " +
				" d.article_id AS \"articleId\"," +
				" d.dept as \"dept\", " +
				" d.dept_name AS \"deptName\" " +
				" FROM " +
				" wlyy_knowledge_article_dict t " +
				" JOIN wlyy_knowledge_article_dept d ON t.id = d.article_id " +
				" WHERE " +
				" t.id = '"+articleId+"'";
		List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
		return list;
	}
	/**
	 * 查询部门下的文章
	 * @param dept
	 * @return
	 */
	public List<Map<String,Object>> findArticleByDept2(String dept)throws Exception{
		String sql = "SELECT " +
				" t.id as \"id\", " +
				" t.title as \"title\", " +
				" t.create_time AS \"create_time\" ," +
				" t.image AS \"image\" " +
				" FROM " +
				" wlyy_knowledge_article_dict t " +
				" JOIN wlyy_knowledge_article_dept d ON t.id = d.article_id " +
				" WHERE " +
				" d.dept = '"+dept+"'";
		List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
		return list;
	}
	
	/**
	 * 查询部门下的文章
	 * @param dept
	 * @return
	 */
	public List<Map<String,Object>> findArticleByDept(String dept)throws Exception{
		String sql = "SELECT " +
				" t.id as \"id\", " +
				" t.title as \"title\", " +
				" t.create_time AS \"create_time\" ," +
				" t.image AS \"image\" " +
				" FROM " +
				" wlyy_knowledge_article t " +
				" JOIN wlyy_knowledge_article_dept d ON t.id = d.article_id " +
				" WHERE " +
				" d.dept = '"+dept+"'";
		List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
		return list;
	}
	
	/**
	 * 设置部门发送文章
	 * @param dept
	 * @param sdJsons
	 * @return
	 */
	public Boolean saveDeptArticle(String dept, String sdJsons) throws Exception{
		
		//删除之前关系
		List<KnowledgeArticleDeptDO> dels = knowledgeArticleDeptDao.findByDept(dept);
		if(dels!=null&&dels.size()>0){
			knowledgeArticleDeptDao.deleteAll(dels);
		}
		
		if(org.apache.commons.lang3.StringUtils.isNotBlank(sdJsons)){
			List<KnowledgeArticleDeptDO> list = EntityUtils.jsonToList(sdJsons,KnowledgeArticleDeptDO.class);
			if(list!=null&&list.size()>0){
				knowledgeArticleDeptDao.saveAll(list);
			}
		}
		return true;
	}
	public KnowledgeArticleDictDO releaseArticle(String articleId,Integer releaseStatus ){
		String ids[] = articleId.split(",");
		KnowledgeArticleDictDO knowledgeArticleDictDO = new KnowledgeArticleDictDO();
		for (int i=0;i<ids.length;i++){
			knowledgeArticleDictDO = findByIdAndDel(ids[i]);
			if (null!=knowledgeArticleDictDO){
				knowledgeArticleDictDO.setReleaseStatus(releaseStatus);
				knowledgeArticleDictDao.save(knowledgeArticleDictDO);
			}
		}
		return knowledgeArticleDictDO;
	}
	/**
	 *	患者接收问卷/文章
	 * @param businessDOS
	 * @return
	 */
	public List<BasePatientBusinessDO> sendBusinessToPatient(List<BasePatientBusinessDO> businessDOS) throws Exception {
		if (businessDOS!=null&&businessDOS.size()!=0){
			for (BasePatientBusinessDO patientBusinessDO:businessDOS){
				BasePatientBusinessDO basePatientBusinessDO = patientBusinessDao.findByPatientAndRelationCodeAndDel(patientBusinessDO.getPatient(),patientBusinessDO.getRelationCode());
				if (basePatientBusinessDO != null) {
					throw new Exception("已发送过!");
				}
				patientBusinessDO.setCreateTime(new Date());
				patientBusinessDO.setUpdateTime(new Date());
				patientBusinessDO.setCreateUser(patientBusinessDO.getDoctor());
				patientBusinessDO.setUpdateUser(patientBusinessDO.getDoctor());
				patientBusinessDO.setCreateUserName(patientBusinessDO.getDoctorName());
				patientBusinessDO.setUpdateUserName(patientBusinessDO.getUpdateUserName());
				patientBusinessDO.setCollection(0);
				patientBusinessDO.setDel(1);
				patientBusinessDO = patientBusinessDao.save(patientBusinessDO);
					if (patientBusinessDO.getRelationType()==1){
						KnowledgeArticleDictDO knowledgeArticleDO = findByIdAndDel(patientBusinessDO.getRelationCode());
					System.out.println("content:"+JSON.toJSONString(knowledgeArticleDO));
					JSONObject object = new JSONObject();
					object.put("id",knowledgeArticleDO.getId());
					object.put("title",knowledgeArticleDO.getTitle());
					object.put("content",knowledgeArticleDO.getIntro());
					object.put("img",knowledgeArticleDO.getImage());
				}else {
					WlyySurveyUserDO wlyySurveyUserDO = new WlyySurveyUserDO();
					String doctor = patientBusinessDO.getDoctor();
					BaseDoctorDO doctorDO = doctorDao.findById(doctor).orElse(null);;
					wlyySurveyUserDO.setDept(doctorDO.getVisitDept());
					wlyySurveyUserDO.setDeptName(doctorDO.getVisitDeptName());
					wlyySurveyUserDO.setDoctor(doctor);
					wlyySurveyUserDO.setDoctorName(doctorDO.getName());
					wlyySurveyUserDO.setStatus(0);
					wlyySurveyUserDO.setPatient(patientBusinessDO.getPatient());
					wlyySurveyUserDO.setPatientName(patientBusinessDO.getPatientName());
					wlyySurveyUserDO.setSurveyTempCode(patientBusinessDO.getRelationCode());
					wlyySurveyUserDO.setSurveyTempTitle(patientBusinessDO.getRelationName());
					wlyySurveyUserDO.setCreateTime(new Date());
					wlyySurveyUserDO.setEndTime(new Date());
					wlyySurveyUserDO = surveyUserDao.save(wlyySurveyUserDO);
					JSONObject object = new JSONObject();
					WlyySurveyTemplateDO wlyySurveyTemplateDO = surveyTemplateDao.findById(wlyySurveyUserDO.getSurveyTempCode()).orElse(null);;
					if (null!=wlyySurveyTemplateDO){
						object.put("title",wlyySurveyTemplateDO.getTitle());
						object.put("content",wlyySurveyTemplateDO.getTemplateComment());
						object.put("id",wlyySurveyTemplateDO.getId());
					}
				}
			}
		}
		return businessDOS;
	}
	/**
	 * 设置为1常用或者0不常用
	 * @param id
	 * @param used
	 * @return
	 */
	public KnowledgeArticleDictDO setUsed(String id,Integer used,String doctor){
		KnowledgeArticleDictDO knowledgeArticleDO = findByIdAndDel(id);
		BaseDoctorDO doctorDO = doctorDao.findById(doctor).orElse(null);;
		KnowledgeArticleUserDO knowledgeArticleUserDO =knowledgeArticleUserDao.findByrelationCodeAndUserAndDel(id,doctor);
		if (knowledgeArticleUserDO==null){
			knowledgeArticleUserDO = new KnowledgeArticleUserDO();
			knowledgeArticleUserDO.setRelationCode(id);
			knowledgeArticleUserDO.setRelationName(knowledgeArticleDO.getTitle());
			knowledgeArticleUserDO.setRelationType(1);
			knowledgeArticleUserDO.setDel(1);
			knowledgeArticleUserDO.setUser(doctor);
			if (doctorDO!=null){
				knowledgeArticleUserDO.setUserName(doctorDO.getName());
				knowledgeArticleUserDO.setCreateUserName(doctorDO.getName());
			}
			knowledgeArticleUserDO.setCreateTime(new Date());
			knowledgeArticleUserDO.setUpdateTime(new Date());
			knowledgeArticleUserDO.setCreateUser(doctor);
			knowledgeArticleUserDO.setUpdateUser(doctor);
			knowledgeArticleUserDO.setUsed(used);
			knowledgeArticleUserDO = knowledgeArticleUserDao.save(knowledgeArticleUserDO);
		}
        if (knowledgeArticleDO!=null){
            if (knowledgeArticleDO.getUsed()!=null){
            	if (used==1){
					knowledgeArticleUserDO.setUsed(1);
					knowledgeArticleDO.setUsed(knowledgeArticleDO.getUsed()+1);
				}else if (used==0){
            		knowledgeArticleUserDO.setUsed(0);
            		knowledgeArticleDO.setUsed(knowledgeArticleDO.getUsed()-1);
				}
			}else {
				if (used==1){
					knowledgeArticleDO.setUsed(1);
				}else if (used==0){
					knowledgeArticleDO.setUsed(0);
				}
			}
    @Autowired
    private UserDao userDao;
    @Autowired
    private BasePatientDao patientDao;
    @Autowired
    private KnowledgeArticleDoctorDao knowledgeArticleDoctorDao;
    //查询文章列表
    public List<Map<String, Object>> findArticleList(String first, String second, Integer type, String key, Integer page, Integer pageSize) {
        String sql = "select b.id as \"id\", " +
                " b.title as \"title\"," +
                " b.intro as \"intro\"," +
                " b.category_first as \"categoryFirst\"," +
                " b.category_first_name as \"categoryFirstName\"," +
                " b.category_second as \"category_second\"," +
                " b.category_second_name as \"categorySecondName\"," +
                " b.create_user as \"createUser\"," +
                " b.status as \"status\"," +
                " b.used as \"used\"," +
                " b.create_user_name as \"createUserName\"," +
                " b.create_time as \"createTime\"," +
                " b.check_time as \"checkTime\"," +
                " b.release_status as \"releaseStatus\"," +
                " t.menu_id as \"menuId\"," +
                " t.parent_id as \"parentId\"," +
                " t.menu_name as \"menuName\"  " +
                " from wlyy_knowledge_article_menu t left join wlyy_knowledge_article_dict b" +
                " on t.article_id=b.id left join base_menu_dict c " +
                " on c.id= t.menu_id where t.del=1 and b.type=" + type;
        if (StringUtils.isNotBlank(first)) {
            sql += " and t.category_first ='" + first + "'";
        }
        if (StringUtils.isNotBlank(second)) {
            sql += " and t.category_second ='" + second + "'";
        }
        if (StringUtils.isNotBlank(key)) {
            sql += " and (t.title like '%" + first + "&' or t.intro like '%" + key + "%' or t.content like '%" + key + "%')";
        }
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, page, pageSize);
        for (Map<String, Object> map : list) {
            if (!"0".equalsIgnoreCase(map.get("parentId").toString())) {
                BaseMenuDictDO baseMenuDictDO = baseMenuDictDao.findById(map.get("parentId").toString()).orElse(null);
                ;
                if (baseMenuDictDO != null) {
                    map.put("parentName", baseMenuDictDO.getName());
                }
            } else {
                map.put("parentName", map.get("menuName").toString());
            }
        }
        return list;
    }
    public boolean delArticle(String id) {
        String str[] = id.split(",");
        for (int i = 0; i < str.length; i++) {
            KnowledgeArticleDictDO knowledgeArticleDictDO = findByIdAndDel(str[i]);
            if (knowledgeArticleDictDO != null) {
                knowledgeArticleDictDO.setDel(0);
                knowledgeArticleDictDao.save(knowledgeArticleDictDO);
            }
        }
        return true;
    }
    public KnowledgeArticleDictDO findById(String id) {
        return knowledgeArticleDictDao.findById(id).orElse(null);
    }
    public KnowledgeArticleDictDO findByIdAndDel(String id) {
        return knowledgeArticleDictDao.findByIdAndDel(id);
    }
    /**
     * 更新/保存健康文章
     *
     * @param jsonData
     * @return
     * @throws Exception
     */
    public KnowledgeArticleDictDO saveArticle(String jsonData, Integer type) throws Exception {
        KnowledgeArticleDictDO knowledgeArticleDO = EntityUtils.jsonToEntity(jsonData, KnowledgeArticleDictDO.class);
        WlyyHospitalSysDictDO wlyyHospitalSysDictDO = hospitalSysDictDao.findById("articleNeedCheck").orElse(null);
        ;
        Boolean articleNeedCheck = true;
        if (wlyyHospitalSysDictDO != null) {
            if (!wlyyHospitalSysDictDO.getDictValue().equalsIgnoreCase("1")) {
                articleNeedCheck = false;
            }
        }
        if (StringUtils.isBlank(knowledgeArticleDO.getId())) {
            // 新增
            knowledgeArticleDO.setId(UUID.randomUUID().toString().replace("-", ""));
            knowledgeArticleDO.setCreateTime(new Date());
            knowledgeArticleDO.setStatus(0);
            knowledgeArticleDO.setReleaseStatus(0);
            knowledgeArticleDO.setDel(1);
            knowledgeArticleDO.setType(type);
            knowledgeArticleDO.setFabulous(0);
            knowledgeArticleDO.setReadCount(0);
            knowledgeArticleDO.setUsed(0);
            knowledgeArticleDO.setCollection(0);
            knowledgeArticleDO.setIsUsed(0);
            if (knowledgeArticleDO.getReleaseTime() == null) {
                knowledgeArticleDO.setReleaseTime(new Date());
            }
            if (type == 1) {
                BaseDoctorDO userDO = doctorDao.findById(knowledgeArticleDO.getCreateUser()).orElse(null);
                ;
                if (userDO != null) {
                    knowledgeArticleDO.setCreateUserName(userDO.getName());
                }
            } else {
                BaseDoctorDO userDO = doctorDao.findById(knowledgeArticleDO.getCreateUser()).orElse(null);
                ;
                if (userDO != null) {
                    knowledgeArticleDO.setCreateUserName(userDO.getName());
                }
            }
            if (!articleNeedCheck) {
                knowledgeArticleDO.setStatus(1);
                knowledgeArticleDO.setReleaseStatus(1);
            }
            knowledgeArticleDO = knowledgeArticleDictDao.save(knowledgeArticleDO);
            return knowledgeArticleDO;
        } else {
            KnowledgeArticleDictDO one = findById(knowledgeArticleDO.getId());
            one.setTitle(knowledgeArticleDO.getTitle());
            one.setContent(knowledgeArticleDO.getContent());
            one.setImage(knowledgeArticleDO.getImage());
            one.setIntro(knowledgeArticleDO.getIntro());
            one.setUpdateTime(new Date());
            one.setCategoryFirst(knowledgeArticleDO.getCategoryFirst());
            one.setCategoryFirstName(knowledgeArticleDO.getCategoryFirstName());
            one.setCategorySecond(knowledgeArticleDO.getCategorySecond());
            one.setCategorySecondName(knowledgeArticleDO.getCategorySecondName());
            one.setReleaseTime(knowledgeArticleDO.getReleaseTime());
            if (knowledgeArticleDO.getReleaseTime() == null) {
                knowledgeArticleDO.setReleaseTime(new Date());
            }
            one.setStatus(0);
            one.setPuplishType(knowledgeArticleDO.getPuplishType());
            one.setPuplishTypeName(knowledgeArticleDO.getPuplishTypeName());
            one.setSource(knowledgeArticleDO.getSource());
            one.setUrl(knowledgeArticleDO.getUrl());
            one.setVedioUrl(knowledgeArticleDO.getVedioUrl());
            one.setRecommendDoctor(knowledgeArticleDO.getRecommendDoctor());
            one.setRecommendDoctorName(knowledgeArticleDO.getRecommendDoctorName());
            if (!articleNeedCheck) {
                one.setStatus(1);
                one.setReleaseStatus(1);
            }
            knowledgeArticleDictDao.save(one);
            return one;
        }
    }
    /**
     * 获取doctorId获取医生发布的文章统计数据
     *
     * @param doctorId
     * @return
     */
    public JSONObject findArticleStaticsByDoctorId(String doctorId) {
        String eulogySql = " select * from base_knowledge_article_doctor kad where kad.type=2 and kad.relation_code in (select ad.id from wlyy_knowledge_article_dict ad where ad.create_user ='" + doctorId + "') ";
        List<Map<String, Object>> mapList = jdbcTemplate.queryForList(eulogySql);//点赞数量
        String startDate = DateUtil.getNextDay(new Date(), -7) + " 00:00:00";
        String endDate = DateUtil.getStringDateShort() + " 23:59:59";
        String dateCondition = " and kad.create_time >='" + startDate + "' and kad.create_time <='" + endDate + "' ";
        String eulogy7Sql = " select * from base_knowledge_article_doctor kad where kad.type=2 and kad.relation_code in (select ad.id from wlyy_knowledge_article_dict ad where ad.create_user ='" + doctorId + "') " + dateCondition;
        List<Map<String, Object>> map7List = jdbcTemplate.queryForList(eulogy7Sql);//7日点赞数量
        //收藏数量
        String collectSql = " select * from base_knowledge_article_doctor kad where kad.type=3 and kad.relation_code in (select ad.id from wlyy_knowledge_article_dict ad where ad.create_user ='" + doctorId + "') ";
        List<Map<String, Object>> collectList = jdbcTemplate.queryForList(collectSql);//收藏数量
        String collect7Sql = " select * from base_knowledge_article_doctor kad where kad.type=3 and kad.relation_code in (select ad.id from wlyy_knowledge_article_dict ad where ad.create_user ='" + doctorId + "') " + dateCondition;
        List<Map<String, Object>> collect7List = jdbcTemplate.queryForList(collect7Sql);//7日收藏数量
        //评论数量
        String commentSql = " select * from base_knowledge_article_doctor kad where kad.type=1 and kad.relation_code in (select ad.id from wlyy_knowledge_article_dict ad where ad.create_user ='" + doctorId + "') ";
        List<Map<String, Object>> commentList = jdbcTemplate.queryForList(commentSql);//评论数量
        String comment7Sql = " select * from base_knowledge_article_doctor kad where kad.type=1 and kad.relation_code in (select ad.id from wlyy_knowledge_article_dict ad where ad.create_user ='" + doctorId + "') " + dateCondition;
        List<Map<String, Object>> comment7List = jdbcTemplate.queryForList(comment7Sql);//7日评论数量
        JSONObject object = new JSONObject();
        object.put("eulogyTotal", mapList.size());//点赞数量
        object.put("eulogy7Total", map7List.size());//7日新增点赞数量
        object.put("collectTotal", collectList.size());//收藏数量
        object.put("collect7Total", collect7List.size());//7日新增收藏数量
        object.put("commentTotal", commentList.size());//评论数量
        object.put("comment7Total", comment7List.size());//7日新增评论数量
        return object;
    }
    //审核/退回文章
    public KnowledgeArticleDictDO reviewArticle(String articleId, Integer status, String reason) throws Exception {
        KnowledgeArticleDictDO knowledgeArticleDO = findById(articleId);
        if (null == knowledgeArticleDO) {
            throw new Exception("该文章不存在");
        } else {
            knowledgeArticleDO.setStatus(status);
            knowledgeArticleDO.setCheckTime(new Date());
            if (StringUtils.isNotBlank(reason)) {
                knowledgeArticleDO.setCancelReason(reason);
            }
            knowledgeArticleDO.setReleaseStatus(status);
            knowledgeArticleDictDao.save(knowledgeArticleDO);
            return knowledgeArticleDO;
        }
    }
    /**
     * 保存文章科室关系
     *
     * @param articleId
     * @param sdJsons
     * @return
     * @throws Exception
     */
    public Boolean saveArticleDept(String articleId, String sdJsons) throws Exception {
        //删除之前关系
        List<KnowledgeArticleDeptDO> list = knowledgeArticleDeptDao.findByArticleId(articleId);
        if (list != null && list.size() > 0) {
            knowledgeArticleDeptDao.deleteAll(list);
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sdJsons)) {
            List<KnowledgeArticleDeptDO> _list = EntityUtils.jsonToList(sdJsons, KnowledgeArticleDeptDO.class);
            if (_list != null && _list.size() > 0) {
                knowledgeArticleDeptDao.saveAll(_list);
            }
        }
        return true;
    }
    /**
     * 查询文章下科室
     *
     * @param articleId
     * @return
     */
    public List<Map<String, Object>> findDeptByArticle(String articleId) throws Exception {
        String sql = "SELECT " +
                " d.article_id AS \"articleId\"," +
                " d.dept as \"dept\", " +
                " d.dept_name AS \"deptName\" " +
                " FROM " +
                " wlyy_knowledge_article t " +
                " JOIN wlyy_knowledge_article_dept d ON t.id = d.article_id " +
                " WHERE " +
                " t.id = '" + articleId + "'";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        return list;
    }
    /**
     * 查询文章下科室
     *
     * @param articleId
     * @return
     */
    public List<Map<String, Object>> findDeptByArticle2(String articleId) throws Exception {
        String sql = "SELECT " +
                " d.article_id AS \"articleId\"," +
                " d.dept as \"dept\", " +
                " d.dept_name AS \"deptName\" " +
                " FROM " +
                " wlyy_knowledge_article_dict t " +
                " JOIN wlyy_knowledge_article_dept d ON t.id = d.article_id " +
                " WHERE " +
                " t.id = '" + articleId + "'";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        return list;
    }
    /**
     * 查询部门下的文章
     *
     * @param dept
     * @return
     */
    public List<Map<String, Object>> findArticleByDept2(String dept) throws Exception {
        String sql = "SELECT " +
                " t.id as \"id\", " +
                " t.title as \"title\", " +
                " t.create_time AS \"create_time\" ," +
                " t.image AS \"image\" " +
                " FROM " +
                " wlyy_knowledge_article_dict t " +
                " JOIN wlyy_knowledge_article_dept d ON t.id = d.article_id " +
                " WHERE " +
                " d.dept = '" + dept + "'";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        return list;
    }
    /**
     * 查询部门下的文章
     *
     * @param dept
     * @return
     */
    public List<Map<String, Object>> findArticleByDept(String dept) throws Exception {
        String sql = "SELECT " +
                " t.id as \"id\", " +
                " t.title as \"title\", " +
                " t.create_time AS \"create_time\" ," +
                " t.image AS \"image\" " +
                " FROM " +
                " wlyy_knowledge_article t " +
                " JOIN wlyy_knowledge_article_dept d ON t.id = d.article_id " +
                " WHERE " +
                " d.dept = '" + dept + "'";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        return list;
    }
    /**
     * 设置部门发送文章
     *
     * @param dept
     * @param sdJsons
     * @return
     */
    public Boolean saveDeptArticle(String dept, String sdJsons) throws Exception {
        //删除之前关系
        List<KnowledgeArticleDeptDO> dels = knowledgeArticleDeptDao.findByDept(dept);
        if (dels != null && dels.size() > 0) {
            knowledgeArticleDeptDao.deleteAll(dels);
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sdJsons)) {
            List<KnowledgeArticleDeptDO> list = EntityUtils.jsonToList(sdJsons, KnowledgeArticleDeptDO.class);
            if (list != null && list.size() > 0) {
                knowledgeArticleDeptDao.saveAll(list);
            }
        }
        return true;
    }
    public KnowledgeArticleDictDO releaseArticle(String articleId, Integer releaseStatus) {
        String ids[] = articleId.split(",");
        KnowledgeArticleDictDO knowledgeArticleDictDO = new KnowledgeArticleDictDO();
        for (int i = 0; i < ids.length; i++) {
            knowledgeArticleDictDO = findByIdAndDel(ids[i]);
            if (null != knowledgeArticleDictDO) {
                knowledgeArticleDictDO.setReleaseStatus(releaseStatus);
                knowledgeArticleDictDao.save(knowledgeArticleDictDO);
            }
        }
        return knowledgeArticleDictDO;
    }
    /**
     * 患者接收问卷/文章
     *
     * @param businessDOS
     * @return
     */
    public List<BasePatientBusinessDO> sendBusinessToPatient(List<BasePatientBusinessDO> businessDOS) throws Exception {
        if (businessDOS != null && businessDOS.size() != 0) {
            for (BasePatientBusinessDO patientBusinessDO : businessDOS) {
//				BasePatientBusinessDO basePatientBusinessDO = patientBusinessDao.findByPatientAndRelationCodeAndDel(patientBusinessDO.getPatient(),patientBusinessDO.getRelationCode());
//				if (basePatientBusinessDO != null) {
//					//这边要改成能发多次
//					throw new Exception("已发送过!");
//				}
                String sql = "select * from base_patient_business a " +
                        "where a.del=1 and a.patient='" + patientBusinessDO.getPatient() + "' and a.relation_code='" + patientBusinessDO.getRelationCode() + "'";
                List<BasePatientBusinessDO> basePatientBusinessDOList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(BasePatientBusinessDO.class));
                if (!basePatientBusinessDOList.isEmpty()) {
                    System.out.println("已经发送过==>" + basePatientBusinessDOList.size() + "次");
                }
                patientBusinessDO.setCreateTime(new Date());
                patientBusinessDO.setUpdateTime(new Date());
                patientBusinessDO.setCreateUser(patientBusinessDO.getDoctor());
                patientBusinessDO.setUpdateUser(patientBusinessDO.getDoctor());
                patientBusinessDO.setCreateUserName(patientBusinessDO.getDoctorName());
                patientBusinessDO.setUpdateUserName(patientBusinessDO.getUpdateUserName());
                patientBusinessDO.setCollection(0);
                patientBusinessDO.setDel(1);
                patientBusinessDO = patientBusinessDao.save(patientBusinessDO);
                if (patientBusinessDO.getRelationType() == 1) {
                    KnowledgeArticleDictDO knowledgeArticleDO = findByIdAndDel(patientBusinessDO.getRelationCode());
                    System.out.println("content:" + JSON.toJSONString(knowledgeArticleDO));
                    JSONObject object = new JSONObject();
                    object.put("id", knowledgeArticleDO.getId());
                    object.put("title", knowledgeArticleDO.getTitle());
                    object.put("content", knowledgeArticleDO.getIntro());
                    object.put("img", knowledgeArticleDO.getImage());
                } else {
                    WlyySurveyUserDO wlyySurveyUserDO = new WlyySurveyUserDO();
                    String doctor = patientBusinessDO.getDoctor();
                    BaseDoctorDO doctorDO = doctorDao.findById(doctor).orElse(null);
                    ;
                    wlyySurveyUserDO.setDept(doctorDO.getVisitDept());
                    wlyySurveyUserDO.setDeptName(doctorDO.getVisitDeptName());
                    wlyySurveyUserDO.setDoctor(doctor);
                    wlyySurveyUserDO.setDoctorName(doctorDO.getName());
                    wlyySurveyUserDO.setStatus(0);
                    wlyySurveyUserDO.setPatient(patientBusinessDO.getPatient());
                    wlyySurveyUserDO.setPatientName(patientBusinessDO.getPatientName());
                    wlyySurveyUserDO.setSurveyTempCode(patientBusinessDO.getRelationCode());
                    wlyySurveyUserDO.setSurveyTempTitle(patientBusinessDO.getRelationName());
                    wlyySurveyUserDO.setCreateTime(new Date());
                    wlyySurveyUserDO.setEndTime(new Date());
                    wlyySurveyUserDO = surveyUserDao.save(wlyySurveyUserDO);
                    JSONObject object = new JSONObject();
                    WlyySurveyTemplateDO wlyySurveyTemplateDO = surveyTemplateDao.findById(wlyySurveyUserDO.getSurveyTempCode()).orElse(null);
                    ;
                    if (null != wlyySurveyTemplateDO) {
                        object.put("title", wlyySurveyTemplateDO.getTitle());
                        object.put("content", wlyySurveyTemplateDO.getTemplateComment());
                        object.put("id", wlyySurveyTemplateDO.getId());
                    }
                }
            }
        }
        return businessDOS;
    }
    /**
     * 设置为1常用或者0不常用
     *
     * @param id
     * @param used
     * @return
     */
    public KnowledgeArticleDictDO setUsed(String id, Integer used, String doctor) {
        KnowledgeArticleDictDO knowledgeArticleDO = findByIdAndDel(id);
        BaseDoctorDO doctorDO = doctorDao.findById(doctor).orElse(null);
        ;
        KnowledgeArticleUserDO knowledgeArticleUserDO = knowledgeArticleUserDao.findByrelationCodeAndUserAndDel(id, doctor);
        if (knowledgeArticleUserDO == null) {
            knowledgeArticleUserDO = new KnowledgeArticleUserDO();
            knowledgeArticleUserDO.setRelationCode(id);
            knowledgeArticleUserDO.setRelationName(knowledgeArticleDO.getTitle());
            knowledgeArticleUserDO.setRelationType(1);
            knowledgeArticleUserDO.setDel(1);
            knowledgeArticleUserDO.setUser(doctor);
            if (doctorDO != null) {
                knowledgeArticleUserDO.setUserName(doctorDO.getName());
                knowledgeArticleUserDO.setCreateUserName(doctorDO.getName());
            }
            knowledgeArticleUserDO.setCreateTime(new Date());
            knowledgeArticleUserDO.setUpdateTime(new Date());
            knowledgeArticleUserDO.setCreateUser(doctor);
            knowledgeArticleUserDO.setUpdateUser(doctor);
            knowledgeArticleUserDO.setUsed(used);
            knowledgeArticleUserDO = knowledgeArticleUserDao.save(knowledgeArticleUserDO);
        }
        if (knowledgeArticleDO != null) {
            if (knowledgeArticleDO.getUsed() != null) {
                if (used == 1) {
                    knowledgeArticleUserDO.setUsed(1);
                    knowledgeArticleDO.setUsed(knowledgeArticleDO.getUsed() + 1);
                } else if (used == 0) {
                    knowledgeArticleUserDO.setUsed(0);
                    knowledgeArticleDO.setUsed(knowledgeArticleDO.getUsed() - 1);
                }
            } else {
                if (used == 1) {
                    knowledgeArticleDO.setUsed(1);
                } else if (used == 0) {
                    knowledgeArticleDO.setUsed(0);
                }
            }
        }
		knowledgeArticleUserDO.setRelationName(knowledgeArticleDO.getTitle());
        knowledgeArticleUserDO.setRelationName(knowledgeArticleDO.getTitle());
        knowledgeArticleUserDao.save(knowledgeArticleUserDO);
		return knowledgeArticleDictDao.save(knowledgeArticleDO);
	}
	public KnowledgeArticleDictDO selectById(String id){
		return findByIdAndDel(id);
	}
	//根据分类查询文章
	public MixEnvelop findArticleByCategoryAndName(String categoryFirst, String categorySecond, String keyWords, Integer page, Integer pageSize){
		MixEnvelop objEnvelop = new MixEnvelop();
		String sql = "select t.id as \"id\",t.title as \"title\",t.read_count as \"readCount\"," +
				"t.collection as \"collection\",t.fabulous as \"fabulous\",t.is_share as \"share\"," +
        return knowledgeArticleDictDao.save(knowledgeArticleDO);
    }
    public KnowledgeArticleDictDO selectById(String id) {
        return findByIdAndDel(id);
    }
    //根据分类查询文章
    public MixEnvelop findArticleByCategoryAndName(String categoryFirst, String categorySecond, String keyWords, Integer page, Integer pageSize) {
        MixEnvelop objEnvelop = new MixEnvelop();
        String sql = "select t.id as \"id\",t.title as \"title\",t.read_count as \"readCount\"," +
                "t.collection as \"collection\",t.fabulous as \"fabulous\",t.is_share as \"share\"," +
                " t.intro as \"intro\",t.category_first_name as \"categoryFirstName\"," +
                " t.category_second_name as \"categorySecondName\" ," +
                "t.content as \"content\",t.image as \"image\",t.create_user_name as \"createUserName\",c.job_title_name as \"jobTitleName\"," +
                "b.dept_name as \"deptName\",b.org_name as \"hospitalName\"," +
				"t.create_time as \"createTime\" " +
				" from wlyy_knowledge_article t left join wlyy_knowledge_article_dept a " +
                "t.create_time as \"createTime\" " +
                " from wlyy_knowledge_article t left join wlyy_knowledge_article_dept a " +
                " on a.article_id = t.id left join base_doctor_hospital b on b.doctor_code = t.create_user" +
				" left join base_doctor c on c.id = t.create_user where 1=1 and t.del = 1 and t.status = 1";
		if (StringUtils.isNotBlank(categoryFirst)){
		    sql+=" and t.category_first = '"+categoryFirst+"'";
                " left join base_doctor c on c.id = t.create_user where 1=1 and t.del = 1 and t.status = 1";
        if (StringUtils.isNotBlank(categoryFirst)) {
            sql += " and t.category_first = '" + categoryFirst + "'";
        }
		if (StringUtils.isNotBlank(categorySecond)){
			sql+=" and t.category_second ='"+categorySecond+"'";
		}
        if (StringUtils.isNotBlank(keyWords)){
            sql+=" and (t.create_user_name like '%"+keyWords+"%' or t.title like '%"+keyWords+"%' or t.content like '%"+keyWords+"%' or a.dept_name like '%"+keyWords+"%' )";
        if (StringUtils.isNotBlank(categorySecond)) {
            sql += " and t.category_second ='" + categorySecond + "'";
        }
		sql+=" group by t.id ,t.title ,t.intro,t.category_first_name ,t.category_second_name ,c.job_title_name," +
				"t.read_count,t.collection,t.fabulous,t.is_share,t.content ,t.image ,t.create_user_name ,b.dept_name ,b.org_name,t.create_time " +
				" order by t.create_time desc";
        List<Map<String,Object>> result = hibenateUtils.createSQLQuery(sql,page,pageSize);
        List<Map<String,Object>> countList = hibenateUtils.createSQLQuery(sql);
        if (StringUtils.isNotBlank(keyWords)) {
            sql += " and (t.create_user_name like '%" + keyWords + "%' or t.title like '%" + keyWords + "%' or t.content like '%" + keyWords + "%' or a.dept_name like '%" + keyWords + "%' )";
        }
        sql += " group by t.id ,t.title ,t.intro,t.category_first_name ,t.category_second_name ,c.job_title_name," +
                "t.read_count,t.collection,t.fabulous,t.is_share,t.content ,t.image ,t.create_user_name ,b.dept_name ,b.org_name,t.create_time " +
                " order by t.create_time desc";
        List<Map<String, Object>> result = hibenateUtils.createSQLQuery(sql, page, pageSize);
        List<Map<String, Object>> countList = hibenateUtils.createSQLQuery(sql);
        objEnvelop.setObj(result);
        objEnvelop.setTotalCount(countList.size());
        objEnvelop.setPageSize(pageSize);
        objEnvelop.setCurrPage(page);
        return objEnvelop;
	}
	//根据分类查询文章
	public MixEnvelop findArticleByCategoryAndName2(String categoryFirst, String categorySecond, String keyWords, Integer page, Integer pageSize){
		MixEnvelop objEnvelop = new MixEnvelop();
		String sql = "select t.id as \"id\",t.title as \"title\",t.read_count as \"readCount\"," +
				"t.collection as \"collection\",t.fabulous as \"fabulous\",t.is_share as \"share\"," +
				" t.intro as \"intro\",t.category_first_name as \"categoryFirstName\"," +
				" t.category_second_name as \"categorySecondName\" ," +
				"t.content as \"content\",t.image as \"image\",t.create_user_name as \"createUserName\",c.job_title_name as \"jobTitleName\"," +
				"b.dept_name as \"deptName\",b.org_name as \"hospitalName\"," +
				"t.create_time as \"createTime\" " +
				" from wlyy_knowledge_article_dict t left join wlyy_knowledge_article_dept a " +
				" on a.article_id = t.id left join base_doctor_hospital b on b.doctor_code = t.create_user" +
				" left join base_doctor c on c.id = t.create_user where 1=1 and t.del = 1 and t.status = 1";
		if (StringUtils.isNotBlank(categoryFirst)){
			sql+=" and t.category_first = '"+categoryFirst+"'";
		}
		if (StringUtils.isNotBlank(categorySecond)){
			sql+=" and t.category_second ='"+categorySecond+"'";
		}
		if (StringUtils.isNotBlank(keyWords)){
			sql+=" and (t.create_user_name like '%"+keyWords+"%' or t.title like '%"+keyWords+"%' or t.content like '%"+keyWords+"%' or a.dept_name like '%"+keyWords+"%' )";
		}
		sql+=" group by t.id ,t.title ,t.intro,t.category_first_name ,t.category_second_name ,c.job_title_name," +
				"t.read_count,t.collection,t.fabulous,t.is_share,t.content ,t.image ,t.create_user_name ,b.dept_name ,b.org_name,t.create_time " +
				" order by t.create_time desc";
		List<Map<String,Object>> result = hibenateUtils.createSQLQuery(sql,page,pageSize);
		List<Map<String,Object>> countList = hibenateUtils.createSQLQuery(sql);
		objEnvelop.setObj(result);
		objEnvelop.setTotalCount(countList.size());
		objEnvelop.setPageSize(pageSize);
		objEnvelop.setCurrPage(page);
		return objEnvelop;
	}
	//查询患者收藏的文章列表
	public JSONObject findPatientFavorite2(String patient,Integer page,Integer pageSize){
		String sql = "select t.id as \"id\",t.user_code as \"user\",t.user_name as \"userName\"," +
				"t.relation_code as \"relationCode\"," +
				"t.relation_type as \"relationType\"," +
				"t.relation_name as \"relationName\"," +
				"t.is_read as \"isRead\",t.fabulous as \"fabulous\"," +
				"t.is_share as \"share\"," +
				"t.collection as \"collection\",t.used as \"used\",t.del as \"del\"";
		sql+=" from wlyy_knowledge_article_user t left join wlyy_knowledge_article_dict a" +
				" on t.relation_code = a.id where 1=1 and a.del=1 and a.collection=1 ";
		if (StringUtils.isNotEmpty(patient)){
			sql+=" and t.user_code = '"+patient+"'";
		}
		List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
		if(list!=null&&list.size()>0){
			for (Map<String,Object> map:list){
				String relationCode = map.get("relationCode").toString();
				String type =  map.get("relationType").toString();
				if ("1".equalsIgnoreCase(type)){
					KnowledgeArticleDictDO knowledgeArticleDO = this.selectById(relationCode);
					if (knowledgeArticleDO!=null){
						List<BaseDoctorHospitalDO> doctorHospitalDOS = doctorHospitalDao.findByDoctorCode(knowledgeArticleDO.getCreateUser());
						if (doctorHospitalDOS!=null&&doctorHospitalDOS.size()!=0){
							knowledgeArticleDO.setDeptName(doctorHospitalDOS.get(0).getDeptName());
							knowledgeArticleDO.setHospitalName(doctorHospitalDOS.get(0).getOrgName());
						}
					}
					map.put("KnowledgeArticleUserDO",knowledgeArticleDO);
				}
			}
		}
		List<Map<String,Object>> listCount = hibenateUtils.createSQLQuery(sql);
		JSONObject result = new JSONObject();
		result.put("total",listCount.size());
		result.put("detailModelList",list);
		return result;
	}
	//查询患者收藏的文章列表
	public JSONObject findPatientFavorite(String patient,Integer page,Integer pageSize){
		String sql = "select t.id as \"id\",t.user_code as \"user\",t.user_name as \"userName\"," +
				"t.relation_code as \"relationCode\"," +
				"t.relation_type as \"relationType\"," +
				"t.relation_name as \"relationName\"," +
				"t.is_read as \"isRead\",t.fabulous as \"fabulous\"," +
				"t.is_share as \"share\"," +
				"t.collection as \"collection\",t.used as \"used\",t.del as \"del\"";
		sql+=" from wlyy_knowledge_article_user t left join wlyy_knowledge_article a" +
				" on t.relation_code = a.id where 1=1 and a.del=1 and a.collection=1 ";
		if (StringUtils.isNotEmpty(patient)){
			sql+=" and t.user_code = '"+patient+"'";
		}
		List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
		if(list!=null&&list.size()>0){
			for (Map<String,Object> map:list){
				String relationCode = map.get("relationCode").toString();
				String type =  map.get("relationType").toString();
				if ("1".equalsIgnoreCase(type)){
					KnowledgeArticleDictDO knowledgeArticleDO = this.selectById(relationCode);
					if (knowledgeArticleDO!=null){
						List<BaseDoctorHospitalDO> doctorHospitalDOS = doctorHospitalDao.findByDoctorCode(knowledgeArticleDO.getCreateUser());
						if (doctorHospitalDOS!=null&&doctorHospitalDOS.size()!=0){
							knowledgeArticleDO.setDeptName(doctorHospitalDOS.get(0).getDeptName());
							knowledgeArticleDO.setHospitalName(doctorHospitalDOS.get(0).getOrgName());
						}
					}
					map.put("KnowledgeArticleUserDO",knowledgeArticleDO);
				}
			}
		}
		List<Map<String,Object>> listCount = hibenateUtils.createSQLQuery(sql);
		JSONObject result = new JSONObject();
		result.put("total",listCount.size());
		result.put("detailModelList",list);
		return result;
	}
    }
    //根据分类查询文章
    public MixEnvelop findArticleByCategoryAndName2(String categoryFirst, String categorySecond, String keyWords, Integer page, Integer pageSize) {
        MixEnvelop objEnvelop = new MixEnvelop();
        String sql = "select t.id as \"id\",t.title as \"title\",t.read_count as \"readCount\"," +
                "t.collection as \"collection\",t.fabulous as \"fabulous\",t.is_share as \"share\"," +
                " t.intro as \"intro\",t.category_first_name as \"categoryFirstName\"," +
                " t.category_second_name as \"categorySecondName\" ," +
                "t.content as \"content\",t.image as \"image\",t.create_user_name as \"createUserName\",c.job_title_name as \"jobTitleName\"," +
                "b.dept_name as \"deptName\",b.org_name as \"hospitalName\"," +
                "t.create_time as \"createTime\" " +
                " from wlyy_knowledge_article_dict t left join wlyy_knowledge_article_dept a " +
                " on a.article_id = t.id left join base_doctor_hospital b on b.doctor_code = t.create_user" +
                " left join base_doctor c on c.id = t.create_user where 1=1 and t.del = 1 and t.status = 1";
        if (StringUtils.isNotBlank(categoryFirst)) {
            sql += " and t.category_first = '" + categoryFirst + "'";
        }
        if (StringUtils.isNotBlank(categorySecond)) {
            sql += " and t.category_second ='" + categorySecond + "'";
        }
        if (StringUtils.isNotBlank(keyWords)) {
            sql += " and (t.create_user_name like '%" + keyWords + "%' or t.title like '%" + keyWords + "%' or t.content like '%" + keyWords + "%' or a.dept_name like '%" + keyWords + "%' )";
        }
        sql += " group by t.id ,t.title ,t.intro,t.category_first_name ,t.category_second_name ,c.job_title_name," +
                "t.read_count,t.collection,t.fabulous,t.is_share,t.content ,t.image ,t.create_user_name ,b.dept_name ,b.org_name,t.create_time " +
                " order by t.create_time desc";
        List<Map<String, Object>> result = hibenateUtils.createSQLQuery(sql, page, pageSize);
        List<Map<String, Object>> countList = hibenateUtils.createSQLQuery(sql);
        objEnvelop.setObj(result);
        objEnvelop.setTotalCount(countList.size());
        objEnvelop.setPageSize(pageSize);
        objEnvelop.setCurrPage(page);
        return objEnvelop;
    }
    //查询患者收藏的文章列表
    public JSONObject findPatientFavorite2(String patient, Integer page, Integer pageSize) {
        String sql = "select t.id as \"id\",t.user_code as \"user\",t.user_name as \"userName\"," +
                "t.relation_code as \"relationCode\"," +
                "t.relation_type as \"relationType\"," +
                "t.relation_name as \"relationName\"," +
                "t.is_read as \"isRead\",t.fabulous as \"fabulous\"," +
                "t.is_share as \"share\"," +
                "t.collection as \"collection\",t.used as \"used\",t.del as \"del\"";
        sql += " from wlyy_knowledge_article_user t left join wlyy_knowledge_article_dict a" +
                " on t.relation_code = a.id where 1=1 and a.del=1 and a.collection=1 ";
        if (StringUtils.isNotEmpty(patient)) {
            sql += " and t.user_code = '" + patient + "'";
        }
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, page, pageSize);
        if (list != null && list.size() > 0) {
            for (Map<String, Object> map : list) {
                String relationCode = map.get("relationCode").toString();
                String type = map.get("relationType").toString();
                if ("1".equalsIgnoreCase(type)) {
                    KnowledgeArticleDictDO knowledgeArticleDO = this.selectById(relationCode);
                    if (knowledgeArticleDO != null) {
                        List<BaseDoctorHospitalDO> doctorHospitalDOS = doctorHospitalDao.findByDoctorCode(knowledgeArticleDO.getCreateUser());
                        if (doctorHospitalDOS != null && doctorHospitalDOS.size() != 0) {
                            knowledgeArticleDO.setDeptName(doctorHospitalDOS.get(0).getDeptName());
                            knowledgeArticleDO.setHospitalName(doctorHospitalDOS.get(0).getOrgName());
                        }
                    }
                    map.put("KnowledgeArticleUserDO", knowledgeArticleDO);
                }
            }
        }
        List<Map<String, Object>> listCount = hibenateUtils.createSQLQuery(sql);
        JSONObject result = new JSONObject();
        result.put("total", listCount.size());
        result.put("detailModelList", list);
        return result;
    }
    //查询患者收藏的文章列表
    public JSONObject findPatientFavorite(String patient, Integer page, Integer pageSize) {
        String sql = "select t.id as \"id\",t.user_code as \"user\",t.user_name as \"userName\"," +
                "t.relation_code as \"relationCode\"," +
                "t.relation_type as \"relationType\"," +
                "t.relation_name as \"relationName\"," +
                "t.is_read as \"isRead\",t.fabulous as \"fabulous\"," +
                "t.is_share as \"share\"," +
                "t.collection as \"collection\",t.used as \"used\",t.del as \"del\"";
        sql += " from wlyy_knowledge_article_user t left join wlyy_knowledge_article a" +
                " on t.relation_code = a.id where 1=1 and a.del=1 and a.collection=1 ";
        if (StringUtils.isNotEmpty(patient)) {
            sql += " and t.user_code = '" + patient + "'";
        }
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, page, pageSize);
        if (list != null && list.size() > 0) {
            for (Map<String, Object> map : list) {
                String relationCode = map.get("relationCode").toString();
                String type = map.get("relationType").toString();
                if ("1".equalsIgnoreCase(type)) {
                    KnowledgeArticleDictDO knowledgeArticleDO = this.selectById(relationCode);
                    if (knowledgeArticleDO != null) {
                        List<BaseDoctorHospitalDO> doctorHospitalDOS = doctorHospitalDao.findByDoctorCode(knowledgeArticleDO.getCreateUser());
                        if (doctorHospitalDOS != null && doctorHospitalDOS.size() != 0) {
                            knowledgeArticleDO.setDeptName(doctorHospitalDOS.get(0).getDeptName());
                            knowledgeArticleDO.setHospitalName(doctorHospitalDOS.get(0).getOrgName());
                        }
                    }
                    map.put("KnowledgeArticleUserDO", knowledgeArticleDO);
                }
            }
        }
        List<Map<String, Object>> listCount = hibenateUtils.createSQLQuery(sql);
        JSONObject result = new JSONObject();
        result.put("total", listCount.size());
        result.put("detailModelList", list);
        return result;
    }
}

+ 9 - 3
business/base-service/src/main/java/com/yihu/jw/complaint/BaseComplaintService.java

@ -440,7 +440,7 @@ public class BaseComplaintService {
    //查询投诉列表
    public MixEnvelop findComplaintList(String role, String doctor, String status, String patientName, String patientId, String keyWord, String complaintId,
                                        String startTime, String endTime, Integer page, Integer pageSize) {
                                        String startTime, String endTime, Integer page, Integer pageSize,String pcAdmin) {
        MixEnvelop mixEnvelop = new MixEnvelop();
        Boolean queryAll = false;
        if ("admin".equalsIgnoreCase(role)) {
@ -480,8 +480,14 @@ public class BaseComplaintService {
                " from base_complaint t  " +
                " left join base_patient b on t.patient=b.id ";
        sql += " left join base_complaint_operate_log g on t.id=g.relation_code where t.is_del='1' ";
        //排除撤销的
        sql += " and t.status<>'-1' ";
        if (StringUtils.isBlank(pcAdmin)){
            //排除撤销的
            sql += " and t.status<>'-1' ";
        }else {
            System.out.println("pc管理员不用排除撤销的");
        }
        if (StringUtils.isNoneBlank(status) && "3".equalsIgnoreCase(status)) {
            sql += " and  g.status='3' ";
        }/*else if (StringUtils.isNoneBlank(status)&&"1".equalsIgnoreCase(status)){

+ 3 - 2
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/complaint/BaseComplaintEndPoint.java

@ -280,14 +280,15 @@ public class BaseComplaintEndPoint extends EnvelopRestEndpoint {
            @ApiParam(name = "endTime", value = "endTime", required = false) @RequestParam(value = "endTime", required = false) String endTime,
            @ApiParam(name = "page", value = "page", required = false) @RequestParam(value = "page", required = false) Integer page,
            @ApiParam(name = "pageSize", value = "pageSize", required = false) @RequestParam(value = "pageSize", required = false) Integer pageSize,
            @ApiParam(name = "startTime", value = "startTime", required = false) @RequestParam(value = "startTime", required = false) String startTime
            @ApiParam(name = "startTime", value = "startTime", required = false) @RequestParam(value = "startTime", required = false) String startTime,
            @ApiParam(name = "pcAdmin", value = "pcAdmin", required = false) @RequestParam(value = "pcAdmin", required = false) String pcAdmin
    ) throws Exception {
        try {
            if (!StringUtils.isNotBlank(doctor)) {
                doctor = getUID();
            }
            return success(baseComplaintService.findComplaintList(role, doctor, status, patientName, patientId, keyWord, complaintId,
                    startTime, endTime, page, pageSize));
                    startTime, endTime, page, pageSize,pcAdmin));
        } catch (Exception e) {
            return failedException(e);
        }

+ 392 - 372
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/service/consult/KnowledgeArticleService.java

@ -29,6 +29,7 @@ import com.yihu.jw.utils.EntityUtils;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.stereotype.Service;
import java.util.Date;
@ -38,409 +39,428 @@ import java.util.UUID;
/**
 * 健康文章业务层代码
 *
 * @author huangwenjie
 * @date 2019/9/10 13:54
 */
@Service
public class KnowledgeArticleService extends BaseJpaService<KnowledgeArticleDO, KnowledgeArticleDao> {
	
	@Autowired
	private KnowledgeArticleDao knowledgeArticleDao;
	@Autowired
	private KnowledgeArticleDictDao knowledgeArticleDictDao;
	@Autowired
	private KnowledgeArticleDeptDao knowledgeArticleDeptDao;
	@Autowired
	private WlyyHospitalSysDictDao hospitalSysDictDao;
	@Autowired
	private BasePatientBusinessDao patientBusinessDao;
	@Autowired
	private KnowledgeArticleUserDao knowledgeArticleUserDao;
	@Autowired
	private BaseDoctorHospitalDao doctorHospitalDao;
	@Autowired
	private BaseDoctorDao doctorDao;
	@Autowired
	private ImUtil imUtil;
	@Autowired
	private SurveyUserDao surveyUserDao;
	@Autowired
	private SurveyTemplateDao surveyTemplateDao;
	@Autowired
    @Autowired
    private KnowledgeArticleDao knowledgeArticleDao;
    @Autowired
    private KnowledgeArticleDictDao knowledgeArticleDictDao;
    @Autowired
    private KnowledgeArticleDeptDao knowledgeArticleDeptDao;
    @Autowired
    private WlyyHospitalSysDictDao hospitalSysDictDao;
    @Autowired
    private BasePatientBusinessDao patientBusinessDao;
    @Autowired
    private KnowledgeArticleUserDao knowledgeArticleUserDao;
    @Autowired
    private BaseDoctorHospitalDao doctorHospitalDao;
    @Autowired
    private BaseDoctorDao doctorDao;
    @Autowired
    private ImUtil imUtil;
    @Autowired
    private SurveyUserDao surveyUserDao;
    @Autowired
    private SurveyTemplateDao surveyTemplateDao;
    @Autowired
    private HibenateUtils hibenateUtils;
	@Autowired
	private BasePatientDao patientDao;
	
	/**
	 * 删除,支持批量
	 * @param id
	 */
	public boolean delArticle(String id){
		String[] split = id.split(",|,");
		String ids = StringUtils.join(split, ",");
		String sql = "update wlyy_knowledge_article a set a.del = 0 where a.id in(" + ids + ")";
		String sqlUser = "update wlyy_knowledge_article_user a set a.del = 0 where a.relation_code in(" + ids + ")";
		String sqlBussiness = "update base_patient_business a set a.del = 0 where a.relation_code in(" + ids + ")";
		int update = jdbcTemplate.update(sql);
		int updateUser = jdbcTemplate.update(sqlUser);
		int updateBussiness  = jdbcTemplate.update(sqlBussiness);
		if (update > 0||updateUser>0||updateBussiness>0) {
			return true;
		}
		return false;
	}
	
	/**
	 * 更新/保存健康文章
	 * @param jsonData
	 * @return
	 * @throws Exception
	 */
	public KnowledgeArticleDO saveArticle(String jsonData) throws  Exception {
		WlyyHospitalSysDictDO wlyyHospitalSysDictDO = hospitalSysDictDao.findById("EXAMINE").orElse(null);
		KnowledgeArticleDO knowledgeArticleDO = EntityUtils.jsonToEntity(jsonData, KnowledgeArticleDO.class);
		if (null == knowledgeArticleDO.getId()) {
			// 新增
			knowledgeArticleDO.setId(UUID.randomUUID().toString().replace("-", ""));
			knowledgeArticleDO.setCreateTime(new Date());
    @Autowired
    private BasePatientDao patientDao;
    /**
     * 删除,支持批量
     *
     * @param id
     */
    public boolean delArticle(String id) {
        String[] split = id.split(",|,");
        String ids = StringUtils.join(split, ",");
        String sql = "update wlyy_knowledge_article a set a.del = 0 where a.id in(" + ids + ")";
        String sqlUser = "update wlyy_knowledge_article_user a set a.del = 0 where a.relation_code in(" + ids + ")";
        String sqlBussiness = "update base_patient_business a set a.del = 0 where a.relation_code in(" + ids + ")";
        int update = jdbcTemplate.update(sql);
        int updateUser = jdbcTemplate.update(sqlUser);
        int updateBussiness = jdbcTemplate.update(sqlBussiness);
        if (update > 0 || updateUser > 0 || updateBussiness > 0) {
            return true;
        }
        return false;
    }
    /**
     * 更新/保存健康文章
     *
     * @param jsonData
     * @return
     * @throws Exception
     */
    public KnowledgeArticleDO saveArticle(String jsonData) throws Exception {
        WlyyHospitalSysDictDO wlyyHospitalSysDictDO = hospitalSysDictDao.findById("EXAMINE").orElse(null);
        KnowledgeArticleDO knowledgeArticleDO = EntityUtils.jsonToEntity(jsonData, KnowledgeArticleDO.class);
        if (null == knowledgeArticleDO.getId()) {
            // 新增
            knowledgeArticleDO.setId(UUID.randomUUID().toString().replace("-", ""));
            knowledgeArticleDO.setCreateTime(new Date());
//			knowledgeArticleDO.setSource("客服");
			knowledgeArticleDO.setDel(1);
			if (wlyyHospitalSysDictDO!=null&&wlyyHospitalSysDictDO.getDictValue().equalsIgnoreCase("0")){
				knowledgeArticleDO.setStatus(1);
			}
			knowledgeArticleDO = knowledgeArticleDao.save(knowledgeArticleDO);
			return knowledgeArticleDO;
		} else {
			KnowledgeArticleDO one = knowledgeArticleDao.findById(knowledgeArticleDO.getId()).orElse(null);
			one.setTitle(knowledgeArticleDO.getTitle());
			one.setContent(knowledgeArticleDO.getContent());
			one.setImage(knowledgeArticleDO.getImage());
			one.setUpdateTime(new Date());
			if (wlyyHospitalSysDictDO!=null&&wlyyHospitalSysDictDO.getDictValue().equalsIgnoreCase("0")){
				one.setStatus(1);
			}
			knowledgeArticleDao.save(one);
			return  one;
		}
	}
            knowledgeArticleDO.setDel(1);
            if (wlyyHospitalSysDictDO != null && wlyyHospitalSysDictDO.getDictValue().equalsIgnoreCase("0")) {
                knowledgeArticleDO.setStatus(1);
            }
            knowledgeArticleDO = knowledgeArticleDao.save(knowledgeArticleDO);
            return knowledgeArticleDO;
        } else {
            KnowledgeArticleDO one = knowledgeArticleDao.findById(knowledgeArticleDO.getId()).orElse(null);
            one.setTitle(knowledgeArticleDO.getTitle());
            one.setContent(knowledgeArticleDO.getContent());
            one.setImage(knowledgeArticleDO.getImage());
            one.setUpdateTime(new Date());
            if (wlyyHospitalSysDictDO != null && wlyyHospitalSysDictDO.getDictValue().equalsIgnoreCase("0")) {
                one.setStatus(1);
            }
            knowledgeArticleDao.save(one);
            return one;
        }
    }
    /**
     * 更新/保存健康文章
     *
     * @return
     * @throws Exception
     */
    public KnowledgeArticleDO updateIsShow(String id, Integer isShow) throws Exception {
	/**
	 * 更新/保存健康文章
	 * @return
	 * @throws Exception
	 */
	public KnowledgeArticleDO updateIsShow(String id,Integer isShow) throws  Exception {
        KnowledgeArticleDO one = knowledgeArticleDao.findById(id).orElse(null);
        one.setIsShow(isShow);
        one.setUpdateTime(new Date());
        knowledgeArticleDao.save(one);
        return one;
		KnowledgeArticleDO one = knowledgeArticleDao.findById(id).orElse(null);
		one.setIsShow(isShow);
		one.setUpdateTime(new Date());
		knowledgeArticleDao.save(one);
		return  one;
    }
	}
	
	//审核/退回文章
	public KnowledgeArticleDO reviewArticle(String articleId,Integer status,String reason) throws Exception{
		
		KnowledgeArticleDO knowledgeArticleDO = knowledgeArticleDao.findById(articleId).orElse(null);
		if (null == knowledgeArticleDO) {
			throw new Exception("该文章不存在");
		} else {
			knowledgeArticleDO.setStatus(status);
			knowledgeArticleDO.setUpdateTime(new Date());
			if(StringUtils.isNotBlank(reason)){
				knowledgeArticleDO.setCancelReason(reason);
			}
			knowledgeArticleDao.save(knowledgeArticleDO);
			return  knowledgeArticleDO;
		}
	}
	
	/**
	 * 保存文章科室关系
	 * @param articleId
	 * @param sdJsons
	 * @return
	 * @throws Exception
	 */
	public Boolean saveArticleDept(String articleId,String sdJsons)throws Exception{
		
		//删除之前关系
		List<KnowledgeArticleDeptDO> list = knowledgeArticleDeptDao.findByArticleId(articleId);
		if(list!=null&&list.size()>0){
			knowledgeArticleDeptDao.deleteAll(list);
		}
		
		if(org.apache.commons.lang3.StringUtils.isNotBlank(sdJsons)){
			List<KnowledgeArticleDeptDO> _list = EntityUtils.jsonToList(sdJsons,KnowledgeArticleDeptDO.class);
			if(_list!=null&&_list.size()>0){
				knowledgeArticleDeptDao.saveAll(_list);
			}
		}
		return true;
	}
	
	/**
	 * 查询文章下科室
	 * @param articleId
	 * @return
	 */
	public List<Map<String,Object>> findDeptByArticle(String articleId)throws Exception{
		String sql ="SELECT " +
				" d.article_id AS articleId," +
				" d.dept, " +
				" d.dept_name AS deptName " +
				" FROM " +
				" wlyy_knowledge_article t " +
				" JOIN wlyy_knowledge_article_dept d ON t.id = d.article_id " +
				" WHERE " +
				" t.id = '"+articleId+"'";
		List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
		return list;
	}
	
	/**
	 * 查询部门下的文章
	 * @param dept
	 * @return
	 */
	public List<Map<String,Object>> findArticleByDept(String dept)throws Exception{
		String sql = "SELECT " +
				" t.id as \"id\", " +
				" t.title as \"title\", " +
				" t.create_time AS \"create_time\" ," +
				" t.image AS \"image\" " +
				" FROM " +
				" wlyy_knowledge_article t " +
				" JOIN wlyy_knowledge_article_dept d ON t.id = d.article_id " +
				" WHERE " +
				" d.dept = '"+dept+"'";
		List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
		return list;
	}
	
	/**
	 * 设置部门发送文章
	 * @param dept
	 * @param sdJsons
	 * @return
	 */
	public Boolean saveDeptArticle(String dept, String sdJsons) throws Exception{
		
		//删除之前关系
		List<KnowledgeArticleDeptDO> dels = knowledgeArticleDeptDao.findByDept(dept);
		if(dels!=null&&dels.size()>0){
			knowledgeArticleDeptDao.deleteAll(dels);
		}
		
		if(org.apache.commons.lang3.StringUtils.isNotBlank(sdJsons)){
			List<KnowledgeArticleDeptDO> list = EntityUtils.jsonToList(sdJsons,KnowledgeArticleDeptDO.class);
			if(list!=null&&list.size()>0){
				knowledgeArticleDeptDao.saveAll(list);
			}
		}
		return true;
	}
    //审核/退回文章
    public KnowledgeArticleDO reviewArticle(String articleId, Integer status, String reason) throws Exception {
	/**
	 *	患者接收问卷/文章
	 * @param businessDOS
	 * @return
	 */
	public List<BasePatientBusinessDO> sendBusinessToPatient(List<BasePatientBusinessDO> businessDOS) throws Exception {
		if (businessDOS!=null&&businessDOS.size()!=0){
			for (BasePatientBusinessDO patientBusinessDO:businessDOS){
				BasePatientBusinessDO basePatientBusinessDO = patientBusinessDao.findByPatientAndRelationCodeAndDel(patientBusinessDO.getPatient(),patientBusinessDO.getRelationCode());
				if (basePatientBusinessDO != null) {
					throw new Exception("已发送过!");
				}
				patientBusinessDO.setCreateTime(new Date());
				patientBusinessDO.setUpdateTime(new Date());
				patientBusinessDO.setCreateUser(patientBusinessDO.getDoctor());
				patientBusinessDO.setUpdateUser(patientBusinessDO.getDoctor());
				patientBusinessDO.setCreateUserName(patientBusinessDO.getDoctorName());
				patientBusinessDO.setUpdateUserName(patientBusinessDO.getUpdateUserName());
				patientBusinessDO.setCollection(0);
				patientBusinessDO.setDel(1);
				patientBusinessDO = patientBusinessDao.save(patientBusinessDO);
				if (patientBusinessDO.getRelationType()==1){
					KnowledgeArticleDO knowledgeArticleDO = knowledgeArticleDao.findByIdAndDel(patientBusinessDO.getRelationCode());
					JSONObject object = new JSONObject();
					if(knowledgeArticleDO==null){
						KnowledgeArticleDictDO knowledgeArticleDictDO = knowledgeArticleDictDao.findByIdAndDel(patientBusinessDO.getRelationCode());
						object.put("id",knowledgeArticleDictDO.getId());
						object.put("title",knowledgeArticleDictDO.getTitle());
						object.put("content",knowledgeArticleDictDO.getIntro());
						object.put("img",knowledgeArticleDictDO.getImage());
						object.put("type",knowledgeArticleDictDO.getType());
					}else {
						object.put("id",knowledgeArticleDO.getId());
						object.put("title",knowledgeArticleDO.getTitle());
						object.put("content",knowledgeArticleDO.getIntro());
						object.put("img",knowledgeArticleDO.getImage());
					}
					imUtil.sendImMsg(patientBusinessDO.getDoctor(), patientBusinessDO.getDoctorName(), patientBusinessDO.getSessionId(), "4", object.toJSONString(),"1",null);
				}else {
					WlyySurveyUserDO wlyySurveyUserDO = new WlyySurveyUserDO();
					String doctor = patientBusinessDO.getDoctor();
					BaseDoctorDO doctorDO = doctorDao.findById(doctor).orElse(null);
					wlyySurveyUserDO.setDept(doctorDO.getVisitDept());
					wlyySurveyUserDO.setDeptName(doctorDO.getVisitDeptName());
					wlyySurveyUserDO.setDoctor(doctor);
					wlyySurveyUserDO.setDoctorName(doctorDO.getName());
					wlyySurveyUserDO.setStatus(0);
					wlyySurveyUserDO.setPatient(patientBusinessDO.getPatient());
					wlyySurveyUserDO.setPatientName(patientBusinessDO.getPatientName());
					wlyySurveyUserDO.setSurveyTempCode(patientBusinessDO.getRelationCode());
					wlyySurveyUserDO.setSurveyTempTitle(patientBusinessDO.getRelationName());
					wlyySurveyUserDO.setCreateTime(new Date());
					wlyySurveyUserDO.setEndTime(new Date());
					wlyySurveyUserDO = surveyUserDao.save(wlyySurveyUserDO);
					JSONObject object = new JSONObject();
					WlyySurveyTemplateDO wlyySurveyTemplateDO = surveyTemplateDao.findById(wlyySurveyUserDO.getSurveyTempCode()).orElse(null);
					if (null!=wlyySurveyTemplateDO){
						object.put("title",wlyySurveyTemplateDO.getTitle());
						object.put("content",wlyySurveyTemplateDO.getTemplateComment());
						object.put("doctor",patientBusinessDO.getDoctor());
						object.put("doctorName",patientBusinessDO.getDoctorName());
						object.put("id",wlyySurveyTemplateDO.getId());
					}
					imUtil.sendImMsg(patientBusinessDO.getDoctor(), patientBusinessDO.getDoctorName(), patientBusinessDO.getSessionId(), "17", object.toJSONString(),"1",null);
				}
        KnowledgeArticleDO knowledgeArticleDO = knowledgeArticleDao.findById(articleId).orElse(null);
        if (null == knowledgeArticleDO) {
            throw new Exception("该文章不存在");
        } else {
            knowledgeArticleDO.setStatus(status);
            knowledgeArticleDO.setUpdateTime(new Date());
            if (StringUtils.isNotBlank(reason)) {
                knowledgeArticleDO.setCancelReason(reason);
            }
            knowledgeArticleDao.save(knowledgeArticleDO);
            return knowledgeArticleDO;
        }
    }
			}
		}
		return businessDOS;
	}
    /**
     * 保存文章科室关系
     *
     * @param articleId
     * @param sdJsons
     * @return
     * @throws Exception
     */
    public Boolean saveArticleDept(String articleId, String sdJsons) throws Exception {
        //删除之前关系
        List<KnowledgeArticleDeptDO> list = knowledgeArticleDeptDao.findByArticleId(articleId);
        if (list != null && list.size() > 0) {
            knowledgeArticleDeptDao.deleteAll(list);
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sdJsons)) {
            List<KnowledgeArticleDeptDO> _list = EntityUtils.jsonToList(sdJsons, KnowledgeArticleDeptDO.class);
            if (_list != null && _list.size() > 0) {
                knowledgeArticleDeptDao.saveAll(_list);
            }
        }
        return true;
    }
    /**
     * 查询文章下科室
     *
     * @param articleId
     * @return
     */
    public List<Map<String, Object>> findDeptByArticle(String articleId) throws Exception {
        String sql = "SELECT " +
                " d.article_id AS articleId," +
                " d.dept, " +
                " d.dept_name AS deptName " +
                " FROM " +
                " wlyy_knowledge_article t " +
                " JOIN wlyy_knowledge_article_dept d ON t.id = d.article_id " +
                " WHERE " +
                " t.id = '" + articleId + "'";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        return list;
    }
    /**
     * 查询部门下的文章
     *
     * @param dept
     * @return
     */
    public List<Map<String, Object>> findArticleByDept(String dept) throws Exception {
        String sql = "SELECT " +
                " t.id as \"id\", " +
                " t.title as \"title\", " +
                " t.create_time AS \"create_time\" ," +
                " t.image AS \"image\" " +
                " FROM " +
                " wlyy_knowledge_article t " +
                " JOIN wlyy_knowledge_article_dept d ON t.id = d.article_id " +
                " WHERE " +
                " d.dept = '" + dept + "'";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        return list;
    }
    /**
     * 设置部门发送文章
     *
     * @param dept
     * @param sdJsons
     * @return
     */
    public Boolean saveDeptArticle(String dept, String sdJsons) throws Exception {
        //删除之前关系
        List<KnowledgeArticleDeptDO> dels = knowledgeArticleDeptDao.findByDept(dept);
        if (dels != null && dels.size() > 0) {
            knowledgeArticleDeptDao.deleteAll(dels);
        }
	/**
	 * 设置为1常用或者0不常用
	 * @param id
	 * @param used
	 * @return
	 */
	public KnowledgeArticleDO setUsed(String id,Integer used,String doctor){
		KnowledgeArticleDO knowledgeArticleDO = knowledgeArticleDao.findByIdAndDel(id);
		BaseDoctorDO doctorDO = doctorDao.findById(doctor).orElse(null);
		KnowledgeArticleUserDO knowledgeArticleUserDO =knowledgeArticleUserDao.findByrelationCodeAndUserAndDel(id,doctor);
		if (knowledgeArticleUserDO==null){
			knowledgeArticleUserDO = new KnowledgeArticleUserDO();
			knowledgeArticleUserDO.setRelationCode(id);
			knowledgeArticleUserDO.setRelationName(knowledgeArticleDO.getTitle());
			knowledgeArticleUserDO.setRelationType(1);
			knowledgeArticleUserDO.setDel(1);
			knowledgeArticleUserDO.setUser(doctor);
			if (doctorDO!=null){
				knowledgeArticleUserDO.setUserName(doctorDO.getName());
				knowledgeArticleUserDO.setCreateUserName(doctorDO.getName());
			}
			knowledgeArticleUserDO.setCreateTime(new Date());
			knowledgeArticleUserDO.setUpdateTime(new Date());
			knowledgeArticleUserDO.setCreateUser(doctor);
			knowledgeArticleUserDO.setUpdateUser(doctor);
			knowledgeArticleUserDO.setUsed(used);
			knowledgeArticleUserDO = knowledgeArticleUserDao.save(knowledgeArticleUserDO);
		}
        if (knowledgeArticleDO!=null){
            if (knowledgeArticleDO.getUsed()!=null){
            	if (used==1){
					knowledgeArticleUserDO.setUsed(1);
					knowledgeArticleDO.setUsed(knowledgeArticleDO.getUsed()+1);
				}else if (used==0){
            		knowledgeArticleUserDO.setUsed(0);
            		knowledgeArticleDO.setUsed(knowledgeArticleDO.getUsed()-1);
				}
			}else {
				if (used==1){
					knowledgeArticleDO.setUsed(1);
				}else if (used==0){
					knowledgeArticleDO.setUsed(0);
				}
			}
        if (org.apache.commons.lang3.StringUtils.isNotBlank(sdJsons)) {
            List<KnowledgeArticleDeptDO> list = EntityUtils.jsonToList(sdJsons, KnowledgeArticleDeptDO.class);
            if (list != null && list.size() > 0) {
                knowledgeArticleDeptDao.saveAll(list);
            }
        }
		knowledgeArticleUserDO.setRelationName(knowledgeArticleDO.getTitle());
        return true;
    }
    /**
     * 患者接收问卷/文章
     *
     * @param businessDOS
     * @return
     */
    public List<BasePatientBusinessDO> sendBusinessToPatient(List<BasePatientBusinessDO> businessDOS) throws Exception {
        if (businessDOS != null && businessDOS.size() != 0) {
            for (BasePatientBusinessDO patientBusinessDO : businessDOS) {
//                BasePatientBusinessDO basePatientBusinessDO = patientBusinessDao.findByPatientAndRelationCodeAndDel(patientBusinessDO.getPatient(), patientBusinessDO.getRelationCode());
                //这边要改成能发多次
//                if (basePatientBusinessDO != null) {
//                    throw new Exception("已发送过!");
//                }
                String sql = "select * from base_patient_business a " +
                        "where a.del=1 and a.patient='" + patientBusinessDO.getPatient() + "' and a.relation_code='" + patientBusinessDO.getRelationCode() + "'";
                List<BasePatientBusinessDO> basePatientBusinessDOList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(BasePatientBusinessDO.class));
                if (!basePatientBusinessDOList.isEmpty()) {
                    System.out.println("已经发送过==>" + basePatientBusinessDOList.size() + "次");
                }
                patientBusinessDO.setCreateTime(new Date());
                patientBusinessDO.setUpdateTime(new Date());
                patientBusinessDO.setCreateUser(patientBusinessDO.getDoctor());
                patientBusinessDO.setUpdateUser(patientBusinessDO.getDoctor());
                patientBusinessDO.setCreateUserName(patientBusinessDO.getDoctorName());
                patientBusinessDO.setUpdateUserName(patientBusinessDO.getUpdateUserName());
                patientBusinessDO.setCollection(0);
                patientBusinessDO.setDel(1);
                patientBusinessDO = patientBusinessDao.save(patientBusinessDO);
                if (patientBusinessDO.getRelationType() == 1) {
                    KnowledgeArticleDO knowledgeArticleDO = knowledgeArticleDao.findByIdAndDel(patientBusinessDO.getRelationCode());
                    JSONObject object = new JSONObject();
                    if (knowledgeArticleDO == null) {
                        KnowledgeArticleDictDO knowledgeArticleDictDO = knowledgeArticleDictDao.findByIdAndDel(patientBusinessDO.getRelationCode());
                        object.put("id", knowledgeArticleDictDO.getId());
                        object.put("title", knowledgeArticleDictDO.getTitle());
                        object.put("content", knowledgeArticleDictDO.getIntro());
                        object.put("img", knowledgeArticleDictDO.getImage());
                        object.put("type", knowledgeArticleDictDO.getType());
                    } else {
                        object.put("id", knowledgeArticleDO.getId());
                        object.put("title", knowledgeArticleDO.getTitle());
                        object.put("content", knowledgeArticleDO.getIntro());
                        object.put("img", knowledgeArticleDO.getImage());
                    }
                    imUtil.sendImMsg(patientBusinessDO.getDoctor(), patientBusinessDO.getDoctorName(), patientBusinessDO.getSessionId(), "4", object.toJSONString(), "1", null);
                } else {
                    WlyySurveyUserDO wlyySurveyUserDO = new WlyySurveyUserDO();
                    String doctor = patientBusinessDO.getDoctor();
                    BaseDoctorDO doctorDO = doctorDao.findById(doctor).orElse(null);
                    wlyySurveyUserDO.setDept(doctorDO.getVisitDept());
                    wlyySurveyUserDO.setDeptName(doctorDO.getVisitDeptName());
                    wlyySurveyUserDO.setDoctor(doctor);
                    wlyySurveyUserDO.setDoctorName(doctorDO.getName());
                    wlyySurveyUserDO.setStatus(0);
                    wlyySurveyUserDO.setPatient(patientBusinessDO.getPatient());
                    wlyySurveyUserDO.setPatientName(patientBusinessDO.getPatientName());
                    wlyySurveyUserDO.setSurveyTempCode(patientBusinessDO.getRelationCode());
                    wlyySurveyUserDO.setSurveyTempTitle(patientBusinessDO.getRelationName());
                    wlyySurveyUserDO.setCreateTime(new Date());
                    wlyySurveyUserDO.setEndTime(new Date());
                    wlyySurveyUserDO = surveyUserDao.save(wlyySurveyUserDO);
                    JSONObject object = new JSONObject();
                    WlyySurveyTemplateDO wlyySurveyTemplateDO = surveyTemplateDao.findById(wlyySurveyUserDO.getSurveyTempCode()).orElse(null);
                    if (null != wlyySurveyTemplateDO) {
                        object.put("title", wlyySurveyTemplateDO.getTitle());
                        object.put("content", wlyySurveyTemplateDO.getTemplateComment());
                        object.put("doctor", patientBusinessDO.getDoctor());
                        object.put("doctorName", patientBusinessDO.getDoctorName());
                        object.put("id", wlyySurveyTemplateDO.getId());
                    }
                    imUtil.sendImMsg(patientBusinessDO.getDoctor(), patientBusinessDO.getDoctorName(), patientBusinessDO.getSessionId(), "17", object.toJSONString(), "1", null);
                }
            }
        }
        return businessDOS;
    }
    /**
     * 设置为1常用或者0不常用
     *
     * @param id
     * @param used
     * @return
     */
    public KnowledgeArticleDO setUsed(String id, Integer used, String doctor) {
        KnowledgeArticleDO knowledgeArticleDO = knowledgeArticleDao.findByIdAndDel(id);
        BaseDoctorDO doctorDO = doctorDao.findById(doctor).orElse(null);
        KnowledgeArticleUserDO knowledgeArticleUserDO = knowledgeArticleUserDao.findByrelationCodeAndUserAndDel(id, doctor);
        if (knowledgeArticleUserDO == null) {
            knowledgeArticleUserDO = new KnowledgeArticleUserDO();
            knowledgeArticleUserDO.setRelationCode(id);
            knowledgeArticleUserDO.setRelationName(knowledgeArticleDO.getTitle());
            knowledgeArticleUserDO.setRelationType(1);
            knowledgeArticleUserDO.setDel(1);
            knowledgeArticleUserDO.setUser(doctor);
            if (doctorDO != null) {
                knowledgeArticleUserDO.setUserName(doctorDO.getName());
                knowledgeArticleUserDO.setCreateUserName(doctorDO.getName());
            }
            knowledgeArticleUserDO.setCreateTime(new Date());
            knowledgeArticleUserDO.setUpdateTime(new Date());
            knowledgeArticleUserDO.setCreateUser(doctor);
            knowledgeArticleUserDO.setUpdateUser(doctor);
            knowledgeArticleUserDO.setUsed(used);
            knowledgeArticleUserDO = knowledgeArticleUserDao.save(knowledgeArticleUserDO);
        }
        if (knowledgeArticleDO != null) {
            if (knowledgeArticleDO.getUsed() != null) {
                if (used == 1) {
                    knowledgeArticleUserDO.setUsed(1);
                    knowledgeArticleDO.setUsed(knowledgeArticleDO.getUsed() + 1);
                } else if (used == 0) {
                    knowledgeArticleUserDO.setUsed(0);
                    knowledgeArticleDO.setUsed(knowledgeArticleDO.getUsed() - 1);
                }
            } else {
                if (used == 1) {
                    knowledgeArticleDO.setUsed(1);
                } else if (used == 0) {
                    knowledgeArticleDO.setUsed(0);
                }
            }
        }
        knowledgeArticleUserDO.setRelationName(knowledgeArticleDO.getTitle());
        knowledgeArticleUserDao.save(knowledgeArticleUserDO);
		return knowledgeArticleDao.save(knowledgeArticleDO);
	}
        return knowledgeArticleDao.save(knowledgeArticleDO);
    }
	public KnowledgeArticleDO selectById(String id){
		return knowledgeArticleDao.findByIdAndDel(id);
	}
	//根据分类查询文章
	public MixEnvelop findArticleByCategoryAndName(String categoryFirst, String categorySecond, String keyWords, Integer page, Integer pageSize){
		MixEnvelop objEnvelop = new MixEnvelop();
		String sql = "select t.id as \"id\",t.title as \"title\",t.read_count as \"readCount\"," +
				"t.collection as \"collection\",t.fabulous as \"fabulous\",t.is_share as \"share\"," +
    public KnowledgeArticleDO selectById(String id) {
        return knowledgeArticleDao.findByIdAndDel(id);
    }
    //根据分类查询文章
    public MixEnvelop findArticleByCategoryAndName(String categoryFirst, String categorySecond, String keyWords, Integer page, Integer pageSize) {
        MixEnvelop objEnvelop = new MixEnvelop();
        String sql = "select t.id as \"id\",t.title as \"title\",t.read_count as \"readCount\"," +
                "t.collection as \"collection\",t.fabulous as \"fabulous\",t.is_share as \"share\"," +
                " t.intro as \"intro\",t.category_first_name as \"categoryFirstName\"," +
                " t.category_second_name as \"categorySecondName\" ," +
                "t.content as \"content\",t.image as \"image\",t.create_user_name as \"createUserName\",c.job_title_name as \"jobTitleName\"," +
                "b.dept_name as \"deptName\",b.org_name as \"hospitalName\"," +
				"t.create_time as \"createTime\" " +
				" from wlyy_knowledge_article t left join wlyy_knowledge_article_dept a " +
                "t.create_time as \"createTime\" " +
                " from wlyy_knowledge_article t left join wlyy_knowledge_article_dept a " +
                " on a.article_id = t.id left join base_doctor_hospital b on b.doctor_code = t.create_user" +
				" left join base_doctor c on c.id = t.create_user where 1=1 and t.del = 1 and t.status = 1";
		if (StringUtils.isNotBlank(categoryFirst)){
		    sql+=" and t.category_first = '"+categoryFirst+"'";
                " left join base_doctor c on c.id = t.create_user where 1=1 and t.del = 1 and t.status = 1";
        if (StringUtils.isNotBlank(categoryFirst)) {
            sql += " and t.category_first = '" + categoryFirst + "'";
        }
        if (StringUtils.isNotBlank(categorySecond)) {
            sql += " and t.category_second ='" + categorySecond + "'";
        }
		if (StringUtils.isNotBlank(categorySecond)){
			sql+=" and t.category_second ='"+categorySecond+"'";
		}
        if (StringUtils.isNotBlank(keyWords)){
            sql+=" and (t.create_user_name like '%"+keyWords+"%' or t.title like '%"+keyWords+"%' or t.content like '%"+keyWords+"%' or a.dept_name like '%"+keyWords+"%' )";
        if (StringUtils.isNotBlank(keyWords)) {
            sql += " and (t.create_user_name like '%" + keyWords + "%' or t.title like '%" + keyWords + "%' or t.content like '%" + keyWords + "%' or a.dept_name like '%" + keyWords + "%' )";
        }
		sql+=" group by t.id ,t.title ,t.intro,t.category_first_name ,t.category_second_name ,c.job_title_name," +
				"t.read_count,t.collection,t.fabulous,t.is_share,t.content ,t.image ,t.create_user_name ,b.dept_name ,b.org_name,t.create_time " +
				" order by t.create_time desc";
        List<Map<String,Object>> result = hibenateUtils.createSQLQuery(sql,page,pageSize);
        List<Map<String,Object>> countList = hibenateUtils.createSQLQuery(sql);
        sql += " group by t.id ,t.title ,t.intro,t.category_first_name ,t.category_second_name ,c.job_title_name," +
                "t.read_count,t.collection,t.fabulous,t.is_share,t.content ,t.image ,t.create_user_name ,b.dept_name ,b.org_name,t.create_time " +
                " order by t.create_time desc";
        List<Map<String, Object>> result = hibenateUtils.createSQLQuery(sql, page, pageSize);
        List<Map<String, Object>> countList = hibenateUtils.createSQLQuery(sql);
        objEnvelop.setObj(result);
        objEnvelop.setTotalCount(countList.size());
        objEnvelop.setPageSize(pageSize);
        objEnvelop.setCurrPage(page);
        return objEnvelop;
	}
	//查询患者收藏的文章列表
	public JSONObject findPatientFavorite(String patient,Integer page,Integer pageSize){
		String sql = "select t.id as \"id\",t.user_code as \"user\",t.user_name as \"userName\"," +
				"t.relation_code as \"relationCode\"," +
				"t.relation_type as \"relationType\"," +
				"t.relation_name as \"relationName\"," +
				"t.is_read as \"isRead\",t.fabulous as \"fabulous\"," +
				"t.is_share as \"share\"," +
				"t.collection as \"collection\",t.used as \"used\",t.del as \"del\"";
		sql+=" from wlyy_knowledge_article_user t left join wlyy_knowledge_article a" +
				" on t.relation_code = a.id where 1=1 and a.del=1 and a.collection=1 ";
		if (StringUtils.isNotEmpty(patient)){
			sql+=" and t.user_code = '"+patient+"'";
		}
		List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
		if(list!=null&&list.size()>0){
			for (Map<String,Object> map:list){
				String relationCode = map.get("relationCode").toString();
				String type =  map.get("relationType").toString();
				if ("1".equalsIgnoreCase(type)){
					KnowledgeArticleDO knowledgeArticleDO = this.selectById(relationCode);
					if (knowledgeArticleDO!=null){
						List<BaseDoctorHospitalDO> doctorHospitalDOS = doctorHospitalDao.findByDoctorCode(knowledgeArticleDO.getCreateUser());
						if (doctorHospitalDOS!=null&&doctorHospitalDOS.size()!=0){
							knowledgeArticleDO.setDeptName(doctorHospitalDOS.get(0).getDeptName());
							knowledgeArticleDO.setHospitalName(doctorHospitalDOS.get(0).getOrgName());
						}
					}
					map.put("KnowledgeArticleUserDO",knowledgeArticleDO);
				}
			}
		}
		List<Map<String,Object>> listCount = hibenateUtils.createSQLQuery(sql);
		JSONObject result = new JSONObject();
		result.put("total",listCount.size());
		result.put("detailModelList",list);
		return result;
	}
    }
    //查询患者收藏的文章列表
    public JSONObject findPatientFavorite(String patient, Integer page, Integer pageSize) {
        String sql = "select t.id as \"id\",t.user_code as \"user\",t.user_name as \"userName\"," +
                "t.relation_code as \"relationCode\"," +
                "t.relation_type as \"relationType\"," +
                "t.relation_name as \"relationName\"," +
                "t.is_read as \"isRead\",t.fabulous as \"fabulous\"," +
                "t.is_share as \"share\"," +
                "t.collection as \"collection\",t.used as \"used\",t.del as \"del\"";
        sql += " from wlyy_knowledge_article_user t left join wlyy_knowledge_article a" +
                " on t.relation_code = a.id where 1=1 and a.del=1 and a.collection=1 ";
        if (StringUtils.isNotEmpty(patient)) {
            sql += " and t.user_code = '" + patient + "'";
        }
        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql, page, pageSize);
        if (list != null && list.size() > 0) {
            for (Map<String, Object> map : list) {
                String relationCode = map.get("relationCode").toString();
                String type = map.get("relationType").toString();
                if ("1".equalsIgnoreCase(type)) {
                    KnowledgeArticleDO knowledgeArticleDO = this.selectById(relationCode);
                    if (knowledgeArticleDO != null) {
                        List<BaseDoctorHospitalDO> doctorHospitalDOS = doctorHospitalDao.findByDoctorCode(knowledgeArticleDO.getCreateUser());
                        if (doctorHospitalDOS != null && doctorHospitalDOS.size() != 0) {
                            knowledgeArticleDO.setDeptName(doctorHospitalDOS.get(0).getDeptName());
                            knowledgeArticleDO.setHospitalName(doctorHospitalDOS.get(0).getOrgName());
                        }
                    }
                    map.put("KnowledgeArticleUserDO", knowledgeArticleDO);
                }
            }
        }
        List<Map<String, Object>> listCount = hibenateUtils.createSQLQuery(sql);
        JSONObject result = new JSONObject();
        result.put("total", listCount.size());
        result.put("detailModelList", list);
        return result;
    }
}