瀏覽代碼

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

# Conflicts:
#	common/common-entity/src/main/java/com/yihu/jw/entity/IntegerIdentityEntity.java
wangzhinan 2 年之前
父節點
當前提交
d50c28f05b

+ 0 - 1
business/base-service/src/main/java/com/yihu/jw/healthCare/service/HealthCareService.java

@ -1513,7 +1513,6 @@ public class HealthCareService {
                ylzMedicalRelationDO.setFundPrice(jsonObject.getString("fund_price"));
                ylzMedicalRelationDO.setJkzhPay(jsonObject.getString("own_jkzh_pay"));
                ylzMedicalRelationDO.setOwnPay(jsonObject.getString("own_pay"));
                ylzMedicalRelationDO.setCardNo(jsonObject.getString("card_no"));
                ylzMedicalRelationDO.setHospitalizationQty(jsonObject.getString("hospitalization_times"));
                ylzMedicalRelationDO.setPayDate(DateUtil.strToDate(jsonObject.getString("pay_date")+jsonObject.getString("pay_time")));
                ylzMedicalRelationDO.setInvoiceJj(jsonObject.getString("invoice_jj"));

+ 711 - 0
business/base-service/src/main/java/com/yihu/jw/healthUpload/service/BaseDoctorHealthUploadService.java

@ -572,6 +572,8 @@ public class BaseDoctorHealthUploadService extends BaseJpaService<BaseDoctorHeal
        return object;
    }
    /**
     * 首页统计
     *
@ -1627,5 +1629,714 @@ public class BaseDoctorHealthUploadService extends BaseJpaService<BaseDoctorHeal
        return list;
    }
    /**
     * 首页头部统计
     *
     * @param dept
     * @param level  1院级管理员,2科室管理员
     * @return
     */
    public JSONObject selectIndexHeader(String dept, int level) {
        JSONObject object = new JSONObject();
        String day = "0";
        String doctorSql = " select COUNT(1) as \"total\" from base_doctor d where d.del=1 ";
        Integer total = 0;//总人次
        if (level==2){
            doctorSql +=" and d.id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) ";
        }
        Map<String, Object> map = jdbcTemplate.queryForMap(doctorSql);
        String doctorTotal = "";
        if (map != null) {
            doctorTotal = map.get("total").toString();
        }
        if (StringUtils.isNoneBlank(doctorTotal)) {
            //总人次
            if (!day.equalsIgnoreCase("0")) {
                total = Integer.parseInt(doctorTotal) * Integer.parseInt(day);
            } else {
                total = Integer.parseInt(doctorTotal);
            }
        }
        String sql = "SELECT\n" +
                "\tCOUNT(DISTINCT d.doctor_id) AS total\n" +
                "FROM\n" +
                "\t(\n" +
                "\t\tSELECT\n" +
                "\t\t\td3.*\n" +
                "\t\tFROM\n" +
                "\t\t\t(\n" +
                "\t\t\t\tSELECT\n" +
                "\t\t\t\t\t*, MAX(d1.create_time) AS createTime\n" +
                "\t\t\t\tFROM\n" +
                "\t\t\t\t\tbase_doctor_health_upload d1\n" +
                "\t\t\t\tGROUP BY\n" +
                "\t\t\t\t\td1.doctor_id\n" +
                "\t\t\t) d2\n" +
                "\t\tLEFT JOIN base_doctor_health_upload d3 ON d2.doctor_id = d3.doctor_id\n" +
                "\t\tAND d2.createTime = d3.create_time\n" +
                "\t) d ";
        String highSql = sql +" where d.is_high=1 ";
        String redSql = sql +" where d.health_code=2 ";
        String yellowSql = sql +" where d.health_code=3 ";
        if (level==2){
            highSql +=" and d.doctor_id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) ";
            redSql +=" and d.doctor_id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) ";
            yellowSql +=" and d.doctor_id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) ";
        }
        Map<String, Object> highMap = jdbcTemplate.queryForMap(highSql);
        String highTotals = "";
        Integer highTotal = 0;//中高风险统计
        if (highMap != null) {
            highTotals = highMap.get("total").toString();
        }
        if (StringUtils.isNoneBlank(highTotals)) {
            //中高风险统计
            highTotal = Integer.parseInt(highTotals);
        }
        Map<String, Object> redMap = jdbcTemplate.queryForMap(redSql);
        String redTotals = "";
        Integer redTotal = 0;//红码统计
        if (redMap != null) {
            redTotals = redMap.get("total").toString();
        }
        if (StringUtils.isNoneBlank(redTotals)) {
            //红码统计
            redTotal = Integer.parseInt(redTotals);
        }
        Map<String, Object> yellowMap = jdbcTemplate.queryForMap(yellowSql);
        String yellowTotals = "";
        Integer yellowTotal = 0;//黄码统计
        if (yellowMap != null) {
            yellowTotals = yellowMap.get("total").toString();
        }
        if (StringUtils.isNoneBlank(yellowTotals)) {
            //黄码统计
            yellowTotal = Integer.parseInt(yellowTotals);
        }
        object.put("total", total);//总人次
        object.put("highTotal", highTotal);//中高风险统计
        object.put("redTotal", redTotal);//红码统计
        object.put("yellowTotal", yellowTotal);//黄码统计
        return object;
    }
    /**
     * 首页出差科室统计
     * @param dept
     * @param level  1院级管理员,2科室管理员
     * @return
     */
    public List<Map<String,Object>> selectIndexScheduleDept(String dept, int level) {
        String condition = "";
        if (level==2){
            condition +=" and dh.dept_code = '"+dept+"'";
        }
        String sql = "SELECT\n" +
                "\tdh.dept_name as deptName,\n" +
                "\tCOUNT(DISTINCT d.doctor_id) AS total\n" +
                "FROM\n" +
                "\t(\n" +
                "\t\tSELECT\n" +
                "\t\t\td3.*\n" +
                "\t\tFROM\n" +
                "\t\t\t(\n" +
                "\t\t\t\tSELECT\n" +
                "\t\t\t\t\t*, MAX(d1.create_time) AS createTime\n" +
                "\t\t\t\tFROM\n" +
                "\t\t\t\t\tbase_doctor_health_upload d1\n" +
                "\t\t\t\tGROUP BY\n" +
                "\t\t\t\t\td1.doctor_id\n" +
                "\t\t\t) d2\n" +
                "\t\tLEFT JOIN base_doctor_health_upload d3 ON d2.doctor_id = d3.doctor_id\n" +
                "\t\tAND d2.createTime = d3.create_time\n" +
                "\t) d\n" +
                "LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.doctor_id and dh.del=1 \n" +
                "where dh.dept_name IS NOT NULL and d.schedule_status = 2  "+condition +
                "GROUP BY dh.dept_code \n" +
                "ORDER BY COUNT(DISTINCT d.doctor_id) DESC  ";
        List<Map<String,Object>> mapList = jdbcTemplate.queryForList(sql);
        return mapList;
    }
    /**
     * 首页出差分布统计
     *
     * @param dept
     * @param level  1院级管理员,2科室管理员
     * @return
     */
    public List<Map<String,Object>> selectIndexScheduleCityName(String dept, int level) {
        String condition = "";
        if (level==2){
            condition +=" and dh.dept_code = '"+dept+"'";
        }
        String sql = "SELECT\n" +
                "\td.city_name  as cityName,\n" +
                "\tCOUNT(DISTINCT d.doctor_id) AS total\n" +
                "FROM\n" +
                "\t(\n" +
                "\t\tSELECT\n" +
                "\t\t\td3.*\n" +
                "\t\tFROM\n" +
                "\t\t\t(\n" +
                "\t\t\t\tSELECT\n" +
                "\t\t\t\t\t*, MAX(d1.create_time) AS createTime\n" +
                "\t\t\t\tFROM\n" +
                "\t\t\t\t\tbase_doctor_health_upload d1\n" +
                "\t\t\t\tGROUP BY\n" +
                "\t\t\t\t\td1.doctor_id\n" +
                "\t\t\t) d2\n" +
                "\t\tLEFT JOIN base_doctor_health_upload d3 ON d2.doctor_id = d3.doctor_id\n" +
                "\t\tAND d2.createTime = d3.create_time\n" +
                "\t) d\n" +
                "LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.doctor_id and dh.del=1 \n" +
                "where  dh.dept_name IS NOT NULL and d.schedule_status = 2\n" +condition+
                "GROUP BY d.city_name \n" +
                "ORDER BY COUNT(DISTINCT d.doctor_id) DESC ";
        List<Map<String,Object>> mapList = jdbcTemplate.queryForList(sql);
        return mapList;
    }
    /**
     * 首页本地分布统计
     * @param dept
     * @param level  1院级管理员,2科室管理员
     * @return
     */
    public List<Map<String,Object>> selectIndexScheduleTown(String dept, int level) {
        String condition = "";
        if (level==2){
            condition +=" and dh.dept_code = '"+dept+"'";
        }
        String sql = "SELECT\n" +
                "\td.town_name  as townName,\n" +
                "\tCOUNT(DISTINCT d.doctor_id) AS total\n" +
                "FROM\n" +
                "\t(\n" +
                "\t\tSELECT\n" +
                "\t\t\td3.*\n" +
                "\t\tFROM\n" +
                "\t\t\t(\n" +
                "\t\t\t\tSELECT\n" +
                "\t\t\t\t\t*, MAX(d1.create_time) AS createTime\n" +
                "\t\t\t\tFROM\n" +
                "\t\t\t\t\tbase_doctor_health_upload d1\n" +
                "\t\t\t\tGROUP BY\n" +
                "\t\t\t\t\td1.doctor_id\n" +
                "\t\t\t) d2\n" +
                "\t\tLEFT JOIN base_doctor_health_upload d3 ON d2.doctor_id = d3.doctor_id\n" +
                "\t\tAND d2.createTime = d3.create_time\n" +
                "\t) d\n" +
                "LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.doctor_id and dh.del=1 \n" +
                "where  dh.dept_name IS NOT NULL and d.schedule_status = 1 and d.town_name  !=''\n" + condition +
                "GROUP BY d.town_name \n" +
                "ORDER BY COUNT(DISTINCT d.doctor_id) DESC ";
        List<Map<String,Object>> mapList = jdbcTemplate.queryForList(sql);
        return mapList;
    }
    /**
     * 首页异常实时情况
     * @param dept
     * @param level  1院级管理员,2科室管理员
     *
     * @return
     */
    public List<Map<String,Object>> selectIndexYichangList(String dept, int level) {
        String condition = "";
        if (level==2){
            condition +=" and dh.dept_code = '"+dept+"'";
        }
        String sql = "SELECT\n" +
                "\tdh.dept_name AS deptName,\n" +
                "\td.doctor_name AS doctorName,\n" +
                "\td.health_code AS healthCode,\n" +
                "\td.temperature AS temperature,\n" +
                "\td.is_symptoms AS isSymptoms,\n" +
                "\td.is_epidemic AS isEpidemic,\n" +
                "\td.abnormal_symptoms AS abnormalSymptoms,\n" +
                "\td.epidemic_person AS epidemicPerson,\n" +
                "\tdate_format(\n" +
                "\t\td.create_time,\n" +
                "\t\t'%Y-%m-%d %H:%i:%S'\n" +
                "\t) AS createTime\n" +
                "FROM\n" +
                "\t(\n" +
                "\t\tSELECT\n" +
                "\t\t\td3.*\n" +
                "\t\tFROM\n" +
                "\t\t\t(\n" +
                "\t\t\t\tSELECT\n" +
                "\t\t\t\t\t*, MAX(d1.create_time) AS createTime\n" +
                "\t\t\t\tFROM\n" +
                "\t\t\t\t\tbase_doctor_health_upload d1\n" +
                "\t\t\t\tGROUP BY\n" +
                "\t\t\t\t\td1.doctor_id\n" +
                "\t\t\t) d2\n" +
                "\t\tLEFT JOIN base_doctor_health_upload d3 ON d2.doctor_id = d3.doctor_id\n" +
                "\t\tAND d2.createTime = d3.create_time\n" +
                "\t) d\n" +
                "LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.doctor_id\n" +
                "WHERE\n" +
                "\t(\n" +
                "\t\td.health_code IN (2, 3)\n" +
                "\t\tOR CAST(d.temperature AS DECIMAL) >= 37.3\n" +
                "\t\tOR d.is_symptoms = 1\n" +
                "\t\tOR d.is_epidemic = 1\n" +
                "\t)\n" +
                "AND dh.dept_code IS NOT NULL\n" + condition+
                "ORDER BY\n" +
                "\td.create_time DESC ";
        List<Map<String,Object>> mapList = jdbcTemplate.queryForList(sql);
        return mapList;
    }
    /**
     * 首页核酸检测情况
     * @param dept
     * @param level  1院级管理员,2科室管理员
     * @return
     */
    public JSONObject selectIndexNucleicTotal(String dept, int level) {
        String condition = "";
        if (level==2){
            condition +=" and dh.dept_code = '"+dept+"'";
        }
        //已做核酸
        String yizuohesuanSql = "SELECT\n" +
                "\tCOUNT(DISTINCT d.doctor_id) as total\n" +
                "FROM\n" +
                "\t(\n" +
                "\t\tSELECT\n" +
                "\t\t\td3.*\n" +
                "\t\tFROM\n" +
                "\t\t\t(\n" +
                "\t\t\t\tSELECT\n" +
                "\t\t\t\t\t*, MAX(d1.create_time) AS createTime\n" +
                "\t\t\t\tFROM\n" +
                "\t\t\t\t\tbase_doctor_health_upload d1\n" +
                "\t\t\t\tGROUP BY\n" +
                "\t\t\t\t\td1.doctor_id\n" +
                "\t\t\t) d2\n" +
                "\t\tLEFT JOIN base_doctor_health_upload d3 ON d2.doctor_id = d3.doctor_id\n" +
                "\t\tAND d2.createTime = d3.create_time\n" +
                "\t) d\n" +
                "LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.doctor_id \n" + condition+
                "where d.is_nucleate !=1 and dh.dept_code is not null ";
        Map<String,Object> yizuoMap = jdbcTemplate.queryForMap(yizuohesuanSql);
        String yizuoTotals = "";
        Integer yizuoTotal = 0;//已做核酸统计
        if (yizuoMap != null) {
            yizuoTotals = yizuoMap.get("total").toString();
        }
        if (StringUtils.isNoneBlank(yizuoTotals)) {
            //已做核酸统计
            yizuoTotal = Integer.parseInt(yizuoTotals);
        }
        //未做核酸
        String weizuohesuanSql = "SELECT\n" +
                "\tCOUNT(DISTINCT d.doctor_id) as total\n" +
                "FROM\n" +
                "\t(\n" +
                "\t\tSELECT\n" +
                "\t\t\td3.*\n" +
                "\t\tFROM\n" +
                "\t\t\t(\n" +
                "\t\t\t\tSELECT\n" +
                "\t\t\t\t\t*, MAX(d1.create_time) AS createTime\n" +
                "\t\t\t\tFROM\n" +
                "\t\t\t\t\tbase_doctor_health_upload d1\n" +
                "\t\t\t\tGROUP BY\n" +
                "\t\t\t\t\td1.doctor_id\n" +
                "\t\t\t) d2\n" +
                "\t\tLEFT JOIN base_doctor_health_upload d3 ON d2.doctor_id = d3.doctor_id\n" +
                "\t\tAND d2.createTime = d3.create_time\n" +
                "\t) d\n" +
                "LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.doctor_id \n" +condition+
                "where d.is_nucleate =1 and dh.dept_code is not null \n";
        Map<String,Object> weizuoMap = jdbcTemplate.queryForMap(weizuohesuanSql);
        String weizuoTotals = "";
        Integer weizuoTotal = 0;//未做核酸统计
        if (weizuoMap != null) {
            weizuoTotals = weizuoMap.get("total").toString();
        }
        if (StringUtils.isNoneBlank(weizuoTotals)) {
            //未做核酸统计
            weizuoTotal = Integer.parseInt(weizuoTotals);
        }
        JSONObject object = new JSONObject();
        object.put("weizuoTotal",weizuoTotal);//未做核酸统计
        object.put("yizuoTotal",yizuoTotal);//已做核酸统计
        return object;
    }
    /**
     * 首页当日新增统计
     * @param dept
     * @param level  1院级管理员,2科室管理员
     * @return
     */
    public JSONObject selectIndexNewAdd(String dept, int level) {
        String condition = "";
        if (level==2){
            condition +=" and dh.dept_code = '"+dept+"'";
        }
        String startDate = DateUtil.getStringDateShort()+" 00:00:00";
        String endDate = DateUtil.getStringDateShort()+" 23:59:59";
        JSONObject object = new JSONObject();
        String sql = "SELECT\n" +
                "\tCOUNT(DISTINCT d.doctor_id) AS total\n" +
                "FROM\n" +
                "\t(\n" +
                "\t\tSELECT\n" +
                "\t\t\td3.*\n" +
                "\t\tFROM\n" +
                "\t\t\t(\n" +
                "\t\t\t\tSELECT\n" +
                "\t\t\t\t\t*, MAX(d1.create_time) AS createTime\n" +
                "\t\t\t\tFROM\n" +
                "\t\t\t\t\tbase_doctor_health_upload d1\n" +
                "\t\t\t\tGROUP BY\n" +
                "\t\t\t\t\td1.doctor_id\n" +
                "\t\t\t) d2\n" +
                "\t\tLEFT JOIN base_doctor_health_upload d3 ON d2.doctor_id = d3.doctor_id\n" +
                "\t\tAND d2.createTime = d3.create_time\n" +
                "\t) d "+
                "LEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.doctor_id \n where 1=1 and dh.dept_code is not null  "+condition+" ";
        String highSql = sql +" AND d.is_high=1 and d.create_time >='"+startDate+"' and d.create_time <='"+endDate+"'";
        String redSql = sql +" AND d.health_code=2 and d.create_time >='"+startDate+"' and d.create_time <='"+endDate+"'";
        String yellowSql = sql +" AND d.health_code=3 and d.create_time >='"+startDate+"' and d.create_time <='"+endDate+"'";
        String greenSql = sql +" AND d.health_code=1 and d.create_time >='"+startDate+"' and d.create_time <='"+endDate+"'";
        Map<String, Object> highMap = jdbcTemplate.queryForMap(highSql);
        String highTotals = "";
        Integer highTotal = 0;//中高风险统计
        if (highMap != null) {
            highTotals = highMap.get("total").toString();
        }
        if (StringUtils.isNoneBlank(highTotals)) {
            //中高风险统计
            highTotal = Integer.parseInt(highTotals);
        }
        Map<String, Object> redMap = jdbcTemplate.queryForMap(redSql);
        String redTotals = "";
        Integer redTotal = 0;//红码统计
        if (redMap != null) {
            redTotals = redMap.get("total").toString();
        }
        if (StringUtils.isNoneBlank(redTotals)) {
            //红码统计
            redTotal = Integer.parseInt(redTotals);
        }
        Map<String, Object> yellowMap = jdbcTemplate.queryForMap(yellowSql);
        String yellowTotals = "";
        Integer yellowTotal = 0;//黄码统计
        if (yellowMap != null) {
            yellowTotals = yellowMap.get("total").toString();
        }
        if (StringUtils.isNoneBlank(yellowTotals)) {
            //黄码统计
            yellowTotal = Integer.parseInt(yellowTotals);
        }
        Map<String, Object> greenMap = jdbcTemplate.queryForMap(greenSql);
        String greenTotals = "";
        Integer greenTotal = 0;//中高风险统计
        if (greenMap != null) {
            greenTotals = greenMap.get("total").toString();
        }
        if (StringUtils.isNoneBlank(greenTotals)) {
            //中高风险统计
            greenTotal = Integer.parseInt(greenTotals);
        }
        object.put("highTotal", highTotal);//中高风险统计
        object.put("redTotal", redTotal);//红码统计
        object.put("yellowTotal", yellowTotal);//黄码统计
        object.put("greenTotal", greenTotal);//绿码统计
        return object;
    }
    /**
     * 首页上报分析
     *
     * @param flag 1周2月
     * @param dept
     * @param level  1院级管理员,2科室管理员
     * @return
     */
    public JSONObject selectIndexTotalCircle(Integer flag,String dept, int level) {
        JSONObject object = new JSONObject();
        String startDate="";
        String endDate="";
        if (flag==1){
            startDate = DateUtil.getMondayOfThisWeek();
            endDate = DateUtil.getSundayOfThisWeek();
        }else if (flag==2){
            startDate = DateUtil.getFristDayOfMonth();
            endDate = DateUtil.getLastDayOfMonth();
        }
        String day = DateUtil.getTwoDay(endDate, startDate);
        String doctorSql = " select COUNT(1) as \"total\" from base_doctor d where d.del=1 ";
        Integer total = 0;//总人次
        String sqlCondition = "";
        if (level==2){
            sqlCondition =" and d.doctor_id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) ";
        }
        String sql = "SELECT SUM(d1.total) as total from (select COUNT(DISTINCT d.doctor_id) as \"total\",date_format(d.create_time ,'%Y-%m-%d' ) from base_doctor_health_upload d where 1=1 "+sqlCondition+" and  d.create_time >='" + startDate + " 00:00:00' and d.create_time<='" + endDate + " 23:59:59' GROUP BY date_format(d.create_time ,'%Y-%m-%d' ))d1 ";
        if (level==2){
            doctorSql +=" and d.id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) ";
        }
        Map<String, Object> map = jdbcTemplate.queryForMap(doctorSql);
        String doctorTotal = "";
        if (map != null) {
            doctorTotal = map.get("total").toString();
        }
        if (StringUtils.isNoneBlank(doctorTotal)) {
            //总人次
            if (!day.equalsIgnoreCase("0")) {
                total = Integer.parseInt(doctorTotal) * Integer.parseInt(day);
            } else {
                total = Integer.parseInt(doctorTotal);
            }
        }
        Integer yishangbaoTotal = 0;
        Integer weishangbaoTotal = 0;
        Integer zhengchangTotal = 0;
        Integer yichangTotal = 0;
        //已上传
        Map<String, Object> yishangchaungMap = jdbcTemplate.queryForMap(sql);
        if (yishangchaungMap != null) {
            if (yishangchaungMap.get("total") != null) {
                yishangbaoTotal = Integer.parseInt(yishangchaungMap.get("total").toString());
            }
        }
        //未上报
        weishangbaoTotal = total - yishangbaoTotal;
        //上传总次数
        Integer shangchuanTotal = 0;
        String shangchuanTotalSql = "select COUNT(1) as \"total\" from base_doctor_health_upload d where 1=1  ";
        if (StringUtils.isNoneBlank(startDate)) {
            shangchuanTotalSql += " and d.create_time >='" + startDate + " 00:00:00' and d.create_time<='" + endDate + " 23:59:59' ";
        }
        if (level==2){
            shangchuanTotalSql +=" and d.doctor_id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) ";
        }
        Map<String, Object> shangchuanMap = jdbcTemplate.queryForMap(shangchuanTotalSql);
        if (shangchuanMap != null) {
            if (shangchuanMap.get("total") != null) {
                shangchuanTotal = Integer.parseInt(shangchuanMap.get("total").toString());
            }
        }
        //正常、异常
        String sqlZhengchang = "select COUNT(1) as \"total\" from base_doctor_health_upload d where 1=1 and (d.health_code not in(2,3) AND CAST(d.temperature as DECIMAL)<37.3 AND  d.is_symptoms=2 and  d.is_epidemic=2) ";
        if (StringUtils.isNoneBlank(startDate)) {
            sqlZhengchang += " and d.create_time >='" + startDate + " 00:00:00' and d.create_time<='" + endDate + " 23:59:59' ";
        }
        if (level==2){
            sqlZhengchang +=" and d.doctor_id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) ";
        }
        //正常
        Map<String, Object> zhengchangMap = jdbcTemplate.queryForMap(sqlZhengchang);
        if (zhengchangMap != null) {
            if (zhengchangMap.get("total") != null) {
                zhengchangTotal = Integer.parseInt(zhengchangMap.get("total").toString());
            }
        }
        String sqlYichang = "select COUNT(1) as \"total\" from base_doctor_health_upload d where 1=1 and (d.health_code in(2,3) OR CAST(d.temperature as DECIMAL)>=37.3 OR  d.is_symptoms=1 OR d.is_epidemic=1)  ";
        if (StringUtils.isNoneBlank(startDate)) {
            sqlYichang += " and d.create_time >='" + startDate + " 00:00:00' and d.create_time<='" + endDate + " 23:59:59' ";
        }
        if (level==2){
            sqlYichang +=" and d.doctor_id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) ";
        }
        //正常
        Map<String, Object> yichangMap = jdbcTemplate.queryForMap(sqlYichang);
        if (yichangMap != null) {
            if (yichangMap.get("total") != null) {
                yichangTotal = Integer.parseInt(yichangMap.get("total").toString());
            }
        }
        object.put("total", total);//总人次
        object.put("yishangbaoTotal", yishangbaoTotal);//已上报
        object.put("weishangbaoTotal", weishangbaoTotal);//未上报
        object.put("zhengchangTotal", zhengchangTotal);//上报正常
        object.put("yichangTotal", yichangTotal);//上报异常
        object.put("shangchuanTotal", shangchuanTotal);//上传总次数
        return object;
    }
    /**
     * 首页未报科室统计
     * @param dept
     * @param level  1院级管理员,2科室管理员
     * @return
     */
    public List<Map<String, Object>> selectIndexDeptList(String dept, int level) {
        String startDate = DateUtil.getStringDateShort();
        String condition = "";
        if (StringUtils.isNoneBlank(startDate)) {
            condition = "  and d.create_time >='" + startDate + " 00:00:00' and d.create_time<='" + startDate + " 23:59:59'  ";
        }
        String deptSql = "SELECT\n" +
                "\tcode,\n" +
                "\tname,\n" +
                "\tdh1.total,\n" +
                "\tdh2.total as yishangbaoTotal,\n" +
                "\tdh3.total as shangchuanTotal,\n" +
                "\tdh4.total as zhengchangTotal,\n" +
                "\tdh5.total as yichangTotal,\n" +
                "\tdh6.total as yichangPersonTotal\n" +
                "FROM\n" +
                "\tdict_hospital_dept hd\n" +
                "LEFT JOIN (\n" +
                "\tSELECT\n" +
                "\t\tdh.dept_code,\n" +
                "\t\tCOUNT(1) AS \"total\"\n" +
                "\tFROM\n" +
                "\t\tbase_doctor d\n" +
                "\tLEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.id\n" +
                "\tWHERE\n" +
                "\t\td.del = 1\n" +
                "\tAND dh.del = 1\n" +
                "\tGROUP BY\n" +
                "\t\tdh.dept_code\n" +
                ") dh1 ON hd. CODE = dh1.dept_code\n" +
                "LEFT JOIN (\n" +
                "\tSELECT\n" +
                "\t\tdh.dept_code,\n" +
                "\t\tCOUNT(DISTINCT d.doctor_id) AS total\n" +
                "\tFROM\n" +
                "\t\tbase_doctor_health_upload d\n" +
                "\tLEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.doctor_id\n" +
                "\tWHERE\n" +
                "\t\t1 = 1\n" +
                condition+
                "\tGROUP BY\n" +
                "\t\tdh.dept_code\n" +
                ")dh2 ON dh2.dept_code=hd.code\n" +
                "LEFT JOIN (\n" +
                "\tSELECT\n" +
                "\t\tdh.dept_code,\n" +
                "\t\tCOUNT(1) AS total\n" +
                "\tFROM\n" +
                "\t\tbase_doctor_health_upload d\n" +
                "\tLEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.doctor_id\n" +
                "\tWHERE\n" +
                "\t\t1 = 1\n" +
                condition+
                "\tGROUP BY\n" +
                "\t\tdh.dept_code\n" +
                ")dh3 ON dh3.dept_code=hd.code\n" +
                "LEFT JOIN (\n" +
                "\tSELECT\n" +
                "\t\tdh.dept_code,\n" +
                "\t\tCOUNT(1) AS total\n" +
                "\tFROM\n" +
                "\t\tbase_doctor_health_upload d\n" +
                "\tLEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.doctor_id\n" +
                "\tWHERE\n" +
                "\t\t1 = 1\n" +
                condition+
                "\tand (d.health_code not in(2,3) AND CAST(d.temperature as DECIMAL)<37.3 AND  d.is_symptoms=2 and  d.is_epidemic=2)\n" +
                "\tGROUP BY\n" +
                "\t\tdh.dept_code\n" +
                ")dh4 ON dh4.dept_code=hd.code\n" +
                "LEFT JOIN (\n" +
                "\tSELECT\n" +
                "\t\tdh.dept_code,\n" +
                "\t\tCOUNT(1) AS total\n" +
                "\tFROM\n" +
                "\t\tbase_doctor_health_upload d\n" +
                "\tLEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.doctor_id\n" +
                "\tWHERE\n" +
                "\t\t1 = 1\n" +
                condition+
                "\tand (d.health_code in(2,3) OR CAST(d.temperature as DECIMAL)>=37.3 OR  d.is_symptoms=1 OR d.is_epidemic=1)\n" +
                "\tGROUP BY\n" +
                "\t\tdh.dept_code\n" +
                ")dh5 ON dh5.dept_code=hd.code\n" +
                "LEFT JOIN (\n" +
                "\tSELECT\n" +
                "\t\tdh.dept_code,\n" +
                "\t\tCOUNT(DISTINCT d.doctor_id) AS total\n" +
                "\tFROM\n" +
                "\t\tbase_doctor_health_upload d\n" +
                "\tLEFT JOIN base_doctor_hospital dh ON dh.doctor_code = d.doctor_id\n" +
                "\tWHERE\n" +
                "\t\t1 = 1\n" +
                condition+
                "\tand (d.health_code in(2,3) OR CAST(d.temperature as DECIMAL)>=37.3 OR  d.is_symptoms=1 OR d.is_epidemic=1)\n" +
                "\tGROUP BY\n" +
                "\t\tdh.dept_code\n" +
                ")dh6 ON dh6.dept_code=hd.code\n" +
                "WHERE\n" +
                "\thd.consult_dept_flag = 1 ";
        if (level==2) {
            deptSql += " and hd.code = '" + dept + "' ";
        }
        deptSql +=" ORDER BY (IF(ISNULL(dh1.total),0,dh1.total)-IF(ISNULL(dh2.total),0,dh2.total)) DESC ";
        List<Map<String, Object>> mapList = jdbcTemplate.queryForList(deptSql);
        for (Map<String,Object> deptMap:mapList){
            String day = DateUtil.getTwoDay(startDate, startDate);
            Integer total = 0;
            Integer yishangbaoTotal = 0;
            Integer weishangbaoTotal = 0;
            Integer zhengchangTotal = 0;
            Integer yichangTotal = 0;
            Integer shangchuanTotal = 0;
            Integer yichangPersonTotal = 0;
            if (deptMap.get("total")!=null){
                String doctorTotal = deptMap.get("total").toString();
                //总人次
                if (!day.equalsIgnoreCase("0")) {
                    total = Integer.parseInt(doctorTotal) * Integer.parseInt(day);
                } else {
                    total = Integer.parseInt(doctorTotal);
                }
            }
            if (deptMap.get("yishangbaoTotal")!=null){
                yishangbaoTotal = Integer.parseInt(deptMap.get("yishangbaoTotal").toString());
            }
            //未上报
            weishangbaoTotal = total - yishangbaoTotal;
            if (deptMap.get("zhengchangTotal")!=null){
                zhengchangTotal = Integer.parseInt(deptMap.get("zhengchangTotal").toString());
            }
            if (deptMap.get("yichangTotal")!=null){
                yichangTotal = Integer.parseInt(deptMap.get("yichangTotal").toString());
            }
            if (deptMap.get("yichangPersonTotal")!=null){
                yichangPersonTotal = Integer.parseInt(deptMap.get("yichangPersonTotal").toString());
            }
            if (deptMap.get("shangchuanTotal")!=null){
                shangchuanTotal = Integer.parseInt(deptMap.get("shangchuanTotal").toString());
            }
            JSONObject object = new JSONObject();
            object.put("total", total);//总人次
            object.put("yishangbaoTotal", yishangbaoTotal);//已上报
            object.put("weishangbaoTotal", weishangbaoTotal);//未上报
            object.put("zhengchangTotal", zhengchangTotal);//上报正常
            object.put("yichangTotal", yichangTotal);//上报异常
            object.put("yichangPersonTotal", yichangPersonTotal);//上报人异常
            object.put("shangchuanTotal", shangchuanTotal);//上传总次数
            deptMap.put("tongyishuju", object);
        }
        return mapList;
    }
}

