|
@ -1,175 +0,0 @@
|
|
|
package com.yihu.wlyy.web.third.gateway.controller.doctor;
|
|
|
|
|
|
import com.yihu.es.entity.HealthEduArticlePatient;
|
|
|
import com.yihu.wlyy.entity.patient.Patient;
|
|
|
import com.yihu.wlyy.service.app.consult.ConsultService;
|
|
|
import com.yihu.wlyy.service.common.account.PatientService;
|
|
|
import com.yihu.wlyy.task.PushMsgTask;
|
|
|
import com.yihu.wlyy.util.DateUtil;
|
|
|
import com.yihu.wlyy.util.ImUtill;
|
|
|
import com.yihu.wlyy.web.WeixinBaseController;
|
|
|
import com.yihu.wlyy.web.third.gateway.service.GcEduArticleService;
|
|
|
import com.yihu.wlyy.web.third.gateway.vo.HealthEduArticlePatientModel;
|
|
|
import com.yihu.wlyy.web.third.gateway.vo.base.BaseResultModel;
|
|
|
import com.yihu.wlyy.web.third.gateway.vo.base.ResultPageListModel;
|
|
|
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.json.JSONArray;
|
|
|
import org.json.JSONObject;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
import org.springframework.http.MediaType;
|
|
|
import org.springframework.jms.core.JmsTemplate;
|
|
|
import org.springframework.jms.core.MessageCreator;
|
|
|
import org.springframework.stereotype.Controller;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
|
|
import javax.jms.JMSException;
|
|
|
import javax.jms.Message;
|
|
|
import javax.jms.Session;
|
|
|
import javax.jms.TextMessage;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* Created by chenweida on 2017/8/30.
|
|
|
*/
|
|
|
@Controller
|
|
|
@RequestMapping(value = "/wlyygc/doctor/edu/article", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
|
|
|
@ResponseBody
|
|
|
@Api(description = "医生文章相关服务")
|
|
|
public class GcEduArticleController extends WeixinBaseController {
|
|
|
private Logger logger = LoggerFactory.getLogger(GcEduArticleController.class);
|
|
|
|
|
|
@Autowired
|
|
|
private WeiXinOpenIdUtils weiXinOpenIdUtils;
|
|
|
@Autowired
|
|
|
private PushMsgTask pushMsgTask;
|
|
|
@Autowired
|
|
|
private PatientService patientService;
|
|
|
@Autowired
|
|
|
private ConsultService consultService;
|
|
|
@Autowired
|
|
|
private GcEduArticleService gcEduArticleService;
|
|
|
@Autowired
|
|
|
private StringRedisTemplate redisTemplate;
|
|
|
@Autowired
|
|
|
private JmsTemplate jmsTemplate;
|
|
|
@Value("${activemq.queue.healtHarticleQueue}")
|
|
|
private String channelName;
|
|
|
|
|
|
/**
|
|
|
* @param doctorCode
|
|
|
* @param page
|
|
|
* @param pagesize
|
|
|
* @return
|
|
|
*/
|
|
|
@RequestMapping(value = "logs", method = RequestMethod.GET)
|
|
|
@ApiOperation("查询医生给患者推送记录 ")
|
|
|
public ResultPageListModel<HealthEduArticlePatientModel> getPatientHealthLogs(
|
|
|
@ApiParam(name = "articleType", value = "文章类别", required = false) @RequestParam(value = "articleType", required = false) String articleType,
|
|
|
@ApiParam(name = "level1Type", value = "一级分类", required = false) @RequestParam(value = "level1Type", required = false) String level1Type,
|
|
|
@ApiParam(name = "level2Type", value = "二级分类", required = false) @RequestParam(value = "level2Type", required = false) String level2Type,
|
|
|
@ApiParam(name = "level", value = "等级", required = false) @RequestParam(value = "level", required = false) String level,
|
|
|
@ApiParam(name = "doctorCode", value = "医生code,为空从useragent取", required = false) @RequestParam(value = "doctorCode", required = false) String doctorCode,
|
|
|
@ApiParam(name = "patientCode", value = "接收人code", required = false) @RequestParam(value = "patientCode", required = false) String patientCode,
|
|
|
@ApiParam(name = "articleTitle", value = "文章标题", required = false) @RequestParam(value = "articleTitle", required = false) String articleTitle,
|
|
|
@ApiParam(name = "startTime", value = "开始时间yyyy-Mm-dd", required = false) @RequestParam(value = "startTime", required = false) String startTime,
|
|
|
@ApiParam(name = "endTime", value = "结束时间yyyy-Mm-dd", required = false) @RequestParam(value = "endTime", required = false) String endTime,
|
|
|
@ApiParam(name = "page", value = "当前页 起始1", required = true) @RequestParam(value = "page", required = true) Integer page,
|
|
|
@ApiParam(name = "pagesize", value = "每页显示条数", required = true) @RequestParam(value = "pagesize", required = true) Integer pagesize) {
|
|
|
try {
|
|
|
if (org.springframework.util.StringUtils.isEmpty(doctorCode)) {
|
|
|
doctorCode = getUID();
|
|
|
}
|
|
|
//最大1000
|
|
|
if (pagesize > 1000) {
|
|
|
pagesize = 1000;
|
|
|
}
|
|
|
List<HealthEduArticlePatientModel> eduArticlePatients = gcEduArticleService.getPatientHealthLogs(doctorCode, articleType, level1Type, level2Type, level, articleTitle, startTime, endTime, page, pagesize);
|
|
|
Long count = gcEduArticleService.getPatientHealthLogsCount(getUID(), articleType, level1Type, level2Type, level, articleTitle, startTime, endTime);
|
|
|
return new ResultPageListModel(
|
|
|
page,
|
|
|
pagesize,
|
|
|
count.intValue()
|
|
|
, eduArticlePatients);
|
|
|
} catch (Exception e) {
|
|
|
return new ResultPageListModel(BaseResultModel.statusEm.find_error.getCode(), BaseResultModel.statusEm.find_error.getMessage() + "," + e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* * 参考原来的教育文章推送
|
|
|
* http://172.19.103.88:9092/wlyy//doctor/health/edu/send?code=2e6467b5bb2f4b81b598633624d7f98e&patient=e911d1b756cd4680ab241ab76a463282&teamCode=1&attachedContent=
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
@RequestMapping(value = "send", method = RequestMethod.POST)
|
|
|
@ApiOperation("文章推送")
|
|
|
public BaseResultModel send(
|
|
|
@ApiParam(name = "sendType", value = "发送类型 1医生发送 2卫纪委发送", required = true) @RequestParam(value = "sendType", required = true) Integer sendType,
|
|
|
@ApiParam(name = "sendCode", value = "发送人code", required = true) @RequestParam(value = "sendCode", required = true) String sendCode,
|
|
|
@ApiParam(name = "sendName", value = "发送人名", required = true) @RequestParam(value = "sendName", required = true) String sendName,
|
|
|
@ApiParam(name = "sendMessage", value = "发送人信息", required = false) @RequestParam(value = "sendMessage", required = false) String sendMessage,
|
|
|
@ApiParam(name = "teamId", value = "发送人是医生的时候,医生所属的团队", required = false) @RequestParam(value = "teamId", required = false) Long teamId,
|
|
|
@ApiParam(name = "labelCode", value = "所选群组,多个用逗号分隔", required = true) @RequestParam(value = "labelCode", required = false, defaultValue = "") String labelCode,
|
|
|
@ApiParam(name = "labelType", value = "标签类型 1:服务类型(卫计委分组) 2:健康情况 3:疾病类型 4:团队标签(自定义标签)", required = false) @RequestParam(value = "labelType", required = false, defaultValue = "") String labelType,
|
|
|
@ApiParam(name = "receiveCodes", value = "接收人code,多个逗号分割", required = false) @RequestParam(value = "receiveCodes", required = false, defaultValue = "") String receiveCodes,
|
|
|
@ApiParam(name = "unReceiveCodes", value = "不接收人code,多个逗号分割(如果同时存在receiveCodes和unReceiveCodes,也不会发送)", required = false) @RequestParam(value = "unReceiveCodes", required = false, defaultValue = "") String unReceiveCodes,
|
|
|
@ApiParam(name = "articleId", value = "文章ID", required = true) @RequestParam(value = "articleId", required = true) String articleId,
|
|
|
@ApiParam(name = "articlePic", value = "文章封面", required = true) @RequestParam(value = "articlePic", required = true) String articlePic,
|
|
|
@ApiParam(name = "articleTitle", value = "文章标题", required = true) @RequestParam(value = "articleTitle", required = true) String articleTitle,
|
|
|
@ApiParam(name = "articleContent", value = "文章内容", required = true) @RequestParam(value = "articleContent", required = true) String articleContent,
|
|
|
@ApiParam(name = "articleType", value = "文章类别", required = true) @RequestParam(value = "articleType", required = true) String articleType,
|
|
|
@ApiParam(name = "level1Type", value = "一级分类", required = true) @RequestParam(value = "level1Type", required = true) String level1Type,
|
|
|
@ApiParam(name = "level2Type", value = "二级分类", required = true) @RequestParam(value = "level2Type", required = true) String level2Type,
|
|
|
@ApiParam(name = "level", value = "等级", required = true) @RequestParam(value = "level", required = true) String level
|
|
|
) {
|
|
|
try {
|
|
|
String[] patients = receiveCodes.split(",");//接收人的code
|
|
|
String[] unPatients = unReceiveCodes.split(",");//接收人的code
|
|
|
Set<String> patientSet = new HashSet<>(); //放入set中可以去重复
|
|
|
|
|
|
//得到需要发送的患者
|
|
|
gcEduArticleService.initPatient(patientSet, patients, unPatients, labelType, labelCode, teamId);
|
|
|
//获取保存发送记录
|
|
|
List<com.yihu.es.entity.HealthEduArticlePatient> healthEduArticlePatients = gcEduArticleService.getSaveArticle(patientSet, sendCode, sendName, sendType, sendMessage, teamId, articleId, articlePic, articleTitle, articleContent, articleType, level1Type, level2Type, level);
|
|
|
//推送微信模板消息和发送im消息
|
|
|
new Thread(() -> {
|
|
|
//发送任务到redis
|
|
|
sender(healthEduArticlePatients);
|
|
|
}).start();
|
|
|
return new BaseResultModel();
|
|
|
} catch (Exception e) {
|
|
|
return new BaseResultModel(BaseResultModel.statusEm.opera_error.getCode(), BaseResultModel.statusEm.opera_error.getMessage() + ":" + e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 发送到redis
|
|
|
*
|
|
|
* @param healthEduArticlePatients
|
|
|
*/
|
|
|
public void sender(List<HealthEduArticlePatient> healthEduArticlePatients) {
|
|
|
//送到到队列
|
|
|
healthEduArticlePatients.stream().forEach(one -> {
|
|
|
jmsTemplate.send(channelName, new MessageCreator() {
|
|
|
@Override
|
|
|
public Message createMessage(Session session) throws JMSException {
|
|
|
TextMessage textMessage = session.createTextMessage();
|
|
|
textMessage.setText(net.sf.json.JSONObject.fromObject(one).toString());
|
|
|
return textMessage;
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
|
|
|
}
|