Преглед на файлове

Merge branch 'dev' of http://192.168.1.220:10080/Amoy/patient-co-management into dev

zd_123 преди 7 години
родител
ревизия
2f1f83317b
променени са 32 файла, в които са добавени 1524 реда и са изтрити 270 реда
  1. BIN
      edu-article/JkEdu/WebRoot/WEB-INF/classes/com/yihu/jk/api/ArticleApiTest.class
  2. BIN
      edu-article/JkEdu/WebRoot/WEB-INF/classes/com/yihu/jk/dao/ArticleDao.class
  3. 14 2
      edu-article/JkEdu/src/com/yihu/jk/api/ArticleApiTest.java
  4. 127 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/controller/manager/device/DeviceManufacturerController.java
  5. 2 4
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/controller/manager/device/WlyyDeviceController.java
  6. 88 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/device/entity/DeviceManufacturer.java
  7. 28 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/device/repository/DeviceManufacturerDao.java
  8. 81 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/manager/device/DeviceManufacturerService.java
  9. 58 0
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/device/deviceManufacturer_list.jsp
  10. 209 0
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/device/deviceManufacturer_list_js.jsp
  11. 71 0
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/device/deviceManufacturer_modify.jsp
  12. 137 0
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/device/deviceManufacturer_modify_js.jsp
  13. 0 2
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/device/device_create.jsp
  14. 45 59
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/device/device_create_js.jsp
  15. 1 1
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/device/device_list_js.jsp
  16. 33 19
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/device/device_modify_js.jsp
  17. 3 0
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/main.jsp
  18. 1 0
      patient-co-manage/wlyy-manage/src/main/webapp/static/js/menu.js
  19. 29 6
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/service/DeviceService.java
  20. 48 17
      patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/compute/ComputeHelper.java
  21. 2 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/prescription/PrescriptionDao.java
  22. 20 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/PatientHealthGuidanceService.java
  23. 18 6
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/message/MessageService.java
  24. 21 7
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/prescription/PrescriptionInfoService.java
  25. 299 124
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statisticsES/StatisticsESService.java
  26. 1 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/specialist/SpecialistService.java
  27. 1 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/template/DoctorTeamGuidanceService.java
  28. 5 3
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/health/DoctorHealthGuidanceController.java
  29. 3 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/message/DoctorMessageController.java
  30. 1 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/specialist/SpecialistController.java
  31. 13 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/prescription/PatientPrescriptionInfoController.java
  32. 165 15
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/EsStatisticsController.java

BIN
edu-article/JkEdu/WebRoot/WEB-INF/classes/com/yihu/jk/api/ArticleApiTest.class


BIN
edu-article/JkEdu/WebRoot/WEB-INF/classes/com/yihu/jk/dao/ArticleDao.class


+ 14 - 2
edu-article/JkEdu/src/com/yihu/jk/api/ArticleApiTest.java

