Просмотр исходного кода

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

Sand 8 лет назад
Родитель
Сommit
63ac95669c
26 измененных файлов с 723 добавлено и 143 удалено
  1. 3 0
      patient-co-statistics/pom.xml
  2. 3 3
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/controller/JobController.java
  3. 1 1
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/dao/ConsultTeamDao.java
  4. 3 0
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/etl/storage/RedisStorage.java
  5. 3 3
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/AllSignExpenseStatusJob.java
  6. 3 4
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/AllSignJob.java
  7. 3 3
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/ChangeSignJob.java
  8. 2 2
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/ConsultJob.java
  9. 342 33
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/CurrentDayAllQuotaJob.java
  10. 2 2
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/FollowUpJob.java
  11. 1 1
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/HealthGuideJob.java
  12. 3 3
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/HealthSignJob.java
  13. 3 3
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/SignAgeGroupDiseaseJob.java
  14. 3 3
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/SignExpenseStatusJob.java
  15. 12 12
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/SignJob.java
  16. 3 3
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/UnSignJob.java
  17. 3 3
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/WaitSignJob.java
  18. 2 2
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/check/CheckSignJob.java
  19. 5 5
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/model/consult/ConsultTeam.java
  20. 5 5
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/model/signfamily/SignFamily.java
  21. 31 11
      patient-co-statistics/src/main/resources/application.yml
  22. 2 0
      patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/doctor/DoctorAdminTeamDao.java
  23. 3 0
      patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/organization/HospitalDao.java
  24. 1 1
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/consult/ConsultTeamService.java
  25. 265 40
      patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsService.java
  26. 16 0
      patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/StatisticsController.java

+ 3 - 0
patient-co-statistics/pom.xml

@ -7,7 +7,9 @@
    <version>1.0.0</version>
    <modelVersion>4.0.0</modelVersion>
    <!--打成war包需要的配置-->
    <packaging>war</packaging>
    <!--<packaging>jar</packaging>-->
    <name>patient-co-statistics</name>
    <properties>
@ -391,6 +393,7 @@
    <build>
        <plugins>
            <!--打成war包需要的配置-->
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>

+ 3 - 3
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/controller/JobController.java

