Browse Source

Merge branch 'dev' of wangjun/wlyy2.0 into dev

wangzhinan 4 years ago
parent
commit
86aa9faa7c
15 changed files with 556 additions and 38 deletions
  1. 1 1
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/dao/OutpatientDao.java
  2. 34 3
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java
  3. 23 8
      business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/YkyyEntranceService.java
  4. 30 10
      business/base-service/src/main/java/com/yihu/jw/hospital/suggest/service/BaseSuggestionDictService.java
  5. 86 0
      business/base-service/src/main/java/com/yihu/jw/hospital/suggest/service/BaseSuggestionService.java
  6. 2 1
      business/im-service/src/main/java/com/yihu/jw/im/service/ImService.java
  7. 3 1
      common/common-entity/src/main/java/com/yihu/jw/entity/IntegerIdentityEntity.java
  8. 1 1
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/prescription/YkMsYj02DO.java
  9. 92 0
      common/common-entity/src/main/java/com/yihu/jw/entity/hospital/suggest/BaseSuggestionDO.java
  10. 25 0
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/hospital/BaseHospitalRequestMapping.java
  11. 38 8
      svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/job/OutPatientRemindJob.java
  12. 8 4
      svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/web/quota/JobController.java
  13. 12 1
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/consult/DoctorConsultEndpoint.java
  14. 81 0
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/hospital/BaseSuggestionController.java
  15. 120 0
      svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/hospital/BaseSuggestionDictController.java

+ 1 - 1
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/dao/OutpatientDao.java

@ -40,7 +40,7 @@ public interface OutpatientDao extends PagingAndSortingRepository<WlyyOutpatient
    @Query("select count(id) from  WlyyOutpatientDO a where a.outpatientType = ?1 and a.doctor = ?2 and a.admDate >=?3 and a.admDate <=?4")
    Integer countByTime(String type,String doctor,Date startTime,Date endTime);
    @Query("from WlyyOutpatientDO a where a.status = 0 ")
    @Query("from WlyyOutpatientDO a where a.status = 0 and a.payStatus = 1")
    List<WlyyOutpatientDO> findWaitingOutpatient();
}

+ 34 - 3
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java

