Ver código fonte

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

wujunjie 7 anos atrás
pai
commit
3a013c6651
19 arquivos alterados com 713 adições e 272 exclusões
  1. 1 1
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/SystemDict.java
  2. 2 2
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/service/DeviceService.java
  3. 2 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/config/SwaggerConfig.java
  4. 2 2
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/PatientHealthIndexService.java
  5. 2 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsService.java
  6. 146 32
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/questionnaire/QuestionnaireService.java
  7. 26 8
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/questionnaire/QuestionnaireUsersService.java
  8. 1 76
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/survey/PatientQuestionnaireService.java
  9. 1 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/prescription/PrescriptionLogController.java
  10. 1 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/account/PatientController.java
  11. 184 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/questionnaire/QuestionnaireCaptchaController.java
  12. 166 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/questionnaire/QuestionnaireController.java
  13. 0 63
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/questionnaire/QuestionnaireUsersController.java
  14. 0 81
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/survey/PatientQuestionnaireController.java
  15. 82 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/questionnaire/QuestionnaireSystemController.java
  16. 2 2
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/third/jkedu/service/EduArticleService.java
  17. 92 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/process/WeiXinEventProcess.java
  18. 3 1
      patient-co/patient-co-wlyy/src/main/resources/system.properties
  19. BIN
      patient-co/patient-co-wlyy/src/main/webapp/images/banner01.png

+ 1 - 1
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/model/SystemDict.java

@ -6,7 +6,7 @@ import javax.persistence.*;
 * SystemDict entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "system_dict")