@ -12,6 +12,9 @@ import com.coreframework.util.AppConfig;
import com.yihu.jk.utils.SecretUtil;
import com.yihu.wsgw.api.InterfaceMessage;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class ArticleApiTest {
	public static void main(String[] args) throws JSONException {
		// TODO Auto-generated method stub
@ -34,8 +37,9 @@ public class ArticleApiTest {
		// System.out.println(api.getCollectionArticalList(im));
		// System.out.println(api.getArticalById(im));
        saveBehavior();
//        saveBehavior();
//		System.out.printf("350200".substring(0,3));
		aa();
	}
	public static void initDB() {
@ -135,6 +139,14 @@ public class ArticleApiTest {
		}
	}
	public static void aa() {
		SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
		Calendar c = Calendar.getInstance();
		int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1;
		if (day_of_week == 0)
			day_of_week = 7;
		c.add(Calendar.DATE, -day_of_week + 1);
		System.out.println(df2.format(c.getTime()));
	}
}

+ 127 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/controller/manager/device/DeviceManufacturerController.java

@ -0,0 +1,127 @@
package com.yihu.wlyy.controller.manager.device;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.wlyy.controller.BaseController;
import com.yihu.wlyy.device.entity.DeviceManufacturer;
import com.yihu.wlyy.service.manager.device.DeviceManufacturerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
/**
 * Created by humingfen on 2018/6/6.
 * 设备管理
 */
@Controller
@RequestMapping("admin/manufacturer")
public class DeviceManufacturerController extends BaseController {
    @Autowired
    private DeviceManufacturerService deviceManufacturerService;
    @Autowired
    private ObjectMapper objectMapper;
    @RequestMapping(value = "initial", method = RequestMethod.GET)
    public String initListPage(){
        return "device/deviceManufacturer_list";
    }
    @RequestMapping(value = "infoInit")
    public String initInfoPage(@RequestParam(value = "id") Integer id,String type){
        request.setAttribute("id",id);
        request.setAttribute("type",type);
        return "device/deviceManufacturer_modify";
    }
    @RequestMapping(value ="list",method = RequestMethod.POST)
    @ResponseBody
    public String searchList(
            @RequestParam(value = "manufacturerName",required = false) String manufacturerName,
            @RequestParam(value = "manufacturerCode",required = false) String manufacturerCode,
            @RequestParam(value = "address",required = false) String address,
            @RequestParam(value = "page",required = false) Integer page,
            @RequestParam(value = "rows",required = false) Integer pageSize){
        try{
            Page<DeviceManufacturer> deviceManufacturer = deviceManufacturerService.searchList(manufacturerName,manufacturerCode, address, page, pageSize);
            return write(200,"操作成功",page,pageSize,deviceManufacturer);
        }catch (Exception ex){
            error(ex);
            return error(-1,"操作失败!");
        }
    }
    @RequestMapping(value = "findById", method = RequestMethod.POST)
    @ResponseBody
    public String getManufacturer(@RequestParam(value = "id") Long id){
        try {
            DeviceManufacturer manufacturer = deviceManufacturerService.findById(id);
            return  write(200,"操作成功","data",manufacturer);
        }catch (Exception ex){
            error(ex);
            return error(-1,"操作失败!");
        }
    }
    @RequestMapping(value = "create")
    @ResponseBody
    public String createManufacturer(String jsonData, String code){
        try{
            DeviceManufacturer manufacturer = objectMapper.readValue(jsonData, DeviceManufacturer.class);
            // 判断是否存在code,存在直接
            Boolean b = deviceManufacturerService.existCode(code);
            if(b){
                return error(-1,"厂商标识已存在");
            }
            deviceManufacturerService.createManufacturer(manufacturer);
            return write(200,"操作成功");
        }catch (Exception ex){
            error(ex);
            return error(-1,"操作失败");
        }
    }
    @RequestMapping(value = "update")
    @ResponseBody
    public String updateManufacturer(String jsonData){
        try{
            DeviceManufacturer manufacturer = objectMapper.readValue(jsonData, DeviceManufacturer.class);
            deviceManufacturerService.updateManufacturer(manufacturer);
            return write(200,"操作成功");
        }catch (Exception ex){
            error(ex);
            return error(-1,"操作失败");
        }
    }
    @RequestMapping(value = "delete")
    @ResponseBody
    public String deleteDevice(Long id){
        try{
            deviceManufacturerService.deleteManufacturer(id);
            return write(200,"操作成功");
        }catch (Exception ex){
            error(ex);
            return error(-1,"操作失败");
        }
    }
    @RequestMapping(value = "findAll")
    @ResponseBody
    public String findAll(){
        try{
            List<DeviceManufacturer> manufacturer = deviceManufacturerService.findAll();
            return write(200,"操作成功","data",manufacturer);
        }catch (Exception ex){
            error(ex);
            return error(-1,"操作失败");
        }
    }
}

+ 2 - 4
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/controller/manager/device/WlyyDeviceController.java

@ -1,6 +1,5 @@
package com.yihu.wlyy.controller.manager.device;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.wlyy.controller.BaseController;
import com.yihu.wlyy.device.entity.WlyyDevice;
@ -18,7 +17,6 @@ import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
/**
@ -47,8 +45,8 @@ public class WlyyDeviceController extends BaseController {
    }
    @RequestMapping(value = "createInit")
    public String initCreatePage(@RequestParam(value = "id",required = false) Integer id){
        request.setAttribute("id",id);
    public String initCreatePage(){
//        request.setAttribute("id",id);
        return  "device/device_create";
    }

+ 88 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/device/entity/DeviceManufacturer.java

@ -0,0 +1,88 @@
package com.yihu.wlyy.device.entity;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * create by humingfen on 2018/6/6
 * 设备厂商表
 */
@Entity
@Table(name = "wlyy_manufacturer")
public class DeviceManufacturer extends IdEntity {
    private String code;//关联标识
    private String manufacturerCode;//厂商代码
    private String manufacturerName;//厂商名称
    private String address;//厂商地址
    private String representative;//法人代表
    private Date czrq;//创建时间
    private Integer del;//逻辑删除(1删除 0保留)
    @Column(name = "code")
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    @Column(name = "manufacturer_code")
    public String getManufacturerCode() {
        return manufacturerCode;
    }
    public void setManufacturerCode(String manufacturerCode) {
        this.manufacturerCode = manufacturerCode;
    }
    @Column(name = "manufacturer_name")
    public String getManufacturerName() {
        return manufacturerName;
    }
    public void setManufacturerName(String manufacturerName) {
        this.manufacturerName = manufacturerName;
    }
    @Column(name = "address")
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @Column(name = "representative")
    public String getRepresentative() {
        return representative;
    }
    public void setRepresentative(String representative) {
        this.representative = representative;
    }
    @Column(name = "czrq")
    public Date getCzrq() {
        return czrq;
    }
    public void setCzrq(Date czrq) {
        this.czrq = czrq;
    }
    @Column(name = "del")
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
}

+ 28 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/device/repository/DeviceManufacturerDao.java

@ -0,0 +1,28 @@
package com.yihu.wlyy.device.repository;
import com.yihu.wlyy.device.entity.DeviceManufacturer;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.transaction.annotation.Transactional;
/**
 * Created by humingfen on 2018/6/6.
 */
public interface DeviceManufacturerDao extends PagingAndSortingRepository<DeviceManufacturer, Integer>, JpaSpecificationExecutor<DeviceManufacturer> {
    @Query("select dm from DeviceManufacturer dm where dm.id = ?1")
    DeviceManufacturer findById(Long id);
    @Transactional
    @Modifying
    @Query("update DeviceManufacturer dm set dm.manufacturerName = ?1, dm.manufacturerCode = ?2, dm.address = ?3, dm.representative = ?4, dm.del = ?5 where dm.id = ?6")
    void updateManufacturer(String manufacturerName, String manufacturerCode, String address, String representative, Integer del, Long id);
    DeviceManufacturer findByCode(String code);
    @Transactional
    @Modifying
    @Query("delete from DeviceManufacturer dm where dm.id = ?1")
    void delete(Long id);
}

+ 81 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/manager/device/DeviceManufacturerService.java

@ -0,0 +1,81 @@
package com.yihu.wlyy.service.manager.device;
import com.yihu.wlyy.device.entity.DeviceManufacturer;
import com.yihu.wlyy.device.repository.DeviceManufacturerDao;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springside.modules.persistence.DynamicSpecifications;
import org.springside.modules.persistence.SearchFilter;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by humingfen on 2018/6/6.
 * manufacturer数据库
 */
@Service
public class DeviceManufacturerService  {
    @Autowired
    private DeviceManufacturerDao deviceManufacturerDao;
    public Page<DeviceManufacturer> searchList(String manufacturerName, String manufacturerCode, String address, Integer page, Integer pageSize){
        if(page == null){
            page = 1;
        }
        if(pageSize == null){
            pageSize = 15;
        }
        PageRequest pageRequest = new PageRequest(page - 1, pageSize);
        Map<String,SearchFilter> filter = new HashMap<>();
        if(!StringUtils.isEmpty(manufacturerName)){
            filter.put("manufacturerName",new SearchFilter("manufacturerName", SearchFilter.Operator.LIKE,manufacturerName));
        }
        if(!StringUtils.isEmpty(manufacturerCode)){
            filter.put("manufacturerCode",new SearchFilter("manufacturerCode",SearchFilter.Operator.LIKE,manufacturerCode));
        }
        if(!StringUtils.isEmpty(address)){
            filter.put("address",new SearchFilter("address",SearchFilter.Operator.LIKE,address));
        }
        Specification<DeviceManufacturer> spec = DynamicSpecifications.bySearchFilter(filter.values(), DeviceManufacturer.class);
        return deviceManufacturerDao.findAll(spec,pageRequest);
    }
    public DeviceManufacturer findById(Long id) {
        return deviceManufacturerDao.findById(id);
    }
    public void  updateManufacturer(DeviceManufacturer manufacturer) {
        deviceManufacturerDao.updateManufacturer(manufacturer.getManufacturerName(), manufacturer.getManufacturerCode(), manufacturer.getAddress(), manufacturer.getRepresentative(), manufacturer.getDel(), manufacturer.getId());
    }
    public void createManufacturer(DeviceManufacturer manufacturer) {
        manufacturer.setCzrq(new Date());
        deviceManufacturerDao.save(manufacturer);
    }
    public Boolean existCode(String code) {
        DeviceManufacturer manufacturer = deviceManufacturerDao.findByCode(code);
        if(manufacturer == null){
            return false;
        }
        return true;
    }
    public void deleteManufacturer(Long id) {
        deviceManufacturerDao.delete(id);
    }
    public List<DeviceManufacturer> findAll() {
        List<DeviceManufacturer> deviceManufacturer = (List<DeviceManufacturer>) deviceManufacturerDao.findAll();
        return deviceManufacturer;
    }
}

+ 58 - 0
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/device/deviceManufacturer_list.jsp

@ -0,0 +1,58 @@
<%--
  Created by IntelliJ IDEA.
  User: hmf
  Date: 2018/6/6
  Time: 10:19
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html; charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="en">
<head>
    <%@ include file="../head/page_head.jsp" %>
    <title>设备厂商管理</title>
</head>
<body>
<div id="div_wrapper">
    <!-- 检索条件 -->
    <div class="m-retrieve-area f-h50 f-dn f-pr m-form-inline" data-role-form style='display: block;'>
        <div class="m-form-group f-mt10">
            <div class="m-form-control f-ml15">
                <input type="text" id="inp_manufacturer_name" placeholder="请输入设备厂商名称" class="f-ml10" data-attr-scan="manufacturerName"/>
            </div>
            <div class="m-form-control f-ml15">
                <input type="text" id="inp_manufacturer_code" placeholder="请输入设备厂商代码" class="f-ml10" data-attr-scan="manufacturerCode"/>
            </div>
            <div class="m-form-control f-ml15">
                <input type="text" id="inp_address" placeholder="请输入厂商地址" class="f-ml10" data-attr-scan="address"/>
            </div>
            <sec:authorize url="/admin/manufacturer/list">
            <div id="btn_search" class="l-button u-btn u-btn-primary u-btn-small f-ib f-vam  f-ml10" >
                <span>查询</span>
            </div>
            </sec:authorize>
            <sec:authorize url="/admin/manufacturer/create">
                <div id="btn_add" class="l-button u-btn u-btn-primary u-btn-small f-ib f-vam  f-ml10" >
                    <span>新增</span>
                </div>
            </sec:authorize>
            <%--<sec:authorize url="/admin/device/toExcel">
                <div class="m-form-control m-form-control-fr">
                    <div id="btn_export" class="l-button u-btn u-btn-primary u-btn-small f-ib f-vam">
                        <span>导出</span>
                    </div>
                </div>
            </sec:authorize>--%>
        </div>
    </div>
        <!-- 列表 -->
    <div id="div_manufacturer_list">
    </div>
</div>
</body>
<%@ include file="../head/page_foot.jsp" %>
<%@ include file="deviceManufacturer_list_js.jsp" %>
</html>

+ 209 - 0
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/device/deviceManufacturer_list_js.jsp

@ -0,0 +1,209 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8" %>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
<script>
	(function ($, win) {
		$(function () {
			/* ************************** 变量定义 ******************************** */
			// 通用工具类库
			var Util = $.Util;
			var retrieve = null;
			var master = null;
			var isFirstPage = false;
			/* *************************** 函数定义 ******************************* */
			function pageInit() {
				retrieve.init();
				master.init();
			}
			function reloadGrid(params) {
				if (isFirstPage) {
					this.grid.options.newPage = 1;
				}
				this.grid.setOptions({parms: params});
				this.grid.loadData(true);
			}
			/* *************************** 模块初始化 ***************************** */
			retrieve = {
				$element: $('.m-retrieve-area'),
				$searchBtn: $('#btn_search'),
				$addBtn: $('#btn_add'),
                $manufacturerName: $("#inp_manufacturer_name"),//设备厂商名称
                $manufacturerCode: $("#inp_manufacturer_code"),
                $address: $("#inp_address"),
                init: function () {
                    this.$element.show();
                    this.$element.attrScan();
                    window.form = this.$element;
                    this.$manufacturerName.ligerTextBox({width: 200});
                    this.$manufacturerCode.ligerTextBox({width: 200});
                    this.$address.ligerTextBox({width: 150});
                    this.bindEvents();
                },
                bindEvents: function () {
                    var self = this;
                    self.$searchBtn.click(function () {
                        master.grid.options.newPage = 1;
                        master.reloadGrid();
                    });
                    self.$addBtn.click(function () {
                        $.publish("manufacturer:info:create", [0]);
                    });
                    //导出
                    //生成Excel表
                    /*self.$exportBtn.click(function () {
                        //定义一个form表单
                        var myform = $("<form></form>");
                        myform.attr('method','post')
                        myform.attr('action',ctx + '/admin/device/toExcel');
                        //设备名称
                        var deviceName = $("<input type='hidden' name='deviceName' />")
                        deviceName.attr('value',$("#inp_device_name").val());
                        //设备编号
                        var deviceCode = $("<input type='hidden' name='deviceCode' />")
                        deviceCode.attr('value',$("#inp_device_code").val());
                        //社区名称
                        var orgName = $("<input type='hidden' name='orgName' />")
                        orgName.attr('value',$("#inp_org_name").val());
                        //联系人
                        var linkman = $("<input type='hidden' name='linkman' />")
                        linkman.attr('value',$("#inp_linkman").val());
                        myform.append(deviceName);
                        myform.append(deviceCode);
                        myform.append(orgName);
                        myform.append(linkman);
                        myform.appendTo('body').submit(); //must add this line for higher html spec
                    })*/
                }
            };
            master = {
                deviceManufacturerInfoDialog: null,
                grid: null,
                init: function () {
                    this.grid = $("#div_manufacturer_list").ligerGrid($.LigerGridEx.config({
                        url: ctx + '/admin/manufacturer/list',
                        parms: {},
                        ajaxHeader: ajaxHeaderName,
                        ajaxHeaderValue: ajaxHeaderValue,
                        columns: [
                            {display: 'id', name: 'id', hide: true},
                            {display: '厂商标识', name: 'code', width: '10%', align: "left"},
                            {display: '厂商代码', name: 'manufacturerCode', width: '10%', align: "left"},
                            {display: '厂商名称', name: 'manufacturerName', width: '10%', align: "left"},
                            {display: '厂家地址', name: 'address', width: '10%', align: "left"},
                            {display: '法人代表', name: 'representative', width: '10%', align: "left"},
                            {
                                display: '是否有效', name: 'del', width: '10%', align: "left",
                                render: function (row) {
                                    if (row.del == 0) {
                                        return "有效"
                                    }
                                    if (row.del == 1) {
                                        return "无效"
                                    }
                                }
                            },
                            {display: '创建时间', name: 'czrq', width: '10%', align: "left"},
                            {
                                display: '操作', name: 'operator', width: '10%', align: "center", isSort: false,
                                render: function (row) {
                                    var html = '';
                                    <sec:authorize url="/admin/manufacturer/update">
                                    html += '<a  style="margin-left:10px;"href="javascript:void(0)" onclick="javascript:' + Util.format("$.publish('{0}',['{1}'])", "manufacturer:info:edit", row.id) + '">编辑</a>';
                                    </sec:authorize>
                                    <sec:authorize url="/admin/manufacturer/delete">
                                    html += '<a  style="margin-left:10px;"href="javascript:void(0)" onclick="javascript:' + Util.format("$.publish('{0}',['{1}'])", "manufacturer:info:del", row.id) + '">删除</a>';
                                    </sec:authorize>
                                    <%--<sec:authorize url="/admin/manufacturer/create">
                                    html += '<a  style="margin-left:10px;"href="javascript:void(0)" onclick="javascript:' + Util.format("$.publish('{0}',['{1}'])", "manufacturer:info:create", row.id) + '">新增</a>';
                                    </sec:authorize>--%>
                                    return html;
                                }
                            }
                        ],
                    }));
                    // 自适应宽度
                    this.grid.adjustToWidth();
                    this.bindEvents();
                },
                reloadGrid: function (msg) {
                    retrieve.$element.attrScan();
                    var values = retrieve.$element.Fields.getValues();
                    reloadGrid.call(this, values);
                },
                delRecord: function (id, code) {
                    var self = this;
                    $.ajax({
                        url: ctx + "/admin/manufacturer/delete",
                        data: {"id": id},
                        method: "post",
                        dataType: "json",
                        success: function (result) {
                            if (result.status == '200') {
                                window.reloadMasterGrid(result.msg);
                            } else {
                                $.Notice.error(result.msg);
                            }
                        },
                        error: function (data) {
                            $.Notice.error("系统异常,请联系管理员!");
                        }
                    })
                },
                bindEvents: function () {
                    var self = this;
                    $.subscribe('manufacturer:info:edit', function (event, id) {
                        var title = '编辑信息';
                        self.deviceManufacturerInfoDialog = $.ligerDialog.open({
                            height: 600,
                            width: 560,
                            urlParms: {"id": id, "type": "edit"},
                            title: title,
                            url: ctx + '/admin/manufacturer/infoInit'
                        })
                    });
                    $.subscribe('manufacturer:info:create', function (event, id) {
                        var title = '新增设备厂商';
                        self.deviceManufacturerInfoDialog = $.ligerDialog.open({
                            height: 600,
                            width: 560,
                            urlParms: {"id": id, "type": "create"},
                            title: title,
                            url: ctx + '/admin/manufacturer/infoInit'
                        })
                    });
                    $.subscribe('manufacturer:info:del', function (event, id, code) {
                        $.ligerDialog.confirm('确认删除该行信息?<br>如果是请点击确认按钮,否则请点击取消。', function (yes) {
                            if (yes) {
                                self.delRecord(id, code);
                            }
                        });
                    })
                }
            };
            /* ************************* Dialog页面回调接口 ************************** */
            win.reloadMasterGrid = function (msg) {
                if (isNoEmpty(msg)) {
                    $.Notice.success(msg);
                }
                master.reloadGrid(msg);
            };
            win.closeDeviceManufacturerInfoDialog = function () {
                master.deviceManufacturerInfoDialog.close();
            };
            /* *************************** 页面初始化 **************************** */
            pageInit();
        });
    })(jQuery, window);
</script>

+ 71 - 0
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/device/deviceManufacturer_modify.jsp

@ -0,0 +1,71 @@
<%--
  Created by IntelliJ IDEA.
  User: hmf
  Date: 2018/6/7 0007
  Time: 下午 3:43
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html; charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
    <%@ include file="../head/page_head.jsp"%>
    <title>设备厂商详情</title>
    <style type="text/css">
        .m-form-group label.label_title{width: 100px}
    </style>
</head>
<body>
<div id="div_manufacturer_info_form" data-role-form class="m-form-inline f-mt20 f-ml30" data-role-form>
    <input type="hidden" id="id" value='${id}' data-attr-scan="id"/>
    <input type="hidden" id="type" value='${type}'/>
    <div class="m-form-group" style="padding:10 0 10 0">
        <label class="label_title" style="width:120px">厂商标识</label>
        <div class="l-text-wrapper m-form-control essential">
            <input type="text"  id="inp_code" class="required useTitle f-w240 validate-special-char"  required-title="厂商标识不能为空"  data-attr-scan="code"/>
        </div>
    </div>
    <div class="m-form-group" style="padding:10 0 10 0">
        <label class="label_title" style="width:120px">厂商代码</label>
        <div class="l-text-wrapper m-form-control essential">
            <input type="text"  id="inp_manufacturer_code" class="required useTitle f-w240 validate-special-char"  required-title="厂商代码不能为空"  data-attr-scan="manufacturerCode"/>
        </div>
    </div>
    <div class="m-form-group">
        <label class="label_title" style="width:120px">厂商名称</label>
        <div class="l-text-wrapper m-form-control essential">
            <input type="text"  id="inp_manufacturer_name" class="required useTitle f-w240 validate-special-char"  required-title="厂商名称不能为空"  data-attr-scan="manufacturerName"/>
        </div>
    </div>
    <div class="m-form-group">
        <label class="label_title" style="width:120px">厂商地址</label>
        <div class="l-text-wrapper m-form-control essential">
            <input type="text"  id="inp_address" class="required useTitle ajax f-w240 validate-special-char"  required-title="厂商地址不能为空"  data-attr-scan="address"/>
        </div>
    </div>
    <div class="m-form-group">
        <label class="label_title" style="width:120px">法人代表</label>
        <div class="l-text-wrapper m-form-control">
            <input type="text"  id="inp_representative" class="useTitle ajax f-w240 validate-special-char" required-title="法人代表不能为空" data-attr-scan="representative"/>
        </div>
    </div>
    <div class="m-form-group">
        <label class="label_title" style="width:120px">是否有效</label>
        <div class="l-text-wrapper m-form-control essential">
            <input type="text"  id="inp_del" data_type='select' class="required useTitle f-w240 validate-special-char" data-attr-scan="del"/>
        </div>
    </div>
    <div class="m-form-group f-pa" id="btn_save_close" style="right: 10px;bottom: 0;">
        <div class="m-form-control">
            <input type="button" value="保存" id="btn_save" class="l-button u-btn u-btn-primary u-btn-large f-ib f-vam" />
            <div id="btn_cancel" class="l-button u-btn u-btn-cancel u-btn-large f-ib f-vam" >
                <span>关闭</span>
            </div>
        </div>
    </div>
</div>
</body>
<%@ include file="../head/page_foot.jsp"%>
<%@ include file="deviceManufacturer_modify_js.jsp" %>
<%--<script src="${ctx}/static/js/device/device_modify.js"></script>--%>
</html>

+ 137 - 0
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/device/deviceManufacturer_modify_js.jsp

@ -0,0 +1,137 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8" %>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
<script>
    (function ($, win) {
        $(function () {
            var Util = $.Util;
            var type = $('#type').val();
            var id = $('#id').val();
            var manufacturerInfo = "";
            var jValidation = $.jValidation;
            function pageInit() {
                manufacturerInfo.init();
                if(type == "edit") {
                    manufacturerInfo.initForm();
                }
            }
            manufacturerInfo = {
                //变量
                $form: $("#div_manufacturer_info_form"),
                init: function () {
                    this.$form.attrScan();
                    $("#inp_code").ligerTextBox({width: 240})//厂家标识
                    $("#inp_manufacturer_code").ligerTextBox({width: 240})//厂家代码
                    $("#inp_manufacturer_name").ligerTextBox({width: 240})//厂家名称
                    $("#inp_address").ligerTextBox({width: 240})//厂家地址
                    $("#inp_representative").ligerTextBox({width: 240})//法人代表
                    $("#inp_del").ligerComboBox({
                        width: 240,
                        data: [
                            {text: '有效', id: '0'},
                            {text: '无效', id: '1'},
                        ]
                    })//是否有效
                    this.bindEvents();
                },
                initForm: function () {
                    var _this = this;
                    //修改、查看
                    $.ajax({
                        url: ctx + "/admin/manufacturer/findById",
                        method: "post",
                        dataType: "json",
                        async: false,
                        data: {id: id},
                        success: function (result) {
                            if (result.status == '200') {
                                var data = result.data;
                                _this.$form.Fields.fillValues({
                                    code: data.code,
                                    manufacturerCode: data.manufacturerCode,
                                    manufacturerName: data.manufacturerName,
                                    address: data.address,
                                    representative: data.representative,
                                });
                                //填值
                                $("#inp_del").ligerComboBox("selectValue",data.del);
                            } else {
                                $.Notice.error(result.msg);
                            }
                        },
                        error: function (data) {
                            $.Notice.error("系统异常,请联系管理员!");
                        }
                    });
                    this.$form.show();
                },
                //绑定事件
                bindEvents: function () {
                    var validator = new jValidation.Validation(this.$form, {
                        immediate: true, onSubmit: false,
                        onElementValidateForAjax: function (elm) {
                            /*if (Util.isStrEquals($(elm).attr("id"), 'inp_code')) {
                                var result = new jValidation.ajax.Result();
                                var codeNew = $('#inp_code').val();
                                $.ajax({
                                    url: ctx + "/admin/manufacturer/isCodeExist",
                                    async: false,
                                    method: "post",
                                    dataType: "json",
                                    data: {code: codeNew},
                                    success: function (data) {
                                        if (data == true) {
                                            result.setResult(false);
                                            result.setErrorMsg("厂商标识已注册过");
                                        } else {
                                            result.setResult(true);
                                        }
                                    }
                                });
                                return result;
                            };*/
                        }
                    });
                    var self = this;
                    $("#btn_save").click(function () {
                        var values = self.$form.Fields.getValues();
                        values.del = $("#inp_del").ligerComboBox("getValue");
                        if (!validator.validate()) {
                            return;
                        }
                        update(values);
                    });
                    function update(values) {
                        var dataModel = $.DataModel.init();
                        var url = "update";
                        if (type == "create") {
                            url = "create";
                        }
                        dataModel.updateRemote(ctx + "/admin/manufacturer/" + url, {
                            data: {jsonData: JSON.stringify(values), code: values.code},
                            success: function (data) {
                                if (data.status == 200) {
                                    parent.window.reloadMasterGrid(data.msg);
                                    parent.window.closeDeviceManufacturerInfoDialog();
                                } else {
                                    $.Notice.error(data.msg);
                                }
                            }
                        });
                    }
                    $("#btn_cancel").click(function () {
                        parent.window.closeDeviceManufacturerInfoDialog();
                    });
                }
            }
            pageInit();
        });
    })(jQuery, window)
</script>

+ 0 - 2
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/device/device_create.jsp

@ -9,7 +9,6 @@
</head>
<body>
<div id="div_patient_info_form" data-role-form class="m-form-inline f-mt20 f-ml30" data-role-form>
	<input type="hidden" id="inp_id" value='${id}'/>
	<div class="m-form-group" style="padding:10 0 10 0">
		<label class="label_title" style="width:120px">设备名称</label>
		<div class="l-text-wrapper m-form-control essential">
@ -115,5 +114,4 @@
</body>
<%@ include file="../head/page_foot.jsp"%>
<%@ include file="device_create_js.jsp" %>
<%--<script src="${ctx}/static/js/device/device_create.js"></script>--%>
</html>

+ 45 - 59
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/device/device_create_js.jsp

@ -4,22 +4,26 @@
	(function ($, win) {
		$(function () {
			var Util = $.Util;
			var id = $('#inp_id').val();
			var deviceInfo = "";
			var jValidation = $.jValidation;
			var deviceCodeOld = '';
			function pageInit() {
				deviceInfo.init();
				if (id) {
					deviceInfo.initForm();
				}
			}
			deviceInfo = {
				//变量
				$form: $("#div_patient_info_form"),
                url: {
				    /*
				     *设备厂商列表
				     */
				    manufacturerList: '/admin/manufacturer/findAll'
                },
				init: function () {
                    this.initComboBox();
					this.$form.attrScan();
					$("#inp_applyDate").ligerTextBox({width: 240}) //申请日期
					$("#inp_orgName").ligerTextBox({width: 240})//机构名称
@ -30,69 +34,36 @@
					$("#inp_deviceModel").ligerTextBox({width: 240})//设备型号
					$("#inp_deviceCode").ligerTextBox({width: 240})//设备唯一标识
					$("#inp_sim").ligerTextBox({width: 240})//设备sim码
					$("#inp_manufacturer").ligerTextBox({width: 240})//厂家名称
					//$("#inp_manufacturer").ligerTextBox({width: 240})//厂家名称
					$("#inp_address").ligerTextBox({width: 240})//厂家地址
					$("#inp_representative").ligerTextBox({width: 240})//法人代表
					$("#inp_applicantName").ligerTextBox({width: 240})//申请注册人
					$("#inp_applicantIdentity").ligerTextBox({width: 240})//申请人身份证号
					$("#inp_applicantTel").ligerTextBox({width: 240})//申请人手机
					$("#inp_applicantMail").ligerTextBox({width: 240})//申请人邮箱
					$("#sel_manufacturer").ligerComboBox({
						data: [
							{text: '三诺生物传感股份有限公司', id: 'threeNod'},
							{text: '深圳市优瑞恩科技有限公司', id: 'urion'},
							{text: '爱奥乐医疗器械(深圳)有限公司', id: 'bioland'} ,
							{text: '中兴云湃*脉搏波', id: 'yunpai'} ,
							{text: '康为血糖仪', id: 'comvee'}
						]
					});
					this.bindEvents();
				},
				initForm: function () {
					var _this = this;
					//修改、查看
					$.ajax({
						url: ctx + "/admin/device/device",
						method: "post",
						dataType: "json",
						async: false,
						data: {id: id},
						success: function (result) {
							if (result.status == '200') {
								var data = result.data;
								deviceCodeOld = data.deviceCode;
								_this.$form.Fields.fillValues({
									applyDate: data.applyDate,
									orgName: data.orgName,
									linkman: data.linkman,
									tel: data.tel,
									serverIp: data.serverIp,
									deviceName: data.deviceName,
									sim: data.sim,
									deviceModel: data.deviceModel,
									address: data.address,
									representative: data.representative,
									applicantName: data.applicantName,
									applicantIdentity: data.applicantIdentity,
									applicantTel: data.applicantTel,
									applicantMail: data.applicantMail
								});
								//填值
								$("#sel_manufacturer").ligerComboBox("selectValue",data.manufacturerCode);
							} else {
								$.Notice.error(result.msg);
							}
						},
						error: function (data) {
							$.Notice.error("系统异常,请联系管理员!");
						}
					});
					this.$form.show();
				},
                //请求初始化设备厂商
                initComboBox: function () {
				    var that = this;
                    this.rAjax( this.url.manufacturerList,{} ,function (data) {
                        var d = [];
                        for (var i = 0; i < data.data.length; i++) {
                            d.push({
                                text: data.data[i].manufacturerName,
                                id: data.data[i].manufacturerCode
                            });
                        }
                        that.initInpCat( d, that);
                    })
                },
                //设备厂商下拉框
                initInpCat: function ( d, me) {
                    $("#sel_manufacturer").ligerComboBox({
                        data: d,
                    });
                },
				//绑定事件
				bindEvents: function () {
@ -149,7 +120,22 @@
					$("#btn_cancel").click(function () {
						parent.window.closeDeviceInfoDialog();
					});
				}
				},
                rAjax: function ( url, d, cb) {
                    $.ajax({
                        url: ctx + url,
                        data: d,
                        type: 'POST',
                        dataType: 'json',
                        success: function (data) {
                            if (data.status == 200) {
                                cb && cb.call( this, data);
                            } else {
                                $.Notice.error(data.msg);
                            }
                        }
                    });
                },
			}
			pageInit();
		});

+ 1 - 1
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/device/device_list_js.jsp

@ -190,7 +190,7 @@
						self.deviceInfoDialog = $.ligerDialog.open({
							height: 770,
							width: 560,
							urlParms: {"id": id},
							// urlParms: {"id": id},
							title: title,
							url: ctx + '/admin/device/createInit'
						})

+ 33 - 19
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/device/device_modify_js.jsp

@ -18,8 +18,11 @@
			deviceInfo = {
				//变量
				$form: $("#div_patient_info_form"),
                $manufacturer: $("#sel_manufacturer"),
				init: function () {
					this.$form.attrScan();
                    _this = this;
                    this.$form.attrScan();
					$("#inp_applyDate").ligerTextBox({width: 240}) //申请日期
					$("#inp_orgName").ligerTextBox({width: 240})//机构名称
					$("#inp_linkman").ligerTextBox({width: 240})//联系人
@ -29,26 +32,37 @@
					$("#inp_deviceModel").ligerTextBox({width: 240})//设备型号
					$("#inp_deviceCode").ligerTextBox({width: 240})//设备唯一标识
					$("#inp_sim").ligerTextBox({width: 240})//设备sim
					$("#inp_manufacturer").ligerTextBox({width: 240})//厂家名称
					// $("#inp_manufacturer").ligerTextBox({width: 240})//厂家名称
					$("#inp_address").ligerTextBox({width: 240})//厂家地址
					$("#inp_representative").ligerTextBox({width: 240})//法人代表
					$("#inp_applicantName").ligerTextBox({width: 240})//申请注册人
					$("#inp_applicantIdentity").ligerTextBox({width: 240})//申请人身份证号
					$("#inp_applicantTel").ligerTextBox({width: 240})//申请人手机
					$("#inp_applicantMail").ligerTextBox({width: 240})//申请人邮箱
				},
				initForm: function () {
					var _this = this;
					_this.manufacturerBox = $("#sel_manufacturer").ligerComboBox({
						data: [
							{text: '三诺生物传感股份有限公司', id: 'threeNod'},
							{text: '深圳市优瑞恩科技有限公司', id: 'urion'},
							{text: '爱奥乐医疗器械(深圳)有限公司', id: 'bioland'} ,
                            {text: '中兴云湃*脉搏波', id: 'yunpai'} ,
							{text: '康为血糖仪', id: 'comvee'}
						]
					});
                    //厂商下拉框
                    _this.manufacturerBox = _this.$manufacturer.ligerComboBox({
                        url: ctx + "/admin/manufacturer/findAll",
                        parms: {},
                        dataParmName: "data",
                        textField: "manufacturerName",
                        valueField: "manufacturerCode",
                        isMultiSelect: false,
                        ajaxBeforeSend: function (xhr) {
                            if (ajaxHeaderName) {
                                xhr.setRequestHeader(ajaxHeaderName, ajaxHeaderValue);
                            }
                        },
                    });
                    //厂商下拉框刷新
                    _this.reloadManufacturerBox = function () {
                        deviceInfo.manufacturerBox.reload();
                    };
                },
				initForm: function () {
                    _this = this;
					//修改、查看
					$.ajax({
@ -76,11 +90,10 @@
									applicantName: data.applicantName,
									applicantIdentity: data.applicantIdentity,
									applicantTel: data.applicantTel,
									applicantMail: data.applicantMail
									applicantMail: data.applicantMail,
								});
								//填值
								_this.manufacturerBox.selectValue(data.manufacturerCode);
							} else {
								$.Notice.error(result.msg);
							}
@ -144,8 +157,9 @@
					$("#btn_save").click(function () {
						var values = self.$form.Fields.getValues();
						//厂家代码
						values.manufacturerCode = $("#sel_manufacturer").ligerComboBox("getValue");
						//厂家名称
						values.manufacturerCode = self.manufacturerBox.getValue();
                        values.manufacturer = self.manufacturerBox.getText();
						if (!validator.validate()) {
							return;
						}
@ -173,7 +187,7 @@
					$("#btn_cancel").click(function () {
						parent.window.closeDeviceInfoDialog();
					});
				}
				},
			}
			pageInit();
		});

