Browse Source

账号申诉系统消息

wujunjie 7 years ago
parent
commit
367d7cbdf1
19 changed files with 1291 additions and 960 deletions
  1. 2 1
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/controller/manager/feedback/FeedbackController.java
  2. 62 47
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/manager/feedback/FeedbackService.java
  3. 16 12
      patient-co-manage/wlyy-manage/src/main/resources/application.yml
  4. 12 2
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/appeal/appeal_detail.jsp
  5. 26 25
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/appeal/appeal_detail_js.jsp
  6. 15 7
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/appeal/appeal_list_js.jsp
  7. 104 27
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/feedback/feeback_detail.jsp
  8. 59 2
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/feedback/feedback_detail_js.jsp
  9. 17 7
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/feedback/feedback_list_js.jsp
  10. 1 1
      patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/convert/ConvertHelper.java
  11. 64 33
      patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/convert/wlyy/DiseaseConvert.java
  12. 5 1
      patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/service/ExtractDataService.java
  13. 6 6
      patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/CurrentDayAllQuotaJob.java
  14. 798 756
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statisticsES/StatisticsESService.java
  15. 25 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/third/fzzb/HealthEducationArticleService.java
  16. 15 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/ElasticsearchUtil.java
  17. 22 4
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/health/DoctorHealthEduArticleController.java
  18. 34 27
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/EsStatisticsController.java
  19. 8 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/StatisticsController.java

+ 2 - 1
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/controller/manager/feedback/FeedbackController.java

