Browse Source

Merge branch 'dev' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into dev

xiaoyunquan 2 years ago
parent
commit
14ad27d0bf

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/lifeCare/PadLifeCareEndpoint.java

@ -89,7 +89,7 @@ public class PadLifeCareEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1") @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15") @RequestParam(value = "size") int size) {
        try {
            JSONObject result = lifeCareOrderService.queryInfoList(patient, status,null, page, size);
            JSONObject result = lifeCareOrderService.queryInfoList(patient, status,null, page, size,null);
            if (result.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return PageEnvelop.getError(result.getString(ResponseContant.resultMsg), -1);
            }

+ 7 - 5
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/lifeCare/PatientLifeCareEndpoint.java

@ -90,10 +90,11 @@ public class PatientLifeCareEndpoint  extends EnvelopRestEndpoint {
            @ApiParam(name = "patient", value = "居民code") @RequestParam(value = "patient", required = true) String patient,
            @ApiParam(name = "status", value = "工单状态,状态为全部时不传") @RequestParam(value = "status", required = false) Integer status,
            @ApiParam(name = "fedCode", value = "生活工单服务项") @RequestParam(value = "fedCode", required = false) String fedCode,
            @ApiParam(name = "orgCode", value = "生活工单服务项所属机构") @RequestParam(value = "orgCode", required = false) String orgCode,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1") @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15") @RequestParam(value = "size") int size) {
        try {
            JSONObject result = lifeCareOrderService.queryInfoList(patient, status,fedCode, page, size);
            JSONObject result = lifeCareOrderService.queryInfoList(patient, status,fedCode, page, size,orgCode);
            if (result.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return PageEnvelop.getError(result.getString(ResponseContant.resultMsg), -1);
            }
@ -108,9 +109,10 @@ public class PatientLifeCareEndpoint  extends EnvelopRestEndpoint {
    @ApiOperation(value = "查询工单数量")
    public ObjEnvelop infoCount(
            @ApiParam(name = "patient", value = "居民code") @RequestParam(value = "patient", required = true) String patient,
            @ApiParam(name = "fedCode", value = "生活工单服务项") @RequestParam(value = "fedCode", required = false) String fedCode) {
            @ApiParam(name = "fedCode", value = "生活工单服务项") @RequestParam(value = "fedCode", required = false) String fedCode,
            @ApiParam(name = "orgCode", value = "生活工单服务项所属机构") @RequestParam(value = "orgCode", required = false) String orgCode) {
        try {
            JSONObject allResult = lifeCareOrderService.queryInfoList(patient, null,fedCode, 1, 5);
            JSONObject allResult = lifeCareOrderService.queryInfoList(patient, null,fedCode, 1, 5,orgCode);
            if (allResult.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return ObjEnvelop.getError(allResult.getString(ResponseContant.resultMsg), -1);
            }
@ -118,14 +120,14 @@ public class PatientLifeCareEndpoint  extends EnvelopRestEndpoint {
            JSONObject object = new JSONObject();
            object.put("allCount",allCount);
            JSONObject qxResult = lifeCareOrderService.queryInfoList(patient, -1, fedCode,1, 5);
            JSONObject qxResult = lifeCareOrderService.queryInfoList(patient, -1, fedCode,1, 5,orgCode);
            if (qxResult.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return ObjEnvelop.getError(qxResult.getString(ResponseContant.resultMsg), -1);
            }
            int qxCount = qxResult.getIntValue(ResponseContant.count);
            object.put("qxCount",qxCount);
            JSONObject wcResult = lifeCareOrderService.queryInfoList(patient, 2, fedCode,1, 5);
            JSONObject wcResult = lifeCareOrderService.queryInfoList(patient, 2, fedCode,1, 5,orgCode);
            if (wcResult.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return ObjEnvelop.getError(wcResult.getString(ResponseContant.resultMsg), -1);
            }

+ 121 - 7
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/statistics/OpenStatisticsEndpoint.java

@ -20,6 +20,9 @@ import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
 * Created with IntelliJ IDEA.
 *
@ -240,7 +243,7 @@ public class OpenStatisticsEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "findUserByType")
    @ApiOperation(value = "人员实时动态搜索")
    public Envelop findUserByType(@ApiParam(name = "type", value = "类型:1幼儿,2签约老人,3社工,4医生,5老人家属 6助老员,7社区老人(未签约).不传返回四个类型的数据")
    public Envelop findUserByType(@ApiParam(name = "type", value = "类型:1幼儿,2签约老人,3社工,4医生,5老人家属 6助老员,7街道老人(未签约)8 需招呼老人 原社区老人 .不传返回四个类型的数据")
                                  @RequestParam(value = "type", required = false) String type,
                                  @ApiParam(name = "name", value = "姓名")
                                  @RequestParam(value = "name", required = false) String name,
@ -486,12 +489,20 @@ public class OpenStatisticsEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "findTendOld")
    @ApiOperation(value = "获取照护老人列表")
    public ObjEnvelop findTendOld(@ApiParam(name="page",value = "页码",required = false)
                                       @RequestParam(value = "page",required = true,defaultValue = "1") Integer page,
                                   @ApiParam(name="size",value = "分页大小",required = false)
                                       @RequestParam(value = "size",required = true,defaultValue = "5") Integer size){
        try {
            JSONObject tendOld = statisticsService.findTendOld(page, size);
    public ObjEnvelop findTendOld(@ApiParam(name = "page", value = "页码", required = false)
                                  @RequestParam(value = "page", required = true, defaultValue = "1") Integer page,
                                  @ApiParam(name = "size", value = "分页大小", required = false)
                                  @RequestParam(value = "size", required = true, defaultValue = "5") Integer size,
                                  @ApiParam(name = "type", value = "查询类型1老人,2幼儿", required = false)
                                  @RequestParam(value = "type", required = false) Integer type,
                                  @ApiParam(name = "idcard",value = "身份证",required = false)
                                  @RequestParam(value = "idcard",required = false)String idcard,
                                  @ApiParam(name = "name",value = "居民名字",required = false)
                                  @RequestParam(value = "name",required = false)String name,
                                  @ApiParam(name = "orgName",value = "社区名字",required = false)
                                  @RequestParam(value = "orgName",required = false)String  orgName) {
        try {
            JSONObject tendOld = statisticsService.findTendOld(type,page, size,idcard,name,orgName);
            return success(tendOld);
        } catch (Exception e) {
            e.printStackTrace();
@ -499,4 +510,107 @@ public class OpenStatisticsEndpoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "findOldOrg")
    @ApiOperation(value = "获取照护老人社区")
    public ListEnvelop findOldOrg(){
        try {
            List<Map<String, Object>> oldOrg = statisticsService.findOldOrg();
            return success(oldOrg);
        } catch (Exception e) {
            e.printStackTrace();
            return failedListEnvelopException2(e);
        }
    }
    @GetMapping(value = "findOverTimeOrder")
    @ApiOperation(value = "获取超时工单")
    public ObjEnvelop findOverTimeOrder(@ApiParam(name = "page", value = "页", required = true,defaultValue = "1")
                                        @RequestParam(value = "page", required = true) Integer page,
                                        @ApiParam(name = "size", value = "条", required = true,defaultValue = "10")
                                        @RequestParam(value = "size", required = true) Integer size,
                                        @ApiParam(name = "name", value = "居民名字", required = false)
                                        @RequestParam(value = "name", required = false) String name,
                                        @ApiParam(name = "idcard", value = "身份证", required = false)
                                        @RequestParam(value = "idcard", required = false) String idcard,
                                        @ApiParam(name = "orgCode", value = "机构code", required = false)
                                        @RequestParam(value = "orgCode", required = false) String orgCode,
                                        @ApiParam(name = "type", value = "查询类型1安防紧急工单 2生活照料", required = false)
                                        @RequestParam(value = "type", required = false) Integer type) {
        try {
            JSONObject jsonObject = statisticsService.overTimeOrderList(type, page, size, name, idcard, orgCode);
            return success(jsonObject);
        } catch (Exception e) {
            e.printStackTrace();
            return failedObjEnvelopException2(e);
        }
    }
    @GetMapping(value = "emeSecOrderList")
    @ApiOperation(value = "获取紧急安防工单列表")
    public ObjEnvelop emeSecOrderList(@ApiParam(name = "page", value = "页", required = true,defaultValue = "1")
                                      @RequestParam(value = "page", required = true) Integer page,
                                      @ApiParam(name = "size", value = "条", required = true,defaultValue = "10")
                                      @RequestParam(value = "size", required = true) Integer size,
                                      @ApiParam(name = "name", value = "居民名字", required = false)
                                      @RequestParam(value = "name", required = false) String name,
                                      @ApiParam(name = "idcard", value = "身份证", required = false)
                                      @RequestParam(value = "idcard", required = false) String idcard,
                                      @ApiParam(name = "orgCode", value = "机构code", required = false)
                                      @RequestParam(value = "orgCode", required = false) String orgCode,
                                      @ApiParam(name = "status",value = "工单状态",required = false)
                                      @RequestParam(value = "status",required = false)Integer status){
        try {
            JSONObject jsonObject = statisticsService.emeSecOrderList(status, name, idcard, orgCode, page, size);
            return success(jsonObject);
        } catch (Exception e) {
            e.printStackTrace();
            return failedObjEnvelopException2(e);
        }
    }
    @GetMapping(value = "deviceNameList")
    @ApiOperation(value = "获取设备名字列表")
    public ListEnvelop deviceNameList(@ApiParam(name = "deviceType",value = "设备类型 0健康设备 1安防设备",required = false)
                                      @RequestParam(value = "deviceType",required = false)String deviceType){
        try {
            List<Map<String, Object>> list = statisticsService.deviceNameList(deviceType);
            return success(list);
        } catch (Exception e) {
            e.printStackTrace();
            return failedListEnvelopException2(e);
        }
    }
    @GetMapping(value = "healthySecurityDeviceList")
    @ApiOperation(value = "获取安防/健康设备列表")
    public PageEnvelop healthySecurityDeviceList(@ApiParam(name = "page", value = "页", required = true,defaultValue = "1")
                                                 @RequestParam(value = "page", required = true) Integer page,
                                                 @ApiParam(name = "size", value = "条", required = true,defaultValue = "10")
                                                 @RequestParam(value = "size", required = true) Integer size,
                                                 @ApiParam(name = "name", value = "居民名字", required = false)
                                                 @RequestParam(value = "name", required = false) String name,
                                                 @ApiParam(name = "deviceSn", value = "设备Sn码", required = false)
                                                 @RequestParam(value = "deviceSn", required = false) String deviceSn,
                                                 @ApiParam(name = "categoryCode", value = "设备类型Code", required = false)
                                                 @RequestParam(value = "categoryCode", required = false) String categoryCode,
                                                 @ApiParam(name = "contactStatus",value = "在线状态 1在线,0不在线",required = false)
                                                 @RequestParam(value = "contactStatus",required = false)String contactStatus,
                                                 @ApiParam(name = "type",value = "查询设备类型 af / jk",required = false)
                                                 @RequestParam(value = "type",required = false)String type){
        try {
            return statisticsService.healthySecurityDeviceList(name,deviceSn,categoryCode,contactStatus,type,page,size);
        } catch (Exception e) {
            e.printStackTrace();
            return failedPageEnvelopException2(e);
        }
    }
}

+ 4 - 3
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/third/platForm/PatientInfoPlatFormEndpoint.java

@ -80,11 +80,12 @@ public class PatientInfoPlatFormEndpoint extends EnvelopRestEndpoint {
    }
    @GetMapping(value = "findUnSignPatientLocations")
    @ApiOperation("查找未签约老人坐标")
    @ApiOperation("查找未签约老人坐标 社区老人/街道老人")
    public PageEnvelop findUnSignPatientLocations(@ApiParam(name = "page")@RequestParam(value = "page")Integer page,
                                                  @ApiParam(name = "size")@RequestParam(value = "size")Integer size){
                                                  @ApiParam(name = "size")@RequestParam(value = "size")Integer size,
                                                  @ApiParam(name = "type",value = "类型1社区老人 2街道老人",required = false)@RequestParam(value = "type",required = false)Integer type){
        try {
            return baseServiceNewsService.findUnSignPatientLocations(page,size);
            return baseServiceNewsService.findUnSignPatientLocations(page,size,type);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }

+ 5 - 3
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/lifeCare/LifeCareOrderService.java

@ -517,7 +517,7 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
     *
     * @return
     */
    public JSONObject queryInfoList(String patient,Integer status,String fedCode ,int page, int size) {
    public JSONObject queryInfoList(String patient,Integer status,String fedCode ,int page, int size,String orgCode) {
        JSONObject result = new JSONObject();
        status = null == status ? -100 : status;
@ -525,9 +525,11 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
        int end = 0 == size ? 15 : size;
        String fedSql = " ";
        if (StringUtils.isNotBlank(fedCode)){
            String fedOrgCode ="";
            if (StringUtils.isNotBlank(orgCode))fedOrgCode="  AND cid.org_code = '"+orgCode+"'";
            fedSql = " and EXISTS ( " +
                    " select 1 from base_life_care_fee_detail fed where fed.order_id = o.id and fed.code='"+fedCode+"' " +
                    " )  ";
                    " select 1 from base_life_care_fee_detail fed LEFT JOIN base_life_care_item_dict cid ON fed.code = cid.code where fed.order_id = o.id and fed.code='"+fedCode+"' " + fedOrgCode +
                    "  )  ";
        }
        String sql = "SELECT *  FROM  base_life_care_order o " +

+ 11 - 5
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/BaseServiceNewsService.java

@ -183,11 +183,11 @@ public class BaseServiceNewsService {
    }
    /**
     * 查找所有未签约老人
     * 社区老人
     * 社区老人   需招呼老人(孤/独/空)   register = 1
     * 街道老人   第三方同步过来的朝晖街道老人数据  register = 2
     * @return
     */
    public PageEnvelop<List<Map<String,Object>>> findUnSignPatientLocations(Integer page,Integer size){
    public PageEnvelop<List<Map<String,Object>>> findUnSignPatientLocations(Integer page,Integer size,Integer type){
        page = page>0?page-1:0;
        String filter =" ";
@ -201,12 +201,17 @@ public class BaseServiceNewsService {
            }
        }
        String typeSql =" p.register = 1";
        if (null!=type&&type==2) {
            typeSql = " p.register = 2";
        }
        String sql = "SELECT p.id,p.`name`,p.address,p.photo,p.mobile,p.lat_lon latLon,sex,idcard,archive_type type,p.pad_imei,p.openid " +
                " from base_patient p " +
                "WHERE  p.del =1 and p.archive_type=1 and p.sign_status=0 and p.register = 1 and p.lat_lon is not null "+filter+" limit "+page*size+","+size;
                "WHERE  p.del =1 and p.archive_type=1 and p.sign_status=0 and "+typeSql+" and p.lat_lon is not null "+filter+" limit "+page*size+","+size;
        String sqlCount = "SELECT count(p.id) " +
                " from base_patient p " +
                "WHERE  p.del =1 and p.archive_type=1 and p.sign_status=0 and p.register = 1 and  p.lat_lon is not null "+filter ;
                "WHERE  p.del =1 and p.archive_type=1 and p.sign_status=0 and "+typeSql+" and  p.lat_lon is not null "+filter ;
        Long count = jdbcTemplate.queryForObject(sqlCount,Long.class);
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> map:list){
@ -256,6 +261,7 @@ public class BaseServiceNewsService {
        return PageEnvelop.getSuccessListWithPage("success",list,page,size,count);
    }
    public List<Map<String , Object>> getLatLon(){
        String filter =" ";
        String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_helper' or dict_name = 'jkzl_teacher' ";

+ 27 - 11
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/patient/CarePatientService.java

@ -770,7 +770,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
            re.put("child",list);
            re.put("childTotal",findChildTotal(name,residentialArea,filter));
        }
        if("2".equals(type)||StringUtil.isBlank(type)){//老人
        if("2".equals(type)||"8".equals(type)||StringUtil.isBlank(type)){//老人  //1.7.7增加  需照护老人(孤/独/空)800 + 老人名单
            filter = "";
            String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_older' ";
            List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
@ -780,9 +780,9 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
                filter = " and a.id not in ('"+orgCodes+"')";
            }
            List<Map<String,Object>> list = findOld(name,residentialArea,area,level,limit,filter);
            List<Map<String,Object>> list = findOld(type,name,residentialArea,area,level,limit,filter);
            re.put("old",list);
            re.put("oldTotal",findOldTotal(name,residentialArea,area,level,filter));
            re.put("oldTotal",findOldTotal(type,name,residentialArea,area,level,filter));
        }
        if("3".equals(type)||StringUtil.isBlank(type)){//社工
            filter = "";
@ -825,7 +825,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
            re.put("helper4",list);
            re.put("helper4Total",findHelper4Total(name,area,level,filter));
        }
        if("7".equals(type)||StringUtils.isBlank(type)){//社区老人
        if("7".equals(type)||StringUtils.isBlank(type)){//街道老人 第三方同步过来的朝晖街道老人数据
            filter = "";
            String sqltmp = "SELECT GROUP_CONCAT(dict_code) orgCodes from wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_older' ";
            List<Map<String,Object>> listtmp =  jdbcTemplate.queryForList(sqltmp);
@ -896,10 +896,18 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
     * @param limit
     * @return
     */
    public List<Map<String,Object>> findOld(String name,String residentialArea,String area,Integer level,String limit,String filter1){
    public List<Map<String,Object>> findOld(String type,String name,String residentialArea,String area,Integer level,String limit,String filter1){
        String sql = "SELECT DISTINCT a.id,a.name,a.photo,a.idcard,CAST(IFNULL(a.birthday,'') AS char ) birthday,a.residential_area residentialArea,a.sex " +
                ",a.ykt_id yktId, case 1 WHEN openid is not null then 1 WHEN a.on_line = '1' then 1 ELSE 0 end as online,IFNULL(sign_status,0) signStatus from base_patient a " +
                " WHERE a.archive_type = 1 and a.del = '1' and (a.sign_status=1 or a.register = '1')  ";
                " WHERE a.archive_type = 1 and a.del = '1'   ";
        if ("2".equals(type)){
            sql+=" and a.sign_status=1 ";
        }
        if ("8".equals(type)){
            sql+=" and a.register='1' ";
        }
        //case 1 WHEN openid is not null then 1 WHEN a.on_line = '1' then 1 ELSE 0 end as online
        //if(openid is null,0,1) onlineWx,IFNULL(a.on_line,0) onlinePad
@ -972,8 +980,16 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
        return list;
    }
    public Integer findOldTotal(String name,String residentialArea,String area,Integer level,String filter){
        String sql = "SELECT count(DISTINCT a.id) from base_patient a  WHERE a.archive_type = 1 and a.del = '1' and (a.sign_status=1 or a.register = 1)";
    public Integer findOldTotal(String type,String name,String residentialArea,String area,Integer level,String filter){
        String sql = "SELECT count(DISTINCT a.id) from base_patient a  WHERE a.archive_type = 1 and a.del = '1' ";
        if ("2".equals(type)){
            sql+=" and a.sign_status=1 ";
        }
        if ("8".equals(type)){
            sql+=" and a.register='1' ";
        }
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
        }
@ -1000,7 +1016,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
    }
    /**
     * 查找签约老人
     * 街道老人
     * @param name
     * @param residentialArea
     * @param limit
@ -1009,7 +1025,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
    public List<Map<String,Object>> findUnSignOld(String name,String residentialArea,String area,Integer level,String limit,String filter1){
        String sql = "SELECT a.id,a.name,a.photo,a.idcard,CAST(IFNULL(a.birthday,'') AS char ) birthday,a.residential_area residentialArea,a.sex " +
                ",a.ykt_id yktId, case 1 WHEN openid is not null then 1 WHEN a.on_line = '1' then 1 ELSE 0 end as online,IFNULL(sign_status,0) signStatus from base_patient a " +
                " WHERE a.archive_type = 1 and a.del = '1' and a.sign_status=0  ";
                " WHERE a.archive_type = 1 and a.del = '1' and a.register='2'  ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
@ -1067,7 +1083,7 @@ public class CarePatientService extends BaseJpaService<BasePatientDO, BasePatien
    }
    public Integer findUnSignOldTotal(String name,String residentialArea,String area,Integer level,String filter){
        String sql = "SELECT count(a.id) from base_patient a  WHERE a.archive_type = 1 and a.del = '1' and a.sign_status=0 ";
        String sql = "SELECT count(a.id) from base_patient a  WHERE a.archive_type = 1 and a.del = '1' and a.register='2' ";
        if(!StringUtil.isBlank(name)){
            sql+= " and name like '%"+name+"%' ";
        }

+ 570 - 51
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/statistics/StatisticsService.java

@ -782,6 +782,9 @@ public class StatisticsService {
     * @param level 区域等级 2市3区4机构5团队6医生
     */
    public JSONObject platformPeople(String area,Integer level) {
        boolean b = StringUtils.isNotBlank(area) && 5 == level;
        String areaFilter = " ";
        JSONObject result = new JSONObject();
        Integer olderTotal = 0;
@ -808,6 +811,9 @@ public class StatisticsService {
        Integer unSignOlderTotal=0;
        Integer unSignOlderOff=0;
        Integer unSignOlderOn=0;
        Integer streetOldTotal = 0;
        Integer streetOldOff = 0;
        Integer streetOldOn = 0;
        //儿童注册人数
@ -841,13 +847,13 @@ public class StatisticsService {
            oldFilter = " and a.id not in ('" + orgCodes + "')";
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(area)&&5==level){
        if (b){
            areaFilter = " and EXISTS ( select 1 from " +
                    "base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack " +
                    " where sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id and r.service_package_id = pack.id " +
                    " and i.del = 1  and sr.`status`=1 and CONVERT(sr.patient USING utf8)  = a.id and r.team_code='"+area+"') OR ( a.saas_id = '"+area+"')";
        }
        String sql1 = "SELECT COUNT(*) c,case 1 WHEN openid is not null then 1 WHEN a.on_line = '1' then 1 ELSE 0 end as online from base_patient a WHERE archive_type = 1 and (a.sign_status=1 or a.register = 1) " +
        String sql1 = "SELECT COUNT(*) c,case 1 WHEN openid is not null then 1 WHEN a.on_line = '1' then 1 ELSE 0 end as online from base_patient a WHERE archive_type = 1 and a.sign_status=1 " +
                " and del='1' "+areaFilter+" " + oldFilter + " GROUP BY online";
        List<Map<String, Object>> list1 = jdbcTemplate.queryForList(sql1);
        for (Map<String, Object> map : list1) {
@ -862,8 +868,14 @@ public class StatisticsService {
        olderTotal = olderOff + olderOn;
        childTotal = childOff + childOn;
        sql1 = "SELECT COUNT(*) c,case 1 WHEN openid is not null then 1 WHEN a.on_line = '1' then 1 ELSE 0 end as online from base_patient a WHERE archive_type = 1 and (sign_status=0 or sign_status is null ) " +
                " and del='1' " + oldFilter + " GROUP BY online";
        // 社区老人
        String unSignOldAreaSql ="";
        if (b) {
            unSignOldAreaSql = " AND saas_id = '"+area+"'";
        }
        sql1 = "SELECT COUNT(*) c,case 1 WHEN openid is not null then 1 WHEN a.on_line = '1' then 1 ELSE 0 end as online from base_patient a WHERE archive_type = 1 and a.register = 1 and (sign_status=0 or sign_status is null ) " +
                " and del='1' " + oldFilter + unSignOldAreaSql + " GROUP BY online";
        list1 = jdbcTemplate.queryForList(sql1);
        for (Map<String, Object> map : list1) {
            Integer num = Integer.valueOf(map.get("c").toString());
@ -875,9 +887,27 @@ public class StatisticsService {
            }
        }
        unSignOlderTotal = unSignOlderOff+unSignOlderOn;
        //街道老人
        String testUserSql = "(SELECT dict_code from wlyy_hospital_sys_dict WHERE (dict_name = 'jkzl_older' OR dict_name = 'jkzl_user') AND (dict_code IS NOT null OR dict_code = ''))";
        String needCareOldSql = "SELECT COUNT(*) c,case 1 WHEN openid is not null then 1 WHEN a.on_line = '1' then 1 ELSE 0 end as online from base_patient a WHERE archive_type = 1 and a.register = 2 and (sign_status=0 or sign_status is null ) " +
                " and del='1' AND id NOT IN " + testUserSql +unSignOldAreaSql+ " GROUP BY online";
        list1 = jdbcTemplate.queryForList(needCareOldSql);
        for (Map<String, Object> map : list1) {
            Integer num = Integer.valueOf(map.get("c").toString());
            Integer online = Integer.valueOf(map.get("online").toString());
            if (online == 1) {
                streetOldOn += num;
            } else {
                streetOldOff += num;
            }
        }
        streetOldTotal = streetOldOff+streetOldOn;
        //社工和教师注册人数
        if (org.apache.commons.lang3.StringUtils.isNotBlank(area)&&5==level){
        if (b){
            areaFilter = " and EXISTS ( select 1 from base_team_member mem where mem.doctor_code = a.id " +
                    " and mem.team_code='"+area+"' and mem.del=1 )  ";
        }
@ -927,7 +957,7 @@ public class StatisticsService {
            orgCodes = orgCodes.replaceAll(",", "','");
            olderRelativeFilter = " and t2.id not in ('" + orgCodes + "') ";
        }
        if (org.apache.commons.lang3.StringUtils.isNotBlank(area)&&5==level){
        if (b){
            //有社区只查询该社区老人的家属列表
            areaFilter = " and EXISTS ( select 1 from " +
                    "base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack " +
@ -955,7 +985,7 @@ public class StatisticsService {
        }
        olderFamilyTotal = olderFamilyOff+olderFamilyOn;
        //家属绑定老人数量
        if (org.apache.commons.lang3.StringUtils.isNotBlank(area)&&5==level){
        if (b){
            areaFilter = " and EXISTS ( select 1 from " +
                    "base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack " +
                    " where sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id and r.service_package_id = pack.id " +
@ -967,7 +997,7 @@ public class StatisticsService {
        olderFamilyBinding = jdbcTemplate.queryForObject(sql2,Integer.class);
        //helper 社工,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板 olderFamily老人家属
        //helper 社工,teacher 教师,child 幼儿,olderWx 老人公众号,olderPad 老人平板 olderFamily老人家属  street 街道老人二次导入朝辉街道
        //helper4助老员 unSignOlder社区老人
        result.put("olderTotal", olderTotal);
        result.put("olderOn", olderOn);
@ -975,6 +1005,9 @@ public class StatisticsService {
        result.put("childTotal", childTotal);
        result.put("childOn", childOn);
        result.put("childOff", childOff);
        result.put("streetOldOn",streetOldOn);
        result.put("streetOldTotal",streetOldTotal);
        result.put("streetOldOff",streetOldOff);
        result.put("unSignOlderTotal", unSignOlderTotal);
        result.put("unSignOlderOff", unSignOlderOff);
        result.put("unSignOlderOn", unSignOlderOn);
@ -3021,59 +3054,545 @@ public class StatisticsService {
    /**
     * 获取招呼老人基本信息
     * 获取照护老人+幼儿基本信息
     * 签约老人+未签约有设备的
     *
     */
    public JSONObject  findTendOld(Integer page,Integer size){
        String sql = "SELECT DISTINCT p.id AS id,p.`name` AS `name`, p.sex AS sex,CASE WHEN LENGTH( p.idcard )= 18 THEN\n" +
                "\t\tYEAR (\n" +
                "\t\t\tnow()) - YEAR (\n" +
                "\t\tsubstring( p.idcard, 7, 8 )) \n" +
                "\t\tWHEN LENGTH( p.idcard )= 15 THEN\n" +
                "\t\tYEAR (\n" +
                "\t\t\tnow()) - YEAR (\n" +
                "\t\tSTR_TO_DATE( CONCAT( '19', substring( p.idcard, 7, 2 )), '%Y' )) ELSE NULL \n" +
                "\tEND AS age,\n" +
                "\tp.mobile AS mobile,\n" +
                "\tp.address AS address,\n" +
                "\tt.`name` AS orgName,\n" +
                "\tGROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName \n" +
                "FROM base_patient p, base_service_package_sign_record sr, base_service_package_record r,base_service_package_item i, base_service_package pack,base_team t,base_team_member tm,base_doctor d \n" +
                "WHERE sr.id = r.sign_id  AND sr.STATUS = 1 AND r.service_package_id = i.service_package_id  AND r.service_package_id = pack.id  AND i.del = 1  AND sr.`status` = 1  AND CONVERT ( sr.patient USING utf8 ) = p.id \n" +
                "\tAND r.team_code = t.id AND tm.team_code = t.id AND d.id = tm.doctor_code AND p.id NOT IN (SELECT DISTINCT dict_code from wlyy_hospital_sys_dict WHERE (dict_name = 'jkzl_child' or dict_name = 'jkzl_older' \n" +
                "                  or dict_name = 'jkzl_user' or dict_name = 'jkzl_helper'  or dict_name = 'jkzl_teacher' ) and dict_code is not null)\n" +
                "GROUP BY p.idcard UNION SELECT p.id AS id,p.`name` AS `name`, p.sex AS sex,\n" +
                "CASE\n" +
                "\t\tWHEN LENGTH( p.idcard )= 18 THEN\n" +
                "\t\tYEAR (\n" +
                "\t\t\tnow()) - YEAR (\n" +
                "\t\tsubstring( p.idcard, 7, 8 )) \n" +
                "\t\tWHEN LENGTH( p.idcard )= 15 THEN\n" +
                "\t\tYEAR (\n" +
                "\t\t\tnow()) - YEAR (\n" +
                "\t\tSTR_TO_DATE( CONCAT( '19', substring( p.idcard, 7, 2 )), '%Y' )) ELSE NULL \n" +
                "\tEND AS age,\n" +
                "\tp.mobile AS mobile,\n" +
                "\tp.address AS address,\n" +
                "\tp.address AS orgName,\n" +
                "\t'' AS doctorName \n" +
                "FROM base_patient p INNER JOIN wlyy_patient_device d ON p.id = d.`user` \n" +
                "WHERE p.sign_status = 0  AND p.del = 1  AND d.del = 0 AND p.id NOT IN (SELECT DISTINCT dict_code from wlyy_hospital_sys_dict WHERE (dict_name = 'jkzl_child' or dict_name = 'jkzl_older' \n" +
                "                  or dict_name = 'jkzl_user' or dict_name = 'jkzl_helper'  or dict_name = 'jkzl_teacher' ) and dict_code is not null) ORDER BY id\n";
    public JSONObject  findTendOld(Integer type,Integer page,Integer size,String idcard,String name,String orgName){
        String sql = "";
        String orgNameSql = "";
        String orgNameSql2 = "";
        String nameSql = "";
        String idcardSql = "";
        if (StringUtils.isNotBlank(name)){
             nameSql = " and p.name like '%"+name+"%'";
        }
        if (StringUtils.isNotBlank(idcard)){
             idcardSql = " and p.idcard = '"+idcard+"'";
        }
        if (StringUtils.isNotBlank(orgName)){
             orgNameSql  = " and t.name ='"+orgName+"'";
             orgNameSql2 = " and p.residential_area = '"+orgName+"'";
        }
        switch (type) {
            case 1:
                sql = " SELECT DISTINCT p.id AS id,p.`name` AS `name`,p.sex AS sex, p.idcard AS idcard, " +
                        " CASE WHEN LENGTH( p.idcard )= 18 THEN " +
                        "  YEAR ( now()) - YEAR (substring( p.idcard, 7, 8 )) WHEN LENGTH( p.idcard )= 15 THEN " +
                        "  YEAR ( now()) - YEAR (STR_TO_DATE( CONCAT( '19', substring( p.idcard, 7, 2 )), '%Y' )) ELSE NULL  " +
                        " END AS age, p.mobile AS mobile, p.address AS address, t.`name` AS orgName, " +
                        " GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName  FROM " +
                        " base_patient p,base_service_package_sign_record sr,base_service_package_record r,base_service_package_item i,base_service_package pack,base_team t,base_team_member tm,base_doctor d  " +
                        " WHERE " +
                        " sr.id = r.sign_id  " +
                        " AND sr.STATUS = 1  " +
                        " AND r.service_package_id = i.service_package_id  " +
                        " AND r.service_package_id = pack.id  " +
                        " AND i.del = 1  " +
                        " AND sr.`status` = 1  " +
                        " AND CONVERT ( sr.patient USING utf8 ) = p.id  " +
                        " AND r.team_code = t.id  " +
                        " AND tm.team_code = t.id " +
                        " AND p.archive_type = 1 " +nameSql+idcardSql+orgNameSql+
                        " AND d.id = tm.doctor_code <testUserSql>  " +
                        " GROUP BY p.idcard " +
                        " UNION " +
                        " SELECT " +
                        " p.id AS id,p.`name` AS `name`, p.sex AS sex, p.idcard AS idcard, " +
                        " CASE WHEN LENGTH( p.idcard )= 18 THEN " +
                        "  YEAR (now()) - YEAR ( substring( p.idcard, 7, 8 ))  " +
                        "  WHEN LENGTH( p.idcard )= 15 THEN " +
                        "  YEAR (now()) - YEAR (STR_TO_DATE( CONCAT( '19', substring( p.idcard, 7, 2 )), '%Y' )) ELSE NULL  " +
                        " END AS age, " +
                        " p.mobile AS mobile,p.address AS address, p.residential_area AS orgName,'' AS doctorName  " +
                        " FROM " +
                        " base_patient p INNER JOIN wlyy_patient_device d ON p.id = d.`user`  " +
                        " WHERE p.sign_status = 0 AND p.del = 1 AND d.del = 0 AND p.archive_type = 1 " + nameSql+idcardSql+orgNameSql2+
                        " <testUserSql>  " +
                        " GROUP BY p.idcard  ";
                break;
            case 2:
                sql +=" SELECT DISTINCT p.id AS id, p.`name` AS `name`,  p.sex AS sex,  p.idcard AS idcard," +
                        " CASE WHEN LENGTH( p.idcard )= 18 THEN  " +
                        " YEAR ( now()) - YEAR (substring( p.idcard, 7, 8 ))   " +
                        " WHEN LENGTH( p.idcard )= 15 THEN YEAR (now()) - YEAR (STR_TO_DATE( CONCAT( '19', substring( p.idcard, 7, 2 )), '%Y' )) ELSE NULL   " +
                        " END AS age,p.mobile AS mobile,p.address AS address  " +
                        " FROM base_patient p  " +
                        " WHERE p.archive_type = 2 and p.del = 1 "+nameSql+idcardSql+" <testUserSql>";
                break;
        }
        page = (page - 1) * size;
        String testUserSql = "AND p.id NOT IN (SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict" +
                " WHERE( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user') AND dict_code IS NOT NULL ) ";
        sql += "  ORDER BY id limit " + page + "," + size + "";
        sql = sql.replace("<testUserSql>",testUserSql);
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("data", list);
        jsonObject.put("userTotal", list.size());
        page = (page-1)*size;
        return jsonObject;
    }
    //对应的社区
    public List<Map<String, Object>> findOldOrg() {
        String sql = " SELECT t.`name`,t.id FROM base_team t WHERE t.org_code IN(SELECT code FROM base_org WHERE type = '3' AND `code`" +
                " not IN(SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org'))  GROUP BY t.`name`";
        return jdbcTemplate.queryForList(sql);
    }
    //超时工单
    public JSONObject overTimeOrderList(Integer type,Integer page ,Integer size ,String name,String idcard,String orgCode){
        String nameSql = "";
        String idcardSql = "";
        String orgCodeSql = "";
        String total = "";
        String sql = "";
        if (StringUtils.isNotBlank(name)) {
            nameSql = " AND p.`name` like '%"+name+"%'";
        }
        if (StringUtils.isNotBlank(idcard)) {
            idcardSql = " AND p.idcard = '"+idcard+"'";
        }
        if (StringUtils.isNotBlank(idcard)) {
            orgCodeSql = " AND t.id = '"+orgCode+"'";
        }
        String testUserSql = " NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE ( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user' OR dict_name= 'jkzl_olderRelative' ) AND dict_code IS NOT NULL ) ";
        if (page==0)page=1;
        if (size==0)size=10;
        page = (page - 1) * size;
        switch (type) {
            case 1:
                sql = " SELECT DISTINCT" +
                        " p.name, o.`status`, o.id AS orderId,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%s') as create_time ," +
                        " GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName," +
                        " GROUP_CONCAT( DISTINCT d.mobile SEPARATOR ',' ) AS dmobile," +
                        " p.mobile AS pmobile, p.address AS address, t.`name` AS orgName," +
                        " '紧急预警' AS ewtype, 1 AS type,  o.serve_address AS serviceAddress " +
                        "FROM " +
                        " base_emergency_assistance_order o  INNER JOIN base_patient p ON o.patient = p.id, base_service_package_sign_record sr, " +
                        " base_service_package_record r,base_service_package_item i, base_service_package pack,base_team t,base_team_member tm, " +
                        " base_doctor d WHERE o.STATUS = 1  AND o.patient "+testUserSql+" " +
                        " AND ( TIMESTAMPDIFF( HOUR, o.create_time, now()) >= 1 )  " +
                        " AND NOT EXISTS ( SELECT 1 FROM base_emergency_warn_log log WHERE log.order_id = o.id )  " +
                        " AND sr.id = r.sign_id  " +
                        " AND sr.STATUS = 1  " +
                        " AND r.service_package_id = i.service_package_id  " +
                        " AND r.service_package_id = pack.id  " +
                        " AND i.del = 1  " +
                        " AND sr.`status` = 1  " +
                        " AND CONVERT ( sr.patient USING utf8 ) = p.id  " +
                        " AND r.team_code = t.id  " +
                        " AND tm.team_code = t.id  " +
                        " AND p.archive_type = 1  " +
                        " AND d.id = tm.doctor_code  " +orgCodeSql+idcardSql+nameSql+
                        " union all " +
                        "SELECT DISTINCT p.name,  o.`status`, o.id AS orderId, DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%s') as create_time, " +
                        " GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName, " +
                        " GROUP_CONCAT( DISTINCT d.mobile SEPARATOR ',' ) AS dmobile, " +
                        " p.mobile AS pmobile, p.address AS address, t.`name` AS orgName, " +
                        " o.serve_desc AS ewtype, 2 AS type, o.serve_address AS serviceAddress " +
                        "FROM " +
                        " base_security_monitoring_order o INNER JOIN base_patient p ON o.patient = p.id , " +
                        " base_service_package_sign_record sr,base_service_package_record r,  base_service_package_item i,  base_service_package pack, " +
                        " base_team t,  base_team_member tm, base_doctor d  " +
                        " WHERE " +
                        " o.STATUS = 1  " +
                        " AND o.patient  "+testUserSql+" " +
                        " AND ( TIMESTAMPDIFF( HOUR, o.create_time, now()) >= 1 )  " +
                        " AND NOT EXISTS (SELECT 1 FROM base_emergency_warn_log log WHERE log.order_id = o.id) " +
                        " AND sr.id = r.sign_id  " +
                        " AND sr.STATUS = 1  " +
                        " AND r.service_package_id = i.service_package_id  " +
                        " AND r.service_package_id = pack.id  " +
                        " AND i.del = 1  " +
                        " AND sr.`status` = 1  " +
                        " AND CONVERT ( sr.patient USING utf8 ) = p.id  " +
                        " AND r.team_code = t.id  " +
                        " AND tm.team_code = t.id  " +
                        " AND p.archive_type = 1  " + orgCodeSql+idcardSql+nameSql+
                        " AND d.id = tm.doctor_code ";
                total = overTimeOrderListTotalSql(1,nameSql,idcardSql,orgCodeSql);
                break;
            case 2:
                sql = "SELECT DISTINCT o.id as orderId, p.`name`, p.mobile,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%s') as create_time , fd.NAME AS lifeName, bo.NAME AS serviceOrgName, bo.mobile AS orgMobile, t.`name` AS area   " +
                        " FROM " +
                        " base_life_care_order o  " +
                        " INNER JOIN base_patient p ON o.patient = p.id  " +
                        " LEFT JOIN base_life_care_fee_detail fd ON o.id = fd.order_id  " +
                        " LEFT JOIN base_org bo ON o.hospital = bo.`code`,  " +
                        " base_service_package_sign_record sr,  " +
                        " base_service_package_record r,  " +
                        " base_service_package_item i,  " +
                        " base_service_package pack,  " +
                        " base_team t   " +
                        " WHERE  " +
                        "  o.STATUS = 1   " +
                        "  AND o.patient "+testUserSql+"  " +
                        "  AND ( TIMESTAMPDIFF( HOUR, o.create_time, now()) >= 6 )   " +
                        "  AND sr.id = r.sign_id   " +
                        "  AND sr.STATUS = 1   " +
                        "  AND r.service_package_id = i.service_package_id   " +
                        "  AND r.service_package_id = pack.id   " +
                        "  AND i.del = 1   " +
                        "  AND sr.`status` = 1   " +
                        "  AND CONVERT ( sr.patient USING utf8 ) = p.id   " +
                        "  AND r.team_code = t.id   " +
                        "  AND p.archive_type = 1 "+nameSql+idcardSql+orgCodeSql+" UNION ALL  " +
                        "SELECT DISTINCT co.id as orderId, p.`name`, p.mobile, DATE_FORMAT(co.create_time,'%Y-%m-%d %H:%i:%s') as create_time, fd.NAME AS lifeName, co.hospital_name AS serviceOrgName,bo.mobile AS orgMobile, p.residential_area AS area   " +
                        "FROM  " +
                        "  base_life_care_order co  " +
                        "  LEFT JOIN base_patient p ON co.patient = p.id  " +
                        "  LEFT JOIN base_life_care_fee_detail fd ON co.id = fd.order_id  " +
                        "  LEFT JOIN base_org bo ON co.hospital = bo.`code`   " +
                        "WHERE  " +
                        "  p.sign_status <> 1   " +
                        "  AND co.`status` = 1   " +
                        "  AND p.id "+testUserSql+""+nameSql+idcardSql+orgCodeSql;
                total = overTimeOrderListTotalSql(2,nameSql,idcardSql,orgCodeSql);
                break;
        }
        sql += "GROUP BY orderId ORDER BY create_time DESC LIMIT "+page+","+size+" ";
        sql += " limit "+page+","+size+"";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("data",list);
        jsonObject.put("oldTotal",list.size());
        jsonObject.put("list",list);
        jsonObject.put("total",total);
        return jsonObject;
    }
    //紧急安防工单列表
    public JSONObject emeSecOrderList(Integer status,String name,String idcard,String orgCode,Integer page,Integer size){
        if (page==null) page=1;
        if (size==null) size=10;
        page = (page-1)*size;
        String statusSql ="AND  o.`status` <> -1";
        String nameSql = "";
        String idcardSql = "";
        String orgCodeSql = "";
        if (StringUtils.isNotBlank(name)){
            nameSql = " AND p.`name` LIKE '%"+name+"%'";
        }
        if (StringUtils.isNotBlank(idcard)){
            idcardSql = "AND p.idcard = '"+idcard+"'";
        }
        if (StringUtils.isNotBlank(orgCode)){
            orgCodeSql =" AND t.id = '"+orgCode+"'";
        }
        if (null!=status){
            statusSql = "AND o.status = "+status+"";
        }
        String sql = "SELECT p.name,o.`status`,o.id AS orderId,DATE_FORMAT( o.create_time, '%Y-%m-%d %H:%i:%s' ) AS create_time, " +
                " GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName, " +
                " GROUP_CONCAT( DISTINCT d.mobile SEPARATOR ',' ) AS dmobile, " +
                " p.mobile AS pmobile, p.address AS address,t.`name` AS orgName, " +
                " '紧急预警' AS ewtype, 1 AS type,o.serve_address AS serviceAddress  " +
                " FROM " +
                " base_emergency_assistance_order o " +
                " LEFT JOIN base_patient p ON o.patient = p.id " +
                " LEFT JOIN base_service_package_sign_record sr ON CONVERT( sr.patient USING utf8 ) = p.id AND sr.STATUS = 1 AND sr.`status` = 1   " +
                " LEFT JOIN base_service_package_record r ON sr.id = r.sign_id  " +
                " LEFT JOIN base_service_package_item i ON r.service_package_id = i.service_package_id  AND i.del = 1  " +
                " LEFT JOIN base_service_package pack ON r.service_package_id = pack.id  " +
                " LEFT JOIN base_team t ON r.team_code = t.id " +
                " LEFT JOIN base_team_member tm ON tm.team_code = t.id " +
                " LEFT JOIN base_doctor d ON d.id = tm.doctor_code " +
                "WHERE 1=1 " +
                 statusSql+nameSql+idcardSql+orgCodeSql+
                " AND o.org_code NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' AND dict_code IS NOT NULL )  GROUP BY o.id " +
                " UNION ALL " +
                " SELECT p.name,o.`status`,o.id AS orderId,DATE_FORMAT( o.create_time, '%Y-%m-%d %H:%i:%s' ) AS create_time, " +
                " GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName, " +
                " GROUP_CONCAT( DISTINCT d.mobile SEPARATOR ',' ) AS dmobile, " +
                " p.mobile AS pmobile,p.address AS address,t.`name` AS orgName, " +
                " o.serve_desc AS ewtype,2 AS type,o.serve_address AS serviceAddress  " +
                "FROM " +
                " base_security_monitoring_order o " +
                " LEFT JOIN base_patient p ON o.patient = p.id " +
                " LEFT JOIN base_service_package_sign_record sr ON CONVERT ( sr.patient USING utf8 ) = p.id AND sr.`status` = 1  " +
                " LEFT JOIN base_service_package_record r ON sr.id = r.sign_id  " +
                " LEFT JOIN base_service_package_item i ON r.service_package_id = i.service_package_id  AND i.del = 1  " +
                " LEFT JOIN base_service_package pack ON r.service_package_id = pack.id  " +
                " LEFT JOIN base_team t ON r.team_code = t.id  " +
                " LEFT JOIN base_team_member tm ON tm.team_code = t.id  " +
                " LEFT JOIN base_doctor d ON d.id = tm.doctor_code  " +
                " WHERE 1=1 " +
                  statusSql+nameSql+idcardSql+orgCodeSql+
                " AND p.id NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE ( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user' OR dict_name= 'jkzl_olderRelative' ) AND dict_code IS NOT NULL ) " +
                " GROUP BY o.id  ORDER BY create_time DESC LIMIT "+page+","+size+"";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("list",list);
        jsonObject.put("total",emeSecOrderListTotalSql(nameSql,idcardSql,orgCodeSql,statusSql));
        return jsonObject;
    }
    private String emeSecOrderListTotalSql(String nameSql,String idcardSql,String orgCodeSql,String statusSql){
        String sql ="SELECT SUM(a.total) FROM(\n" +
                "SELECT \n" +
                "\tcount(DISTINCT o.id) AS total \n" +
                "FROM\n" +
                "\tbase_emergency_assistance_order o\n" +
                "\tLEFT JOIN base_patient p ON o.patient = p.id\n" +
                "\tLEFT JOIN base_service_package_sign_record sr ON CONVERT( sr.patient USING utf8 ) = p.id AND sr.STATUS = 1 AND sr.`status` = 1 \t\n" +
                "\tLEFT JOIN base_service_package_record r ON sr.id = r.sign_id \n" +
                "\tLEFT JOIN base_service_package_item i ON r.service_package_id = i.service_package_id  AND i.del = 1 \n" +
                "\tLEFT JOIN base_service_package pack ON r.service_package_id = pack.id \n" +
                "\tLEFT JOIN base_team t ON r.team_code = t.id\n" +
                "\tLEFT JOIN\tbase_team_member tm ON tm.team_code = t.id\n" +
                "\tLEFT JOIN base_doctor d ON d.id = tm.doctor_code\n" +
                "WHERE\t\n" +
                "\t1=1 \n " +statusSql+nameSql+idcardSql+orgCodeSql+
                "  AND  o.`status` <> -1\n" +
                "\tAND o.org_code NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE dict_name = 'jkzl_org' AND dict_code IS NOT NULL )  \n" +
                "UNION ALL\n" +
                "SELECT \n" +
                "\tcount(DISTINCT o.id) AS total \n" +
                "FROM\n" +
                "\tbase_security_monitoring_order o\n" +
                "\tLEFT JOIN base_patient p ON o.patient = p.id\n" +
                "\tLEFT JOIN base_service_package_sign_record sr ON CONVERT ( sr.patient USING utf8 ) = p.id AND sr.`status` = 1 \n" +
                "  LEFT JOIN\tbase_service_package_record r ON sr.id = r.sign_id \n" +
                "\tLEFT JOIN base_service_package_item i ON r.service_package_id = i.service_package_id  AND i.del = 1 \n" +
                "\tLEFT JOIN base_service_package pack ON r.service_package_id = pack.id \n" +
                "\tLEFT JOIN base_team t ON r.team_code = t.id \n" +
                "\tLEFT JOIN base_team_member tm ON tm.team_code = t.id \n" +
                "\tLEFT JOIN base_doctor d ON d.id = tm.doctor_code \n" +
                "WHERE 1=1 \n" +
                "\t\n" +statusSql+nameSql+idcardSql+orgCodeSql+
                "\tAND p.id NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE ( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user' OR dict_name= 'jkzl_olderRelative' ) AND dict_code IS NOT NULL )\n" +
                ") a";
        List<String> list = jdbcTemplate.queryForList(sql, String.class);
        return list.get(0);
    }
    private String overTimeOrderListTotalSql(Integer type,String nameSql,String idcardSql,String orgCodeSql){
        String sql = "";
       switch (type){
           case 1:
                sql = "SELECT SUM(a.total) FROM (\n" +
                       "\tSELECT \n" +
                       "\t\tcount(DISTINCT o.id) AS total\n" +
                       "\tFROM\n" +
                       "\t\tbase_emergency_assistance_order o\n" +
                       "\t\tINNER JOIN base_patient p ON o.patient = p.id,\n" +
                       "\t\tbase_service_package_sign_record sr,\n" +
                       "\t\tbase_service_package_record r,\n" +
                       "\t\tbase_service_package_item i,\n" +
                       "\t\tbase_service_package pack,\n" +
                       "\t\tbase_team t,\n" +
                       "\t\tbase_team_member tm,\n" +
                       "\t\tbase_doctor d \n" +
                       "\tWHERE\n" +
                       "\t\to.STATUS = 1 \n" +
                       "\t\tAND o.patient NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE ( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user' ) AND dict_code IS NOT NULL ) \n" +
                       "\t\tAND ( TIMESTAMPDIFF( HOUR, o.create_time, now()) >= 6 ) \n" +
                       "\t\tAND NOT EXISTS ( SELECT 1 FROM base_emergency_warn_log log WHERE log.order_id = o.id ) \n" +
                       "\t\tAND sr.id = r.sign_id \n" +
                       "\t\tAND sr.STATUS = 1 \n" +
                       "\t\tAND r.service_package_id = i.service_package_id \n" +
                       "\t\tAND r.service_package_id = pack.id \n" +
                       "\t\tAND i.del = 1 \n" +
                       "\t\tAND sr.`status` = 1 \n" +
                       "\t\tAND CONVERT ( sr.patient USING utf8 ) = p.id \n" +
                       "\t\tAND r.team_code = t.id \n" +
                       "\t\tAND tm.team_code = t.id \n" +
                       "\t\tAND p.archive_type = 1 \n" +
                       "\t\tAND d.id = tm.doctor_code "+nameSql+idcardSql+orgCodeSql+" UNION ALL\n" +
                       "\tSELECT \n" +
                       "\t\tCOUNT(DISTINCT o.id) AS total\n" +
                       "\tFROM\n" +
                       "\t\tbase_security_monitoring_order o\n" +
                       "\t\tINNER JOIN base_patient p ON o.patient = p.id,\n" +
                       "\t\tbase_service_package_sign_record sr,\n" +
                       "\t\tbase_service_package_record r,\n" +
                       "\t\tbase_service_package_item i,\n" +
                       "\t\tbase_service_package pack,\n" +
                       "\t\tbase_team t,\n" +
                       "\t\tbase_team_member tm,\n" +
                       "\t\tbase_doctor d \n" +
                       "\tWHERE\n" +
                       "\t\to.STATUS = 1 \n" +
                       "\t\tAND o.patient NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE ( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user' ) AND dict_code IS NOT NULL ) \n" +
                       "\t\tAND ( TIMESTAMPDIFF( HOUR, o.create_time, now()) >= 6 ) \n" +
                       "\t\tAND NOT EXISTS ( SELECT 1 FROM base_emergency_warn_log log WHERE log.order_id = o.id ) \n" +
                       "\t\tAND sr.id = r.sign_id \n" +
                       "\t\tAND sr.STATUS = 1 \n" +
                       "\t\tAND r.service_package_id = i.service_package_id \n" +
                       "\t\tAND r.service_package_id = pack.id \n" +
                       "\t\tAND i.del = 1 \n" +
                       "\t\tAND sr.`status` = 1 \n" +
                       "\t\tAND CONVERT ( sr.patient USING utf8 ) = p.id \n" +
                       "\t\tAND r.team_code = t.id \n" +
                       "\t\tAND tm.team_code = t.id "+nameSql+idcardSql+orgCodeSql+" \n" +
                       "\t\tAND p.archive_type = 1 \n" +
                       "\t\tAND d.id = tm.doctor_code) a";
               break;
           case 2:
               sql = "SELECT\n" +
                       "\tSUM( a.total ) \n" +
                       "FROM\n" +
                       "\t(\n" +
                       "\tSELECT\n" +
                       "\t\tcount( DISTINCT o.id ) AS total \n" +
                       "\tFROM\n" +
                       "\t\tbase_life_care_order o\n" +
                       "\t\tINNER JOIN base_patient p ON o.patient = p.id\n" +
                       "\t\tLEFT JOIN base_life_care_fee_detail fd ON o.id = fd.order_id\n" +
                       "\t\tLEFT JOIN base_org bo ON o.hospital = bo.`code`,\n" +
                       "\t\tbase_service_package_sign_record sr,\n" +
                       "\t\tbase_service_package_record r,\n" +
                       "\t\tbase_service_package_item i,\n" +
                       "\t\tbase_service_package pack,\n" +
                       "\t\tbase_team t \n" +
                       "\tWHERE\n" +
                       "\t\to.STATUS = 1 \n" +
                       "\t\tAND o.patient NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE ( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user' ) AND dict_code IS NOT NULL ) \n" +
                       "\t\tAND ( TIMESTAMPDIFF( HOUR, o.create_time, now()) >= 6 ) \n" +
                       "\t\tAND sr.id = r.sign_id \n" +
                       "\t\tAND sr.STATUS = 1 \n" +
                       "\t\tAND r.service_package_id = i.service_package_id \n" +
                       "\t\tAND r.service_package_id = pack.id \n" +
                       "\t\tAND i.del = 1 \n" +
                       "\t\tAND sr.`status` = 1 \n" +
                       "\t\tAND CONVERT ( sr.patient USING utf8 ) = p.id \n" +
                       "\t\tAND r.team_code = t.id \n" +
                       "\t\tAND p.archive_type = 1 "+nameSql+idcardSql+orgCodeSql+" UNION ALL\n" +
                       "\tSELECT\n" +
                       "\t\tcount( DISTINCT co.id ) AS total \n" +
                       "\tFROM\n" +
                       "\t\tbase_life_care_order co\n" +
                       "\t\tLEFT JOIN base_patient p ON co.patient = p.id\n" +
                       "\t\tLEFT JOIN base_life_care_fee_detail fd ON co.id = fd.order_id\n" +
                       "\t\tLEFT JOIN base_org bo ON co.hospital = bo.`code`\n" +
                       "\t\tLEFT JOIN base_team t ON t.org_code = bo.CODE \n" +
                       "\tWHERE\n" +
                       "\t\tp.sign_status <> 1 \n" +
                       "\t\tAND co.`status` = 1 "+nameSql+idcardSql+orgCodeSql+" \n" +
                       "\t\tAND p.id NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE ( dict_name = 'jkzl_child' OR dict_name = 'jkzl_older' OR dict_name = 'jkzl_user' ) AND dict_code IS NOT NULL ) \n" +
                       "\t) a";
               break;
       }
        List<String> list = jdbcTemplate.queryForList(sql, String.class);
        return list.get(0);
    }
    //健康设备-安防设备 列表
    public PageEnvelop healthySecurityDeviceList(String name, String deviceSn, String categoryCode, String contactStatus, String type, Integer page, Integer size) {
        String nameSql = "";
        String deviceSnSql = "";
        String categoryCodeSql = "";
        String contactStatusSql = "";
        String totalSql = "";
        if (StringUtils.isNotBlank(contactStatus))
            contactStatusSql = " AND wd.contact_status = '" + contactStatus + "'";
        if (StringUtils.isNotBlank(name)) nameSql = " AND p.name LIKE '%" + name + "%'";
        if (StringUtils.isNotBlank(deviceSn)) deviceSnSql = " AND pd.device_sn = '" + deviceSn + "'";
        if (page == null) page = 1;
        if (size == null) size = 10;
        page = (page - 1) * size;
        String deviceSql = "";
        if ("jk".equals(type)) {
            categoryCodeSql = " AND ( pd.category_code = 1 OR pd.category_code = 2 )";
            if (StringUtils.isNotBlank(categoryCode))
                categoryCodeSql = " AND pd.category_code = '" + categoryCode + "'";
            deviceSql = "SELECT DISTINCT  p.id AS patient, pd.id as id,pd.device_name AS deviceName,pd.device_sn AS deviceSn,'健康设备' AS deviceType,p.`name`," +
                    " p.mobile,p.phone,dd.photo,wd.contact_status * 1 AS contactStatus" +
                    " FROM " +
                    " wlyy_patient_device pd LEFT JOIN base_patient p ON pd.`user` = p.id LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
                    " LEFT JOIN wlyy_devices wd ON wd.device_code = pd.device_sn WHERE " +
                    " pd.del = 0 " + nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
            totalSql = "SELECT count(DISTINCT pd.id) FROM " +
                    " wlyy_patient_device pd LEFT JOIN base_patient p ON pd.`user` = p.id LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
                    " LEFT JOIN wlyy_devices wd ON wd.device_code = pd.device_sn WHERE " +
                    " pd.del = 0 " + nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
        }
        if ("af".equals(type) || StringUtils.isBlank(type)) {
            categoryCodeSql = " AND pd.category_code > 2 ";
            if (StringUtils.isNotBlank(categoryCode))
                categoryCodeSql = " AND pd.category_code = '" + categoryCode + "'";
            deviceSql = " SELECT DISTINCT  p.id AS patient,pd.id AS id ,pd.device_name AS deviceName,pd.device_sn AS deviceSn,'安防设备' AS deviceType,p.`name`,p.mobile,p.phone,dd.photo,wd.contact_status * 1 AS contactStatus " +
                    " FROM " +
                    " wlyy_patient_device pd LEFT JOIN base_patient p ON pd.`user` = p.id LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
                    " LEFT JOIN wlyy_devices wd ON wd.device_code = pd.device_sn WHERE " +
                    " pd.del = 0 " + nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
            totalSql = " SELECT count(DISTINCT p.id) FROM " +
                    " wlyy_patient_device pd LEFT JOIN base_patient p ON pd.`user` = p.id LEFT JOIN dm_device dd ON pd.category_code = dd.category_code " +
                    " LEFT JOIN wlyy_devices wd ON wd.device_code = pd.device_sn WHERE " +
                    " pd.del = 0 " + nameSql + deviceSnSql + categoryCodeSql + contactStatusSql;
        }
        deviceSql += " GROUP BY id LIMIT " + page + "," + size + " ";
        List<Map<String, Object>> deviceList = jdbcTemplate.queryForList(deviceSql);
        List<String> list = jdbcTemplate.queryForList(totalSql, String.class);
        JSONArray jsonArray = new JSONArray();
        for (Map<String, Object> map : deviceList) {
            Map<String, Object> signInfoMap = patientSignInfo(map.get("patient").toString());
            if (null!=signInfoMap) {
                map.put("orgName", signInfoMap.get("orgName"));
                jsonArray.add(map);
            }
        }
        return PageEnvelop.getSuccessListWithPage("success", jsonArray, page, size, Long.parseLong(list.get(0)));
    }
    //获取对应设备名称
    public List<Map<String, Object>> deviceNameList(String type){
        String sql = "SELECT `name`,category_code FROM dm_device WHERE device_type = "+type+" GROUP BY category_code";
        return  jdbcTemplate.queryForList(sql);
    }
    private Map<String, Object> patientSignInfo(String patient){
        String signSql ="SELECT p.NAME,p.id AS id, " +
                "  GROUP_CONCAT( DISTINCT d.NAME SEPARATOR ',' ) AS doctorName," +
                "  GROUP_CONCAT( DISTINCT d.mobile SEPARATOR ',' ) AS dmobile," +
                "  p.mobile AS pmobile, p.address AS address,t.`name` AS orgName " +
                "  FROM " +
                "  base_patient p " +
                "  INNER JOIN base_service_package_sign_record sr ON CONVERT( sr.patient USING utf8 ) = p.id AND sr.STATUS = 1 AND sr.`status` = 1 " +
                "  INNER JOIN base_service_package_record r ON sr.id = r.sign_id  " +
                "  INNER JOIN base_service_package_item i ON r.service_package_id = i.service_package_id  AND i.del = 1  " +
                "  INNER JOIN base_service_package pack ON r.service_package_id = pack.id  " +
                "  INNER JOIN base_team t ON r.team_code = t.id " +
                "  INNER JOIN base_team_member tm ON tm.team_code = t.id " +
                "  INNER JOIN base_doctor d ON d.id = tm.doctor_code " +
                "  WHERE 1=1 and p.id = '"+patient+"' " +
                "  AND p.id NOT IN ( SELECT DISTINCT dict_code FROM wlyy_hospital_sys_dict WHERE (dict_name = 'jkzl_user' OR dict_name = 'jkzl_older' ) AND dict_code IS NOT NULL )  GROUP BY id\n";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(signSql);
        return list.size()>0?list.get(0):null;
    }
}

+ 2 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/visit/BaseVisitService.java

@ -316,6 +316,8 @@ public class BaseVisitService {
            return result;
        }
        baseVisitSignDao.save(signDO);
        visitDO.setStatus("3");
        baseVisitDao.save(visitDO);
        result.put(ResponseContant.resultFlag,ResponseContant.success);
        result.put(ResponseContant.resultMsg,"success");
        return result;