+ 3 - 0
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/main.jsp

@ -111,6 +111,9 @@
							<sec:authorize url="/admin/patientDevice/initial">
							<li><a href="javascript:locationMenu('patientDevice');">居民设备查询</a></li>
							</sec:authorize>
							<sec:authorize url="/admin/manufacturer/initial">
							<li><a href="javascript:locationMenu('manufacturer');">设备厂商查询</a></li>
							</sec:authorize>
							<sec:authorize url="/admin/device/center">
						</ul>
					</div>

+ 1 - 0
patient-co-manage/wlyy-manage/src/main/webapp/static/js/menu.js

@ -20,6 +20,7 @@ var menu = {
    "device": "/admin/device/initial",//设备管理界面
    "deviceHealthIndex": "/admin/healthIndex/initial",//健康体征数据查询页面
    "patientDevice": "/admin/patientDevice/initial",//居民设备查询页面
    "manufacturer": "/admin/manufacturer/initial",//设备厂商页面
    //数据统计
    "static": "/admin/static/center",//数据统计

+ 29 - 6
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/service/DeviceService.java

@ -216,6 +216,17 @@ public class DeviceService extends BaseService{
        }
        return true;
    }
    /**
     * 判断当前指标偏高或偏低
     */
    private int checkHealthIndexDetail(Double current, Double max, Double min) {
        if (current > max ) {
            return 1;
        }else if(current < min || current < 0){
            return 2;
        }
        return 0;
    }
    /**************************************************************************************************************/
    /**
     * 设备数据查询接口
@ -997,8 +1008,12 @@ public class DeviceService extends BaseService{
            // 餐后
            if (index % 2 == 0) {
                if (!checkHealthIndex(NumberUtils.toDouble(value1), maxValueAfter ,minValueAfter )) {
                    msgContent += patient.getName() + "血糖异常(" + value1 + "mmol/L),请处理";
//                    msgContent += patient.getName() + "血糖异常(" + value1 + "mmol/L),请处理";
                    if(checkHealthIndexDetail(NumberUtils.toDouble(value1), maxValueAfter ,minValueAfter)==1){
                        msgContent = "<a>"+patient.getName()+"</a><span style=\"color: #FF4C4C;\">血糖偏高</span>";
                    }else if(checkHealthIndexDetail(NumberUtils.toDouble(value1), maxValueAfter ,minValueAfter)==2){
                        msgContent = "<a>"+patient.getName()+"</a><span style=\"color: #FF4C4C;\">血糖偏低</span>";
                    }
                    //体征异常,更新体征数据状态
//                    data.setStatus(1);
//                    patientHealthIndexDao.save(data);
@ -1006,8 +1021,12 @@ public class DeviceService extends BaseService{
                }
            } else { //餐前
                if (!checkHealthIndex(NumberUtils.toDouble(value1), maxValueBefore, minValueBefore)) {
                    msgContent += patient.getName() + "血糖异常(" + value1 + "mmol/L),请处理";
//                    msgContent += patient.getName() + "血糖异常(" + value1 + "mmol/L),请处理";
                    if(checkHealthIndexDetail(NumberUtils.toDouble(value1), maxValueAfter ,minValueAfter)==1){
                        msgContent = "<a>"+patient.getName()+"</a><span style=\"color: #FF4C4C;\">血糖偏高</span>";
                    }else if(checkHealthIndexDetail(NumberUtils.toDouble(value1), maxValueAfter ,minValueAfter)==2){
                        msgContent = "<a>"+patient.getName()+"</a><span style=\"color: #FF4C4C;\">血糖偏低</span>";
                    }
                    //体征异常,更新体征数据状态
//                    data.setStatus(1);
//                    patientHealthIndexDao.save(data);
@ -1041,8 +1060,12 @@ public class DeviceService extends BaseService{
            }
            // 收缩压/舒张压校验
            if (!checkHealthIndex(NumberUtils.toDouble(value1), maxValueSSY, minValueSSY) || !checkHealthIndex(NumberUtils.toDouble(value2), maxValueSZY, minValueSZY)) {
                msgContent = patient.getName() + "血压异常(舒张压 " + value2 + "mmHg、收缩压 " + value1 + "mmHg),请处理";
//                msgContent = patient.getName() + "血压异常(舒张压 " + value2 + "mmHg、收缩压 " + value1 + "mmHg),请处理";
                if(checkHealthIndexDetail(NumberUtils.toDouble(value1), maxValueSSY, minValueSSY)==1||checkHealthIndexDetail(NumberUtils.toDouble(value2), maxValueSZY, minValueSZY)==1){
                    msgContent = "<a>"+patient.getName()+"</a><span style=\"color: #FF4C4C;\">血压偏高</span>";
                }else if(checkHealthIndexDetail(NumberUtils.toDouble(value1), maxValueSSY, minValueSSY)==2||checkHealthIndexDetail(NumberUtils.toDouble(value2), maxValueSZY, minValueSZY)==2){
                    msgContent = "<a>"+patient.getName()+"</a><span style=\"color: #FF4C4C;\">血压偏低</span>";
                }
                //体征异常,更新体征数据状态
//                data.setStatus(1);
//                patientHealthIndexDao.save(data);

+ 48 - 17
patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/compute/ComputeHelper.java

@ -4,6 +4,7 @@ import com.yihu.wlyy.entity.dimension.WlyyDimensionQuota;
import com.yihu.wlyy.entity.doctor.team.admin.AdminTeam;
import com.yihu.wlyy.statistics.util.DateUtil;
import com.yihu.wlyy.statistics.vo.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
@ -158,29 +159,53 @@ public class ComputeHelper {
        }
        //根据维度初始化数据
        for (int i = 0; i < dimensionQuotas.size(); i++) {
            Map<String, SaveModel> mapTemp = new HashMap<>();
            WlyyDimensionQuota dimensionQuota = dimensionQuotas.get(i);
            List<DictModel> dictModels = jdbcTemplate.query(dimensionQuota.getDictSql(), new BeanPropertyRowMapper(DictModel.class));
            for (Map.Entry<String, SaveModel> oneSaveModel : lastMaps.entrySet()) {
                for (int j = 0; j < dictModels.size(); j++) {
                    SaveModel saveModelTemp = new SaveModel();
                    DictModel dictModel = dictModels.get(j);
                    BeanUtils.copyProperties(oneSaveModel.getValue(), saveModelTemp);
                    SaveModel.class.getMethod("setSlaveKey" + (i + 1) + "Name", String.class).invoke(saveModelTemp, dictModel.getName());
                    SaveModel.class.getMethod("setSlaveKey" + (i + 1), String.class).invoke(saveModelTemp, dictModel.getCode());
                    //根据维度生成新的key
                    StringBuffer strKey = new StringBuffer(oneSaveModel.getKey() + "-" + dictModel.getCode());
                    mapTemp.put(strKey.toString(), saveModelTemp);
            for (int i = 0; i < dimensionQuotas.size(); i++) {
                Map<String, SaveModel> mapTemp = new HashMap<>();
                WlyyDimensionQuota dimensionQuota = dimensionQuotas.get(i);
//                List<DictModel> dictModels = jdbcTemplate.query(dimensionQuota.getDictSql(), new BeanPropertyRowMapper(DictModel.class));
                List<Map<String, Object>> listMap = jdbcTemplate.queryForList(dimensionQuota.getDictSql());
                for (Map.Entry<String, SaveModel> oneSaveModel : lastMaps.entrySet()) {
                    for (int j = 0; j < listMap.size(); j++) {
                        SaveModel saveModelTemp = new SaveModel();
                        Map<String, Object> dictModel = listMap.get(j);
                        BeanUtils.copyProperties(oneSaveModel.getValue(), saveModelTemp);
                        SaveModel.class.getMethod("setSlaveKey" + (i + 1) + "Name", String.class).invoke(saveModelTemp, dictModel.get("name"));
                        SaveModel.class.getMethod("setSlaveKey" + (i + 1), String.class).invoke(saveModelTemp, dictModel.get("code"));
                        //根据维度生成新的key
                        StringBuffer strKey = new StringBuffer(oneSaveModel.getKey() + "-" + dictModel.get("code"));
                        mapTemp.put(strKey.toString(), saveModelTemp);
                    }
                }
            }
            //如果字典长度是0 抛出异常
            if (dictModels.size() == 0) {
            if (listMap.size() == 0) {
                throw new Exception("dict size:0,sql:" + dimensionQuota.getDictSql());
            }
            lastMaps = mapTemp;
        }
//        for (int i = 0; i < dimensionQuotas.size(); i++) {
//            Map<String, SaveModel> mapTemp = new HashMap<>();
//            WlyyDimensionQuota dimensionQuota = dimensionQuotas.get(i);
//            List<DictModel> dictModels = jdbcTemplate.query(dimensionQuota.getDictSql(), new BeanPropertyRowMapper(DictModel.class));
//            for (Map.Entry<String, SaveModel> oneSaveModel : lastMaps.entrySet()) {
//                for (int j = 0; j < dictModels.size(); j++) {
//                    SaveModel saveModelTemp = new SaveModel();
//                    DictModel dictModel = dictModels.get(j);
//
//                    BeanUtils.copyProperties(oneSaveModel.getValue(), saveModelTemp);
//                    SaveModel.class.getMethod("setSlaveKey" + (i + 1) + "Name", String.class).invoke(saveModelTemp, dictModel.getName());
//                    SaveModel.class.getMethod("setSlaveKey" + (i + 1), String.class).invoke(saveModelTemp, dictModel.getCode());
//                    //根据维度生成新的key
//                    StringBuffer strKey = new StringBuffer(oneSaveModel.getKey() + "-" + dictModel.getCode());
//                    mapTemp.put(strKey.toString(), saveModelTemp);
//                }
//            }
//            //如果字典长度是0 抛出异常
//            if (dictModels.size() == 0) {
//                throw new Exception("dict size:0,sql:" + dimensionQuota.getDictSql());
//            }
//            lastMaps = mapTemp;
//        }
        //设置值
        for (Map.Entry<String, SaveModel> one : lastMaps.entrySet()) {
@ -196,6 +221,12 @@ public class ComputeHelper {
                SaveModel saveModel = one.getValue();
                saveModel.setResult1(result1);
                saveModel.setResult2(result2);
                if(dataModels.size()>0&& StringUtils.isNotEmpty(dataModels.get(0).getSlaveKey1())&&!StringUtils.isNotEmpty(saveModel.getSlaveKey1())){
                    saveModel.setSlaveKey1(dataModels.get(0).getSlaveKey1());
                }
                if(dataModels.size()>0&& StringUtils.isNotEmpty(dataModels.get(0).getSlaveKey2())&&!StringUtils.isNotEmpty(saveModel.getSlaveKey2())){
                    saveModel.setSlaveKey2(dataModels.get(0).getSlaveKey2());
                }
                returnList.add(saveModel);
            } else {
                returnList.add(one.getValue());

+ 2 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/prescription/PrescriptionDao.java

@ -38,4 +38,6 @@ public interface PrescriptionDao extends PagingAndSortingRepository<Prescription
    @Modifying
    @Query("update Prescription p set p.jwPayStatus=1 where p.code=?1")
    void updatejwPayStatus(String prescriptionCode);
    List<Prescription> findByPatient(String patient);
}

+ 20 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/PatientHealthGuidanceService.java

@ -27,6 +27,8 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 健康指导业务处理类
@ -104,7 +106,7 @@ public class PatientHealthGuidanceService extends BaseService {
	 * @param guidance
	 * @return
	 */
	public PatientHealthGuidance add(PatientHealthGuidance guidance, String accessToken) throws Exception {
	public PatientHealthGuidance add(PatientHealthGuidance guidance, String accessToken,String tzCode) throws Exception {
		Doctor doctor = doctorDao.findByCode(guidance.getDoctor());
		Patient patient = patientDao.findByCode(guidance.getPatient());
		//家庭医生
@ -172,6 +174,23 @@ public class PatientHealthGuidanceService extends BaseService {
				}
			}
		}
		if(StringUtils.isNotEmpty(tzCode)){
			String sql = " select * from device.wlyy_patient_health_index where id in ("+tzCode+")";
			List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
			Date currentTime = new Date();
			long h24 = 60*60*24;
			for(Map<String, Object> one :list){
				String tempSql="";
				Date temp =(Date)one.get("czrq");
				if(currentTime.getTime()-temp.getTime()>h24){//有效干预
					tempSql = "update device.wlyy_patient_health_index set manage_result=1 where id="+one.get("id");
				}else{//无效干预
					tempSql = "update device.wlyy_patient_health_index set manage_result=2 where id="+one.get("id");
				}
				jdbcTemplate.execute(tempSql);
			}
		}
		return guidance;
	}

