Jelajahi Sumber

代码修改

yeshijie 7 tahun lalu
induk
melakukan
f2439a9aaa

+ 10 - 3
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/PrenatalInspectorPlanDao.java

@ -1,7 +1,7 @@
package com.yihu.wlyy.repository.patient;
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlan;
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlanLibrary;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
@ -12,9 +12,16 @@ import java.util.List;
 */
public interface PrenatalInspectorPlanDao extends PagingAndSortingRepository<PrenatalInspectorPlan, Long>{
    @Query("select a from PrenatalInspectorPlan a where a.inspectionCode = ?1 and a.status = '0' order by a.inspectionStartTime asc")
    @Query("select a from PrenatalInspectorPlan a where a.inspectionCode = ?1 and a.status = '0' and a.del='1' order by a.inspectionTime asc")
    List<PrenatalInspectorPlan> findByCode(String inspectionCode);
    @Query("select a from PrenatalInspectorPlan a where a.inspectionTime is not null and a.status = '0' and ( TO_DAYS(a.inspectionTime)- TO_DAYS(NOW())=7 or TO_DAYS(a.inspectionTime)- TO_DAYS(NOW())=1 ) ")
    @Query("select a from PrenatalInspectorPlan a where a.patient = ?1 and a.status = '0' and a.del='1' and NOW()<=a.inspectionTime order by a.inspectionTime asc")
    List<PrenatalInspectorPlan> findByPatient(String patient);
    @Query("select a from PrenatalInspectorPlan a where a.status = '0' and a.del='1' and ( TO_DAYS(a.inspectionTime)- TO_DAYS(NOW())=7 or TO_DAYS(a.inspectionTime)- TO_DAYS(NOW())=1 ) ")
    List<PrenatalInspectorPlan> findWxTipList();
    @Modifying
    @Query("update PrenatalInspectorPlan a set a.del = '0' where a.patient= ?1 and a.del='1'")
    int updateStatus(String patient);
}

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/PrenatalInspectorPlanLibraryDao.java

@ -14,7 +14,7 @@ import java.util.List;
public interface PrenatalInspectorPlanLibraryDao extends PagingAndSortingRepository<PrenatalInspectorPlanLibrary, Long>{
    @Query("select a from PrenatalInspectorPlanLibrary a where a.endDay >= ?1 order by a.endDay asc ")
    @Query("select a from PrenatalInspectorPlanLibrary a where a.endDay <= ?1 order by a.endDay desc ")
    List<PrenatalInspectorPlanLibrary> findByDays(Long endDay);
}

+ 136 - 117
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/prenatalInspector/PrenatalInspectorPreCardService.java

@ -73,13 +73,7 @@ public class PrenatalInspectorPreCardService extends BaseService {
            json.put("name",plan.getName());
            json.put("thisFoucs",plan.getThisFocus());
            json.put("thisNote",plan.getThisNote());
            if(plan.getInspectionTime()==null){
                json.put("inspectionTime","");
            }else {
                json.put("inspectionTime",DateUtil.dateToStrShort(plan.getInspectionTime()));
            }
            json.put("inspectionEndTime",DateUtil.dateToStrShort(plan.getInspectionEndTime()));
            json.put("inspectionStartTime",DateUtil.dateToStrShort(plan.getInspectionStartTime()));
            json.put("inspectionTime",DateUtil.dateToStrShort(plan.getInspectionTime()));
            jsonArray.add(json);
        }
