Explorar el Código

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

hace 8 años
padre
commit
e0444635a8

+ 324 - 282
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/etl/dataFilter/SignDataFilter.java

@ -17,6 +17,7 @@ import com.yihu.wlyy.statistics.util.DateUtil;
import com.yihu.wlyy.statistics.util.IdCardUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
@ -30,15 +31,15 @@ import java.util.*;
@Scope("prototype")
public class SignDataFilter {
    public static String level2Sex="1";//性别
    public static String level2Age="2";//年龄
    public static String level2Group="3";//分组
    public static String level2Expenses="4";//费用
    public static String level2Health="5";//健康服务分布
    public static String level2Age2="6";//年龄
    public static String level2AgeDisease="7";//年龄疾病
    public static String level2Sex = "1";//性别
    public static String level2Age = "2";//年龄
    public static String level2Group = "3";//分组
    public static String level2Expenses = "4";//费用
    public static String level2Health = "5";//健康服务分布
    public static String level2Age2 = "6";//年龄
    public static String level2AgeDisease = "7";//年龄疾病
    public static String level3Disease="1";//疾病分组
    public static String level3Disease = "1";//疾病分组
    @Autowired
    private HospitalDao hospitalDao;
@ -48,62 +49,73 @@ public class SignDataFilter {
    private DoctorAdminTeamDao doctorAdminTeamDao;
    @Autowired
    private CachePool cachePool;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    List<ErrorModel> errorModels = new ArrayList<ErrorModel>();
    private int count = 0;
    List<ErrorModel> errorModels=new ArrayList<ErrorModel>();
    private int count=0;
    /**
     * 过滤数据
     *
     * @param signFamilies 签约列表
     * @return
     */
    public FilterModel filter(List<SignFamily> signFamilies,String sql){
        return filterCommon(signFamilies,null,null,sql,null);
    public FilterModel filter(List<SignFamily> signFamilies, String sql) {
        return filterCommon(signFamilies, null, null, sql, null);
    }
    /**
     * 过滤数据
     *
     * @param signFamilies 签约列表
     * @param filterDate 不传默认是但在的时间
     * @param filterDate   不传默认是但在的时间
     * @return
     */
    public FilterModel filter(List<SignFamily> signFamilies,String sql,String filterDate){
        return filterCommon(signFamilies,null,null,sql,filterDate);
    public FilterModel filter(List<SignFamily> signFamilies, String sql, String filterDate) {
        return filterCommon(signFamilies, null, null, sql, filterDate);
    }
    /**
     * 过滤数据
     *
     * @param signFamilies 签约列表
     * @param level2Key 二级维度的key
     * @param filterDate 过滤的是哪天的数据 yyyy-MM-dd
     * @param level2Key    二级维度的key
     * @param filterDate   过滤的是哪天的数据 yyyy-MM-dd
     * @return
     */
    public FilterModel filter(List<SignFamily> signFamilies,String level2Key,String sql,String filterDate){
        return filterCommon(signFamilies,level2Key,null,sql,filterDate);
    public FilterModel filter(List<SignFamily> signFamilies, String level2Key, String sql, String filterDate) {
        return filterCommon(signFamilies, level2Key, null, sql, filterDate);
    }
    /**
     * 过滤数据
     *
     * @param signFamilies 签约列表
     * @param level2Key 二级维度的key
     * @param level3Key 三级维度的key
     * @param filterDate 过滤的是哪天的数据 yyyy-MM-dd
     * @param level2Key    二级维度的key
     * @param level3Key    三级维度的key
     * @param filterDate   过滤的是哪天的数据 yyyy-MM-dd
     * @return
     */
    public FilterModel filter(List<SignFamily> signFamilies,String level2Key,String level3Key,String sql,String filterDate){
        return filterCommon(signFamilies,level2Key,level3Key,sql,filterDate);
    public FilterModel filter(List<SignFamily> signFamilies, String level2Key, String level3Key, String sql, String filterDate) {
        return filterCommon(signFamilies, level2Key, level3Key, sql, filterDate);
    }
    /**
     * 公共的抽取方法
     *  @param signFamilies 签约列表
     * @param level2Key 二级维度的key
     * @param level3Key 三级维度的key
     * @param filterDate 过滤的是哪天的数据 yyyy-MM-dd
     *
     * @param signFamilies 签约列表
     * @param level2Key    二级维度的key
     * @param level3Key    三级维度的key
     * @param filterDate   过滤的是哪天的数据 yyyy-MM-dd
     * @return
     */
    private FilterModel filterCommon(List<SignFamily> signFamilies ,String level2Key,String level3Key,String sql,String filterDate) {
    private FilterModel filterCommon(List<SignFamily> signFamilies, String level2Key, String level3Key, String sql, String filterDate) {
        //查找出系统全部的全科医生
        List<AdminTeam> adminTeams=doctorAdminTeamDao.findAllTeam();
        List<AdminTeam> adminTeams = doctorAdminTeamDao.findAllTeam();
        Map<String, AdminTeam> adminTeamMap = new HashMap<String, AdminTeam>();
        for (AdminTeam adminTeam : adminTeams) {
            adminTeamMap.put(adminTeam.getId()+"", adminTeam);
            adminTeamMap.put(adminTeam.getId() + "", adminTeam);
        }
        //查找出系统全部的机构
        List<Hospital> hospitals = hospitalDao.findHospital2();
@ -118,100 +130,100 @@ public class SignDataFilter {
            townsMap.put(town.getCode(), town);
        }
        List<ETLModel> etlModelList=new ArrayList<>();//返回的ETL數據
        List<ETLModel> etlModelList = new ArrayList<>();//返回的ETL數據
        Long cityCount = new Long(0L); //统计到市的数目
        Long townCount = new Long(0L); //统计到所有区的数目
        Long orgCount =new Long(0L);//统计到所有机构的数目
        Long orgCount = new Long(0L);//统计到所有机构的数目
        Long adminCount = new Long(0L);//统计到所有团队的数目
        Long errorCount=new Long(0L);//脏数据
        Boolean isAll=true;//是否统计失败
        LogModel logModel=new LogModel();
        errorModels=new ArrayList<ErrorModel>();
        for (int i=0;i<signFamilies.size();i++){
            SignFamily signFamily=signFamilies.get(i);
        Long errorCount = new Long(0L);//脏数据
        Boolean isAll = true;//是否统计失败
        LogModel logModel = new LogModel();
        errorModels = new ArrayList<ErrorModel>();
        for (int i = 0; i < signFamilies.size(); i++) {
            SignFamily signFamily = signFamilies.get(i);
            String orgCode = signFamily.getHospital();
            if(StringUtils.isEmpty(orgCode)) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_hospital_null));
                isAll=false;
            if (StringUtils.isEmpty(orgCode)) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_hospital_null));
                isAll = false;
                errorCount++;
                continue;
            }
            if(orgCode.length()!=10) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_hospital_isTest));
                isAll=false;
            if (orgCode.length() != 10) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_hospital_isTest));
                isAll = false;
                errorCount++;
                continue;
            }
            String orgCodeTemp="";
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
            String orgCodeTemp = "";
            if (!"00".equals(orgCode.substring(orgCode.length() - 2, orgCode.length()))) {
                //站
                orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
            }else{
                orgCodeTemp = orgCode.substring(0, orgCode.length() - 2) + "00";
            } else {
                //社区
                orgCodeTemp=orgCode;
                orgCodeTemp = orgCode;
            }
            //判断社区有没有值
            Hospital hospital=hospitalsMap.get(orgCodeTemp);
            if(hospital == null) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_hospital_noExist));
                isAll=false;
            Hospital hospital = hospitalsMap.get(orgCodeTemp);
            if (hospital == null) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_hospital_noExist));
                isAll = false;
                errorCount++;
                continue;
            }
            String town =hospital.getTown();
            if(StringUtils.isEmpty(town)) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_town_null));
                isAll=false;
            String town = hospital.getTown();
            if (StringUtils.isEmpty(town)) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_town_null));
                isAll = false;
                errorCount++;
                continue;
            }
            Town townObj =townsMap.get(town);
            if(townObj==null) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_town_noExist));
                isAll=false;
            Town townObj = townsMap.get(town);
            if (townObj == null) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_town_noExist));
                isAll = false;
                errorCount++;
                continue;
            }
           Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_adminTeam_null));
                isAll=false;
            Long adminId = signFamily.getAdminTeamCode();
            if (adminId == null || adminId <= 0) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_adminTeam_null));
                isAll = false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(adminId+"");
            if(adminTeam == null) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_adminTeam_noExist));
                isAll=false;
            AdminTeam adminTeam = adminTeamMap.get(adminId + "");
            if (adminTeam == null) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_adminTeam_noExist));
                isAll = false;
                errorCount++;
                continue;
            }
            String idCard=signFamily.getIdcard();
            if(idCard == null||((idCard.length()!=18&&idCard.length()!=15))) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_idcard_error));
                isAll=false;
            String idCard = signFamily.getIdcard();
            if (idCard == null || ((idCard.length() != 18 && idCard.length() != 15))) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_idcard_error));
                isAll = false;
                errorCount++;
                continue;
            }
            //设置二级维度的Key
            String returnLevel2Key=getLevel2Key(level2Key,signFamily);
            String returnLevel3Key=getLevel3Key(level3Key,signFamily);
            if(StringUtils.isEmpty(returnLevel2Key)){
            String returnLevel2Key = getLevel2Key(level2Key, signFamily);
            String returnLevel3Key = getLevel3Key(level3Key, signFamily);
            if (StringUtils.isEmpty(returnLevel2Key)) {
                //没有二级维度
                ETLModel etlModel=new ETLModel();
                etlModel.setAdminTeam(adminTeam.getId()+"");
                ETLModel etlModel = new ETLModel();
                etlModel.setAdminTeam(adminTeam.getId() + "");
                etlModel.setHospital(orgCodeTemp);
                etlModel.setTown(hospital.getTown());
                etlModel.setCity(Constant.city);
                etlModelList.add(etlModel);
            }else{
                String[] level2Keys=returnLevel2Key.split(",");
                for(int j=0;j<level2Keys.length;j++){
                    ETLModel etlModel=new ETLModel();
            } else {
                String[] level2Keys = returnLevel2Key.split(",");
                for (int j = 0; j < level2Keys.length; j++) {
                    ETLModel etlModel = new ETLModel();
                    etlModel.setLevel2Key(level2Keys[j]);
                    etlModel.setLevel3Key(returnLevel3Key);
                    etlModel.setAdminTeam(adminTeam.getId()+"");
                    etlModel.setAdminTeam(adminTeam.getId() + "");
                    etlModel.setHospital(orgCodeTemp);
                    etlModel.setTown(hospital.getTown());
                    etlModel.setCity(Constant.city);
@ -233,15 +245,15 @@ public class SignDataFilter {
        logModel.setModelList(errorModels);
        logModel.setErrorNum(errorCount.intValue());
        //String message=saveContent(signFamilies.size(),adminCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount,sql,filterDate);
        return FilterModel.getFiltrerMode(logModel,etlModelList,isAll);
        return FilterModel.getFiltrerMode(logModel, etlModelList, isAll);
    }
    private String getLevel3Key(String level3Key, SignFamily signFamily) {
        String returnLevel3Key=null;
        if(!StringUtils.isEmpty(level3Key)){
            switch (level3Key){
        String returnLevel3Key = null;
        if (!StringUtils.isEmpty(level3Key)) {
            switch (level3Key) {
                //疾病
                case "1" :{
                case "1": {
                    returnLevel3Key = getDisease(signFamily);
                    break;
                }
@ -252,6 +264,7 @@ public class SignDataFilter {
    /**
     * 根据签约表的患者code从缓存得到疾病标签
     *
     * @param signFamily
     * @return
     */
@ -259,229 +272,213 @@ public class SignDataFilter {
        boolean hasGXY = false;//有高血压
        boolean hasTNB = false;//有糖尿病
        //如果是慢病的 统计高血压的 糖尿病  1高血压,2糖尿病  3 糖尿病和高血压 4健康人群数
        String diseaseType="4";
        String diseaseType = "4";
        //得到患者的疾病标签
        List<String> diseaseList=  cachePool.getDiseaseGroup(signFamily.getPatient());
        if(diseaseList!=null&&diseaseList.size()>0){
            for (String diseaseCode:diseaseList){
                if("1".equals(diseaseCode)){//判斷是否有高血壓
                    diseaseType="1";
                    hasGXY=true;
        List<String> diseaseList = cachePool.getDiseaseGroup(signFamily.getPatient());
        if (diseaseList != null && diseaseList.size() > 0) {
            for (String diseaseCode : diseaseList) {
                if ("1".equals(diseaseCode)) {//判斷是否有高血壓
                    diseaseType = "1";
                    hasGXY = true;
                }
                if("2".equals(diseaseCode)){//判斷是否有糖尿病
                    diseaseType="2";
                    hasTNB=true;
                if ("2".equals(diseaseCode)) {//判斷是否有糖尿病
                    diseaseType = "2";
                    hasTNB = true;
                }
            }
        }
        if (hasTNB&&hasGXY){
            diseaseType="3";
        if (hasTNB && hasGXY) {
            diseaseType = "3";
        }
        return diseaseType;
    }
    /**
     * 得到二级维度的key
     *
     * @param level2Key
     * @return
     */
    private String getLevel2Key(String level2Key,SignFamily signFamily) {
        String returnLevel2Key=null;
        if(!StringUtils.isEmpty(level2Key)){
             switch (level2Key){
                 //性别
                 case "1" :{
                     returnLevel2Key = getSex(signFamily);
                     return returnLevel2Key;
                 }
                 //年龄
                 case "2" :{
                     returnLevel2Key = getAge(signFamily);
                     return returnLevel2Key;
                 }
                 //分组
                 case "3" :{
                     //得到患者的分组标签
                     returnLevel2Key = getGroup(signFamily);
                     return returnLevel2Key;
                 }
                 //费用
                 case "4" :{
                     returnLevel2Key = getExpenses(signFamily);
                     return returnLevel2Key;
                 }
                 //健康服务分布
                 case "5" :{
                     returnLevel2Key = getHealth(signFamily);
                     return returnLevel2Key;
                 }
                 //年龄
                 case "6" :{
                     returnLevel2Key = getAge2(signFamily);
                     return returnLevel2Key;
                 }
                 //年龄疾病
                 case "7" :{
                     returnLevel2Key = getAgeDisease(signFamily);
                     return returnLevel2Key;
                 }
             }
    private String getLevel2Key(String level2Key, SignFamily signFamily) {
        String returnLevel2Key = null;
        if (!StringUtils.isEmpty(level2Key)) {
            switch (level2Key) {
                //性别
                case "1": {
                    returnLevel2Key = getSex(signFamily);
                    return returnLevel2Key;
                }
                //年龄
                case "2": {
                    returnLevel2Key = getAge(signFamily);
                    return returnLevel2Key;
                }
                //分组
                case "3": {
                    //得到患者的分组标签
                    returnLevel2Key = getGroup(signFamily);
                    return returnLevel2Key;
                }
                //费用
                case "4": {
                    returnLevel2Key = getExpenses(signFamily);
                    return returnLevel2Key;
                }
                //健康服务分布
                case "5": {
                    returnLevel2Key = getHealth(signFamily);
                    return returnLevel2Key;
                }
                //年龄
                case "6": {
                    returnLevel2Key = getAge2(signFamily);
                    return returnLevel2Key;
                }
                //年龄疾病
                case "7": {
                    returnLevel2Key = getAgeDisease(signFamily);
                    return returnLevel2Key;
                }
            }
        }
        return returnLevel2Key;
    }
    private String getAgeDisease(SignFamily signFamily) {
        //得到患者年龄
        StringBuffer returnLevel2KeyBuffer=new StringBuffer("0");
        int age= IdCardUtil.getAgeForIdcard(signFamily.getIdcard());
        if(0==age){
            errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_idcard_error_age));
        StringBuffer returnLevel2KeyBuffer = new StringBuffer("0");
        int age = IdCardUtil.getAgeForIdcard(signFamily.getIdcard());
        if (0 == age) {
            errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_idcard_error_age));
        }
        if(age>=65){
        if (age >= 65) {
            returnLevel2KeyBuffer.append(",3");
        }
        //疾病标签
        String returnLevel2KeyTemp = "";
        boolean hasGXY=false;//有高血压
        boolean hasTNB=false;//糖尿病
        boolean hasGXY = false;//有高血压
        boolean hasTNB = false;//糖尿病
        //得到患者的疾病标签
        List<String> diseaseList=  cachePool.getDiseaseGroup(signFamily.getPatient());
        if(diseaseList!=null&&diseaseList.size()>0){
            for (String diseaseCode:diseaseList){
                if("1".equals(diseaseCode)){//判斷是否有高血壓
                    returnLevel2KeyTemp="1";
                    hasGXY=true;
        List<String> diseaseList = cachePool.getDiseaseGroup(signFamily.getPatient());
        if (diseaseList != null && diseaseList.size() > 0) {
            for (String diseaseCode : diseaseList) {
                if ("1".equals(diseaseCode)) {//判斷是否有高血壓
                    returnLevel2KeyTemp = "1";
                    hasGXY = true;
                }
                if("2".equals(diseaseCode)){//判斷是否有糖尿病
                    returnLevel2KeyTemp="2";
                    hasTNB=true;
                if ("2".equals(diseaseCode)) {//判斷是否有糖尿病
                    returnLevel2KeyTemp = "2";
                    hasTNB = true;
                }
            }
        }
        if (hasTNB&&hasGXY){
            returnLevel2KeyTemp="1,2";
        if (hasTNB && hasGXY) {
            returnLevel2KeyTemp = "1,2";
        }
        if(!StringUtils.isEmpty(returnLevel2KeyTemp)){
            returnLevel2KeyBuffer.append(","+returnLevel2KeyTemp);
        if (!StringUtils.isEmpty(returnLevel2KeyTemp)) {
            returnLevel2KeyBuffer.append("," + returnLevel2KeyTemp);
        }
        return returnLevel2KeyBuffer.toString();
    }
    private String getAge2(SignFamily signFamily) {
        String returnLevel2Key;
        int age= IdCardUtil.getAgeForIdcard(signFamily.getIdcard());
        if(0==age){
            errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_idcard_error_age));
        int age = IdCardUtil.getAgeForIdcard(signFamily.getIdcard());
        if (0 == age) {
            errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_idcard_error_age));
        }
        returnLevel2Key=getAgeCode2(age);
        returnLevel2Key = getAgeCode2(age);
        return returnLevel2Key;
    }
    private String getHealth(SignFamily signFamily) {
        String returnLevel2Key="0";//查找每个患者的健康分布标签
        try{
            returnLevel2Key=cachePool.getHealthGroup(signFamily.getPatient());
        }catch (Exception e){
        String returnLevel2Key = "0";//查找每个患者的健康分布标签
        try {
            returnLevel2Key = cachePool.getHealthGroup(signFamily.getPatient());
        } catch (Exception e) {
            e.printStackTrace();
            return returnLevel2Key;
        }
        if(StringUtils.isEmpty(returnLevel2Key)){
        if (StringUtils.isEmpty(returnLevel2Key)) {
            return "0";
        }
        return returnLevel2Key;
    }
    private String getExpenses(SignFamily signFamily) {
        if("1".equals(signFamily.getExpensesStatus())){
        if ("1".equals(signFamily.getExpensesStatus())) {
            count++;
        }
        String returnLevel2Key= signFamily.getExpensesStatus();
        if(StringUtils.isEmpty(returnLevel2Key)){
            returnLevel2Key="0";
        String returnLevel2Key = signFamily.getExpensesStatus();
        if (StringUtils.isEmpty(returnLevel2Key)) {
            returnLevel2Key = "0";
        }
        return returnLevel2Key;
    }
    private String getGroup(SignFamily signFamily) {
        String returnLevel2Key="";
        String group=cachePool.getPatientGroup(signFamily.getPatient());
        if(StringUtils.isEmpty(group)){
            group="0";
        String returnLevel2Key = "";
        String group = cachePool.getPatientGroup(signFamily.getPatient());
        if (StringUtils.isEmpty(group)) {
            group = "0";
        }
        StringBuffer returnLevel2KeyBuffer=new StringBuffer(group);
        StringBuffer returnLevel2KeyBuffer = new StringBuffer(group);
        //如果是慢病组  区分65岁以上还是以下   65岁以上的慢病患者是7  65岁上下是2
        if("2".equals(returnLevel2KeyBuffer.toString())){
             Integer age=IdCardUtil.getAgeForIdcard(signFamily.getIdcard());
            if(age>65){
                returnLevel2KeyBuffer=new StringBuffer("7");
        if ("2".equals(returnLevel2KeyBuffer.toString())) {
            Integer age = IdCardUtil.getAgeForIdcard(signFamily.getIdcard());
            if (age > 65) {
                returnLevel2KeyBuffer = new StringBuffer("7");
            }
        }
        if("2".equals(returnLevel2KeyBuffer.toString())||"7".equals(returnLevel2KeyBuffer.toString())){
            String returnLevel2KeyTemp="-1";
            boolean hasGXY=false;//有高血压
            boolean hasTNB=false;//糖尿病
        if ("2".equals(returnLevel2KeyBuffer.toString()) || "7".equals(returnLevel2KeyBuffer.toString())) {
            String returnLevel2KeyTemp = "-1";
            boolean hasGXY = false;//有高血压
            boolean hasTNB = false;//糖尿病
            //得到患者的疾病标签
            List<String> diseaseList=  cachePool.getDiseaseGroup(signFamily.getPatient());
            if(diseaseList!=null&&diseaseList.size()>0){
                for (String diseaseCode:diseaseList){
                    if("1".equals(diseaseCode)){//判斷是否有高血壓
                        returnLevel2KeyTemp="4";
                        hasGXY=true;
            List<String> diseaseList = cachePool.getDiseaseGroup(signFamily.getPatient());
            if (diseaseList != null && diseaseList.size() > 0) {
                for (String diseaseCode : diseaseList) {
                    if ("1".equals(diseaseCode)) {//判斷是否有高血壓
                        returnLevel2KeyTemp = "4";
                        hasGXY = true;
                    }
                    if("2".equals(diseaseCode)){//判斷是否有糖尿病
                        returnLevel2KeyTemp="5";
                        hasTNB=true;
                    if ("2".equals(diseaseCode)) {//判斷是否有糖尿病
                        returnLevel2KeyTemp = "5";
                        hasTNB = true;
                    }
                }
            }
            if (hasTNB&&hasGXY){
                returnLevel2KeyTemp="6";
            if (hasTNB && hasGXY) {
                returnLevel2KeyTemp = "6";
            }
            returnLevel2KeyBuffer.append(","+returnLevel2KeyTemp);
            returnLevel2KeyBuffer.append("," + returnLevel2KeyTemp);
        }
        returnLevel2Key=returnLevel2KeyBuffer.toString();
        returnLevel2Key = returnLevel2KeyBuffer.toString();
        return returnLevel2Key;
    }
    private String getAge(SignFamily signFamily) {
        String returnLevel2Key;
        int age= IdCardUtil.getAgeForIdcard(signFamily.getIdcard());
        if(0==age){
            errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_idcard_error_age));
        int age = IdCardUtil.getAgeForIdcard(signFamily.getIdcard());
        if (0 == age) {
            errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_idcard_error_age));
        }
        returnLevel2Key=getAgeCode(age);
        returnLevel2Key = getAgeCode(age);
        return returnLevel2Key;
    }
    private String getSex(SignFamily signFamily) {
        String returnLevel2Key;
        try{
            returnLevel2Key= IdCardUtil.getSexForIdcard(signFamily.getIdcard());
        }catch (Exception e){
        try {
            returnLevel2Key = IdCardUtil.getSexForIdcard(signFamily.getIdcard());
        } catch (Exception e) {
            //如果解析失败 默认是男 并且纪录解析失败的签约code
            errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_idcard_error_sex));
            errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_idcard_error_sex));
            return Constant.level_sex_2;
        }
        return returnLevel2Key;
    }
    private String saveContent(Integer size, Long qkCount, Long orgCount, Long townCount, Long cityCount, boolean isAll, StringBuffer errorContent,Long errorCount,String sql,String filterDate) {
        if(StringUtils.isEmpty(filterDate)){
            filterDate= DateUtil.dateToStrLong(new Date());
        }
        StringBuffer string=new StringBuffer("统计"+filterDate+" 的数据完成 ,数据库查询到数目:"+size);
        string.append(",sql语句:"+sql);
        string.append(",过滤的脏数据数目:"+errorCount);
        string.append(",统计到市的数据总数:"+cityCount);
        string.append(",统计到区的数据总数:"+townCount);
        string.append(",统计到机构的数据总数:"+orgCount);
        string.append(",统计到团队的数据总数:"+qkCount);
        string.append(",是否统计成功:"+isAll);
        if(!isAll){
            string.append(",失败原因:"+errorContent);
        }
        return string.toString();
    }
    /**
     * 根据年龄得到对应的code
     *
@ -489,21 +486,22 @@ public class SignDataFilter {
     * @return
     */
    public String getAgeCode(Integer age) {
        if (age < 7) {
        if (age <= 6) {
            return Constant.level_age_1;
        } else if (age >= 7 && age < 18) {
        } else if (age >= 7 && age <= 18) {
            return Constant.level_age_2;
        } else if (age >= 18 && age < 30) {
        } else if (age >= 19 && age <= 30) {
            return Constant.level_age_3;
        } else if (age >= 30 && age < 50) {
        } else if (age >= 31 && age <= 50) {
            return Constant.level_age_4;
        } else if (age >= 50 && age < 65) {
        } else if (age >= 51 && age <= 65) {
            return Constant.level_age_5;
        } else {
            return Constant.level_age_6;
        }
    }
    public FilterModel filterNoTeam(List<SignFamily> signFamilies ,String level2Key,String level3Key, String sql, String filterDate) {
    public FilterModel filterNoTeam(List<SignFamily> signFamilies, String level2Key, String level3Key, String sql, String filterDate) {
        //查找出系统全部的机构
        List<Hospital> hospitals = hospitalDao.findHospital2();
@ -511,6 +509,11 @@ public class SignDataFilter {
        for (Hospital hospital : hospitals) {
            hospitalsMap.put(hospital.getCode(), hospital);
        }
        List<AdminTeam> adminTeams = doctorAdminTeamDao.findAllTeam();
        Map<String, AdminTeam> adminTeamMap = new HashMap<String, AdminTeam>();
        for (AdminTeam adminTeam : adminTeams) {
            adminTeamMap.put(adminTeam.getId() + "", adminTeam);
        }
        //查找出厦门市全部的区
        List<Town> towns = townDao.findByCityCode(Constant.city);
        Map<String, Town> townsMap = new HashMap<String, Town>();
@ -518,89 +521,127 @@ public class SignDataFilter {
            townsMap.put(town.getCode(), town);
        }
        List<ETLModel> etlModelList=new ArrayList<>();//返回的ETL數據
        List<ETLModel> etlModelList = new ArrayList<>();//返回的ETL數據
        Long cityCount = new Long(0L); //统计到市的数目
        Long townCount = new Long(0L); //统计到所有区的数目
        Long orgCount =new Long(0L);//统计到所有机构的数目
        Long orgCount = new Long(0L);//统计到所有机构的数目
        Long adminCount = new Long(0L);//统计到所有团队的数目
        Long errorCount=new Long(0L);//脏数据
        Boolean isAll=true;//是否统计失败
        LogModel logModel=new LogModel();
        errorModels=new ArrayList<ErrorModel>();
        for (int i=0;i<signFamilies.size();i++){
            SignFamily signFamily=signFamilies.get(i);
        Long errorCount = new Long(0L);//脏数据
        Boolean isAll = true;//是否统计失败
        LogModel logModel = new LogModel();
        errorModels = new ArrayList<ErrorModel>();
        for (int i = 0; i < signFamilies.size(); i++) {
            SignFamily signFamily = signFamilies.get(i);
            String orgCode = signFamily.getHospital();
            if(StringUtils.isEmpty(orgCode)) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_hospital_null));
                isAll=false;
            if (StringUtils.isEmpty(orgCode)) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_hospital_null));
                isAll = false;
                errorCount++;
                continue;
            }
            if(orgCode.length()!=10) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_hospital_isTest));
                isAll=false;
            if (orgCode.length() != 10) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_hospital_isTest));
                isAll = false;
                errorCount++;
                continue;
            }
            String orgCodeTemp="";
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
            String orgCodeTemp = "";
            if (!"00".equals(orgCode.substring(orgCode.length() - 2, orgCode.length()))) {
                //站
                orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
            }else{
                orgCodeTemp = orgCode.substring(0, orgCode.length() - 2) + "00";
            } else {
                //社区
                orgCodeTemp=orgCode;
                orgCodeTemp = orgCode;
            }
            //判断社区有没有值
            Hospital hospital=hospitalsMap.get(orgCodeTemp);
            if(hospital == null) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_hospital_noExist));
                isAll=false;
            Hospital hospital = hospitalsMap.get(orgCodeTemp);
            if (hospital == null) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_hospital_noExist));
                isAll = false;
                errorCount++;
                continue;
            }
            String town =hospital.getTown();
            if(StringUtils.isEmpty(town)) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_town_null));
                isAll=false;
            String town = hospital.getTown();
            if (StringUtils.isEmpty(town)) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_town_null));
                isAll = false;
                errorCount++;
                continue;
            }
            Town townObj =townsMap.get(town);
            if(townObj==null) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_town_noExist));
                isAll=false;
            Town townObj = townsMap.get(town);
            if (townObj == null) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_town_noExist));
                isAll = false;
                errorCount++;
                continue;
            }
            String idCard=signFamily.getIdcard();
            if(idCard == null||((idCard.length()!=18&&idCard.length()!=15))) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_idcard_error));
                isAll=false;
            String idCard = signFamily.getIdcard();
            if (idCard == null || ((idCard.length() != 18 && idCard.length() != 15))) {
                errorModels.add(ErrorModel.newEM(signFamily.getCode(), ErrorModel.sign_idcard_error));
                isAll = false;
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamCode();
            //医生团队列表
            List<Long> adminTeamList=new ArrayList<>();
            if(adminId == null||adminId<=0) {
                //如果团队是空 把数目给待签约的医生 可能是健康管理师也可以能是全科
                if(!StringUtils.isEmpty(signFamily.getDoctor())) {
                    //找出全科医生所在的团队
                    String sqlD="select DISTINCT team_id from wlyy_admin_team_member w where w.doctor_code='"+signFamily.getDoctor()+"'";
                    adminTeamList= jdbcTemplate.queryForList(sqlD,Long.class);
                    if(adminTeamList==null&&adminTeamList.size()==0){
                        errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_adminTeam_null));
                        isAll=false;
                        errorCount++;
                        continue;
                    }
                }else if(!StringUtils.isEmpty(signFamily.getDoctorHealth())){
                    //找出健康管理师所在的团队
                    String sqlD="select DISTINCT team_id from wlyy_admin_team_member w where w.doctor_code='"+signFamily.getDoctorHealth()+"'  ";
                    adminTeamList= jdbcTemplate.queryForList(sqlD,Long.class);
                    if(adminTeamList==null&&adminTeamList.size()==0){
                        errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_adminTeam_null));
                        isAll=false;
                        errorCount++;
                        continue;
                    }
                }else{
                    errorModels.add(ErrorModel.newEM(signFamily.getCode(),ErrorModel.sign_adminTeam_null));
                    isAll=false;
                    errorCount++;
                    continue;
                }
            }
            //设置二级维度的Key
            String returnLevel2Key=getLevel2Key(level2Key,signFamily);
            String returnLevel3Key=getLevel3Key(level3Key,signFamily);
            if(StringUtils.isEmpty(returnLevel2Key)){
            String returnLevel2Key = getLevel2Key(level2Key, signFamily);
            String returnLevel3Key = getLevel3Key(level3Key, signFamily);
            if (StringUtils.isEmpty(returnLevel2Key)) {
                //没有二级维度
                ETLModel etlModel=new ETLModel();
                etlModel.setHospital(orgCodeTemp);
                etlModel.setTown(hospital.getTown());
                etlModel.setCity(Constant.city);
                etlModelList.add(etlModel);
            }else{
                String[] level2Keys=returnLevel2Key.split(",");
                for(int j=0;j<level2Keys.length;j++){
                    ETLModel etlModel=new ETLModel();
                    etlModel.setLevel2Key(level2Keys[j]);
                    etlModel.setLevel3Key(returnLevel3Key);
                for(int teamNum=0;teamNum<adminTeamList.size();teamNum++){
                    ETLModel etlModel = new ETLModel();
                    etlModel.setHospital(orgCodeTemp);
                    etlModel.setTown(hospital.getTown());
                    etlModel.setCity(Constant.city);
                    etlModel.setAdminTeam(adminTeamList.get(teamNum)+"");
                    etlModelList.add(etlModel);
                }
            } else {
                String[] level2Keys = returnLevel2Key.split(",");
                for (int j = 0; j < level2Keys.length; j++) {
                    for(int teamNum=0;teamNum<adminTeamList.size();teamNum++) {
                        ETLModel etlModel = new ETLModel();
                        etlModel.setLevel2Key(level2Keys[j]);
                        etlModel.setLevel3Key(returnLevel3Key);
                        etlModel.setHospital(orgCodeTemp);
                        etlModel.setTown(hospital.getTown());
                        etlModel.setCity(Constant.city);
                        etlModel.setAdminTeam(teamNum + "");
                        etlModelList.add(etlModel);
                    }
                }
            }
            //统计数目+1
            cityCount++;
@ -617,8 +658,9 @@ public class SignDataFilter {
        logModel.setModelList(errorModels);
        logModel.setErrorNum(errorCount.intValue());
        //String message=saveContent(signFamilies.size(),adminCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount,sql,filterDate);
        return FilterModel.getFiltrerMode(logModel,etlModelList,isAll);
        return FilterModel.getFiltrerMode(logModel, etlModelList, isAll);
    }
    /**
     * 根据年龄得到对应的code
     *

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

@ -312,6 +312,7 @@ public class CurrentDayAllQuotaJob implements Job {
                    " WHERE " +
                    "  pd.user_idcard = sf.idcard " +
                    " AND sf.type = 2 " +
                    " AND pd.del=0 " +
                    " AND sf. STATUS IN (1, 2) " +
                    " AND pd.czrq <' "+tomorrow+"' ";
            //抽取數據
@ -683,12 +684,12 @@ public class CurrentDayAllQuotaJob implements Job {
    private void computequota_9() {
        String quotaId="9";
        //找出今天的待签约信息
        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< '"+tomorrow+"'  ";
        String sql=" select id,code,idcard,hospital,admin_team_code,doctor,doctor_health from wlyy_sign_family a where   a.type =2  and a.status=0 and  a.patient_apply_date< '"+tomorrow+"'  ";
        try{
            //抽取數據
            List<SignFamily> signFamilies= SpringUtil.getBean(DBExtract.class).extract(SignFamily.class,sql);
            //清洗數據
            FilterModel etlModels= SpringUtil.getBean(SignDataFilter.class).filter(signFamilies,sql,null);
            FilterModel etlModels= SpringUtil.getBean(SignDataFilter.class).filterNoTeam(signFamilies,null,null,sql,"now");
            //统计数据
            List<Map<String, List<ETLModel>>>  returnDatas= SpringUtil.getBean(Level1Role.class).elt(etlModels.getEtlModelList());
            //保存数据

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

@ -96,6 +96,7 @@ public class PatientDeviceJob implements Job {
                    " WHERE " +
                    "  pd.user_idcard = sf.idcard " +
                    " AND sf.type = 2 " +
                    " AND pd.del=0 " +
                    " AND sf. STATUS IN (1, 2) " +
                    " AND pd.czrq <' "+yesterday+ Constant.quota_date_last+"' ";
            //抽取數據

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

@ -88,7 +88,7 @@ public class WaitSignJob implements Job {
            quartzJobLog.setJobId(wlyyJobConfig.getId());
            quartzJobLog.setJobName(wlyyJobConfig.getJobName());
            //找出今天的待签约信息
            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< '"+yesterday+ Constant.quota_date_last+"'  ";
            String sql=" select code,idcard,hospital,admin_team_code,doctor,doctor_health from wlyy_sign_family a where  a.type =2  and a.status=0 and  a.patient_apply_date< '"+yesterday+ Constant.quota_date_last+"'  ";
            //抽取數據
            List<SignFamily> signFamilies= dbExtract.extract(SignFamily.class,sql);
            //清洗數據

+ 1 - 1
patient-co-wlyy/pom.xml

@ -75,7 +75,7 @@
        <dependency>
            <groupId>com.yihu</groupId>
            <artifactId>jave-ffmpegjave</artifactId>
            <artifactId>java-ffmpegjave</artifactId>
            <version>1.0.4</version>
        </dependency>

+ 8 - 3
patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/doctor/SurveyAnswersDao.java

@ -1,6 +1,8 @@
package com.yihu.wlyy.repository.doctor;
import com.yihu.wlyy.entity.doctor.survey.SurveyAnswers;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
@ -9,7 +11,10 @@ import java.util.List;
/**
 * Created by Reece on 2017/3/9.
 */
public interface SurveyAnswersDao extends PagingAndSortingRepository<SurveyAnswers,Long> {
    @Query("select  t.content from SurveyAnswers t where t.content is not null and t.surveyCode=?1 and t.questionCode=?2 order by t.createTime asc ")
    List<String> findByRelationCode(String id, String questionId);
public interface SurveyAnswersDao extends PagingAndSortingRepository<SurveyAnswers, Long> {
    @Query("select  t.content from SurveyAnswers t where t.content is not null and t.surveyCode=?1 and t.questionCode=?2 ")
    Page<String> findByRelationCode(String id, String questionId, Pageable request);
    @Query("select  count(t.surveyCode) from SurveyAnswers t where t.content is not null and t.surveyCode=?1 and t.questionCode=?2 ")
    int findByRelationCode(String id, String questionId);
}

+ 8 - 3
patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/doctor/SurveyOptionAnswersDao.java

@ -1,6 +1,8 @@
package com.yihu.wlyy.repository.doctor;
import com.yihu.wlyy.entity.doctor.survey.SurveyOptionAnswers;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
@ -9,7 +11,10 @@ import java.util.List;
/**
 * Created by Reece on 2017/3/9.
 */
public interface SurveyOptionAnswersDao extends PagingAndSortingRepository<SurveyOptionAnswers,Long> {
    @Query("select  t.optionComment from SurveyOptionAnswers t where t.optionComment is not null and t.surveyCode =?1 and t.questionCode=?2 and t.optionsCode=?3 order by t.createTime asc ")
    List<Object> findByRelationCode(String id, String questionId, String optionId);
public interface SurveyOptionAnswersDao extends PagingAndSortingRepository<SurveyOptionAnswers, Long> {
    @Query("select  t.optionComment from SurveyOptionAnswers t where t.optionComment is not null and t.surveyCode =?1 and t.questionCode=?2 and t.optionsCode=?3 ")
    Page<String> findByRelationCode(String id, String questionId, String optionId, Pageable request);
    @Query("select  count(t.patient) from SurveyOptionAnswers t where t.optionComment is not null and t.surveyCode =?1 and t.questionCode=?2 and t.optionsCode=?3 ")
    int findByRelationCode(String id, String questionId, String optionId);
}

+ 1 - 1
patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/doctor/SurveyStatisticsDao.java

@ -18,7 +18,7 @@ public interface SurveyStatisticsDao extends PagingAndSortingRepository<SurveySt
    void modifyAmount(String surveyCode, String qstCode);
    @Query("select t.amount from SurveyStatistics t where t.surveyCode = ?1 and  t.questionCode = ?2 ")
    int findByIdAndQstId(String surveyCode, String qstCode);
    int[] findByIdAndQstId(String surveyCode, String qstCode);
    @Query("select t.amount from SurveyStatistics t where t.surveyCode = ?1 and  t.questionCode = ?2 and t.optionsCode = ?3 ")
    int findByAllId(String surveyCode, String qstCode,String optCode);

+ 6 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/doctor/SurveyUserDao.java

@ -1,6 +1,7 @@
package com.yihu.wlyy.repository.doctor;
import com.yihu.wlyy.entity.doctor.survey.SurveyUser;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
@ -21,4 +22,9 @@ public interface SurveyUserDao extends PagingAndSortingRepository<SurveyUser, Lo
    @Query("select t.patient from SurveyUser t where t.surveyCode=?1 and t.status = 0 and t.isWork = 1  ")
    List<String> findBySurveyCodeAndStatus(String id);
    @Modifying
    @Query("update SurveyUser t set t.status = 1 where t.surveyCode=?1 and t.patient = ?2 ")
    void modifyStatus(String id,String  patient);
}

+ 164 - 152
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/survey/ManagerQuestionnaireService.java

@ -108,7 +108,7 @@ public class ManagerQuestionnaireService extends BaseService {
        String str = "SELECT DISTINCT t.patient AS patient,p.name,p.openid " +
                " FROM `wlyy_sign_patient_label_info` t,wlyy_patient p " +
                " WHERE t.`patient` =  p.`code` " +
                " AND p.`openid` IS NOT NULL ";
                " AND p.`openid` IS NOT NULL  AND p.`openid`!=''  ";
        //      保存到维度详情表(不限不保存)  维度表(1性别 2疾病类型 3服务类型 4健康状况)
        if (sex != 0) {
            str += "AND(p.sex=" + sex + ")";
@ -247,7 +247,6 @@ public class ManagerQuestionnaireService extends BaseService {
        List<Map<String, Object>> patients = jdbcTemplate.queryForList(str);
        int amount = patients.size();
//        int amount = 1234;
        for (Map<String, Object> patient : patients) {
            String code = patient.get("patient").toString();
            SurveyUser user = new SurveyUser(surveyCode, code, 0, 1, new Date(), new Date());
@ -286,155 +285,155 @@ public class ManagerQuestionnaireService extends BaseService {
            int isRequired = Integer.parseInt(tempQestion.get("isRequired").toString());
            int sort = Integer.parseInt(tempQestion.get("sort").toString());
            int del = 1;
                switch (type) {
                    case 0:
            switch (type) {
                case 0:
//                    单选
                        SurveyQuestionnaire surveyQuestionnaire = new SurveyQuestionnaire();
                        surveyQuestionnaire.setCode(questionnaireCode);
                        surveyQuestionnaire.setTitle(title);
                        surveyQuestionnaire.setQuestionComment(comment);
                        surveyQuestionnaire.setQuestionType(type);
                        surveyQuestionnaire.setSurveyCode(surveyCode);
                        surveyQuestionnaire.setIsRequired(isRequired);
                        surveyQuestionnaire.setDel(del);
                        surveyQuestionnaire.setSort(sort);
                        //                   单选没有最大最小选项数及题目逻辑跳转
                        surveyQuestionnaire.setMinNum(null);
                        surveyQuestionnaire.setMinNum(null);
                        surveyQuestionnaire.setQuestionCodeNext(null);
                        surveyQuestionnaireDao.save(surveyQuestionnaire);
                        //                        =======================选项保存=========================
                        //                选择题
                        JSONArray options = new JSONArray(tempQestion.get("options").toString());
                        for (Object option : options) {
                            String optionCode = getCode();
                            JSONObject tempOption = new JSONObject(option.toString());
                            int haveComment = Integer.parseInt(tempOption.get("haveComment").toString());
                            String optionComment = tempOption.get("content").toString();
                            int required = Integer.parseInt(tempOption.get("isRequired").toString());
                            int optionSort = Integer.parseInt(tempOption.get("sort").toString());
                            int optionDel = 1;
                            String optionNextQuestion = null;
                            if (!StringUtils.isEmpty(tempOption.get("nextQuestion").toString())) {
                                optionNextQuestion = tempOption.get("nextQuestion").toString();
                            }
//                        自主创建,插入表
                            SurveyQuestionnaireOptions surveyQuestionnaireOptions = new SurveyQuestionnaireOptions();
                            surveyQuestionnaireOptions.setCode(optionCode);
                            surveyQuestionnaireOptions.setHaveComment(haveComment);
                            surveyQuestionnaireOptions.setQuestionnaireCode(questionnaireCode);
                            surveyQuestionnaireOptions.setContent(optionComment);
                            surveyQuestionnaireOptions.setSurveyCode(surveyCode);
                            surveyQuestionnaireOptions.setQuestionCodeNext(optionNextQuestion);
                            surveyQuestionnaireOptions.setIsRequired(required);
                            surveyQuestionnaireOptions.setSort(optionSort);
                            surveyQuestionnaireOptions.setDel(optionDel);
                            surveyQuestionnaireOptionsDao.save(surveyQuestionnaireOptions);
                            //                单选题保存到统计表
                            String statisticsCode = getCode();
                            String questionTitle = surveyQuestionnaireDao.findByIdAndQstId(surveyCode, questionnaireCode).getTitle();
                            String optcontent = surveyQuestionnaireOptionsDao.findByRelationCode(surveyCode, questionnaireCode, optionCode).getContent();
                            SurveyStatistics statistics = new SurveyStatistics(statisticsCode, surveyCode, questionnaireCode, questionTitle, optionCode, 0, optcontent, haveComment, type, sort, optionSort);
                            surveyStatisticsDao.save(statistics);
                    SurveyQuestionnaire surveyQuestionnaire = new SurveyQuestionnaire();
                    surveyQuestionnaire.setCode(questionnaireCode);
                    surveyQuestionnaire.setTitle(title);
                    surveyQuestionnaire.setQuestionComment(comment);
                    surveyQuestionnaire.setQuestionType(type);
                    surveyQuestionnaire.setSurveyCode(surveyCode);
                    surveyQuestionnaire.setIsRequired(isRequired);
                    surveyQuestionnaire.setDel(del);
                    surveyQuestionnaire.setSort(sort);
                    //                   单选没有最大最小选项数及题目逻辑跳转
                    surveyQuestionnaire.setMinNum(null);
                    surveyQuestionnaire.setMaxNum(null);
                    surveyQuestionnaire.setQuestionCodeNext(null);
                    surveyQuestionnaireDao.save(surveyQuestionnaire);
                    //                        =======================选项保存=========================
                    //                选择题
                    JSONArray options = new JSONArray(tempQestion.get("options").toString());
                    for (Object option : options) {
                        String optionCode = getCode();
                        JSONObject tempOption = new JSONObject(option.toString());
                        int haveComment = Integer.parseInt(tempOption.get("haveComment").toString());
                        String optionComment = tempOption.get("content").toString();
                        int required = Integer.parseInt(tempOption.get("isRequired").toString());
                        int optionSort = Integer.parseInt(tempOption.get("sort").toString());
                        int optionDel = 1;
                        String optionNextQuestion = null;
                        if (!StringUtils.isEmpty(tempOption.get("nextQuestion").toString())) {
                            optionNextQuestion = tempOption.get("nextQuestion").toString();
                        }
//                        自主创建,插入表
                        SurveyQuestionnaireOptions surveyQuestionnaireOptions = new SurveyQuestionnaireOptions();
                        surveyQuestionnaireOptions.setCode(optionCode);
                        surveyQuestionnaireOptions.setHaveComment(haveComment);
                        surveyQuestionnaireOptions.setQuestionnaireCode(questionnaireCode);
                        surveyQuestionnaireOptions.setContent(optionComment);
                        surveyQuestionnaireOptions.setSurveyCode(surveyCode);
                        surveyQuestionnaireOptions.setQuestionCodeNext(optionNextQuestion);
                        surveyQuestionnaireOptions.setIsRequired(required);
                        surveyQuestionnaireOptions.setSort(optionSort);
                        surveyQuestionnaireOptions.setDel(optionDel);
                        surveyQuestionnaireOptionsDao.save(surveyQuestionnaireOptions);
                        //                单选题保存到统计表
                        String statisticsCode = getCode();
                        String questionTitle = surveyQuestionnaireDao.findByIdAndQstId(surveyCode, questionnaireCode).getTitle();
                        String optcontent = surveyQuestionnaireOptionsDao.findByRelationCode(surveyCode, questionnaireCode, optionCode).getContent();
                        SurveyStatistics statistics = new SurveyStatistics(statisticsCode, surveyCode, questionnaireCode, questionTitle, optionCode, 0, optcontent, haveComment, type, sort, optionSort);
                        surveyStatisticsDao.save(statistics);
                    }
//                        ===============================================================
                        break;
                    case 1:
                    break;
                case 1:
//            多选特有属性
                        Integer maxOptions = null;
                        Integer minOptions = null;
                        if (!StringUtils.isEmpty(tempQestion.get("minOptions").toString())) {
                            minOptions = Integer.parseInt(tempQestion.get("minOptions").toString());
                        }
                        if (!StringUtils.isEmpty(tempQestion.get("maxOptions").toString())) {
                            maxOptions = Integer.parseInt(tempQestion.get("maxOptions").toString());
                        }
                        SurveyQuestionnaire surveyQuestionnaire1 = new SurveyQuestionnaire();
                        surveyQuestionnaire1.setCode(questionnaireCode);
                        surveyQuestionnaire1.setTitle(title);
                        surveyQuestionnaire1.setQuestionComment(comment);
                        surveyQuestionnaire1.setQuestionType(type);
                        surveyQuestionnaire1.setSurveyCode(surveyCode);
                        surveyQuestionnaire1.setIsRequired(isRequired);
                        surveyQuestionnaire1.setMinNum(minOptions);
                        surveyQuestionnaire1.setMinNum(maxOptions);
                        surveyQuestionnaire1.setSort(sort);
                        surveyQuestionnaire1.setQuestionCodeNext(null);
                        surveyQuestionnaire1.setDel(del);
                        surveyQuestionnaireDao.save(surveyQuestionnaire1);
                    Integer maxOptions = null;
                    Integer minOptions = null;
                    if (!StringUtils.isEmpty(tempQestion.get("minOptions").toString())) {
                        minOptions = Integer.parseInt(tempQestion.get("minOptions").toString());
                    }
                    if (!StringUtils.isEmpty(tempQestion.get("maxOptions").toString())) {
                        maxOptions = Integer.parseInt(tempQestion.get("maxOptions").toString());
                    }
                    SurveyQuestionnaire surveyQuestionnaire1 = new SurveyQuestionnaire();
                    surveyQuestionnaire1.setCode(questionnaireCode);
                    surveyQuestionnaire1.setTitle(title);
                    surveyQuestionnaire1.setQuestionComment(comment);
                    surveyQuestionnaire1.setQuestionType(type);
                    surveyQuestionnaire1.setSurveyCode(surveyCode);
                    surveyQuestionnaire1.setIsRequired(isRequired);
                    surveyQuestionnaire1.setMinNum(minOptions);
                    surveyQuestionnaire1.setMaxNum(maxOptions);
                    surveyQuestionnaire1.setSort(sort);
                    surveyQuestionnaire1.setQuestionCodeNext(null);
                    surveyQuestionnaire1.setDel(del);
                    surveyQuestionnaireDao.save(surveyQuestionnaire1);
//                        =======================选项保存=========================
                        //                选择题
                        JSONArray options1 = new JSONArray(tempQestion.get("options").toString());
                        for (Object option : options1) {
                            String optionCode = getCode();
                            JSONObject tempOption = new JSONObject(option.toString());
                            int haveComment = Integer.parseInt(tempOption.get("haveComment").toString());
                            String optionComment = tempOption.get("content").toString();
                            int required = Integer.parseInt(tempOption.get("isRequired").toString());
                            int optionSort = Integer.parseInt(tempOption.get("sort").toString());
                            int optionDel = 1;
                            String optionNextQuestion = null;
                            if (!StringUtils.isEmpty(tempOption.get("nextQuestion").toString())) {
                                optionNextQuestion = tempOption.get("nextQuestion").toString();
                            }
//                        自主创建,插入表
                            SurveyQuestionnaireOptions surveyQuestionnaireOptions = new SurveyQuestionnaireOptions();
                            surveyQuestionnaireOptions.setCode(optionCode);
                            surveyQuestionnaireOptions.setHaveComment(haveComment);
                            surveyQuestionnaireOptions.setQuestionnaireCode(questionnaireCode);
                            surveyQuestionnaireOptions.setContent(optionComment);
                            surveyQuestionnaireOptions.setSurveyCode(surveyCode);
                            surveyQuestionnaireOptions.setQuestionCodeNext(optionNextQuestion);
                            surveyQuestionnaireOptions.setIsRequired(required);
                            surveyQuestionnaireOptions.setSort(optionSort);
                            surveyQuestionnaireOptions.setDel(optionDel);
                            surveyQuestionnaireOptionsDao.save(surveyQuestionnaireOptions);
                            //                多选题保存到统计表
                            String statisticsCode = getCode();
                            String questionTitle = surveyQuestionnaireDao.findByIdAndQstId(surveyCode, questionnaireCode).getTitle();
                            String optcontent = surveyQuestionnaireOptionsDao.findByRelationCode(surveyCode, questionnaireCode, optionCode).getContent();
                            SurveyStatistics statistics = new SurveyStatistics(statisticsCode, surveyCode, questionnaireCode, questionTitle, optionCode, 0, optcontent, haveComment, type, sort, optionSort);
                            surveyStatisticsDao.save(statistics);
                        }
//                        ===============================================================
                        break;
                    case 2:
//            问答特有属性
                        String nextQuestion = null;
                        if (tempQestion.has("nextQuestion")) {
                            nextQuestion = tempQestion.get("nextQuestion").toString();
                    //                选择题
                    JSONArray options1 = new JSONArray(tempQestion.get("options").toString());
                    for (Object option : options1) {
                        String optionCode = getCode();
                        JSONObject tempOption = new JSONObject(option.toString());
                        int haveComment = Integer.parseInt(tempOption.get("haveComment").toString());
                        String optionComment = tempOption.get("content").toString();
                        int required = Integer.parseInt(tempOption.get("isRequired").toString());
                        int optionSort = Integer.parseInt(tempOption.get("sort").toString());
                        int optionDel = 1;
                        String optionNextQuestion = null;
                        if (!StringUtils.isEmpty(tempOption.get("nextQuestion").toString())) {
                            optionNextQuestion = tempOption.get("nextQuestion").toString();
                        }
                        SurveyQuestionnaire surveyQuestionnaire2 = new SurveyQuestionnaire();
                        surveyQuestionnaire2.setCode(questionnaireCode);
                        surveyQuestionnaire2.setTitle(title);
                        surveyQuestionnaire2.setQuestionComment(comment);
                        surveyQuestionnaire2.setQuestionType(type);
                        surveyQuestionnaire2.setSurveyCode(surveyCode);
                        surveyQuestionnaire2.setIsRequired(isRequired);
//                   单选没有最大最小选项数
                        surveyQuestionnaire2.setMinNum(null);
                        surveyQuestionnaire2.setMinNum(null);
                        surveyQuestionnaire2.setSort(sort);
                        surveyQuestionnaire2.setQuestionCodeNext(nextQuestion);
                        surveyQuestionnaire2.setDel(del);
                        surveyQuestionnaireDao.save(surveyQuestionnaire2);
                        //                问答题保存到统计表(只负责更改数量不负责创建)
//                        自主创建,插入表
                        SurveyQuestionnaireOptions surveyQuestionnaireOptions = new SurveyQuestionnaireOptions();
                        surveyQuestionnaireOptions.setCode(optionCode);
                        surveyQuestionnaireOptions.setHaveComment(haveComment);
                        surveyQuestionnaireOptions.setQuestionnaireCode(questionnaireCode);
                        surveyQuestionnaireOptions.setContent(optionComment);
                        surveyQuestionnaireOptions.setSurveyCode(surveyCode);
                        surveyQuestionnaireOptions.setQuestionCodeNext(optionNextQuestion);
                        surveyQuestionnaireOptions.setIsRequired(required);
                        surveyQuestionnaireOptions.setSort(optionSort);
                        surveyQuestionnaireOptions.setDel(optionDel);
                        surveyQuestionnaireOptionsDao.save(surveyQuestionnaireOptions);
                        //                多选题保存到统计表
                        String statisticsCode = getCode();
                        String questionTitle = surveyQuestionnaireDao.findByIdAndQstId(surveyCode, questionnaireCode).getTitle();
                        SurveyStatistics statistics = new SurveyStatistics(statisticsCode, surveyCode, questionnaireCode, questionTitle, null, 0, null, null, type, sort, null);
                        String optcontent = surveyQuestionnaireOptionsDao.findByRelationCode(surveyCode, questionnaireCode, optionCode).getContent();
                        SurveyStatistics statistics = new SurveyStatistics(statisticsCode, surveyCode, questionnaireCode, questionTitle, optionCode, 0, optcontent, haveComment, type, sort, optionSort);
                        surveyStatisticsDao.save(statistics);
                        break;
                }
                    }
//                        ===============================================================
                    break;
                case 2:
//            问答特有属性
                    String nextQuestion = null;
                    if (tempQestion.has("nextQuestion")) {
                        nextQuestion = tempQestion.get("nextQuestion").toString();
                    }
                    SurveyQuestionnaire surveyQuestionnaire2 = new SurveyQuestionnaire();
                    surveyQuestionnaire2.setCode(questionnaireCode);
                    surveyQuestionnaire2.setTitle(title);
                    surveyQuestionnaire2.setQuestionComment(comment);
                    surveyQuestionnaire2.setQuestionType(type);
                    surveyQuestionnaire2.setSurveyCode(surveyCode);
                    surveyQuestionnaire2.setIsRequired(isRequired);
//                   单选没有最大最小选项数
                    surveyQuestionnaire2.setMinNum(null);
                    surveyQuestionnaire2.setMaxNum(null);
                    surveyQuestionnaire2.setSort(sort);
                    surveyQuestionnaire2.setQuestionCodeNext(nextQuestion);
                    surveyQuestionnaire2.setDel(del);
                    surveyQuestionnaireDao.save(surveyQuestionnaire2);
                    //                问答题保存到统计表(只负责更改数量不负责创建)
                    String statisticsCode = getCode();
                    String questionTitle = surveyQuestionnaireDao.findByIdAndQstId(surveyCode, questionnaireCode).getTitle();
                    SurveyStatistics statistics = new SurveyStatistics(statisticsCode, surveyCode, questionnaireCode, questionTitle, null, 0, null, null, type, sort, null);
                    surveyStatisticsDao.save(statistics);
                    break;
            }
        }
//        保存到问卷
@ -546,6 +545,7 @@ public class ManagerQuestionnaireService extends BaseService {
            }
        }
//        查询该问卷回答人数
//        int complete = surveyUserDao.findBySurveyCode(id);
        int complete = surveyUserDao.findBySurveyCode(id);
        Map<String, Object> map = new HashMap<>();
//        获取创建者信息
@ -669,6 +669,9 @@ public class ManagerQuestionnaireService extends BaseService {
        JSONObject jsonObject = new JSONObject();
//一个问卷内的所有问题
        List<SurveyQuestionnaire> questions = surveyQuestionnaireDao.findById(id);
        if (questions.size() == 0) {
            return jsonObject;
        }
        List qstList = new ArrayList();
        for (SurveyQuestionnaire question : questions) {
//            新造对象
@ -676,13 +679,18 @@ public class ManagerQuestionnaireService extends BaseService {
            String qstcode = question.getCode();
            String title = question.getTitle();
            int type = question.getQuestionType();
            int amount = surveyStatisticsDao.findByIdAndQstId(id, qstcode);
            int amount = 0;
            int[] sum = surveyStatisticsDao.findByIdAndQstId(id, qstcode);
            for (int count : sum) {
                amount += count;
            }
            qst.put("amount", amount);
            qst.put("qstcode", qstcode);
            qst.put("title", title);
            qst.put("amount", amount);
            qst.put("type", type);
//            一个问题内的所有选项
            List<SurveyQuestionnaireOptions> options = surveyQuestionnaireOptionsDao.findById(qstcode);
//            List<SurveyQuestionnaireOptions> options = surveyQuestionnaireOptionsDao.findById(qstcode);
            List<SurveyQuestionnaireOptions> options = surveyQuestionnaireOptionsDao.findByIdAndQstCode(id, qstcode);
            List optList = new ArrayList();
            for (SurveyQuestionnaireOptions option : options) {
                Map<String, Object> opt = new HashMap<>();
@ -704,24 +712,28 @@ public class ManagerQuestionnaireService extends BaseService {
        return jsonObject;
    }
    public JSONObject getOptionsComment(String id, String questionId, String optionId) throws Exception {
    public JSONObject getOptionsComment(String id, String questionId, String optionId, int pageNo, int pageSize) throws Exception {
        JSONObject jsonObject = new JSONObject();
        SurveyQuestionnaire question = surveyQuestionnaireDao.findByIdAndQstId(id, questionId);
        Sort sort = new Sort(Sort.Direction.ASC, "createTime");
        PageRequest request = new PageRequest(pageNo - 1, pageSize, sort);
        if (optionId != null && optionId.length() != 0) {
        if (!StringUtils.isEmpty(optionId)) {
//            查看选择题详细答案
            SurveyQuestionnaireOptions opt = surveyQuestionnaireOptionsDao.findByRelationCode(id, questionId, optionId);
            String option = opt.getContent();
            jsonObject.put("option", option);
//        获取同一个选项的所有回答的说明(分页?)
            List<Object> optionComment = surveyOptionAnswersDao.findByRelationCode(id, questionId, optionId);
            jsonObject.put("content", optionComment);
            jsonObject.put("amount", optionComment.size());
            Page<String> optionComment = surveyOptionAnswersDao.findByRelationCode(id, questionId, optionId, request);
            jsonObject.put("content", optionComment.getContent());
            int amount = surveyOptionAnswersDao.findByRelationCode(id, questionId, optionId);
            jsonObject.put("amount", amount);
        } else {
//            查看问答题答案(分页?)
            List<String> answer = surveyAnswersDao.findByRelationCode(id, questionId);
            jsonObject.put("content", answer);
            jsonObject.put("amount", answer.size());
            Page<String> answer = surveyAnswersDao.findByRelationCode(id, questionId, request);
            jsonObject.put("content", answer.getContent());
            int amount = surveyAnswersDao.findByRelationCode(id, questionId);
            jsonObject.put("amount", amount);
        }
        String title = question.getTitle();
@ -861,7 +873,7 @@ public class ManagerQuestionnaireService extends BaseService {
        } else {
            for (Map<String, Object> label : labels) {
//                if ("SURVEY_LABEL".equals(label.get("dict_name").toString())) {
                    surveyTemplates = surveyLabelInfoDao.findByLabel(Integer.parseInt(label.get("code").toString()));
                surveyTemplates = surveyLabelInfoDao.findByLabel(Integer.parseInt(label.get("code").toString()));
//                }
            }

+ 9 - 18
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/survey/PatientQuestionnaireService.java

@ -1,9 +1,5 @@
package com.yihu.wlyy.service.survey;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.annotations.VisibleForTesting;
import com.mchange.v2.util.DoubleWeakHashMap;
import com.yihu.wlyy.entity.doctor.survey.*;
import com.yihu.wlyy.repository.doctor.*;
import com.yihu.wlyy.service.BaseService;
@ -11,14 +7,9 @@ import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestParam;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@ -45,14 +36,14 @@ public class PatientQuestionnaireService extends BaseService {
    public JSONObject getSurveySummary(String patient, String id) throws Exception {
        JSONObject jsonObject = new JSONObject();
        Survey survey = surveyDao.findById(id);
//        int complete = surveyUserDao.findByPatient(patient, id);
        int complete = surveyUserDao.findByPatient(patient, id);
        String title = survey.getTitle();
        String comment = survey.getSurveyComment();
        int status = survey.getStatus();
        jsonObject.put("title", title);
        jsonObject.put("comment", comment);
        jsonObject.put("status", status);
//        jsonObject.put("complete", complete);
        jsonObject.put("complete", complete == 0 ? 0 : 1);
        return jsonObject;
    }
@ -97,11 +88,9 @@ public class PatientQuestionnaireService extends BaseService {
        int isRequired = question.getIsRequired();
        int type = question.getQuestionType();
//        int sorts = question.getSort();
        switch (type)
        {
        switch (type) {
            case 0:
                List<SurveyQuestionnaireOptions> options = surveyQuestionnaireOptionsDao.findById(qstCode);
                List<SurveyQuestionnaireOptions> options = surveyQuestionnaireOptionsDao.findByIdAndQstCode(id, qstCode);
                for (SurveyQuestionnaireOptions option : options) {
                    String content = option.getContent();
//                        可构造集合,返回选项特定值
@ -115,7 +104,7 @@ public class PatientQuestionnaireService extends BaseService {
                jsonObject.put("options", options);
                break;
            case 1:
                List<SurveyQuestionnaireOptions> optionss = surveyQuestionnaireOptionsDao.findById(qstCode);
                List<SurveyQuestionnaireOptions> optionss = surveyQuestionnaireOptionsDao.findByIdAndQstCode(id, qstCode);
                for (SurveyQuestionnaireOptions option : optionss) {
                    String content = option.getContent();
                    if (option.getQuestionCodeNext() != null) {
@ -125,8 +114,8 @@ public class PatientQuestionnaireService extends BaseService {
                    }
                }
                int maxNum = question.getMaxNum();
                int minNum = question.getMinNum();
                Integer maxNum = question.getMaxNum();
                Integer minNum = question.getMinNum();
                jsonObject.put("maxNum", maxNum);
                jsonObject.put("minNum", minNum);
                jsonObject.put("options", optionss);
@ -274,6 +263,8 @@ public class PatientQuestionnaireService extends BaseService {
            }
        }
//        更改调查对象表答题状态为已答
        surveyUserDao.modifyStatus(surveyCode,patient);
    }
}

+ 5 - 11
patient-co-wlyy/src/main/java/com/yihu/wlyy/task/PushMsgTask.java

@ -438,10 +438,12 @@ public class PushMsgTask {
                m.put("keyword3", keyword3);
            } else if (type == 11) {
                temp.setUrl(url + "/survey/html/survey_info.html?openid=" + openid + "&state=" + openid + "&toUser=" + json.getString("toUser") + "&toName=" + name);
                temp.setUrl(url + "survey/html/survey_info.html?openid=" + openid + "&state=" + openid + "&survey_id=" + json.getString("survey_id")+"&toUser=" + json.getString("toUser") + "&toName=" + name );
                temp.setTemplate_id(SystemConf.getInstance().getSystemProperties()
                        .getProperty("template_doctor_survey"));
                System.out.println("templateID=====>"+SystemConf.getInstance().getSystemProperties()
                        .getProperty("template_doctor_survey"));
                WechatTemplateData keyword1 = new WechatTemplateData();
                keyword1.setColor("#000000");
                keyword1.setValue(json.getString("keyword1"));
@ -451,21 +453,13 @@ public class PushMsgTask {
                keyword2.setColor("#000000");
                keyword2.setValue(json.getString("keyword2"));
                m.put("keyword2", keyword2);
                /*WechatTemplateData keyword3 = new WechatTemplateData();
                keyword3.setColor("#000000");
                keyword3.setValue(json.getString("keyword3"));
                m.put("keyword3", keyword3);
                WechatTemplateData keyword4 = new WechatTemplateData();
                keyword4.setColor("#000000");
                keyword4.setValue(json.getString("keyword4"));
                m.put("keyword4", keyword4);*/
                System.out.println("type=====>openId " + openid);
            }
            temp.setData(m);
            ObjectMapper mapper = new ObjectMapper();
            String strJson = mapper.writeValueAsString(temp);
            System.out.println("strJson=====>strJson " + strJson);
            return strJson;
        } catch (Exception e) {
            e.printStackTrace();

+ 9 - 7
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/survey/ManagerQuestionnaireController.java

@ -162,7 +162,7 @@ public class ManagerQuestionnaireController extends WeixinBaseController {
    }
    /**
     * 详细按钮 查看选项说明
     * 详细按钮 查看选项和问答题说明
     *
     * @param id
     * @return
@ -171,14 +171,16 @@ public class ManagerQuestionnaireController extends WeixinBaseController {
    @ApiOperation(value = "调查结果")
    @ResponseBody
    public String getOptionsComment(
            @RequestParam int pageNo,
            @RequestParam int pageSize,
            @ApiParam(value = "问卷id")
            @RequestParam(value = "") String id,
            @RequestParam String id,
            @ApiParam(value = "题目id")
            @RequestParam String questionId,
            @ApiParam(value = "选项id")
            @RequestParam(required = false) String optionId) {
        try {
            JSONObject jsonObject = managerQuestionnaireService.getOptionsComment(id, questionId, optionId);
            JSONObject jsonObject = managerQuestionnaireService.getOptionsComment(id, questionId, optionId, pageNo, pageSize);
            return write(200, "查询成功!", "data", jsonObject);
        } catch (Exception e) {
            e.printStackTrace();
@ -409,20 +411,20 @@ public class ManagerQuestionnaireController extends WeixinBaseController {
            sdf.format(new Date());
            String str = "{\"remark\":\"我们将按调查最终结果,优化健康服务。\",\"keyword1\":\"调查问卷\"}";
            String accessToken = getAccessToken();
            System.out.println("accessToken=====>" + accessToken);
            JSONObject json = new JSONObject(str);
            List<String> codes = surveyUserDao.findBySurveyCodeAndStatus(code);
            json.put("survey_id", code);
            for (String cod : codes) {
                Patient p = patientDao.findByCode(cod);
                String name = p.getName();
                String openId = p.getOpenid();
//                String openId = "orrOgwATDaljVunlAq_Tdx3imhYg";
                System.out.println("controller=====>cod " + cod + " name " + name + " openId " + openId);
                json.put("keyword2", sdf.format(new Date()));
                json.put("toUser", cod);
                json.put("first", name + ",您好!为了给您提供更好的家庭医生健康服务,现有一份问卷需要您填写。");
                pushMsgTask.sendWeixinMessage(accessToken, 11, openId, name, json);
            }
           /* String openId = "orrOgwATDaljVunlAq_Tdx3imhYg";
            pushMsgTask.sendWeixinMessage(accessToken, 11, openId, name, json);*/
            return write(200, "发送成功!");
        } catch (Exception e) {
            e.printStackTrace();
@ -444,7 +446,7 @@ public class ManagerQuestionnaireController extends WeixinBaseController {
            @RequestParam String json) {
        try {
            int amount = managerQuestionnaireService.getAmount(json);
            return write(200, "查询成功!","amount",amount);
            return write(200, "查询成功!", "amount", amount);
        } catch (Exception e) {
            e.printStackTrace();
            return write(-1, "查询失败!");

+ 24 - 24
patient-co-wlyy/src/main/resources/application.properties

@ -51,30 +51,30 @@
#redis.maxWait=1000
#redis.testOnBorrow=true
##------------------------------------开发环境数据库配置------------------------------------#
##------------------------------------锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟捷匡拷锟斤拷锟斤拷------------------------------------#
#### mysql database setting
#jdbc.driver=com.mysql.jdbc.Driver
#jdbc.url=jdbc:mysql://172.19.103.77/wlyy?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
#jdbc.username=root
#jdbc.password=123456
#
##### health index
#health.jdbc.driver=com.mysql.jdbc.Driver
#health.jdbc.url=jdbc:mysql://172.19.103.77/device?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
#health.jdbc.username=root
#health.jdbc.password=123456
#
##### suifang
#fv.jdbc.driver=com.mysql.jdbc.Driver
#fv.jdbc.url=jdbc:mysql://172.19.103.77/fv?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
#fv.jdbc.username=root
#fv.jdbc.password=123456
#
##### redis
#redis.host=172.19.103.47
#redis.port=6379
#redis.password=
#---------------------------------测试环境数据库配置---------------------------------------#
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://172.19.103.77/wlyy?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
jdbc.username=root
jdbc.password=123456
#### health index
health.jdbc.driver=com.mysql.jdbc.Driver
health.jdbc.url=jdbc:mysql://172.19.103.77/device?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
health.jdbc.username=root
health.jdbc.password=123456
#### suifang
fv.jdbc.driver=com.mysql.jdbc.Driver
fv.jdbc.url=jdbc:mysql://172.19.103.77/fv?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
fv.jdbc.username=root
fv.jdbc.password=123456
#### redis
redis.host=172.19.103.47
redis.port=6379
redis.password=
#---------------------------------锟斤拷锟皆伙拷锟斤拷锟斤拷锟捷匡拷锟斤拷锟斤拷---------------------------------------#
###### mysql database setting
#jdbc.driver=com.mysql.jdbc.Driver
#jdbc.url=jdbc:mysql://172.19.103.85/wlyy?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
@ -98,7 +98,7 @@
#redis.port=6379
#redis.password=
#-----------------------------------通用配置--------------------------------------------#
#-----------------------------------通锟斤拷锟斤拷锟斤拷--------------------------------------------#
##### redis
redis.maxIdle=300
redis.maxActive=600

+ 5 - 2
patient-co-wlyy/src/main/resources/system.properties

@ -72,9 +72,12 @@ im_list_get=http://192.168.131.102:3008/
im_group_server=http://172.19.103.29:3000/api/v1/chats/gm
msg_push_server=http://172.19.103.29:3000/api/v1/chats/sm
# 微信基本配置 wxb3827510b2e15012 c5bdedd909ded9c2ee08028487e6f50d
# 微信基本配置
appId=wxd03f859efdf0873d
appSecret=2935b54b53a957d9516c920a544f2537
# 个人微信测试平台基本配置
#appId=wxb3827510b2e15012
#appSecret=c5bdedd909ded9c2ee08028487e6f50d
wechat_base_url=http%3a%2f%2fweixin.xmtyw.cn%2fwlyy-dev
wechat_token=27eb3bb24f149a7760cf1bb154b08040
@ -102,7 +105,7 @@ template_healthy_article=LA7erINJ0CSsG2G_ZCrgsDaX3krhsI4qg_NSHEyL_l4
#医生变更
template_doctor_change=TNIDMjduVKgVL4-k71umYLpHROvFB8K6mmm8aZC_EH8
#问卷调查
template_doctor_survey=OqQXrb-e43_TJpq_70_K_y6vYJgY5mpjFYY4c5RWFP4
template_doctor_survey=IjQvzBy0PLeft2kN9mdBhACXPE9I_jyJywJ6B-JRxsY
#健康之路开放平台
yihu_OpenPlatform_url=http://ssotest.yihu.cn/OpenPlatform/cgiBin/1.0/