+ 18 - 6
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/message/MessageService.java

@ -363,8 +363,8 @@ public class MessageService extends BaseService {
    /**
     * 获取超标指标消息--根据患者分组
     */
    public List<Map<String, Object>> getHealthIndexMessage(String doctor) throws Exception {
        List<Map<String, Object>> re = new ArrayList<>();
    public Map<String,List<Map<String, Object>>> getHealthIndexMessage(String doctor) throws Exception {
        String sql = "select a.sender,a.tz_type,count(1) count,max(date_format(a.create_time,'%Y-%m-%d %H:%i:%s')) last_time,a.has_read from wlyy_Message a where a.receiver='" + doctor + "' and a.type='2' group by a.sender,a.tz_type,a.has_read order by last_time desc";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
@ -412,7 +412,7 @@ public class MessageService extends BaseService {
                System.out.print("not exit patient!code:" + patientCode);
            }
        }
        List<Map<String, Object>> re = new ArrayList<>();
        for (Map<String, Object> item : map.values()) {
            Map<String, Object> obj = new HashMap<>();
            String type = String.valueOf(item.get("type")); //1血糖,2血压,3体重,4腰
@ -425,6 +425,7 @@ public class MessageService extends BaseService {
            obj.put("sex", item.get("sex"));
            obj.put("birthday", item.get("birthday"));
            obj.put("photo", item.get("photo"));
            obj.put("count",count1);
            if ("1".equals(type)) {
                if(count1>0){
                    obj.put("message", "有" + count1 + "条血糖异常未读消息");
@ -440,6 +441,7 @@ public class MessageService extends BaseService {
            } else {
                break;
            }
            re.add(obj);
        }
        Collections.sort(re, new Comparator<Map<String, Object>>() {
@ -449,8 +451,18 @@ public class MessageService extends BaseService {
                return time2.compareTo(time1);
            }
        });
        return re;
        Map<String,List<Map<String, Object>>> result = new LinkedHashMap();
        for(Map<String, Object> one:re){
            String key = DateUtil.dateToStr(DateUtil.stringToDate(one.get("time")+"",DateUtil.YYYY_MM_DD_HH_MM_SS),DateUtil.YYYY_MM_DD);
            if(result.containsKey(key)&&result.get(key)!=null){
                List<Map<String, Object>> temp = result.get(key);
                temp.add(one);
                result.put(key,temp);
            }else{
                result.put(key,new ArrayList<>(Arrays.asList(one)));
            }
        }
        return result;
    }
    /**
@ -474,7 +486,7 @@ public class MessageService extends BaseService {
                map.put("type", type);
                map.put("read", String.valueOf(item.getRead()));
                map.put("sex", String.valueOf(item.getSex()));
                map.put("tzCode", String.valueOf(item.getTzCode()));
                map.put("czrq", DateUtil.dateToStrLong(item.getCreateTime()));
                DevicePatientHealthIndex data =devicePatientHealthIndexDao.findOne(Long.valueOf(item.getTzCode()));

+ 21 - 7
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/prescription/PrescriptionInfoService.java

@ -559,14 +559,19 @@ public class PrescriptionInfoService extends BaseService {
            pp.put("mobile", p.getMobile());
            rs.put("patient", pp);
            SignFamily signFamily = signFamilyDao.findByIdcard(p.getIdcard());
            Map<String, Object> sf = new HashedMap();
            sf.put("doctor", signFamily.getDoctor());
            sf.put("hospital", signFamily.getHospital());
            sf.put("doctorName", signFamily.getDoctorName());
            sf.put("hospitalName", signFamily.getHospitalName());
            SignFamily signFamily = signFamilyDao.findByIdcard(p.getIdcard());
            if(signFamily!=null){
                sf.put("doctor", signFamily.getDoctor());
                sf.put("hospital", signFamily.getHospital());
                sf.put("doctorName", signFamily.getDoctorName());
                sf.put("hospitalName", signFamily.getHospitalName());
            }else{
                sf.put("doctor", prescription.getDoctor());
                sf.put("hospital", prescription.getHospital());
                sf.put("doctorName", prescription.getDoctorName());
                sf.put("hospitalName", prescription.getHospitalName());
            }
            rs.put("signFamily", sf);
        } else {
            rs.put("patient", "");
@ -1953,4 +1958,13 @@ public class PrescriptionInfoService extends BaseService {
			logger.info("续方取消,随访记录同步取消失败:"+e.getMessage());
		}
	}
    public Boolean checkPatientWithPrescription(String patient){
        List<Prescription> list =  prescriptionDao.findByPatient(patient);
        if(list!=null&&list.size()>0){
            return true;
        }else{
            return false;
        }
    }
}

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

@ -376,10 +376,10 @@ public class StatisticsESService {
            public int compare(Map<String, Object> o1, Map<String, Object> o2) {
                long map1value = 0L;
                long map2value = 0L;
                if(o1.get("amount")!=null && o1.get("amount")+""!=""){
                     map1value = Long.valueOf(String.valueOf(o1.get("amount")));
                if (o1.get("amount") != null && o1.get("amount") + "" != "") {
                    map1value = Long.valueOf(String.valueOf(o1.get("amount")));
                }
                if(o2.get("amount")!=null && o2.get("amount")+""!=""){
                if (o2.get("amount") != null && o2.get("amount") + "" != "") {
                    map2value = Long.valueOf(String.valueOf(o2.get("amount")));
                }
@ -863,7 +863,7 @@ public class StatisticsESService {
     * @param index
     * @return
     */
    public JSONObject getDateTotal(String startDate, String endDate, int interval, String area, int level, String index, String lowCode, String year) throws Exception {
    public JSONObject getDateTotal(String startDate, String endDate, int interval, String area, int level, String index, String lowCode, String year, String timelevel) throws Exception {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        int taskNum = 0;
        JSONObject json = new JSONObject();
@ -876,7 +876,7 @@ public class StatisticsESService {
        }
//        }
        if (!org.springframework.util.StringUtils.isEmpty(lowCode)) {
             peopleNum = getPopulationBase(area, year);
            peopleNum = getPopulationBase(area, year);
            if (peopleNum != null) {
                if (lowCode.equals("3")) {
                    taskNum = peopleNum.getSixFiveTaskNum();
@ -890,15 +890,15 @@ public class StatisticsESService {
        json.put("taskNum", taskNum);
        if (interval == 1) {
            JSONArray jsonArray = dateTotalStatistics(startDate, endDate, area, level, index, lowCode);
            JSONArray jsonArray = dateTotalStatistics(startDate, endDate, area, level, index, lowCode, timelevel);
            json.put("data", jsonArray);
            return json;
        } else if (interval == 2) {
            JSONArray jsonArray = weekTotalStatistics(startDate, endDate, area, level, index, lowCode);
            JSONArray jsonArray = weekTotalStatistics(startDate, endDate, area, level, index, lowCode, timelevel);
            json.put("data", jsonArray);
            return json;
        } else if (interval == 3) {
            JSONArray jsonArray = monthTotalStatistics(startDate, endDate, area, level, index, lowCode);
            JSONArray jsonArray = monthTotalStatistics(startDate, endDate, area, level, index, lowCode, timelevel);
            json.put("data", jsonArray);
            return json;
        }
@ -917,15 +917,15 @@ public class StatisticsESService {
     * @return
     * @throws ParseException
     */
    public JSONArray dateTotalStatistics(String startDate, String endDate, String area, int level, String index, String lowCode) throws Exception {
    public JSONArray dateTotalStatistics(String startDate, String endDate, String area, int level, String index, String lowCode, String timelevel) throws Exception {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        List<SaveModel> saveModels = new ArrayList<>();
        //startDate = DateUtil.getNextDay(startDate,-1);
        if (StringUtils.isNotBlank(lowCode)) {
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_DDL, SaveModel.interval_day, lowCode);
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, level, index, timelevel, SaveModel.interval_day, lowCode);
        } else {
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, level, index, SaveModel.timeLevel_DDL, SaveModel.interval_day);
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, level, index, timelevel, SaveModel.interval_day);
        }
        List<JSONObject> result = new ArrayList<>();
        if (saveModels != null) {
@ -933,7 +933,7 @@ public class StatisticsESService {
            for (SaveModel saveModel : saveModels) {
                JSONObject json = new JSONObject();
                String range = null;
                if(saveModel.getQuotaDate()!=null){
                if (saveModel.getQuotaDate() != null) {
                    range = df.format(saveModel.getQuotaDate());
                }
                long amount = saveModel.getResult2().longValue();
@ -941,10 +941,10 @@ public class StatisticsESService {
                json.put("amount", amount);
                result.add(json);
            }
            if (saveModels!=null && saveModels.size()==1 && saveModels.get(0).getHospital()==null) {
                List<Map<String,Object>> resultList = DateUtil.findDates(dateFormat.parse(startDate), dateFormat.parse(DateUtil.getNextDay(endDate,1)));
            if (saveModels != null && saveModels.size() == 1 && saveModels.get(0).getHospital() == null) {
                List<Map<String, Object>> resultList = DateUtil.findDates(dateFormat.parse(startDate), dateFormat.parse(DateUtil.getNextDay(endDate, 1)));
                result.clear();
                for (Map<String,Object> map : resultList){
                for (Map<String, Object> map : resultList) {
                    JSONObject json = new JSONObject();
                    json.put("range", map.get("date"));
                    json.put("amount", 0);
@ -984,7 +984,7 @@ public class StatisticsESService {
     * @return
     * @throws Exception
     */
    private JSONArray weekTotalStatistics(String startDate, String endDate, String area, int level, String index, String lowCode) throws Exception {
    private JSONArray weekTotalStatistics(String startDate, String endDate, String area, int level, String index, String lowCode, String timelevel) throws Exception {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        // 起始日期
@ -1078,22 +1078,22 @@ public class StatisticsESService {
        List<SaveModel> saveModels = new ArrayList<>();
        if (StringUtils.isNotBlank(lowCode)) {
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_DDL, SaveModel.interval_day, lowCode);
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, level, index, timelevel, SaveModel.interval_day, lowCode);
        } else {
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, level, index, SaveModel.timeLevel_DDL, SaveModel.interval_day);
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, level, index, timelevel, SaveModel.interval_day);
        }
        if (saveModels != null) {
            // 计算结果
            for (SaveModel saveModel : saveModels) {
                String range = "";
                if (saveModel.getQuotaDate()!=null){
                if (saveModel.getQuotaDate() != null) {
                    range = df.format(saveModel.getQuotaDate());
                }
                JSONObject json = countResult.get(range);
                //因为上述时间集提前一天  但是前端是显示当前时间,所以这里给调整回去
                if(range.equals(df.format(temp.getTime()))){
                    json.put("range",endDate);
                if (range.equals(df.format(temp.getTime()))) {
                    json.put("range", endDate);
                }
                if (json != null) {
                    long amount = saveModel.getResult2().longValue();
@ -1135,7 +1135,7 @@ public class StatisticsESService {
     * @return
     * @throws Exception
     */
    private JSONArray monthTotalStatistics(String startDate, String endDate, String area, int level, String index, String lowCode) throws Exception {
    private JSONArray monthTotalStatistics(String startDate, String endDate, String area, int level, String index, String lowCode, String timelevel) throws Exception {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
@ -1206,22 +1206,22 @@ public class StatisticsESService {
        }
        List<SaveModel> saveModels = new ArrayList<>();
        if (StringUtils.isNotBlank(lowCode)) {
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_DDL, SaveModel.interval_day, lowCode);
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel1(startDate, endDate, area, level, index, timelevel, SaveModel.interval_day, lowCode);
        } else {
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, level, index, SaveModel.timeLevel_DDL, SaveModel.interval_day);
            saveModels = elasticsearchUtil.findLineChartDateQuotaLevel0(startDate, endDate, area, level, index, timelevel, SaveModel.interval_day);
        }
        if (saveModels != null) {
            // 计算结果
            for (SaveModel saveModel : saveModels) {
                String range = "";
                if (saveModel.getQuotaDate()!=null){
                if (saveModel.getQuotaDate() != null) {
                    range = df.format(saveModel.getQuotaDate());
                }
                JSONObject json = countResult.get(range);
                //因为上述时间集提前一天  但是前端是显示当前时间,所以这里给调整回去
                if(range.equals(df.format(temp.getTime()))){
                    json.put("range",endDate);
                if (range.equals(df.format(temp.getTime()))) {
                    json.put("range", endDate);
                }
                if (json != null) {
                    long amount = saveModel.getResult2().longValue();
@ -1369,9 +1369,9 @@ public class StatisticsESService {
        if (resultList != null) {
            String signTaskNum = "";
            if ("3".equals(lowCode)) {
                if ("2017".equals(year)){
                if ("2017".equals(year)) {
                    signTaskNum = systemDictService.getDictValueNoRedis("SIGN_TASKNUM_17_65", year);//2017年65岁以上的目标量
                }else if ("2016".equals(year)){
                } else if ("2016".equals(year)) {
                    signTaskNum = systemDictService.getDictValueNoRedis("SIGN_TASKNUM_16_65", year);
                }
            } else {
@ -2298,7 +2298,7 @@ public class StatisticsESService {
            }
            resultMaps.add(rs);
        }
        if (level == 4 ||"5".equals(low_level)) {
        if (level == 4 || "5".equals(low_level)) {
            Map<Integer, Map<String, Object>> leaders = getAllTeamLeaders();
            if (resultMaps != null && resultMaps.size() > 0) {
                for (Map<String, Object> r : resultMaps) {
@ -2459,7 +2459,7 @@ public class StatisticsESService {
        //获取结果集
        List<Map<String, Object>> resultList = null;
        if ("0".equals(type)) {
            resultList = DateUtil.findDates(dateFormat.parse(startDate), dateFormat.parse(DateUtil.getNextDay(endDate,1)));
            resultList = DateUtil.findDates(dateFormat.parse(startDate), dateFormat.parse(DateUtil.getNextDay(endDate, 1)));
        } else {
            resultList = DateUtil.findDateASWeeks(dateFormat.parse(startDate), dateFormat.parse(endDate));
        }
@ -4981,8 +4981,8 @@ public class StatisticsESService {
        //83:健康文章,84:健康指导
        List<SaveModel> list_83_84 = elasticsearchUtil.findListDateQuotaLevel0( endDate, area, level, "83,84", SaveModel.timeLevel_DDL, lowLevel);
        List<SaveModel> list_read_83_84 = elasticsearchUtil.findListDateQuotaLevel1(endDate,area,level,"83,84", SaveModel.timeLevel_DDL, lowLevel, "1");
        List<SaveModel> list_83_84 = elasticsearchUtil.findListDateQuotaLevel0(endDate, area, level, "83,84", SaveModel.timeLevel_DDL, lowLevel);
        List<SaveModel> list_read_83_84 = elasticsearchUtil.findListDateQuotaLevel1(endDate, area, level, "83,84", SaveModel.timeLevel_DDL, lowLevel, "1");
//        List<SaveModel> list_84 = elasticsearchUtil.findListDateQuotaLevel0(null, endDate, area, level, "84", SaveModel.timeLevel_ZL, lowLevel);
//        List<SaveModel> list_read_84 = elasticsearchUtil.findListDateQuotaLevel1(endDate,area,level,"84", SaveModel.timeLevel_DDL, lowLevel, "1");
@ -4991,68 +4991,68 @@ public class StatisticsESService {
        String readRate = "";
        DecimalFormat df = new DecimalFormat("0.00");
        List<Map<String, Object>> resultList = new ArrayList<>();
        for(SaveModel saveModel:list_83_84){
        for (SaveModel saveModel : list_83_84) {
            Map<String, Object> map = new HashMap<>();
            if (SaveModel.OrgLevel.equals(lowLevel)) {
                map.put("code", saveModel.getHospital());
                map.put("name", saveModel.getHospitalName());
                map.put("amount", saveModel.getResult1());
                Double readNum = 0.0;
                for(SaveModel saveModel2:list_read_83_84){
                    if(saveModel.getHospital().equals(saveModel2.getHospital())){
                for (SaveModel saveModel2 : list_read_83_84) {
                    if (saveModel.getHospital().equals(saveModel2.getHospital())) {
                        //获取阅读量
                        readNum = saveModel2.getResult1();
                        break;
                    }
                }
                readRate = df.format( readNum > 0.0? ((readNum)/(saveModel.getResult1() * 1.0000)*100):0.0);
                readRate = df.format(readNum > 0.0 ? ((readNum) / (saveModel.getResult1() * 1.0000) * 100) : 0.0);
                map.put("readNum", readNum.longValue());
                map.put("readRate", readRate+"%");
                map.put("readRate", readRate + "%");
            } else if (SaveModel.townLevel.equals(lowLevel)) {
                map.put("code", saveModel.getTown());
                map.put("name", saveModel.getTownName());
                map.put("amount", saveModel.getResult1());
                Double readNum = 0.0;
                for(SaveModel saveModel2:list_read_83_84){
                    if(saveModel.getTown().equals(saveModel2.getTown())){
                for (SaveModel saveModel2 : list_read_83_84) {
                    if (saveModel.getTown().equals(saveModel2.getTown())) {
                        //获取阅读量
                        readNum = saveModel2.getResult1();
                        break;
                    }
                }
                readRate = df.format( readNum > 0.0? ((readNum)/(saveModel.getResult1() * 1.0000)*100):0.0);
                readRate = df.format(readNum > 0.0 ? ((readNum) / (saveModel.getResult1() * 1.0000) * 100) : 0.0);
                map.put("readNum", readNum.longValue());
                map.put("readRate", readRate+"%");
                map.put("readRate", readRate + "%");
            } else if (SaveModel.cityLevel.equals(lowLevel)) {
                map.put("code", saveModel.getCity());
                map.put("name", saveModel.getCityName());
                map.put("amount", saveModel.getResult1());
                Double readNum = 0.0;
                for(SaveModel saveModel2:list_read_83_84){
                    if(saveModel.getCity().equals(saveModel2.getCity())){
                for (SaveModel saveModel2 : list_read_83_84) {
                    if (saveModel.getCity().equals(saveModel2.getCity())) {
                        //获取阅读量
                        readNum = saveModel2.getResult1();
                        break;
                    }
                }
                readRate = df.format( readNum > 0.0? ((readNum)/(saveModel.getResult1() * 1.0000)*100):0.0);
                readRate = df.format(readNum > 0.0 ? ((readNum) / (saveModel.getResult1() * 1.0000) * 100) : 0.0);
                map.put("readNum", readNum.longValue());
                map.put("readRate", readRate+"%");
                map.put("readRate", readRate + "%");
            } else if (SaveModel.teamLevel.equals(lowLevel)) {
                map.put("code", saveModel.getTeam());
                map.put("name", saveModel.getTeamName());
                map.put("amount", saveModel.getResult1());
                Double readNum = 0.0;
                for(SaveModel saveModel2:list_read_83_84){
                    if(saveModel.getTeam().equals(saveModel2.getTeam())){
                for (SaveModel saveModel2 : list_read_83_84) {
                    if (saveModel.getTeam().equals(saveModel2.getTeam())) {
                        //获取阅读量
                        readNum = saveModel2.getResult1();
                        break;
                    }
                }
                readRate = df.format( readNum > 0.0? ((readNum)/(saveModel.getResult1() * 1.0000)*100):0.0);
                readRate = df.format(readNum > 0.0 ? ((readNum) / (saveModel.getResult1() * 1.0000) * 100) : 0.0);
                map.put("readNum", readNum.longValue());
                map.put("readRate", readRate+"%");
                map.put("readRate", readRate + "%");
            }
            resultList.add(map);
        }
@ -5069,7 +5069,7 @@ public class StatisticsESService {
                        obj.put("name", town.getName());
                        obj.put("amount", "0");
                        obj.put("readNum", 0);
                        obj.put("readRate", Double.valueOf("0.00")+"%");
                        obj.put("readRate", Double.valueOf("0.00") + "%");
                        resultList.add(obj);
                    }
                }
@ -5092,7 +5092,7 @@ public class StatisticsESService {
                            obj.put("name", hos.getName());
                            obj.put("amount", "0");
                            obj.put("readNum", 0);
                            obj.put("readRate", Double.valueOf("0.00")+"%");
                            obj.put("readRate", Double.valueOf("0.00") + "%");
                            resultList.add(obj);
                        }
                    }
@ -5120,7 +5120,7 @@ public class StatisticsESService {
                            obj.put("name", team.getName());
                            obj.put("amount", "0");
                            obj.put("readNum", 0);
                            obj.put("readRate", Double.valueOf("0.00")+"%");
                            obj.put("readRate", Double.valueOf("0.00") + "%");
                            resultList.add(obj);
                        }
                    }
@ -5134,11 +5134,11 @@ public class StatisticsESService {
            public int compare(Map<String, Object> o1, Map<String, Object> o2) {
                long map1value = 0L;
                long map2value = 0L;
                if(o1.get("amount")!=null && o1.get("amount")+""!=""){
                    map1value = ((Double)o1.get("amount")).longValue();
                if (o1.get("amount") != null && o1.get("amount") + "" != "") {
                    map1value = ((Double) o1.get("amount")).longValue();
                }
                if(o2.get("amount")!=null && o2.get("amount")+""!=""){
                    map2value = ((Double)o2.get("amount")).longValue();
                if (o2.get("amount") != null && o2.get("amount") + "" != "") {
                    map2value = ((Double) o2.get("amount")).longValue();
                }
                if (map1value - map2value > 0) {
@ -5174,103 +5174,107 @@ public class StatisticsESService {
        return saveModel.getResult2().longValue();
    }
    public Map<String,Object> getLevelDeviceAndBinding(String area, int level, int sort, String lowLevel, String year,String deviceType) throws Exception {
    public Map<String, Object> getLevelDeviceAndBinding(String area, int level, int sort, String lowLevel, String year, String deviceType) throws Exception {
        String index_85 = "85";//设备发放量统计指标
        String index_86= "86";//设备绑定量统计指标
        String index_87= "87";//设备使用量统计指标
        String index_88= "88";//设备异常数据24H统计指标
        String index_86 = "86";//设备绑定量统计指标
        String index_87 = "87";//设备使用量统计指标
        String index_88 = "88";//设备异常数据24H统计指标
        //String lastDate = year + "-06-30";
        //String timeKey = elasticsearchUtil.getQuotaTime();
        String timeKey = DateUtil.getStringDateShort();//当前时间
        String mondayTime = DateUtil.getMondayOfThisDate(new Date());//本周一开始时间
        String low_level = String.valueOf(StringUtils.isEmpty(lowLevel) ? (level + 1) : lowLevel);
        Map<String,Object> resultMap = new HashedMap();
        Map<String, Object> resultMap = new HashedMap();
        DecimalFormat df = new DecimalFormat("0.00");
        List<Map<String, Object>> resultList = new ArrayList<>();
        SaveModel grantSaveModel = null;
        SaveModel bindingSaveModel = null;
        List<SaveModel> useSaveModel = null;
        List<SaveModel> startUseSaveModel = null;
        List<SaveModel> endUseSaveModel = null;
        SaveModel anomalySaveModel = null;
        String allCountSql = "";
        String anomalyCountSql ="";
//        List<SaveModel> grantList = null;//发放量折线图
//        List<SaveModel> bindingList = null;//绑定量折线图
        String anomalyCountSql = "";
        List<SaveModel> allAmountList = null;//发放量列表
        List<SaveModel> bindingAmountList = null;//绑定量列表
        switch (deviceType){
        String areaCondition = "";
        if (SaveModel.OrgLevel.equals(level + "")) {
            areaCondition = " and d.grant_org_code like '" + area + "' ";
        } else if (SaveModel.townLevel.equals(level + "")) {
            areaCondition = " and d.grant_org_code like '" + area.substring(0, 4) + "%' ";
        } else if (SaveModel.cityLevel.equals(level + "")) {
            areaCondition = " and d.grant_org_code like '" + area.substring(0, 2) + "%' ";
        }
        switch (deviceType) {
            case "1": {
                grantSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level, index_85,SaveModel.timeLevel_DDL,"hemopiezometer");
                bindingSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level, index_86,SaveModel.timeLevel_DDL,"hemopiezometer");
                allCountSql = "SELECT COUNT(*) FROM device.wlyy_devices d where device_name like '%血压%'";
                useSaveModel = elasticsearchUtil.findDateQuotaLevel1(mondayTime,timeKey, area, level, index_87, SaveModel.timeLevel_ZL, "hemopiezometer", null, null);
                anomalySaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level, index_88,SaveModel.timeLevel_DDL,"hemopiezometer");
                anomalyCountSql =" SELECT COUNT(d.id) FROM device.wlyy_patient_health_index d where d.type =1 and d.status=1 and d.del=1";
//                grantList = elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey,area,level,index_85, SaveModel.timeLevel_DDL, "hemopiezometer", interval, null);
//                bindingList = elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey,area,level,index_86, SaveModel.timeLevel_DDL, "hemopiezometer", interval, null);
                allAmountList = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index_85, SaveModel.timeLevel_DDL, "hemopiezometer","", low_level);
                bindingAmountList = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index_86, SaveModel.timeLevel_DDL, "hemopiezometer","", low_level);
                grantSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey, area, level, index_85, SaveModel.timeLevel_DDL, "hemopiezometer");
                bindingSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey, area, level, index_86, SaveModel.timeLevel_DDL, "hemopiezometer");
                allCountSql = "SELECT COUNT(*) FROM device.wlyy_devices d where device_name like '%血压%' " + areaCondition;
                startUseSaveModel = elasticsearchUtil.findDateQuotaLevel1(mondayTime, mondayTime, area, level, index_87, SaveModel.timeLevel_DDL, "hemopiezometer", null, null);
                endUseSaveModel = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index_87, SaveModel.timeLevel_DDL, "hemopiezometer", null, null);
                anomalySaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey, area, level, index_88, SaveModel.timeLevel_DDL, "hemopiezometer");
                anomalyCountSql = " SELECT COUNT(i.id) FROM device.wlyy_patient_health_index i left join device.wlyy_devices d on i.device_sn=d.device_code where i.type =1 and i.status=1 and i.del=1 " + areaCondition;
                allAmountList = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index_85, SaveModel.timeLevel_DDL, "hemopiezometer", "", low_level);
                bindingAmountList = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index_86, SaveModel.timeLevel_DDL, "hemopiezometer", "", low_level);
                break;
            }
            case "2": {
                grantSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level, index_85,SaveModel.timeLevel_DDL,"glucometer");
                bindingSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level, index_86,SaveModel.timeLevel_DDL,"glucometer");
                allCountSql = "SELECT COUNT(*) FROM device.wlyy_devices d where device_name like '%血糖%'";
                useSaveModel = elasticsearchUtil.findDateQuotaLevel1(mondayTime,timeKey, area, level, index_87, SaveModel.timeLevel_ZL, "glucometer", null, null);
                anomalySaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey,area,level, index_88,SaveModel.timeLevel_DDL,"glucometer");
                anomalyCountSql =" SELECT COUNT(d.id) FROM device.wlyy_patient_health_index d where d.type =2 and d.status=1 and d.del=1";
//                elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey,area,level,index_85, SaveModel.timeLevel_DDL, "glucometer", interval, null);
//                elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey,area,level,index_86, SaveModel.timeLevel_DDL, "glucometer", interval, null);
//                grantList = elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey,area,level,index_85, SaveModel.timeLevel_DDL, "hemopiezometer", interval, null);
//                bindingList = elasticsearchUtil.findDateQuotaLevel1(timeKey,timeKey,area,level,index_86, SaveModel.timeLevel_DDL, "hemopiezometer", interval, null);
                allAmountList = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index_85, SaveModel.timeLevel_DDL, "glucometer","", low_level);
                bindingAmountList = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index_86, SaveModel.timeLevel_DDL, "glucometer","", low_level);
                grantSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey, area, level, index_85, SaveModel.timeLevel_DDL, "glucometer");
                bindingSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey, area, level, index_86, SaveModel.timeLevel_DDL, "glucometer");
                allCountSql = "SELECT COUNT(*) FROM device.wlyy_devices d where device_name like '%血糖%' " + areaCondition;
                startUseSaveModel = elasticsearchUtil.findDateQuotaLevel1(mondayTime, mondayTime, area, level, index_87, SaveModel.timeLevel_DDL, "glucometer", null, null);
                endUseSaveModel = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index_87, SaveModel.timeLevel_DDL, "glucometer", null, null);
                anomalySaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey, area, level, index_88, SaveModel.timeLevel_DDL, "glucometer");
                anomalyCountSql = " SELECT COUNT(i.id) FROM device.wlyy_patient_health_index i left join device.wlyy_devices d on i.device_sn=d.device_code where i.type =2 and i.status=1 and i.del=1 " + areaCondition;
                allAmountList = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index_85, SaveModel.timeLevel_DDL, "glucometer", "", low_level);
                bindingAmountList = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index_86, SaveModel.timeLevel_DDL, "glucometer", "", low_level);
                break;
            }
            default: {
                grantSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,level, index_85,SaveModel.timeLevel_DDL);
                bindingSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,level, index_86,SaveModel.timeLevel_DDL);
                anomalySaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey,area,level, index_88,SaveModel.timeLevel_DDL);
                allCountSql = "SELECT COUNT(*) FROM device.wlyy_devices d ";
                anomalyCountSql =" SELECT COUNT(d.id) FROM device.wlyy_patient_health_index d where  d.status=1 and d.del=1";
                useSaveModel = elasticsearchUtil.findDateQuotaLevel0(mondayTime,timeKey, area, level, index_87, SaveModel.timeLevel_ZL,  null, null);
//                grantList = elasticsearchUtil.findDateQuotaLevel0(timeKey,timeKey,area,level,index_85, SaveModel.timeLevel_DDL,  interval, null);
//                bindingList = elasticsearchUtil.findDateQuotaLevel0(timeKey,timeKey,area,level,index_86, SaveModel.timeLevel_DDL,  interval, null);
                allAmountList = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index_85, SaveModel.timeLevel_DDL,"", low_level);
                grantSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey, area, level, index_85, SaveModel.timeLevel_DDL);
                bindingSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey, area, level, index_86, SaveModel.timeLevel_DDL);
                anomalySaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey, area, level, index_88, SaveModel.timeLevel_DDL);
                allCountSql = "SELECT COUNT(*) FROM device.wlyy_devices d where 1=1 " + areaCondition;
                anomalyCountSql = " SELECT COUNT(i.id) FROM device.wlyy_patient_health_index i left join device.wlyy_devices d on i.device_sn=d.device_code where  i.status=1 and i.del=1 " + areaCondition;
                startUseSaveModel = elasticsearchUtil.findDateQuotaLevel0(mondayTime, mondayTime, area, level, index_87, SaveModel.timeLevel_DDL, null, null);
                endUseSaveModel = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index_87, SaveModel.timeLevel_DDL, null, null);
                allAmountList = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index_85, SaveModel.timeLevel_DDL, "", low_level);
                bindingAmountList = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index_86, SaveModel.timeLevel_DDL, "", low_level);
            }
        }
        Integer allCount = jdbcTemplate.queryForObject(allCountSql,Integer.class);
        Integer allCount = jdbcTemplate.queryForObject(allCountSql, Integer.class);
//        Long total = elasticsearchUtil.excuteForLong(countSql,esIndex, esType);
        resultMap.put("totalAll",allCount);//采购量
        resultMap.put("totalGrant",grantSaveModel.getResult1());//发放量
        resultMap.put("totalBinding",bindingSaveModel.getResult1());//绑定量
        resultMap.put("totalAll", allCount);//采购量
        resultMap.put("totalGrant", grantSaveModel.getResult1());//发放量
        resultMap.put("totalBinding", bindingSaveModel.getResult1());//绑定量
        if(allCount>0){
            resultMap.put("totalGrantRange",df.format( grantSaveModel.getResult1() > 0.0? ((grantSaveModel.getResult1())/(allCount * 1.0000)*100):0.0)+"%");//发放率
            resultMap.put("totalBindingRange",df.format( bindingSaveModel.getResult1() > 0.0? ((bindingSaveModel.getResult1())/(grantSaveModel.getResult1() * 1.0000)*100):0.0)+"%");//绑定率
        }else{
            resultMap.put("totalGrantRange",0.0+"%");//发放率
            resultMap.put("totalBindingRange",0.0+"%");//绑定率
        }
        Double totalUseAccount = useSaveModel.size()>0?useSaveModel.get(0).getResult1():0.0;
        resultMap.put("totalUse",totalUseAccount);//本周使用量
        if(grantSaveModel.getResult1()>0){
            resultMap.put("totalUseRange",df.format( totalUseAccount > 0.0? ((totalUseAccount)/(grantSaveModel.getResult1() * 1.0000)*100):0.0)+"%");//本周使用率
        }else{
            resultMap.put("totalUseRange",0.0+"%");//本周使用率
        if (allCount > 0) {
            resultMap.put("totalGrantRange", df.format(grantSaveModel.getResult1() > 0.0 ? ((grantSaveModel.getResult1()) / (allCount * 1.0000) * 100) : 0.0) + "%");//发放率
            resultMap.put("totalBindingRange", df.format(bindingSaveModel.getResult1() > 0.0 ? ((bindingSaveModel.getResult1()) / (grantSaveModel.getResult1() * 1.0000) * 100) : 0.0) + "%");//绑定率
        } else {
            resultMap.put("totalGrantRange", 0.0 + "%");//发放率
            resultMap.put("totalBindingRange", 0.0 + "%");//绑定率
        }
        Double startTotalUseAccount = startUseSaveModel.size() > 0 ? startUseSaveModel.get(0).getResult1() : 0.0;
        Double endTotalUseAccount = endUseSaveModel.size() > 0 ? endUseSaveModel.get(0).getResult1() : 0.0;
        Double totalUseAccount = endTotalUseAccount-startTotalUseAccount;
        resultMap.put("totalUse", endTotalUseAccount-startTotalUseAccount);//本周使用量
        if (grantSaveModel.getResult1() > 0) {
            resultMap.put("totalUseRange", df.format(totalUseAccount > 0.0 ? ((totalUseAccount) / (grantSaveModel.getResult1() * 1.0000) * 100) : 0.0) + "%");//本周使用率
        } else {
            resultMap.put("totalUseRange", 0.0 + "%");//本周使用率
        }
        Integer totalAnomaly = jdbcTemplate.queryForObject(anomalyCountSql,Integer.class);
        resultMap.put("totalAnomaly",totalAnomaly);//异常数据量
        resultMap.put("totalIntervene",anomalySaveModel.getResult1());//干预指导数
        if(totalAnomaly>0){
            resultMap.put("totalInterveneRange",df.format( anomalySaveModel.getResult1() > 0.0? ((anomalySaveModel.getResult1())/(totalAnomaly * 1.0000)*100):0.0)+"%");//异常数据24h干预指导率
        }else{
            resultMap.put("totalInterveneRange",0.0+"%");//异常数据24h干预指导率
        Integer totalAnomaly = jdbcTemplate.queryForObject(anomalyCountSql, Integer.class);
        resultMap.put("totalAnomaly", totalAnomaly);//异常数据量
        resultMap.put("totalIntervene", anomalySaveModel.getResult1());//干预指导数
        if (totalAnomaly > 0) {
            resultMap.put("totalInterveneRange", df.format(anomalySaveModel.getResult1() > 0.0 ? ((anomalySaveModel.getResult1()) / (totalAnomaly * 1.0000) * 100) : 0.0) + "%");//异常数据24h干预指导率
        } else {
            resultMap.put("totalInterveneRange", 0.0 + "%");//异常数据24h干预指导率
        }
@ -5344,14 +5348,185 @@ public class StatisticsESService {
                    }
                }
            });
            resultMap.put("list",resultList);
            resultMap.put("list", resultList);
            return resultMap;
        } else {
            return new HashedMap();
        }
    }
    //i健康活动统计1.4.8版本
    public Map<String, Object> statisticsActivity(String area, int level, int sort,String lowLevel,String slaveKey1) throws Exception {
        Map<String, Object> resultMap = new HashMap<>();
        String index_89 = "89";//健康银行某个活动报名数(人次)
        String index_91 = "91";//健康银行全部活动报名数(人)
        String index_1 = "1";//签约已缴费指标(总人数按签约人数计算)
        String index_92 = "92";//健康银行活动参与数(人次)
        String timeKey = DateUtil.getStringDateShort();//当前时间
        String areaCondition = "";
        String areaCondition2 = "";
        //发布活动数
        if (SaveModel.OrgLevel.equals(level + "")) {
            areaCondition = " and d.area like '" + area + "' ";
            areaCondition2 = " and t.org_code like '" + area + "' ";
        } else if (SaveModel.townLevel.equals(level + "")) {
            areaCondition = " and d.area like '" + area.substring(0, 4) + "%' ";
            areaCondition2 = " and t.org_code like '" + area.substring(0, 4) + "%' ";
        } else if (SaveModel.cityLevel.equals(level + "")) {
            areaCondition = " and d.area like '" + area.substring(0, 2) + "%' ";
            areaCondition2 = " and t.org_code like '" + area.substring(0, 2) + "%' ";
        }
        String activitySql = "select count(1) from wlyy_health_bank_activity d where d.status=1  " + areaCondition;
        Integer activityCount = jdbcTemplate.queryForObject(activitySql, Integer.class);//发布活动数
        SaveModel activitySaveModel = null;//活动报名人次总量
        SaveModel participantSaveModel = null;//活动参与人次总量
        if(StringUtils.isNotEmpty(slaveKey1)){
            activitySaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey, area, level, index_89, SaveModel.timeLevel_DDL,slaveKey1);
            participantSaveModel = elasticsearchUtil.findOneDateQuotaLevel1(timeKey, area, level, index_92, SaveModel.timeLevel_DDL,slaveKey1);
            resultMap = applyList(index_1,index_89,area,level, sort,lowLevel,slaveKey1,resultMap);//列表
        }else{
            activitySaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey, area, level, index_89, SaveModel.timeLevel_DDL);
            participantSaveModel = elasticsearchUtil.findOneDateQuotaLevel0(timeKey, area, level, index_92, SaveModel.timeLevel_DDL);
            resultMap = applyList(index_1,index_91,area,level, sort,lowLevel,slaveKey1,resultMap);//列表
        }
        if(!StringUtils.isNotEmpty(slaveKey1)){
            resultMap.put("activityCount",activityCount);//发布活动数
            resultMap.put("participantCount",participantSaveModel!=null?participantSaveModel.getResult1().intValue():0);//参与活动人数
        }else{
            String dayStart =  DateUtil.dateToStrLong(new Date(DateUtil.getDayStartTime(new Date()).getTime()));
            String currentTime  = DateUtil.getStringDate();
            String sql = " select count(1) from health_bank.wlyy_health_bank_active_record r join wlyy.wlyy_admin_team t on r.team_id=t.id where r.create_time>='"+dayStart+"' and r.create_time<='"+currentTime+"' r.activity_id='"+slaveKey1+"' "+areaCondition2;
            Integer count = jdbcTemplate.queryForObject(sql,Integer.class);
            resultMap.put("dayActiveCount",count!=null?count.intValue():0);//今日活跃量
            resultMap.put("activityPatient",activitySaveModel.getResult1().intValue());//单个活动报名人数
        }
        //居民活跃统计
        resultMap.put("activityPatientRange","80%");//已报名
        resultMap.put("participantRange","60%");//已参与
        resultMap.put("expiryRange","20%");//已兑奖
        return resultMap;
    }
    /**
     * 获取活动信息
     *
     * @param id
     * @param area
     * @param level
     * @return
     */
    public List<Map<String, Object>> getAllAtivity(String id, String area, int level) {
        String condition = "";
        if (SaveModel.OrgLevel.equals(level + "")) {
            condition = " and a.area like '" + area + "' ";
        } else if (SaveModel.townLevel.equals(level + "")) {
            condition = " and a.area like '" + area.substring(0, 4) + "%' ";
        } else if (SaveModel.cityLevel.equals(level + "")) {
            condition = " and a.area like '" + area.substring(0, 2) + "%' ";
        }
        if (StringUtils.isNotEmpty(id)) {
            condition += " and a.id=" + id;
        }
        String sql = " select * from health_bank.wlyy_health_bank_activity a where a.status=1 " + condition;
        return jdbcTemplate.queryForList(sql);
    }
    //参与率列表
    public Map<String, Object> applyList(String index_all,String index_part,String area, int level, int sort, String lowLevel, String slaveKey1,Map<String, Object> resultMap) throws Exception {
//        String index_1 = "1";//签约已缴费指标(总人数按签约人数计算)
//        String index_91 = "91";//健康银行活动报名数
        String timeKey = DateUtil.getStringDateShort();//当前时间
        String low_level = String.valueOf(StringUtils.isEmpty(lowLevel) ? (level + 1) : lowLevel);
//        Map<String, Object> resultMap = new HashedMap();//返回的结果
        List<SaveModel> allAmountList = null;//签约已缴费人数列表
        List<SaveModel> applyAmountList = null;//报名人数列表
        if (StringUtils.isNotEmpty(slaveKey1)) {
            allAmountList = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index_all, SaveModel.timeLevel_DDL, slaveKey1, "", low_level);
            applyAmountList = elasticsearchUtil.findDateQuotaLevel1(timeKey, timeKey, area, level, index_part, SaveModel.timeLevel_DDL, slaveKey1, "", low_level);
        } else {
            allAmountList = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index_all, SaveModel.timeLevel_DDL, "", low_level);
            applyAmountList = elasticsearchUtil.findDateQuotaLevel0(timeKey, timeKey, area, level, index_part, SaveModel.timeLevel_DDL, "", low_level);
        }
        Map<String, Integer> allMap = new HashMap<>(); //签约人数的的列表转map
        if (allAmountList != null && allAmountList.size() > 0) {
            for (SaveModel saveModel : allAmountList) {
                if ("3".equals(low_level) && saveModel.getTown() != null) {
                    allMap.put(saveModel.getTown(), saveModel.getResult2().intValue());
                } else if ("4".equals(low_level) && saveModel.getHospital() != null) {
                    allMap.put(saveModel.getHospital(), saveModel.getResult2().intValue());
                } else if ("5".equals(low_level) && saveModel.getTeam() != null) {
                    allMap.put(saveModel.getTeam(), saveModel.getResult2().intValue());
                } else {
                    continue;
                }
            }
        }
        //自建结果集
        List<Map<String, Object>> resultList = getLowLevelMapKey(level, low_level, area);
        if (resultList != null && resultList.size() > 0) {
            Map<String, SaveModel> applyMap = new HashMap<>();
            applyAmountList.stream().forEach(one -> {
                if ("5".equals(low_level)) {
                    applyMap.put(one.getTeam(), one);
                } else if ("4".equals(low_level)) {
                    applyMap.put(one.getHospital(), one);
                } else if ("3".equals(low_level)) {
                    applyMap.put(one.getTown(), one);
                }
            });
            for (Map<String, Object> reMap : resultList) {
                reMap.put("amount", reMap.get("amount") != null ? Long.valueOf(reMap.get("amount").toString()) : 0L);
                Integer allAmount = 0;
                int applyAmount = 0;
                //获取绑定数量
                if (applyMap != null && applyMap.size() > 0) {
                    SaveModel one = applyMap.get(reMap.get("code").toString());
                    if (one != null) {
                        applyAmount = one.getResult2().intValue();
                    }
                }
                if (allMap != null && allMap.size() > 0) {
                    allAmount = allMap.get(reMap.get("code").toString());
                    if (allAmount == null) {
                        allAmount = 0;
                    }
                }
                reMap.put("allNum", allAmount);
                reMap.put("applyNum", applyAmount);
                reMap.put("rate", getRange(applyAmount, allAmount, 2));//参与率是 报名数/签约数
                if ((level == 2 && "5".equals(lowLevel)) || (level == 4) || (level == 3 && "5".equals(lowLevel))) {
                    translateTeamLeaderName(resultList);
                }
                //对结果进行排序
                Collections.sort(resultList, new Comparator<Map<String, Object>>() {
                    public int compare(Map<String, Object> o1, Map<String, Object> o2) {
                        int map1value = (int) o1.get("allNum");
                        int map2value = (int) o2.get("allNum");
                        if (map1value - map2value > 0) {
                            return sort == 1 ? -1 : 1;
                        } else if (map1value - map2value < 0) {
                            return sort == 1 ? 1 : -1;
                        } else {
                            return 0;
                        }
                    }
                });
            }
            resultMap.put("list", resultList);
            return resultMap;
        } else {
            return new HashedMap();
        }
    }

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/specialist/SpecialistService.java

@ -315,7 +315,7 @@ public class SpecialistService extends BaseService {
        param.put("nameKey",nameKey);
        param.put("page",page);
        param.put("size",size);
        HttpResponse response = HttpUtils.doGet(specialistUrl+"getDoctorPatientByName",param);
        HttpResponse response = HttpUtils.doGet(specialistUrl+"svr-specialist/getDoctorPatientByName",param);
        JSONObject  rs = new JSONObject(response.getContent());
        if("succes".equals(rs.getString("message"))){
            return rs.getJSONArray("obj");

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/template/DoctorTeamGuidanceService.java

@ -484,7 +484,7 @@ public class DoctorTeamGuidanceService extends BaseService {
        guidance.setImages(image);
        // 保存
        if (patientHealthGuidanceService.add(guidance, accessToken) != null) {
        if (patientHealthGuidanceService.add(guidance, accessToken,null) != null) {
            String sendImgs = "";
            if (StringUtils.isNotBlank(image)) {
                sendImgs = image;

+ 5 - 3
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/health/DoctorHealthGuidanceController.java

@ -143,7 +143,8 @@ public class DoctorHealthGuidanceController extends WeixinBaseController {
                      @RequestParam String content,
                      @RequestParam(required = false) String modelCode,
                      @RequestParam(required = false) String images,
                      @RequestParam(required = false) String voice) {
                      @RequestParam(required = false) String voice,
                      @RequestParam(required = false) String tzCode) {
        String imageUrls = "";
        String imageRow = "";
@ -186,11 +187,12 @@ public class DoctorHealthGuidanceController extends WeixinBaseController {
                guidance.setImages(images);
                // 保存到居民端健康指导
                if (patientHealthGuidanceService.add(guidance, getAccessToken()) != null) {
                if (patientHealthGuidanceService.add(guidance, getAccessToken(),tzCode) != null) {
                    Patient p = patientService.findByCode(patient);
                    String imcotent = "{\"title\":\"健康指导\",\"type\":2,\"id\":\"" + guidance.getId() + "\",\"img\":\"" + guidance.getImages() + "\",\"content\":\"" + CommonUtil.getSubString(guidance.getContent(), 0, 30) + "\"}";
                    consultService.sendMucMessageBySingnType(getUID(), doctor.getName(), patient, imcotent, "4", p.getName());
                    BusinessLogs.info(BusinessLogs.BusinessType.guidance, getUID(), patient, new JSONObject(guidance));
                    return success("保存成功!");
                } else {
                    return error(-1, "居民签约已到期,请使用文字回复。");
@ -233,7 +235,7 @@ public class DoctorHealthGuidanceController extends WeixinBaseController {
                guidance.setImages(images);
                // 保存
                if (patientHealthGuidanceService.add(guidance, getAccessToken()) != null) {
                if (patientHealthGuidanceService.add(guidance, getAccessToken(),tzCode) != null) {
                    String sendImgs = "";
                    if (StringUtils.isNotBlank(images)) {
                        sendImgs = images;

+ 3 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/message/DoctorMessageController.java

@ -25,6 +25,8 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -243,7 +245,7 @@ public class DoctorMessageController extends BaseController {
    @ApiOperation("获取超标指标消息--根据患者分组")
    public String getHealthIndexMessage() throws Exception {
        try {
            List<Map<String, Object>> list = messageService.getHealthIndexMessage(getUID());     //"D20161008003"
            Map<String,List<Map<String, Object>>> list = messageService.getHealthIndexMessage(getUID());     //"D20161008003"
            return write(200, "获取超标指标消息成功", "data", list);
        } catch (Exception ex) {

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/specialist/SpecialistController.java

@ -175,7 +175,7 @@ public class SpecialistController extends BaseController {
    @RequestMapping(value = "getDoctorPatientByName", method = RequestMethod.GET)
    @ApiOperation("搜索专科医生下的居民")
    public String getDoctorPatientByName(@ApiParam(name = "doctor", value = "医生code") @RequestParam(required = true)String doctor,
                                         @ApiParam(name = "name", value = "居民姓名模糊") @RequestParam(required = false)String nameKey,
                                         @ApiParam(name = "nameKey", value = "居民姓名模糊") @RequestParam(required = false)String nameKey,
                                         @ApiParam(name = "page", value = "第几页,1开始") @RequestParam(required = true)Integer page,
                                         @ApiParam(name = "size", value = "每页大小") @RequestParam(required = true)Integer size) {
        try {

+ 13 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/prescription/PatientPrescriptionInfoController.java

@ -157,5 +157,18 @@ public class PatientPrescriptionInfoController extends BaseController {
            return error(-1, e.getMessage());
        }
    }
    @ApiOperation("判断患者是否有续方记录")
    @ResponseBody
    @RequestMapping(value = "checkPatientWithPrescription", method = RequestMethod.GET)
    public String checkPatientWithPrescription(){
        try {
            return write(200, "获取信息成功!", "data",prescriptionInfoService.checkPatientWithPrescription(getUID()));
        }catch (Exception e) {
            error(e);
            return error(-1, e.getMessage());
        }
    }
}

+ 165 - 15
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/EsStatisticsController.java

@ -517,7 +517,7 @@ public class EsStatisticsController extends BaseController {
                    if ("13".equals(idx)) {
                        idx = "1";
                    }
                    JSONObject json = statisticsESService.getDateTotal(startDate, endDate, interval, area, level, idx, lowCode, year);
                    JSONObject json = statisticsESService.getDateTotal(startDate, endDate, interval, area, level, idx, lowCode, year,SaveModel.timeLevel_DDL);
                    result.put("index_" + idx, json);
                }
            }
@ -2177,7 +2177,7 @@ public class EsStatisticsController extends BaseController {
    @ApiOperation("设备绑定统计")
    @ResponseBody
    public String lowlevel_device(
            @RequestParam(required = false) String deviceType,//1血压 2血糖 不传是所有设备
            @RequestParam(required = false,defaultValue = "") String deviceType,//1血压 2血糖 不传是所有设备
            @RequestParam(required = true) String area,
            @RequestParam(required = true) int level,
            @RequestParam(required = true) int sort,
@ -2201,24 +2201,174 @@ public class EsStatisticsController extends BaseController {
        }
    }
    @RequestMapping("/lowlevel_activity")
    @ApiOperation("健康银行活动统计")
    @ResponseBody
    public String lowlevel_activity(@ApiParam(name = "id", value = "活动id") @RequestParam(required = false) String activityCode,
                                    @ApiParam(name = "area", value = "地区code") @RequestParam(required = true) String area,
                                    @ApiParam(name = "level", value = "地区级别,1 团队,2 机构,3 区,4 市") @RequestParam(required = true) int level,
                                    @ApiParam(name = "sort", value = "排序 1倒叙 2是 正序")@RequestParam(required = true) int sort,
                                    @ApiParam(name = "lowLevel", value = "(下一个级别)只有可能是 1,2,3,不传默认是level-1;") @RequestParam(required = false) String lowLevel,
                                    @RequestParam(required = false) String year){
        try{
            level = elasticsearchUtil.changeLevel(level);
            Map<String, Object> resultMap = statisticsESService.statisticsActivity(area,level,sort,lowLevel,activityCode);
            return write(200, "查询成功", "data", resultMap);
        }catch (Exception e){
            e.printStackTrace();
            return error(-1, "查询失败");
        }
    }
    @RequestMapping(value = "/getAllAtivity",method = RequestMethod.GET)
    @ApiOperation("获取所有活动信息")
    @ResponseBody
    public String getAllAtivity(@ApiParam(name = "id", value = "活动id")
                                @RequestParam(value = "id", required = false)String id,
                                @ApiParam(name = "area", value = "地区code")
                                @RequestParam(value = "area", required = false)String area,
                                @ApiParam(name = "level", value = "地区级别,1 团队,2 机构,3 区,4 市")
                                @RequestParam(value = "level", required = false)int level){
        try{
            level = elasticsearchUtil.changeLevel(level);
            List<Map<String, Object>> list = statisticsESService.getAllAtivity(id,area,level);
            return write(200, "查询成功", "data", list);
        }catch (Exception e){
            e.printStackTrace();
            return error(-1, "查询失败");
        }
    }
    /**
     * 获取绑定和发放量的折线图
     * 健康银行活动人数增长曲线
     *
     * @param startDate
     * @param endDate
     * @param type      0 按周,1 按月
     * @param startDate 起始日期
     * @param endDate   结束时间
     * @param interval  时间间隔
     * @param area      区域或机构
     * @param level     级别
     * @param lowCode   子维度
     * @param year      查询年份
     * @return
     *//*
    @RequestMapping("/getDeviceLine")
     */
    @RequestMapping(value = "/activity_increase",method = RequestMethod.GET)
    @ResponseBody
    public String getDeviceLine(@RequestParam(required = true) String startDate,
                                 @RequestParam(required = true) String endDate,
                                 @RequestParam(required = true) String type) {
    public String activityIncrease(@RequestParam(required = true) String startDate,
                                     @RequestParam(required = true) String endDate,
                                     @RequestParam(required = true) int interval,
                                     @RequestParam(required = true) String area,
                                     @RequestParam(required = true) int level,
                                     @RequestParam(required = false) String lowCode,
                                     @RequestParam(required = false) String year) {
        try {
            return write(200, "查询成功", "data", statisticsESService.getSignCountLineByType(getUID(), type, startDate, endDate));
            //89指标
            level = elasticsearchUtil.changeLevel(level);
            JSONObject result = new JSONObject();
            if (org.springframework.util.StringUtils.isEmpty(year)) {
                year =  Constant.getNowYearByDate(endDate);
            }
            JSONObject json = statisticsESService.getDateTotal(startDate, endDate, interval, area, level, "89", lowCode, year,SaveModel.timeLevel_ZL);
            result.put("index_89", json);
            return write(200, "查询成功!", "data", result);
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
            e.printStackTrace();
            return error(-1, "查询失败!");
        }
    }
    /**
     * 健康银行活跃人数增长曲线
     *
     * @param startDate 起始日期
     * @param endDate   结束时间
     * @param interval  时间间隔
     * @param area      区域或机构
     * @param level     级别
     * @param lowCode   子维度
     * @param year      查询年份
     * @return
     */
    @RequestMapping(value = "/active_statistics",method = RequestMethod.GET)
    @ResponseBody
    public String activeStatistics(@RequestParam(required = true) String startDate,
                                   @RequestParam(required = true) String endDate,
                                   @RequestParam(required = true) int interval,
                                   @RequestParam(required = true) String area,
                                   @RequestParam(required = true) int level,
                                   @RequestParam(required = false) String lowCode,
                                   @RequestParam(required = false) String year) {
        try {
            //89指标
            level = elasticsearchUtil.changeLevel(level);
            JSONObject result = new JSONObject();
            if (org.springframework.util.StringUtils.isEmpty(year)) {
                year =  Constant.getNowYearByDate(endDate);
            }
            JSONObject json = statisticsESService.getDateTotal(startDate, endDate, interval, area, level, "90", lowCode, year,SaveModel.timeLevel_ZL);
            result.put("index_90", json);
            return write(200, "查询成功!", "data", result);
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败!");
        }
    }*/
    }
    /**
     * 报名量与活跃度到达量曲线
     *
     * @param startDate 起始日期
     * @param endDate   结束时间
     * @param interval  时间间隔
     * @param area      区域或机构
     * @param level     级别
     * @param activityCode   子维度
     * @param year      查询年份
     * @return
     */
    @RequestMapping(value = "/active_apply_statistics",method = RequestMethod.GET)
    @ResponseBody
    public String applyAndactiveStatistics(@ApiParam(name = "startDate", value = "开始时间") @RequestParam(required = true) String startDate,
                                           @ApiParam(name = "endDate", value = "结束时间") @RequestParam(required = true) String endDate,
                                           @ApiParam(name = "interval", value = "1日 2周 3月") @RequestParam(required = true) int interval,
                                           @ApiParam(name = "area", value = "地区") @RequestParam(required = true) String area,
        //                                   @RequestParam(required = true) String index,
                                           @ApiParam(name = "level", value = "地区级别,1 团队,2 机构,3 区,4 市") @RequestParam(required = true) int level,
                                           @ApiParam(name = "activityCode", value = "活动的id") @RequestParam(required = false) String activityCode,
                                           @RequestParam(required = false) String year) {
        try {
            level = elasticsearchUtil.changeLevel(level);
            JSONObject result = new JSONObject();
//            JSONObject json = statisticsESService.getDateTotal(startDate, endDate, interval, area, level, "90", lowCode, year,SaveModel.timeLevel_ZL);
//            result.put("index_89", json);
            String index = "";
            if(StringUtils.isNotEmpty(activityCode)){
                index="91,90";
            }else{
                index="89,90";
            }
            if (index != null) {
                if (org.springframework.util.StringUtils.isEmpty(year)) {
                    year =  Constant.getNowYearByDate(endDate);
                }
                String[] indexes = index.split(",");
                for (String idx : indexes) {
                    JSONObject json = statisticsESService.getDateTotal(startDate, endDate, interval, area, level, idx, activityCode, year,SaveModel.timeLevel_DDL);
                    result.put("index_"+idx, json);
                }
            }
            return write(200, "查询成功!", "data", result);
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败!");
        }
    }
}