ソースを参照

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

吴世龙 3 年 前
コミット
f1ced8ecbe

+ 35 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/admin/AdminInfoEndpoint.java

@ -407,4 +407,39 @@ public class AdminInfoEndpoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "getDoorCoachRank")
    @ApiOperation(value = "获取上门辅导排名")
    public ObjEnvelop getDoorCoachRank(@RequestParam(required = true) String endDate,
                                       @RequestParam(required = true) String area,
                                       @RequestParam(required = true) Integer level) {
        try {
            JSONObject param = new JSONObject();
            String doctorId =  permissionService.getUID();
            param.put("doctorId",doctorId);
            if(permissionService.noPermission(0,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess("success",statisticsService.getDoorCoachRank(endDate,area,level));
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
        }
    }
    @GetMapping(value = "getLifeCareRank")
    @ApiOperation(value = "获取生活照料排名")
    public ObjEnvelop getLifeCareRank(@RequestParam(required = true) String endDate,
                                       @RequestParam(required = true) String area,
                                       @RequestParam(required = true) Integer level) {
        try {
            JSONObject param = new JSONObject();
            String doctorId =  permissionService.getUID();
            param.put("doctorId",doctorId);
            if(permissionService.noPermission(0,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            return ObjEnvelop.getSuccess("success",statisticsService.getLifeCareRank(endDate,area,level));
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
        }
    }
}

+ 49 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/admin/AdminListInfoController.java

@ -2,12 +2,14 @@ package com.yihu.jw.care.endpoint.doctor.admin;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.service.lifeCare.LifeCareOrderService;
import com.yihu.jw.care.service.statistics.StatisticsService;
import com.yihu.jw.care.service.third.PatientInfoPlatFormService;
import com.yihu.jw.entity.care.assistance.EmergencyAssistanceDO;
import com.yihu.jw.entity.care.message.BaseServiceNews;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -19,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
@ -32,6 +35,8 @@ public class AdminListInfoController extends EnvelopRestEndpoint {
    private StatisticsService statisticsService;
    @Autowired
    private PermissionService permissionService;
    @Autowired
    private LifeCareOrderService lifeCareOrderService;
    @GetMapping(value = "/getPatientDeviceInfoWithDetail")
    @ApiOperation("获取居民设备列表(带设备电量、预警情况、是否在线等信息)")
@ -78,6 +83,50 @@ public class AdminListInfoController extends EnvelopRestEndpoint {
        }
    }
    @GetMapping("lifeCare/topStatusBarNum")
    @ApiOperation(value = "管理员查询生活照料顶部状态栏订单分类tab")
    public ObjEnvelop adminGetNumGroupByStatus(
            @RequestParam(required = true) String area,
            @RequestParam(required = true) Integer level) {
        try {
            JSONObject param = new JSONObject();
            String doctorId =  permissionService.getUID();
            param.put("doctorId",doctorId);
            if(permissionService.noPermission(0,param)){
                return ObjEnvelop.getError("该操作没有权限");
            }
            Map<String, Integer> map = lifeCareOrderService.adminGetNumGroupByStatus(area,level);
            return ObjEnvelop.getSuccess("获取成功",map);
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
        }
    }
    @GetMapping(value = "lifeCare/queryBriefList")
    @ApiOperation(value = "管理员查询生活照料工单列表")
    public PageEnvelop queryBriefList(
            @RequestParam(required = true) String area,
            @RequestParam(required = true) Integer level,
            @ApiParam(name = "patientName", value = "居民姓名或身份证") @RequestParam(value = "patientName", required = false) String patientName,
            @ApiParam(name = "phone", value = "手机号码") @RequestParam(value = "phone", required = false) String phone,
            @ApiParam(name = "status", value = "工单状态") @RequestParam(value = "status", required = false) Integer status,
            @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 param = new JSONObject();
            String doctorId =  permissionService.getUID();
            param.put("doctorId",doctorId);
            if(permissionService.noPermission(0,param)){
                return PageEnvelop.getError("该操作没有权限");
            }
            return lifeCareOrderService.adminQueryBriefList(area,level, patientName, phone, status, page, size);
        }catch (Exception e){
            return failedPageEnvelopException2(e);
        }
    }
    @GetMapping(value = "/getAdminOrderList")
    @ApiOperation("获取紧急工单--管理员端")
    public ListEnvelop getAdminOrderList(@ApiParam(name = "patient",value = "居民code",required = false)

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

@ -8,6 +8,7 @@ import com.yihu.jw.care.service.common.OrderNoService;
import com.yihu.jw.care.service.doctor.DoctorServicePermissionsService;
import com.yihu.jw.care.service.message.BaseServiceNewsService;
import com.yihu.jw.care.service.pay.PayService;
import com.yihu.jw.care.service.role.RoleService;
import com.yihu.jw.care.util.MessageUtil;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
@ -94,6 +95,8 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
    private BaseAdminServiceDynamicDao baseAdminServiceDynamicDao;
    @Autowired
    private DoctorServicePermissionsService doctorServicePermissionsService;
    @Autowired
    private RoleService roleService;
    //是否开启支付 false 不需要支付
    public static final boolean  isNeedPay = false;
@ -234,6 +237,36 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
        return map;
    }
    /**
     * 管理员端生活照料获取顶部状态栏订单各分类总条数
     * @param area
     * @param level 1省2市3区县4机构5团队6医生
     * @return
     */
    public Map<String, Integer> adminGetNumGroupByStatus(String area,Integer level) {
       String olderFilter = roleService.getOlderRoleSQL(area,level+"");
        String sql = "SELECT a.status, COUNT(DISTINCT a.id) as num FROM base_life_care_order a " +
                " WHERE  1=1 and a.pay_status>0 and a.status<>0 " ;
        sql +=  olderFilter.replace("{patient}","a.patient")+ "   group BY a.status";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        Map<String, Integer> map = new HashMap<>();
        //状态 待服务 1、已完成 2 、已取消 -1 已签到 3
        map.put("1",0);
        map.put("2",0);
        map.put("3",0);
        map.put("-1",0);
        int total = 0;
        for (Map<String, Object> one:list){
            map.put(String.valueOf(one.get("status")), Integer.valueOf(String.valueOf(one.get("num"))));
            total+=Integer.valueOf(String.valueOf(one.get("num")));
        }
        map.put("total", total);
        return map;
    }
    /**
     * 医生/助老员-查询-工单列表
@ -343,6 +376,79 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
        return result;
    }
    /**
     * 管理员-查询-工单列表
     * @param area
     * @param level 1省2市3区县4机构5团队6医生
     */
    public PageEnvelop<List<Map<String,Object>>> adminQueryBriefList(String area,Integer level,String name,String phone,Integer status,int page, int size) {
        List<Map<String,Object>> sqlResultlist = new ArrayList<>();
        String olderFilter = roleService.getOlderRoleSQL(area,level+"");
        name = null == name ? "" : name;
        phone = null == phone ? "" : phone;
        status = null == status ? -100 : status;
        int start = 0 == page ? page++ : (page - 1) * size;
        int end = 0 == size ? 15 : size;
        StringBuffer buffer = new StringBuffer();
        if (StringUtils.isNoneBlank(name)){
            buffer.append(" AND (o.`patient_name` like '%"+name+"%' or p.idcard like '%"+name+"%')");
        }else if (StringUtils.isNoneBlank(phone)){
            buffer.append(" AND o.`proxy_patient_phone` like '%"+phone+"%'");
        }
        String sql = "SELECT " +
                "  p.name AS patientName, " +
                "  p.photo AS photo, " +
                "  p.idcard," +
                "  case p.sex  " +
                "  when 1 then '男'  " +
                "  when 2 then '女' " +
                "  end AS sex, " +
                "  TIMESTAMPDIFF(year,p.birthday,NOW()) AS age," +
                "  o.id as orderId, " +
                "  o.patient_phone as phone, " +
                "  o.proxy_patient as proxyPatient, " +
                "  o.patient as patient, " +
                "  o.number as number, " +
                "  o.patient_expected_serve_time as serveTime, o.doctor, o.doctor_name as doctorName, " +
                "  o.serve_address as address, " +
                "  o.type as type, " +
                "  o.serve_lon as lon, " +
                "  o.serve_lat as lat, " +
                "  o.`status` as status " +
                " FROM " +
                " ( base_life_care_order o " +
                " LEFT JOIN base_patient p ON o.patient = p.id ) "+
                " WHERE 1=1 " +olderFilter.replace("{patient}","o.patient")+
                "  " +buffer+
                " AND ( o.`status` = {status} OR -100 = {status} ) and o.pay_status>0 and o.status<>0 " +
                " ORDER BY o.create_time desc " +
                " LIMIT {start},{end};";
        String finalSql = sql.replace("{status}", String.valueOf(status))
                .replace("{start}", String.valueOf(start))
                .replace("{end}", String.valueOf(end));
        String countSql = "SELECT  " +
                "   count(o.id)  " +
                " FROM  " +
                "   base_life_care_order o  " +
                " LEFT JOIN base_patient p ON o.patient = p.id " +
                " WHERE  1=1 " +olderFilter.replace("{patient}","o.patient")+
                " " +buffer+
                " AND (o.`status` = {status} or -100 = {status}) and o.pay_status>0 and o.status<>0 ";
        String finqlCountSql = countSql.replace("{status}", String.valueOf(status));
        sqlResultlist = jdbcTemplate.queryForList(finalSql);
        for (Map<String,Object> orderDO:sqlResultlist){
            orderDO.put("feeDetails",getFeeDetails(orderDO.get("orderId").toString()));
        }
        Long count;
        count = jdbcTemplate.queryForObject(finqlCountSql, Long.class);
        return PageEnvelop.getSuccessListWithPage("success",sqlResultlist,page,size,count);
    }
    /**
     * 查找服务项字典
     *   v1.7.1 机构的生活照料服务项目必须配置才有返回

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

@ -473,8 +473,8 @@ public class StatisticsService {
            }
        }
        String sql = "select * from base_login_log where create_time>='" + dateStr + "' " + filter + " order by create_time desc limit " + (page - 1) * size + "," + size;
        String sqlCount = "select count(id) from base_login_log where create_time>='" + dateStr + "' " + filter;
        String sql = "select * from base_login_log where login_type<>1 and create_time>='" + dateStr + "' " + filter + " order by create_time desc limit " + (page - 1) * size + "," + size;
        String sqlCount = "select count(id) from base_login_log where login_type<>1 and create_time>='" + dateStr + "' " + filter;
        Long count = jdbcTemplate.queryForObject(sqlCount, Long.class);
        List<BaseLoginLogDO> loginLogDOs = jdbcTemplate.query(sql, new BeanPropertyRowMapper(BaseLoginLogDO.class));
        for (BaseLoginLogDO log : loginLogDOs) {
@ -2414,17 +2414,21 @@ public class StatisticsService {
    public PageEnvelop<List<Map<String,Object>>> getOlderTeamListWithPage(String area,String level,Integer page,Integer size) throws Exception {
        List<Map<String,Object>> teamList  = new ArrayList<>();
        page = page>0?page-1:0;
        String areaFilter = " ";
        if ("5".equals(level)){
            areaFilter += " and te.id='"+area+"' ";
        }
        String sql = " select count(distinct org.code) from " +
                " base_service_package pack INNER JOIN base_org org on pack.org_code = org.code " +
                "INNER JOIN base_team te on te.org_code = org.`code` " +
                " where  org.del=1 and org.type=3 and te.del=1 and org.code not in " +
                " (select dict_code from wlyy_hospital_sys_dict where dict_name='jkzl_org') ";
                " (select dict_code from wlyy_hospital_sys_dict where dict_name='jkzl_org') "+areaFilter;
        Long totalNum = jdbcTemplate.queryForObject(sql,Long.class);
        sql = " select distinct org.code as orgCode,org.name as orgName,te.id as teamId,te.name as teamName from " +
                " base_service_package pack INNER JOIN base_org org on pack.org_code = org.code " +
                "INNER JOIN base_team te on te.org_code = org.`code` " +
                " where  org.del=1 and org.type=3 and te.del=1 and org.code not in " +
                " (select dict_code from wlyy_hospital_sys_dict where dict_name='jkzl_org') order by org.code asc " +
                " (select dict_code from wlyy_hospital_sys_dict where dict_name='jkzl_org') "+areaFilter+" order by org.code asc " +
                "limit "+(page*size)+","+size ;
        teamList = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> map:teamList){
@ -2515,7 +2519,7 @@ public class StatisticsService {
            sql = " SELECT count(o.consult) FROM wlyy_consult_team o INNER JOIN base_doctor d on o.doctor = d.id " +
                    " where 1=1 and o.type = 25 AND d.del = 1  "+olderFilter.replace("{patient}","o.patient")+"  ";
            doctorServiceCount += jdbcTemplate.queryForObject(sql,Long.class);
            map.put("doctorServiceTotal",doctorServiceCount);//社工数量
            map.put("doctorServiceTotal",doctorServiceCount);//医生服务数量
        }
        return PageEnvelop.getSuccessListWithPage("success",teamList,page,size,totalNum);
    }
@ -2666,9 +2670,9 @@ public class StatisticsService {
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevelList(endDate, endDate, area, level, totalIndex, SaveModel.timeLevel_DDL,null,lowLevel, null);
        for (SaveModel tmp:list){
            JSONObject res = new JSONObject();
            SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, noReplyIndex, SaveModel.timeLevel_DDL);
            SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, tmp.getHospital(), 4, noReplyIndex, SaveModel.timeLevel_DDL);
            //及时回复数
            SaveModel saveModel3 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, inTimeIndex, SaveModel.timeLevel_DDL);
            SaveModel saveModel3 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, tmp.getHospital(), 4, inTimeIndex, SaveModel.timeLevel_DDL);
            res.put("total", tmp.getResult2().longValue());
            res.put("dept", tmp.getDept());
            res.put("deptName", tmp.getDeptName());
@ -2729,4 +2733,51 @@ public class StatisticsService {
        }
        return resultList;
    }
    /**
     * 获取上门辅导排名
     * @return
     */
    public JSONArray getDoorCoachRank(String endDate,String area,Integer level) throws Exception {
        JSONArray result = new JSONArray();
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevelList(endDate, endDate, area, level, "54", SaveModel.timeLevel_DDL,null,"4", null);
        for (SaveModel tmp:list){
            JSONObject res = new JSONObject();
            SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, tmp.getHospital(), 4, "35", SaveModel.timeLevel_DDL);
            res.put("total", tmp.getResult2().longValue());
            res.put("hospital", tmp.getHospital());
            res.put("hospitalName", tmp.getHospitalName());
            res.put("finish", saveModel2.getResult2().longValue());
            res.put("finishRate", commonUtil.getRangeDouble(saveModel2.getResult2().intValue(), tmp.getResult2().intValue()));
            result.add(res);
        }
        result.sort(Comparator.comparing(obj -> ((JSONObject) obj).getDouble("finishRate")).reversed());
        return result;
    }
    /**
     *  获取生活照料排名
     * @param endDate
     * @param area
     * @param level
     * @return
     * @throws Exception
     */
    public JSONArray getLifeCareRank(String endDate,String area,Integer level) throws Exception {
        JSONArray result = new JSONArray();
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevelList(endDate, endDate, area, level, "49", SaveModel.timeLevel_DDL,null,"4", null,"1,2,3");
        for (SaveModel tmp:list){
            JSONObject res = new JSONObject();
            SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevels(endDate, endDate, tmp.getHospital(), 4, "49", SaveModel.timeLevel_DDL,null,"2");
            res.put("total", tmp.getResult2().longValue());
            res.put("hospital", tmp.getHospital());
            res.put("hospitalName", tmp.getHospitalName());
            res.put("finish", saveModel2.getResult2().longValue());
            res.put("finishRate", commonUtil.getRangeDouble(saveModel2.getResult2().intValue(), tmp.getResult2().intValue()));
            result.add(res);
        }
        result.sort(Comparator.comparing(obj -> ((JSONObject) obj).getDouble("finishRate")).reversed());
        return result;
    }
}