@Table(name = "system_dict",schema="wlyy",catalog="wlyy")
public class SystemDict implements java.io.Serializable {
	// Fields

+ 2 - 2
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/service/DeviceService.java

@ -662,7 +662,7 @@ public class DeviceService extends BaseService{
        }
        if(swh!=null){
            if("1".equals(sw.getAlertPatientSwitch())){
            if("1".equals(swh.getAlertPatientSwitch())){
                //查询是否与医生建立重点跟踪关系,诺无关系则建立
                TrackPatient trackPatient = trackPatientDao.findByDoctorCodeAndPatientCode(signFamily.getDoctorHealth(),patient);
                if(trackPatient == null){
@ -726,7 +726,7 @@ public class DeviceService extends BaseService{
        }
        if(swh!=null){
            if("1".equals(sw.getAlertPatientSwitch())){
            if("1".equals(swh.getAlertPatientSwitch())){
                //查询是否与医生建立重点跟踪关系,诺无关系则建立
                TrackPatient trackPatient = trackPatientDao.findByDoctorCodeAndPatientCode(signFamily.getDoctorHealth(),patient);
                if(trackPatient == null){

+ 2 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/config/SwaggerConfig.java

@ -192,7 +192,8 @@ public class SwaggerConfig {
                        regex("/doctorFeedback/.*"),
                        regex("/patientFeedback/.*"),
                        regex("/esstatistics/.*"),
                        regex("/old/statistics/.*")
                        regex("/old/statistics/.*"),
                        regex("/questionnaire/.*")
                ))
                .build()
                .apiInfo(otherApiInfo());

+ 2 - 2
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/PatientHealthIndexService.java

@ -1001,7 +1001,7 @@ public class PatientHealthIndexService extends BaseService {
        }
        if(swh!=null){
            if("1".equals(sw.getAlertPatientSwitch())){
            if("1".equals(swh.getAlertPatientSwitch())){
                //查询是否与医生建立重点跟踪关系,诺无关系则建立
                TrackPatient trackPatient = trackPatientDao.findByDoctorCodeAndPatientCode(signFamily.getDoctorHealth(),patient);
                if(trackPatient == null){
@ -1066,7 +1066,7 @@ public class PatientHealthIndexService extends BaseService {
        }
        if(swh!=null){
            if("1".equals(sw.getAlertPatientSwitch())){
            if("1".equals(swh.getAlertPatientSwitch())){
                //查询是否与医生建立重点跟踪关系,诺无关系则建立
                TrackPatient trackPatient = trackPatientDao.findByDoctorCodeAndPatientCode(signFamily.getDoctorHealth(),patient);
                if(trackPatient == null){

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

@ -2306,9 +2306,10 @@ public class StatisticsService extends BaseService {
        }
        startDate = changeDate(startDate);
        endDate = changeDate(endDate);
        String es_edurc_sql ="SELECT count(*) number,adminTeamCode FROM "+esIndex+" where czrq > '"+startDate+"' and czrq < '"+endDate+"' and adminTeamCode in ("+adminTeamIdsStr+") GROUP BY adminTeamCode ORDER BY number DESC";
        String es_edurc_sql ="SELECT count(*) number,adminTeamCode FROM "+esIndex+" where userType = 1 and czrq > '"+startDate+"' and czrq < '"+endDate+"' and adminTeamCode in ("+adminTeamIdsStr+") GROUP BY adminTeamCode ORDER BY number DESC";
        List<Map<String, Object>> returnList = elasticsearchUtil.excuteDataModel(es_edurc_sql);
        int rk =0;
        if (returnList!=null && returnList.size()>0 && returnList.get(0).size()>0)
        for (Map<String, Object> map : returnList){
            if (Long.valueOf(String.valueOf(map.get("adminTeamCode"))).equals(id)) {
                rk = returnList.indexOf(map)+1;

+ 146 - 32
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/questionnaire/QuestionnaireService.java

@ -5,10 +5,16 @@ import com.yihu.es.entity.QuestionnaireWinningESDO;
import com.yihu.wlyy.config.SystemConfig;
import com.yihu.wlyy.config.es.ElasticFactory;
import com.yihu.wlyy.config.es.ElastricSearchSave;
import com.yihu.wlyy.entity.doctor.survey.SurveyAnswers;
import com.yihu.wlyy.entity.doctor.survey.SurveyOptionAnswers;
import com.yihu.wlyy.entity.doctor.survey.SurveyTemplateOptions;
import com.yihu.wlyy.entity.doctor.survey.SurveyTemplateQuestions;
import com.yihu.wlyy.entity.questionnaire.QuestionnairePrize;
import com.yihu.wlyy.entity.questionnaire.QuestionnaireUsers;
import com.yihu.wlyy.entity.questionnaire.QuestionnaireWinning;
import com.yihu.wlyy.repository.doctor.*;
import com.yihu.wlyy.repository.questionnaire.QuestionnairePrizeDao;
import com.yihu.wlyy.repository.questionnaire.QuestionnaireUsersDao;
import com.yihu.wlyy.repository.questionnaire.QuestionnaireWinningDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.util.ElasticsearchUtil;
@ -16,6 +22,8 @@ import com.yihu.wlyy.util.random.LotteryUtils;
import com.yihu.wlyy.util.random.dto.LotteryItem;
import io.searchbox.client.JestClient;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -54,6 +62,18 @@ public class QuestionnaireService extends BaseService {
	private QuestionnairePrizeDao questionnairePrizeDao;
	@Autowired
	private StringRedisTemplate redisTemplate;
	@Autowired
	private SurveyTemplateQuestionsDao surveyTemplateQuestionsDao;
	@Autowired
	private SurveyTemplateOptionsDao surveyTemplateOptionsDao;
	@Autowired
	private SurveyOptionAnswersDao surveyOptionAnswersDao;
	@Autowired
	private QuestionnaireUsersDao questionnaireUsersDao;
	@Autowired
	SurveyStatisticsDao surveyStatisticsDao;
	@Autowired
	private SurveyAnswersDao surveyAnswersDao;
	
	/**
@ -131,24 +151,39 @@ public class QuestionnaireService extends BaseService {
				if(winningList.isEmpty()){
					//从redis奖品池捞取一个奖品
					QuestionnairePrize questionnairePrize = getQuestionnairePrizeFromRedis();
					try {
						questionnaireWinning.setWinning(1);
						questionnaireWinning.setPrizeType(questionnairePrize.getType());
						questionnaireWinning.setPrizeName(questionnairePrize.getPrizeName());
						questionnaireWinning.setPrizeCode(questionnairePrize.getPrizeCode());
						questionnaireWinning.setAddress(questionnairePrize.getAddress());
						questionnaireWinning.setValidity(questionnairePrize.getValidity());
						questionnaireWinning = questionnaireWinningDao.save(questionnaireWinning);
					//如果抽中的奖品对象为空,则直接返回未中奖
					if(questionnairePrize != null){
						try {
							questionnaireWinning.setWinning(1);
							questionnaireWinning.setPrizeType(questionnairePrize.getType());
							questionnaireWinning.setPrizeName(questionnairePrize.getPrizeName());
							questionnaireWinning.setPrizeCode(questionnairePrize.getPrizeCode());
							questionnaireWinning.setAddress(questionnairePrize.getAddress());
							questionnaireWinning.setValidity(questionnairePrize.getValidity());
							//只有中奖的记录才保存到数据库
							questionnaireWinning = questionnaireWinningDao.save(questionnaireWinning);
						}catch (Exception e){
							//如果保存报错,则将奖品重新放回奖品池,返回未中奖
							String prizejson = JSON.toJSONString(questionnairePrize);
							redisTemplate.opsForValue().set("questionnaire:prize:code:" + questionnairePrize.getCode(), prizejson);
							
							questionnaireWinning.setWinning(0);
							questionnaireWinning.setPrizeType(0);
							questionnaireWinning.setPrizeName("");
							questionnaireWinning.setPrizeCode("");
							questionnaireWinning.setAddress("");
							questionnaireWinning.setValidity(new Date());
							
							logger.info("mysql 保存中奖结果报错,将奖品重新放回奖品池,返回未中奖");
							logger.info(e.getMessage());
//					    e.printStackTrace();
						}
						one = doToESDO(questionnaireWinning);
						result.add(one);
						//将中奖信息缓存到ES
						//将中奖记录信息缓存到ES
						esQuestionnaireWinningESData(result);
						return result;
					}catch (Exception e){
						//@todo 处理奖品相关逻辑业务时,如果报错,则将奖品重新放回奖品池
					    e.printStackTrace();
					}
				}else{
					for (QuestionnaireWinning obj:winningList) {
						QuestionnaireWinningESDO a = doToESDO(obj);
@ -158,7 +193,6 @@ public class QuestionnaireService extends BaseService {
				}
			}else{
				questionnaireWinning.setWinning(0);//未中奖
			}
		}else{
			questionnaireWinning.setWinning(0);//未中奖
@ -195,19 +229,18 @@ public class QuestionnaireService extends BaseService {
		try {
			synchronized (obj) {
				QuestionnairePrize questionnairePrize = new QuestionnairePrize();
				Set<String> exists = redisTemplate.opsForSet().members("questionnaire:prize:code");
				Set<String> exists = redisTemplate.keys("questionnaire:prize:code:*");
				if(exists.size() > 0){
					String prizeCode = "questionnaire:prize:code:";
					String key = "questionnaire:prize:code:";
					String key = "";
					String prizeJsonStr = "";
					for (String code :exists) {
						if(StringUtils.isNotBlank(code)){
							prizeCode = prizeCode + code;
							questionnairePrize.setCode(code);
					for (String setkey :exists) {
						if(StringUtils.isNotBlank(setkey)){
							key = setkey;
							break;
						}
					}
					prizeJsonStr = redisTemplate.opsForValue().get(prizeCode);
					if(StringUtils.isNotBlank(key)){
						prizeJsonStr = redisTemplate.opsForValue().get(key);
//					JSONObject jsonObject = JSONObject.parseObject(prizeJsonStr);
//					questionnairePrize.setUsed(jsonObject.getInteger("used"));
//					questionnairePrize.setAddress(jsonObject.getString("address"));
@ -218,21 +251,20 @@ public class QuestionnaireService extends BaseService {
//					questionnairePrize.setValidity(jsonObject.getDate("validity"));
//					questionnairePrize.setCreateTime(jsonObject.getDate("createTime"));
//					questionnairePrize.setUpdateTime(jsonObject.getDate("updateTime"));
					questionnairePrize = JSON.parseObject(prizeJsonStr,QuestionnairePrize.class);
					
					//捞取完之后,从redis缓存中删掉
					redisTemplate.delete(prizeCode);
					return questionnairePrize;
					
						questionnairePrize = JSON.parseObject(prizeJsonStr,QuestionnairePrize.class);
						//捞取完之后,从redis缓存中删掉
						redisTemplate.delete(key);
						return questionnairePrize;
					}
				}else{
					return null;
				}
			}
		}catch (Exception e){
		    e.printStackTrace();
		    return null;
			return null;
		}
		return null;
	}
	
	/**
@ -263,8 +295,7 @@ public class QuestionnaireService extends BaseService {
	 */
	public Integer gerPrizeCountFromRedis(){
		
		Set<String> exists = redisTemplate.opsForSet().members("questionnaire:prize:code");
		
		Set<String> exists = redisTemplate.keys("questionnaire:prize:code:*");
		if(exists != null && !exists.isEmpty()){
			return exists.size();
		}else{
@ -290,4 +321,87 @@ public class QuestionnaireService extends BaseService {
			}
		}
	}
	/**
	 * 抽奖问卷调查获取所有的问卷题目
	 * @param surveyTemplateCode
	 * @return
	 * @throws Exception
	 */
	public JSONObject getAllQuestions(String surveyTemplateCode)throws Exception{
		JSONObject json = new JSONObject();
		List<SurveyTemplateQuestions> questionList = surveyTemplateQuestionsDao.findById(surveyTemplateCode);
		List<SurveyTemplateOptions> optionsList = surveyTemplateOptionsDao.findByQuestionCode(surveyTemplateCode);
		for (SurveyTemplateQuestions surveyTemplateQuestions : questionList){
			Map<String,Object> map = new HashMap<>();
			String qusCode = surveyTemplateQuestions.getCode();
			List<SurveyTemplateOptions>  resultOptionList = new ArrayList<>();
			for (SurveyTemplateOptions option : optionsList){
				if (option.getTemplateQuestionCode().equals(qusCode)){
					resultOptionList.add(option);
				}
			}
			map.put("question",surveyTemplateQuestions);
			map.put("option",resultOptionList);
			json.put(surveyTemplateQuestions.getSort()+"",map);
		}
		return  json;
	}
	public QuestionnaireWinningESDO saveAnswerAndLotto(JSONObject jsonData, QuestionnaireUsers questionnaireUsers) throws Exception {
		System.out.println("********jsonData********* " + jsonData);
		//解析json保存各种答案
		String surveyCode = jsonData.get("surveyCode").toString();
		String openId = jsonData.get("openId").toString();
		String userCode = "";
		QuestionnaireUsers questionnaireUsers1 = questionnaireUsersDao.findByOpoenId(openId);
		if (questionnaireUsers1!=null){
			userCode = questionnaireUsers1.getCode();
		}
		Date createTime = new Date();
		//获取一维数组
		JSONArray questions = jsonData.getJSONArray("questions");
		for (int i = 0; i < questions.length(); i++) {
			//获取每一道题的信息
			JSONObject question = new JSONObject(questions.get(i).toString());
			String qstCode = question.get("qstCode").toString();
			int type = Integer.parseInt(question.get("type").toString());
			if (type != 2) {
				if (question.has("options")) {
					//获取每道题的所有选项
					JSONArray options = question.getJSONArray("options");
					for (int j = 0; j < options.length(); j++) {
						JSONObject option = new JSONObject(options.get(j).toString());
						String code = getCode();
						String optionCode = option.get("optionCode").toString();
						String comment = null;
						int haveComment = 0;
						if (option.has("comment")) {
							comment = option.get("comment").toString();
							haveComment = 1;
						}
						//保存到选择题答案表
						SurveyOptionAnswers optionAnswer = new SurveyOptionAnswers(code, userCode, surveyCode, qstCode, optionCode, comment, type, createTime,openId);
						surveyOptionAnswersDao.save(optionAnswer);
						//选择题修改统计表数量
						surveyStatisticsDao.modifyAmount(surveyCode, qstCode, optionCode);
					}
				}
			}else {
				String content = question.get("content").toString();
				if (!StringUtils.isEmpty(content)) {
//                    保存到问答题答案表
					String code = getCode();
					SurveyAnswers surveyAnswer = new SurveyAnswers(code, surveyCode, userCode, qstCode, content, createTime,openId);
					surveyAnswersDao.save(surveyAnswer);
//                问答题保存到统计表(只负责更改数量不负责创建)
					surveyStatisticsDao.modifyAmount(surveyCode, qstCode);
				}
			}
		}
		return  questionnaireLottery(questionnaireUsers).get(0);
	}
}

+ 26 - 8
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/questionnaire/QuestionnaireUsersService.java

@ -1,10 +1,19 @@
package com.yihu.wlyy.service.questionnaire;
import com.yihu.es.entity.QuestionnaireWinningESDO;
import com.yihu.wlyy.entity.doctor.survey.SurveyOptionAnswers;
import com.yihu.wlyy.entity.doctor.survey.SurveyTemplateOptions;
import com.yihu.wlyy.entity.doctor.survey.SurveyTemplateQuestions;
import com.yihu.wlyy.entity.questionnaire.QuestionnaireUsers;
import com.yihu.wlyy.repository.doctor.SurveyOptionAnswersDao;
import com.yihu.wlyy.repository.doctor.SurveyStatisticsDao;
import com.yihu.wlyy.repository.doctor.SurveyTemplateOptionsDao;
import com.yihu.wlyy.repository.doctor.SurveyTemplateQuestionsDao;
import com.yihu.wlyy.repository.questionnaire.QuestionnaireUsersDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.util.IdcardValidator;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -22,6 +31,8 @@ public class QuestionnaireUsersService extends BaseService {
    private QuestionnaireUsersDao questionnaireUsersDao;
    @Autowired
    private QuestionnaireService questionnaireService;
    @Autowired
    SurveyStatisticsDao surveyStatisticsDao;
    public Map<String,Object> userInfo(String openId)throws Exception{
        Map<String,Object> map = new HashMap<>();
@ -48,18 +59,19 @@ public class QuestionnaireUsersService extends BaseService {
        return map;
    }
    public Map<String,Object> SaveUpdateUser(QuestionnaireUsers questionnaireUsers)throws Exception{
    public Map<String,Object> saveUpdateUser(String code,String name,String idcard,String openid, String mobile,String census,String address)throws Exception{
        QuestionnaireUsers questionnaireUsers = new QuestionnaireUsers();
        Map<String,Object> resultMap = new HashMap<>();
        String code = questionnaireUsers.getCode();
        String idCard= questionnaireUsers.getIdcard();
        String census = questionnaireUsers.getCensus();
        IdcardValidator idcardValidator = new IdcardValidator();
        boolean id18Flag = true;
        boolean id15Flag = true;
        boolean idFlag = true;
        id18Flag = idcardValidator.is18Idcard(idCard);
        id15Flag = idcardValidator.is15Idcard(idCard);
        if (!StringUtils.isEmpty(idCard) && "3502".equals(idCard.substring(0,4))){
        if (idcard.length()==18){
            id18Flag = idcardValidator.is18Idcard(idcard);
        }else if (idcard.length()==15){
            id15Flag = idcardValidator.is15Idcard(idcard);
        }
        if (!StringUtils.isEmpty(idcard) && "3502".equals(idcard.substring(0,4))){
            idFlag = false;
        }
        if (!id15Flag || !id18Flag || !idFlag){
@ -76,10 +88,16 @@ public class QuestionnaireUsersService extends BaseService {
        if (StringUtils.isEmpty(code)){
            code = getCode();
            questionnaireUsers.setCode(code);
            questionnaireUsers.setName(name);
            questionnaireUsers.setIdcard(idcard);
            questionnaireUsers.setMobile(mobile);
            questionnaireUsers.setOpenid(openid);
            questionnaireUsers.setAddress(address);
            questionnaireUsers.setCensus(census);
            questionnaireUsers.setCreateTime(date);
            questionnaireUsersDao.save(questionnaireUsers);
        }else{
            questionnaireUsersDao.modifyUser(code,questionnaireUsers.getName(),questionnaireUsers.getIdcard(),questionnaireUsers.getMobile(),questionnaireUsers.getCensus(),questionnaireUsers.getAddress(),date);
            questionnaireUsersDao.modifyUser(code,name,idcard,mobile,census,address,date);
        }
        resultMap.put("flag",true);
        resultMap.put("msg","保存用户信息完成!");

+ 1 - 76
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/survey/PatientQuestionnaireService.java

@ -39,12 +39,7 @@ public class PatientQuestionnaireService extends BaseService {
    private SurveyAnswersDao surveyAnswersDao;
    @Autowired
    SurveyStatisticsDao surveyStatisticsDao;
    @Autowired
    private  SurveyTemplateQuestionsDao surveyTemplateQuestionsDao;
    @Autowired
    private SurveyTemplateOptionsDao surveyTemplateOptionsDao;
    @Autowired
    private QuestionnaireService questionnaireService;
    private Logger logger = LoggerFactory.getLogger(this.getClass());
@ -233,74 +228,4 @@ public class PatientQuestionnaireService extends BaseService {
        surveyUserDao.modifyStatus(surveyCode, patient);
    }
    /**
     * 抽奖问卷调查获取所有的问卷题目
     * @param surveyTemplateCode
     * @return
     * @throws Exception
     */
    public JSONObject getAllQuestions(String surveyTemplateCode)throws Exception{
        JSONObject json = new JSONObject();
        List<SurveyTemplateQuestions> questionList = surveyTemplateQuestionsDao.findById(surveyTemplateCode);
        List<SurveyTemplateOptions> optionsList = surveyTemplateOptionsDao.findByQuestionCode(surveyTemplateCode);
        for (SurveyTemplateQuestions surveyTemplateQuestions : questionList){
            Map<String,Object> map = new HashMap<>();
            String qusCode = surveyTemplateQuestions.getCode();
            List<SurveyTemplateOptions>  resultOptionList = new ArrayList<>();
            for (SurveyTemplateOptions option : optionsList){
                if (option.getTemplateQuestionCode().equals(qusCode)){
                    resultOptionList.add(option);
                }
            }
            map.put("question",surveyTemplateQuestions);
            map.put("option",resultOptionList);
            json.put(surveyTemplateQuestions.getSort()+"",map);
        }
        return  json;
    }
    public QuestionnaireWinningESDO saveAnswerAndLotto(JSONObject jsonData, QuestionnaireUsers questionnaireUsers) throws Exception {
        System.out.println("********jsonData********* " + jsonData);
        //解析json保存各种答案
        String surveyCode = jsonData.get("surveyCode").toString();
        String openId = jsonData.get("openId").toString();
        String userCode = "";
        //userCode = questionnaireUsersDao.findByOpoenId(openId).getCode();
        Date createTime = new Date();
        //获取一维数组
        JSONArray questions = jsonData.getJSONArray("questions");
        for (int i = 0; i < questions.length(); i++) {
            //获取每一道题的信息
            JSONObject question = new JSONObject(questions.get(i).toString());
            String qstCode = question.get("qstCode").toString();
            int type = Integer.parseInt(question.get("type").toString());
            if (type != 2) {
                if (question.has("options")) {
                    //获取每道题的所有选项
                    JSONArray options = question.getJSONArray("options");
                    for (int j = 0; j < options.length(); j++) {
                        JSONObject option = new JSONObject(options.get(j).toString());
                        String code = getCode();
                        String optionCode = option.get("optionCode").toString();
                        String comment = null;
                        int haveComment = 0;
                        if (option.has("comment")) {
                            comment = option.get("comment").toString();
                            haveComment = 1;
                        }
                        //保存到选择题答案表
                        SurveyOptionAnswers optionAnswer = new SurveyOptionAnswers(code, userCode, surveyCode, qstCode, optionCode, comment, type, createTime,openId);
                        surveyOptionAnswersDao.save(optionAnswer);
                        //选择题修改统计表数量
                        surveyStatisticsDao.modifyAmount(surveyCode, qstCode, optionCode);
                    }
                }
            }
        }
        return  questionnaireService.questionnaireLottery(questionnaireUsers).get(0);
    }
}

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/prescription/PrescriptionLogController.java

@ -132,7 +132,7 @@ public class PrescriptionLogController extends BaseController {
                    jo.put("drugDeliveryflag", "0");
                    if(one.getStatus()==100){
                        Prescription prescription = prescriptionService.findByCode(one.getPrescriptionCode());
                        if(prescription!=null&&prescription.getDrugDeliveryFlag()==1){
                        if(prescription!=null&&prescription.getDrugDeliveryFlag()!=null&&prescription.getDrugDeliveryFlag()==1){
                            jo.put("drugDeliveryflag", "1");
                            jo.put("drugDeliveryOperatorName",prescription.getDrugDeliveryOperatorName());
                            jo.put("drugDelivery",prescription.getDrugDeliveryReasonValue()+","+prescription.getDrugDeliveryReason());

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/account/PatientController.java

@ -726,7 +726,7 @@ public class PatientController extends WeixinBaseController {
            return write(200, "获取签约状态成功!", "data", -1);
        } catch (Exception e) {
            error(e);
            return error(-1, "签约状态查询失败!");
            return error(-1, " !");
        }
    }

+ 184 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/questionnaire/QuestionnaireCaptchaController.java

@ -0,0 +1,184 @@
package com.yihu.wlyy.web.patient.questionnaire;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import com.yihu.wlyy.web.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import sun.misc.BASE64Encoder;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
/**
 * 微信端非app用户可参与活动,获取验证码
 *
 * @author Sand
 * @created 2016/09/28
 */
@Api(description = "验证码")
@RestController
@RequestMapping(value = "/questionnaire/captcha", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class QuestionnaireCaptchaController extends BaseController {
    @Autowired
    private StringRedisTemplate redisTemplate;
    private Map<String, String> captchaCache = new ConcurrentHashMap<>();
    private DefaultKaptcha captchaProducer = new DefaultKaptcha();
    public QuestionnaireCaptchaController() {
        Properties properties = new Properties();
        properties.put("kaptcha.textproducer.font.color", "blue");
        properties.put("kaptcha.textproducer.font.size", "45");
        properties.put("kaptcha.textproducer.char.length", "4");
        properties.put("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");
        Config config = new Config(properties);
        captchaProducer.setConfig(config);
    }
    @RequestMapping(method = RequestMethod.GET)
    @ApiOperation("生成验证码,用于第一次请求")
    public String createCaptcha(){
        try{
            return generateCaptcha();
        } catch (Exception e){
            error(e);
            return error(500, e.getMessage());
        }
    }
    @RequestMapping(value = "/{legacy_key}", method = RequestMethod.POST)
    @ApiOperation("刷新验证码,需提供第一次生成验证码返回的key")
    public String refreshCaptcha(@PathVariable("legacy_key") String legacyKey){
        try{
            cleanCaptcha(legacyKey);
            return generateCaptcha();
        } catch (Exception e){
            error(e);
            return error(500, e.getMessage());
        }
    }
    @RequestMapping(value = "/{key}", method = RequestMethod.GET)
    @ApiOperation("校验证码,提供key及用户输入的验证码")
    public String verifyCaptcha(@PathVariable("key") String key,
                                @RequestParam("text") String text){
        try{
            boolean pass = false;
            String captcha = captchaCache.get(key);
            if (captcha != null && captcha.equals(text.toLowerCase())){
                pass = true;
                cleanCaptcha(key);
            }
            return write(200, "ok", "pass", pass);
        } catch (Exception e){
            error(e);
            return error(500, e.getMessage());
        }
    }
    private String generateCaptcha() throws IOException {
        String captchaText = captchaProducer.createText();
        BufferedImage image = captchaProducer.createImage(captchaText);
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        ImageIO.write(image, "png", outputStream);
        String base64Img = new BASE64Encoder().encode(outputStream.toByteArray());
        String key = "captcha:" + UUID.randomUUID().toString() + ":text";
        Map<String, String> data = new HashMap<>();
        data.put("key", key);
        data.put("image", base64Img);
        data.put("format", "png");
        captchaCache.put(key, captchaText.toLowerCase());
        return write(200, "ok", "data", data);
    }
    private void cleanCaptcha(String key){
        captchaCache.remove(key);
    }
    //=======================抽奖活动要结合openid生成验证码和校验验证码==========================//
    @RequestMapping(value = "/withOpenId/{openId}",method = RequestMethod.POST)
    @ApiOperation("结合openid生成验证码,用于第一次请求")
    public String createCaptchaOpenId(@PathVariable("openId") String openId){
        try{
            return generatiCaptchaOpenId(openId);
        } catch (Exception e){
            error(e);
            return error(500, e.getMessage());
        }
    }
    private String generatiCaptchaOpenId(String openId)throws Exception{
        String captchaText = captchaProducer.createText();
        BufferedImage image = captchaProducer.createImage(captchaText);
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        ImageIO.write(image, "png", outputStream);
        String base64Img = new BASE64Encoder().encode(outputStream.toByteArray());
        String uuid = UUID.randomUUID().toString();
        String key = "captcha:" + openId +"_"+uuid + ":text";
        Map<String, String> data = new HashMap<>();
        data.put("key", "captcha:" +uuid + ":text");
        data.put("image", base64Img);
        data.put("format", "png");
        redisTemplate.opsForValue().set(key,captchaText.toLowerCase());
        return write(200, "ok", "data", data);
    }
    @RequestMapping(value = "/refresh/{legacy_key}", method = RequestMethod.POST)
    @ApiOperation("刷新验证码,需提供第一次生成验证码返回的key")
    public String refreshCaptchaOpenId(@PathVariable("legacy_key") String legacyKey,
                                       @RequestParam("openId") String openId){
        try{
            legacyKey = legacyKey.replaceFirst(":",":"+openId+"_");
            redisTemplate.delete(legacyKey);
            return generatiCaptchaOpenId(openId);
        } catch (Exception e){
            error(e);
            return error(500, e.getMessage());
        }
    }
    @RequestMapping(value = "/verifyWithOpenId/{key}", method = RequestMethod.POST)
    @ApiOperation("校验证码,提供key及用户输入的验证码")
    public String verifyCaptcha(@PathVariable("key") String key,
                                @RequestParam("openId") String openId,
                                @RequestParam("text") String text){
        try{
            boolean pass = false;
            key = key.replaceFirst(":",":"+openId+"_");
            String captcha = redisTemplate.opsForValue().get(key);
            if (captcha != null && captcha.equals(text.toLowerCase())){
                pass = true;
                redisTemplate.delete(key);
            }
            return write(200, "ok", "pass", pass);
        } catch (Exception e){
            error(e);
            return error(500, e.getMessage());
        }
    }
}

+ 166 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/questionnaire/QuestionnaireController.java

@ -0,0 +1,166 @@
package com.yihu.wlyy.web.patient.questionnaire;
import com.yihu.es.entity.QuestionnaireWinningESDO;
import com.yihu.wlyy.entity.questionnaire.QuestionnaireUsers;
import com.yihu.wlyy.repository.questionnaire.QuestionnaireUsersDao;
import com.yihu.wlyy.service.questionnaire.QuestionnaireService;
import com.yihu.wlyy.service.questionnaire.QuestionnaireUsersService;
import com.yihu.wlyy.service.survey.PatientQuestionnaireService;
import com.yihu.wlyy.web.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
 * Created by Reece on 2017/3/14.
 */
@Controller
@RequestMapping(value = "/questionnaire")
@Api(description = "居民端问卷调查")
public class QuestionnaireController extends BaseController {
    @Autowired
    private QuestionnaireUsersService questionnaireUsersService;
    @Autowired
    private QuestionnaireService questionnaireService;
    @Autowired
    private StringRedisTemplate redisTemplate;
    @Autowired
    private QuestionnaireUsersDao questionnaireUsersDao;
    @RequestMapping(value = "/getUserInfo", method = RequestMethod.POST)
    @ApiOperation(value = "获取用户信息并且判断是否已经抽过奖")
    @ResponseBody
    public String getSurveySummary(@ApiParam(name = "openId")@RequestParam(value = "openId")String openId) {
        try {
            Map<String,Object> map = questionnaireUsersService.userInfo(openId);
            return write(200,"查询成功!","data",map);
        }catch (Exception e){
            e.printStackTrace();
            return write(-1,"查询失败!");
        }
    }
    @RequestMapping(value = "/saveUpdateUser", method = RequestMethod.POST)
    @ApiOperation(value = "保存更新用户信息")
    @ResponseBody
    public String saveUpdateUser(@ApiParam(name = "code")@RequestParam(value = "code",required = false)String code,
                                 @ApiParam(name = "name")@RequestParam(value = "name",required = true)String name,
                                 @ApiParam(name = "idcard")@RequestParam(value = "idcard",required = true)String idcard,
                                 @ApiParam(name = "openid")@RequestParam(value = "openid",required = true)String openid,
                                 @ApiParam(name = "mobile")@RequestParam(value = "mobile",required = true)String mobile,
                                 @ApiParam(name = "census")@RequestParam(value = "census",required = true)String census,
                                 @ApiParam(name = "address")@RequestParam(value = "address",required = true)String address) {
        try {
            List<QuestionnaireWinningESDO> result = questionnaireService.getQuestionnaireWinningESDOByIdcardAndOpenid(idcard,openid);
            if (result!=null && result.size()>0){
                return write(-1,"不好意思,您已经抽过奖了!");
            }
            Map<String,Object> map = questionnaireUsersService.saveUpdateUser(code, name, idcard, openid, mobile, census, address);
            boolean flag = (Boolean) map.get("flag");
            if (flag){
                return write(200,"用户信息保存成功!");
            }else{
                return write(-1,map.get("msg").toString());
            }
        }catch (Exception e){
            e.printStackTrace();
            return write(-1,"用户信息保存失败!");
        }
    }
    //----------------------电影票活动抽奖-------------------------------//
    @RequestMapping(value = "/checkLotto",method = RequestMethod.POST)
    @ApiOperation(value = "进入活动页面判断是否已经抽过奖")
    @ResponseBody
    public String checkLotto(@ApiParam(name = "checkParam")@RequestParam(value = "checkParam",required = true)String checkParam){
        Map<String,Object> resultMap = new HashMap<>();
        try{
            List<QuestionnaireWinningESDO> result = questionnaireService.getQuestionnaireWinningESDOByIdcardAndOpenid(checkParam,checkParam);
            if (result!= null && result.size()>0){
                resultMap.put("flag",false);
                if (result!=null && result.size()>0){
                    resultMap.put("result",result.get(0));
                }else{
                    resultMap.put("result",null);
                }
                return write(200,"您已经抽过奖了!","data",resultMap);
            }else{
                resultMap.put("flag",true);
                return write(200,"您还未抽过奖!","data",resultMap);
            }
        }catch (Exception e){
            e.printStackTrace();
            return write(-1,"操作失败!");
        }
    }
    @RequestMapping(value = "/getAllQuestions",method = RequestMethod.GET)
    @ApiOperation(value = "电影票抽奖获取所有问卷题目")
    @ResponseBody
    public String getAllQuestions(@ApiParam(name = "surveyTemplateCode",value = "问卷模板id")@RequestParam(value = "surveyTemplateCode",required = true)String surveyTemplateCode){
        try {
            JSONObject jsonObject = questionnaireService.getAllQuestions(surveyTemplateCode);
            return write(200, "查询成功!", "data", jsonObject);
        } catch (Exception e) {
            e.printStackTrace();
            return write(-1, "查询失败!");
        }
    }
    @RequestMapping(value = "/saveAnswerAndLotto", method = RequestMethod.POST)
    @ApiOperation(value = "保存用户答案并且参与抽奖")
    @ResponseBody
    public String saveAnswerAndLotto(
            @RequestParam(value = "jsonData") String jsonData) {
        try {
            JSONObject json = new JSONObject(jsonData);
            //验证码验证
            String key = String.valueOf(json.get("key"));
            String text = String.valueOf(json.get("text"));
            String openId = String.valueOf(json.get("openId"));
            boolean pass = false;
            key = key.replaceFirst(":",":"+openId+"_");
            String captcha = redisTemplate.opsForValue().get(key);
            if (captcha != null && captcha.equals(text.toLowerCase())){
                pass = true;
                redisTemplate.delete(key);
            }
            //openid和身份证验证是否已经抽过奖
            QuestionnaireUsers questionnaireUsers = questionnaireUsersDao.findByOpoenId(openId);
            if (questionnaireUsers!=null){
                List<QuestionnaireWinningESDO> questionnaireWinningESDO = questionnaireService.getQuestionnaireWinningESDOByIdcardAndOpenid(questionnaireUsers.getIdcard(),openId);
                if (questionnaireWinningESDO!=null){
                    return write(-1,"您已经抽过奖了!");
                }
            }else {
                return write(-1,"请先填写个人信息!");
            }
            //验证成功,保存问卷进行抽奖
            if (pass){
                return write(200, "操作成功!","data",questionnaireService.saveAnswerAndLotto(json,questionnaireUsers));
            }else{
                return write(-1, "验证码错误!");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return write(-1, "操作失败!");
        }
    }
}

+ 0 - 63
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/questionnaire/QuestionnaireUsersController.java

@ -1,63 +0,0 @@
package com.yihu.wlyy.web.patient.questionnaire;
import com.yihu.wlyy.entity.questionnaire.QuestionnaireUsers;
import com.yihu.wlyy.service.questionnaire.QuestionnaireUsersService;
import com.yihu.wlyy.service.survey.PatientQuestionnaireService;
import com.yihu.wlyy.web.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
 * Created by Reece on 2017/3/14.
 */
@Controller
@RequestMapping(value = "/patient/questionnaireUser/")
@Api(description = "居民端问卷调查用户信息")
public class QuestionnaireUsersController extends BaseController {
    @Autowired
    private QuestionnaireUsersService questionnaireUsersService;
    @RequestMapping(value = "getUserInfo", method = RequestMethod.POST)
    @ApiOperation(value = "获取用户信息并且判断是否已经抽过奖")
    @ResponseBody
    public String getSurveySummary(@ApiParam(name = "openId")@RequestParam(value = "openId")String openId) {
        try {
            Map<String,Object> map = questionnaireUsersService.userInfo(openId);
            return write(200,"查询成功!","data",map);
        }catch (Exception e){
            e.printStackTrace();
            return write(-1,"查询失败!");
        }
    }
    @RequestMapping(value = "saveUpdateUser", method = RequestMethod.POST)
    @ApiOperation(value = "保存更新用户信息")
    @ResponseBody
    public String saveUpdateUser(@ApiParam(name = "questionnaireUsers")@RequestParam(value = "questionnaireUsers")QuestionnaireUsers questionnaireUsers) {
        try {
            Map<String,Object> map = questionnaireUsersService.SaveUpdateUser(questionnaireUsers);
            boolean flag = (Boolean) map.get("flag");
            if (flag){
                return write(200,"用户信息保存成功!");
            }else{
                return write(-1,map.get("msg").toString());
            }
        }catch (Exception e){
            e.printStackTrace();
            return write(-1,"用户信息保存失败!");
        }
    }
}

+ 0 - 81
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/survey/PatientQuestionnaireController.java

@ -93,85 +93,4 @@ public class PatientQuestionnaireController extends BaseController {
        }
    }
    //----------------------电影票活动抽奖-------------------------------//
    @RequestMapping(value = "/checkLotto",method = RequestMethod.POST)
    @ApiOperation(value = "进入活动页面判断是否已经抽过奖")
    @ResponseBody
    public String checkLotto(@ApiParam(name = "checkParam")@RequestParam(value = "checkParam",required = true)String checkParam){
        Map<String,Object> resultMap = new HashMap<>();
        try{
            List<QuestionnaireWinningESDO> result = questionnaireService.getQuestionnaireWinningESDOByIdcardAndOpenid(checkParam,checkParam);
            if (result!= null){
                resultMap.put("flag",false);
                if (result!=null && result.size()>0){
                    resultMap.put("result",result.get(0));
                }else{
                    resultMap.put("result",null);
                }
                return write(200,"您已经抽过奖了!","data",resultMap);
            }else{
                resultMap.put("flag",true);
                return write(200,"您还未抽过奖!","data",resultMap);
            }
        }catch (Exception e){
            e.printStackTrace();
            return write(-1,"操作失败!");
        }
    }
    @RequestMapping(value = "/getAllQuestions",method = RequestMethod.GET)
    @ApiOperation(value = "电影票抽奖获取所有问卷题目")
    @ResponseBody
    public String getAllQuestions(@ApiParam(name = "surveyTemplateCode",value = "问卷模板id")@RequestParam(value = "surveyTemplateCode",required = true)String surveyTemplateCode){
        try {
            JSONObject jsonObject = patientQuestionnaireService.getAllQuestions(surveyTemplateCode);
            return write(200, "查询成功!", "data", jsonObject);
        } catch (Exception e) {
            e.printStackTrace();
            return write(-1, "查询失败!");
        }
    }
    @RequestMapping(value = "/saveAnswerAndLotto", method = RequestMethod.POST)
    @ApiOperation(value = "保存用户答案并且参与抽奖")
    @ResponseBody
    public String saveAnswerAndLotto(
            @RequestParam(value = "jsonData") String jsonData) {
        try {
            JSONObject json = new JSONObject(jsonData);
            //验证码验证
            String key = String.valueOf(json.get("key"));
            String text = String.valueOf(json.get("text"));
            String openId = String.valueOf(json.get("openId"));
            boolean pass = false;
            key = key.replaceFirst(":",":"+openId+"_");
            String captcha = redisTemplate.opsForValue().get(key);
            if (captcha != null && captcha.equals(text.toLowerCase())){
                pass = true;
                redisTemplate.delete(key);
            }
            //openid和身份证验证是否已经抽过奖
            QuestionnaireUsers questionnaireUsers = questionnaireUsersDao.findByOpoenId(openId);
            if (questionnaireUsers!=null){
                List<QuestionnaireWinningESDO> questionnaireWinningESDO = questionnaireService.getQuestionnaireWinningESDOByIdcardAndOpenid(questionnaireUsers.getIdcard(),openId);
                if (questionnaireWinningESDO!=null){
                    return write(-1,"您已经抽过奖了!");
                }
            }else {
                return write(-1,"请先填写个人信息!");
            }
            //验证成功,保存问卷进行抽奖
            if (pass){
                return write(200, "操作成功!","data",patientQuestionnaireService.saveAnswerAndLotto(json,questionnaireUsers));
            }else{
                return write(-1, "验证码错误!");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return write(-1, "操作失败!");
        }
    }
}

+ 82 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/questionnaire/QuestionnaireSystemController.java

@ -0,0 +1,82 @@
package com.yihu.wlyy.web.questionnaire;
import com.yihu.wlyy.service.common.InitiSysProService;
import com.yihu.wlyy.service.questionnaire.QuestionnaireService;
import com.yihu.wlyy.web.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
/**
 * 抽奖问卷系统接口
 * @author huangwenjie
 * @date 2018/1/30 09:13
 */
@Controller
@RequestMapping(value = "/questionnaire/sys/")
@Api(description = "抽奖问卷系统接口")
public class QuestionnaireSystemController extends BaseController {
	private static Logger logger = LoggerFactory.getLogger(QuestionnaireSystemController.class);
	
	@Autowired
	private QuestionnaireService questionnaireService;
	
	@Autowired
	private InitiSysProService initiSysProService;
	
	@RequestMapping(value = "startInitiSysProperties",method = RequestMethod.POST)
	@ApiOperation("重新执行系统参数初始化")
	@ResponseBody
	public String startInitiSysProperties(){
		try {
			logger.info("START===执行系统参数初始化");
			initiSysProService.startInitiSysProperties();
			logger.info("END===执行系统参数初始化");
			return write(200,"执行系统参数初始化成功!");
		} catch (Exception ex) {
			error(ex);
			return write(200,"执行系统参数初始化失败!");
		}
	}
	
	@RequestMapping(value = "getprizetoredis",method = RequestMethod.POST)
	@ApiOperation("从奖品数据库捞取指定数量的奖品,缓存到redis奖品池")
	@ResponseBody
	public String getQuestionnairePrizeToRedis(
			@ApiParam(required = true, name = "count", value = "数量")
			@RequestParam(value = "count", required = true)Integer count){
		try {
			logger.info("START===从奖品数据库捞取指定数量的奖品,缓存到redis奖品池");
			questionnaireService.getQuestionnairePrizeToRedis(count);
			logger.info("END===从奖品数据库捞取指定数量的奖品,缓存到redis奖品池");
			return write(200,"操作成功!");
		} catch (Exception ex) {
			error(ex);
			return write(200,"操作失败!");
		}
	}
	
	@RequestMapping(value = "gerprizecount",method = RequestMethod.GET)
	@ApiOperation("从redis获取剩余奖品数量")
	@ResponseBody
	public String gerPrizeCountFromRedis(){
		try {
			logger.info("START===从redis获取剩余奖品数量");
			Integer count = questionnaireService.gerPrizeCountFromRedis();
			logger.info("END===从redis获取剩余奖品数量");
			return write(200,"操作成功!","data",count);
		} catch (Exception ex) {
			error(ex);
			return write(200,"操作失败!");
		}
	}
}

+ 2 - 2
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/third/jkedu/service/EduArticleService.java

@ -862,7 +862,7 @@ public class EduArticleService {
                    }
                }
                //数据库中的isRead 0已读,1未读--->Es中isRead 0未读 1已读
                if (healthEduArticlePatient.getIsRead() == null) {
                if (healthEduArticlePatient.getIsRead() == 0) {
                    healthEduArticleES.setIsRead(1);
                    healthEduArticleES.setCzrq(healthEduArticlePatient.getCzrq());
                } else {
@ -1073,7 +1073,7 @@ public class EduArticleService {
                    }
                }
                //数据库中的isRead 0已读,1未读--->Es中isRead 0未读 1已读
                if (healthEduArticlePatient.getIsRead() == null) {
                if (healthEduArticlePatient.getIsRead()==0) {
                    healthEduArticleES.setIsRead(1);
                    healthEduArticleES.setCzrq(healthEduArticlePatient.getCzrq());
                } else {

+ 92 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/process/WeiXinEventProcess.java

@ -400,6 +400,39 @@ public class WeiXinEventProcess {
            setUrlItems(articles, systemConf);
            setWifi(message.get("FromUserName"),articles,systemConf);
            // 构建回复消息XML
            result = WeiXinMessageReplyUtils.replyNewsMessage(message.get("FromUserName"), message.get("ToUserName"), articles);
        }else if (StringUtils.isNotEmpty(eventKey) && (("wechat_draw").equals(eventKey)) ||
                eventKey.startsWith("qrscene_wechat_draw")){
            // 配置信息
            Properties systemConf = SystemConf.getInstance().getSystemProperties();
            // 图文信息
            List<Map<String, String>> articles = new ArrayList<>();
            Map<String, String> article = new HashMap<>();
            // 图文URL
            String url = systemConf.getProperty("doctor_subscribe_url");
            // 图文消息图片URL
            String picUrl = systemConf.getProperty("doctor_qrcode_pic_url");
            // URL设置服务器URL、AppId
            url = url.replace("{server}", wechat_base_url)
                    .replace("{appId}", appId);
            //图片地址
            picUrl = picUrl.replace("{server}", serverUrl);
            article.put("Url", url);
            article.put("Title", "欢迎关注厦门i健康,快来签约家庭医生吧~");
            article.put("Description", "请点击查看家庭签约");
            article.put("PicUrl", picUrl);
            articles.add(article);
            //设置共有的图文消息
            setUrlItems(articles, systemConf);
            //设置抽奖
            setDraw(articles,systemConf);
            // 构建回复消息XML
            result = WeiXinMessageReplyUtils.replyNewsMessage(message.get("FromUserName"), message.get("ToUserName"), articles);
        }else {
@ -480,10 +513,37 @@ public class WeiXinEventProcess {
        }
    }
    public void setDraw(List<Map<String, String>> articles, Properties systemConf){
        Map<String, String> articleConsult = new HashMap<>();
        // 图文URL
        String urlConsult = getSystemCodeByName("PATIENT_DRAW_URL");
        // URL设置服务器URL、AppId
        urlConsult = urlConsult.replace("{server}", wechat_base_url)
                .replace("{appId}", appId);
        logger.info("pstient_Draw_url:"+urlConsult);
        // 图文消息图片URL
        String picUrlConsult = systemConf.getProperty("patient_draw_pic_url");
        picUrlConsult = picUrlConsult.replace("{server}", serverUrl);
        articleConsult.put("Url", urlConsult);
        articleConsult.put("Title", "健康宣传回访,电影票等你来拿~");
        articleConsult.put("Description", "外来流动人口健康宣传回访,快来参加抽取电影票~");
        articleConsult.put("PicUrl", picUrlConsult);
        articles.add(articleConsult);
    }
    public String getSystemWifiUrl(){
        List<SystemDict> systemDicts =  systemDictDao.findByDictName("HSLQ_WIFI");
        return systemDicts.get(0).getCode();
    }
    public String getSystemCodeByName(String name){
        List<SystemDict> systemDicts =  systemDictDao.findByDictName(name);
        return systemDicts.get(0).getCode();
    }
    /**
     * 设置微信公共的图文消息
@ -725,6 +785,38 @@ public class WeiXinEventProcess {
            setWifi(message.get("FromUserName"),articles,systemConf);
            // 构建回复消息XML
            result = WeiXinMessageReplyUtils.replyNewsMessage(message.get("FromUserName"), message.get("ToUserName"), articles);
        }else if (StringUtils.isNotEmpty(eventKey) && (("wechat_draw").equals(eventKey)) ||
                eventKey.startsWith("qrscene_wechat_draw")) {
            // 配置信息
            Properties systemConf = SystemConf.getInstance().getSystemProperties();
            // 图文信息
            List<Map<String, String>> articles = new ArrayList<>();
            Map<String, String> article = new HashMap<>();
            // 图文URL
            String url = systemConf.getProperty("doctor_subscribe_url");
            // 图文消息图片URL
            String picUrl = systemConf.getProperty("doctor_qrcode_pic_url");
            // URL设置服务器URL、AppId
            url = url.replace("{server}", wechat_base_url)
                    .replace("{appId}", appId);
            //图片地址
            picUrl = picUrl.replace("{server}", serverUrl);
            article.put("Url", url);
            article.put("Title", "欢迎关注厦门i健康,快来签约家庭医生吧~");
            article.put("Description", "请点击查看家庭签约");
            article.put("PicUrl", picUrl);
            articles.add(article);
            //设置共有的图文消息
            setUrlItems(articles, systemConf);
            //设置抽奖
            setDraw(articles,systemConf);
            // 构建回复消息XML
            result = WeiXinMessageReplyUtils.replyNewsMessage(message.get("FromUserName"), message.get("ToUserName"), articles);
        }
        return result;

+ 3 - 1
patient-co/patient-co-wlyy/src/main/resources/system.properties

@ -31,9 +31,11 @@ patient_QRCode_url=https://open.weixin.qq.com/connect/oauth2/authorize?appid={ap
#居民产检计划
patient_prenata_url=https://open.weixin.qq.com/connect/oauth2/authorize?appid={appId}&amp;redirect_uri={server}%2fwx%2fhtml%2ffybj%2fhtml%2fyunjianjihua.html&amp;response_type=code&amp;scope=snsapi_base&amp;state=STATE#wechat_redirect
#居民免疫计划
patient_immune_url=https://open.weixin.qq.com/connect/oauth2/authorize?appid={appId}&amp;redirect_uri={server}%2fwx%2fhtml%2ffybj%2fhtml%2fmianyijihua.html&amp;response_type=code&amp;scope=snsapi_base&amp;state=STATE#wechat_redirect
patient_immune_url=#居民抽奖图片地址
#居民wifi图片地址
patient_wifi_pic_url = {server}/images/wifi.png
#居民抽奖图片地址
patient_draw_pic_url = {server}/images/banner01.png
#居民wifi链接
patient_wifi_url =http://freewifi.mobcb.com/Portal/Wx/login
#就诊记录

BIN
patient-co/patient-co-wlyy/src/main/webapp/images/banner01.png