@ -118,7 +118,8 @@ public class FeedbackController extends BaseController {
    public String dealAppeal(@RequestParam(required = true,value="id") Long id,
                             @RequestParam(required = true,value="result") String result){
        try {
            feedbackService.dealFeedback(id,result);
            Feedback feedback = feedbackService.dealFeedback(id,result);
            feedbackService.sendMsg(feedback);
            return write(200,"操作成功!");
        }catch (Exception e){
            error(e);

+ 62 - 47
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/manager/feedback/FeedbackService.java

@ -1,7 +1,6 @@
package com.yihu.wlyy.service.manager.feedback;
import com.yihu.wlyy.entity.Doctor;
import com.yihu.wlyy.entity.Followup;
import com.yihu.wlyy.entity.Message;
import com.yihu.wlyy.entity.Patient;
import com.yihu.wlyy.entity.feedback.Feedback;
@ -10,6 +9,7 @@ import com.yihu.wlyy.repository.MessageDao;
import com.yihu.wlyy.repository.PatientDao;
import com.yihu.wlyy.repository.feedback.FeedbackDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.HttpClientUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.NameValuePair;
@ -42,6 +42,8 @@ public class FeedbackService extends BaseService {
    private DoctorDao doctorDao;
    @Value("${wlyyService.api}")
    private String wlyyService;
    @Value("${image.imgUrlDomain}")
    private String imgUrlDomain;
    @Autowired
    private MessageDao messageDao;
@ -148,8 +150,13 @@ public class FeedbackService extends BaseService {
        map.put("name", name);
        map.put("identity", identity);
        map.put("contact", contact);
        map.put("phone", feedback.getPhone());
        map.put("idcard", feedback.getIdcard());
        map.put("result", feedback.getResult());
        map.put("createTime", DateUtil.dateToStrLong(feedback.getCreateTime()));
        map.put("description", description);
        map.put("images", images);
        map.put("imgUrlDomain", imgUrlDomain);
        if (status == 0) {
            feedbackDao.modifyFeedbackStatus(id, 1);
        }
@ -173,10 +180,16 @@ public class FeedbackService extends BaseService {
     * @param result
     * @throws Exception
     */
    public void dealFeedback(Long id, String result) throws Exception {
    public Feedback dealFeedback(Long id, String result) throws Exception {
        Feedback feedback = feedbackDao.findFeedbackById(id);
        feedback.setResult(result);
        feedback.setStatus(2);
        feedbackDao.save(feedback);
        return feedback;
    }
    public void sendMsg(Feedback feedback){
        String result = feedback.getResult();
        int identity = feedback.getIdentity();
        int type = feedback.getType();
        String typeName = null;
@ -195,57 +208,59 @@ public class FeedbackService extends BaseService {
                typeName = "其他";
                break;
        }
        if (identity == 1) {
            //wlyy给患者发送模板消息
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try{
            if (identity == 1) {
                //wlyy给患者发送模板消息
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Patient patient = patientDao.findByCode(creater);
            String patientName = patient.getName();
            String patientOpendID = patient.getOpenid();
            if (StringUtils.isNotEmpty(patientOpendID)) {
                String url = wlyyService + "/patient/feedback/sendTemplate";
                List<NameValuePair> params = new ArrayList<>();
                params.add(new BasicNameValuePair("toUser", patientOpendID));
                params.add(new BasicNameValuePair("url", null));
                params.add(new BasicNameValuePair("first", "您好!您提交的意见反馈已处理"));
                params.add(new BasicNameValuePair("remark", "感谢你的意见"));
                Patient patient = patientDao.findByCode(creater);
                String patientName = patient.getName();
                String patientOpendID = patient.getOpenid();
                if (StringUtils.isNotEmpty(patientOpendID)) {
                    String url = wlyyService + "/patient/feedback/sendTemplate";
                    List<NameValuePair> params = new ArrayList<>();
                    params.add(new BasicNameValuePair("toUser", patientOpendID));
                    params.add(new BasicNameValuePair("url", null));
                    params.add(new BasicNameValuePair("first", "您好!您提交的意见反馈已处理"));
                    params.add(new BasicNameValuePair("remark", "感谢你的意见"));
                    SimpleDateFormat formatDate = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
                    String newDate = formatDate.format(new Date());
                    String keywords = patientName + "," + typeName + "," + result + "," + newDate;
                    params.add(new BasicNameValuePair("keywords", keywords));
                    HttpClientUtil.post(url, params, "UTF-8");
                }
            } else if (identity == 2) {
                SimpleDateFormat formatDate = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
                String newDate = formatDate.format(new Date());
                String keywords = patientName + "," + typeName + "," + result + "," + newDate;
                params.add(new BasicNameValuePair("keywords", keywords));
                String title = "新增系统消息";
                String content = "您在" + newDate + "提交的意见反馈已处理,您可点此查看处理结果";
                Message message = new Message();
                message.setType(10);
                message.setCode(UUID.randomUUID().toString());
                message.setCzrq(new Date());
                message.setCreateTime(new Date());
                message.setContent(content);
                message.setRead(1);//设置未读
                message.setReceiver(creater);//设置接受医生的code
                message.setSender("system");//设置发送的用户
                message.setTitle(title);
                message.setReadonly(1);//是否只读消息
                //wlyy给医生发送系统消息
                Doctor doctor = doctorDao.findByCode(creater);
                String doctorOpenID = doctor.getOpenid();
                String url = wlyyService + "/patient/feedback/sendMessage";
                List<NameValuePair> params = new ArrayList<>();
                params.add(new BasicNameValuePair("receiver", creater));
                params.add(new BasicNameValuePair("title", title));
                params.add(new BasicNameValuePair("content",content));
                HttpClientUtil.post(url, params, "UTF-8");
                messageDao.save(message);
            }
        } else if (identity == 2) {
            SimpleDateFormat formatDate = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
            String newDate = formatDate.format(new Date());
            String title = "新增系统消息";
            String content = "您在" + newDate + "提交的意见反馈已处理,您可点此查看处理结果";
            Message message = new Message();
            message.setType(10);
            message.setCode(UUID.randomUUID().toString());
            message.setCzrq(new Date());
            message.setCreateTime(new Date());
            message.setContent(content);
            message.setRead(1);//设置未读
            message.setReceiver(creater);//设置接受医生的code
            message.setSender("system");//设置发送的用户
            message.setTitle(title);
            message.setReadonly(1);//是否只读消息
            //wlyy给医生发送系统消息
            Doctor doctor = doctorDao.findByCode(creater);
            String doctorOpenID = doctor.getOpenid();
            String url = wlyyService + "/patient/feedback/sendMessage";
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("receiver", creater));
            params.add(new BasicNameValuePair("title", title));
            params.add(new BasicNameValuePair("content",content));
            HttpClientUtil.post(url, params, "UTF-8");
            messageDao.save(message);
        }catch (Exception e){
            e.printStackTrace();
        }
        feedbackDao.save(feedback);
    }
}

+ 16 - 12
patient-co-manage/wlyy-manage/src/main/resources/application.yml

@ -51,17 +51,17 @@ spring:
  profiles: dev
  datasource:
    wlyy:
      url: jdbc:mysql://172.19.103.77:3306/wlyy?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: root
      password: 123456
      url: jdbc:mysql://172.19.103.85:3306/wlyy?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: linzhou
      password: linzhou
    device:
      url: jdbc:mysql://172.19.103.77:3306/device?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: root
      password: 123456
      url: jdbc:mysql://172.19.103.85:3306/device?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: linzhou
      password: linzhou
    medicine:
      url: jdbc:mysql://172.19.103.77:3306/medicine?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: root
      password: 123456
      url: jdbc:mysql://172.19.103.85:3306/medicine?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: linzhou
      password: linzhou
  sms: # SMS短信配置
    yihu_sms_url: https://smsapi.ums86.com:9600/sms/Api/Send.do
    yihu_sms_code: 229336
@ -77,7 +77,8 @@ doctorAssistant:
  api: http://192.168.131.113:8080
wlyyService:
  api: http://10.95.22.10:8011/wlyy/
image:
  imgUrlDomain: http://172.19.103.54/
---
spring:
  profiles: test
@ -111,7 +112,8 @@ doctorAssistant:
  api: http://172.19.103.88:10090/wlyy
wlyyService:
  api: http://ehr.yihu.com/wlyy/
image:
  imgUrlDomain: http://172.19.103.54/
---
spring:
  profiles: prod
@ -142,4 +144,6 @@ yueren:
doctorAssistant:
  api: http://www.xmtyw.cn/assistant
wlyyService:
  api: http://www.xmtyw.cn/wlyy/
  api: http://www.xmtyw.cn/wlyy/
image:
  imgUrlDomain: http://www.xmtyw.cn/

+ 12 - 2
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/appeal/appeal_detail.jsp

@ -137,10 +137,20 @@
                <input class="fd-input" type="text" id="phone" class="ajax min-length-2 validate-special-char"  />
            </div>
        </div>
        <div class="m-form-group" style="">
            <label class="label_title fd-label">身份证号:</label>
            <div class="l-text-wrapper m-form-control">
                <input class="fd-input" type="text" id="idcard" class="ajax min-length-2 validate-special-char"  />
            </div>
            <label class="label_title fd-label">申诉时间:</label>
            <div class="l-text-wrapper m-form-control">
                <input class="fd-input" type="text" id="createTime" class="ajax min-length-2 validate-special-char"  />
            </div>
        </div>
        <div class="m-form-group">
            <label class="label_title fd-padl fd-label">申诉详情描述:</label>
            <div class="fd-pd">
                <input class="fd-input fd-autoh" type="text" id="description" class="required useTitle ajax f-w240 validate-special-char" />
                <textarea class="fd-input fd-autoh" id="description" style="width: 600px; height: 100px"></textarea>
            </div>
        </div>
        <div class="fd-group">
@ -152,7 +162,7 @@
        <div class="m-form-group ad-result" id="dealResult" style="display: none;">
            <label class="label_title ad-label">处理结果:</label>
            <div class="ad-pd">
                <textarea class="fd-input fd-autoh"  id="result1"></textarea>
                <textarea class="fd-input fd-autoh"  id="result1" style="width: 600px; height: 100px"></textarea>
            </div>
        </div>
        <div class="m-form-group" style="text-align: center;margin-top:30px;">

+ 26 - 25
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/appeal/appeal_detail_js.jsp

@ -28,6 +28,8 @@
            $name: $("#name"),//姓名
            $identity:$("#identity"),//身份
            $phone:$("#phone"),//联系方式
            $createTime:$("#createTime"),//时间
            $idcard:$("#idcard"),//身份证
            $description:$("#description"),//申诉详情
            $result:$("#result1"),//处理结果
            $btndeal: $("#deal"),//处理按钮
@ -60,6 +62,8 @@
                                    _this.$identity.val("医生")
                                }
                                _this.$phone.val(data.phone);
                                _this.$idcard.val(data.idcard);
                                _this.$createTime.val(data.createTime);
                                _this.$description.val(data.description);
                                if (isNoEmpty(data.result)) {
                                    _this.$result.val(data.result);
@ -71,7 +75,7 @@
                                    var arr = data.images.split(',');
                                    var html="";
                                    for(var i=0;i<arr.length;i++){
                                        html += '<img src="'+arr[i]+'" alt="."/>';
                                        html += '<img src="'+data.imgUrlDomain+arr[i]+'" alt="."/>';
                                    }
                                    _this.$image.html(html);
                                }else{
@ -91,13 +95,6 @@
                    $("#dealDiv").show();
                    dialog.set('title', '处理结果');
                    $("#detail").hide();
                   /* self.dealDialog = $.ligerDialog.open({
                        height: 800,
                        width: 800,
                        urlParms: {"id": $("#id").val()},
                        title: '处理结果',
                        url: ctx + '/admin/appeal/dealInit'
                    })*/
                });
                $("#close").click(function () {
                    parent.window.closeParentInfoDialog();
@ -107,23 +104,27 @@
                    var result = $("#result").val();
                    var id = $("#id").val();
                    if (isNoEmpty(result)) {
                        $.ajax({
                            url: ctx + "/admin/appeal/dealAppeal",
                            method: "post",
                            dataType: "json",
                            data: {id: id,
                                result:result
                            },
                            success: function (result) {
                                if (result.status == '200') {
                                    //todo  操作成功后的处理
                                    alert("操作成功");
                                    parent.window.closeParentInfoDialog();
                                }else{
                                    $.Notice.error(result.msg);
                                }
                            },
                        })
                        if(result.length>400){
                            $.Notice.error("最多只能填写400个字");
                        }else {
                            $.ajax({
                                url: ctx + "/admin/appeal/dealAppeal",
                                method: "post",
                                dataType: "json",
                                data: {id: id,
                                    result:result
                                },
                                success: function (result) {
                                    if (result.status == '200') {
                                        //todo  操作成功后的处理
                                        alert("操作成功");
                                        parent.window.closeParentInfoDialog();
                                    }else{
                                        $.Notice.error(result.msg);
                                    }
                                },
                            })
                        }
                    }else{
                        //todo
                        $.Notice.error("请输入处理结果");

+ 15 - 7
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/appeal/appeal_list_js.jsp

@ -150,7 +150,7 @@
                        ajaxHeaderValue: ajaxHeaderValue,
                        columns: [
                            {display: 'ID', name: 'id', hide: true},
                            {display: '申诉类型', name: 'type', width: '20%', align: "center",
                            {display: '申诉类型', name: 'type', width: '10%', align: "center",
                                render: function (row) {
                                    if (Util.isStrEquals(row.type, 1)) {
                                        return "手机号变更";
@ -160,9 +160,16 @@
                                    return "其他";
                                }
                            },
                            {display: '提出人', name: 'createrName', width: '20%', align: "center"},
                            {display: '提出人', name: 'name', width: '15%', align: "center"},
                            {display: '申诉时间', name: 'createTime', width: '20%', align: "center",
                                render:function (row) {
                                    if(row.createTime){
                                        return row.createTime.substr(0,19);
                                    }
                                }
                            },
                            {display: '联系方式', name: 'phone', width: '20%', align: "center"},
                            {display: '身份', name: 'identity', width: '20%', align: "center",
                            {display: '身份', name: 'identity', width: '15%', align: "center",
                                render:function (row) {
                                    if (Util.isStrEquals(row.identity,1)){
                                        return "患者";
@ -206,8 +213,9 @@
                                data.checked ="0";
                        },
                        onCheckAllRow:function(checked,gridElement){
                            if(checked){
                                $(".div-pldelete-btn").addClass("active");
                            var checkRowsList = master.grid.getCheckedRows();
                            if(checkRowsList.length==0){
                                $(".div-pldelete-btn").removeClass("active");
                            }else{
                                $(".div-pldelete-btn").addClass("active");
                            }
@ -236,8 +244,8 @@
                    var self = this;
                    $.subscribe('info:view', function (event, id) {
                        self.infoDialog = $.ligerDialog.open({
                            height: 430,
                            width: 600,
                            height: 480,
                            width: 700,
                            urlParms: {"id": id},
                            title: '查看',
                            url: ctx + '/admin/appeal/showDetail',

+ 104 - 27
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/feedback/feeback_detail.jsp

@ -78,45 +78,122 @@
        line-height: 35px;
        text-align: center;
    }
    .ad-padd{
        height: 280px;
        width: 100%;
        padding: 10px;
        border: solid 1px #dcdcdc;
        border-radius: 2px;
        font-size: 12px;
    }
    .ad-padd::-webkit-input-placeholder{
        color:#ccc;
    }
    .ad-padd::-moz-placeholder{
        color:#ccc;
    }
    .ad-padd:-moz-placeholder{
        color:#ccc;
    }
    .ad-padd:-ms-input-placeholder{
        color:#ccc;
    }
    .ad-result{
        margin: 20px 35px 0px 35px;
        border-top: solid 1px #ccc;
        padding-top:10px ;
    }
    .ad-label{
        text-align: left!important;
        padding-left: 0px!important;
        font-weight: bold!important;
    }
    .ad-pd{
        padding-top: 35px;
    }
</style>
<body>
<div id="div_roles_info_form" class="m-form-inline f-mt20" data-role-form>
    <input type="hidden" id="id" value='${id}'/>
    <div class="m-form-group">
        <label class="label_title fd-label">意见类型:</label>
        <div class="l-text-wrapper m-form-control">
            <input class="fd-input" type="text" id="type" />
    <div id="detail">
        <input type="hidden" id="id" value='${id}'/>
        <div class="m-form-group">
            <label class="label_title fd-label">意见类型:</label>
            <div class="l-text-wrapper m-form-control">
                <input class="fd-input" type="text" id="type" />
            </div>
            <label class="label_title fd-label">姓&#x3000;&#x3000;名:</label>
            <div class="l-text-wrapper m-form-control">
                <input class="fd-input" type="text" id="name"/>
            </div>
        </div>
        <div class="m-form-group" style="">
            <label class="label_title fd-label">身&#x3000;&#x3000;份:</label>
            <div class="l-text-wrapper m-form-control">
                <input class="fd-input" type="text" id="identity" />
            </div>
            <label class="label_title fd-label">联系方式:</label>
            <div class="l-text-wrapper m-form-control">
                <input class="fd-input" type="text" id="contact" />
            </div>
        </div>
        <div class="m-form-group" style="">
            <label class="label_title fd-label">身份证号:</label>
            <div class="l-text-wrapper m-form-control">
                <input class="fd-input" type="text" id="idcard" />
            </div>
            <label class="label_title fd-label">手机号码:</label>
            <div class="l-text-wrapper m-form-control">
                <input class="fd-input" type="text" id="phone" />
            </div>
        </div>
        <div class="m-form-group" style="">
            <label class="label_title fd-label">反馈时间:</label>
            <div class="l-text-wrapper m-form-control">
                <input class="fd-input" type="text" id="createTime" />
            </div>
        </div>
        <div class="m-form-group">
            <label class="label_title fd-padl fd-label">意见详情描述:</label>
            <div class="fd-pd">
                <textarea id="description" style="width: 650px; height: 160px"></textarea>
                <%--<input class="fd-input fd-autoh" type="text" id="description" />--%>
            </div>
        </div>
        <div class="fd-group">
            <div class="fd-file">附&#x3000;&#x3000;件:</div>
            <div class="fd-img" id="image">
        <label class="label_title fd-label">姓&#x3000;&#x3000;名:</label>
        <div class="l-text-wrapper m-form-control">
            <input class="fd-input" type="text" id="name"/>
            </div>
        </div>
    </div>
    <div class="m-form-group" style="">
        <label class="label_title fd-label">身&#x3000;&#x3000;份:</label>
        <div class="l-text-wrapper m-form-control">
            <input class="fd-input" type="text" id="identity" />
        <div class="m-form-group ad-result" id="dealResult" style="display: none;">
            <label class="label_title ad-label">处理结果:</label>
            <div class="ad-pd">
                <textarea class="fd-input fd-autoh"  id="result1" style="width: 600px; height: 100px"></textarea>
            </div>
        </div>
        <label class="label_title fd-label">联系方式:</label>
        <div class="l-text-wrapper m-form-control">
            <input class="fd-input" type="text" id="phone" />
        <div class="m-form-group" style="text-align: center;margin-top:30px;">
            <div id="deal" class="l-button u-btn u-btn-primary u-btn-large f-ib f-vam" >
                <span>处理</span>
            </div>
            <div id="close" class="l-button u-btn u-btn-cancel u-btn-large f-ib f-vam" >
                <span>关闭</span>
            </div>
        </div>
    </div>
    <div class="m-form-group">
        <label class="label_title fd-padl fd-label">意见详情描述:</label>
        <div class="fd-pd">
            <textarea id="description" style="width: 650px; height: 80px"></textarea>
            <%--<input class="fd-input fd-autoh" type="text" id="description" />--%>
    <div id="dealDiv" style="display: none;">
        <div class="m-form-group" style="padding:0px 15px">
            <textarea class="ad-padd" name="result" placeholder="请输入处理结果" id="result"></textarea>
        </div>
    </div>
    <div class="fd-group">
        <div class="fd-file">附&#x3000;&#x3000;件:</div>
        <div class="fd-img" id="image">
        <div class="m-form-group" style="text-align: center;margin-top: 20px; ">
            <div id="sure" class="l-button u-btn u-btn-primary u-btn-large f-ib f-vam">
                <span>确认</span>
            </div>
            <div id="cancle" class="l-button u-btn u-btn-cancel u-btn-large f-ib f-vam" >
                <span>取消</span>
            </div>
        </div>
    </div>
    <div class="fd-bttn l-button u-btn u-btn-cancel u-btn-large f-ib f-vam" id="back">返回</div>
</div>
</body>
<%@ include file="../head/page_foot.jsp" %>

+ 59 - 2
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/feedback/feedback_detail_js.jsp

@ -8,6 +8,7 @@
      var rolesInfo = null;
      // 表单校验工具类
      var jValidation = $.jValidation;
      var dialog = frameElement.dialog;
      /* *************************** 函数定义 ******************************* */
      function pageInit() {
          rolesInfo.init();
@ -26,6 +27,10 @@
            $name: $("#name"),
            $identity:$("#identity"),
            $phone:$("#phone"),
            $contact:$("#contact"),
            $idcard:$("#idcard"),
            $createTime:$("#createTime"),
            $result:$("#result1"),//处理结果
            $image:$("#image"),
            $description:$("#description"),
            init: function () {
@ -56,14 +61,22 @@
                                }else{
                                    _this.$identity.val("医生");
                                }
                                _this.$phone.val(data.contact);
                                _this.$phone.val(data.phone);
                                _this.$contact.val(data.contact);
                                _this.$idcard.val(data.idcard);
                                _this.$createTime.val(data.createTime);
                                _this.$description.val(data.description);
                                if (isNoEmpty(data.result)) {
                                    _this.$result.val(data.result);
                                    $("#dealResult").show();
                                    $("#deal").hide();
                                }
                                if(data.images){
                                    var arr = data.images.split(',');
                                    var html="";
                                    for(var i=0;i<arr.length;i++){
                                        html += '<img src="'+arr[i]+'" alt="."/>';
                                        html += '<img src="'+data.imgUrlDomain+arr[i]+'" alt="."/>';
                                    }
                                    _this.$image.html(html);
                                }else{
@ -79,9 +92,53 @@
                this.bindEvents();
            },
            bindEvents: function () {
                $("#deal").click(function () {
                    $("#dealDiv").show();
                    dialog.set('title', '处理结果');
                    $("#detail").hide();
                });
                $("#back").click(function () {
                    parent.window.closeParentInfoDialog();
                });
                $("#close").click(function () {
                    parent.window.closeParentInfoDialog();
                });
                $("#sure").click(function () {
                    var result = $("#result").val();
                    var id = $("#id").val();
                    if (isNoEmpty(result)) {
                        if(result.length>400){
                            $.Notice.error("最多只能填写400个字");
                        }else {
                            $.ajax({
                                url: ctx + "/admin/feedback/dealFeedback",
                                method: "post",
                                dataType: "json",
                                data: {id: id,
                                    result:result
                                },
                                success: function (result) {
                                    if (result.status == '200') {
                                        //todo  操作成功后的处理
                                        alert("操作成功");
                                        parent.window.closeParentInfoDialog();
                                    }else{
                                        $.Notice.error(result.msg);
                                    }
                                },
                            })
                        }
                    }else{
                        //todo
                        $.Notice.error("请输入处理结果");
                    }
                });
                $("#cancle").click(function () {
                    $("#dealDiv").hide();
                    dialog.set('title', '查看');
                    $("#detail").show();
                });
            }
        };
      /* *************************** 页面初始化 **************************** */

+ 17 - 7
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/feedback/feedback_list_js.jsp

@ -144,7 +144,7 @@
                        ajaxHeaderValue: ajaxHeaderValue,
                        columns: [
                            {display: 'ID', name: 'id', hide: true},
                            {display: '意见反馈', name: 'type', width: '20%', align: "center",
                            {display: '意见反馈', name: 'type', width: '10%', align: "center",
//                            反馈类别:1、优化建议、2、提交bug、3、新功能建议、4、其他
                                render: function (row) {
                                    if (Util.isStrEquals(row.type, 1)) {
@ -157,7 +157,15 @@
                                    return "其他";
                                }
                            },
                            {display: '姓名', name: 'createrName', width: '20%', align: "center"},
                            {display: '提出人', name: 'createrName', width: '10%', align: "center"},
                            {display: '反馈时间', name: 'createTime', width: '20%', align: "center",
                                render:function (row) {
                                    if(row.createTime){
                                        return row.createTime.substr(0,19);
                                    }
                                }
                            },
                            {display: '联系方式', name: 'contact', width: '20%', align: "center"},
                            {display: '身份', name: 'identity', width: '20%', align: "center",
                                render:function (row) {
                                    if (Util.isStrEquals(row.identity,1)){
@ -166,14 +174,15 @@
                                    return "医生";}
                            },
                            {display: '联系方式', name: 'contact', width: '20%', align: "center"},
                            {display: '状态', name: 'status', width: '10%', align: "center",
//                                对返回结果进行处理
                                render: function (row) {
                                    if (Util.isStrEquals(row.status, 0)) {
                                        return "未读";
                                    } else if (Util.isStrEquals(row.status, 1)) {
                                        return "待处理";
                                    }
                                    return "已读";
                                    return "已处理";
                                }
                            },
                            {
@ -201,8 +210,9 @@
                                data.checked ="0";
                        },
                        onCheckAllRow:function(checked,gridElement){
                            if(checked){
                                $(".div-pldelete-btn").addClass("active");
                            var checkRowsList = master.grid.getCheckedRows();
                            if(checkRowsList.length==0){
                                $(".div-pldelete-btn").removeClass("active");
                            }else{
                                $(".div-pldelete-btn").addClass("active");
                            }
@ -231,7 +241,7 @@
                    var self = this;
                    $.subscribe('info:view', function (event, id) {
                        self.infoDialog = $.ligerDialog.open({
                            height: 430,
                            height: 520,
                            width: 800,
                            urlParms: {"id": id},
                            title: '查看详情',

+ 1 - 1
patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/convert/ConvertHelper.java

@ -46,9 +46,9 @@ public class ConvertHelper {
                Object obj = Class.forName(clazz).newInstance();
                Method method = obj.getClass().getMethod("convert", JdbcTemplate.class, List.class, String.class, WlyyDimensionQuota.class);
                data = (List<DataModel>) method.invoke(obj, jdbcTemplate, data, String.valueOf(i + 1), temp);
                filterModel.setData(data);
            }
        }
        filterModel.setData(data);
        return filterModel;
    }
}

+ 64 - 33
patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/convert/wlyy/DiseaseConvert.java

@ -22,46 +22,77 @@ public class DiseaseConvert implements Convert {
    @Override
    public List<DataModel> convert(JdbcTemplate jdbcTemplate, List<DataModel> oneList, String slaveLevel, WlyyDimensionQuota temp) {
        List<DataModel> returnList = new ArrayList<>();
        Map<String, List<String>> prescriptionDiseaseMap = new HashMap<>();//key是处方code value是处方标签 1高血压 2糖尿病
        //初始化标签Map
        initHealthLabesMap(jdbcTemplate, prescriptionDiseaseMap);
//        Map<String, Object> map = initHealthLabesMap(jdbcTemplate, temp);
        //把标签Map设置到对应的维度里面
        for (DataModel dataModel : oneList) {
            List<String> healthProblems = prescriptionDiseaseMap.get(dataModel.getPrescriptionCode());
            if (healthProblems != null && healthProblems.size() > 0) {
                healthProblems.stream().forEach(str -> {
                    try {
                        DataModel dataModelTemp = new DataModel();
                        BeanUtils.copyProperties(dataModel, dataModelTemp);
                        DataModel.class.getMethod("setSlaveKey" + slaveLevel, String.class).invoke(dataModelTemp, str);
                        returnList.add(dataModelTemp);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                });
        List<String> keyList = null;
        for(DataModel one:oneList){
            try {
                keyList = initHealthLabesMap(jdbcTemplate, temp, one);
                for(String key:keyList){
                    DataModel.class.getMethod("setSlaveKey" + slaveLevel, String.class).invoke(one, key);
                    returnList.add(one);
                }
            }catch (Exception e) {
                e.printStackTrace();
            }
//            List<String> healthProblems = prescriptionDiseaseMap.get(dataModel.getPrescriptionCode());
//            if (healthProblems != null && healthProblems.size() > 0) {
//                healthProblems.stream().forEach(str -> {
//                    try {
//                        DataModel dataModelTemp = new DataModel();
//                        BeanUtils.copyProperties(dataModel, dataModelTemp);
//                        DataModel.class.getMethod("setSlaveKey" + slaveLevel, String.class).invoke(dataModelTemp, str);
//                        returnList.add(dataModelTemp);
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                    }
//                });
//            }
        }
        return returnList;
        return oneList;
    }
    private void initHealthLabesMap(JdbcTemplate jdbcTemplate, Map<String, List<String>> prescriptionDiseaseMap) {
        //得到长处方的疾病标签(只要高血压 糖尿病)
    private List<String> initHealthLabesMap(JdbcTemplate jdbcTemplate, WlyyDimensionQuota temp,DataModel dataModel) {
//        //得到长处方的疾病标签(只要高血压 糖尿病)
//        String sql = "SELECT " +
//                "  health_problem ," +
//                "  prescription_code " +
//                "FROM " +
//                "  wlyy_prescription_diagnosis " +
//                "WHERE " +
//                "  health_problem = 'HP0047' " +
//                "OR health_problem = 'HP0093' ";
//        List<PrescriptionDisease> prescriptionDiseases = jdbcTemplate.query(sql, new BeanPropertyRowMapper(PrescriptionDisease.class));
//        prescriptionDiseases.stream().forEach(one -> {
//            List<String> labels = prescriptionDiseaseMap.get(one.getPrescriptionCode());
//            if (labels == null) {
//                labels = new ArrayList<String>();
//            }
//            labels.add(one.getHealthProblem());
//            prescriptionDiseaseMap.put(one.getPrescriptionCode(), labels);
//        });
        List<String> key = new ArrayList<>();
        String sql = "SELECT " +
                "  health_problem ," +
                "  prescription_code " +
                "FROM " +
                "  health_problem AS healthProblem ," +
                "  prescription_code AS prescriptionCode " +
                "  FROM " +
                "  wlyy_prescription_diagnosis " +
                "WHERE " +
                "  health_problem = 'HP0047' " +
                "OR health_problem = 'HP0093' ";
        List<PrescriptionDisease> prescriptionDiseases = jdbcTemplate.query(sql, new BeanPropertyRowMapper(PrescriptionDisease.class));
        prescriptionDiseases.stream().forEach(one -> {
            List<String> labels = prescriptionDiseaseMap.get(one.getPrescriptionCode());
            if (labels == null) {
                labels = new ArrayList<String>();
            }
            labels.add(one.getHealthProblem());
            prescriptionDiseaseMap.put(one.getPrescriptionCode(), labels);
        });
                "  WHERE " +
                "  prescription_code = '"+dataModel.getPrescriptionCode() +"'";
        List<Map<String, Object>>  diagnosisList =jdbcTemplate.queryForList(sql);
        List<Map<String, Object>> dictList = jdbcTemplate.queryForList(temp.getDictSql());
        for (Map<String, Object> map:diagnosisList){
//            String diagnosis = map.get("healthProblem")+"";
//            for(Map<String, Object> dict:dictList){
//                if(diagnosis.equals(dict.get("code"))){
//                    key.add()
//                }
//            }
            key.add(map.get("healthProblem").toString());
        }
        return key;
    }
}

+ 5 - 1
patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/service/ExtractDataService.java

@ -193,8 +193,12 @@ public class ExtractDataService {
            //
            quotaResults.stream().forEach(one -> {
                SaveModel saveModelTemp = new SaveModel();
                if("25".equals(one.getQuatoCode())){
                    //25的咨询到达量 存到3的到达量去
                    saveModelTemp.setQuotaCode("3");
                }else{
                saveModelTemp.setQuotaCode(one.getQuatoCode());
                }
                saveModelTemp.setQuotaDate(one.getQuotaDate());
                saveModelTemp.setCreateTime(one.getCreateTime());
                saveModelTemp.setCity(one.getCity());

+ 6 - 6
patient-co/patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/CurrentDayAllQuotaJob.java

@ -173,7 +173,7 @@ public class CurrentDayAllQuotaJob implements Job {
     */
    public Map<String,Object> getTowmRenewTotals(){
        try{
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id ,fr.patient " +
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id ,fr.patient,fr.idcard " +
                    " from wlyy_sign_family_renew_log fr " +
                    " where  " +
                    " fr.apply_date<'"+ tomorrow+"' and " +
@ -199,7 +199,7 @@ public class CurrentDayAllQuotaJob implements Job {
     */
    public Map<String,Object> getOrgRenewTotals(){
        try{
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id ,fr.patient " +
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id ,fr.patient,fr.idcard " +
                    " from wlyy_sign_family_renew_log fr " +
                    " where " +
                    " fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "'and  fr.hospital=fr.old_hospital  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
@ -221,7 +221,7 @@ public class CurrentDayAllQuotaJob implements Job {
     */
    public Map<String,Object> getTeamRenewTotals(){
        try{
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id ,fr.patient " +
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id ,fr.patient,fr.idcard " +
                    " from wlyy_sign_family_renew_log fr " +
                    " where   " +
                    " fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id=fr.old_admin_team_id  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
@ -239,7 +239,7 @@ public class CurrentDayAllQuotaJob implements Job {
    public Map<String,Object> getTeamRenewOut(){
        try{
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id ,fr.patient " +
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id ,fr.patient,fr.idcard " +
                    " from wlyy_sign_family_renew_log fr " +
                    " where    " +
                    " fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id!=fr.old_admin_team_id  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
@ -257,7 +257,7 @@ public class CurrentDayAllQuotaJob implements Job {
    public Map<String,Object> getOrgRenewOut(){
        try{
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id ,fr.patient" +
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id ,fr.patient,fr.idcard" +
                    " from wlyy_sign_family_renew_log fr " +
                    " where   " +
                    " fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id!=fr.old_admin_team_id and fr.hospital!=fr.old_hospital and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";
@ -275,7 +275,7 @@ public class CurrentDayAllQuotaJob implements Job {
    public Map<String,Object> getTownRenewOut(){
        try{
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id ,fr.patient " +
            String sql=" select fr.sign_code code,fr.old_hospital hospital,fr.old_admin_team_id admin_team_id ,fr.patient,fr.idcard " +
                    " from wlyy_sign_family_renew_log fr " +
                    " where " +
                    " fr.apply_date<'"+ tomorrow+"' and  fr.sign_year= '" + Constant.getNowYearByDate(tomorrow) + "' and fr.admin_team_id!=fr.old_admin_team_id and fr.hospital!=fr.old_hospital and LEFT(fr.hospital,6)!=LEFT(fr.old_hospital,6)  and LENGTH(fr.hospital)=10 and LENGTH(fr.old_hospital)=10 ";

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

@ -64,6 +64,7 @@ public class StatisticsESService {
    SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXX");
    SimpleDateFormat dateFormat3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    DecimalFormat decimalFormat = new DecimalFormat("0.00");
    /**
     * 获取上次统计时间
     *
@ -91,7 +92,6 @@ public class StatisticsESService {
    }
//    /**
//     * 查询某一天父level下的子level 例如 查询市下面的团队,或者区下面的团队
//     *
@ -167,22 +167,23 @@ public class StatisticsESService {
     * @return
     */
    public JSONArray getDateIncrementDetail(String startDate, String endDate, String interval, String area, int level, String index, String level2_type) throws Exception {
        List<SaveModel>  list = null;
        if(StringUtils.isNotEmpty(level2_type)) {
            list = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate,endDate,area,level,index,"1",interval,level2_type);
        }else{
            list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,area,level,index,"1",interval);
        List<SaveModel> list = null;
        if (StringUtils.isNotEmpty(level2_type)) {
            list = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, level, index, "1", interval, level2_type);
        } else {
            list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, level, index, "1", interval);
        }
        List<JSONObject> result = new ArrayList<>();
        for (SaveModel saveModel:list){
        for (SaveModel saveModel : list) {
            JSONObject range = new JSONObject();
            range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(),"yyyy-MM-dd"));
            range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(), "yyyy-MM-dd"));
            range.put("amount", saveModel.getResult2());
            result.add(range);
        }
        return new JSONArray(result);
    }
    /**
     * 获取某个指标在某个期间的增长量
     *
@ -194,7 +195,7 @@ public class StatisticsESService {
     */
    public long getIntervalIncrement(String startDate, String endDate, String area, int level, String index) throws Exception {
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,area,level,index,"1");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level, index, "1");
        return saveModel.getResult2().longValue();
    }
@ -257,8 +258,6 @@ public class StatisticsESService {
//    }
    /**
     * 查询截止某个日期累计量
     *
@ -268,13 +267,13 @@ public class StatisticsESService {
     * @param level2_type level2_type的类型
     * @return
     */
    public long getTotalAmount(String startDate, String endDate, String area, int level, String index, String level2_type)  throws Exception {
    public long getTotalAmount(String startDate, String endDate, String area, int level, String index, String level2_type) throws Exception {
        SaveModel saveModel = null;
        if(StringUtils.isNotEmpty(level2_type)){
            saveModel = elasticsearchUtil.findOneDateQuotaLevel1(startDate,endDate,area,level,index,"1",level2_type);
        }else{
            saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,area,level,index,"1");
        if (StringUtils.isNotEmpty(level2_type)) {
            saveModel = elasticsearchUtil.findOneDateQuotaLevel1(startDate, endDate, area, level, index, "1", level2_type);
        } else {
            saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level, index, "1");
        }
        return saveModel.getResult2().longValue();
    }
@ -299,45 +298,45 @@ public class StatisticsESService {
//        if(StringUtils.isNotEmpty(lowLevel)){
//            levelTemp = lowLevel;
//        }
        List<SaveModel>  list = null;
        if(StringUtils.isNotEmpty(level2_type)){
        List<SaveModel> list = null;
        if (StringUtils.isNotEmpty(level2_type)) {
            list = elasticsearchUtil.findListDateQuotaLevel1(startDate,endDate,area,level,index,"1",lowLevel,level2_type);
        }else{
            list = elasticsearchUtil.findListDateQuotaLevel0(startDate,endDate,area,level,index,"1",lowLevel);
            list = elasticsearchUtil.findListDateQuotaLevel1(startDate, endDate, area, level, index, "1", lowLevel, level2_type);
        } else {
            list = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, area, level, index, "1", lowLevel);
        }
        if (org.springframework.util.StringUtils.isEmpty(year)) {
            year = Constant.getNowYear();
        }
        List<Map<String, Object>> resultList = new ArrayList<>();
        DecimalFormat df = new DecimalFormat("0.0000");
        for (SaveModel saveModel:list) {
        for (SaveModel saveModel : list) {
            Map<String, Object> map = new HashMap<>();
            if (SaveModel.OrgLevel.equals(lowLevel)) {
                map.put("code",saveModel.getHospital());
                map.put("name",saveModel.getHospitalName());
                map.put("code", saveModel.getHospital());
                map.put("name", saveModel.getHospitalName());
            } else if (SaveModel.townLevel.equals(lowLevel)) {
                map.put("code",saveModel.getTown());
                map.put("name",saveModel.getTownName());
                map.put("code", saveModel.getTown());
                map.put("name", saveModel.getTownName());
            } else if (SaveModel.cityLevel.equals(lowLevel)) {
                map.put("code",saveModel.getCity());
                map.put("name",saveModel.getCityName());
                map.put("code", saveModel.getCity());
                map.put("name", saveModel.getCityName());
            } else if (SaveModel.teamLevel.equals(lowLevel)) {
                map.put("code",saveModel.getTeam());
                map.put("name",saveModel.getCityName());
                map.put("code", saveModel.getTeam());
                map.put("name", saveModel.getCityName());
            }
            if (!SaveModel.teamLevel.equals(lowLevel)) {
                if (org.springframework.util.StringUtils.isEmpty(year)) {
                    year = Constant.getNowYear();
                }
                PopulationBase peopleNum = getPopulationBase(area,year);
                PopulationBase peopleNum = getPopulationBase(area, year);
                if (peopleNum != null) {
                    map.put("rate",df.format((saveModel.getResult2() * 1.0000) / peopleNum.getNum() * 100));
                    map.put("rateString",saveModel.getResult2().longValue()+"/"+peopleNum.getNum());
                    map.put("rate", df.format((saveModel.getResult2() * 1.0000) / peopleNum.getNum() * 100));
                    map.put("rateString", saveModel.getResult2().longValue() + "/" + peopleNum.getNum());
                }
            }
            map.put("amount",saveModel.getResult2().longValue());
            map.put("amount", saveModel.getResult2().longValue());
            resultList.add(map);
        }
@ -360,9 +359,9 @@ public class StatisticsESService {
                }
            } else if (SaveModel.OrgLevel.equals(lowLevel)) {
                List<Town> towns = new ArrayList<>();
                if (SaveModel.cityLevel.equals(level+"")) {
                if (SaveModel.cityLevel.equals(level + "")) {
                    towns = townDao.findByCityCode(area);
                } else if (SaveModel.townLevel.equals(level+"")) {
                } else if (SaveModel.townLevel.equals(level + "")) {
                    Town town = townDao.findByCode(area);
                    towns.add(town);
                }
@ -382,9 +381,9 @@ public class StatisticsESService {
                }
            } else if (SaveModel.teamLevel.equals(lowLevel)) {
                List<Hospital> hospitals = new ArrayList<>();
                if (SaveModel.cityLevel.equals(level+"")) {
                if (SaveModel.cityLevel.equals(level + "")) {
                    hospitals = hospitalDao.findByCity(area);
                } else if (SaveModel.townLevel.equals(level+"")) {
                } else if (SaveModel.townLevel.equals(level + "")) {
                    hospitals = hospitalDao.findByTownCode(area);
                } else {
                    Hospital hos = hospitalDao.findByCode(area);
@ -408,7 +407,7 @@ public class StatisticsESService {
                }
            }
        }
        if (SaveModel.OrgLevel.equals(level+"")) {
        if (SaveModel.OrgLevel.equals(level + "")) {
            statisticsAllService.translateTeamLeaderName(resultList);
        }
        Collections.sort(resultList, new Comparator<Map<String, Object>>() {
@ -430,21 +429,20 @@ public class StatisticsESService {
    }
    public JSONArray getIndexLevelTwototal(String endDate, String area, int level, String index) throws Exception{
    public JSONArray getIndexLevelTwototal(String endDate, String area, int level, String index) throws Exception {
//        if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
//            endDate = elasticsearchUtil.getQuotaTime();
//        }
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel1(endDate,area,level,index,"2");
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel1(endDate, area, level, index, "2");
        List<Map<String, Object>> resultList = new ArrayList<>();
        DecimalFormat df = new DecimalFormat("0.0000");
        long total = 0;
        for (SaveModel saveModel:list) {
        for (SaveModel saveModel : list) {
            Map<String, Object> map = new HashMap<>();
            map.put("code",saveModel.getSlaveKey1());
            map.put("name",saveModel.getSlaveKey1Name());
            map.put("amount",saveModel.getResult2().longValue());
            map.put("code", saveModel.getSlaveKey1());
            map.put("name", saveModel.getSlaveKey1Name());
            map.put("amount", saveModel.getResult2().longValue());
            if (index.equals("7")) {
                // 分组指标总数算法
                String code = saveModel.getSlaveKey1();
@ -467,15 +465,15 @@ public class StatisticsESService {
                //获取最新的统计时间
//                String updateTime = elasticsearchUtil.getQuotaTime();
                //如果是查询36的指标 那么除数是签约总数
                SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,"1","2");
                SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, area, level, "1", "2");
                Long num = saveModel.getResult2().longValue();
                for (Map<String, Object> map:resultList) {
                for (Map<String, Object> map : resultList) {
                    double rateG = (total > 0 ? ((long) map.get("amount")) * 1.0000 / num * 100 : 0);
                    map.put("rate", df.format(rateG));
                    map.put("rateString", ((long) map.get("amount")) + "/" + num);
                }
            }else{
                for (Map<String, Object> map:resultList) {
            } else {
                for (Map<String, Object> map : resultList) {
                    double rateG = (total > 0 ? ((long) map.get("amount")) * 1.0000 / total * 100 : 0);
                    map.put("rate", df.format(rateG));
                    map.put("rateString", ((long) map.get("amount")) + "/" + total);
@ -520,10 +518,10 @@ public class StatisticsESService {
     * @param level   级别
     * @return
     */
    public long getIndexTotal(String endDate, String area, int level, String index,String timeLevel) throws Exception{
    public long getIndexTotal(String endDate, String area, int level, String index, String timeLevel) throws Exception {
        endDate = elasticsearchUtil.changeTime(endDate);
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,index,timeLevel);
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, area, level, index, timeLevel);
        return saveModel.getResult2().longValue();
    }
@ -535,9 +533,9 @@ public class StatisticsESService {
     * @param level   级别
     * @return
     */
    public long getWeiJiaoFei(String endDate, String area, int level) throws Exception{
    public long getWeiJiaoFei(String endDate, String area, int level) throws Exception {
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(endDate,area,level,"16","2","0");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(endDate, area, level, "16", "2", "0");
        return saveModel.getResult2().longValue();
    }
@ -559,12 +557,12 @@ public class StatisticsESService {
            renewIndex = "29";
        }
        String timeKey = elasticsearchUtil.getQuotaTime();
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,Integer.parseInt(level),renewIndex,"2");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey, area, Integer.parseInt(level), renewIndex, "2");
        int renewNum = saveModel.getResult2().intValue();
        //根据年度获取去年的签约数 签约指标是1
        String date = year + "-06-30";
        String index = "1";
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(date,area,Integer.parseInt(level),index,"2");
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(date, area, Integer.parseInt(level), index, "2");
        int signNum = saveModel2.getResult2().intValue();
        JSONObject jo = new JSONObject();
        jo.put("yesterYearSign", signNum);//去年的签约量
@ -583,7 +581,7 @@ public class StatisticsESService {
     */
    public JSONObject getSignRate(String endDate, String area, int level, String year) throws Exception {
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,"1","2");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, area, level, "1", "2");
        long signAmount = saveModel.getResult2().longValue();
        PopulationBase peopleNum = getPopulationBase(area, year);
        JSONObject json = new JSONObject();
@ -614,7 +612,7 @@ public class StatisticsESService {
        if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
            endDate = elasticsearchUtil.getQuotaTime();
        }
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate,area,level,"1","2");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, area, level, "1", "2");
        long signAmount = saveModel.getResult2().longValue();
        PopulationBase peopleNum = getPopulationBase(area, year);
        DecimalFormat df = new DecimalFormat("0.0000");
@ -643,9 +641,9 @@ public class StatisticsESService {
     * @return
     */
    public JSONObject getGroupInfo(String endDate, String lowCode, String area, int level, String year) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate,endDate,area,level,"17","2",lowCode,null,null);
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, "17", "2", lowCode, null, null);
        long total = 0;
        if(list.size()>0){
        if (list.size() > 0) {
            total = list.get(0).getResult2().longValue();
        }
        int num = 0;
@ -710,16 +708,16 @@ public class StatisticsESService {
     * @param level
     * @return
     */
    public JSONArray getSixFiveStatistics(String endDate, String area, int level) throws Exception{
    public JSONArray getSixFiveStatistics(String endDate, String area, int level) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel2(endDate,area,level,"12","2","6");
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel2(endDate, area, level, "12", "2", "6");
        List<Map<String, Object>> resultList = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            Map<String, Object> data = new HashMap<>();
            data.put("code", list.get(i).getSlaveKey2());
            data.put("name", list.get(i).getSlaveKey2Name());
            data.put("amount",list.get(i).getResult2());
            data.put("amount", list.get(i).getResult2());
            resultList.add(data);
        }
@ -752,12 +750,12 @@ public class StatisticsESService {
     * @param level
     * @return
     */
    public long getSixFiveTotal(String endDate, String area, int level) throws Exception{
    public long getSixFiveTotal(String endDate, String area, int level) throws Exception {
        // 截止日期包含当天,则获取最新的更新时间
        if (endDate.compareTo(dateFormat.format(new Date())) >= 0) {
            endDate = elasticsearchUtil.getQuotaTime();
        }
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(endDate,area,level,"8","2","6");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel1(endDate, area, level, "8", "2", "6");
        return saveModel.getResult2().longValue();
    }
@ -799,15 +797,15 @@ public class StatisticsESService {
        json.put("taskNum", taskNum);
        List<SaveModel> list = null;
        if(StringUtils.isNotEmpty(lowCode)){
        if (StringUtils.isNotEmpty(lowCode)) {
            //一级维度
            list = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate,endDate,area,level,index,"2",lowCode,interval+"");
        }else{
            list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,area,level,index,"2",interval+"");
            list = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, level, index, "2", lowCode, interval + "");
        } else {
            list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, level, index, "2", interval + "");
        }
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        List<JSONObject> result = new ArrayList<>();
        for (SaveModel saveModel:list) {
        for (SaveModel saveModel : list) {
            JSONObject range = new JSONObject();
            range.put("range", df.format(saveModel.getQuotaDate()));
            range.put("amount", saveModel.getResult2().longValue());
@ -841,9 +839,9 @@ public class StatisticsESService {
            }
        } else if (lowLevel.equals("4")) {
            List<Town> towns = new ArrayList<>();
            if (SaveModel.cityLevel.equals(level+"")) {
            if (SaveModel.cityLevel.equals(level + "")) {
                towns = townDao.findByCityCode(area);
            } else if (SaveModel.townLevel.equals(level+"")) {
            } else if (SaveModel.townLevel.equals(level + "")) {
                Town town = townDao.findByCode(area);
                if (town != null) {
                    towns.add(town);
@ -870,7 +868,7 @@ public class StatisticsESService {
            List<Hospital> hospitals = new ArrayList<>();
            if (level == 2) {
                hospitals = hospitalDao.findByCity(area);
            } else if (SaveModel.townLevel.equals(level+"")) {
            } else if (SaveModel.townLevel.equals(level + "")) {
                hospitals = hospitalDao.findByTownCode(area);
            } else {
                Hospital hos = hospitalDao.findByCode(area);
@ -1021,12 +1019,12 @@ public class StatisticsESService {
        return rs;
    }
    public JSONArray translateTeamLeaderName(JSONArray rs) {
    public List translateTeamLeaderNameList(List<JSONObject> rs) {
        Map<Integer, Map<String, Object>> leaders = getAllTeamLeaders();
        if (rs != null) {
            for (int i = 0; i < rs.length(); i++) {
                JSONObject r = rs.getJSONObject(i);
                Integer id = (Integer) r.get("id");
            for (int i = 0; i < rs.size(); i++) {
                JSONObject r = rs.get(i);
                Integer id = Integer.valueOf(r.get("code").toString());
                String name = getTeamLeaderNameByTeamCode(leaders, id);
                if (org.apache.commons.lang3.StringUtils.isNotBlank(name)) {
                    r.put("name", name);
@ -1278,6 +1276,7 @@ public class StatisticsESService {
        String filesize = df.format(size);
        return Double.valueOf(filesize);
    }
    public double getRangeDouuble(Double first, int second, int i) {
        if (second == 0 && first > 0) {
            //如果分母为0 分子不为0 返回100%
@ -1286,11 +1285,12 @@ public class StatisticsESService {
            //如果分母为0 分子为0 返回0%
            return 0;
        }
        Double size = (first * 100) / second;
        DecimalFormat df = new DecimalFormat("0.00");//格式化小数,不足的补0
        Double size = first  / second;
        DecimalFormat df = new DecimalFormat("0.0");//格式化小数,不足的补0
        String filesize = df.format(size);
        return Double.valueOf(filesize);
    }
    /**
     * 获取某个指标某一天某一level的值   到达量
     *
@ -1314,7 +1314,7 @@ public class StatisticsESService {
                } else if (lowLevel.equals("4")) {
                    returnMap.put(one.getHospital(), one.getResult1().intValue());
                } else if (lowLevel.equals("5")) {
                    returnMap.put(one.getTeam(),one.getResult1().intValue());
                    returnMap.put(one.getTeam(), one.getResult1().intValue());
                }
            });
        }
@ -1322,52 +1322,74 @@ public class StatisticsESService {
        return returnMap;
    }
    /**
     * @param level    level1_type等级 5:团队 4社区机构 3区级 2市级
     * @param area
     * @param lowLevel
     * @return
     * @throws Exception
     */
    public String getAvgAllInfo(int level, String area, String lowLevel) throws Exception {
        JSONObject returnJo = new JSONObject();
        JSONArray ja = new JSONArray();
        List<JSONObject> ja = new ArrayList<>();
        //市级
        if (level == 2) {
            if (StringUtils.isBlank(lowLevel)) {
            if ("3".equals(lowLevel)) {
                List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(DateUtil.dateToStrShort(new Date()), area, level, "28", SaveModel.timeLevel_DDL, "3");
                esModelList.forEach(one -> {
                    JSONObject jo = new JSONObject();
                    jo.put("name", one.getTownName());
                    jo.put("code", one.getTown());
                    jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2().intValue(), 2));
                    ja.put(jo);
                    ja.add(jo);
                });
            } else {
                List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(DateUtil.dateToStrShort(new Date()), area, level, "28", SaveModel.timeLevel_DDL, "2");
            } else if ("4".equals(lowLevel)) {
                List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(DateUtil.dateToStrShort(new Date()), area, level, "28", SaveModel.timeLevel_DDL, "4");
                esModelList.forEach(one -> {
                    JSONObject jo = new JSONObject();
                    jo.put("name", one.getHospitalName());
                    jo.put("code", one.getHospital());
                    jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2().intValue(), 2));
                    ja.put(jo);
                    ja.add(jo);
                });
            }
        } else if (level == 3) {
            List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(DateUtil.dateToStrShort(new Date()), area, level, "28", SaveModel.timeLevel_DDL, "2");
            List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(DateUtil.dateToStrShort(new Date()), area, level, "28", SaveModel.timeLevel_DDL, "4");
            esModelList.forEach(one -> {
                JSONObject jo = new JSONObject();
                jo.put("name", one.getHospitalName());
                jo.put("code", one.getHospital());
                jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2().intValue(), 2));
                ja.put(jo);
                ja.add(jo);
            });
        } else if (level == 4) {
            List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(DateUtil.dateToStrShort(new Date()), area, level, "28", SaveModel.timeLevel_DDL, "1");
            List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(DateUtil.dateToStrShort(new Date()), area, level, "28", SaveModel.timeLevel_DDL, "5");
            esModelList.forEach(one -> {
                JSONObject jo = new JSONObject();
                jo.put("name", one.getTeam());
                jo.put("code", one.getTeamName());
                jo.put("name", one.getTeamName());
                jo.put("code", one.getTeam());
                jo.put("avgCount", getRangeDouuble(one.getResult1(), one.getResult2().intValue(), 2));
                ja.put(jo);
                ja.add(jo);
            });
            translateTeamLeaderName(ja);
            translateTeamLeaderNameList(ja);
        }
        ja.sort(new Comparator<JSONObject>() {
            @Override
            public int compare(JSONObject o1, JSONObject o2) {
                if (o1.getDouble("avgCount") < (o2.getDouble("avgCount"))) {
                    return 1;
                } else if (o1.getDouble("avgCount") > (o2.getDouble("avgCount"))) {
                    return -1;
                } else {
                    return 0;
                }
            }
        });
        returnJo.put("data", ja);
        return returnJo.toString();
    }
@ -1395,13 +1417,13 @@ public class StatisticsESService {
            for (SaveModel one : esModelList) {
                Map<String, Object> maps = new HashMap<String, Object>();
                maps.put("amount", one.getResult2().intValue());
                if (low_level.equals("3") && one.getTown()!=null) {
                if (low_level.equals("3") && one.getTown() != null) {
                    maps.put("code", one.getTown());
                    maps.put("name", one.getTownName());
                } else if (low_level.equals("4") && one.getHospital()!=null) {
                } else if (low_level.equals("4") && one.getHospital() != null) {
                    maps.put("code", one.getHospital());
                    maps.put("name", one.getHospitalName());
                } else if (low_level.equals("5") && one.getTeam()!=null) {
                } else if (low_level.equals("5") && one.getTeam() != null) {
                    maps.put("code", one.getTeam());
                    maps.put("name", one.getTeamName());
                }
@ -1565,7 +1587,7 @@ public class StatisticsESService {
     */
    public JSONArray getLowLevelIncrementDetail(String startDate, String endDate, String area, int level, String index, int sort, String low_level) throws Exception {
        List<Map<String, Object>> resultList = new ArrayList<>();
        List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate,area, level, index, SaveModel.timeLevel_ZL, low_level);
        List<SaveModel> esModelList = (List<SaveModel>) elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, low_level);
        if (esModelList != null && esModelList.size() > 0) {
            for (SaveModel one : esModelList) {
@ -1681,30 +1703,30 @@ public class StatisticsESService {
     * @return
     * @throws Exception
     */
    public JSONObject getConsultingStatisticsList(int level, String area, String lowLevel,String year) throws Exception {
    public JSONObject getConsultingStatisticsList(int level, String area, String lowLevel, String year) throws Exception {
        JSONObject result = new JSONObject();
        //最新更新时间
        String timeKey = elasticsearchUtil.getQuotaTime();
        if(StringUtils.isNotEmpty(year)){
        if (StringUtils.isNotEmpty(year)) {
            if (Constant.getNowYear().equals(year)) {
                timeKey = elasticsearchUtil.getQuotaTime();
            }else{
            } else {
                Integer coutYear = Integer.parseInt(year);
                timeKey = coutYear+"-06-30";
                timeKey = coutYear + "-06-30";
            }
        }
//        timeKey= "2017-11-01 00:00:00";
        //及时回复数
        List<SaveModel> relyVal = elasticsearchUtil.findListDateQuotaLevel0( null,timeKey,area,level,"23","1",lowLevel);
        List<SaveModel> relyVal = elasticsearchUtil.findListDateQuotaLevel0(null, timeKey, area, level, "23", "2", lowLevel);
        //咨询总数
        List<SaveModel> relyTotal = elasticsearchUtil.findListDateQuotaLevel0(null,timeKey,area,level,"25","1",lowLevel);
        List<SaveModel> relyTotal = elasticsearchUtil.findListDateQuotaLevel0(null, timeKey, area, level, "3", "2", lowLevel);
        //未回复数
        List<SaveModel> noRelyTotal = elasticsearchUtil.findListDateQuotaLevel0(null,timeKey,area,level,"22","1",lowLevel);
        List<SaveModel> noRelyTotal = elasticsearchUtil.findListDateQuotaLevel0(null, timeKey, area, level, "22", "2", lowLevel);
//        JSONArray rely = new JSONArray(relyVal);
//        JSONArray total = new JSONArray(relyTotal);
//        JSONArray noRely = new JSONArray(noRelyTotal);
        result.put("resultList", getCoutList(level,relyVal, relyTotal, noRelyTotal));
        result.put("resultList", getCoutList(level, relyVal, relyTotal, noRelyTotal));
        return result;
    }
@ -1717,49 +1739,52 @@ public class StatisticsESService {
     * @param onRely
     * @return
     */
    public List<Map<String, Object>> getCoutList(Integer level,List<SaveModel> rely, List<SaveModel> total, List<SaveModel> onRely) {
    public List<Map<String, Object>> getCoutList(Integer level, List<SaveModel> rely, List<SaveModel> total, List<SaveModel> onRely) {
        Map<String, Object> relyMap = new HashMap<>();
        Map<String, Object> totalMap = new HashMap<>();
        Map<String, Object> onRelyMap = new HashMap<>();
        JSONObject result = new JSONObject();
        //转换回复数
        for(SaveModel saveModel:rely){
            if(level==4){
        for (SaveModel saveModel : rely) {
            if (level == 4) {
                relyMap.put(saveModel.getTeam(), saveModel);
            }else if(level==3){
            } else if (level == 3) {
                relyMap.put(saveModel.getHospital(), saveModel);
            }else if(level==2){
            } else if (level == 2) {
                relyMap.put(saveModel.getTown(), saveModel);
            }
        };
        }
        ;
        //转换总咨询数
        for(SaveModel saveModel:total){
            if(level==4){
        for (SaveModel saveModel : total) {
            if (level == 4) {
                totalMap.put(saveModel.getTeam(), saveModel);
            }else if(level==3){
            } else if (level == 3) {
                totalMap.put(saveModel.getHospital(), saveModel);
            }else if(level==2){
            } else if (level == 2) {
                totalMap.put(saveModel.getTown(), saveModel);
            }
        };
        }
        ;
        //转换总咨询数
        for(SaveModel saveModel:onRely){
            if(level==4){
        for (SaveModel saveModel : onRely) {
            if (level == 4) {
                onRelyMap.put(saveModel.getTeam(), saveModel);
            }else if(level==3){
            } else if (level == 3) {
                onRelyMap.put(saveModel.getHospital(), saveModel);
            }else if(level==2){
            } else if (level == 2) {
                onRelyMap.put(saveModel.getTown(), saveModel);
            }
        };
        }
        ;
        List<Map<String, Object>> resultMaps = new ArrayList<>();
        for (String key : totalMap.keySet()) {
            Map<String, Object> rs = new HashMap<>();
            SaveModel relyRs = (SaveModel) relyMap.get(key);
            SaveModel totalRs = (SaveModel) totalMap.get(key);
            SaveModel onRelyRs = (SaveModel) onRelyMap.get(key);
            if(relyRs==null||totalRs==null||onRelyRs==null){
            if (relyRs == null || totalRs == null || onRelyRs == null) {
                continue;
            }
            //合并结果集
@ -1767,11 +1792,11 @@ public class StatisticsESService {
            Integer relyNm = relyRs.getResult2().intValue();
            Integer noRelyNm = onRelyRs.getResult2().intValue();
//            rs.put("name", relyRs.get(area+"Name"));
            if(level==4){
            if (level == 4) {
                rs.put("name", relyRs.getTeamName());
            }else if(level==3){
            } else if (level == 3) {
                rs.put("name", relyRs.getHospitalName());
            }else if(level==2){
            } else if (level == 2) {
                rs.put("name", relyRs.getTownName());
            }
            rs.put("noRelyCount", noRelyNm);
@ -1806,7 +1831,7 @@ public class StatisticsESService {
            }
            resultMaps.add(rs);
        }
        if(level==4){
        if (level == 4) {
            Map<Integer, Map<String, Object>> leaders = getAllTeamLeaders();
            if (resultMaps != null && resultMaps.size() > 0) {
                for (Map<String, Object> r : resultMaps) {
@ -1835,35 +1860,26 @@ public class StatisticsESService {
     * @param area
     * @return
     */
    public JSONObject getCoutListByTime(String level, String area,String year) throws Exception {
    public JSONObject getCoutListByTime(String level, String area, String year) throws Exception {
        JSONObject result = new JSONObject();
        String quotaTime = elasticsearchUtil.getQuotaTime();
        if(StringUtils.isNotEmpty(year)){
        if (StringUtils.isNotEmpty(year)) {
            if (Constant.getNowYear().equals(year)) {
                quotaTime = elasticsearchUtil.getQuotaTime();
            }else{
            } else {
                quotaTime = year+"-6-30 00:00:00";
                quotaTime = year + "-6-30 00:00:00";
            }
        }
//        quotaTime = "2017-10-19 00:00:00";
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel1(quotaTime,area,Integer.parseInt(level),"24","2");
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel1(null, quotaTime, area, Integer.parseInt(level), "24", "2");
        JSONArray array = new JSONArray();
        for(SaveModel saveModel : list){
        for (SaveModel saveModel : list) {
            JSONObject jsonObject = new JSONObject();
//            if(SaveModel.cityLevel.equals(level)){
//
//                jsonObject.put("code",saveModel.getCity());
//                jsonObject.put("name",saveModel.getCityName());
//            }else if(SaveModel.townLevel.equals(level)){
//                jsonObject.put("code",saveModel.getTown());
//                jsonObject.put("name",saveModel.getTownName());
//            }else if(SaveModel.OrgLevel.equals(level)){
//            }
            jsonObject.put("code",saveModel.getSlaveKey1());
            jsonObject.put("name",saveModel.getSlaveKey1Name());
            jsonObject.put("date",quotaTime);
            jsonObject.put("num",saveModel.getResult2());
            jsonObject.put("code", saveModel.getSlaveKey1());
            jsonObject.put("name", saveModel.getSlaveKey1Name());
            jsonObject.put("date", quotaTime);
            jsonObject.put("num", saveModel.getResult2());
            array.put(jsonObject);
        }
        result.put("resultList", array);
@ -1877,105 +1893,41 @@ public class StatisticsESService {
     * @param area
     * @return
     */
    public JSONObject getConsultingTitle(int level, String area,String year) throws Exception{
    public JSONObject getConsultingTitle(int level, String area, String year) throws Exception {
        JSONObject result = new JSONObject();
        String quotaDate = elasticsearchUtil.getQuotaTime();
        if(StringUtils.isNotEmpty(year)){
            quotaDate = year+"-06-30";
        }
//        List<SaveModel> relyVal = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate,area,level,"23","2");
//        List<SaveModel> relyTotal = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate,area,level,"25","2");
//        List<SaveModel> onRelyTotal = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate,area,level,"22","2");
        SaveModel relyVal = elasticsearchUtil.findOneDateQuotaLevel0(null,quotaDate,area,level,"23","1");
        SaveModel relyTotal = elasticsearchUtil.findOneDateQuotaLevel0(null,quotaDate,area,level,"25","1");
        SaveModel onRelyTotal = elasticsearchUtil.findOneDateQuotaLevel0(null,quotaDate,area,level,"22","1");
//        JSONObject relyObject = new JSONObject(relyVal);
//        JSONObject totalObject = new JSONObject(relyTotal);
//        JSONObject onRelyObject = new JSONObject(onRelyTotal);
//        JSONArray rely = new JSONArray();
//        rely.put(relyObject);
//        JSONArray total = new JSONArray();
//        total.put(totalObject);
//        JSONArray onRely = new JSONArray();
//        onRely.put(onRelyObject);
        result.put("result", getCoutListTitle(level,relyVal, relyTotal, onRelyTotal));
        if(!Constant.getNowYear().equals(year)){
            quotaDate = year + "-06-30";
        }
        SaveModel relyVal = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, quotaDate, area, level, "23", "2");
        SaveModel relyTotal = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, quotaDate, area, level, "3", "2");
        SaveModel onRelyTotal = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, quotaDate, area, level, "22", "2");
        result.put("result", getCoutListTitle(level, relyVal, relyTotal, onRelyTotal));
        return result;
    }
    public List<Map<String, Object>> getCoutListTitle(Integer level,SaveModel rely, SaveModel total, SaveModel onRely) {
        Map<String, Object> relyMap = new HashMap<>();
        Map<String, Object> totalMap = new HashMap<>();
        Map<String, Object> onRelyMap = new HashMap<>();
        JSONObject result = new JSONObject();
    public List<Map<String, Object>> getCoutListTitle(Integer level, SaveModel rely, SaveModel total, SaveModel onRely) {
        List<Map<String, Object>> resultMaps = new ArrayList<>();
//        for (String key : totalMap.keySet()) {
//            Map<String, Object> rs = new HashMap<>();
//            JSONObject relyRs = (JSONObject) relyMap.get(key);
//            JSONObject totalRs = (JSONObject) totalMap.get(key);
//            JSONObject onRelyRs = (JSONObject) onRelyMap.get(key);
//            if (relyRs == null || totalRs == null || onRelyRs == null) {
//                continue;
//            }
//            //合并结果集
//            Integer totalNm = totalRs.getInt("result2");
//            Integer relyNm = relyRs.getInt("result2");
//            Integer noRelyNm = onRelyRs.getInt("result2");
//            rs.put("name", relyRs.get(area + "Name"));
//            rs.put("noRelyCount", noRelyNm);
//            rs.put("relyCount", relyNm);
//            rs.put("total", totalNm);
//            rs.put("code", key);
//            if (totalNm != null && totalNm != 0) {
//                if (relyNm != null && relyNm != 0) {
//                    double rr = (double) relyNm / totalNm * 100;
//                    DecimalFormat df = new DecimalFormat("0.00");
//                    rs.put("relyRate", df.format(rr) + "%");
//                    rs.put("relyDoubleRate", rr);
//                } else {
//                    rs.put("relyRate", "0.00%");
//                    rs.put("relyDoubleRate", 0.0);
//                }
//                if (noRelyNm != null && noRelyNm != 0) {
//                    double rr = (double) noRelyNm / totalNm * 100;
//                    DecimalFormat df = new DecimalFormat("0.00");
//                    rs.put("noRelyRate", df.format(rr) + "%");
//                    rs.put("noRelyDoubleRate", rr);
//                } else {
//                    rs.put("noRelyRate", "0.00%");
//                    rs.put("noRelyDoubleRate", 0.0);
//                }
//
//            } else {
//                rs.put("relyRate", "0.00%");
//                rs.put("relyDoubleRate", 0.0);
//                rs.put("noRelyRate", "0.00%");
//                rs.put("noRelyDoubleRate", 0.0);
//            }
//            resultMaps.add(rs);
//        }
        //合并结果集
        Map<String, Object> rs = new HashMap<>();
        Integer totalNm = total.getResult2().intValue();
        Integer relyNm = rely.getResult2().intValue();
        Integer noRelyNm = onRely.getResult2().intValue();
//        rs.put("name", rely.get(area + "Name"));
        if (SaveModel.cityLevel.equals(level+"")) {
        if (SaveModel.cityLevel.equals(level + "")) {
            rs.put("code", rely.getCity());
            rs.put("name", rely.getCityName());
        } else if (SaveModel.townLevel.equals(level+"")) {
        } else if (SaveModel.townLevel.equals(level + "")) {
            rs.put("code", rely.getTown());
            rs.put("name", rely.getTownName());
        } else if (SaveModel.OrgLevel.equals(level+"")) {
        } else if (SaveModel.OrgLevel.equals(level + "")) {
            rs.put("code", rely.getHospital());
            rs.put("name", rely.getHospitalName());
        }
        rs.put("noRelyCount", noRelyNm);
        rs.put("relyCount", relyNm);
        rs.put("total", totalNm);
//        rs.put("code", key);
        if (totalNm != null && totalNm != 0) {
            if (relyNm != null && relyNm != 0) {
                double rr = (double) relyNm / totalNm * 100;
@ -2009,32 +1961,32 @@ public class StatisticsESService {
    public JSONObject getRenewPercentAndChangePercent(String index, Integer level, String area, String year, String lowCode) {
        JSONObject jo = new JSONObject();
        String switchIndex = "";//转签index
        String signIndex ="1";//签约index
        String renewIndex =index;//续签index.
        String signIndex = "1";//签约index
        String renewIndex = index;//续签index.
        String date = year + "-06-30";
        try{
        try {
            if (level == 4) {
                //团队的转签
                if(StringUtils.isNoneBlank(lowCode)){
                if (StringUtils.isNoneBlank(lowCode)) {
                    //服务类型维度
                    switchIndex = "55";
                }else{
                } else {
                    switchIndex = "35";
                }
            } else if (level == 3) {
                //社区的转签
                if(StringUtils.isNoneBlank(lowCode)){
                if (StringUtils.isNoneBlank(lowCode)) {
                    //服务类型维度
                    switchIndex = "56";
                }else{
                } else {
                    switchIndex = "35";
                }
            } else {
                //区和市的转签
                if(StringUtils.isNoneBlank(lowCode)){
                if (StringUtils.isNoneBlank(lowCode)) {
                    //服务类型维度
                    switchIndex = "57";
                }else{
                } else {
                    switchIndex = "35";
                }
            }
@ -2042,36 +1994,36 @@ public class StatisticsESService {
            SaveModel renewSaveModel = new SaveModel();
            SaveModel switchSaveModel = new SaveModel();
            SaveModel signSaveModel = new SaveModel();
            if (StringUtils.isNotBlank(lowCode)){
            if (StringUtils.isNotBlank(lowCode)) {
                //续签量
                renewSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level,renewIndex,"2",lowCode);
                renewSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey, area, level, renewIndex, "2", lowCode);
                //转签量
                switchSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level,switchIndex,"2",lowCode);
            }else{
                switchSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey, area, level, switchIndex, "2", lowCode);
            } else {
                //续签量
                renewSaveModel=elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,level,renewIndex,"2");
                renewSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey, area, level, renewIndex, "2");
                //转签量
                switchSaveModel=elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,level,switchIndex,"2");
                switchSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey, area, level, switchIndex, "2");
            }
            int renewNum = renewSaveModel.getResult2().intValue();
            int switchNum = switchSaveModel.getResult2().intValue();
            //根据年度获取去年的签约数 签约指标是1
            if(StringUtils.isNoneBlank(lowCode)){
                if("3".equals(lowCode)){
            if (StringUtils.isNoneBlank(lowCode)) {
                if ("3".equals(lowCode)) {
                    //老年人
                    lowCode = "3";
                }else if("4".equals(lowCode)){
                } else if ("4".equals(lowCode)) {
                    //高血压
                    lowCode = "1";
                }else if("5".equals(lowCode)){
                } else if ("5".equals(lowCode)) {
                    //糖尿病
                    lowCode = "2";
                }
                signIndex = "17";
                signSaveModel=elasticsearchUtil.findOneDateQuotaLevel1(date,area,level,signIndex,"2",lowCode);
            }else{
                signSaveModel=elasticsearchUtil.findOneDateQuotaLevel0(date,area,level,signIndex,"2");
                signSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(date, area, level, signIndex, "2", lowCode);
            } else {
                signSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(date, area, level, signIndex, "2");
            }
            //签约量
            int signNum = signSaveModel.getResult2().intValue();
@ -2080,15 +2032,16 @@ public class StatisticsESService {
            jo.put("thisYearSwithch", switchNum);//今年的转签量
            jo.put("renewRange", getRange(renewNum, signNum, 2));//续签率  50.00%
            jo.put("switchRange", getRange(switchNum, renewNum, 2));//转签率
        }catch (Exception e){
        } catch (Exception e) {
            e.getMessage();
            jo.put("status","0");
            jo.put("error","查询失败"+e.getMessage());
            jo.put("status", "0");
            jo.put("error", "查询失败" + e.getMessage());
            return jo;
        }
        return jo;
    }
    public JSONObject getRenewAnalysis(String switchIndex, String switchIndexReson, String signIn, String signOut, String level, String code) throws Exception{
    public JSONObject getRenewAnalysis(String switchIndex, String switchIndexReson, String signIn, String signOut, String level, String code) throws Exception {
        JSONObject jo = new JSONObject();
        //获取统计的最新事件
@ -2127,6 +2080,7 @@ public class StatisticsESService {
        jo.put("switchTown", changeTownNum + "%");//今年的转签量
        return jo;
    }
    /**
     * 通用的方法 获取一级维度的数据
     *
@ -2136,11 +2090,12 @@ public class StatisticsESService {
     * @param timeKey
     * @return
     */
    private int getLevel1NumForRedis(String index, String level, String code, String timeKey) throws Exception{
    private int getLevel1NumForRedis(String index, String level, String code, String timeKey) throws Exception {
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,code,Integer.parseInt(level),index,"2");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey, code, Integer.parseInt(level), index, "2");
        return saveModel.getResult2().intValue();
    }
    /**
     * 通用的方法 获取二级维度的数据列表
     *
@ -2150,20 +2105,21 @@ public class StatisticsESService {
     * @param timeKey
     * @return
     */
    private JSONArray getLevel2JsonObjectForRedis(String index, String level, String code, String timeKey) throws Exception{
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,code,Integer.parseInt(level),index,"2");
    private JSONArray getLevel2JsonObjectForRedis(String index, String level, String code, String timeKey) throws Exception {
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel1(timeKey, code, Integer.parseInt(level), index, "2");
//        JSONObject jo = new JSONObject();
        JSONArray switchJo = new JSONArray();
        list.stream().forEach(one->{
            Map<String,Object> map = new HashMap<>();
            map.put("date",timeKey);
            map.put("code",one.getSlaveKey1());
            map.put("name",one.getSlaveKey1Name());
            map.put("num",one.getResult2());
        list.stream().forEach(one -> {
            Map<String, Object> map = new HashMap<>();
            map.put("date", timeKey);
            map.put("code", one.getSlaveKey1());
            map.put("name", one.getSlaveKey1Name());
            map.put("num", one.getResult2());
            switchJo.put(map);
        });
        return switchJo;
    }
    public String getRangeNoLast(int first, int second, int i) {
        if (second == 0 && first > 0) {
            return "100";
@ -2189,13 +2145,13 @@ public class StatisticsESService {
//        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        //获取微信关注的未交费
//        Map<String, Object> expenseStatus0 = getByIndexSingle(date, area, level, "49",dateFormat);
        SaveModel expenseStatus0 = elasticsearchUtil.findOneDateQuotaLevel0(date,area,level,"49","2");
        SaveModel expenseStatus0 = elasticsearchUtil.findOneDateQuotaLevel0(date, area, level, "49", "2");
        //获取微信关注的已交费
//        Map<String, Object> expenseStatus1 = getByIndexSingle(date, area, level, "50",dateFormat);
        SaveModel expenseStatus1 = elasticsearchUtil.findOneDateQuotaLevel0(date,area,level,"50","2");
        SaveModel expenseStatus1 = elasticsearchUtil.findOneDateQuotaLevel0(date, area, level, "50", "2");
        //获取已缴费的签约数
//        Map<String, Object> expenseStatus1Sigjn = getByIndexSingle(date, area, level, "1",dateFormat);
        SaveModel expenseStatus1Sigjn = elasticsearchUtil.findOneDateQuotaLevel0(date,area,level,"1","2");
        SaveModel expenseStatus1Sigjn = elasticsearchUtil.findOneDateQuotaLevel0(date, area, level, "1", "2");
        JSONObject jsonObject = new JSONObject();
        if (SaveModel.teamLevel.equals(level)) {
            jsonObject.put("name", expenseStatus1Sigjn.getTeamName());
@ -2207,14 +2163,15 @@ public class StatisticsESService {
            jsonObject.put("name", expenseStatus1Sigjn.getCityName());
        }
        jsonObject.put("code", area);
        Long  weChatAmount0 =  expenseStatus0.getResult2().longValue();
        Long  weChatAmount1 =  expenseStatus1.getResult2().longValue();
        Long  signAccount =  expenseStatus1Sigjn.getResult2().longValue();
        Long weChatAmount0 = expenseStatus0.getResult2().longValue();
        Long weChatAmount1 = expenseStatus1.getResult2().longValue();
        Long signAccount = expenseStatus1Sigjn.getResult2().longValue();
        jsonObject.put("weChatAmount0", weChatAmount0);//微信关注未交费数
        jsonObject.put("weChatAmount1", weChatAmount1);//微信关注已交费数
        jsonObject.put("bindRate", getRangeDouuble(weChatAmount1.intValue(), signAccount.intValue(), 2));//微信关注率
        return jsonObject;
    }
    /**
     * 获取某个指标某一天某一level的值 到达量(单条记录)
     *
@ -2226,8 +2183,8 @@ public class StatisticsESService {
     * @return
     * @throws Exception
     */
    private Map<String,Object> getByIndexSingle(String date, String area, int level, String index, SimpleDateFormat dateFormat) throws Exception {
        Map<String,Object> map =null;
    private Map<String, Object> getByIndexSingle(String date, String area, int level, String index, SimpleDateFormat dateFormat) throws Exception {
        Map<String, Object> map = null;
        if (date.compareTo(dateFormat.format(new Date())) >= 0) {
            map = getTodayLowLevelTotalSingle(date, area, level, index);
        }
@ -2254,7 +2211,7 @@ public class StatisticsESService {
            JSONObject json = new JSONObject(redisData);
            data.put("code", String.valueOf(json.get("code")));
            data.put("name", String.valueOf(json.get("name")));
            data.put("amount",String.valueOf(json.get("num")));
            data.put("amount", String.valueOf(json.get("num")));
        } else {
            Calendar today = Calendar.getInstance();
            today.add(Calendar.DATE, -1);
@ -2266,8 +2223,9 @@ public class StatisticsESService {
    /**
     * 去年的签约量,续签量和续签率 列表
     *
     * @param area
     * @param level 等级 1(5):团队 2(4)社区机构 (3)3区级 4(2)市级
     * @param level    等级 1(5):团队 2(4)社区机构 (3)3区级 4(2)市级
     * @param index
     * @param sort
     * @param lowLevel
@ -2289,19 +2247,19 @@ public class StatisticsESService {
        if (StringUtils.isEmpty(lowCode)) {
            //续签量
            renewSaveModels = elasticsearchUtil.findDateQuotaLevel0(timeKey,timeKey, area, level, index, "2", "",lowLevel);
            renewSaveModels = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index, "2", "", lowLevel);
        } else {
            //续签量
            renewSaveModels = elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey, area, level, index,"2",lowCode,"",low_level);
            renewSaveModels = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index, "2", lowCode, "", low_level);
        }
        if (renewSaveModels != null && renewSaveModels.size() > 0) {
            for (SaveModel saveModel : renewSaveModels) {
                if ("3".equals(low_level) && saveModel.getTown()!=null) {
                if ("3".equals(low_level) && saveModel.getTown() != null) {
                    renewMap.put(saveModel.getTown(), saveModel.getResult2().intValue());
                } else if ("4".equals(low_level) && saveModel.getHospital()!=null) {
                } else if ("4".equals(low_level) && saveModel.getHospital() != null) {
                    renewMap.put(saveModel.getHospital(), saveModel.getResult2().intValue());
                } else if ("5".equals(low_level) && saveModel.getTeam()!=null) {
                } else if ("5".equals(low_level) && saveModel.getTeam() != null) {
                    renewMap.put(saveModel.getTeam(), saveModel.getResult2().intValue());
                } else {
                    continue;
@ -2312,22 +2270,22 @@ public class StatisticsESService {
        //自建结果集
        resultList = getLowLevelMapKey(level, low_level, area);
        if (resultList != null && resultList.size()>0) {
        if (resultList != null && resultList.size() > 0) {
            DecimalFormat df = new DecimalFormat("0.0000");
            //查询去年的签约转map
            List<SaveModel> yearsList = new ArrayList();
            if (StringUtils.isBlank(lowCode)) {
                yearsList = elasticsearchUtil.findListDateQuotaLevel0(lastDate,"",Integer.valueOf(low_level),"1","2","");
                yearsList = elasticsearchUtil.findListDateQuotaLevel0(lastDate, "", Integer.valueOf(low_level), "1", "2", "");
            } else {
                if ("3".equals(lowCode)) {
                    //老年人
                    yearsList = elasticsearchUtil.findListDateQuotaLevel1(lastDate,"",Integer.valueOf(low_level),"17","2","","3");
                    yearsList = elasticsearchUtil.findListDateQuotaLevel1(lastDate, "", Integer.valueOf(low_level), "17", "2", "", "3");
                } else if ("4".equals(lowCode)) {
                    //高血压
                    yearsList = elasticsearchUtil.findListDateQuotaLevel1(lastDate,"",Integer.valueOf(low_level),"17","2","","1");
                    yearsList = elasticsearchUtil.findListDateQuotaLevel1(lastDate, "", Integer.valueOf(low_level), "17", "2", "", "1");
                } else if ("5".equals(lowCode)) {
                    //糖尿病
                    yearsList = elasticsearchUtil.findListDateQuotaLevel1(lastDate,"",Integer.valueOf(low_level),"17","2","","2");
                    yearsList = elasticsearchUtil.findListDateQuotaLevel1(lastDate, "", Integer.valueOf(low_level), "17", "2", "", "2");
                } else {
                }
            }
@ -2348,16 +2306,16 @@ public class StatisticsESService {
                int signNum = 0;
                int renewNum = 0;
                //获取去年签约的人数 默认是上个年度的最后一天
                if(resultMap!=null && resultMap.size()>0){
                if (resultMap != null && resultMap.size() > 0) {
                    SaveModel one = resultMap.get(reMap.get("code").toString());
                    if (one != null) {
                        signNum = one.getResult2().intValue();
                    }
                }else{
                } else {
                }
                if (renewMap!=null && renewMap.size()>0){
                     renewNum = renewMap.get(reMap.get("code").toString());
                }else{
                if (renewMap != null && renewMap.size() > 0) {
                    renewNum = renewMap.get(reMap.get("code").toString());
                } else {
                }
                reMap.put("renewNum", renewNum);
                reMap.put("signNum", signNum);
@ -2395,14 +2353,14 @@ public class StatisticsESService {
     *
     * @return
     */
    public JSONObject getBindingRate() throws Exception{
    public JSONObject getBindingRate() throws Exception {
        JSONObject result = new JSONObject();
//        Long bindCout = jdbcTemplate.queryForObject(getBindingCountSQL(), Long.class);
//        Long signCout = jdbcTemplate.queryForObject(getSignCountSQL(), Long.class);
        String quotaTime = elasticsearchUtil.getQuotaTime();
//        quotaTime = "2017-10-19";
        SaveModel saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(quotaTime,"350200",Integer.parseInt(SaveModel.cityLevel),"50","2");
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(quotaTime,"350200",Integer.parseInt(SaveModel.cityLevel),"1","2");
        SaveModel saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(quotaTime, "350200", Integer.parseInt(SaveModel.cityLevel), "50", "2");
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(quotaTime, "350200", Integer.parseInt(SaveModel.cityLevel), "1", "2");
        Integer bindCout = saveModel1.getResult2().intValue();
        Integer signCout = saveModel2.getResult2().intValue();
@ -2419,7 +2377,7 @@ public class StatisticsESService {
    public JSONArray getAVGSocreByMonth(String level, String area, String startDate, String endDate) throws Exception {
        //每个月的评分数
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,area,Integer.parseInt(level),"28","2","3");
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, Integer.parseInt(level), "28", "2", "3");
        //
        String sql = "SELECT count(1) as num FROM wlyy_doctor d WHERE d.czrq<= ? ";
        if (SaveModel.cityLevel.equals(level)) {
@ -2434,11 +2392,11 @@ public class StatisticsESService {
        Map<String, Object> rs = null;
        JSONArray jsRs = new JSONArray();
        DecimalFormat df = new DecimalFormat("0.00");
        for(SaveModel saveModel : list){
        for (SaveModel saveModel : list) {
            JSONObject json = new JSONObject();
            rs = jdbcTemplate.queryForMap(sql, saveModel.getQuotaDate(), area);
            json.put("month", dateFormat.format(saveModel.getQuotaDate()));
            double rr = (double) saveModel.getResult1() / (Double.parseDouble(rs.get("num")+""));
            double rr = (double) saveModel.getResult1() / (Double.parseDouble(rs.get("num") + ""));
            json.put("socre", df.format(rr));
            jsRs.put(json);
        }
@ -2457,7 +2415,7 @@ public class StatisticsESService {
            throw new RuntimeException("未找到团队信息");
        }
        //1.计算签约总数
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"1","2");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "1", "2");
        Long sc = saveModel.getResult2().longValue();
        JSONObject signTotal = new JSONObject();
        signTotal.put("signTotal", sc);
@ -2465,43 +2423,43 @@ public class StatisticsESService {
        //3.平均满意度
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"28","2");
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "28", "2");
//        String sql = "SELECT count(1) as num FROM wlyy_consult_team d WHERE d.czrq>= ? and d.czrq<=? and d.admin_team_code =? ";
//        Map<String, Object> map = jdbcTemplate.queryForMap(sql, startDate, endDate,admin.getId());
        SaveModel saveModel21 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"3","2");
        Double avgCout = saveModel2.getResult1()/saveModel21.getResult2();
        Map<String,Object> avgScore = new HashMap<>();
        avgScore.put("avgScore",avgCout);
        SaveModel saveModel21 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "3", "2");
        Double avgCout = saveModel2.getResult1() / saveModel21.getResult2();
        Map<String, Object> avgScore = new HashMap<>();
        avgScore.put("avgScore", avgCout);
        rs.put(avgScore);
        //4.获取咨詢數
        SaveModel saveModel3 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"3","2");
        Map<String,Object> consultCout = new HashMap<>();
        consultCout.put("consultCount",saveModel3.getResult2().longValue());
        SaveModel saveModel3 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "3", "2");
        Map<String, Object> consultCout = new HashMap<>();
        consultCout.put("consultCount", saveModel3.getResult2().longValue());
        rs.put(consultCout);
        //5.获取待预约
        SaveModel saveModel4 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"27","2");
        Map<String,Object> reservationCout = new HashMap<>();
        reservationCout.put("reservationCount",saveModel4.getResult2().longValue());
        SaveModel saveModel4 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "27", "2");
        Map<String, Object> reservationCout = new HashMap<>();
        reservationCout.put("reservationCount", saveModel4.getResult2().longValue());
        rs.put(reservationCout);
        //6.获取健康教育
        SaveModel saveModel5 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"59","2");
        Map<String,Object> articleCout = new HashMap<>();
        articleCout.put("articleCount",saveModel5.getResult2().longValue());
        SaveModel saveModel5 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "59", "2");
        Map<String, Object> articleCout = new HashMap<>();
        articleCout.put("articleCount", saveModel5.getResult2().longValue());
        rs.put(articleCout);
        //7.获取健康指导
        SaveModel saveModel6 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"5","2");
        Map<String,Object> guidanceCout = new HashMap<>();
        guidanceCout.put("guidanceCount",saveModel6.getResult2().longValue());
        SaveModel saveModel6 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "5", "2");
        Map<String, Object> guidanceCout = new HashMap<>();
        guidanceCout.put("guidanceCount", saveModel6.getResult2().longValue());
        rs.put(guidanceCout);
        //8.随访数目
        SaveModel saveModel7 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,admin.getId()+"",Integer.parseInt(SaveModel.teamLevel),"4","2");
        Map<String,Object> followupCout = new HashMap<>();
        followupCout.put("followupCount",saveModel7.getResult2().longValue());
        SaveModel saveModel7 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, admin.getId() + "", Integer.parseInt(SaveModel.teamLevel), "4", "2");
        Map<String, Object> followupCout = new HashMap<>();
        followupCout.put("followupCount", saveModel7.getResult2().longValue());
        rs.put(followupCout);
        return rs;
@ -2522,12 +2480,12 @@ public class StatisticsESService {
            throw new RuntimeException("未找到团队信息");
        }
        Long id = admin.getId();
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,id+"",Integer.parseInt(SaveModel.teamLevel),"1","2",String.valueOf(Integer.parseInt(type)+1));
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, id + "", Integer.parseInt(SaveModel.teamLevel), "1", "2", String.valueOf(Integer.parseInt(type) + 1));
        List<Map<String, Object>> rs = new ArrayList<>();
        for (SaveModel saveModel:list) {
        for (SaveModel saveModel : list) {
            Map<String, Object> map = new HashMap<>();
            map.put("applyDate",dateFormat3.format(saveModel.getQuotaDate()));
            map.put("signCount",saveModel.getResult2().longValue());
            map.put("applyDate", dateFormat3.format(saveModel.getQuotaDate()));
            map.put("signCount", saveModel.getResult2().longValue());
            rs.add(map);
        }
        JSONArray rsJs = new JSONArray(rs);
@ -2549,12 +2507,12 @@ public class StatisticsESService {
            throw new RuntimeException("未找到团队信息");
        }
        Long id = admin.getId();
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,id+"",Integer.parseInt(SaveModel.teamLevel),"42","2",String.valueOf(Integer.parseInt(type)+1));
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, id + "", Integer.parseInt(SaveModel.teamLevel), "42", "2", String.valueOf(Integer.parseInt(type) + 1));
        List<Map<String, Object>> rs = new ArrayList<>();
        for (SaveModel saveModel:list) {
        for (SaveModel saveModel : list) {
            Map<String, Object> map = new HashMap<>();
            map.put("applyDate",dateFormat3.format(saveModel.getQuotaDate()));
            map.put("signCount",saveModel.getResult2().longValue());
            map.put("applyDate", dateFormat3.format(saveModel.getQuotaDate()));
            map.put("signCount", saveModel.getResult2().longValue());
            rs.add(map);
        }
        JSONArray rsJs = new JSONArray(rs);
@ -2563,13 +2521,14 @@ public class StatisticsESService {
    /**
     * 获取咨询数和未回复数
     *
     * @param doctor
     * @param startDate
     * @param endDate
     * @param isNow
     * @return
     */
    public JSONObject getReyStatbyTeamNow(String doctor, String startDate, String endDate, String isNow) throws Exception{
    public JSONObject getReyStatbyTeamNow(String doctor, String startDate, String endDate, String isNow) throws Exception {
        AdminTeam admin = adminTeamDao.findByLeaderCode(doctor);
        if (admin == null) {
@ -2577,11 +2536,11 @@ public class StatisticsESService {
        }
        Long id = admin.getId();
        //家庭医生、健康咨询到达量
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,id+"",Integer.parseInt(SaveModel.teamLevel),"3","2");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, id + "", Integer.parseInt(SaveModel.teamLevel), "3", "2");
        Long totalCount = saveModel.getResult2().longValue();
        //健康咨询量  未回复到达量
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(startDate,endDate,id+"",Integer.parseInt(SaveModel.teamLevel),"22","2");
        SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, id + "", Integer.parseInt(SaveModel.teamLevel), "22", "2");
        Long noReyCount = saveModel.getResult2().longValue();
        JSONObject rs = new JSONObject();
        rs.put("onReyCount", noReyCount);
@ -2598,7 +2557,7 @@ public class StatisticsESService {
     * @param type      0 周,1月
     * @return
     */
    public JSONArray getAvgLine(String doctor, String startDate, String endDate, String type) throws Exception{
    public JSONArray getAvgLine(String doctor, String startDate, String endDate, String type) throws Exception {
        AdminTeam admin = adminTeamDao.findByLeaderCode(doctor);
        if (admin == null) {
@ -2606,26 +2565,26 @@ public class StatisticsESService {
        }
        Long id = admin.getId();
        //统计评分
        Integer interval = Integer.parseInt(type)+2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,id+"",Integer.parseInt(SaveModel.teamLevel),"28","2",interval+"");
        Integer interval = Integer.parseInt(type) + 2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, id + "", Integer.parseInt(SaveModel.teamLevel), "28", "2", interval + "");
        SaveModel saveModel = null;
        Map<String, Object> map = null;
        List<Map<String, Object>> rs = null;
                Double avgCount = 0.0;
        for(SaveModel one:list){
        Double avgCount = 0.0;
        for (SaveModel one : list) {
            String quotaDate = dateFormat.format(one.getQuotaDate());
            saveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate,id+"",Integer.parseInt(SaveModel.teamLevel),"59","2");
            avgCount = one.getResult1()/saveModel.getResult2();
            if(avgCount==0.0){
            saveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, id + "", Integer.parseInt(SaveModel.teamLevel), "59", "2");
            avgCount = one.getResult1() / saveModel.getResult2();
            if (avgCount == 0.0) {
                avgCount = 80.0;
            }
            map = new HashMap<>();
            if("0".equals(type)){
                map.put("dateNo",dateFormat.format(one.getQuotaDate()));
            }else{
                map.put("weekNo",dateFormat.format(one.getQuotaDate()));
            if ("0".equals(type)) {
                map.put("dateNo", dateFormat.format(one.getQuotaDate()));
            } else {
                map.put("weekNo", dateFormat.format(one.getQuotaDate()));
            }
            map.put("avgCount",avgCount);
            map.put("avgCount", avgCount);
            rs.add(map);
        }
        return new JSONArray(rs);
@ -2640,35 +2599,35 @@ public class StatisticsESService {
     * @param type      0周,1月
     * @return
     */
    public JSONObject getTeamConsultCount(String teamCode, String startDate, String endDate, String type) throws Exception{
    public JSONObject getTeamConsultCount(String teamCode, String startDate, String endDate, String type) throws Exception {
        //咨询未回复
        Integer interval = Integer.parseInt(type)+2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,teamCode,Integer.parseInt(SaveModel.teamLevel),"22","2",interval+"");
        Integer interval = Integer.parseInt(type) + 2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "22", "2", interval + "");
        //咨询总数
        List<SaveModel> list2 = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,teamCode,Integer.parseInt(SaveModel.teamLevel),"3","2",interval+"");
        List<SaveModel> list2 = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "3", "2", interval + "");
        Map<String, Object> map = null;
        List<Map<String, Object>> noReyList = new ArrayList<>();
        for (SaveModel one:list) {
        for (SaveModel one : list) {
            map = new HashMap<>();
            if ("0".equals(type)) {
                map.put("weekOfMonth",DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            }else{
                map.put("dateNo",dateFormat.format(one.getQuotaDate()));
                map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            } else {
                map.put("dateNo", dateFormat.format(one.getQuotaDate()));
            }
            map.put("noRely",one.getResult2().longValue());
            map.put("noRely", one.getResult2().longValue());
            noReyList.add(map);
        }
        List<Map<String, Object>> totalList = new ArrayList<>();
        for (SaveModel one:list) {
        for (SaveModel one : list) {
            map = new HashMap<>();
            if ("0".equals(type)) {
                map.put("weekOfMonth",DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            }else{
                map.put("dateNo",dateFormat.format(one.getQuotaDate()));
                map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            } else {
                map.put("dateNo", dateFormat.format(one.getQuotaDate()));
            }
            map.put("noRely",one.getResult2().longValue());
            map.put("noRely", one.getResult2().longValue());
            totalList.add(map);
        }
        JSONObject result = new JSONObject();
@ -2686,20 +2645,20 @@ public class StatisticsESService {
     * @param endDate
     * @return
     */
    public JSONObject getTeamFollowupLine(String teamCode, String startDate, String endDate, String type) throws Exception{
    public JSONObject getTeamFollowupLine(String teamCode, String startDate, String endDate, String type) throws Exception {
        Integer interval = Integer.parseInt(type)+2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,teamCode,Integer.parseInt(SaveModel.teamLevel),"4","2",interval+"");
        Integer interval = Integer.parseInt(type) + 2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "4", "2", interval + "");
        Map<String, Object> map = null;
        List<Map<String, Object>> totalList = new ArrayList<>();
        for(SaveModel one:list){
        for (SaveModel one : list) {
            map = new HashMap<>();
            if ("0".equals(type)) {
                map.put("dateNo",dateFormat.format(one.getQuotaDate()));
            }else{
                map.put("weekOfMonth",DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
                map.put("dateNo", dateFormat.format(one.getQuotaDate()));
            } else {
                map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            }
            map.put("followupCount",one.getResult2().longValue());
            map.put("followupCount", one.getResult2().longValue());
            totalList.add(map);
        }
@ -2708,36 +2667,105 @@ public class StatisticsESService {
    /**
     * 获取待预约量团队统计折线图
     *
     * @param teamCode
     * @param startDate
     * @param endDate
     * @param type
     * @return
     */
    public JSONArray getTeamResLine(String teamCode, String startDate, String endDate, String type) throws Exception{
    public JSONArray getTeamResLine(String teamCode, String startDate, String endDate, String type) throws Exception {
        startDate = elasticsearchUtil.changeTime(startDate + " 00:00:00");
        endDate = elasticsearchUtil.changeTime(endDate + " 23:59:59");
        Integer interval = Integer.parseInt(type)+2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,teamCode,Integer.parseInt(SaveModel.teamLevel),"27","2",interval+"");
        Integer interval = Integer.parseInt(type) + 2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "27", "2", interval + "");
        Map<String, Object> map = null;
        List<Map<String, Object>> totalList = new ArrayList<>();
        for(SaveModel one:list){
        for (SaveModel one : list) {
            map = new HashMap<>();
            if ("0".equals(type)) {
                map.put("dateNo",dateFormat.format(one.getQuotaDate()));
            }else{
                map.put("weekOfMonth",DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
                map.put("dateNo", dateFormat.format(one.getQuotaDate()));
            } else {
                map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            }
            map.put("reservationCount",one.getResult2().longValue());
            map.put("reservationCount", one.getResult2().longValue());
            totalList.add(map);
        }
        return new JSONArray(totalList);
    }
    public Map<String,Object> getPrescriptionCount(int level,String area,String disease) throws Exception{
        String index ="58";
        Map<String,Object> rs = new HashedMap();
    /**
     * 团队报告--长处方
     *
     * @param startDate
     * @param endDate
     * @param adminTeamId
     * @return
     * @throws Exception
     */
    public Map<String, Object> getPrescriptionTotalCount(String startDate, String endDate, Integer adminTeamId) throws Exception {
        //格式化时间
        startDate = startDate + " 00:00:00";
        endDate = endDate + " 23:59:59";
        String index = "58";
        Map<String, Object> rs = new HashedMap();
        //总数
        List<SaveModel> totalList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", null);
        //进行中
        List<SaveModel> processingList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "1");
        //已完成
        List<SaveModel> finishedList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "2");
        //已经取消
        List<SaveModel> canceledList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "3");
        //审核不通过
        List<SaveModel> unPassList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "4");
        //其他原因取消
        List<SaveModel> otherList = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, String.valueOf(adminTeamId), Integer.valueOf(SaveModel.teamLevel), index, "2", "5");
        //总数
        if (totalList != null && totalList.size() > 0) {
            rs.put("total", totalList.get(0).getResult2());
        } else {
            rs.put("total", 0);
        }
        //进行中
        if (processingList != null && processingList.size() > 0) {
            rs.put("processingCount", processingList.get(0).getResult2());
        } else {
            rs.put("processingCount", 0);
        }
        //已完成
        if (finishedList != null && finishedList.size() > 0) {
            rs.put("finishCount", finishedList.get(0).getResult2());
        } else {
            rs.put("finishCount", 0);
        }
        //已取消
        if (canceledList != null && canceledList.size() > 0) {
            rs.put("patientCancelCount", canceledList.get(0).getResult2());
        } else {
            rs.put("patientCancelCount", 0);
        }
        //审核不通过
        if (unPassList != null && unPassList.size() > 0) {
            rs.put("noReviewedCount", unPassList.get(0).getResult2());
        } else {
            rs.put("noReviewedCount", 0);
        }
        //其他原因取消
        if (otherList != null && otherList.size() > 0) {
            rs.put("payOuttimeCount", otherList.get(0).getResult2());
        } else {
            rs.put("payOuttimeCount", 0);
        }
        return rs;
    }
    public Map<String, Object> getPrescriptionCount(int level, String area, String disease) throws Exception {
        String index = "58";
        Map<String, Object> rs = new HashedMap();
        List<SaveModel> totalList = null;
        List<SaveModel> processingList = null;
        List<SaveModel> finishedList = null;
@ -2745,98 +2773,98 @@ public class StatisticsESService {
        List<SaveModel> unPassList = null;
        List<SaveModel> otherList = null;
        //总数
        if(StringUtils.isNotBlank(disease)){
            totalList = elasticsearchUtil.findListDateQuotaLevel1(null,area,level,index,"2",null,disease);
        }else{
            totalList = elasticsearchUtil.findListDateQuotaLevel0(null,area,level,index,"2",null);
        if (StringUtils.isNotBlank(disease)) {
            totalList = elasticsearchUtil.findListDateQuotaLevel1(null, area, level, index, "2", null, disease);
        } else {
            totalList = elasticsearchUtil.findListDateQuotaLevel0(null, area, level, index, "2", null);
        }
        //进行中
        if(StringUtils.isNotBlank(disease)){
            processingList = elasticsearchUtil.findListDateQuotaLevel2(null,area,level,index,"2",null,disease,"1");
        }else{
            processingList = elasticsearchUtil.findListDateQuotaLevel1(null,area,level,index,"2",null,disease);
        if (StringUtils.isNotBlank(disease)) {
            processingList = elasticsearchUtil.findListDateQuotaLevel2(null, area, level, index, "2", null, disease, "1");
        } else {
            processingList = elasticsearchUtil.findListDateQuotaLevel1(null, area, level, index, "2", null, "1");
        }
        //已完成
        if(StringUtils.isNotBlank(disease)){
            finishedList = elasticsearchUtil.findListDateQuotaLevel2(null,area,level,index,"2",null,disease,"2");
        }else{
            finishedList = elasticsearchUtil.findListDateQuotaLevel1(null,area,level,index,"2",null,disease);
        if (StringUtils.isNotBlank(disease)) {
            finishedList = elasticsearchUtil.findListDateQuotaLevel2(null, area, level, index, "2", null, disease, "2");
        } else {
            finishedList = elasticsearchUtil.findListDateQuotaLevel1(null, area, level, index, "2", null, "2");
        }
        //已经取消
        if(StringUtils.isNotBlank(disease)){
            canceledList = elasticsearchUtil.findListDateQuotaLevel2(null,area,level,index,"2",null,disease,"3");
        }else{
            canceledList = elasticsearchUtil.findListDateQuotaLevel1(null,area,level,index,"2",null,disease);
        if (StringUtils.isNotBlank(disease)) {
            canceledList = elasticsearchUtil.findListDateQuotaLevel2(null, area, level, index, "2", null, disease, "3");
        } else {
            canceledList = elasticsearchUtil.findListDateQuotaLevel1(null, area, level, index, "2", null, "3");
        }
        //审核不通过
        if(StringUtils.isNotBlank(disease)){
            unPassList = elasticsearchUtil.findListDateQuotaLevel2(null,area,level,index,"2",null,disease,"4");
        }else{
            unPassList = elasticsearchUtil.findListDateQuotaLevel1(null,area,level,index,"2",null,disease);
        if (StringUtils.isNotBlank(disease)) {
            unPassList = elasticsearchUtil.findListDateQuotaLevel2(null, area, level, index, "2", null, disease, "4");
        } else {
            unPassList = elasticsearchUtil.findListDateQuotaLevel1(null, area, level, index, "2", null, "4");
        }
        //其他原因取消
        if(StringUtils.isNotBlank(disease)){
            otherList = elasticsearchUtil.findListDateQuotaLevel2(null,area,level,index,"2",null,disease,"5");
        }else{
            otherList = elasticsearchUtil.findListDateQuotaLevel1(null,area,level,index,"2",null,disease);
        if (StringUtils.isNotBlank(disease)) {
            otherList = elasticsearchUtil.findListDateQuotaLevel2(null, area, level, index, "2", null, disease, "5");
        } else {
            otherList = elasticsearchUtil.findListDateQuotaLevel1(null, area, level, index, "2", null, "5");
        }
        //总数
        if(totalList!=null && totalList.size()>0){
            rs.put("total",totalList.get(0).getResult2());
        }else{
            rs.put("total",0);
        if (totalList != null && totalList.size() > 0) {
            rs.put("total", totalList.get(0).getResult2());
        } else {
            rs.put("total", 0);
        }
        //进行中
        if(processingList!=null && processingList.size()>0){
            rs.put("processingCount",processingList.get(0).getResult2());
        }else {
        if (processingList != null && processingList.size() > 0) {
            rs.put("processingCount", processingList.get(0).getResult2());
        } else {
            rs.put("processingCount", 0);
        }
        //已完成
        if(finishedList!=null && finishedList.size()>0){
            rs.put("finishCount",finishedList.get(0).getResult2());
        }else {
        if (finishedList != null && finishedList.size() > 0) {
            rs.put("finishCount", finishedList.get(0).getResult2());
        } else {
            rs.put("finishCount", 0);
        }
        //已取消
        if(canceledList!=null && canceledList.size()>0){
            rs.put("patientCancelCount",canceledList.get(0).getResult2());
        }else {
        if (canceledList != null && canceledList.size() > 0) {
            rs.put("patientCancelCount", canceledList.get(0).getResult2());
        } else {
            rs.put("patientCancelCount", 0);
        }
        //审核不通过
        if(unPassList!=null && unPassList.size()>0){
            rs.put("noReviewedCount",unPassList.get(0).getResult2());
        }else {
        if (unPassList != null && unPassList.size() > 0) {
            rs.put("noReviewedCount", unPassList.get(0).getResult2());
        } else {
            rs.put("noReviewedCount", 0);
        }
        //其他原因取消
        if(otherList!=null && otherList.size()>0){
            rs.put("payOuttimeCount",otherList.get(0).getResult2());
        }else {
        if (otherList != null && otherList.size() > 0) {
            rs.put("payOuttimeCount", otherList.get(0).getResult2());
        } else {
            rs.put("payOuttimeCount", 0);
        }
        return rs;
    }
    public JSONArray getTeamGuidLine(String teamCode, String startDate, String endDate, String type) throws Exception{
    public JSONArray getTeamGuidLine(String teamCode, String startDate, String endDate, String type) throws Exception {
        startDate = elasticsearchUtil.changeTime(startDate + " 00:00:00");
        endDate = elasticsearchUtil.changeTime(endDate + " 23:59:59");
        Integer interval = Integer.parseInt(type)+2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,teamCode,Integer.parseInt(SaveModel.teamLevel),"5","2",interval+"");
        Integer interval = Integer.parseInt(type) + 2;
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "5", "2", interval + "");
        Map<String, Object> map = null;
        List<Map<String, Object>> totalList = new ArrayList<>();
        for(SaveModel one:list){
        for (SaveModel one : list) {
            map = new HashMap<>();
            if ("0".equals(type)) {
                map.put("dateNo",dateFormat.format(one.getQuotaDate()));
            }else{
                map.put("weekOfMonth",DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
                map.put("dateNo", dateFormat.format(one.getQuotaDate()));
            } else {
                map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            }
            map.put("guidanceCount",one.getResult2().longValue());
            map.put("guidanceCount", one.getResult2().longValue());
            totalList.add(map);
        }
        return new JSONArray(totalList);
@ -2844,44 +2872,45 @@ public class StatisticsESService {
    /**
     * 续签 签入、签出统计
     *
     * @param teamCode
     * @param startDate
     * @param endDate
     * @param type
     * @return
     */
    public JSONObject getTeamRenewChangeLine(String teamCode, String startDate, String endDate, String type) throws Exception{
    public JSONObject getTeamRenewChangeLine(String teamCode, String startDate, String endDate, String type) throws Exception {
        startDate = elasticsearchUtil.changeTime(startDate + " 00:00:00");
        endDate = elasticsearchUtil.changeTime(endDate + " 23:59:59");
        Integer interval = Integer.parseInt(type)+2;
        Integer interval = Integer.parseInt(type) + 2;
        //签入统计
        List<SaveModel> inData = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,teamCode,Integer.parseInt(SaveModel.teamLevel),"34","2",interval+"");
        List<SaveModel> inData = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "34", "2", interval + "");
        Map<String, Object> map = null;
        List<Map<String, Object>> inList = new ArrayList<>();
        for(SaveModel one:inData){
        for (SaveModel one : inData) {
            map = new HashMap<>();
            if ("0".equals(type)) {
                map.put("dateNo",dateFormat.format(one.getQuotaDate()));
            }else{
                map.put("weekOfMonth",DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
                map.put("dateNo", dateFormat.format(one.getQuotaDate()));
            } else {
                map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            }
            map.put("inCount",one.getResult2().longValue());
            map.put("inCount", one.getResult2().longValue());
            inList.add(map);
        }
        //签出统计
        List<SaveModel> outData = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate,endDate,teamCode,Integer.parseInt(SaveModel.teamLevel),"35","2",interval+"");
        List<SaveModel> outData = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, teamCode, Integer.parseInt(SaveModel.teamLevel), "35", "2", interval + "");
        List<Map<String, Object>> outList = new ArrayList<>();
        for(SaveModel one:outData){
        for (SaveModel one : outData) {
            map = new HashMap<>();
            if ("0".equals(type)) {
                map.put("dateNo",dateFormat.format(one.getQuotaDate()));
            }else{
                map.put("weekOfMonth",DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
                map.put("dateNo", dateFormat.format(one.getQuotaDate()));
            } else {
                map.put("weekOfMonth", DateUtil.getWeekOfMonth(dateFormat.format(one.getQuotaDate())));
            }
            map.put("outCount",one.getResult2().longValue());
            map.put("outCount", one.getResult2().longValue());
            outList.add(map);
        }
        JSONObject rs = new JSONObject();
@ -2890,64 +2919,64 @@ public class StatisticsESService {
        return rs;
    }
    public List<Map<String,Object>> getPrescriptionAgeLowLevel(String level,String lowlevel,String area,String disease) throws Exception{
    public List<Map<String, Object>> getPrescriptionAgeLowLevel(String level, String lowlevel, String area, String disease) throws Exception {
        String quotaDate = elasticsearchUtil.getQuotaTime();
        List<SaveModel> list = elasticsearchUtil.findListDateQuotaLevel1(quotaDate,area,Integer.parseInt(level),"58","2",lowlevel,disease);
        List<SaveModel> list = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), "58", "2", lowlevel, disease);
        Map<String, Object> map = null;
        List<Map<String, Object>> rs = new ArrayList<>();
        if(list.size()>0){
            for(SaveModel one:list){
        if (list.size() > 0) {
            for (SaveModel one : list) {
                map = new HashMap<>();
                if(Integer.parseInt(lowlevel)>=Integer.parseInt(level)){
                    lowlevel = String.valueOf(Integer.parseInt(level)+1);
                if (Integer.parseInt(lowlevel) >= Integer.parseInt(level)) {
                    lowlevel = String.valueOf(Integer.parseInt(level) + 1);
                }
                if(SaveModel.townLevel.equals(lowlevel)){
                    map.put("code",one.getTown());
                    map.put("name",one.getTownName());
                }else if(SaveModel.OrgLevel.equals(lowlevel)){
                    map.put("code",one.getHospital());
                    map.put("name",one.getHospitalName());
                }else if(SaveModel.teamLevel.equals(lowlevel)){
                    map.put("code",one.getTeam());
                    map.put("name",one.getTeamName());
                if (SaveModel.townLevel.equals(lowlevel)) {
                    map.put("code", one.getTown());
                    map.put("name", one.getTownName());
                } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                    map.put("code", one.getHospital());
                    map.put("name", one.getHospitalName());
                } else if (SaveModel.teamLevel.equals(lowlevel)) {
                    map.put("code", one.getTeam());
                    map.put("name", one.getTeamName());
                }
                map.put("val",one.getResult2().longValue());
                map.put("val", one.getResult2().longValue());
            }
        }else{
        } else {
            //统计数据为空时,自建结果集
            List<Town> townList = null;
            List<Hospital> hospitalList = null;
            List<AdminTeam> adminTeams = null;
            if(SaveModel.cityLevel.equals(level)){
            if (SaveModel.cityLevel.equals(level)) {
                townList = townDao.findByCityCode(area);
                hospitalList = hospitalDao.findByCity(area);
                adminTeams = findAllTeam();
            }else if(SaveModel.townLevel.equals(level)){
            } else if (SaveModel.townLevel.equals(level)) {
                hospitalList = hospitalDao.findByTownCode(area);
//                adminTeams = adminTeamDao.findByTownCode(area);
                adminTeams = findAllTeam();
            }else if(SaveModel.OrgLevel.equals(level)){
            } else if (SaveModel.OrgLevel.equals(level)) {
                adminTeams = adminTeamDao.findByOrgCode(area);
            }
            if(SaveModel.townLevel.equals(lowlevel)){
                for(Town one : townList){
                    map.put("code",one.getCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            if (SaveModel.townLevel.equals(lowlevel)) {
                for (Town one : townList) {
                    map.put("code", one.getCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }else if(SaveModel.OrgLevel.equals(lowlevel)){
                for(Hospital one : hospitalList){
                    map.put("code",one.getCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                for (Hospital one : hospitalList) {
                    map.put("code", one.getCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }else if(SaveModel.teamLevel.equals(lowlevel)){
                for(AdminTeam one : adminTeams){
                    map.put("code",one.getLeaderCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            } else if (SaveModel.teamLevel.equals(lowlevel)) {
                for (AdminTeam one : adminTeams) {
                    map.put("code", one.getLeaderCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }
        }
@ -2978,90 +3007,89 @@ public class StatisticsESService {
        return adminTeams;
    }
    public Map<String,Object> getPrescriptionAgeHistogram(String level,String area,String disease) throws Exception{
    public Map<String, Object> getPrescriptionAgeHistogram(String level, String area, String disease) throws Exception {
        String quotaDate = elasticsearchUtil.getQuotaTime();
        //统计年龄分布
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate,area,Integer.parseInt(level),"60","2",disease);
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate, area, Integer.parseInt(level), "60", "2", disease);
        //获取总人数
        String sql = " SELECT COUNT(1) AS num FROM ( SELECT DISTINCT p.patient FROM wlyy_prescription p ) a ";
        Map<String, Object> count = jdbcTemplate.queryForMap(sql);
        Long num = (Long)count.get("num");
        Map<String,Object> map = new HashMap<>();
        DecimalFormat decimalFormat=new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
        Double ageRate = list.get(0).getResult2()/num;
        map.put("0ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(1).getResult2()/num;
        map.put("7ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(2).getResult2()/num;
        map.put("19ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(3).getResult2()/num;
        map.put("31ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(4).getResult2()/num;
        map.put("51ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(5).getResult2()/num;
        map.put("65ageRate",decimalFormat.format(ageRate));
        Long num = (Long) count.get("num");
        Map<String, Object> map = new HashMap<>();
        DecimalFormat decimalFormat = new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
        Double ageRate = list.get(0).getResult2() / num;
        map.put("0ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(1).getResult2() / num;
        map.put("7ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(2).getResult2() / num;
        map.put("19ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(3).getResult2() / num;
        map.put("31ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(4).getResult2() / num;
        map.put("51ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(5).getResult2() / num;
        map.put("65ageRate", decimalFormat.format(ageRate));
        return map;
    }
    /**
     *
     * @param level 等级
     * @param area 等级编码
     * @param level   等级
     * @param area    等级编码
     * @param disease 疾病编码
     * @param type 类型0.总量,1.进行中,2.已完成,3.居民取消,4.审核不通过,5.其他原因取消
     * @param type    类型0.总量,1.进行中,2.已完成,3.居民取消,4.审核不通过,5.其他原因取消
     * @return
     */
    public List<Map<String,Object>> getPrescriptionTotalHistogram(int level,String area,String disease,String type) throws Exception{
        String index ="58";
        List<Map<String,Object>> rs =new ArrayList<>();
    public List<Map<String, Object>> getPrescriptionTotalHistogram(int level, String area, String disease, String type) throws Exception {
        String index = "58";
        List<Map<String, Object>> rs = new ArrayList<>();
        Calendar dd = Calendar.getInstance();//定义日期实例
        Date endDate = new Date();
        dd.setTime(endDate);
        for(int i=1;i<7;i++){
            Map<String,Object> mc = new HashedMap();
        for (int i = 1; i < 7; i++) {
            Map<String, Object> mc = new HashedMap();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
            String date = sdf.format(dd.getTime());
            mc.put("month",date);
            mc.put("count",0);
            dd.add(Calendar.MONTH,-1);
            mc.put("month", date);
            mc.put("count", 0);
            dd.add(Calendar.MONTH, -1);
            rs.add(mc);
        }
        String startTime = DateUtil.dateToStr(dd.getTime(),"YYYY-MM-dd HH:mm:ss");
        String endTime = DateUtil.dateToStr(new Date(),"YYYY-MM-dd HH:mm:ss");
        String startTime = DateUtil.dateToStr(dd.getTime(), "YYYY-MM-dd HH:mm:ss");
        String endTime = DateUtil.dateToStr(new Date(), "YYYY-MM-dd HH:mm:ss");
        List<SaveModel> resultList = new ArrayList<>();
        if (StringUtils.isNotBlank(disease)){
        if (StringUtils.isNotBlank(disease)) {
            //类型0.总量,1.进行中,2.已完成,3.居民取消,4.审核不通过,5.其他原因取消
            if("0".equals(type)){
            if ("0".equals(type)) {
                //总数
                resultList =  elasticsearchUtil.findLineChartDateQuotaLevel1(startTime,endTime,area,level,index,"2","3",disease);
            }else{
                resultList =  elasticsearchUtil.findLineChartDateQuotaLevel2(startTime,endTime,area,level,index,"2","3",disease,type);
                resultList = elasticsearchUtil.findLineChartDateQuotaLevel1(startTime, endTime, area, level, index, "2", "3", disease);
            } else {
                resultList = elasticsearchUtil.findLineChartDateQuotaLevel2(startTime, endTime, area, level, index, "2", "3", disease, type);
            }
        }else{
            if("0".equals(type)){
        } else {
            if ("0".equals(type)) {
                //总数
                resultList =  elasticsearchUtil.findLineChartDateQuotaLevel0(startTime,endTime,area,level,index,"2","3");
            }else{
                resultList =  elasticsearchUtil.findLineChartDateQuotaLevel1(startTime,endTime,area,level,index,"2","3",type);
                resultList = elasticsearchUtil.findLineChartDateQuotaLevel0(startTime, endTime, area, level, index, "2", "3");
            } else {
                resultList = elasticsearchUtil.findLineChartDateQuotaLevel1(startTime, endTime, area, level, index, "2", "3", type);
            }
        }
        for(Map<String,Object> m:rs){
        for (Map<String, Object> m : rs) {
            Iterator iterator = resultList.iterator();
            while (iterator.hasNext()){
                SaveModel saveModel = (SaveModel)iterator.next();
                String monthKey = (String)m.get("month");
                String monthKeyEs="";
                if(saveModel.getQuotaDate()!=null){
                   monthKeyEs = DateUtil.changeQuotaDate(saveModel.getQuotaDate());
                }
                if(StringUtils.isNotBlank(monthKeyEs) && monthKey.equals(monthKeyEs)){
                    m.put("count",saveModel.getResult2());
                }else{
                    m.put("count",0);
            while (iterator.hasNext()) {
                SaveModel saveModel = (SaveModel) iterator.next();
                String monthKey = (String) m.get("month");
                String monthKeyEs = "";
                if (saveModel.getQuotaDate() != null) {
                    monthKeyEs = DateUtil.changeQuotaDate(saveModel.getQuotaDate());
                }
                if (StringUtils.isNotBlank(monthKeyEs) && monthKey.equals(monthKeyEs)) {
                    m.put("count", saveModel.getResult2());
                } else {
                    m.put("count", 0);
                }
            }
        }
@ -3069,67 +3097,66 @@ public class StatisticsESService {
    }
    /**
     *
     * @param level 等级 1 省 2 市 3 区县 4 机构 5团队
     * @param level    等级 1 省 2 市 3 区县 4 机构 5团队
     * @param lowlevel 等级 1 省 2 市 3 区县 4 机构 5团队
     * @param area
     * @param disease
     * @param type  1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消
     *               0.总量,1.进行中,2.已完成,3.居民取消,4.审核不通过,5.其他原因取消
     * @param type     1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消
     *                 0.总量,1.进行中,2.已完成,3.居民取消,4.审核不通过,5.其他原因取消
     * @return
     */
    public List<Map<String,Object>> getPrescriptionTotalLowLevel(int level,String lowlevel,String area,String disease,String type)throws Exception{
    public List<Map<String, Object>> getPrescriptionTotalLowLevel(int level, String lowlevel, String area, String disease, String type) throws Exception {
        String quotaDate = elasticsearchUtil.getQuotaTime();
        String index = "58";
        List<SaveModel> saveModels = new ArrayList<>();
        List<Map<String, Object>> rs = new ArrayList<>();
        //一级维度
        if (StringUtils.isEmpty(disease)){
        if (StringUtils.isEmpty(disease)) {
            //类型 1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消
            if("1".equals(type)){
                saveModels = elasticsearchUtil.findListDateQuotaLevel0(quotaDate,area,level,index,"2",lowlevel);
            }else if("2".equals(type) || "3".equals(type) || "4".equals(type)){
                saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate,area,level,index,"2",lowlevel,type);
            }else if("5".equals(type)){
                saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate,area,level,index,"2",lowlevel,"1");
            }else if("6".equals(type)) {
            if ("1".equals(type)) {
                saveModels = elasticsearchUtil.findListDateQuotaLevel0(quotaDate, area, level, index, "2", lowlevel);
            } else if ("2".equals(type) || "3".equals(type) || "4".equals(type)) {
                saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index, "2", lowlevel, type);
            } else if ("5".equals(type)) {
                saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index, "2", lowlevel, "1");
            } else if ("6".equals(type)) {
                saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index, "2", lowlevel, "5");
            }
        }else{
        } else {
            //类型 1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消
            if("1".equals(type)){
                saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate,area,level,index,"2",lowlevel,disease);
            }else if("2".equals(type) || "3".equals(type) || "4".equals(type)){
                saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate,area,level,index,"2",lowlevel,disease,type);
            }else if ("5".equals(type)){
                saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate,area,level,index,"2",lowlevel,disease,"1");
            }else if ("6".equals(type)){
                saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate,area,level,index,"2",lowlevel,disease,"5");
            if ("1".equals(type)) {
                saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index, "2", lowlevel, disease);
            } else if ("2".equals(type) || "3".equals(type) || "4".equals(type)) {
                saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index, "2", lowlevel, disease, type);
            } else if ("5".equals(type)) {
                saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index, "2", lowlevel, disease, "1");
            } else if ("6".equals(type)) {
                saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index, "2", lowlevel, disease, "5");
            }
        }
        if ("5".equals(lowlevel)){
        if ("5".equals(lowlevel)) {
            translateTeamLeaderName2(saveModels);
        }
        Map<String, Object> map = null;
        if(saveModels.size()>0){
            for(SaveModel one:saveModels){
        if (saveModels.size() > 0) {
            for (SaveModel one : saveModels) {
                map = new HashMap<>();
                if(Integer.parseInt(lowlevel)>=level){
                    lowlevel = String.valueOf(level+1);
                if (Integer.parseInt(lowlevel) >= level) {
                    lowlevel = String.valueOf(level + 1);
                }
                if(SaveModel.townLevel.equals(lowlevel)){
                    map.put("code",one.getTown());
                    map.put("name",one.getTownName());
                }else if(SaveModel.OrgLevel.equals(lowlevel)){
                    map.put("code",one.getHospital());
                    map.put("name",one.getHospitalName());
                }else if(SaveModel.teamLevel.equals(lowlevel)){
                    map.put("code",one.getTeam());
                    map.put("name",one.getTeamName());
                if (SaveModel.townLevel.equals(lowlevel)) {
                    map.put("code", one.getTown());
                    map.put("name", one.getTownName());
                } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                    map.put("code", one.getHospital());
                    map.put("name", one.getHospitalName());
                } else if (SaveModel.teamLevel.equals(lowlevel)) {
                    map.put("code", one.getTeam());
                    map.put("name", one.getTeamName());
                }
                map.put("val",one.getResult2().longValue());
                map.put("val", one.getResult2().longValue());
            }
        }else{
        } else {
            //统计数据为空时,自建结果集
//            List<Map<String, Object>> resultList = new ArrayList<>();
@ -3137,33 +3164,33 @@ public class StatisticsESService {
            List<Town> townList = null;
            List<Hospital> hospitalList = null;
            List<AdminTeam> adminTeams = null;
            if(SaveModel.cityLevel.equals(level)){
            if (SaveModel.cityLevel.equals(level)) {
                townList = townDao.findByCityCode(area);
                hospitalList = hospitalDao.findByCity(area);
                adminTeams = findAllTeam();
            }else if(SaveModel.townLevel.equals(level)){
            } else if (SaveModel.townLevel.equals(level)) {
                hospitalList = hospitalDao.findByTownCode(area);
                //adminTeams = adminTeamDao.findByTownCode(area);
            }else if(SaveModel.OrgLevel.equals(level)){
            } else if (SaveModel.OrgLevel.equals(level)) {
                adminTeams = adminTeamDao.findByOrgCode(area);
            }
            if(SaveModel.townLevel.equals(lowlevel)){
                for(Town one : townList){
                    map.put("code",one.getCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            if (SaveModel.townLevel.equals(lowlevel)) {
                for (Town one : townList) {
                    map.put("code", one.getCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }else if(SaveModel.OrgLevel.equals(lowlevel)){
                for(Hospital one : hospitalList){
                    map.put("code",one.getCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                for (Hospital one : hospitalList) {
                    map.put("code", one.getCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }else if(SaveModel.teamLevel.equals(lowlevel)){
                for(AdminTeam one : adminTeams){
                    map.put("code",one.getLeaderCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            } else if (SaveModel.teamLevel.equals(lowlevel)) {
                for (AdminTeam one : adminTeams) {
                    map.put("code", one.getLeaderCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }
        }
@ -3175,7 +3202,7 @@ public class StatisticsESService {
        Map<Integer, Map<String, Object>> leaders = getAllTeamLeaders();
        if (rs != null && rs.size() > 0) {
            for (SaveModel saveModel : rs) {
                if (saveModel.getTeam()!=null){
                if (saveModel.getTeam() != null) {
                    Integer id = Integer.valueOf(saveModel.getTeam());
                    String name = getTeamLeaderNameByTeamCode(leaders, id);
                    if (org.apache.commons.lang3.StringUtils.isNotBlank(name)) {
@ -3188,89 +3215,90 @@ public class StatisticsESService {
    }
    /**
     *各个年龄段的总数
     * 各个年龄段的总数
     *
     * @param level
     * @param area
     * @param disease
     * @return
     */
    public Map<String,Object> getPrescriptionAgeTotal(String level,String area,String disease) throws Exception{
    public Map<String, Object> getPrescriptionAgeTotal(String level, String area, String disease) throws Exception {
        String quotaDate = elasticsearchUtil.getQuotaTime();
        //统计年龄分布
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate,area,Integer.parseInt(level),"60","2",disease);
        List<SaveModel> list = elasticsearchUtil.findOneDateQuotaLevel2(quotaDate, area, Integer.parseInt(level), "60", "2", disease);
        //总数量
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate,area,Integer.parseInt(level),"60","2");
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, area, Integer.parseInt(level), "60", "2");
        Double num = saveModel.getResult2();
        Map<String,Object> map = new HashMap<>();
        DecimalFormat decimalFormat=new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
        Double ageRate = list.get(0).getResult2()/num;
        map.put("0ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(1).getResult2()/num;
        map.put("7ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(2).getResult2()/num;
        map.put("19ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(3).getResult2()/num;
        map.put("31ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(4).getResult2()/num;
        map.put("51ageRate",decimalFormat.format(ageRate));
        ageRate = list.get(5).getResult2()/num;
        map.put("65ageRate",decimalFormat.format(ageRate));
        map.put("0age",list.get(0).getResult2().longValue());
        map.put("7age",list.get(1).getResult2().longValue());
        map.put("19age",list.get(2).getResult2().longValue());
        map.put("31age",list.get(3).getResult2().longValue());
        map.put("51age",list.get(4).getResult2().longValue());
        map.put("65age",list.get(5).getResult2().longValue());
        map.put("total",saveModel.getResult2().longValue());
        Map<String, Object> map = new HashMap<>();
        DecimalFormat decimalFormat = new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
        Double ageRate = list.get(0).getResult2() / num;
        map.put("0ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(1).getResult2() / num;
        map.put("7ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(2).getResult2() / num;
        map.put("19ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(3).getResult2() / num;
        map.put("31ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(4).getResult2() / num;
        map.put("51ageRate", decimalFormat.format(ageRate));
        ageRate = list.get(5).getResult2() / num;
        map.put("65ageRate", decimalFormat.format(ageRate));
        map.put("0age", list.get(0).getResult2().longValue());
        map.put("7age", list.get(1).getResult2().longValue());
        map.put("19age", list.get(2).getResult2().longValue());
        map.put("31age", list.get(3).getResult2().longValue());
        map.put("51age", list.get(4).getResult2().longValue());
        map.put("65age", list.get(5).getResult2().longValue());
        map.put("total", saveModel.getResult2().longValue());
        return map;
    }
    public Map<String,Object> getPrescriptionDispatchingTotal(int level,String area,String disease)throws Exception{
    public Map<String, Object> getPrescriptionDispatchingTotal(int level, String area, String disease) throws Exception {
        List<SaveModel> seltList = null;//自取集合
        List<SaveModel> deliveryList = null;//物流配送集合
        List<SaveModel> healthDoctorList = null;//健管师配送集合
        String quotaTime = elasticsearchUtil.getQuotaTime();
        if(StringUtils.isNotBlank(disease)){
        if (StringUtils.isNotBlank(disease)) {
            //自取
            seltList = elasticsearchUtil.findListDateQuotaLevel2(quotaTime,area,level,"62","2","","1",disease);
            seltList = elasticsearchUtil.findListDateQuotaLevel2(quotaTime, area, level, "62", "2", "", "1", disease);
            //物流配送
            deliveryList = elasticsearchUtil.findListDateQuotaLevel2(quotaTime,area,level,"62","2","","2",disease);
            deliveryList = elasticsearchUtil.findListDateQuotaLevel2(quotaTime, area, level, "62", "2", "", "2", disease);
            //健管师配送
            healthDoctorList = elasticsearchUtil.findListDateQuotaLevel2(quotaTime,area,level,"62","2","","2",disease);
        }else{
            healthDoctorList = elasticsearchUtil.findListDateQuotaLevel2(quotaTime, area, level, "62", "2", "", "2", disease);
        } else {
            //自取
            seltList = elasticsearchUtil.findListDateQuotaLevel1(quotaTime,area,level,"62","2","","1");
            seltList = elasticsearchUtil.findListDateQuotaLevel1(quotaTime, area, level, "62", "2", "", "1");
            //物流配送
            deliveryList = elasticsearchUtil.findListDateQuotaLevel1(quotaTime,area,level,"62","2","","2");
            deliveryList = elasticsearchUtil.findListDateQuotaLevel1(quotaTime, area, level, "62", "2", "", "2");
            //健管师配送
            healthDoctorList = elasticsearchUtil.findListDateQuotaLevel1(quotaTime,area,level,"62","2","","2");
            healthDoctorList = elasticsearchUtil.findListDateQuotaLevel1(quotaTime, area, level, "62", "2", "", "2");
        }
        Map<String,Object> rs = new HashedMap();
        Map<String, Object> rs = new HashedMap();
        //自取数目
        if(seltList!=null && seltList.size()>0){
            rs.put("seltTotal",seltList.get(0).getResult2());
        }else{
            rs.put("seltTotal",0);
        if (seltList != null && seltList.size() > 0) {
            rs.put("seltTotal", seltList.get(0).getResult2());
        } else {
            rs.put("seltTotal", 0);
        }
        //快递配送
        if(deliveryList!=null && deliveryList.size()>0){
            rs.put("deliveryTotal",deliveryList.get(0).getResult2());
        }else{
            rs.put("deliveryTotal",0);
        if (deliveryList != null && deliveryList.size() > 0) {
            rs.put("deliveryTotal", deliveryList.get(0).getResult2());
        } else {
            rs.put("deliveryTotal", 0);
        }
        //健管师配送
        if(healthDoctorList!=null && healthDoctorList.size()>0){
            rs.put("doctorTotal",healthDoctorList.get(0).getResult2());
        }else{
            rs.put("doctorTotal",0);
        if (healthDoctorList != null && healthDoctorList.size() > 0) {
            rs.put("doctorTotal", healthDoctorList.get(0).getResult2());
        } else {
            rs.put("doctorTotal", 0);
        }
        return rs;
    }
@ -3279,45 +3307,45 @@ public class StatisticsESService {
     * @param level
     * @param area
     * @param disease
     * @param type 1.自取,2.快递配送,3.健管师配送
     * @param type    1.自取,2.快递配送,3.健管师配送
     * @return
     */
    public List<Map<String,Object>> getPrescriptionDispatchingHistogram(int level,String area,String disease,String type)throws Exception{
    public List<Map<String, Object>> getPrescriptionDispatchingHistogram(int level, String area, String disease, String type) throws Exception {
        List<Map<String,Object>> rs =new ArrayList<>();
        List<Map<String, Object>> rs = new ArrayList<>();
        Calendar dd = Calendar.getInstance();//定义日期实例
        Date endDate = new Date();
        dd.setTime(endDate);
        for(int i=1;i<7;i++){
            Map<String,Object> mc = new HashedMap();
        for (int i = 1; i < 7; i++) {
            Map<String, Object> mc = new HashedMap();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
            String date = sdf.format(dd.getTime());
            mc.put("month",date);
            mc.put("count",0);
            dd.add(Calendar.MONTH,-1);
            mc.put("month", date);
            mc.put("count", 0);
            dd.add(Calendar.MONTH, -1);
            rs.add(mc);
        }
        String startTime = DateUtil.dateToStr(dd.getTime(),"YYYY-MM-dd HH:mm:ss");
        String endTime = DateUtil.dateToStr(new Date(),"YYYY-MM-dd HH:mm:ss");
        String startTime = DateUtil.dateToStr(dd.getTime(), "YYYY-MM-dd HH:mm:ss");
        String endTime = DateUtil.dateToStr(new Date(), "YYYY-MM-dd HH:mm:ss");
        List<SaveModel> resultList = new ArrayList<>();
        if (StringUtils.isNotBlank(disease)){
            resultList =  elasticsearchUtil.findLineChartDateQuotaLevel2(startTime,endTime,area,level,"62","2","3",type,disease);
        }else{
            resultList =  elasticsearchUtil.findLineChartDateQuotaLevel1(startTime,endTime,area,level,"62","2","3",type);
        if (StringUtils.isNotBlank(disease)) {
            resultList = elasticsearchUtil.findLineChartDateQuotaLevel2(startTime, endTime, area, level, "62", "2", "3", type, disease);
        } else {
            resultList = elasticsearchUtil.findLineChartDateQuotaLevel1(startTime, endTime, area, level, "62", "2", "3", type);
        }
        for(Map<String,Object> m:rs){
        for (Map<String, Object> m : rs) {
            Iterator iterator = resultList.iterator();
            while (iterator.hasNext()){
                SaveModel saveModel = (SaveModel)iterator.next();
                if(saveModel.getQuotaDate()!=null){
                    String monthKey = (String)m.get("month");
            while (iterator.hasNext()) {
                SaveModel saveModel = (SaveModel) iterator.next();
                if (saveModel.getQuotaDate() != null) {
                    String monthKey = (String) m.get("month");
                    String monthKeyEs = DateUtil.changeQuotaDate(saveModel.getQuotaDate());
                    if(monthKey.equals(monthKeyEs)){
                        m.put("count",saveModel.getResult2());
                    if (monthKey.equals(monthKeyEs)) {
                        m.put("count", saveModel.getResult2());
                    }
                }
            }
@ -3326,49 +3354,48 @@ public class StatisticsESService {
    }
    /**
     *
     * @param level
     * @param lowlevel
     * @param area
     * @param disease
     * @param type 1.自取,2.快递配送,3.健管师配送..
     * @param type     1.自取,2.快递配送,3.健管师配送..
     * @return
     */
    public List<Map<String,Object>> getPrescriptionDispatchingLowLevel(int level,String lowlevel,String area,String disease,String type)throws Exception{
    public List<Map<String, Object>> getPrescriptionDispatchingLowLevel(int level, String lowlevel, String area, String disease, String type) throws Exception {
        String index = "62";
        String quotaDate = elasticsearchUtil.getQuotaTime();
        List<SaveModel> saveModels = new ArrayList<>();
        List<Map<String, Object>> rs = new ArrayList<>();
        if (StringUtils.isNotBlank(disease)){
        if (StringUtils.isNotBlank(disease)) {
            //类型 1.自取,2.快递配送,3.健管师配送
            saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate,area,level,index,"2",lowlevel,type,disease);
        }else{
            saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate,area,level,index,"2",lowlevel,type);
            saveModels = elasticsearchUtil.findListDateQuotaLevel2(quotaDate, area, level, index, "2", lowlevel, type, disease);
        } else {
            saveModels = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, level, index, "2", lowlevel, type);
        }
        if ("5".equals(lowlevel)){
        if ("5".equals(lowlevel)) {
            translateTeamLeaderName2(saveModels);
        }
        Map<String, Object> map = null;
        if(saveModels.size()>0){
            for(SaveModel one:saveModels){
        if (saveModels.size() > 0) {
            for (SaveModel one : saveModels) {
                map = new HashMap<>();
                if(Integer.parseInt(lowlevel)>=level){
                    lowlevel = String.valueOf(level+1);
                if (Integer.parseInt(lowlevel) >= level) {
                    lowlevel = String.valueOf(level + 1);
                }
                if(SaveModel.townLevel.equals(lowlevel)){
                    map.put("code",one.getTown());
                    map.put("name",one.getTownName());
                }else if(SaveModel.OrgLevel.equals(lowlevel)){
                    map.put("code",one.getHospital());
                    map.put("name",one.getHospitalName());
                }else if(SaveModel.teamLevel.equals(lowlevel)){
                    map.put("code",one.getTeam());
                    map.put("name",one.getTeamName());
                if (SaveModel.townLevel.equals(lowlevel)) {
                    map.put("code", one.getTown());
                    map.put("name", one.getTownName());
                } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                    map.put("code", one.getHospital());
                    map.put("name", one.getHospitalName());
                } else if (SaveModel.teamLevel.equals(lowlevel)) {
                    map.put("code", one.getTeam());
                    map.put("name", one.getTeamName());
                }
                map.put("val",one.getResult2().longValue());
                map.put("val", one.getResult2().longValue());
            }
        }else{
        } else {
            //统计数据为空时,自建结果集
//            List<Map<String, Object>> resultList = new ArrayList<>();
@ -3376,33 +3403,33 @@ public class StatisticsESService {
            List<Town> townList = null;
            List<Hospital> hospitalList = null;
            List<AdminTeam> adminTeams = null;
            if(SaveModel.cityLevel.equals(level)){
            if (SaveModel.cityLevel.equals(level)) {
                townList = townDao.findByCityCode(area);
                hospitalList = hospitalDao.findByCity(area);
                adminTeams = findAllTeam();
            }else if(SaveModel.townLevel.equals(level)){
            } else if (SaveModel.townLevel.equals(level)) {
                hospitalList = hospitalDao.findByTownCode(area);
                //adminTeams = adminTeamDao.findByTownCode(area);
            }else if(SaveModel.OrgLevel.equals(level)){
            } else if (SaveModel.OrgLevel.equals(level)) {
                adminTeams = adminTeamDao.findByOrgCode(area);
            }
            if(SaveModel.townLevel.equals(lowlevel)){
                for(Town one : townList){
                    map.put("code",one.getCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            if (SaveModel.townLevel.equals(lowlevel)) {
                for (Town one : townList) {
                    map.put("code", one.getCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }else if(SaveModel.OrgLevel.equals(lowlevel)){
                for(Hospital one : hospitalList){
                    map.put("code",one.getCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                for (Hospital one : hospitalList) {
                    map.put("code", one.getCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }else if(SaveModel.teamLevel.equals(lowlevel)){
                for(AdminTeam one : adminTeams){
                    map.put("code",one.getLeaderCode());
                    map.put("name",one.getName());
                    map.put("val",0);
            } else if (SaveModel.teamLevel.equals(lowlevel)) {
                for (AdminTeam one : adminTeams) {
                    map.put("code", one.getLeaderCode());
                    map.put("name", one.getName());
                    map.put("val", 0);
                }
            }
        }
@ -3413,58 +3440,59 @@ public class StatisticsESService {
    /**
     * 获取下部部费用平均值或总数
     *
     * @param level
     * @param lowlevel
     * @param area
     * @param disease
     * @param type 1.总量,2.平均值
     * @param type     1.总量,2.平均值
     * @return
     */
    public List<Map<String,Object>> getPrescriptionCostLowLevel(String level,String lowlevel,String area,String disease,String type) throws Exception{
    public List<Map<String, Object>> getPrescriptionCostLowLevel(String level, String lowlevel, String area, String disease, String type) throws Exception {
        String quotaDate = elasticsearchUtil.getQuotaTime();
        //1.总量
        List<SaveModel> list = elasticsearchUtil.findListDateQuotaLevel1(quotaDate,area,Integer.parseInt(level),"61","2",lowlevel,disease);
        Map<String,Object> map = null;
        List<Map<String,Object>> countList = new ArrayList<>();
        if("1".equals(type)){
            for(SaveModel one:list){
        List<SaveModel> list = elasticsearchUtil.findListDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), "61", "2", lowlevel, disease);
        Map<String, Object> map = null;
        List<Map<String, Object>> countList = new ArrayList<>();
        if ("1".equals(type)) {
            for (SaveModel one : list) {
                map = new HashMap<>();
                if(SaveModel.townLevel.equals(lowlevel)){
                    map.put("code",one.getTown());
                    map.put("name",one.getTownName());
                }else if(SaveModel.OrgLevel.equals(lowlevel)){
                    map.put("code",one.getHospital());
                    map.put("name",one.getHospitalName());
                }else if(SaveModel.teamLevel.equals(lowlevel)){
                    map.put("code",one.getTeam());
                    map.put("name",one.getTeamName());
                }
                map.put("val",decimalFormat.format(one.getResult1()/100));
                if (SaveModel.townLevel.equals(lowlevel)) {
                    map.put("code", one.getTown());
                    map.put("name", one.getTownName());
                } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                    map.put("code", one.getHospital());
                    map.put("name", one.getHospitalName());
                } else if (SaveModel.teamLevel.equals(lowlevel)) {
                    map.put("code", one.getTeam());
                    map.put("name", one.getTeamName());
                }
                map.put("val", decimalFormat.format(one.getResult1() / 100));
                countList.add(map);
            }
        }else{
        } else {
            //2.平均值
            //去重获取总人数,计算人均费用
            String sql = "";
            for(SaveModel one:list){
            for (SaveModel one : list) {
                sql = "  select count(DISTINCT(s.patient)) as num from wlyy_prescription_pay p left join wlyy_prescription s on p.prescription_code = s. CODE  ";
                sql +=" and  p.trace_time <= "+one.getQuotaDate();
                sql += " and  p.trace_time <= " + one.getQuotaDate();
                Map<String, Object> count = jdbcTemplate.queryForMap(sql);
                map = new HashMap<>();
                if(SaveModel.townLevel.equals(lowlevel)){
                    map.put("code",one.getTown());
                    map.put("name",one.getTownName());
                }else if(SaveModel.OrgLevel.equals(lowlevel)){
                    map.put("code",one.getHospital());
                    map.put("name",one.getHospitalName());
                }else if(SaveModel.teamLevel.equals(lowlevel)){
                    map.put("code",one.getTeam());
                    map.put("name",one.getTeamName());
                }
                Long num = (Long)count.get("num");
                String avg = decimalFormat.format(one.getResult1()/num);
                map.put("val",avg);
                if (SaveModel.townLevel.equals(lowlevel)) {
                    map.put("code", one.getTown());
                    map.put("name", one.getTownName());
                } else if (SaveModel.OrgLevel.equals(lowlevel)) {
                    map.put("code", one.getHospital());
                    map.put("name", one.getHospitalName());
                } else if (SaveModel.teamLevel.equals(lowlevel)) {
                    map.put("code", one.getTeam());
                    map.put("name", one.getTeamName());
                }
                Long num = (Long) count.get("num");
                String avg = decimalFormat.format(one.getResult1() / num);
                map.put("val", avg);
                countList.add(map);
            }
        }
@ -3473,66 +3501,80 @@ public class StatisticsESService {
    /**
     * 获取中部费用平均值
     *
     * @param level
     * @param area
     * @param disease
     * @param startDate
     * @param endDate
     * @param type 1.按日,2.按周,3.按月
     * @param type      1.按日,2.按周,3.按月
     */
    public List<Map<String,Object>> getPrescriptionCostAvgLine(String level,String area,String disease,String startDate,String endDate,String type) throws Exception{
    public List<Map<String, Object>> getPrescriptionCostAvgLine(String level, String area, String disease, String startDate, String endDate, String type) throws Exception {
        startDate = elasticsearchUtil.changeTime(startDate += " 00:00:00");
        endDate = elasticsearchUtil.changeTime(endDate += " 23:59:59");
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate,endDate,area,Integer.parseInt(level),"61","2",type,disease);
        List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, Integer.parseInt(level), "61", "2", type, disease);
        String sql = "";
        Map<String,Object> map = null;
        List<Map<String,Object>> countList = new ArrayList<>();
        for(SaveModel one:list){
        Map<String, Object> map = null;
        List<Map<String, Object>> countList = new ArrayList<>();
        for (SaveModel one : list) {
            sql = "  select count(DISTINCT(s.patient)) as num from wlyy_prescription_pay p left join wlyy_prescription s on p.prescription_code = s. CODE  ";
            sql += " and  p.trace_time <= "+one.getQuotaDate();
            if(SaveModel.townLevel.equals(level)||SaveModel.cityLevel.equals(level)){
                sql += " and LEFT(s.hospital,6) ='" + area+ "' ";
            }else if(SaveModel.OrgLevel.equals(level)){
                sql += " and s.hospital ='" + area+ "' ";
            }else if(SaveModel.teamLevel.equals(level)){
                sql += " and s.admin_team_id ='" + area+ "' ";
            sql += " and  p.trace_time <= " + one.getQuotaDate();
            if (SaveModel.townLevel.equals(level) || SaveModel.cityLevel.equals(level)) {
                sql += " and LEFT(s.hospital,6) ='" + area + "' ";
            } else if (SaveModel.OrgLevel.equals(level)) {
                sql += " and s.hospital ='" + area + "' ";
            } else if (SaveModel.teamLevel.equals(level)) {
                sql += " and s.admin_team_id ='" + area + "' ";
            }
            Map<String, Object> count = jdbcTemplate.queryForMap(sql);
            Long num = (Long)count.get("num");
            String avg = decimalFormat.format(one.getResult1()/num);
            Long num = (Long) count.get("num");
            String avg = decimalFormat.format(one.getResult1() / num);
            map = new HashMap<>();
            map.put("avg",avg);
            map.put("date",dateFormat.format(one.getQuotaDate()));
            map.put("avg", avg);
            map.put("date", dateFormat.format(one.getQuotaDate()));
            countList.add(map);
        }
        return countList;
    }
    public Map<String,Object> getPrescriptionCost(String level,String area,String disease) throws Exception{
    public Map<String, Object> getPrescriptionCost(String level, String area, String disease) throws Exception {
        SaveModel saveModel = null;
        String quotaDate = elasticsearchUtil.getQuotaTime();
        if(StringUtils.isNotEmpty(disease)){
            saveModel = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate,area,Integer.parseInt(level),"61","2",disease);
        }else{
            saveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate,area,Integer.parseInt(level),"61","2");
        if (StringUtils.isNotEmpty(disease)) {
            saveModel = elasticsearchUtil.findOneDateQuotaLevel1(quotaDate, area, Integer.parseInt(level), "61", "2", disease);
        } else {
            saveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, area, Integer.parseInt(level), "61", "2");
        }
        String sql = "  select count(DISTINCT(s.patient)) as num from wlyy_prescription_pay p left join wlyy_prescription s on p.prescription_code = s. CODE  ";
        sql += " and  p.trace_time <= "+dateFormat3.parse(quotaDate);
        if(SaveModel.townLevel.equals(level)||SaveModel.cityLevel.equals(level)){
            sql += " and LEFT(s.hospital,6) ='" + area+ "' ";
        }else if(SaveModel.OrgLevel.equals(level)){
            sql += " and s.hospital ='" + area+ "' ";
        }else if(SaveModel.teamLevel.equals(level)){
            sql += " and s.admin_team_id ='" + area+ "' ";
        sql += " and  p.trace_time <= " + dateFormat3.parse(quotaDate);
        if (SaveModel.townLevel.equals(level) || SaveModel.cityLevel.equals(level)) {
            sql += " and LEFT(s.hospital,6) ='" + area + "' ";
        } else if (SaveModel.OrgLevel.equals(level)) {
            sql += " and s.hospital ='" + area + "' ";
        } else if (SaveModel.teamLevel.equals(level)) {
            sql += " and s.admin_team_id ='" + area + "' ";
        }
        Map<String, Object> count = jdbcTemplate.queryForMap(sql);
        Long num = (Long)count.get("num");
        Map<String,Object> rs = new HashedMap();
        Long num = (Long) count.get("num");
        Map<String, Object> rs = new HashedMap();
        BigDecimal s = BigDecimal.valueOf(num);
        BigDecimal a = BigDecimal.valueOf(saveModel.getResult2()/num);
        rs.put("sum",s.divide(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP));
        rs.put("avg",a.divide((new BigDecimal(100))).setScale(2,BigDecimal.ROUND_HALF_UP));
        BigDecimal a = BigDecimal.valueOf(saveModel.getResult2() / num);
        rs.put("sum", s.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP));
        rs.put("avg", a.divide((new BigDecimal(100))).setScale(2, BigDecimal.ROUND_HALF_UP));
        return rs;
    }
    public JSONObject getAVGSocre(String level, String area) throws Exception {
        JSONObject resultJSON = new JSONObject();
        String quotaDate = elasticsearchUtil.getQuotaTime();
        SaveModel saveModel = elasticsearchUtil.findOneDateQuotaLevel0(quotaDate, area, Integer.parseInt(level), "28", "2");
        JSONObject json = new JSONObject();
        json.put("avgCount", getRangeDouuble(saveModel.getResult1(), saveModel.getResult2().intValue(), 2));
        resultJSON.put("rs",json);
        return resultJSON;
    }
}

+ 25 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/third/fzzb/HealthEducationArticleService.java

@ -32,7 +32,9 @@ public class HealthEducationArticleService extends BaseService{
    @Autowired
    private DoctorDao doctorDao;
    private String baseUrl = "http://service.yihu.com:8085/WsPlatform/rest";
//    private String baseUrl = "http://service.yihu.com:8085/WsPlatform/rest";
    private String baseUrl = "http://172.17.110.230:83/WsPlatform/rest";
//    private String baseUrl = "http://172.19.103.87:9088/JkEdu";
    @Value("${yihu.yihu_OpenPlatform_appId}")
    private String clientId;
@ -46,6 +48,7 @@ public class HealthEducationArticleService extends BaseService{
    private String cancelArticleCollection = "JkEdu.Behavior.cancelArticleCollection";//取消收藏接口
    private String saveArticleCollection = "JkEdu.Behavior.saveArticleCollection";//医生收藏接口
    private String getDoctorArticalByUserId = "JkEdu.Article.getDoctorArticalByUserId";//医生发表文章接口
    private String getArticalList = "JkEdu.Article.getArticalList";//获取文章列表 多ID
    /**
     * 封装入参
@ -308,4 +311,25 @@ public class HealthEducationArticleService extends BaseService{
        }
    }
    public JSONArray getArticalList(String articleId,int articleState,int pageIndex,int pageSize) throws Exception{
        JSONArray re = new JSONArray();
        JSONObject json = null;
        try{
            JSONObject param = new JSONObject();
            param.put("articleId",articleId);
            param.put("articleState",articleState);
            param.put("pageIndex",pageIndex);
            param.put("pageSize",pageSize);
            String response = httpClientUtil.httpPost(baseUrl,getParamsMap(getArticalList,param.toString(),"1"));
            json = JSON.parseObject(response);
        }catch (Exception e){
            e.printStackTrace();
            return re;
        }
        if("10000".equals(json.getString("Code"))){
            return json.getJSONArray("Result");
        }else {
            throw new Exception(json.getString("Message"));
        }
    }
}

+ 15 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/ElasticsearchUtil.java

@ -628,6 +628,20 @@ public class ElasticsearchUtil {
        List list = findDateQuotaLevel1(quotaDate, quotaDate, area, level, index, timelevel,null, null, null);
        return list;
    }
    /**
     * 1级维度
     * 查询某一天某一个所有1级维度下的指标 例如某个机构下的所有维度的患者列表
     *
     * @param area      code  厦门市 350200
     * @param level     等级 1 省 2 市 3 区县 4 机构 5团队
     * @param index     指标code
     * @param timelevel // 1日 2年
     * @return
     */
    public List<SaveModel> findOneDateQuotaLevel1(String startDate,String endDate, String area, int level, String index, String timelevel) throws Exception {
        List list = findDateQuotaLevel1(startDate, endDate, area, level, index, timelevel,null, null, null);
        return list;
    }
    /**
     * 2级维度
     * 查询某一天某一个2级维度的某个1级维度和2级维度下的指标  例如查询65岁以上的高血压患者
@ -854,6 +868,7 @@ public class ElasticsearchUtil {
    /**
     * 将参数转换成需要的SaveModel里的标识
     * @param level 等级  4 市  3区  2社区 1团队
     *  转换后的level  等级  2 市  3区  4社区 5团队
     * @return
     * @author zhangdan
     * @time 2017-10-18

+ 22 - 4
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/health/DoctorHealthEduArticleController.java

@ -612,9 +612,9 @@ public class DoctorHealthEduArticleController extends WeixinBaseController {
                                       @ApiParam(name = "firstLevelCategoryId", value = "一级类别ID ,多个逗号隔开")
                                       @RequestParam(value = "firstLevelCategoryId", required = false) String firstLevelCategoryId,
                                       @ApiParam(name = "pageIndex", value = "起始页数 0开始,默认0")
                                       @RequestParam(value = "pageIndex", required = false) Integer pageIndex,
                                       @RequestParam(value = "pageIndex", required = false, defaultValue = "0") Integer pageIndex,
                                       @ApiParam(name = "pageSize", value = "每页显示数 ,默认5")
                                       @RequestParam(value = "pageSize", required = false) Integer pageSize){
                                       @RequestParam(value = "pageSize", required = false, defaultValue = "5") Integer pageSize){
        try {
            com.alibaba.fastjson.JSONArray response = healthEducationArticleService.getDoctorArticalList(articleTitle,articleState,firstLevelCategoryId,pageIndex,pageSize,getUID());
//            com.alibaba.fastjson.JSONArray response = healthEducationArticleService.getDoctorArticalList(articleTitle,articleState,firstLevelCategoryId,pageIndex,pageSize,"0de7295862dd11e69faffa163e8aee56");
@ -717,9 +717,9 @@ public class DoctorHealthEduArticleController extends WeixinBaseController {
                                       @ApiParam(name = "firstLevelCategoryId", value = "一级类别ID ,多个逗号隔开")
                                       @RequestParam(value = "firstLevelCategoryId", required = false) String firstLevelCategoryId,
                                       @ApiParam(name = "pageIndex", value = "起始页数 0开始,默认0")
                                       @RequestParam(value = "pageIndex", required = false) Integer pageIndex,
                                       @RequestParam(value = "pageIndex", required = false, defaultValue = "0") Integer pageIndex,
                                       @ApiParam(name = "pageSize", value = "每页显示数 ,默认5")
                                       @RequestParam(value = "pageSize", required = false) Integer pageSize){
                                       @RequestParam(value = "pageSize", required = false, defaultValue = "5") Integer pageSize){
        try {
            com.alibaba.fastjson.JSONArray response = healthEducationArticleService.getDoctorArticalByUserId(articleTitle,articleState,firstLevelCategoryId,pageIndex,pageSize,getUID());
//            com.alibaba.fastjson.JSONArray response = healthEducationArticleService.getDoctorArticalByUserId(articleTitle,articleState,firstLevelCategoryId,pageIndex,pageSize,"0de7295862dd11e69faffa163e8aee56");
@ -730,4 +730,22 @@ public class DoctorHealthEduArticleController extends WeixinBaseController {
        }
    }
    @RequestMapping(value = "getArticalList",method = RequestMethod.GET)
    @ApiOperation("获取文章列表 多ID")
    public String getDoctorArticalByUserId(@ApiParam(name = "articleId", value = "文章ID")
                                           @RequestParam(value = "articleId", required = false) String articleId,
                                           @ApiParam(name = "pageIndex", value = "起始页数 0开始,默认0")
                                           @RequestParam(value = "pageIndex", required = false ,defaultValue = "0") int pageIndex,
                                           @ApiParam(name = "pageSize", value = "每页显示数 ,默认5")
                                           @RequestParam(value = "pageSize", required = false ,defaultValue = "5") int pageSize){
        try {
            com.alibaba.fastjson.JSONArray response = healthEducationArticleService.getArticalList(articleId,1,pageIndex,pageSize);
            return write(200,"查询成功!","data",response);
        }catch (Exception e){
            e.printStackTrace();
            return error(-1,"查询失败!");
        }
    }
}

+ 34 - 27
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/EsStatisticsController.java

@ -31,7 +31,7 @@ import java.util.TreeMap;
 * Created by chenweida on 2017/10/13.
 */
@Controller
@RequestMapping(value = "/esstatistics", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, method = {RequestMethod.GET, RequestMethod.POST})
@RequestMapping(value = "/statistics", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, method = {RequestMethod.GET, RequestMethod.POST})
@Api(description = "ES统计查询")
public class EsStatisticsController extends BaseController {
@ -550,6 +550,8 @@ public class EsStatisticsController extends BaseController {
                    } else if (idx.equals("28")) {
                        //level=4&area=350200&sort=1&index=28&date=undefined&lowLevel=2
                        result.put("index_" + idx, statisticsESService.getAvgAllInfo(level, area, lowLevel));
                        //列表先用旧版  因为之前没有数据 等数据生成在切换到新版
                       // result.put("index_" + idx, statisticsService.getAvgAllInfo(levelTemp, area, lowLevelTemp));
                    } else if (idx.equals("13")) {
                        // sort=1&date=2017-07-13&level=4&index=13&area=350200&lowCode=
                        idx="1";
@ -677,15 +679,7 @@ public class EsStatisticsController extends BaseController {
                lowlevel = elasticsearchUtil.changeLevel(Integer.parseInt(lowlevel))+"";
            }
            JSONObject data = null;
//            if (Constant.getNowYear().equals(year)) {
//                data = statisticsESService.getConsultingStatisticsList(level, area, lowlevel, null);
//            } else if (org.springframework.util.StringUtils.isEmpty(year)) {
//                data = statisticsESService.getConsultingStatisticsList(level, area, lowlevel, null);
////                data = statisticsService.getConsultingStatisticsListAll(level, area, lowlevel, year);
//            } else {
            data = statisticsESService.getConsultingStatisticsList(level, area, lowlevel, year);
//            }
            if (data != null) {
                return write(200, "查询成功", "data", data);
            } else {
@ -715,19 +709,7 @@ public class EsStatisticsController extends BaseController {
        try {
            //版与旧版统计适配
            level = elasticsearchUtil.changeLevel(level);
            JSONObject data = null;
//            if (Constant.getNowYear().equals(year)) {
//                //查今年的查找redis即可
//                data = statisticsService.getConsultingTitle(level, area);
//            } else if (org.springframework.util.StringUtils.isEmpty(year)) {
//                //为空默认查询全部
//                //查找redis的然后再添加去年年度的
//                data = statisticsService.getConsultingTitleAll(level, area, year);
//            } else {
//                //去数据库查找年份
//                data = statisticsService.getConsultingTitleWithYear(level, area, year);
//            }
            data = statisticsESService.getConsultingTitle(level, area, year);
            JSONObject data = statisticsESService.getConsultingTitle(level, area, year);
            if (data != null) {
                return write(200, "查询成功", "data", data);
            } else {
@ -789,7 +771,7 @@ public class EsStatisticsController extends BaseController {
    /**
     * 获取得分平均数
     *
     * http://172.19.103.11:9092/wlyy//statistics/getAVGSocre?level=4&area=350200
     * @param level
     * @param area
     * @return
@ -798,8 +780,9 @@ public class EsStatisticsController extends BaseController {
    @ResponseBody
    public String getAVGSocre(@RequestParam(required = true) String level, @RequestParam(required = true) String area) {
        try {
            level = elasticsearchUtil.changeLevel(Integer.parseInt(level))+"";
            return write(200, "查询成功", "data", statisticsService.getAVGSocre(level, area));
            //新版与旧版统计适配
            level = elasticsearchUtil.changeLevel(Integer.valueOf(level))+"";
            return write(200, "查询成功", "data", statisticsESService.getAVGSocre(level, area));
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败");
@ -818,8 +801,12 @@ public class EsStatisticsController extends BaseController {
                                     @RequestParam(required = true) String statDate,
                                     @RequestParam(required = true) String endDate) {
        try {
            level = elasticsearchUtil.changeLevel(Integer.parseInt(level))+"";
            return write(200, "查询成功", "data", statisticsESService.getAVGSocreByMonth(level, area, statDate, endDate));
            //新版没数据
            //level = elasticsearchUtil.changeLevel(Integer.parseInt(level))+"";
            //return write(200, "查询成功", "data", statisticsESService.getAVGSocreByMonth(level, area, statDate, endDate));
            //曲线图先用旧版  因为之前没有数据 等数据生成在切换到新版
            return write(200, "查询成功", "data", statisticsService.getAVGSocreByMonth(level, area, statDate, endDate));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
@ -1606,6 +1593,26 @@ public class EsStatisticsController extends BaseController {
        }
    }
    /**
     * 团队工作报告--长处方
     * @param startDate
     * @param endDate
     * @param adminTeamId
     * @return
     */
    @RequestMapping("/getPrescriptionTotalCount")
    @ResponseBody
    public String getPrescriptionTotalCount(@ApiParam(name="startDate", value="开始时间 yyyy-MM-dd") @RequestParam(required = true)String startDate,
                                            @ApiParam(name="endDate", value="开始时间 yyyy-MM-dd") @RequestParam(required = true)String endDate,
                                            @ApiParam(name="adminTeamId", value="团队ID") @RequestParam(required = true)Integer adminTeamId){
        try{
            return write(200, "查询成功", "data", statisticsESService.getPrescriptionTotalCount(startDate,endDate,adminTeamId));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
        }
    }
    //=================================长处方分析===============================================
//    @RequestMapping("/getPrescriptionCount")

+ 8 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/StatisticsController.java

@ -29,7 +29,7 @@ import java.util.*;
 * Created by lyr on 2016/08/16.
 */
@Controller
@RequestMapping(value = "/statistics", produces = MediaType.APPLICATION_JSON_UTF8_VALUE,method = {RequestMethod.GET,RequestMethod.POST})
@RequestMapping(value = "/old/statistics", produces = MediaType.APPLICATION_JSON_UTF8_VALUE,method = {RequestMethod.GET,RequestMethod.POST})
@Api(description = "统计")
public class StatisticsController extends BaseController {
@ -1652,6 +1652,13 @@ public class StatisticsController extends BaseController {
        }
    }
    /**
     * 团队工作报告--长处方
     * @param startDate
     * @param endDate
     * @param adminTeamId
     * @return
     */
    @RequestMapping("/getPrescriptionTotalCount")
    @ResponseBody
    public String getPrescriptionTotalCount(@ApiParam(name="startDate", value="开始时间 yyyy-MM-dd") @RequestParam(required = true)String startDate,