Browse Source

医生端及基卫模板消息

wujunjie 7 years ago
parent
commit
71b36d9a6c

+ 119 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/prescription/PrescriptionNoticesService.java

@ -0,0 +1,119 @@
package com.yihu.wlyy.service.app.prescription;
import antlr.StringUtils;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.prescription.Prescription;
import com.yihu.wlyy.repository.doctor.DoctorDao;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.repository.prescription.PrescriptionDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.task.PushMsgTask;
import com.ylzinfo.onepay.sdk.utils.StringUtil;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * Created by Reece on 2017/8/3.
 */
@Service
public class PrescriptionNoticesService extends BaseService {
    @Autowired
    private PushMsgTask pushMsgTask;
    @Autowired
    private DoctorDao doctorDao;
    @Autowired
    private PatientDao patientDao;
    /**
     * 发送续方相关模板消息
     *
     * @param accessToken
     * @param doctor      医生code
     * @param patient     居民code
     * @param type        1:续方审核通知 2:取药代办通知 3:配送中信息变更 4:已完成服务结果
     * @param status      续方通知状态 0不通过 1通过 2调整处方  其余状态均为0
     */
    public void sendMessages(String accessToken, String doctor, String patient, String checkDoctor,String ordenTime,int type, int status) throws Exception{
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Doctor doct = doctorDao.findByCode(doctor);
        Patient people = patientDao.findByCode(patient);
        if (StringUtil.isEmpty(people.getOpenid())){
            return;
        }
        String doctName = doct.getName();
        String name = people.getName();
        String openId = people.getOpenid();
        JSONObject sendJson = new JSONObject();
        String first = "";
        String remark = "";
        if (type == 1) {
            switch (status) {
                case 0:
                    first =  name+ "您好,你的续方申请医生已审核。";
                    remark = "您可点击消息查看详情,修改续方信息后重新提交。";
                    sendJson.put("keyword1", "审核不通过");
                    sendJson.put("keyword2", doctName);
                    sendJson.put("first", first);
                    sendJson.put("remark", remark);
                    pushMsgTask.putWxMsg(accessToken, 19, openId, name, sendJson);
                    break;
                case 1:
                    first = name + "您好,你的续方申请医生已审核。";
                    remark = "您可点击消息查看详情并完成支付。";
                    sendJson.put("keyword1", "审核通过");
                    sendJson.put("keyword2", doctName);
                    sendJson.put("first", first);
                    sendJson.put("remark", remark);
                    pushMsgTask.putWxMsg(accessToken, 19, openId, name, sendJson);
                    break;
                case 2:
                    first = name + "您好,您的续方申请医生已修改处方清单并审核。";
                    remark = "您可点击消息查看详情并完成支付。";
                    sendJson.put("keyword1", "审核通过");
                    sendJson.put("keyword2", doctName);
                    sendJson.put("first", first);
                    sendJson.put("remark", remark);
                    pushMsgTask.putWxMsg(accessToken, 19, openId, name, sendJson);
                    break;
            }
        } else if (type == 2) {
            first =  name+ "您好,您的续方订单已完成配药,请尽快致社区医院取药。";
            remark = "";
            sendJson.put("keyword1", "续方订单取药");
            sendJson.put("keyword2", dateFormat.format(new Date()));
            sendJson.put("first", first);
            sendJson.put("remark", remark);
            pushMsgTask.putWxMsg(accessToken, 11, openId, name, sendJson);
        }
        if (type == 3) {
            first =  name+ "您好,您的续方订单配送员"+doctName+"已顺利取药,续方状态变更为配送中。";
            remark = "您可点击消息查看详情。";
            sendJson.put("keyword1", doctName);
            sendJson.put("keyword2", dateFormat.format(new Date()));
            sendJson.put("keyword3", "续方状态");
            sendJson.put("first", first);
            sendJson.put("remark", remark);
            pushMsgTask.putWxMsg(accessToken, 10, openId, name, sendJson);
        }
        if (type == 4) {
            first =  name+ ",您好!您的续方订单已成功配送。";
            remark = "感谢您的使用。";
            sendJson.put("keyword1", "续方申请");
            sendJson.put("keyword2", checkDoctor);//审核医生姓名
            sendJson.put("keyword3", ordenTime);//订单完成时间
            sendJson.put("first", first);
            sendJson.put("remark", remark);
            pushMsgTask.putWxMsg(accessToken, 20, openId, name, sendJson);
        }
    }
}