@ -36,7 +36,7 @@ public class JobController extends BaseController {
    @ApiOperation(value = "根据ID立即单个任务")
    @RequestMapping(value = "startNowById", method = RequestMethod.GET)
    public String startNowById(
            @ApiParam(name = "id", value = "任务ID")@RequestParam(value = "id", required = true) String id) {
            @ApiParam(name = "id", value = "任务ID", required = true)@RequestParam(value = "id", required = true) String id) {
        try {
            jobService.startNowById(id);
            return success("启动成功!");
@ -130,7 +130,7 @@ public class JobController extends BaseController {
    @ApiOperation(value = "启动单个任务")
    @RequestMapping(value = "startById", method = RequestMethod.GET)
    public String startById(
            @ApiParam(name="id",required=true)@RequestParam(value = "id", required = true) String id) {
            @ApiParam(name="id",value="任务id",required=true)@RequestParam(value = "id", required = true) String id) {
        try {
            jobService.startById(id);
            return success("启动成功!");
@ -148,7 +148,7 @@ public class JobController extends BaseController {
     */
    @ApiOperation(value = "停止单个任务")
    @RequestMapping(value = "stopById", method = RequestMethod.GET)
    public String stopById(@ApiParam(name="id",required=true)@RequestParam(value = "id", required = true)String id) {
    public String stopById(@ApiParam(name="id",value="任务id",required=true)@RequestParam(value = "id", required = true)String id) {
        try {
            jobService.stopById(id);
            return success("停止成功!");

+ 1 - 1
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/dao/ConsultTeamDao.java

@ -114,6 +114,6 @@ public interface ConsultTeamDao extends PagingAndSortingRepository<ConsultTeam,
    @Query("FROM ConsultTeam a where TIMESTAMPDIFF(SECOND, a.czrq, CURRENT_TIME) < 86400 and a.status = 0 order by a.czrq desc")
    Page<ConsultTeam> getUnresponsedConsultIn24Hours(Pageable pageable);
	@Query("FROM ConsultTeam a where a.type=?1 and a.adminTeamId is null")
	@Query("FROM ConsultTeam a where a.type=?1 and a.adminTeamCode is null")
	List<ConsultTeam> findByTypeAndAdminTeamIdIsNull(Integer s);
}

+ 3 - 0
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/etl/storage/RedisStorage.java

@ -71,6 +71,7 @@ public class RedisStorage {
        Map<String, List<ETLModel>> orgTeam=data.get(1);//机构的数据
        Map<String, List<ETLModel>> townTeam=data.get(2);//区的数据
        Map<String, List<ETLModel>> cityTeam=data.get(3);//市的数据
        redisTemplate.opsForValue().set("quota:date",DateUtil.dateToStrLong(new Date()));
        //保存市
        saveLevel1City(wlyyQuotaId, cityMap, cityTeam);
        //保存区
@ -126,6 +127,8 @@ public class RedisStorage {
        Map<String, Map<String, List<ETLModel>>> orgTeam=data.get(1);//机构的数据
        Map<String, Map<String, List<ETLModel>>> townTeam=data.get(2);//区的数据
        Map<String, Map<String, List<ETLModel>>> cityTeam=data.get(3);//市的数据
        redisTemplate.opsForValue().set("quota:date",DateUtil.dateToStrLong(new Date()));
        //保存市
        saveLevel2City(wlyyQuotaId, cityMap, cityTeam,foreachNum,type,start);
        //保存区

+ 3 - 3
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/AllSignExpenseStatusJob.java

@ -135,7 +135,7 @@ public class AllSignExpenseStatusJob implements Job{
        List<ETLModel> etlModels = new ArrayList<ETLModel>();
        List<SignFamily> signFamilys =null;
        while (true){
            String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status >= 1  and  a.apply_date<= '"+dateTemp+"' limit "+start+","+pageSize ;
            String sql=" select id,code,idcard,hospital,admin_team_code,expenses_status from wlyy_sign_family a where  a.type =2 and a.status >= 1  and  a.apply_date<= '"+dateTemp+"' limit "+start+","+pageSize ;
            signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));  // signFamilyDao.findByJiatingSignYesterday(dateTemp);
            //数据过滤清洗出脏数据  -----------start
@ -164,14 +164,14 @@ public class AllSignExpenseStatusJob implements Job{
                    errorCount++;
                    continue;
                }
                Long adminId = signFamily.getAdminTeamId();
                Long adminId = signFamily.getAdminTeamCode();
                if (adminId == null || adminId <= 0) {
                    errorContent.append("签约code:" + signFamily.getCode() + ",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                    isAll = false;
                    errorCount++;
                    continue;
                }
                AdminTeam adminTeam = adminTeamMap.get(signFamily.getAdminTeamId() + "");
                AdminTeam adminTeam = adminTeamMap.get(signFamily.getAdminTeamCode() + "");
                if (adminTeam == null) {
                    errorContent.append("签约code:" + signFamily.getCode() + ",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                    isAll = false;

+ 3 - 4
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/AllSignJob.java

@ -17,7 +17,6 @@ import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
@ -119,7 +118,7 @@ public class AllSignJob implements Job {
        List<ETLModel> etlModels = new ArrayList<ETLModel>();
        List<SignFamily> signFamilys =null;
        while (true){
            String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status >= 1  and  a.apply_date<= '"+dateTemp+"' limit "+start+","+pageSize ;
            String sql=" select id,code,idcard,hospital,admin_team_code,expenses_status from wlyy_sign_family a where  a.type =2 and a.status >= 1  and expenses_status=1 and a.apply_date<= '"+dateTemp+"' limit "+start+","+pageSize ;
            signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));  // signFamilyDao.findByJiatingSignYesterday(dateTemp);
            //数据过滤清洗出脏数据  -----------start
            for (SignFamily signFamily : signFamilys) {
@ -147,14 +146,14 @@ public class AllSignJob implements Job {
                    errorCount++;
                    continue;
                }
                Long adminId = signFamily.getAdminTeamId();
                Long adminId = signFamily.getAdminTeamCode();
                if (adminId == null || adminId <= 0) {
                    errorContent.append("签约code:" + signFamily.getCode() + ",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                    isAll = false;
                    errorCount++;
                    continue;
                }
                AdminTeam adminTeam = adminTeamMap.get(signFamily.getAdminTeamId() + "");
                AdminTeam adminTeam = adminTeamMap.get(signFamily.getAdminTeamCode() + "");
                if (adminTeam == null) {
                    errorContent.append("签约code:" + signFamily.getCode() + ",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                    isAll = false;

+ 3 - 3
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/ChangeSignJob.java

@ -106,7 +106,7 @@ public class ChangeSignJob implements Job {
        }
        //找出今天的已改簽信息
        // List<SignFamily> signFamilys = signFamilyDao.findByJiatingChaangeSignYesterdayExpensesStatus(yesterday,now);
        String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =100 and  a.patient_apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.patient_apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
        String sql=" select code,idcard,hospital,admin_team_code from wlyy_sign_family a where  a.type =2 and a.status =100 and  a.patient_apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.patient_apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
@ -144,14 +144,14 @@ public class ChangeSignJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;

+ 2 - 2
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/ConsultJob.java

@ -120,13 +120,13 @@ public class ConsultJob implements Job {
        //数据过滤清洗出脏数据  -----------start
        for(ConsultTeam consultTeam:consultTeams){
            ETLModel etlModel=new ETLModel();
            Long adminId=consultTeam.getAdminTeamId();
            Long adminId=consultTeam.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("咨询Id:"+consultTeam.getId()+",咨询的团队(wlyy_consult_team)中的admin_team_code数据为空");
                isAll=false;
                continue;
            }
            String teamCode = consultTeam.getAdminTeamId()+"";//行政的团队的id
            String teamCode = consultTeam.getAdminTeamCode()+"";//行政的团队的id
            AdminTeam adminTeam=adminTeamMap.get(teamCode);
            if(adminTeam == null) {
                errorContent.append("咨询Id:"+consultTeam.getId()+",团队Id:"+adminTeam.getId()+",咨询的团队(wlyy_consult_team)中的团队不存在");

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

@ -152,7 +152,10 @@ public class CurrentDayAllQuotaJob implements Job {
        computequota_9();//统计今天的待签约
        computequota_10();//统计今天的改签
        computequota_12();//统计今天的签约下按年龄分组后再
        computequota_15();//统计健康分布统计
        computequota_13();//统计今天的签约量
        computequota_14();//统计今天的签约数的扣费钱情况
        computequota_15();//统计今天的健康分布统计
        computequota_16();//统计今天的签约费用统计
        quartzJobLog.setJobContent(allContent.toString());
        quartzJobLog.setJobName("实时统计");
        quartzJobLog.setJobId("11");
@ -161,11 +164,317 @@ public class CurrentDayAllQuotaJob implements Job {
        quartzJobLogDao.save(quartzJobLog);
    }
    private void computequota_14() {
        errorContent=new StringBuffer();
        String quotaId="14";
        //找出今天的签约信息
        String sql=" select id,code,idcard,hospital,admin_team_code from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+now+"' and  a.apply_date< '"+tomorrow+"' ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
        Long townCount = new Long(0L); //统计到所有区的数目
        Long orgCount =new Long(0L);//统计到所有机构的数目
        Long adminCount = new Long(0L);//统计到所有团队的数目
        Long errorCount=new Long(0L);//脏数据
        Boolean isAll=true;//是否统计失败
        //统计有已改簽的
        List<ETLModel> etlModels=new ArrayList<ETLModel>();
        //数据过滤清洗出脏数据  -----------start
        for(SignFamily signFamily:signFamilys){
            ETLModel etlModel=new ETLModel();
            String orgCode = signFamily.getHospital();
            if(StringUtils.isEmpty(orgCode)) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            String orgCodeTemp="";
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                //站
                orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
            }else{
                //社区
                orgCodeTemp=orgCode;
            }
            //判断社区有没有值
            Hospital hospital=hospitalsMap.get(orgCodeTemp);
            if(hospital == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据不存在");
                isAll=false;
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;
                errorCount++;
                continue;
            }
            String idCard=signFamily.getIdcard();
            if(idCard == null||((idCard.length()!=18&&idCard.length()!=15))) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的idCard数据异常");
                isAll=false;
                errorCount++;
                continue;
            }
            String town =hospital.getTown();
            if(StringUtils.isEmpty(town)) {
                errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town为空");
                isAll=false;
                errorCount++;
                continue;
            }
            Town townObj =townsMap.get(town);
            if(townObj==null) {
                errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town不存在");
                isAll=false;
                errorCount++;
                continue;
            }
            etlModel.setHospital(orgCodeTemp);
            etlModel.setTown(hospital.getTown());
            etlModel.setCity(Constant.city);
            etlModel.setIdcard(signFamily.getIdcard());
            etlModels.add(etlModel);
            //统计数目+1
            cityCount++;
            townCount++;
            orgCount++;
            adminCount++;
        }
        //数据过滤清洗出脏数据  -----------end
        try{
            //统计数据
            List<Map<String, List<ETLModel>>>  returnData1s= levelRole.elt(etlModels);
            List<Map<String, Map<String, List<ETLModel>>>> role2Data= level2Role.elt(returnData1s);
            //保存数据
            redisStorage.saveByLevel2(role2Data,quotaId,2,4,0);
        }catch (Exception e){
            e.printStackTrace();
            errorContent.append("统计失败:"+e.getMessage());
        }
        allContent.append(saveContent(quotaId,signFamilys.size(),adminCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount));
        allContent.append("-----------14----------");
    }
    private void computequota_13() {
        errorContent=new StringBuffer();
        //找出今天的签约信息 yesterday,now
        String sql=" select id,code,idcard,hospital,admin_team_code from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+now+"' and  a.apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
        Long townCount = new Long(0L); //统计到所有区的数目
        Long orgCount =new Long(0L);//统计到所有机构的数目
        Long adminCount = new Long(0L);//统计到所有团队的数目
        Long errorCount=new Long(0L);//脏数据
        Boolean isAll=true;//是否统计失败
        //统计有已改簽的
        List<ETLModel> etlModels=new ArrayList<ETLModel>();
        //数据过滤清洗出脏数据  -----------start
        for(SignFamily signFamily:signFamilys){
            ETLModel etlModel=new ETLModel();
            String orgCode = signFamily.getHospital();
            if(StringUtils.isEmpty(orgCode)) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            String orgCodeTemp="";
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                //站
                orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
            }else{
                //社区
                orgCodeTemp=orgCode;
            }
            //判断社区有没有值
            Hospital hospital=hospitalsMap.get(orgCodeTemp);
            if(hospital == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据不存在");
                isAll=false;
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;
                errorCount++;
                continue;
            }
            String idCard=signFamily.getIdcard();
            if(idCard == null||((idCard.length()!=18&&idCard.length()!=15))) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的idCard数据异常");
                isAll=false;
                errorCount++;
                continue;
            }
            String town =hospital.getTown();
            if(StringUtils.isEmpty(town)) {
                errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town为空");
                isAll=false;
                errorCount++;
                continue;
            }
            Town townObj =townsMap.get(town);
            if(townObj==null) {
                errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town不存在");
                isAll=false;
                errorCount++;
                continue;
            }
            etlModel.setAdminTeam(adminTeam.getId()+"");
            etlModel.setHospital(orgCodeTemp);
            etlModel.setTown(hospital.getTown());
            etlModel.setCity(Constant.city);
            etlModel.setIdcard(signFamily.getIdcard());
            etlModels.add(etlModel);
            //统计数目+1
            cityCount++;
            townCount++;
            orgCount++;
            adminCount++;
        }
        //数据过滤清洗出脏数据  -----------end
        try{
            //统计数据
            List<Map<String, List<ETLModel>>>  returnDatas= levelRole.elt(etlModels);
            //保存数据
            redisStorage.saveByLevel1(returnDatas,"13");
        }catch (Exception e){
            e.printStackTrace();
            errorContent.append("统计失败:"+e.getMessage());
        }
        allContent.append(saveContent("13",signFamilys.size(),adminCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount));
        allContent.append("-----------13----------");
    }
    private void computequota_16() {
        errorContent=new StringBuffer();
        String quotaId="16";
        //找出今天的签约信息
        String sql=" select id,code,idcard,hospital,admin_team_code from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+now+"' and  a.apply_date< '"+tomorrow+"' ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
        Long townCount = new Long(0L); //统计到所有区的数目
        Long orgCount =new Long(0L);//统计到所有机构的数目
        Long adminCount = new Long(0L);//统计到所有团队的数目
        Long errorCount=new Long(0L);//脏数据
        Boolean isAll=true;//是否统计失败
        //统计有已改簽的
        List<ETLModel> etlModels=new ArrayList<ETLModel>();
        //数据过滤清洗出脏数据  -----------start
        for(SignFamily signFamily:signFamilys){
            ETLModel etlModel=new ETLModel();
            String orgCode = signFamily.getHospital();
            if(StringUtils.isEmpty(orgCode)) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            String orgCodeTemp="";
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                //站
                orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
            }else{
                //社区
                orgCodeTemp=orgCode;
            }
            //判断社区有没有值
            Hospital hospital=hospitalsMap.get(orgCodeTemp);
            if(hospital == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据不存在");
                isAll=false;
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;
                errorCount++;
                continue;
            }
            String idCard=signFamily.getIdcard();
            if(idCard == null||((idCard.length()!=18&&idCard.length()!=15))) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的idCard数据异常");
                isAll=false;
                errorCount++;
                continue;
            }
            String town =hospital.getTown();
            if(StringUtils.isEmpty(town)) {
                errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town为空");
                isAll=false;
                errorCount++;
                continue;
            }
            Town townObj =townsMap.get(town);
            if(townObj==null) {
                errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town不存在");
                isAll=false;
                errorCount++;
                continue;
            }
            etlModel.setHospital(orgCodeTemp);
            etlModel.setTown(hospital.getTown());
            etlModel.setCity(Constant.city);
            etlModel.setIdcard(signFamily.getIdcard());
            etlModels.add(etlModel);
            //统计数目+1
            cityCount++;
            townCount++;
            orgCount++;
            adminCount++;
        }
        //数据过滤清洗出脏数据  -----------end
        try{
            //统计数据
            List<Map<String, List<ETLModel>>>  returnData1s= levelRole.elt(etlModels);
            List<Map<String, Map<String, List<ETLModel>>>> role2Data= level2Role.elt(returnData1s);
            //保存数据
            redisStorage.saveByLevel2(role2Data,quotaId,2,4,0);
        }catch (Exception e){
            e.printStackTrace();
            errorContent.append("统计失败:"+e.getMessage());
        }
        allContent.append(saveContent(quotaId,signFamilys.size(),adminCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount));
        allContent.append("-----------16----------");
    }
    private void computequota_15() {
        errorContent=new StringBuffer();
        String quotaId="15";
        //找出今天的签约信息
        String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+now+"' and  a.apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        String sql=" select id,code,idcard,hospital,admin_team_code from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+now+"' and  a.apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
@ -202,14 +511,14 @@ public class CurrentDayAllQuotaJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;
@ -287,7 +596,7 @@ public class CurrentDayAllQuotaJob implements Job {
            townsMap.put(town.getCode(), town);
        }
        //找出今天的签约信息
        String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+now+"' and  a.apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        String sql=" select id,code,idcard,hospital,admin_team_code from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+now+"' and  a.apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        //数组里面第一个是健康人群 第二个是慢病人群 第三个是65岁以上人群
        Map<String, Map<String, Map>> cityAgeMap = new HashMap<String, Map<String, Map>>();//key是市行政代码 目前只有厦门市
@ -327,14 +636,14 @@ public class CurrentDayAllQuotaJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;
@ -542,7 +851,7 @@ public class CurrentDayAllQuotaJob implements Job {
    private void computequota_1() {
         errorContent=new StringBuffer();
        //找出今天的签约信息 yesterday,now
        String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+now+"' and  a.apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        String sql=" select id,code,idcard,hospital,admin_team_code from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+now+"' and  a.apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
        Long townCount = new Long(0L); //统计到所有区的数目
@ -578,14 +887,14 @@ public class CurrentDayAllQuotaJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;
@ -644,7 +953,7 @@ public class CurrentDayAllQuotaJob implements Job {
         errorContent=new StringBuffer();
        String quotaId="2";
        //找出今天的解约信息
        String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status in (-3,-4) and  a.apply_unsign_date>= '"+now+"' and  a.apply_unsign_date< '"+tomorrow+"' and a.expenses_status=1 ";
        String sql=" select id,code,idcard,hospital,admin_team_code,expenses_status from wlyy_sign_family a where  a.type =2 and a.status in (-3,-4) and  a.apply_unsign_date>= '"+now+"' and  a.apply_unsign_date< '"+tomorrow+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
@ -681,14 +990,14 @@ public class CurrentDayAllQuotaJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;
@ -760,13 +1069,13 @@ public class CurrentDayAllQuotaJob implements Job {
        //数据过滤清洗出脏数据  -----------start
        for(ConsultTeam consultTeam:consultTeams){
            ETLModel etlModel=new ETLModel();
            Long adminId=consultTeam.getAdminTeamId();
            Long adminId=consultTeam.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("咨询Id:"+consultTeam.getId()+",咨询的团队(wlyy_consult_team)中的admin_team_code数据为空");
                isAll=false;
                continue;
            }
            String teamCode = consultTeam.getAdminTeamId()+"";//行政的团队的id
            String teamCode = consultTeam.getAdminTeamCode()+"";//行政的团队的id
            AdminTeam adminTeam=adminTeamMap.get(teamCode);
            if(adminTeam == null) {
                errorContent.append("咨询Id:"+consultTeam.getId()+",团队Id:"+adminTeam.getId()+",咨询的团队(wlyy_consult_team)中的团队不存在");
@ -860,13 +1169,13 @@ public class CurrentDayAllQuotaJob implements Job {
                isAll=false;
                continue;
            }
            Long adminTeamId=signFamily.getAdminTeamId();
            Long adminTeamId=signFamily.getAdminTeamCode();
            if(adminTeamId==null||adminTeamId<=0){
                errorContent.append("随访id:"+plan.get("id")+",签约code:"+signFamily.getCode()+" 中的adminTeamId为空");
                isAll=false;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId());
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode());
            if(adminTeam==null){
                errorContent.append("随访id:"+plan.get("id")+",签约code:"+signFamily.getCode()+",医生团队不存在");
                isAll=false;
@ -959,7 +1268,7 @@ public class CurrentDayAllQuotaJob implements Job {
                isAll=false;
                continue;
            }
            String adminId=signFamily.getAdminTeamId()+"";//得到团队ID
            String adminId=signFamily.getAdminTeamCode()+"";//得到团队ID
            if(StringUtils.isEmpty(adminId)){
                errorContent.append("健康咨询id:"+patientHealthGuidance.getId()+",签约code:"+signFamily.getCode()+",咨询的家庭签约的团队AdminTeamCode为空");
                isAll=false;
@ -1036,7 +1345,7 @@ public class CurrentDayAllQuotaJob implements Job {
        errorContent=new StringBuffer();
        String quotaId="6";
        //找出今天的签约信息
        String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+now+"' and  a.apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        String sql=" select id,code,idcard,hospital,admin_team_code,expenses_status from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+now+"' and  a.apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
@ -1073,14 +1382,14 @@ public class CurrentDayAllQuotaJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;
@ -1156,7 +1465,7 @@ public class CurrentDayAllQuotaJob implements Job {
            townsMap.put(town.getCode(), town);
        }
        //找出今天的解约信息
        String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+now+"' and  a.apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        String sql=" select id,code,idcard,hospital,admin_team_code,expenses_status from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+now+"' and  a.apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
@ -1194,14 +1503,14 @@ public class CurrentDayAllQuotaJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;
@ -1295,7 +1604,7 @@ public class CurrentDayAllQuotaJob implements Job {
         errorContent=new StringBuffer();
        String quotaId="8";
        //找出今天的签约信息
        String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+now+"' and  a.apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        String sql=" select id,code,idcard,hospital,admin_team_code,expenses_status from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+now+"' and  a.apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
        Long townCount = new Long(0L); //统计到所有区的数目
@ -1331,14 +1640,14 @@ public class CurrentDayAllQuotaJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;
@ -1396,7 +1705,7 @@ public class CurrentDayAllQuotaJob implements Job {
         errorContent=new StringBuffer();
        String quotaId="9";
        //找出今天的待签约信息
        String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =0  and  a.patient_apply_date>= '"+now+"' and  a.patient_apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        String sql=" select id,code,idcard,hospital,admin_team_code from wlyy_sign_family a where  a.type =2 and a.status =0  and  a.patient_apply_date>= '"+now+"' and  a.patient_apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
@ -1433,14 +1742,14 @@ public class CurrentDayAllQuotaJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;
@ -1516,7 +1825,7 @@ public class CurrentDayAllQuotaJob implements Job {
            townsMap.put(town.getCode(), town);
        }
        //找出今天的已改簽信息
        String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =100 and  a.patient_apply_date>= '"+now+"' and  a.patient_apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        String sql=" select id,code,idcard,hospital,admin_team_code from wlyy_sign_family a where  a.type =2 and a.status =100 and  a.patient_apply_date>= '"+now+"' and  a.patient_apply_date< '"+tomorrow+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
@ -1553,14 +1862,14 @@ public class CurrentDayAllQuotaJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;

+ 2 - 2
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/FollowUpJob.java

@ -154,13 +154,13 @@ public class FollowUpJob implements Job {
                isAll=false;
                continue;
            }
            Long adminTeamId=signFamily.getAdminTeamId();
            Long adminTeamId=signFamily.getAdminTeamCode();
            if(adminTeamId==null||adminTeamId<=0){
                errorContent.append("随访id:"+plan.get("id")+",签约code:"+signFamily.getCode()+" 中的adminTeamId为空");
                isAll=false;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId());
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode());
            if(adminTeam==null){
                errorContent.append("随访id:"+plan.get("id")+",签约code:"+signFamily.getCode()+",医生团队不存在");
                isAll=false;

+ 1 - 1
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/HealthGuideJob.java

@ -128,7 +128,7 @@ public class HealthGuideJob implements Job {
                isAll=false;
                continue;
            }
            String adminId=signFamily.getAdminTeamId()+"";//得到团队ID
            String adminId=signFamily.getAdminTeamCode()+"";//得到团队ID
            if(StringUtils.isEmpty(adminId)){
                errorContent.append("健康咨询id:"+patientHealthGuidance.getId()+",签约code:"+signFamily.getCode()+",咨询的家庭签约的团队AdminTeamCode为空");
                isAll=false;

+ 3 - 3
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/HealthSignJob.java

@ -113,7 +113,7 @@ public class HealthSignJob implements Job {
            townsMap.put(town.getCode(), town);
        }
        //找出今天的签约信息
        String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
        String sql=" select code,idcard,hospital,admin_team_code,patient from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
@ -151,14 +151,14 @@ public class HealthSignJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;

+ 3 - 3
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/SignAgeGroupDiseaseJob.java

@ -105,7 +105,7 @@ public class SignAgeGroupDiseaseJob implements Job {
                townsMap.put(town.getCode(), town);
            }
            //找出今天的签约信息
            String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
            String sql=" select code,idcard,hospital,admin_team_code,patient from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
            List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
            //数组里面第一个是健康人群 第二个是慢病人群 第三个是65岁以上人群
            Map<String, Map<String, Map>> cityAgeMap = new HashMap<String, Map<String, Map>>();//key是市行政代码 目前只有厦门市
@ -146,14 +146,14 @@ public class SignAgeGroupDiseaseJob implements Job {
                    errorCount++;
                    continue;
                }
                Long adminId=signFamily.getAdminTeamId();
                Long adminId=signFamily.getAdminTeamCode();
                if(adminId == null||adminId<=0) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
                AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
                if(adminTeam == null) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                    isAll=false;

+ 3 - 3
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/SignExpenseStatusJob.java

@ -109,7 +109,7 @@ public class SignExpenseStatusJob implements Job{
            townsMap.put(town.getCode(), town);
        }
        //找出今天的已改簽信息
        String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
        String sql=" select code,idcard,hospital,admin_team_code,expenses_status from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));  // signFamilyDao.findByJiatingSignYesterday(dateTemp);
        Long cityCount = new Long(0L); //统计到市的数目
@ -147,14 +147,14 @@ public class SignExpenseStatusJob implements Job{
                errorCount++;
                continue;
            }
            Long adminId = signFamily.getAdminTeamId();
            Long adminId = signFamily.getAdminTeamCode();
            if (adminId == null || adminId <= 0) {
                errorContent.append("签约code:" + signFamily.getCode() + ",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll = false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam = adminTeamMap.get(signFamily.getAdminTeamId() + "");
            AdminTeam adminTeam = adminTeamMap.get(signFamily.getAdminTeamCode() + "");
            if (adminTeam == null) {
                errorContent.append("签约code:" + signFamily.getCode() + ",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll = false;

+ 12 - 12
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/SignJob.java

@ -156,7 +156,7 @@ public class SignJob implements Job {
                townsMap.put(town.getCode(), town);
            }
            //找出今天的签约信息
            String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
            String sql=" select code,idcard,hospital,admin_team_code from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
            List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
            Long cityCount = new Long(0L); //统计到市的数目
@ -194,14 +194,14 @@ public class SignJob implements Job {
                    errorCount++;
                    continue;
                }
                Long adminId=signFamily.getAdminTeamId();
                Long adminId=signFamily.getAdminTeamCode();
                if(adminId == null||adminId<=0) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
                AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
                if(adminTeam == null) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                    isAll=false;
@ -294,7 +294,7 @@ public class SignJob implements Job {
            townsMap.put(town.getCode(), town);
        }
        //找出今天的解约信息
        String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
        String sql=" select code,idcard,hospital,admin_team_code,patient from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
@ -332,14 +332,14 @@ public class SignJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;
@ -464,7 +464,7 @@ public class SignJob implements Job {
                townsMap.put(town.getCode(), town);
            }
            //找出今天的签约信息
            String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
            String sql=" select code,idcard,hospital,admin_team_code from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
            List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
            Long cityCount = new Long(0L); //统计到市的数目
            Long townCount = new Long(0L); //统计到所有区的数目
@ -501,14 +501,14 @@ public class SignJob implements Job {
                    errorCount++;
                    continue;
                }
                Long adminId=signFamily.getAdminTeamId();
                Long adminId=signFamily.getAdminTeamCode();
                if(adminId == null||adminId<=0) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
                AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
                if(adminTeam == null) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                    isAll=false;
@ -600,7 +600,7 @@ public class SignJob implements Job {
            townsMap.put(town.getCode(), town);
        }
        //找出今天的签约信息 yesterday,now
        String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
        String sql=" select code,idcard,hospital,admin_team_code from wlyy_sign_family a where  a.type =2 and a.status =1 and  a.apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
@ -638,14 +638,14 @@ public class SignJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;

+ 3 - 3
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/UnSignJob.java

@ -106,7 +106,7 @@ public class UnSignJob implements Job {
            townsMap.put(town.getCode(), town);
        }
        //找出今天的解约信息
        String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status in (-3,-4) and  a.apply_unsign_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.apply_unsign_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
        String sql=" select code,idcard,hospital,admin_team_code from wlyy_sign_family a where  a.type =2 and a.status in (-3,-4) and  a.apply_unsign_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.apply_unsign_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
@ -144,14 +144,14 @@ public class UnSignJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;

+ 3 - 3
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/WaitSignJob.java

@ -105,7 +105,7 @@ public class WaitSignJob implements Job {
            townsMap.put(town.getCode(), town);
        }
        //找出今天的待签约信息
        String sql=" select * from wlyy_sign_family a where  a.type =2 and a.status =0  and  a.patient_apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.patient_apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
        String sql=" select code,idcard,hospital,admin_team_code from wlyy_sign_family a where  a.type =2 and a.status =0  and  a.patient_apply_date>= '"+daybefore+ Constant.quota_date_last+"' and  a.patient_apply_date< '"+yesterday+ Constant.quota_date_last+"' and a.expenses_status=1 ";
        List<SignFamily> signFamilys = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SignFamily .class));
        Long cityCount = new Long(0L); //统计到市的数目
@ -143,14 +143,14 @@ public class WaitSignJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;

+ 2 - 2
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/check/CheckSignJob.java

@ -98,7 +98,7 @@ public class CheckSignJob implements Job{
        }
    }
    private void startJob(String id, String yesterday, String now) throws Exception{
    private void startJob(String id, String yesterday, String daybefore) throws Exception{
        QuartzJobConfig quartzJobConfig = wlyyJobConfigDao.findById(id);
        if (quartzJobConfig == null) {
            throw new Exception("id不存在");
@ -114,7 +114,7 @@ public class CheckSignJob implements Job{
        params.put("jobConfig", wlyyJobConfigVO);
        //往quartz框架添加任务
        params.put("now", now);
        params.put("daybefore", daybefore);
        params.put("yesterday", yesterday);
        String jobKey="checkSignQuartz:"+yesterday+":"+wlyyQuota.getId();
        if(!quartzHelper.isExistJob(jobKey)){

+ 5 - 5
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/model/consult/ConsultTeam.java

@ -38,15 +38,15 @@ public class ConsultTeam extends IdEntity {
	private Integer patientRead;    // 患者未读数量
	private Date czrq;              // 咨询时间
	private String del;             // 作废标识,1正常,0作废
	private Long adminTeamId;//行政团队ID
	private Long adminTeamCode;//行政团队ID
	@Column(name = "admin_team_code")
	public Long getAdminTeamId() {
		return adminTeamId;
	public Long getAdminTeamCode() {
		return adminTeamCode;
	}
	public void setAdminTeamId(Long adminTeamId) {
		this.adminTeamId = adminTeamId;
	public void setAdminTeamCode(Long adminTeamCode) {
		this.adminTeamCode = adminTeamCode;
	}
	public String getConsult() {

+ 5 - 5
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/model/signfamily/SignFamily.java

@ -59,7 +59,7 @@ public class SignFamily extends IdEntity {
	private String agentDoctorCode;//代理簽約人code
	private String agentDoctorName;//代理簽約人銘
	private String agentDoctorLevel;//代理簽約人等级
	private Long adminTeamId;//行政团队ID
	private Long adminTeamCode;//行政团队ID
	private Date expensesTime;//缴费时间
	public String getCode() {
@ -418,12 +418,12 @@ public class SignFamily extends IdEntity {
	}
	@Column(name = "admin_team_code")
	public Long getAdminTeamId() {
		return adminTeamId;
	public Long getAdminTeamCode() {
		return adminTeamCode;
	}
	public void setAdminTeamId(Long adminTeamId) {
		this.adminTeamId = adminTeamId;
	public void setAdminTeamCode(Long adminTeamCode) {
		this.adminTeamCode = adminTeamCode;
	}
	@Override

+ 31 - 11
patient-co-statistics/src/main/resources/application.yml

@ -39,44 +39,45 @@ spring:
      max-wait: -1 # Maximum amount of time (in milliseconds) a connection allocation should block before throwing an exception when the pool is exhausted. Use a negative value to block indefinitely.
      min-idle: 1 # Target for the minimum number of idle connections to maintain in the pool. This setting only has an effect if it is positive.
multipart:
  max-file-size: 100MB
  max-request-size: 100MB
---
spring:
  profiles: dev
  profiles: cwd
  datasource:
    url: jdbc:mysql://172.19.103.77/wlyy?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    username: root
    password: 123456
    url: jdbc:mysql://172.19.103.85/wlyy?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    username: luofaqiang
    password: luofaqiang
  redis:
    host: 172.19.103.47 # Redis server host.
    host: 172.19.103.88
fv:
  jdbc:
    driver: com.mysql.jdbc.Driver
    url: jdbc:mysql://172.19.103.77/fv?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    username: root
    password: 123456
    url: jdbc:mysql://172.19.103.85/fv?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    username: luofaqiang
    password: luofaqiang
---
spring:
  profiles: test
  datasource:
    url: jdbc:mysql://172.19.103.85/wlyy?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    url: jdbc:mysql://172.17.110.160/wlyy?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    username: ssgg
    password: ssgg
  redis:
      host: 172.19.103.88 # Redis server host.
      host: 172.19.103.47 # Redis server host.
fv:
  jdbc:
    driver: com.mysql.jdbc.Driver
    url: jdbc:mysql://172.19.103.85/fv?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    url: jdbc:mysql://172.17.110.160/fv?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    username: ssgg
    password: ssgg
---
@ -98,3 +99,22 @@ fv:
    url: jdbc:mysql://11.1.2.24:3306/fv?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    username: wlyy
    password: jkzlehr@123
---
spring:
  profiles: dev
  datasource:
    url: jdbc:mysql://172.19.103.77/wlyy?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    username: root
    password: 123456
  redis:
    host: 172.19.103.47 # Redis server host.
fv:
  jdbc:
    driver: com.mysql.jdbc.Driver
    url: jdbc:mysql://172.19.103.77/fv?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    username: root
    password: 123456

+ 2 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/doctor/DoctorAdminTeamDao.java

@ -73,4 +73,6 @@ public interface DoctorAdminTeamDao extends
    @Query("SELECT t from AdminTeam t WHERE t.leaderCode = :leaderCode")
    AdminTeam findByLeaderCode(@Param("leaderCode") String leaderCode);
    List<AdminTeam> findByOrgCode(String orgCode);
}

+ 3 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/organization/HospitalDao.java

@ -40,4 +40,7 @@ public interface HospitalDao extends PagingAndSortingRepository<Hospital, Long>,
	@Query("select p from Hospital p where p.town = ?1 and p.del='1' and p.level =2 and p.centerSite='00'")
	List<Hospital> findByTownCode(String town);
	@Query("select p from Hospital p where p.city = ?1 and p.del='1' and p.level =2 and p.centerSite='00'")
	List<Hospital> findByCity(String city);
}

+ 1 - 1
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/consult/ConsultTeamService.java

@ -601,7 +601,7 @@ public class ConsultTeamService extends ConsultService {
        // 添加问题咨询日志
        String content = "";
        if(ct.getGuidance() > 0){
        if(ct.getGuidance() != null && ct.getGuidance() > 0){
            JSONObject json = guidanceService.findById(ct.getGuidance());
            if(json == null){
                throw new Exception("guidance not exist");

+ 265 - 40
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsService.java

@ -1,11 +1,13 @@
package com.yihu.wlyy.service.app.statistics;
import com.yihu.wlyy.entity.doctor.team.admin.AdminTeam;
import com.yihu.wlyy.entity.organization.Hospital;
import com.yihu.wlyy.entity.address.Town;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.statistics.PopulationBase;
import com.yihu.wlyy.repository.address.CityDao;
import com.yihu.wlyy.repository.address.TownDao;
import com.yihu.wlyy.repository.doctor.DoctorAdminTeamDao;
import com.yihu.wlyy.repository.doctor.DoctorDao;
import com.yihu.wlyy.repository.organization.HospitalDao;
import com.yihu.wlyy.repository.statistics.PopulationBaseDao;
@ -37,6 +39,8 @@ public class StatisticsService extends BaseService {
    DoctorDao doctorDao;
    @Autowired
    HospitalDao hospitalDao;
    @Autowired
    DoctorAdminTeamDao adminTeamDao;
    /******************************************数据库统计指标***************************************/
@ -64,6 +68,14 @@ public class StatisticsService extends BaseService {
    @Autowired
    private StringRedisTemplate redisTemplate;
    public String getStatisticsTime(){
        String date = redisTemplate.opsForValue().get("quota:date");
        return date;
    }
    /**
     * 缓存人口数据到redis
     *
@ -134,6 +146,8 @@ public class StatisticsService extends BaseService {
    }
    public long getWeiJiaoFei(String endDate, String area, int level) {
        int todayAmount = 0;
        // 查询语句
        String sql = " select " +
                "     ifnull(result,'0') amount" +
@ -158,6 +172,17 @@ public class StatisticsService extends BaseService {
            sql += " and qkdoctor_code = ?";
        }
        // 截止日期包含当天,则从redis查询当天统计数据
        if (endDate.compareTo(new SimpleDateFormat("yyyy-MM-dd").format(new Date())) >= 0) {
            String val = redisTemplate.opsForValue().get("quota:16:" + level + ":" + area);
            if (!StringUtils.isEmpty(val)) {
                JSONObject valJson = new JSONObject(val);
                if (valJson.has("num") && valJson.getInt("num") > 0) {
                    todayAmount = valJson.getInt("num");
                }
            }
        }
        List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, new Object[]{level, endDate, area});
        if (result != null && result.size() > 0) {
@ -488,6 +513,7 @@ public class StatisticsService extends BaseService {
        }
        List<Map<String, Object>> resultList = jdbcTemplate.queryForList(sql, new Object[]{low_level, endDate, area});
        // 结果为空时,自建结果集
        if (resultList == null || resultList.size() < 1) {
            resultList = new ArrayList<>();
@ -498,29 +524,57 @@ public class StatisticsService extends BaseService {
                        Map<String, Object> obj = new HashMap<>();
                        obj.put("code", town.getCode());
                        obj.put("name", town.getName());
                        obj.put("amount", Double.valueOf("0.0"));
                        obj.put("amount", "0");
                        obj.put("rate", Double.valueOf("0.0000"));
                        resultList.add(obj);
                    }
                }
            } else if (low_level.equals("2")) {
                List<Hospital> hospitals = hospitalDao.findByTownCode(area);
                if (hospitals != null) {
                    for (Hospital hos : hospitals) {
                        Map<String, Object> obj = new HashMap<>();
                        obj.put("code", hos.getCode());
                        obj.put("name", hos.getName());
                        obj.put("amount", Double.valueOf("0.0"));
                        obj.put("rate", Double.valueOf("0.0000"));
                List<Town> towns = new ArrayList<>();
                if(level == 4){
                    towns = townDao.findByCityCode(area);
                }else if(level == 3){
                    Town town = townDao.findByCode(area);
                    towns.add(town);
                }
                if (towns != null && towns.size() > 0 ) {
                    for(Town town : towns){
                        List<Hospital> hospitals = hospitalDao.findByTownCode(town.getCode());
                        for (Hospital hos : hospitals) {
                            Map<String, Object> obj = new HashMap<>();
                            obj.put("code", hos.getCode());
                            obj.put("name", hos.getName());
                            obj.put("amount", "0");
                            resultList.add(obj);
                        }
                    }
                }
            } else if (low_level.equals("1")) {
                List<Doctor> doctors = doctorDao.findDoctorByLevelAndHospital(area, 2);
                if (doctors != null) {
                    for (Doctor doc : doctors) {
                        Map<String, Object> obj = new HashMap<>();
                        obj.put("code", doc.getCode());
                        obj.put("name", doc.getName());
                        obj.put("amount", Double.valueOf("0.0"));
                List<Hospital> hospitals = new ArrayList<>();
                if(level == 4){
                    hospitals = hospitalDao.findByCity(area);
                }else if(level == 3){
                    hospitals = hospitalDao.findByTownCode(area);
                }else{
                    Hospital hos = hospitalDao.findByCode(area);
                    if(hos != null){
                        hospitals.add(hos);
                    }
                }
                if (hospitals != null && hospitals.size() > 0 ) {
                    for(Hospital hos : hospitals){
                        List<AdminTeam> teams = adminTeamDao.findByOrgCode(hos.getCode());
                        for (AdminTeam team : teams) {
                            Map<String, Object> obj = new HashMap<>();
                            obj.put("code", String.valueOf(team.getId()));
                            obj.put("name", team.getName());
                            obj.put("amount", "0");
                            resultList.add(obj);
                        }
                    }
                }
            }
@ -541,6 +595,7 @@ public class StatisticsService extends BaseService {
                        }
                    }
                }
                if (!low_level.equals("1")) {
                    String redisNum = redisTemplate.opsForValue().get("people:num:" + map.get("code").toString());
@ -663,30 +718,57 @@ public class StatisticsService extends BaseService {
                        Map<String, Object> obj = new HashMap<>();
                        obj.put("code", town.getCode());
                        obj.put("name", town.getName());
                        obj.put("amount", Double.valueOf("0.0"));
                        obj.put("amount", "0");
                        obj.put("rate", Double.valueOf("0.0000"));
                        resultList.add(obj);
                    }
                }
            } else if (low_level.equals("2")) {
                List<Hospital> hospitals = hospitalDao.findByTownCode(area);
                if (hospitals != null) {
                    for (Hospital hos : hospitals) {
                        Map<String, Object> obj = new HashMap<>();
                        obj.put("code", hos.getCode());
                        obj.put("name", hos.getName());
                        obj.put("amount", Double.valueOf("0.0"));
                        resultList.add(obj);
                List<Town> towns = new ArrayList<>();
                if(level == 4){
                    towns = townDao.findByCityCode(area);
                }else if(level == 3){
                    Town town = townDao.findByCode(area);
                    towns.add(town);
                }
                if (towns != null && towns.size() > 0 ) {
                    for(Town town : towns){
                        List<Hospital> hospitals = hospitalDao.findByTownCode(town.getCode());
                        for (Hospital hos : hospitals) {
                            Map<String, Object> obj = new HashMap<>();
                            obj.put("code", hos.getCode());
                            obj.put("name", hos.getName());
                            obj.put("amount", "0");
                            resultList.add(obj);
                        }
                    }
                }
            } else if (low_level.equals("1")) {
                List<Doctor> doctors = doctorDao.findDoctorByLevelAndHospital(area, 2);
                if (doctors != null) {
                    for (Doctor doc : doctors) {
                        Map<String, Object> obj = new HashMap<>();
                        obj.put("code", doc.getCode());
                        obj.put("name", doc.getName());
                        obj.put("amount", Double.valueOf("0.0"));
                        resultList.add(obj);
                List<Hospital> hospitals = new ArrayList<>();
                if(level == 4){
                    hospitals = hospitalDao.findByCity(area);
                }else if(level == 3){
                    hospitals = hospitalDao.findByTownCode(area);
                }else{
                    Hospital hos = hospitalDao.findByCode(area);
                    if(hos != null){
                        hospitals.add(hos);
                    }
                }
                if (hospitals != null && hospitals.size() > 0 ) {
                    for(Hospital hos : hospitals){
                        List<AdminTeam> teams = adminTeamDao.findByOrgCode(hos.getCode());
                        for (AdminTeam team : teams) {
                            Map<String, Object> obj = new HashMap<>();
                            obj.put("code", String.valueOf(team.getId()));
                            obj.put("name", team.getName());
                            obj.put("amount", "0");
                            resultList.add(obj);
                        }
                    }
                }
            }
@ -1737,6 +1819,14 @@ public class StatisticsService extends BaseService {
        String areaField = "";
        String lowLevelField = "";
        String lowLevelName = "";
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String dateCon = date;
        if (date.compareTo(dateFormat.format(new Date())) == 0) {
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.DATE, -1);
            dateCon = dateFormat.format(calendar.getTime());
        }
        if (level == 4) {
            // 市级别
@ -1793,16 +1883,96 @@ public class StatisticsService extends BaseService {
            sql += " order by amount asc ";
        }
        List<Map<String, Object>> resultList = jdbcTemplate.queryForList(sql, new Object[]{low_level, date, area});
        List<Map<String, Object>> resultList = jdbcTemplate.queryForList(sql, new Object[]{low_level, dateCon, area});
        // 结果为空时,自建结果集
        if (resultList == null || resultList.size() < 1) {
            resultList = new ArrayList<>();
            if (low_level.equals("3")) {
                List<Town> towns = townDao.findByCityCode(area);
                if (towns != null) {
                    for (Town town : towns) {
                        Map<String, Object> obj = new HashMap<>();
                        obj.put("code", town.getCode());
                        obj.put("name", town.getName());
                        obj.put("amount", "0");
                        obj.put("rate", Double.valueOf("0.0000"));
                        resultList.add(obj);
                    }
                }
            } else if (low_level.equals("2")) {
                List<Town> towns = new ArrayList<>();
                if(level == 4){
                    towns = townDao.findByCityCode(area);
                }else if(level == 3){
                    Town town = townDao.findByCode(area);
                    towns.add(town);
                }
                if (towns != null && towns.size() > 0 ) {
                    for(Town town : towns){
                        List<Hospital> hospitals = hospitalDao.findByTownCode(town.getCode());
                        for (Hospital hos : hospitals) {
                            Map<String, Object> obj = new HashMap<>();
                            obj.put("code", hos.getCode());
                            obj.put("name", hos.getName());
                            obj.put("amount", "0");
                            resultList.add(obj);
                        }
                    }
                }
            } else if (low_level.equals("1")) {
                List<Hospital> hospitals = new ArrayList<>();
                if(level == 4){
                    hospitals = hospitalDao.findByCity(area);
                }else if(level == 3){
                    hospitals = hospitalDao.findByTownCode(area);
                }else{
                    Hospital hos = hospitalDao.findByCode(area);
                    if(hos != null){
                        hospitals.add(hos);
                    }
                }
                if (hospitals != null && hospitals.size() > 0 ) {
                    for(Hospital hos : hospitals){
                        List<AdminTeam> teams = adminTeamDao.findByOrgCode(hos.getCode());
                        for (AdminTeam team : teams) {
                            Map<String, Object> obj = new HashMap<>();
                            obj.put("code", String.valueOf(team.getId()));
                            obj.put("name", team.getName());
                            obj.put("amount", "0");
                            resultList.add(obj);
                        }
                    }
                }
            }
        }
        if (resultList != null) {
            DecimalFormat df = new DecimalFormat("0.0000");
            for (Map<String, Object> map : resultList) {
                map.put("amount", map.get("amount") != null ? Long.valueOf(map.get("amount").toString()) : 0);
                map.put("amount", map.get("amount") != null ? Long.valueOf(map.get("amount").toString()) : 0L);
                // 截止日期包含当天,则从redis查询当天统计数据
                if (date.compareTo(dateFormat.format(new Date())) >= 0) {
                    String code = map.get("code") != null ? String.valueOf(map.get("code")) : "";
                    String val = redisTemplate.opsForValue().get("quota:" + index + ":" + low_level + ":" + code);
                    if (!StringUtils.isEmpty(val)) {
                        JSONObject valJson = new JSONObject(val);
                        if (valJson.has("num") && valJson.getInt("num") > 0) {
                            map.put("amount", (long) map.get("amount") + valJson.getInt("num"));
                        }
                    }
                }
                if (!low_level.equals("1")) {
                    String redisNum = redisTemplate.opsForValue().get("people:num:" + map.get("code").toString());
                    if (StringUtils.isEmpty(redisNum)) {
                        PopulationBase peopleNum = peopleNumDao.findByCodeAndYear(map.get("code").toString(), Calendar.getInstance().get(Calendar.YEAR));
                        if (peopleNum != null) {
@ -1905,6 +2075,14 @@ public class StatisticsService extends BaseService {
    public JSONArray dateTotalStatistics(String startDate, String endDate, String area, int level, String index) {
        String areaField = "";
        String sql = "";
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        String dateCon = endDate;
        if (endDate.compareTo(df.format(new Date())) == 0) {
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.DATE, -1);
            dateCon = df.format(calendar.getTime());
        }
        if (level == 4) {
            // 市级别
@ -1920,7 +2098,6 @@ public class StatisticsService extends BaseService {
            areaField = "qkdoctor_code";
        }
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        // 起始日期
        Calendar start = Calendar.getInstance();
        start.setTime(DateUtil.strToDate(startDate, DateUtil.YYYY_MM_DD));
@ -1957,6 +2134,18 @@ public class StatisticsService extends BaseService {
            long amount = 0;
            startStr = df.format(days.get(i).getTime());
            // 当前范围包含当天,则需添加当天的统计数据
            if (startStr.compareTo(df.format(new Date())) == 0) {
                String val = redisTemplate.opsForValue().get("quota:" + index + ":" + level + ":" + area);
                if (!StringUtils.isEmpty(val)) {
                    JSONObject valJson = new JSONObject(val);
                    if (valJson.has("num") && valJson.getInt("num") > 0) {
                        amount = (long) valJson.getInt("num");
                    }
                }
            }
            JSONObject range = new JSONObject();
            range.put("range", startStr);
            range.put("amount", amount);
@ -1972,7 +2161,7 @@ public class StatisticsService extends BaseService {
                "     quato_code = '" + index + "' " +
                "   and level1_type = '" + level + "' and del = '1' " +
                "   and quota_date >= '" + startDate + "' " +
                "   and quota_date <= '" + endDate + "' " +
                "   and quota_date <= '" + dateCon + "' " +
                "   and " + areaField + " = '" + area + "' ";
        List<Map<String, Object>> resultList = jdbcTemplate.queryForList(sql);
@ -2021,6 +2210,14 @@ public class StatisticsService extends BaseService {
    private JSONArray weekTotalStatistics(String startDate, String endDate, String area, int level, String index) throws Exception {
        String areaField = "";
        String sql = "";
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        String dateCon = endDate;
        if (endDate.compareTo(df.format(new Date())) == 0) {
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.DATE, -1);
            dateCon = df.format(calendar.getTime());
        }
        if (level == 4) {
            // 市级别
@ -2036,7 +2233,6 @@ public class StatisticsService extends BaseService {
            areaField = "qkdoctor_code";
        }
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        // 起始日期
        Calendar start = Calendar.getInstance();
        start.setTime(DateUtil.strToDate(startDate, DateUtil.YYYY_MM_DD));
@ -2108,6 +2304,17 @@ public class StatisticsService extends BaseService {
                startStr = df.format(cal.getTime());
            }
            // 当前范围包含当天,则需添加当天的统计数据
            if (startStr.compareTo(df.format(new Date())) <= 0 && endStr.compareTo(df.format(new Date())) >= 0) {
                String val = redisTemplate.opsForValue().get("quota:" + index + ":" + level + ":" + area);
                if (!StringUtils.isEmpty(val)) {
                    JSONObject valJson = new JSONObject(val);
                    if (valJson.has("num") && valJson.getInt("num") > 0) {
                        amount = valJson.getInt("num");
                    }
                }
            }
            JSONObject range = new JSONObject();
            range.put("range", endStr);
@ -2126,7 +2333,7 @@ public class StatisticsService extends BaseService {
                "     quato_code = '" + index + "' " +
                "   and level1_type = '" + level + "' and del = '1' " +
                "   and quota_date >= '" + startDate + "' " +
                "   and quota_date <= '" + endDate + "' " +
                "   and quota_date <= '" + dateCon + "' " +
                "   and " + areaField + " = '" + area + "' ";
        List<Map<String, Object>> resultList = jdbcTemplate.queryForList(sql);
@ -2179,6 +2386,14 @@ public class StatisticsService extends BaseService {
    private JSONArray monthTotalStatistics(String startDate, String endDate, String area, int level, String index) throws Exception {
        String areaField = "";
        String sql = "";
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        String dateCon = endDate;
        if (endDate.compareTo(df.format(new Date())) == 0) {
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.DATE, -1);
            dateCon = df.format(calendar.getTime());
        }
        if (level == 4) {
            // 市级别
@ -2194,7 +2409,6 @@ public class StatisticsService extends BaseService {
            areaField = "qkdoctor_code";
        }
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        // 起始日期
        Calendar start = Calendar.getInstance();
        start.setTime(DateUtil.strToDate(startDate, DateUtil.YYYY_MM_DD));
@ -2263,6 +2477,17 @@ public class StatisticsService extends BaseService {
                startStr = df.format(cal.getTime());
            }
            // 当天数据计算
            if (startStr.compareTo(df.format(new Date())) <= 0 && endStr.compareTo(df.format(new Date())) >= 0) {
                String val = redisTemplate.opsForValue().get("quota:" + index + ":" + level + ":" + area);
                if (!StringUtils.isEmpty(val)) {
                    JSONObject valJson = new JSONObject(val);
                    if (valJson.has("num") && valJson.getInt("num") > 0) {
                        amount = valJson.getInt("num");
                    }
                }
            }
            JSONObject range = new JSONObject();
            range.put("range", endStr);

+ 16 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/StatisticsController.java

@ -25,6 +25,22 @@ public class StatisticsController extends BaseController {
    @Autowired
    StatisticsService statisticsService;
    /**
     * 获取统计时间
     *
     * @return
     */
    @RequestMapping(value = "/time")
    @ResponseBody
    public String getStatisticsTime(){
        try{
            return write(200,"查询成功","data",statisticsService.getStatisticsTime());
        }catch (Exception e){
            e.printStackTrace();
            return error(-1,"查询失败");
        }
    }
    /**
     * 指标按间隔统计
     *