瀏覽代碼

Merge branch 'dev' of zd_123/patient-co-management into dev

yeshijie 7 年之前
父節點
當前提交
776c99b420

+ 165 - 4
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/prescription/PrescriptionService.java

@ -24,12 +24,15 @@ import com.yihu.wlyy.service.app.message.MessageService;
import com.yihu.wlyy.service.third.jw.JwPrescriptionService;
import com.yihu.wlyy.task.PushMsgTask;
import com.yihu.wlyy.util.CommonUtil;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.MessageType;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
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.orm.jpa.JpaTransactionManager;
import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionDefinition;
@ -37,10 +40,7 @@ import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * Created by chenweida on 2017/7/27.
@ -80,6 +80,12 @@ public class PrescriptionService extends BaseService {
    private FollowUpDao followUpDao;
    @Autowired
    private MessageService messageService;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    //健康问题 高血压
    private static final String gxy = "HP0093";
    //健康问题 糖尿病
    private static final String tnb = "HP0047";
    /**
     *  获取处方信息
@ -390,4 +396,159 @@ public class PrescriptionService extends BaseService {
        }
        return statusObj;
    }
    /**
     * 长处方统计-点击柱状图获取详情
     * @param interval
     * @param date
     * @param disease
     * @param type
     * @return
     */
    public List<Map<String,Object>> getPrescriptionTotalDetailTime(int interval,String date,String disease,String type){
        //如果是日就是按一天,周就是从本周一到本周日,月就是本月第一天到本月最后一天
        String startTime = "";
        String endTime = "";
        if (interval==1){
            startTime = date+" 00:00:00";
            endTime = " 23:59:59";
        }else if (interval==2){
            startTime = DateUtil.getMondayOfThisDate(DateUtil.strToDate(date));
            endTime = DateUtil.getSundayOfThisDate(DateUtil.strToDate(date));
            startTime += " 00:00:00";
            endTime += "23:59:59";
        }else if (interval==3){
            startTime = DateUtil.getFristDayOfMonthThisDate(DateUtil.strToDate(date+"-01"));
            endTime = DateUtil.getLastDayOfMonthThisDate(DateUtil.strToDate(date+"-01"));
            startTime += " 00:00:00";
            endTime += " 23:59:59";
        }
        String sql = "SELECT * FROM wlyy_prescription p ";
        if(StringUtils.isNotBlank(disease)){
            sql += " JOIN wlyy_prescription_diagnosis d ON  d.prescription_code = p.code WHERE d.health_problem ='"+disease+"' ";
        }else{
            sql +=" WHERE 1=1 ";
        }
        if ("2".equals(type)){//已完成
            sql += " AND p.`status` = "+PrescriptionLog.PrescriptionLogStatus.finish.getValue() ;
        }else if ("3".equals(type)){//居民取消
            sql += " AND p.`status` = "+PrescriptionLog.PrescriptionLogStatus.patient_canel.getValue() ;
        }else if ("4".equals(type)){//审核不通过
            sql += " AND p.`status` = "+PrescriptionLog.PrescriptionLogStatus.no_reviewed.getValue() ;
        }else if ("5".equals(type)){//进行中
            sql += " AND  p.`status` < " + PrescriptionLog.PrescriptionLogStatus.finish.getValue() +
                    " AND p.`status`>= " + PrescriptionLog.PrescriptionLogStatus.revieweding.getValue() ;
        }else if ("6".equals(type)){//其他原因取消
            sql += " AND p.`status` <= "+PrescriptionLog.PrescriptionLogStatus.pay_outtime.getValue() ;
        }
        sql += " AND p.create_time <= ? " +
                " AND p.create_time >= ? ";
        List<Map<String,Object>> resultList = jdbcTemplate.queryForList(sql,new Object[]{endTime,startTime});
        return resultList;
    }
    /**
     * 长处方统计--长处方记录筛选
     * @param level
     * @param area
     * @param disease
     * @param status
     * @param type
     * @param startTime
     * @param endTime
     * @return
     */
    public List<Map<String,Object>> getPrescriptionByCondition(String level, String area, String disease, String status, String type, String startTime,String endTime){
        String sql = "SELECT * FROM wlyy_prescription p ";
        //判断疾病
        if(StringUtils.isNotBlank(disease)){
            if ("1".equals(disease)){
                disease = gxy;
            }else if ("2".equals(disease)){
                disease = tnb;
            }
            sql += " JOIN wlyy_prescription_diagnosis d ON  d.prescription_code = p.code WHERE d.health_problem ='"+disease+"' ";
        }else{
            sql +=" WHERE 1=1 ";
        }
        //判断状态
        if ("2".equals(status)){//已完成
            sql += " AND p.`status` = "+PrescriptionLog.PrescriptionLogStatus.finish.getValue() ;
        }else if ("3".equals(status)){//居民取消
            sql += " AND p.`status` = "+PrescriptionLog.PrescriptionLogStatus.patient_canel.getValue() ;
        }else if ("4".equals(status)){//审核不通过
            sql += " AND p.`status` = "+PrescriptionLog.PrescriptionLogStatus.no_reviewed.getValue() ;
        }else if ("5".equals(status)){//进行中
            sql += " AND  p.`status` < " + PrescriptionLog.PrescriptionLogStatus.finish.getValue() +
                    " AND p.`status`>= " + PrescriptionLog.PrescriptionLogStatus.revieweding.getValue() ;
        }else if ("6".equals(status)){//其他原因取消
            sql += " AND p.`status` <= "+PrescriptionLog.PrescriptionLogStatus.pay_outtime.getValue() ;
        }
        //判断取药方式
        if (StringUtils.isNotBlank(type)){
            //类型1.自取,2.快递配送,3.健管师配送
            if("1".equals(type)){
                sql +=" AND p.dispensary_type ="+type;
            }else if("2".equals(type)){
                sql +=" AND p.dispensary_type ="+type;
            }else if("3".equals(type)){
                sql +=" AND p.dispensary_type ="+type;
            }
        }
        //市区
        if("4".equals(level)){
            //市区无过滤
            //区级
        }else if("3".equals(level)){
            sql += " AND LEFT(p.hospital, 6) = '"+area+"' ";
            //机构
        }else if("2".equals(level)){
            sql += "AND p.hospital = '"+area+"' ";
        }
        List<Map<String,Object>> resultList = new ArrayList<>();
        if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)){
            startTime += " 00:00:00";
            endTime += " 23:59:59";
            sql += " AND p.create_time <= ? " +
                    " AND p.create_time >= ? ";
            resultList = jdbcTemplate.queryForList(sql,new Object[]{endTime,startTime});
        }else{
            resultList = jdbcTemplate.queryForList(sql);
        }
        return resultList;
    }
    /**
     * 长处方统计--上方模糊搜索
     * @param keyWord
     * @return
     */
    public List<Map<String,Object>> getPrescriptionByKeyWord(String keyWord){
        String sql = "SELECT * FROM wlyy_prescription p where 1=1";
        //判断关键字
        if (StringUtils.isNotBlank(keyWord)){
            sql += " AND (p.patient_name like '%"+keyWord+"%' or p.doctor_name like '%"+keyWord+"%')";
        }
        List<Map<String,Object>> resultList = jdbcTemplate.queryForList(sql);
        return resultList;
    }
    /**
     * 长处方统计--点击查看详情
     * @param code
     * @return
     */
    public Map<String,Object> getPrescriptionByCode(String code){
        Map<String,Object> rsMap = new HashedMap();
        String sql ="SELECT p.code,p.patient_name,p.doctor_name,p.hospital_name,p.dispensary_type,d.health_problem " +
                "FROM wlyy_prescription p LEFT JOIN wlyy_prescription_diagnosis d ON  d.prescription_code = p.code " +
                "WHERE p.code=? ";
        List<Map<String,Object>> resultList = jdbcTemplate.queryForList(sql,new Object[]{code});
        if (resultList!=null && resultList.size()>0){
            rsMap = resultList.get(0);
        }
        return rsMap;
    }
}