+ 2 - 18
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/SignWebService.java

@ -651,9 +651,8 @@ public class SignWebService extends BaseService {
     * @param signCode 签约code
     * @return
     */
    public List<JSONObject> getSignInfo(String signCode) {
    public JSONObject getSignInfo(String signCode) {
        List<JSONObject> jsonArray = new ArrayList<JSONObject>();
        // 直接查询签约缴费流水号 可能为空
        WlyyCharge charge = chargeDao.findByChargeRelation(signCode);
        //查询签约表数据
@ -725,22 +724,7 @@ public class SignWebService extends BaseService {
            String chargeCode = charge.getCode();
            jsonObject.put("chargeCode", chargeCode);
        }
        jsonArray.add(jsonObject);
        Collections.sort(jsonArray, new Comparator<JSONObject>() {
            @Override
            public int compare(JSONObject o1, JSONObject o2) {
                Date o1Date = (Date) o1.get("createTime");
                Date o2Date = (Date) o2.get("createTime");
                if (o1Date.before(o2Date)) {
                    return 1;
                } else if (o1Date.after(o2Date)) {
                    return -1;
                }
                return 0;
            }
        });
        return jsonArray;
        return jsonObject;
    }
    /**

+ 31 - 2
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/task/PushMsgTask.java

@ -187,8 +187,8 @@ public class PushMsgTask {
    /**
     * 发送微信模板消息
     *
     * @param type 1:签约成功  2:签约失败  3:咨询回复通知  4:健康指导提醒  5:解约申请通知  6:预约挂号成功通知  7:预约取消通知 8 缴费提醒 9 健康教育  10 签约医生变更
     *             18 产检提醒和产检就诊提醒
     * @param type 1:签约成功  2:签约失败  3:咨询回复通知  4:健康指导提醒  5:解约申请通知  6:预约挂号成功通知  7:预约取消通知 8 缴费提醒 9 健康教育  10 签约医生变更(信息变更通知)
     *             18 产检提醒和产检就诊提醒 19:续方审核结果通知(0.不通过 1.通过 2。调整处方并通过) 20:服务结果通知 11.代办事项通知
     * @param json 当type==1||type==2时:{"first":"消息主题",”doctor":"医生code","doctorName":"医生名","date":"签约时间","content":"签约内容","remark":"消息备注"}
     *             type==3时:{"first":"消息主题","consult":"医生咨询编号","consultcontent":"咨询内容","replycontent":"回复内容","doctorName":"医生名","remark":"消息备注"}
     *             type==4时:{"first":"消息主题","date":"指导时间","orgName":"指导机构","doctorName":"指导医生名","content":"指导内容","remark":"消息备注"}
@ -199,6 +199,9 @@ public class PushMsgTask {
     *             type==10时:{"first":"消息主题","name":"患教标题","doctorName":"医生名","date":"发送时间","remark":"消息备注"}
     *             <p>
     *             type==11时:{"first":"消息主题","name":"患教标题","doctorName":"医生名","date":"发送时间","remark":"消息备注"}
     *             type==19时:{"first":"消息主题","keyword1":"审核结果","keyword2":"审核医生","remark":"消息备注"}
     *             type==20时:{"first":"消息主题","keyword1":"服务项目","keyword2":"操作医生","keyword3":"服务时间","remark":"消息备注"}
     *
     * @return
     */
//    private boolean sendWeixinMessage(String access_token, int type, String openid, String name, JSONObject json) {
@ -584,6 +587,32 @@ public class PushMsgTask {
                keyword2.setColor("#000000");
                keyword2.setValue(json.getString("keyword2"));
                m.put("keyword2", keyword2);
            }else if (type == 19) {
                temp.setUrl(url + json.getString("url"));
                temp.setTemplate_id("szpdsKDQQRDnqsoK9Oxuophb-nScXat4yy6wobnvfFw");
                WechatTemplateData keyword1 = new WechatTemplateData();
                keyword1.setColor("#000000");
                keyword1.setValue(json.getString("keyword1"));
                m.put("keyword1", keyword1);
                WechatTemplateData keyword2 = new WechatTemplateData();
                keyword2.setColor("#000000");
                keyword2.setValue(json.getString("keyword2"));
                m.put("keyword2", keyword2);
            }else if (type == 20) {
                temp.setUrl(url + json.getString("url"));
                temp.setTemplate_id("szpdsKDQQRDnqsoK9Oxuophb-nScXat4yy6wobnvfFw");
                WechatTemplateData keyword1 = new WechatTemplateData();
                keyword1.setColor("#000000");
                keyword1.setValue(json.getString("keyword1"));
                m.put("keyword1", keyword1);
                WechatTemplateData keyword2 = new WechatTemplateData();
                keyword2.setColor("#000000");
                keyword2.setValue(json.getString("keyword2"));
                m.put("keyword2", keyword2);
                WechatTemplateData keyword3 = new WechatTemplateData();
                keyword3.setColor("#000000");
                keyword3.setValue(json.getString("keyword3"));
                m.put("keyword3", keyword3);
            }
            temp.setData(m);

+ 57 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/prescription/PrescriptionNoticesController.java

@ -0,0 +1,57 @@
package com.yihu.wlyy.web.doctor.prescription;
import com.yihu.wlyy.aop.ObserverRequired;
import com.yihu.wlyy.service.app.prescription.PrescriptionDispensaryCodeService;
import com.yihu.wlyy.service.app.prescription.PrescriptionExpressageService;
import com.yihu.wlyy.service.app.prescription.PrescriptionNoticesService;
import com.yihu.wlyy.web.BaseController;
import com.yihu.wlyy.web.WeixinBaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
 * Created by Reece on 2017/8/3.
 */
@RestController
@RequestMapping(value = "/doctor/prescriptionNotices")
@Api(description = "医生端-长处方模板消息接口")
public class PrescriptionNoticesController extends WeixinBaseController {
    @Autowired
    private PrescriptionNoticesService noticesService;
    /**
     * 医生端及基卫发送给居民的模板消息
     * @param doctor   相关医生信息
     * @param patient  目标居民信息
     * @param checkDoctor  审核医生姓名
     * @param ordenTime     订单完成时间 时间字符串格式yyyy-MM-dd HH:mm:ss
     * @param type       1:续方审核通知 2:取药代办通知 3:配送中信息变更 4:已完成服务结果
     * @param status    续方通知状态 0不通过 1通过 2调整处方  其余模板通知消息状态均为0
     * @return
     */
    @RequestMapping(value = "/sendMessage", method = RequestMethod.POST)
    @ApiOperation(value = "模板消息发送")
    public String sendMessage(
            @RequestParam() @ApiParam(value = "相关医生信息", name = "doctor")String doctor,
            @RequestParam() @ApiParam(value = "目标居民信息", name = "patient")String patient,
            @RequestParam() @ApiParam(value = "审核医生姓名", name = "checkDoctor")String checkDoctor,
            @RequestParam() @ApiParam(value = "订单完成时间 格式yyyy-MM-dd HH:mm:ss", name = "ordenTime")String ordenTime,
            @RequestParam() @ApiParam(value = "模板类型", name = "type")int type,
            @RequestParam() @ApiParam(value = "模板", name = "status")int status) {
        try {
            String accessToken = getAccessToken();
            noticesService.sendMessages(accessToken,doctor,patient,checkDoctor,ordenTime,type,status);
            return write(200, "配送成功");
        } catch (Exception e) {
            return error(-1, "失败");
        }
    }
}

+ 2 - 2
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/sign/PatientSignController.java

@ -316,8 +316,8 @@ public class PatientSignController extends BaseController {
    @RequestMapping(value = "/signInfo",method = RequestMethod.GET)
    public String getSignInfo(@RequestParam String code) {
        try {
            List<JSONObject> jsonArray = signWebService.getSignInfo(code);
            return write(200, "查询成功!", "data", new JSONArray(jsonArray));
            JSONObject jsonArray = signWebService.getSignInfo(code);
            return write(200, "查询成功!", "data", jsonArray);
        } catch (Exception ex) {
            error(ex);
            return error(-1, "系统错误,请联系管理员!");