@ -3600,6 +3600,10 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            }
            logger.info("doctorRefuseRemind医生拒诊入参:outpatientId="+outpatientId);
            msgUrl="/ims-wx/index.html#/returnVisit/record?outpatientId="+outpatientId;
        } else if("outPatientTimeOutRemind".equalsIgnoreCase(titelType)) {
            contentMsg = "您邀请的医师暂无应答,您可以选择继续等待或者取消邀请。";
            first = outpatientDO.getPatientName() + ",您好!";
            msgUrl="/ims-wx/index.html#/returnVisit/record?outpatientId=    "+outpatientId;
        } else if ("payRemind".equalsIgnoreCase(titelType)) {
            if ("9".equals(type)) {
@ -3722,6 +3726,13 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                //发起微信消息模板推送
                newConfig.setUrl(newConfig.getUrl() + "" + outpatientDO.getId());
                logger.info("眼科微信消息模板推送 医生拒诊开始");
            }else if("outPatientTimeOutRemind".equals(titelType)){
                //就诊等待过长提示
                scene="jzddgcts";
                WxTemplateConfigDO config = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus(wechatId, "template_outpatient_timeout_remind", scene, 1);
                BeanUtils.copyProperties(config, newConfig);
                newConfig.setUrl(newConfig.getUrl() + "" + outpatientDO.getId());
                logger.info("就诊等待过长提示");
            } else if ("payRemind".equalsIgnoreCase(titelType)) {
                scene = "zxzfts";
                //就诊支付
@ -3898,7 +3909,8 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        } else if ("xm_xzzx_wx".equalsIgnoreCase(wxId)) {
            String responseMsg="";
            String prefix="https://www.xmheart.com";
            //String prefix="https://www.xmheart.com";
            String prefix = "https://ih.xmheart.com";
            if(StringUtils.isNotEmpty(outpatientId)){
                responseMsg = xzzxEntranceService.sendXCXMes(wxId,
                        patientDO.getId(),
@ -3920,7 +3932,6 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                        prefix+msgUrl,
                        "wx53f6bb4ac081d840");
            }
            logger.info("url="+prefix+msgUrl);
            String msg="first:"+first+"contentMsg:"+contentMsg+"remark:"+remark;
            logger.info("发送的信息="+msg);
@ -3930,6 +3941,25 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
            if ("prescriptionPayRemind".equalsIgnoreCase(titelType)){
                return;
            }
            String scene = "";
            WxTemplateConfigDO newConfig = new WxTemplateConfigDO();
            if ("doctorRefuseRemind".equalsIgnoreCase(titelType)) {
                scene = "ysqxjz";
                WxTemplateConfigDO config = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus(wechatId, "template_doctor_notice", scene, 1);
                BeanUtils.copyProperties(config, newConfig);
                newConfig.setFirst(config.getFirst().replace("key1", outpatientDO.getPatientName()));
                if ("9".equals(type)) {
                    newConfig.setFirst(newConfig.getFirst().replace("key2", "图文复诊"));
                } else if ("16".equals(type)) {
                    newConfig.setFirst(newConfig.getFirst().replace("key2", "视频复诊"));
                }
                newConfig.setKeyword1( outpatientDO.getHospitalName());
                newConfig.setKeyword2(outpatientDO.getDoctorName());
                newConfig.setKeyword3( doctorDO.getFee());
                //发起微信消息模板推送
                newConfig.setUrl(newConfig.getUrl() + "" + outpatientDO.getId());
                logger.info("中山医院消息模板推送 医生拒诊开始");
            }
            String responseMsg="";
            String prefix="https://hlwyy.xmzsh.com";
            if(StringUtils.isNotEmpty(outpatientId)){
@ -7620,10 +7650,11 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        }
        String returnValue = "";
        Map<String, String> params = new HashedMap();
        params.put("type", "getPatInfoDataXml");
        params.put("data", data);
        returnValue = com.yihu.jw.utils.WebserviceUtil.post(url,
                "http://business.htemr.haitaiinc.com",
                "getPatInfoDataXml",
                "manageEmrDataAll",
                params);
        logger.info("门诊病历列表信息,返回值xmlstr:" + returnValue);

+ 23 - 8
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/YkyyEntranceService.java

@ -137,6 +137,8 @@ public class YkyyEntranceService {
    @Autowired
    private YkyyService ykyyService;
    @Autowired
    private PrescriptionEmrDao prescriptionEmrDao;
    public List<Map<String, Object>> createSQLQuery(String sql, Map<String, Object> params, Integer page, Integer size){
@ -1642,7 +1644,7 @@ public class YkyyEntranceService {
            List<WlyyInspectionDO> inspectionDOS = wlyyInspectionDao.findByPrescriptionId(code,1);
            synPrecriptionHis(prescriptionVO,code);
            //同步检查检验
           /* synInspect(inspectionDOS);*/
            synInspect(inspectionDOS);
        }
        return wlyyPrescriptionDOs.toString();
@ -1651,6 +1653,7 @@ public class YkyyEntranceService {
    //同步检查检验
    public void  synInspect(List<WlyyInspectionDO> inspectionDOS) throws Exception {
        System.out.println("进入同步");
        List<YkEmrJcsqDO> ykEmrJcsqDOS = new ArrayList<>();
        String doctor = null;
        String patient = null;
@ -2277,8 +2280,8 @@ public class YkyyEntranceService {
    }
    //根据组套项目id查询组套明细
    public JSONArray findZtmxByid(String ztId) throws Exception{
        String sql = "select t.ztid as \"ztid\",t.xmdm as \"xmdm\"," +
                "t.xmmc as \"xmmc\",t.mrsl as \"mrsl\",t.zxks as \"zxks\"" +
        String sql = "select t.ztid as \"ztid\",t.xmdm as \"code\"," +
                "t.xmmc as \"name\",t.mrsl as \"quantity\",t.zxks as \"dept\"" +
                "from portal_his.emr_ztmx@ykzxtest t where 1=1";
        if (StringUtils.isNotEmpty(ztId)){
            sql += " and t.ztid = '"+ztId+"'";
@ -2301,9 +2304,9 @@ public class YkyyEntranceService {
    }
    //查询诊疗项目视图
    public JSONArray findZlxm(String itemName) throws Exception{
        String sql = "select t.item_code as \"itemCode\",t.item_name as \"itemName\"," +
                "t.price as \"price\",t.total_unit as \"totalUnit\"," +
                "t.zxks as \"zxks\" from VEMR_ORDER_ITEM t where 1=1";
        String sql = "select t.item_code as \"code\",t.item_name as \"name\"," +
                "t.price as \"chargeAmount\",t.total_unit as \"totalUnit\"," +
                "t.zxks as \"dept\" from VEMR_ORDER_ITEM t where 1=1";
        if (StringUtils.isNotEmpty(itemName)){
            sql+=" and t.ITEM_NAME like '%"+itemName+"%'";
        }
@ -2324,7 +2327,7 @@ public class YkyyEntranceService {
    }
    //查询诊疗项目明细视图
    public JSONArray findZlxmMx(String zlxmId) throws Exception{
        String sql = "select t.zlxmid as \"zlxmid\",t.fyxh as \"fyxh\",t.fysl \"fysl\"" +
        String sql = "select t.zlxmid as \"code\",t.fyxh as \"fyxh\",t.fysl \"quantity\"" +
                " from VEMR_ORDER_ITEM_MX t where 1=1";
        if (StringUtils.isNotEmpty(zlxmId)){
            sql+=" and t.zlxmid = '"+zlxmId+"'";
@ -2553,5 +2556,17 @@ public class YkyyEntranceService {
            return "failed";
        }
    }
    //获取上一次的电子病例
    public List<WlyyPrescriptionEmrDO>  getPrevious(String patientId){
        List<WlyyPrescriptionDO> list =  prescriptionDao.findByPatientCode(patientId);
        String emrId = "";
        List<WlyyPrescriptionEmrDO> result = new ArrayList<>();
        if (list.size()>0){
            for (WlyyPrescriptionDO wlyyPrescriptionDO:list){
                WlyyPrescriptionEmrDO wlyyPrescriptionEmrDO= prescriptionEmrDao.findOne(wlyyPrescriptionDO.getId());
                result.add(wlyyPrescriptionEmrDO);
            }
        }
        return result;
    }
}

+ 30 - 10
business/base-service/src/main/java/com/yihu/jw/hospital/suggest/service/BaseSuggestionDictService.java

@ -4,16 +4,21 @@ import com.yihu.jw.entity.hospital.message.BaseBannerDO;
import com.yihu.jw.entity.hospital.suggest.BaseSuggestionDO;
import com.yihu.jw.entity.hospital.suggest.BaseSuggestionDictDO;
import com.yihu.jw.hospital.suggest.dao.BaseSuggestionDictDao;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.StringUtil;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
public class BaseSuggestionDictService extends BaseJpaService<BaseSuggestionDictDO, BaseSuggestionDictDao> {
    @Autowired
    private BaseSuggestionDictDao baseSuggestionDictDao;
@ -100,6 +105,7 @@ public class BaseSuggestionDictService extends BaseJpaService<BaseSuggestionDict
            }
        }
        baseSuggestionDictDO.setIsSort(sort+1);
        baseSuggestionDictDO.setIsDel(1);
        baseSuggestionDictDO.setUpdateTime(new Date());
        baseSuggestionDictDO.setCreateTime(new Date());
        BaseSuggestionDictDO result =  baseSuggestionDictDao.save(baseSuggestionDictDO);
@ -111,7 +117,7 @@ public class BaseSuggestionDictService extends BaseJpaService<BaseSuggestionDict
     * @return
     * @throws Exception
     */
    public BaseSuggestionDictDO updateSuggest(String id,String suggestName,String suggestDes,String isDel,String updateUser,String updateUserName){
    public BaseSuggestionDictDO updateSuggest(String id,String suggestName,String suggestDes,String updateUser,String updateUserName){
        BaseSuggestionDictDO baseSuggestionDictDO = baseSuggestionDictDao.findOne(id);
        if (null == baseSuggestionDictDO){
            return null;
@ -129,9 +135,6 @@ public class BaseSuggestionDictService extends BaseJpaService<BaseSuggestionDict
        if (!StringUtil.isEmpty(updateUserName)){
            baseSuggestionDictDO.setUpdateUser(updateUserName);
        }
        if (!StringUtil.isEmpty(isDel)){
            baseSuggestionDictDO.setIsDel(Integer.valueOf(isDel));
        }
        baseSuggestionDictDao.save(baseSuggestionDictDO);
        return baseSuggestionDictDO;
    }
@ -153,11 +156,28 @@ public class BaseSuggestionDictService extends BaseJpaService<BaseSuggestionDict
    *   根据建议名称 或者描述查询
    *
     */
    public List<Map<String,Object>> findByNameAndDes(String name,String des){
    public MixEnvelop findByNameAndDes(String name, String des, Integer page, Integer pageSize){
        String sql = "select t.id as\"id\",t.suggest_name as\"suggestName\",t.suggest_describe as\"suggestDescribe\"," +
                "t.is_del as\"isDel\",t.is_sort as\"isSort\",t.create_time as\"createTime\"" +
                " from base_suggestions_dict t where 1=1";
        List<Map<String,Object>> list= hibenateUtils.createSQLQuery(sql);
        return list;
                "t.is_del as\"isDel\",t.is_sort as\"isSort\",t.create_time as\"createTime\",t.update_time as \"updateTime\"" +
                " from base_suggestions_dict t where 1=1 and t.is_del = 1";
        if(StringUtils.isNotEmpty(name)){
            sql+=" and t.suggest_name like '%"+name+"%'";
        }
        if(StringUtils.isNotEmpty(des)){
            sql+=" and t.suggest_describe like '%"+des+"%'";
        }
        List<Map<String,Object>> list= hibenateUtils.createSQLQuery(sql,page,pageSize);
        for (Map<String,Object> map:list){
            String createTime= map.get("createTime").toString();
            String updateTime = map.get("updateTime").toString();
            map.put("createTime", DateUtil.dateToStrLong(DateUtil.strToDateLong(createTime)));
            map.put("updateTime",DateUtil.dateToStrLong(DateUtil.strToDateLong(updateTime)));
        }
        MixEnvelop mixEnvelop = new MixEnvelop();
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setTotalCount(list.size());
        mixEnvelop.setDetailModelList(list);
        mixEnvelop.setCurrPage(page);
        return mixEnvelop;
    }
}

+ 86 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/suggest/service/BaseSuggestionService.java

@ -2,10 +2,96 @@ package com.yihu.jw.hospital.suggest.service;
import com.yihu.jw.entity.hospital.suggest.BaseSuggestionDO;
import com.yihu.jw.entity.hospital.suggest.BaseSuggestionDictDO;
import com.yihu.jw.hospital.suggest.dao.BaseSuggestionDao;
import com.yihu.jw.hospital.suggest.dao.BaseSuggestionDictDao;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.persistence.criteria.CriteriaBuilder;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
public class BaseSuggestionService extends BaseJpaService<BaseSuggestionDO, BaseSuggestionDao> {
    @Autowired
    private HibenateUtils hibenateUtils;
    @Autowired
    private BaseSuggestionDao baseSuggestionDao;
    @Autowired
    private BaseSuggestionDictDao baseSuggestionDictDao;
    /**
     * 新增反馈建议
     * @param
     * @return
     * @throws Exception
     */
    public BaseSuggestionDO createSuggestion(BaseSuggestionDO baseSuggestionDO){
        baseSuggestionDO.setUpdateTime(new Date());
        baseSuggestionDO.setCreateTime(new Date());
        baseSuggestionDO.setIsDel(1);
        baseSuggestionDO.setSuggestStatus(0);
        BaseSuggestionDO result =  baseSuggestionDao.save(baseSuggestionDO);
        return result;
    }
    /**
     * 建议查看
     * @param
     * @return
     * @throws Exception
     */
    public MixEnvelop findSuggestionByType(String type, Integer page, Integer pageSize){
        String sql = "select a.id as\"id\",a.suggest_id as\"suggestId\",a.suggest_content as\"suggestContent\",a.suggest_img_url as\"suggestImgUrl\"," +
                "a.suggest_user_id as\"suggestUserId\",a.user_client as \"userClient\",a.user_type as \"userType\"," +
                "a.suggest_user_name as\"suggestUserName\",a.suggest_user_phone as\"suggestUserPhone\",a.create_time as\"createTime\"," +
                "a.update_time as\"updateTime\",a.suggest_status as \"suggestStatus\"," +
                "b.suggest_name as\"suggestName\",b.suggest_describe as\"suggestSescribe\" from base_suggestion a ," +
                "base_suggestions_dict b where a.suggest_id = b.id and a.is_del = 1" ;
        if(StringUtils.isNoneBlank(type)){
            sql+=" and a.suggest_id = '"+type+"'";
        }
        sql+=" order by a.create_time desc";
        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize);
        for (Map<String,Object> map:list){
            String createTime= map.get("createTime").toString();
            String updateTime = map.get("updateTime").toString();
            map.put("createTime", DateUtil.dateToStrLong(DateUtil.strToDateLong(createTime)));
            map.put("updateTime",DateUtil.dateToStrLong(DateUtil.strToDateLong(updateTime)));
        }
        MixEnvelop mixEnvelop = new MixEnvelop();
        mixEnvelop.setCurrPage(page);
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setTotalCount(list.size());
        mixEnvelop.setDetailModelList(list);
        return mixEnvelop;
    }
    //回复反馈
    public void reponseSuggestion(String id,String responseContent,String userId,String userName){
        BaseSuggestionDO baseSuggestionDO = baseSuggestionDao.findOne(id);
        if (null!=baseSuggestionDO){
            baseSuggestionDO.setManagerRes(responseContent);
            baseSuggestionDO.setResUser(userId);
            baseSuggestionDO.setResUserName(userName);
            baseSuggestionDO.setSuggestStatus(1);
        }
        baseSuggestionDao.save(baseSuggestionDO);
    }
    //查看单条
    public BaseSuggestionDO findSuggestionById(String id){
        BaseSuggestionDO baseSuggestionDO = baseSuggestionDao.findOne(id);
        BaseSuggestionDictDO baseSuggestionDictDO = baseSuggestionDictDao.findOne(baseSuggestionDO.getSuggestId());
        baseSuggestionDO.setSuggestName(baseSuggestionDictDO.getSuggestName());
        return baseSuggestionDO;
    }
}

+ 2 - 1
business/im-service/src/main/java/com/yihu/jw/im/service/ImService.java

@ -3090,11 +3090,12 @@ public class ImService {
	 * @param cancleContent
	 * @return
	 */
	public String sendOutPatientCancle(String patientName,String patientCode,String doctor,String cancleReason, String cancleContent) {
	public String sendOutPatientCancle(String patientName,String patientCode,String doctor,String cancleReason, String cancleContent,String outPatientId) {
		JSONObject msg = new JSONObject();
		msg.put("content",patientName+",您好!您的复诊已被医生取消");
		msg.put("cancleReason",cancleReason);
		msg.put("cancleContent",cancleContent);
		msg.put("outPatientId",outPatientId);
		logger.info("开始发送"+msg.toJSONString());
		return imUtil.sendMessage(doctor,patientCode,"2",msg.toString());
	}

+ 3 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/IntegerIdentityEntity.java

@ -25,7 +25,9 @@ public abstract class IntegerIdentityEntity implements Serializable {
//==========mysql 环境 id策略 end======================================================
//==========Oracle 环境id策略 =========================================================
/*   @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="id_generated")*/
/*
   @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="id_generated")
*/
//==========Oracle 环境id策略 =========================================================
    public Integer getId() {
        return id;

+ 1 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/prescription/YkMsYj02DO.java

@ -46,7 +46,7 @@ public class YkMsYj02DO {
        return ylxh;
    }
    public void setYlxh(Integer ylx) {
    public void setYlxh(Integer ylxh) {
        this.ylxh = ylxh;
    }
    @Basic

+ 92 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/suggest/BaseSuggestionDO.java

@ -5,6 +5,7 @@ import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
/**
 * Created by wj on 2020/0811.
@ -50,6 +51,97 @@ public class BaseSuggestionDO extends UuidIdentityEntityWithOperator {
     */
    @Column(name = "is_del")
    private Integer  isDel;
    /*
     *状态图 1回复 0未回复
     */
    @Column(name = "suggest_status")
    private Integer  suggestStatus;
    /*
     *回复内容
     */
    @Column(name = "manager_res")
    private String  managerRes;
    /*
     *回复人id
     */
    @Column(name = "res_user")
    private String  resUser;
    /*
     *回复人名称
     */
    @Column(name = "res_user_name")
    private String  resUserName;
    /*
     *用户客户端
     */
    @Column(name = "user_client")
    private String  userClient;
    /*
     *建议名称
     */
    @Transient
    private String  suggestName;
    /*
     *用户类型
     */
    @Column(name = "user_type")
    private String  userType;
    public String getUserType() {
        return userType;
    }
    public void setUserType(String userType) {
        this.userType = userType;
    }
    @Transient
    public String getSuggestName() {
        return suggestName;
    }
    public void setSuggestName(String suggestName) {
        this.suggestName = suggestName;
    }
    public Integer getSuggestStatus() {
        return suggestStatus;
    }
    public void setSuggestStatus(Integer suggestStatus) {
        this.suggestStatus = suggestStatus;
    }
    public String getManagerRes() {
        return managerRes;
    }
    public void setManagerRes(String managerRes) {
        this.managerRes = managerRes;
    }
    public String getResUser() {
        return resUser;
    }
    public void setResUser(String resUser) {
        this.resUser = resUser;
    }
    public String getResUserName() {
        return resUserName;
    }
    public void setResUserName(String resUserName) {
        this.resUserName = resUserName;
    }
    public String getUserClient() {
        return userClient;
    }
    public void setUserClient(String userClient) {
        this.userClient = userClient;
    }
    public String getSuggestId() {
        return suggestId;

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

@ -1029,6 +1029,7 @@ public class BaseHospitalRequestMapping {
        public static final String findZtmxByid = "/findZtmxByid";
        public static final String findZlxm = "/findZlxm";
        public static final String findZlxmMx = "/findZlxmMx";
        public static final String getPrevious = "/getPrevious";
    }
@ -1213,6 +1214,30 @@ public class BaseHospitalRequestMapping {
        public static final String selectMessageById = "/selectMessageById";
    }
    /**
     * 反馈建议
     */
    public static class suggestion extends Basic{
        public static final String suggestionManage  = "/suggestionManage";
        public static final String findSuggestionByType  = "/findSuggestionByType";
        public static final String delSuggestion  = "/delSuggestion";;
        public static final String saveSuggestion  = "/saveSuggestion";
        public static final String responseSuggestion  = "/responseSuggestion";
        public static final String findSuggestionById  = "/findSuggestionById";
    }
    /**
     * 反馈建议类型
     */
    public static class suggestionDict extends Basic{
        public static final String suggestionDictManage  = "/suggestionDictManage";
        public static final String findSuggestionType  = "/findSuggestionType";
        public static final String delSuggestionType = "/delSuggestionType";;
        public static final String saveSuggestionType  = "/saveSuggestionType";
        public static final String updateSuggestionType  = "/updateSuggestionType";
        public static final String upSuggestionType  = "/upSuggestionType";
        public static final String downSuggestionType  = "/downSuggestionType";
    }
    /**

+ 38 - 8
svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/job/OutPatientRemindJob.java

@ -1,16 +1,23 @@
package com.yihu.jw.job;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.prescription.dao.OutpatientDao;
import com.yihu.jw.hospital.prescription.service.PrescriptionService;
import com.yihu.jw.im.service.ImService;
import com.yihu.jw.im.util.ImUtil;
import com.yihu.jw.util.date.DateUtil;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import java.util.Date;
import java.util.List;
/**
@ -22,22 +29,45 @@ public class OutPatientRemindJob implements Job {
    public ImUtil imUtil;
    @Autowired
    private OutpatientDao outpatientDao;
    @Autowired
    private PrescriptionService prescriptionService;
    @Autowired
    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
    @Value("${wechat.id}")
    private String wxId;
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        List<WlyyOutpatientDO> wlyyOutpatientDOS= outpatientDao.findWaitingOutpatient();
        String senderId ="";
        String reciverId = "";
        long timeCount = 0l;
        String content = "您邀请的医师暂无应答,您可以选择继续等待或者取消邀请。";
        logger.info("---本次要发送的消息数量+"+wlyyOutpatientDOS.size());
        JSONObject object = new JSONObject();
        object.put("socket_sms_type",14);
        object.put("msg",content);
        object.put("msg_time", DateUtil.dateToStrLong(new Date()));
        if (null!=wlyyOutpatientDOS){
            for (WlyyOutpatientDO wlyyOutpatientDO:wlyyOutpatientDOS){
                logger.info("--便利发送消息");
                senderId = wlyyOutpatientDO.getPatient();
                logger.info("---发送人id"+senderId);
                reciverId = wlyyOutpatientDO.getDoctor();
                logger.info("---接受人Id"+reciverId);
                imUtil.sendMessage(senderId,reciverId,"1",content);
                logger.info("--发送结束");
                long patientTime = wlyyOutpatientDO.getCreateTime().getTime();
                logger.info("接诊创建时间="+patientTime);
                List<WlyyHospitalSysDictDO> wlyyHospitalSysDictDOS = wlyyHospitalSysDictDao.findByDictName("outpatient_timeout_remind");
                if (wlyyHospitalSysDictDOS.size()>0){
                    timeCount = Long.valueOf(wlyyHospitalSysDictDOS.get(0).getDictValue());
                }
                long currentTime = new Date().getTime();
                logger.info("当前时间="+currentTime);
                logger.info("数据库配置时间=0"+timeCount);
                if (currentTime-patientTime>timeCount*60*1000){
                    logger.info("--便利发送消息");
                    reciverId = wlyyOutpatientDO.getPatient();
                    logger.info("---发送人id"+senderId);
                    senderId= wlyyOutpatientDO.getDoctor();
                    logger.info("---接受人Id"+reciverId);
                    imUtil.sendMessage(senderId,reciverId,"1",object.toString());
                    logger.info("--发送结束");
                    logger.info("--模板发送开始");
                    prescriptionService.sendWxTemplateMsg(wxId,wlyyOutpatientDO.getId(),null,null,"outPatientTimeOutRemind","");
                }
            }
        }

+ 8 - 4
svr/svr-internet-hospital-job/src/main/java/com/yihu/jw/web/quota/JobController.java

@ -1,7 +1,9 @@
package com.yihu.jw.web.quota;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO;
import com.yihu.jw.entity.job.QuartzJobConfig;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.im.service.ImService;
import com.yihu.jw.internet.service.DataGeneratorService;
import com.yihu.jw.internet.service.InternetCommonService;
@ -62,6 +64,8 @@ public class JobController extends BaseController {
    private WxTemplateService wxTemplateService;
    @Autowired
    private QuartzJobConfigDao wlyyJobConfigDao;
    @Autowired
    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
    @Autowired
    public JobController(JobService jobService, QuartzHelper quartzHelper) {
@ -193,12 +197,12 @@ public class JobController extends BaseController {
                case "out_patient_remind_job":
                    //互联网医院 待结算消息推送
                    if (!quartzHelper.isExistJob("out_patient_remind_job")) {
                        QuartzJobConfig quartzJobConfig = wlyyJobConfigDao.findById("18");
                        List<WlyyHospitalSysDictDO> wlyyHospitalSysDictDOS = wlyyHospitalSysDictDao.findByDictName("out_patient_remind_job");
                        String trigger = "";
                        if (quartzJobConfig.getQuartzCron()==null){
                            trigger = SystemConf.getInstance().getSystemProperties().getProperty("out_patient_remind_job");
                        if (wlyyHospitalSysDictDOS.size()>0){
                            trigger = wlyyHospitalSysDictDOS.get(0).getDictValue();
                        }else {
                            trigger = quartzJobConfig.getQuartzCron();
                            trigger = SystemConf.getInstance().getSystemProperties().getProperty("out_patient_remind_job");
                        }
                        quartzHelper.addJob(OutPatientRemindJob.class, trigger, "out_patient_remind_job", new HashMap<String, Object>());
                        logger.info("out_patient_remind_job  job success");

+ 12 - 1
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/consult/DoctorConsultEndpoint.java

@ -11,6 +11,7 @@ import com.yihu.jw.entity.base.im.ConsultTeamDo;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionEmrDO;
import com.yihu.jw.hospital.prescription.dao.OutpatientDao;
import com.yihu.jw.hospital.prescription.service.PrescriptionService;
import com.yihu.jw.hospital.prescription.service.XzyyPrescriptionService;
@ -558,7 +559,7 @@ public class DoctorConsultEndpoint extends EnvelopRestEndpoint {
							logger.info("结束咨询成功!");
						}
					}
					String immsg = imService.sendOutPatientCancle(patientName,patientCode,doctor,cancelRemark,cancelValue);
					String immsg = imService.sendOutPatientCancle(patientName,patientCode,doctor,cancelRemark,cancelValue,outPatientId);
					System.out.println("发送拒绝接诊消息成功:"+immsg);
				}
			}
@ -984,4 +985,14 @@ public class DoctorConsultEndpoint extends EnvelopRestEndpoint {
		objEnvelop.setObj(array);
		return objEnvelop;
	}
	@PostMapping(value = BaseHospitalRequestMapping.DodtorIM.getPrevious)
	@ApiOperation(value = "查询病人的电子病历", notes = "查询病人的电子病历")
	public ObjEnvelop findPatientEmr(@ApiParam(name = "patientId", value = "patientId")
								 @RequestParam(value = "patientId", required = true)String patientId)throws Exception {
		List<WlyyPrescriptionEmrDO> array= ykyyEntranceService.getPrevious(patientId);
		ObjEnvelop objEnvelop = new ObjEnvelop();
		objEnvelop.setObj(array);
		return objEnvelop;
	}
}

+ 81 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/hospital/BaseSuggestionController.java

@ -0,0 +1,81 @@
package com.yihu.jw.hospital.endpoint.hospital;
import com.yihu.jw.entity.base.doctor.BaseDoctorBackgroundDO;
import com.yihu.jw.entity.hospital.message.BaseBannerDO;
import com.yihu.jw.entity.hospital.suggest.BaseSuggestionDO;
import com.yihu.jw.hospital.suggest.service.BaseSuggestionService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping(value = BaseHospitalRequestMapping.suggestion.suggestionManage)
@Api(value = "反馈建议", description = "反馈建议", tags = {"互联网医院 - 反馈建议"})
public class BaseSuggestionController extends EnvelopRestEndpoint {
    @Autowired
    private BaseSuggestionService baseSuggestionService;
    @ApiOperation("查询反馈建议")
    @PostMapping(value= BaseHospitalRequestMapping.suggestion.findSuggestionByType)
    public MixEnvelop findSuggestionByType(@ApiParam(name = "type", value = "类型id", required = false)
                                @RequestParam(value = "type", required = false)String type,
                               @ApiParam(name = "page", value = "第几页,从1开始", required = true, defaultValue = "1")
                            @RequestParam(value = "page", required = true,defaultValue = "1")Integer page,
                               @ApiParam(name = "pageSize", value = "每页分页大小", required = true, defaultValue = "10")
                            @RequestParam(value = "pageSize", required = true,defaultValue = "10")Integer pageSize){
        MixEnvelop mixEnvelop=baseSuggestionService.findSuggestionByType(type,page,pageSize);
        return mixEnvelop;
    }
    @PostMapping(value= BaseHospitalRequestMapping.suggestion.saveSuggestion)
    @ApiOperation("新增反馈建议")
    public Envelop saveSuggestion(
            @ApiParam(name = "json", value = "Json数据", required = true)
            @RequestParam(value = "json", required = false)String json)throws Exception{
        BaseSuggestionDO baseSuggestionDO = toEntity(json, BaseSuggestionDO.class);
        BaseSuggestionDO result = baseSuggestionService.createSuggestion(baseSuggestionDO);
        if (null == result){
            return failed("新增失败");
        }
        return success("新增成功");
    }
    @PostMapping(value= BaseHospitalRequestMapping.suggestion.responseSuggestion)
    @ApiOperation("回复反馈建议")
    public Envelop responseSuggestion(
            @ApiParam(name = "id", value = "建议id", required = true)
    @RequestParam(value = "id", required = true)String id,
            @ApiParam(name = "content", value = "回复内容", required = true)
            @RequestParam(value = "content", required = false)String content,
            @ApiParam(name = "userId", value = "回复人id", required = true)
            @RequestParam(value = "userId", required = false)String userId)throws Exception{
        if (!StringUtils.isNoneBlank(userId)){
            userId= getUID();
        }
        String userName = getUNAME();
        baseSuggestionService.reponseSuggestion(id,content,userId,userName);
        return success("回复成功");
    }
    @PostMapping(value= BaseHospitalRequestMapping.suggestion.findSuggestionById)
    @ApiOperation("回复反馈建议")
    public Envelop findSuggestionById(
            @ApiParam(name = "id", value = "建议id", required = true)
            @RequestParam(value = "id", required = true)String id) {
        BaseSuggestionDO baseSuggestionDO = baseSuggestionService.findSuggestionById(id);
        return success(baseSuggestionDO);
    }
}

+ 120 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/hospital/BaseSuggestionDictController.java

@ -0,0 +1,120 @@
package com.yihu.jw.hospital.endpoint.hospital;
import com.yihu.jw.entity.hospital.message.BaseBannerDO;
import com.yihu.jw.entity.hospital.suggest.BaseSuggestionDO;
import com.yihu.jw.entity.hospital.suggest.BaseSuggestionDictDO;
import com.yihu.jw.hospital.suggest.service.BaseSuggestionDictService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = BaseHospitalRequestMapping.suggestionDict.suggestionDictManage)
@Api(value = "反馈建议类型", description = "反馈建议类型", tags = {"互联网医院 - 反馈建议类型"})
public class BaseSuggestionDictController extends EnvelopRestEndpoint {
    @Autowired
    private BaseSuggestionDictService baseSuggestionDictService;
    @ApiOperation("查询反馈建议类型")
    @PostMapping(value= BaseHospitalRequestMapping.suggestionDict.findSuggestionType)
    public MixEnvelop findSuggestionByType(@ApiParam(name = "name", value = "类型名称", required = false)
                                           @RequestParam(value = "name", required = false)String name,
                                           @ApiParam(name = "des", value = "类型描述", required = false)
                                           @RequestParam(value = "des", required = false)String des,
                                           @ApiParam(name = "page", value = "第几页,从1开始", required = true, defaultValue = "1")
                                           @RequestParam(value = "page", required = true,defaultValue = "1")Integer page,
                                           @ApiParam(name = "pageSize", value = "每页分页大小", required = true, defaultValue = "10")
                                           @RequestParam(value = "pageSize", required = true,defaultValue = "10")Integer pageSize){
        MixEnvelop mixEnvelop=baseSuggestionDictService.findByNameAndDes(name,des,page,pageSize);
        return mixEnvelop;
    }
    @PostMapping(value= BaseHospitalRequestMapping.suggestionDict.saveSuggestionType)
    @ApiOperation("新增反馈建议类型")
    public Envelop saveSuggestionType(
            @ApiParam(name = "json", value = "Json数据", required = true)
            @RequestParam(value = "json", required = false)String json)throws Exception{
        BaseSuggestionDictDO baseSuggestionDO = toEntity(json, BaseSuggestionDictDO.class);
        BaseSuggestionDictDO result = baseSuggestionDictService.createSuggestionType(baseSuggestionDO);
        if (null == result){
            return failed("新增失败");
        }
        return success("新增成功");
    }
    @GetMapping(value= BaseHospitalRequestMapping.suggestionDict.delSuggestionType  )
    @ApiOperation("删除反馈建议类型")
    public Envelop delSuggestionType(
            @ApiParam(name = "id", value = "建议id", required = true)
            @RequestParam(value = "id", required = true)String id)throws Exception{
        boolean flag = baseSuggestionDictService.deleteSuggest(id);
        if (true==flag){
            return success("删除成功");
        }else {
            return failed("删除失败");
        }
    }
    @PostMapping(value= BaseHospitalRequestMapping.suggestionDict.updateSuggestionType)
    @ApiOperation("更新建议类型")
    public Envelop updateSuggestionType(
            @ApiParam(name = "id", value = "id", required = true)
            @RequestParam(value = "id", required = true)String id,
            @ApiParam(name = "suggestName", value = "suggestName", required = false)
            @RequestParam(value = "suggestName", required = false)String suggestName,
            @ApiParam(name = "suggestDes", value = "suggestDes", required = false)
            @RequestParam(value = "suggestDes", required = false)String suggestDes,
            @ApiParam(name = "updateUser", value = "updateUser", required = false)
            @RequestParam(value = "updateUser", required = false)String updateUser)throws Exception {
        if (!StringUtils.isNoneBlank(updateUser)){
            updateUser = getUID();
        }
        String updateUserName = getUNAME();
        BaseSuggestionDictDO result = baseSuggestionDictService.updateSuggest(id,suggestName,suggestDes,updateUser,updateUserName);
        if (null == result) {
            return failed("更新失败,礼物不存在");
        }
        return success("更新成功");
    }
    @GetMapping(value= BaseHospitalRequestMapping.suggestionDict.upSuggestionType)
    @ApiOperation("上移")
    public Envelop upBanner(@ApiParam(name = "id", value = "id", required = true)
                            @RequestParam(value = "id", required = true)String id){
        BaseSuggestionDictDO baseSuggestionDictDO = new BaseSuggestionDictDO();
        String erroMessage = null;
        try {
            baseSuggestionDictDO = baseSuggestionDictService.upSuggestion(id);
        } catch (Exception e) {
            erroMessage = e.getMessage();
        }
        if (org.apache.commons.lang.StringUtils.isNotEmpty(erroMessage)){
            return failed("上移失败"+erroMessage);
        }else {
            return success("上移成功");
        }
    }
    @GetMapping(value= BaseHospitalRequestMapping.suggestionDict.downSuggestionType)
    @ApiOperation("下移")
    public Envelop downBanner(@ApiParam(name = "id", value = "id", required = true)
                              @RequestParam(value = "id", required = true)String id){
        BaseSuggestionDictDO baseSuggestionDictDO = new BaseSuggestionDictDO();
        String erroMessage = null;
        try {
            baseSuggestionDictDO = baseSuggestionDictService.downSuggestion(id);
        } catch (Exception e) {
            erroMessage = e.getMessage();
        }
        if (org.apache.commons.lang.StringUtils.isNotEmpty(erroMessage)){
            return failed("下移失败"+erroMessage);
        }else {
            return success("下移成功");
        }
    }
}