+ 5 - 9
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsService.java

@ -5142,12 +5142,13 @@ public class StatisticsService extends BaseService {
            startTime = DateUtil.dateToStr(startDate, "YYYY-MM-dd HH:mm:ss");
            endTime = DateUtil.dateToStr(endDate, "YYYY-MM-dd HH:mm:ss");
        }else if (interval==3){
            sql = "SELECT count(1) AS count,LEFT(p.create_time,7) AS month  FROM wlyy_prescription p ";
            sql = "SELECT count(1) AS count,LEFT(p.create_time,7) AS date  FROM wlyy_prescription p ";
            //String monthNumber = dd.get(Calendar.MONTH);
            for (int i = 1; i < 7; i++) {
                Map<String, Object> mc = new HashedMap();
                SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM");
                String date = sdf2.format(dd.getTime());
                mc.put("month", date);
                mc.put("date", date);
                mc.put("count", 0.0D);
                dd.add(Calendar.MONTH, -1);
                rs.add(mc);
@ -5205,13 +5206,8 @@ public class StatisticsService extends BaseService {
            String keyDb = "";
            while (iterator.hasNext()){
                Map<String,Object> ml = ( Map<String,Object>)iterator.next();
                if (interval!=3){
                    key = (String)m.get("date");
                    keyDb = (String)ml.get("date");
                }else{
                    key = (String)m.get("month");
                    keyDb = (String)ml.get("month");
                }
                key = (String)m.get("date");
                keyDb = (String)ml.get("date");
                if(key.equals(keyDb)){
                    m.put("count",ml.get("count"));

+ 2 - 53
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statisticsES/StatisticsESService.java

@ -3962,7 +3962,7 @@ public class StatisticsESService {
                Map<String, Object> mc = new HashedMap();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
                String date = sdf.format(dd.getTime());
                mc.put("month", date);
                mc.put("date", date);
                mc.put("count", 0.0D);
                dd.add(Calendar.MONTH, -1);
                rs.add(mc);
@ -3985,11 +3985,10 @@ public class StatisticsESService {
                if (saveModel.getQuotaDate() != null) {
                    String key = "";
                    String EsKey ="";
                    key=String.valueOf(m.get("date"));
                    if (interval != 3){
                        key=String.valueOf(m.get("date"));
                        EsKey = DateUtil.dateToStr(saveModel.getQuotaDate(),"yyyy-MM-dd");
                    }else {
                        key=String.valueOf(m.get("month"));
                        EsKey = DateUtil.changeQuotaDate(saveModel.getQuotaDate());
                    }
                    if (key.equals(EsKey)) {
@ -4777,56 +4776,6 @@ public class StatisticsESService {
        }
    }
    /**
     * 订单统计-点击柱状图获取详情
     * @param interval
     * @param date
     * @param disease
     * @param type
     * @return
     */
    public List<Map<String,Object>> getPrescriptionTotalDetailTime(int interval,String date,String disease,String type){
        //如果是日就是按一天,周就是从本周一到本周日,月就是本月第一天到本月最后一天
        String startTime = "";
        String endTime = "";
        if (interval==1){
            startTime = date+" 00:00:00";
            endTime = " 23:59:59";
        }else if (interval==2){
            startTime = DateUtil.getMondayOfThisDate(DateUtil.strToDate(date));
            endTime = DateUtil.getSundayOfThisDate(DateUtil.strToDate(date));
            startTime += " 00:00:00";
            endTime += "23:59:59";
        }else if (interval==3){
            startTime = DateUtil.getFristDayOfMonthThisDate(DateUtil.strToDate(date+"-01"));
            endTime = DateUtil.getLastDayOfMonthThisDate(DateUtil.strToDate(date+"-01"));
            startTime += " 00:00:00";
            endTime += " 23:59:59";
        }
        String sql = "SELECT * FROM wlyy_prescription p ";
        if(StringUtils.isNotBlank(disease)){
            sql += " JOIN wlyy_prescription_diagnosis d ON  d.prescription_code = p.code WHERE d.health_problem ='"+disease+"' ";
        }else{
            sql +=" WHERE 1=1 ";
        }
        if ("2".equals(type)){//已完成
            sql += " AND p.`status` = "+PrescriptionLog.PrescriptionLogStatus.finish.getValue() ;
        }else if ("3".equals(type)){//居民取消
            sql += " AND p.`status` = "+PrescriptionLog.PrescriptionLogStatus.patient_canel.getValue() ;
        }else if ("4".equals(type)){//审核不通过
            sql += " AND p.`status` = "+PrescriptionLog.PrescriptionLogStatus.no_reviewed.getValue() ;
        }else if ("5".equals(type)){//进行中
            sql += " AND  p.`status` < " + PrescriptionLog.PrescriptionLogStatus.finish.getValue() +
                    " AND p.`status`>= " + PrescriptionLog.PrescriptionLogStatus.revieweding.getValue() ;
        }else if ("6".equals(type)){//其他原因取消
            sql += " AND p.`status` <= "+PrescriptionLog.PrescriptionLogStatus.pay_outtime.getValue() ;
        }
        sql += " AND p.create_time <= ? " +
                " AND p.create_time >= ? ";
        List<Map<String,Object>> resultList = jdbcTemplate.queryForList(sql,new Object[]{endTime,startTime});
        return resultList;
    }
    /**
     * 长处方记录筛选
     * @param level

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

@ -17,13 +17,17 @@ import com.yihu.wlyy.service.app.team.AdminTeamService;
import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.service.third.jw.JwPrescriptionService;
import com.yihu.wlyy.service.third.jw.ZyDictService;
import com.yihu.wlyy.util.DateUtil;
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.boot.actuate.endpoint.jmx.DataEndpointMBean;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
/**
@ -616,4 +620,102 @@ public class PrescriptionInfoController extends BaseController {
        }
    }
    /**
     *长处方统计-点击柱状图获取详情
     * @Author zhangdan
     * @param interval
     * @param date
     * @param disease
     * @param type
     * @return
     */
    @RequestMapping(value = "/getPrescriptionTotalDetailTime", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation("长处方统计-点击柱状图获取详情")
    public String getPrescriptionTotalDetailTime(
            @RequestParam(required = true)int interval,
            @RequestParam(required = true)String date,
            @ApiParam(name="disease", value="疾病类型") @RequestParam(required = false)String disease,
            @ApiParam(name="type", value="类型1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消") @RequestParam(required = true)String type){
        try{
            return write(200, "查询成功", "data", prescriptionService.getPrescriptionTotalDetailTime(interval,date,disease,type));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
        }
    }
    /**
     * 长处方统计--长处方记录筛选
     * @Author zhangdan
     * @param level 地区级别
     * @param area 地区编号
     * @param disease 疾病 高血压1 糖尿病2
     * @param status 状态 1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消(没有选择的情况传1)
     * @param type 取药方式 1.自取,2快递配送,3健管师配送
     * @param startTime 开始日期
     * @param endTime 结束日期
     * @return
     */
    @RequestMapping(value = "/getPrescriptionByCondition", method = RequestMethod.GET)
    @ResponseBody
    public String getPrescriptionByCondition(
            @RequestParam(required = true)String level,
            @RequestParam(required = true)String area,
            @RequestParam(required = false)String disease,
            @RequestParam(required = false,defaultValue = "1")String status,
            @RequestParam(required = false)String type,
            @RequestParam(required = false)String startTime,
            @RequestParam(required = false)String endTime){
        try{
            if (StringUtils.isNotBlank(startTime)){
                if (StringUtils.isNotBlank(endTime)){
                    Date startDate = DateUtil.strToDate(startTime,"yyyy-MM-dd");
                    Date endDate = DateUtil.strToDate(endTime,"yyyy-MM-dd");
                    if (startDate.after(endDate)){
                        return  error(-2,"参数错误");
                    }
                }
            }
            return write(200, "查询成功", "data", prescriptionService.getPrescriptionByCondition(level,area,disease,status,type,startTime,endTime));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
        }
    }
    /**
     * 长处方统计--上方模糊搜索
     * @Author zhangdan
     * @param keyWord 模糊搜索关键字
     * @return
     */
    @RequestMapping(value = "/getPrescriptionByKeyWord", method = RequestMethod.GET)
    @ResponseBody
    public String getPrescriptionByKeyWord(
            @RequestParam(required = true)String keyWord){
        try{
            return write(200, "查询成功", "data", prescriptionService.getPrescriptionByKeyWord(keyWord));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
        }
    }
    /**
     * 长处方统计--点击查看详情
     * @param code
     * @return
     */
    @RequestMapping(value = "/getPrescriptionByCode", method = RequestMethod.GET)
    @ResponseBody
    public String getPrescriptionByCode(@RequestParam(required = true)String code){
        try{
            return write(200, "查询成功", "data", prescriptionService.getPrescriptionByCode(code));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
        }
    }
}

+ 2 - 60
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/EsStatisticsController.java

@ -1737,7 +1737,7 @@ public class EsStatisticsController extends BaseController {
                                                @ApiParam(name="area", value="级别对应编码") @RequestParam(required = true)String area,
                                                @ApiParam(name="disease", value="疾病类型") @RequestParam(required = false)String disease,
                                                @ApiParam(name="type", value="类型1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消") @RequestParam(required = true)String type,
                                                @ApiParam(name="interval",value ="时间类型:1日2周3月")@RequestParam(required = false,defaultValue = "1")int interval){
                                                @ApiParam(name="interval",value ="时间类型:1日2周3月")@RequestParam(required = true)int interval){
        try{
            return write(200, "查询成功", "data", statisticsService.getPrescriptionTotalHistogram(level,area,disease,type,interval));
@ -1842,7 +1842,7 @@ public class EsStatisticsController extends BaseController {
                                                      @ApiParam(name="area", value="级别编码") @RequestParam(required = true)String area,
                                                      @ApiParam(name="disease", value="疾病") @RequestParam(required = false)String disease,
                                                      @ApiParam(name="type", value="1.自取,2.快递配送,3.健管师配送") @RequestParam(required = true)String type,
                                                      @ApiParam(name="interval",value ="时间类型:1日2周3月")@RequestParam(required = false,defaultValue = "1")int interval){
                                                      @ApiParam(name="interval",value ="时间类型:1日2周3月")@RequestParam(required = true)int interval){
        try{
            return write(200, "查询成功", "data", statisticsESService.getPrescriptionDispatchingHistogram(elasticsearchUtil.changeLevel(Integer.valueOf(level)),area,disease,type,interval));
        } catch (Exception e) {
@ -2064,63 +2064,5 @@ public class EsStatisticsController extends BaseController {
            return error(-1, "查询失败");
        }
    }
    /**
     *订单统计-点击柱状图获取详情
     * @param interval
     * @param date
     * @param disease
     * @param type
     * @return
     */
    @RequestMapping("/getPrescriptionTotalDetailTime")
    @ResponseBody
    @ApiOperation("订单统计-点击柱状图获取详情")
    public String getPrescriptionTotalDetailTime(
            @RequestParam(required = true)int interval,
            @RequestParam(required = true)String date,
            @ApiParam(name="disease", value="疾病类型") @RequestParam(required = false)String disease,
            @ApiParam(name="type", value="类型1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消") @RequestParam(required = true)String type){
        try{
            return write(200, "查询成功", "data", statisticsESService.getPrescriptionTotalDetailTime(interval,date,disease,type));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
        }
    }
    /**
     * 长处方记录筛选
     * @param level 地区级别
     * @param area 地区编号
     * @param disease 疾病
     * @param status 状态 1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消(没有选择的情况传1)
     * @param type 取药方式 1.自取,2快递配送,3健管师配送
     * @param startTime 开始日期
     * @param endTime 结束日期
     * @return
     */
    @RequestMapping("/getPrescriptionByCondition")
    @ResponseBody
    public String getPrescriptionByCondition(
            @RequestParam(required = false)String keyWord,
            @RequestParam(required = true)String level,
            @RequestParam(required = true)String area,
            @RequestParam(required = false)String disease,
            @RequestParam(required = false,defaultValue = "1")String status,
            @RequestParam(required = false)String type,
            @RequestParam(required = false)String startTime,
            @RequestParam(required = false)String endTime){
        try{
            if (StringUtils.isNotBlank(startTime)){
            }
            return write(200, "查询成功", "data", statisticsESService.getPrescriptionByCondition(keyWord,level,area,disease,status,type,startTime,endTime));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
        }
    }
    /*==================================版本1.4.1统计优化结束 end=====================================*/
}