@ -107,7 +101,7 @@ public class PrenatalInspectorPreCardService extends BaseService {
            if(json.getInteger("status")==200){
                data = json.getJSONObject("data").getJSONArray("DATA");
            }
            if(data!=null&&data.size()>0){
            if(data!=null&&data.size()>0){//有建卡信息
                for (int i=0;i<data.size();i++) {
                    JSONObject planJson = new JSONObject();
                    JSONObject pregnancy = data.getJSONObject(i);
@ -126,45 +120,41 @@ public class PrenatalInspectorPreCardService extends BaseService {
                    planJson.put("expectedTime",EXPECTED_TIME);
                    Date date = new Date();
                    if(StringUtils.isBlank(END_TIME)){
                        //未结束妊娠,生成待产检计划
                        List<PrenatalInspectorPlan> plans = prenatalInspectorPlanDao.findByCode(PREGNANCY_NO);
                        if(plans==null||plans.size()==0){//判断是否已经生成产检记录
                            //获取最后一次检查时间-查询复检记录
                            String lastExamTime = getLastExamTime(patient.getIdcard(),hospital,PREGNANCY_NO);
                            if(StringUtils.isBlank(lastExamTime)){
                                lastExamTime = EXAM_TIME;
                        List<PrenatalInspectorPlan> plans = prenatalInspectorPlanDao.findByPatient(patientCode);
                        boolean flag = false;
                        if(plans==null||plans.size()==0){
                            flag = true;
                        }else {
                            String inspectionCode = plans.get(0).getInspectionCode();
                            if(StringUtils.isBlank(inspectionCode)){//有待产检计划,但是产检号为空,说明是预建卡生成的产检记录
                                flag = true;
                                //更新居民待产检计划,需要重新生成
                                prenatalInspectorPlanDao.updateStatus(patientCode);
                            }
                        }
                            Date lastMenstrualDate = DateUtil.strToDate(MENSES_LAST);
                            Long days = DateUtil.getDays(date,lastMenstrualDate);
                            days = days>365?0:days;//老早前的测试数据处理
                        if(flag){//判断是否已经生成产检记录
                            Date dueDay = DateUtil.strToDate(EXPECTED_TIME);
                            Long days = DateUtil.getDays(dueDay,date);
                            List<PrenatalInspectorPlanLibrary> libraries = prenatalInspectorPlanLibraryDao.findByDays(days);
                            plans = new ArrayList<>();
                            PrenatalInspectorPlan plan = null;
                            for (PrenatalInspectorPlanLibrary library:libraries){
                                Date startTime = DateUtil.getPrenatalInspectorDate(lastMenstrualDate,library.getStartDay().intValue());
                                Long temp = DateUtil.getDays(DateUtil.strToDateLong(lastExamTime),startTime);
                                if(temp>0){//说明已经产检
                                    continue;
                                }
                                plan = new PrenatalInspectorPlan();
                                plan.setInspectionPhase(library.getInspectionPhase());
                                plan.setStatus("0");
                                plan.setPatient(patientCode);
                                plan.setCzrq(date);
                                plan.setCheckItem(library.getCheckItem());
                                plan.setDel("1");
                                plan.setInspectionCode(PREGNANCY_NO);//产检号
                                plan.setInspectionEndTime(DateUtil.getPrenatalInspectorDate(lastMenstrualDate,library.getEndDay().intValue()));
                                plan.setInspectionStartTime(startTime);
                                plan.setCheckItem(library.getCheckItem());
                                plan.setInspectionTime(DateUtil.getPrenatalInspectorDate(dueDay,-library.getEndDay().intValue()));
                                plan.setName(library.getName());
                                plan.setThisFocus(library.getThisFocus());
                                plan.setThisNote(library.getThisNote());
                                if("1".equals(plan.getInspectionPhase())&&signFamily!=null){
                                    plan.setSignHospital(signFamily.getHospital());
                                }
                                plans.add(plan);
                            }
                            if (plans.size()>0){
@ -202,8 +192,76 @@ public class PrenatalInspectorPreCardService extends BaseService {
                    }
                    re.add(planJson);
                }
            }
            }else{
                //没有建卡信息,请求预建卡接口
                response = jwMaternalChildService.getEhrMaternalPreFirstExamRecord(patient.getIdcard(),hospital);
                JSONObject preJson = JSONObject.parseObject(response);
                JSONArray preData = null;
                if(preJson.getInteger("status")==200){
                    preData = preJson.getJSONObject("data").getJSONArray("DATA");
                    if(preData!=null&&preData.size()>0){
                        for (int i=0;i<preData.size();i++){
                            JSONObject planJson = new JSONObject();
                            JSONObject pregnancy = preData.getJSONObject(i);
                            String PREGNANCY_NO = pregnancy.getString("PREGNANCY_NO");//智业产检号
                            String END_MANNER = pregnancy.getString("END_MANNER");//妊娠终止方式
                            String END_TIME = pregnancy.getString("END_TIME");//结束妊娠
                            String MENSES_LAST = pregnancy.getString("MENSES_LAST");//末次月经
                            Date dueday = DateUtil.getDueDate(DateUtil.strToDateLong(MENSES_LAST));//预产期
                            planJson.put("pregnancyNo",PREGNANCY_NO);
                            planJson.put("endManner",END_MANNER);
                            planJson.put("endTime",END_TIME);
                            planJson.put("mensesLast",MENSES_LAST);
                            planJson.put("expectedTime",DateUtil.dateToStrLong(dueday));
                            Date date = new Date();
                            List<PrenatalInspectorPlan> plans = prenatalInspectorPlanDao.findByPatient(patientCode);
                            if(plans==null||plans.size()==0){//判断是否已经生成产检记录
                                //预建卡还没产检,有产检就会生成产检记录,建卡接口就会有数据
                                Long days = DateUtil.getDays(dueday,date);
//                                days = days>365?0:days;//老早前的测试数据处理
                                List<PrenatalInspectorPlanLibrary> libraries = prenatalInspectorPlanLibraryDao.findByDays(days);
                                plans = new ArrayList<>();
                                PrenatalInspectorPlan plan = null;
                                for (PrenatalInspectorPlanLibrary library:libraries){
                                    plan = new PrenatalInspectorPlan();
                                    plan.setInspectionPhase(library.getInspectionPhase());
                                    plan.setStatus("0");
                                    plan.setPatient(patientCode);
                                    plan.setCzrq(date);
                                    plan.setDel("1");
                                    plan.setCheckItem(library.getCheckItem());
//                                    plan.setInspectionCode(PREGNANCY_NO);//产检号
                                    plan.setInspectionTime(DateUtil.getPrenatalInspectorDate(dueday,-library.getEndDay().intValue()));
//                                    plan.setInspectionEndTime(DateUtil.getPrenatalInspectorDate(lastMenstrualDate,library.getEndDay().intValue()));
//                                    plan.setInspectionStartTime(DateUtil.getPrenatalInspectorDate(dueday,-library.getEndDay().intValue()));
                                    plan.setName(library.getName());
                                    plan.setThisFocus(library.getThisFocus());
                                    plan.setThisNote(library.getThisNote());
                                    plans.add(plan);
                                }
                                if (plans.size()>0){
                                    prenatalInspectorPlanDao.save(plans);
                                }
                            }
                            //计算距离下次产检时间
                            Long nextExamDay = 0l;
                            for (PrenatalInspectorPlan plan:plans) {
                                Long temp = DateUtil.getDays(date,plan.getInspectionStartTime());
                                if(nextExamDay==0||nextExamDay>temp){
                                    nextExamDay = temp;
                                }
                            }
                            planJson.put("plans",plans);//待产检列表
                            planJson.put("nextExamDay",nextExamDay);//距离下次产检天数
                            planJson.put("precontractOrgName",null);//产床医院
                            re.add(planJson);
                        }
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
@ -286,7 +344,7 @@ public class PrenatalInspectorPreCardService extends BaseService {
            }
            if(data!=null&&data.size()>0){
                JSONObject exam = data.getJSONObject(data.size()-1);
                String PREGNANCY_WEEK = exam.getString("PREGNANCY_WEEK");//检查孕周
//                String PREGNANCY_WEEK = exam.getString("PREGNANCY_WEEK");//检查孕周
                String examTime = exam.getString("EXAM_TIME");//产检日期
                re = examTime;
            }
@ -382,13 +440,30 @@ public class PrenatalInspectorPreCardService extends BaseService {
     * 上传预建卡
     * @param code
     */
    public void uploadPreExam(String code){
    public String uploadPreExam(String code){
        String re = "";
        try {
            //上传预建卡
            jwMaternalChildService.SaveEhrMaternalPreFirstExamRecord(code);
            String response = jwMaternalChildService.SaveEhrMaternalPreFirstExamRecord(code);
            JSONObject preJson = JSONObject.parseObject(response);
            if(preJson.getInteger("status")!=200){
                re = preJson.getString("msg");
            }else {
                JSONObject json = preJson.getJSONObject("data");
                if("0".equals(json.getString("code"))){
                    re = json.getString("MESSAGE");
                }
            }
            if(re.contains("身份证为空,请检查")){
                re = "身份证为空,请检查";
            }else if(re.contains("操作员为空,请检查")){
                re = "操作员为空,请检查";
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return re;
    }
    /**
@ -415,115 +490,59 @@ public class PrenatalInspectorPreCardService extends BaseService {
        String re = "";
        //1、保存预建卡
        Date date = new Date();
//        Date lastMenstrualDate = preCard.getLastMenstrualDate();
        Date lastMenstrualDate = preCard.getLastMenstrualDate();
        Date dueDate = DateUtil.getDueDate(preCard.getLastMenstrualDate());
        preCard.setDel("1");
        preCard.setCode(getCode());
        preCard.setCzrq(date);
        preCard.setDueDate(DateUtil.getDueDate(preCard.getLastMenstrualDate()));//预产期
        preCard.setDueDate(dueDate);//预产期
        preCard.setStatus("0");
        preCard.setEffective("");
        preCard.setInspectionPhase("1");//检查阶段
        preCard.setUploadStatus("0");//未上传
        prenatalInspectorPreCardDao.save(preCard);
//        String patient = preCard.getPatient();
        String patient = preCard.getPatient();
        //2.更新居民信息
        //更新居民信息
//        Patient p = patientDao.findByCode(patient);
//        p.setName(preCard.getName());
//        p.setSsc(preCard.getSsc());
//        p.setBirthday(preCard.getBirthday());
//        p.setMobile(preCard.getMobile());
        return preCard.getCode();
        //2、生成待产检计划(待产检计划由获取健康信息接口生成,关联产检计划)
//        Long days = DateUtil.getDays(date,lastMenstrualDate);
//        List<PrenatalInspectorPlanLibrary> libraries = prenatalInspectorPlanLibraryDao.findByDays(days);
//        List<PrenatalInspectorPlan> plans = new ArrayList<>();
//        PrenatalInspectorPlan plan = null;
//        for (PrenatalInspectorPlanLibrary library:libraries){
//            plan = new PrenatalInspectorPlan();
//            plan.setInspectionPhase(library.getInspectionPhase());
//            plan.setStatus("0");
//            plan.setPatient(patient);
//            plan.setCzrq(date);
//            plan.setCheckItem(library.getCheckItem());
        Long days = DateUtil.getDays(dueDate,date);
        List<PrenatalInspectorPlanLibrary> libraries = prenatalInspectorPlanLibraryDao.findByDays(days);
        List<PrenatalInspectorPlan> plans = new ArrayList<>();
        PrenatalInspectorPlan plan = null;
        for (PrenatalInspectorPlanLibrary library:libraries){
            plan = new PrenatalInspectorPlan();
            plan.setInspectionPhase(library.getInspectionPhase());
            plan.setStatus("0");
            plan.setPatient(patient);
            plan.setCzrq(date);
            plan.setDel("1");
            plan.setCheckItem(library.getCheckItem());
//            plan.setInspectionCode(preCard.getCode());
//            plan.setInspectionEndTime(DateUtil.getPrenatalInspectorDate(lastMenstrualDate,library.getEndDay().intValue()));
//            plan.setInspectionStartTime(DateUtil.getPrenatalInspectorDate(lastMenstrualDate,library.getStartDay().intValue()));
//            plan.setName(library.getName());
//            plan.setThisFocus(library.getThisFocus());
//            plan.setThisNote(library.getThisNote());
//
            plan.setInspectionTime(DateUtil.getPrenatalInspectorDate(dueDate,-library.getEndDay().intValue()));
            plan.setName(library.getName());
            plan.setThisFocus(library.getThisFocus());
            plan.setThisNote(library.getThisNote());
//            if("1".equals(plan.getInspectionPhase())){
//                SignFamily jiating = familyContractService.findByPatientByType(patient, 2);
//                if(jiating!=null){
//                    plan.setSignHospital(jiating.getHospital());
//                }
//            }
//
//            plans.add(plan);
//        }
//        if (plans.size()>0){
//            prenatalInspectorPlanDao.save(plans);
//        }
    }
    /**
     * 产检提醒(1预约提醒,2就诊提醒)
     * 1、当居民已有经医生确认过的下一次产检时间,则距离下一次产检前7天(保证居民可自行预约),发出产检预约提醒通知。点击该消息,进入预约页面
     * 2、当居民已有经医生确认过的下一次产检时间,则距离下一次产检前1天,发出产检就诊提醒,提醒居民就诊。点击该消息,进入预约记录页面
     */
    public void sendPrenatalInspectorRemind(){
        System.out.println("产检计划---running");
        List<PrenatalInspectorPlan> planList = prenatalInspectorPlanDao.findWxTipList();
        for (PrenatalInspectorPlan plan:planList){
            try {
                Patient patient = patientDao.findByCode(plan.getPatient());
                String openId = patient.getOpenid();
                String name = patient.getName();
                String patientCode = patient.getCode();
                if(StringUtils.isNotBlank(openId)){
                    Long day = DateUtil.getDays(plan.getInspectionTime(),DateUtil.getNowDateShort());
                    org.json.JSONObject json = new org.json.JSONObject();
                    if(day==7){
                        //产检提醒
                        json.put("remark","产检内容以医生实际检查为准。点击进行预约");
                        json.put("first",name+",您好!您和您的宝宝需要进行产检啦~请及时预约产检,如已预约,请忽略");
                        if("1".equals(plan.getInspectionPhase())){
                            if(StringUtils.isNotBlank(plan.getSignHospital())){
                                json.put("url","wdyy/html/hospital-dept.html?openid="+openId+"&toUser="+patientCode+"&toName="+name+"&hospitalId="+plan.getSignHospital());
                            }else {
                                json.put("url","wdyy/html/appointment-register.html?openid="+openId+"&toUser="+patientCode+"&toName="+name+"&orderType=1");
                            }
                        }else {
                            json.put("url","wdyy/html/appointment-register.html?openid="+openId+"&toUser="+patientCode+"&toName="+name);
                        }
                        json.put("keyword1","产检提醒");
                        String keyword2 = DateUtil.getStringDateShort()+"\n产检内容:"+plan.getCheckItem();
                        json.put("keyword2",keyword2);
                        pushMsgTask.sendWeixinMessage(accessTokenUtils.getAccessToken(), 18, openId, name, json);
                    }else if(day==1){
                        //产检就诊提醒
                        json.put("remark","产检内容以医生实际检查为准。点击查看预约记录");
                        json.put("first",name+",您好!您和您的宝宝即将进行产检啦~请按时就诊,如已就诊,请忽略");
                        json.put("url","wdyy/html/my-appointment.html?openid="+openId+"&toUser="+patientCode+"&toName="+name);
                        json.put("keyword1","产检就诊提醒");
                        String keyword2 = DateUtil.getStringDateShort()+"\n产检内容:"+plan.getCheckItem();
                        json.put("keyword2",keyword2);
                        pushMsgTask.sendWeixinMessage(accessTokenUtils.getAccessToken(), 18, openId, name, json);
                    }
                }
            }catch (Exception e){
                System.out.println("微信提醒发送失败");
                e.printStackTrace();
            }
            plans.add(plan);
        }
        if (plans.size()>0){
            prenatalInspectorPlanDao.save(plans);
        }
        return preCard.getCode();
    }
}

+ 11 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/third/jw/JwMaternalChildService.java

@ -7,10 +7,12 @@ 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.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * Created by yeshijie on 2017/9/25.
@ -24,6 +26,8 @@ public class JwMaternalChildService {
    private String jwUrl;
    @Autowired
    private HttpClientUtil httpClientUtil;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    /**
     * 获取孕妇建卡信息
@ -38,6 +42,13 @@ public class JwMaternalChildService {
        params.add(new BasicNameValuePair("idcard", idcard));
        params.add(new BasicNameValuePair("hospital", hospital));
        if(idcard.contains("352124761015122-")){
            String temp[] = idcard.split("-");
            String sql = "SELECT response FROM wlyy_zy_push_log_detail WHERE id = "+temp[1];
            List<Map<String ,Object>> list = jdbcTemplate.queryForList(sql);
            return list.get(0).get("response").toString();
        }
        String response = httpClientUtil.post(url, params, "UTF-8");
        return response;

+ 8 - 5
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/prenatalInspector/PrenatalInspectorContoller.java

@ -9,6 +9,7 @@ import com.yihu.wlyy.web.BaseController;
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.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
@ -40,8 +41,11 @@ public class PrenatalInspectorContoller extends BaseController{
            if("-1".equals(code)){
                return error(-1,"居民未签约,无法添加预建卡信息");
            }
            preCardService.uploadPreExam(code);
            String re = preCardService.uploadPreExam(code);
            if(StringUtils.isNotBlank(re)){
                System.out.println("re======"+re);
                return error(-1,re);
            }
            return success("预建卡保存成功!");
        }catch (Exception e){
            error(e);
@ -95,8 +99,8 @@ public class PrenatalInspectorContoller extends BaseController{
    @RequestMapping(value = "preCardList", method = RequestMethod.GET)
    public String preCardList(){
        try {
//            JSONArray jsonArray = preCardService.preCardList(getUID());
            JSONArray jsonArray = preCardService.preCardList("915cca0a-5b1d-11e6-8344-fa163e8aee56");
            JSONArray jsonArray = preCardService.preCardList(getUID());
//            JSONArray jsonArray = preCardService.preCardList("915cca0a-5b1d-11e6-8344-fa163e8aee56");
            return write(200, "查询成功!", "list", jsonArray);
        }catch (Exception e){
            error(e);
@ -110,7 +114,6 @@ public class PrenatalInspectorContoller extends BaseController{
            @RequestParam(value = "inspectionCode", required = true) String inspectionCode){
        try {
            JSONArray jsonArray = preCardService.planList(inspectionCode);
            preCardService.sendPrenatalInspectorRemind();
            return write(200, "查询成功!", "list", jsonArray);
        }catch (Exception e){
            error(e);