+ 8 - 3
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java

@ -3501,7 +3501,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                " FROM " +
                " wlyy_outpatient o " +
                " JOIN wlyy_prescription p ON p.outpatient_id = o.id " +
                " JOIN wlyy_prescription_expressage e ON e.outpatient_id = o.id" +
                " JOIN wlyy_prescription_expressage e ON e.outpatient_id = p.outpatient_id" +
                " WHERE" +
                " 1=1 ";
        if (StringUtils.isNotBlank(status)) {
@ -3593,7 +3593,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                " FROM " +
                " wlyy_outpatient o " +
                " JOIN wlyy_prescription p ON p.outpatient_id = o.id " +
                " JOIN wlyy_prescription_expressage e ON e.outpatient_id = o.id " +
                " JOIN wlyy_prescription_expressage e ON e.outpatient_id = p.outpatient_id " +
                " WHERE" +
                " 1=1";
        if (StringUtils.isNotBlank(status)) {
@ -9973,7 +9973,12 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                            cardNo = outpatientDO.getCardNo();
                        }
                        logger.info("cardNo:" + cardNo);
                        JSONObject object =entranceService.BS15054(patientMappingDO.getMappingCode(),prescriptionDO.getRealOrder(),demoFlag);
                        String mappingCode= "";
                        PatientMappingDO patientMappingDO1 = patientMappingDao.findByPatient(outpatientDO.getPatient());
                        if (patientMappingDO1!=null){
                            mappingCode = patientMappingDO1.getMappingCode();
                        }
                        JSONObject object =entranceService.BS15054(mappingCode,prescriptionDO.getRealOrder(),demoFlag);
                        net.sf.json.JSONObject res = object.getJSONObject("resquest");
                        logger.info("获取待结算数据 res: " + res.toString());
                        String rsCode = res.getString("@RESULT");

+ 121 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/healthUpload/HealthUploadPoint.java

@ -350,4 +350,125 @@ public class HealthUploadPoint extends EnvelopRestEndpoint {
            return failedListEnvelopException(e);
        }
    }
    @GetMapping(value = "selectIndexHeader")
    @ApiOperation(value = "首页头部统计", notes = "首页头部统计")
    public Envelop selectIndexHeader(@ApiParam(name = "dept", value = "院级管理员无需传科室code")
                                         @RequestParam(value = "dept", required = false) String dept,
                                     @ApiParam(name = "level", value = "1院级管理员,2科室管理员")
                                         @RequestParam(value = "level", required = false) Integer level) throws Exception {
        try{
            return success(baseDoctorHealthUploadService.selectIndexHeader(dept,level));
        }catch (Exception e) {
            return failedMixEnvelopException(e);
        }
    }
    @GetMapping(value = "selectIndexScheduleDept")
    @ApiOperation(value = "首页出差科室统计", notes = "首页出差科室统计")
    public Envelop selectIndexScheduleDept(@ApiParam(name = "dept", value = "院级管理员无需传科室code")
                                               @RequestParam(value = "dept", required = false) String dept,
                                           @ApiParam(name = "level", value = "1院级管理员,2科室管理员")
                                               @RequestParam(value = "level", required = false) Integer level) throws Exception {
        try{
            return success(baseDoctorHealthUploadService.selectIndexScheduleDept(dept,level));
        }catch (Exception e) {
            return failedMixEnvelopException(e);
        }
    }
    @GetMapping(value = "selectIndexScheduleCityName")
    @ApiOperation(value = "首页出差分布统计", notes = "首页出差分布统计")
    public Envelop selectIndexScheduleCityName(@ApiParam(name = "dept", value = "院级管理员无需传科室code")
                                                   @RequestParam(value = "dept", required = false) String dept,
                                               @ApiParam(name = "level", value = "1院级管理员,2科室管理员")
                                                   @RequestParam(value = "level", required = false) Integer level) throws Exception {
        try{
            return success(baseDoctorHealthUploadService.selectIndexScheduleCityName(dept,level));
        }catch (Exception e) {
            return failedMixEnvelopException(e);
        }
    }
    @GetMapping(value = "selectIndexScheduleTown")
    @ApiOperation(value = "首页本地分布统计", notes = "首页本地分布统计")
    public Envelop selectIndexScheduleTown(@ApiParam(name = "dept", value = "院级管理员无需传科室code")
                                               @RequestParam(value = "dept", required = false) String dept,
                                           @ApiParam(name = "level", value = "1院级管理员,2科室管理员")
                                               @RequestParam(value = "level", required = false) Integer level) throws Exception {
        try{
            return success(baseDoctorHealthUploadService.selectIndexScheduleTown(dept,level));
        }catch (Exception e) {
            return failedMixEnvelopException(e);
        }
    }
    @GetMapping(value = "selectIndexYichangList")
    @ApiOperation(value = "首页异常实时情况", notes = "首页异常实时情况")
    public Envelop selectIndexYichangList(@ApiParam(name = "dept", value = "院级管理员无需传科室code")
                                              @RequestParam(value = "dept", required = false) String dept,
                                          @ApiParam(name = "level", value = "1院级管理员,2科室管理员")
                                              @RequestParam(value = "level", required = false) Integer level) throws Exception {
        try{
            return success(baseDoctorHealthUploadService.selectIndexYichangList(dept,level));
        }catch (Exception e) {
            return failedMixEnvelopException(e);
        }
    }
    @GetMapping(value = "selectIndexTotalCircle")
    @ApiOperation(value = "首页上报分析", notes = "首页上报分析")
    public Envelop selectIndexTotalCircle(@ApiParam(name = "flag", value = "1周2月")
                                              @RequestParam(value = "flag", required = false) Integer flag,
                                          @ApiParam(name = "dept", value = "院级管理员无需传科室code")
                                          @RequestParam(value = "dept", required = false) String dept,
                                          @ApiParam(name = "level", value = "1院级管理员,2科室管理员")
                                              @RequestParam(value = "level", required = false) Integer level) throws Exception {
        try{
            return success(baseDoctorHealthUploadService.selectIndexTotalCircle(flag,dept,level));
        }catch (Exception e) {
            return failedMixEnvelopException(e);
        }
    }
    @GetMapping(value = "selectIndexNucleicTotal")
    @ApiOperation(value = "首页核酸检测情况", notes = "首页核酸检测情况")
    public Envelop selectIndexNucleicTotal(@ApiParam(name = "dept", value = "院级管理员无需传科室code")
                                               @RequestParam(value = "dept", required = false) String dept,
                                           @ApiParam(name = "level", value = "1院级管理员,2科室管理员")
                                               @RequestParam(value = "level", required = false) Integer level) throws Exception {
        try{
            return success(baseDoctorHealthUploadService.selectIndexNucleicTotal(dept,level));
        }catch (Exception e) {
            return failedMixEnvelopException(e);
        }
    }
    @GetMapping(value = "selectIndexNewAdd")
    @ApiOperation(value = "首页当日新增统计", notes = "首页当日新增统计")
    public Envelop selectIndexNewAdd(@ApiParam(name = "dept", value = "院级管理员无需传科室code")
                                         @RequestParam(value = "dept", required = false) String dept,
                                     @ApiParam(name = "level", value = "1院级管理员,2科室管理员")
                                         @RequestParam(value = "level", required = false) Integer level) throws Exception {
        try{
            return success(baseDoctorHealthUploadService.selectIndexNewAdd(dept,level));
        }catch (Exception e) {
            return failedMixEnvelopException(e);
        }
    }
    @GetMapping(value = "selectIndexDeptList")
    @ApiOperation(value = "首页未报科室统计", notes = "首页未报科室统计")
    public Envelop selectIndexDeptList(@ApiParam(name = "dept", value = "院级管理员无需传科室code")
                                           @RequestParam(value = "dept", required = false) String dept,
                                       @ApiParam(name = "level", value = "1院级管理员,2科室管理员")
                                           @RequestParam(value = "level", required = false) Integer level) throws Exception {
        try{
            return success(baseDoctorHealthUploadService.selectIndexDeptList(dept,level));
        }catch (Exception e) {
            return failedMixEnvelopException(e);
        }
    }
}