浏览代码

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

huangwenjie 7 年之前
父节点
当前提交
f3207f4d26
共有 17 个文件被更改,包括 870 次插入30 次删除
  1. 二进制
      edu-article/JkEdu/WebRoot/WEB-INF/classes/com/yihu/jk/api/ArticleApiTest.class
  2. 2 2
      edu-article/JkEdu/src/com/yihu/jk/api/ArticleApiTest.java
  3. 132 0
      patient-co-manage/wlyy-manage/src/main/java/TestImportJxl.java
  4. 1 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/config/SpringSecurityConfig.java
  5. 79 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/controller/manager/survey/QuestionnaireController.java
  6. 24 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/repository/survey/QuestionnairePrizeDao.java
  7. 159 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/manager/survey/QuestionnaireService.java
  8. 182 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/util/RivaEDCode.java
  9. 80 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/vo/UserPrizeVO.java
  10. 17 0
      patient-co-manage/wlyy-manage/src/main/resources/application.yml
  11. 3 3
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/basedata/basedata_list.jsp
  12. 13 8
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/basedata/basedata_list_js.jsp
  13. 3 0
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/main.jsp
  14. 35 0
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/questionnaire/prize/prize_list.jsp
  15. 120 0
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/questionnaire/prize/prize_list_js.jsp
  16. 1 0
      patient-co-manage/wlyy-manage/src/main/webapp/static/js/menu.js
  17. 19 17
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/SignWebService.java

二进制
edu-article/JkEdu/WebRoot/WEB-INF/classes/com/yihu/jk/api/ArticleApiTest.class


+ 2 - 2
edu-article/JkEdu/src/com/yihu/jk/api/ArticleApiTest.java

@ -34,7 +34,7 @@ public class ArticleApiTest {
		// System.out.println(api.getCollectionArticalList(im));
		// System.out.println(api.getArticalById(im));
		queryArticlePcList();
        saveBehavior();
//		System.out.printf("350200".substring(0,3));
	}
@ -120,7 +120,7 @@ public class ArticleApiTest {
		BehaviorApi api = new BehaviorApi();
		InterfaceMessage im = new InterfaceMessage();
		JSONObject obj = new JSONObject();
		obj.put("articleId","012EA731315E4E6F8F7227D09B730BEA");
		obj.put("articleId","8C409DD4C60B4DE395A3D266BDCE04A8");
		obj.put("cName","标题");//
		obj.put("userId","xh1D2017031502222");
		obj.put("userType","1");

+ 132 - 0
patient-co-manage/wlyy-manage/src/main/java/TestImportJxl.java

@ -0,0 +1,132 @@
import com.yihu.wlyy.entity.Hospital;
import com.yihu.wlyy.entity.HospitalDept;
import com.yihu.wlyy.entity.survey.QuestionnairePrize;
import com.yihu.wlyy.repository.survey.QuestionnairePrizeDao;
import com.yihu.wlyy.service.common.excel.ExcelData;
import com.yihu.wlyy.service.manager.wlyyrole.WlyyUserRoleService;
import com.yihu.wlyy.util.ReadExcelUtil;
import com.yihu.wlyy.util.RivaEDCode;
import com.yihu.wlyy.vo.UserPrizeVO;
import jxl.*;
import jxl.write.*;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.io.File;
import java.text.ParseException;
import java.util.*;
/**
 * Created by Reece on 2018/1/28/028.
 */
public class TestImportJxl {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private QuestionnairePrizeDao prizeDao;
    @Autowired
    private WlyyUserRoleService roleService;
    @Test
    public void test()throws Exception{
            Workbook book = Workbook.getWorkbook(new File(
                    "C:\\Users\\Administrator\\Desktop\\奖品表.xls"));
        importData(book);
        }
    /**
     *  导入奖品信息Excel表格
     * @param workbook
     * @return
     * @throws ParseException
     */
    public boolean importData(Workbook workbook) throws ParseException {
        Sheet[] sheets = workbook.getSheets();
        Sheet sheet = sheets[0];
        int rows = ReadExcelUtil.getRightRows(sheet);//表格行数
        List<QuestionnairePrize> prizeList = new ArrayList<>();
        for (int row = 1; row < rows; row++) {  //索引从0开始,第一行为标题
            //读取单行数据并取单元格数据保存到实体类部分字段中(单元格从0开始)
            QuestionnairePrize prize = new QuestionnairePrize();
            //映射实体类部分字段
            Map<Integer, ExcelData> mappingPrize = mappingQuestionnairePrize(prize);
            int finalRow = row;
            mappingPrize.forEach((index, excelData) -> {
                String value = sheet.getCell(index, finalRow).getContents().trim();
                excelData.transform(value);
            });
            //判断导入的奖品资源是否存在,不存在则保存
//            QuestionnairePrize prize = prizeDao.findByPrizeType(1,"");
            if(prize==null){
//                需要从表格取值
                prize = new QuestionnairePrize();
                prize.setCode("");
                prize.setType(1);
                //加密
                String prizeCode = RivaEDCode.passEncode("LUZ7TN3KOT8AWCD3ZA4NBMI5VNF7E50F6XYEP2WZM68JQYY5JE02L4L5FS9R4NGUGMHSCAPW9AL","C3SHUI8OWBOA4ZASS7FEYJ6RIVXA9SW6U5OA56ERUYZTRFHCRZO8AHT4TTW2MAGT80MGXN","");
                prize.setPrizeCode(prizeCode);
                prize.setValidity(new Date());
                prize.setAddress("");
                prize.setUsed(0);
                prize.setDel(0);
                prize.setCreateTime(new Date());
                prize.setUpdateTime(new Date());
                prizeList.add(prize);
            }
        }
        prizeDao.save(prizeList);
        return true;
    }
    public List<UserPrizeVO> searchListCount(String name, String idCard) throws Exception{
        String sql = "SELECT w.user_name, w.user_idcard, w.user_openid, w.prize_type, w.prize_code, p.validity, p.address FROM wlyy_questionnaire_winning w, wlyy_questionnaire_prize p WHERE w.prize_code = p.`code` and w.winning = 1 and w.del = 0 and p.used = 1 and p.del = 0  " +
                "and type = 2";
        if (StringUtils.isNotEmpty(name) && StringUtils.isNotEmpty(idCard)){
            sql += " w.user_name = " + name + " w.user_idcard = " + idCard;
        }else if (StringUtils.isEmpty(name) && StringUtils.isNotEmpty(idCard)){
            sql += " w.user_idcard = " + idCard;
        }else if (StringUtils.isNotEmpty(name) && StringUtils.isEmpty(idCard)){
            sql += " w.user_name = " + name;
        }
        sql += " order by w.idCard desc ";
        List<UserPrizeVO> userPrizeVOList = jdbcTemplate.query(sql,new BeanPropertyRowMapper<UserPrizeVO>());
        return userPrizeVOList;
    }
    private Map<Integer, ExcelData> mappingQuestionnairePrize(QuestionnairePrize prize) {
        Map<Integer, ExcelData> dataMap = new HashMap<>();
        //兑奖码
        dataMap.put(0, new ExcelData() {
            @Override
            public void transform(String data) {
                prize.setPrizeCode(data);
            }
        });
        //有效期
        dataMap.put(1, new ExcelData() {
            @Override
            public void transform(String data) {
                prize.setValidity(new Date());
            }
        });
        //领取地址
        dataMap.put(2, new ExcelData() {
            @Override
            public void transform(String data) {
                prize.setAddress(data);
            }
        });
        return dataMap;
    }
}

+ 1 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/config/SpringSecurityConfig.java

@ -47,6 +47,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
                "/admin/static/pay/prescriptionToExcel",
                "/admin/basedata/importData",
                "/admin/wlyyUserRole/importData",
                "/admin/questionnaire/importData",
                "/WEB—INF/views/**"
        );
    }

+ 79 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/controller/manager/survey/QuestionnaireController.java

@ -0,0 +1,79 @@
package com.yihu.wlyy.controller.manager.survey;
import com.yihu.wlyy.controller.BaseController;
import com.yihu.wlyy.entity.WlyyUserRole;
import com.yihu.wlyy.service.manager.survey.QuestionnaireService;
import com.yihu.wlyy.service.manager.wlyyrole.WlyyUserRoleService;
import com.yihu.wlyy.vo.UserPrizeVO;
import io.swagger.annotations.Api;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
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;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.util.List;
/**
 * Created by yww on 2016/12/13.
 */
@Controller
@RequestMapping("admin/questionnaire")
@Api(description = "管理端问卷奖励管理")
public class QuestionnaireController extends BaseController {
    @Autowired
    private QuestionnaireService questionnaireService;
    @RequestMapping(value = "initial", method = RequestMethod.GET)
    public String initList(){
        return "questionnaire/prize/prize_list";
    }
    @RequestMapping(value = "list")
    @ResponseBody
    public String searchList(
            @RequestParam(value = "name",required = false)String name,
            @RequestParam(value = "idCard",required = false)String idCard,
            @RequestParam(value = "page",required = false)Integer page,
            @RequestParam(value = "rows",required = false)Integer pageSize){
        try{
            List<UserPrizeVO> userprizes = questionnaireService.searchList(name,idCard,page, pageSize);
            List<UserPrizeVO> total = questionnaireService.searchListCount(name,idCard);
            return write(200,"操作成功",page,pageSize,total.size(),userprizes);
        }catch (Exception ex){
            error(ex);
            return error(-1,"操作失败!");
        }
    }
    /*
     * 导入奖品信息Excel表格数据
     * @param request
     * @return
    
     */
    @RequestMapping(value = "/importData", produces = "application/json;charset=UTF-8")
    @ResponseBody
    public String importData(HttpServletRequest request) {
        try {
            request.setCharacterEncoding("UTF-8");
            InputStream inputStream = request.getInputStream();
            Workbook workbook = Workbook.getWorkbook(inputStream);
            questionnaireService.importData(workbook);
            return write(200, "操作成功");
        } catch (IOException | BiffException | ParseException e) {
            e.printStackTrace();
            error(e);
            return error(-1, "操作失败!");
        }
    }
}

+ 24 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/repository/survey/QuestionnairePrizeDao.java

@ -0,0 +1,24 @@
package com.yihu.wlyy.repository.survey;
import com.yihu.wlyy.entity.survey.QuestionnairePrize;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Reece on 2017/01/28
 * 
 */
public interface QuestionnairePrizeDao extends PagingAndSortingRepository<QuestionnairePrize,Long>,JpaSpecificationExecutor<QuestionnairePrize> {
    /**
     * 根据类型及兑奖码查询
     * @param type 1电影票
     * @return 奖品资源
     */
    @Query("select p from QuestionnairePrize p where p.del = 0 and p.type = ?1 and p.prizeCode =?2 ")
    QuestionnairePrize findByPrizeType(Integer type,String prizeCode);
}

+ 159 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/manager/survey/QuestionnaireService.java

@ -0,0 +1,159 @@
package com.yihu.wlyy.service.manager.survey;
import com.yihu.wlyy.entity.HospitalDept;
import com.yihu.wlyy.entity.survey.QuestionnairePrize;
import com.yihu.wlyy.repository.*;
import com.yihu.wlyy.repository.survey.QuestionnairePrizeDao;
import com.yihu.wlyy.service.common.excel.ExcelData;
import com.yihu.wlyy.service.manager.hos.HosDoctorService;
import com.yihu.wlyy.util.MD5;
import com.yihu.wlyy.util.ReadExcelUtil;
import com.yihu.wlyy.util.RivaEDCode;
import com.yihu.wlyy.util.query.BaseJpaService;
import com.yihu.wlyy.vo.SignPayVO;
import com.yihu.wlyy.vo.UserPrizeVO;
import jxl.Sheet;
import jxl.Workbook;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.util.*;
/**
 * Created by yww on 2016/12/13.
 */
@Service
public class QuestionnaireService extends BaseJpaService {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private QuestionnairePrizeDao prizeDao;
    //双层对称加密使用到的KEY
    @Value("${Riva.RIVAED_KEY1}")
    private String key1;//key1值
    @Value("${Riva.RIVAED_KEY2}")
    private String key2;//key2值
    public List<UserPrizeVO> searchList(String name,String idCard,Integer page,Integer pageSize) throws Exception{
        if(page <= 0){
            page = 1;
        }
        if(pageSize <= 0){
            pageSize = 15;
        }
    String sql = "SELECT w.user_name, w.user_idcard, w.user_openid, w.prize_type, w.prize_code, p.validity, p.address FROM wlyy_questionnaire_winning w, wlyy_questionnaire_prize p WHERE w.prize_code = p.`code` and w.winning = 1 and w.del = 0 and p.used = 1 and p.del = 0  " +
            "and type = 2";
        if (StringUtils.isNotEmpty(name) && StringUtils.isNotEmpty(idCard)){
            sql += " w.user_name = " + name + " w.user_idcard = " + idCard;
        }else if (StringUtils.isEmpty(name) && StringUtils.isNotEmpty(idCard)){
            sql += " w.user_idcard = " + idCard;
        }else if (StringUtils.isNotEmpty(name) && StringUtils.isEmpty(idCard)){
            sql += " w.user_name = " + name;
        }
        sql += " order by w.update_time desc limit " + (page-1) +"," +pageSize;
        List<UserPrizeVO> userPrizeVOList = jdbcTemplate.query(sql,new BeanPropertyRowMapper(UserPrizeVO.class));
        return userPrizeVOList;
    }
    public List<UserPrizeVO> searchListCount(String name,String idCard) throws Exception{
    String sql = "SELECT w.user_name, w.user_idcard, w.user_openid, w.prize_type, w.prize_code, p.validity, p.address FROM wlyy_questionnaire_winning w, wlyy_questionnaire_prize p WHERE w.prize_code = p.`code` and w.winning = 1 and w.del = 0 and p.used = 1 and p.del = 0  " +
            "and type = 2";
        if (StringUtils.isNotEmpty(name) && StringUtils.isNotEmpty(idCard)){
            sql += " w.user_name = " + name + " w.user_idcard = " + idCard;
        }else if (StringUtils.isEmpty(name) && StringUtils.isNotEmpty(idCard)){
            sql += " w.user_idcard = " + idCard;
        }else if (StringUtils.isNotEmpty(name) && StringUtils.isEmpty(idCard)){
            sql += " w.user_name = " + name;
        }
        sql += " order by w.idCard desc ";
        List<UserPrizeVO> userPrizeVOList = jdbcTemplate.query(sql,new BeanPropertyRowMapper<UserPrizeVO>());
        return userPrizeVOList;
    }
    /**
     *  导入奖品信息Excel表格
     * @param workbook
     * @return
     * @throws ParseException
     */
    public boolean importData(Workbook workbook) throws ParseException {
        Sheet[] sheets = workbook.getSheets();
        Sheet sheet = sheets[0];
        int rows = ReadExcelUtil.getRightRows(sheet);
        List<QuestionnairePrize> prizeList = new ArrayList<>();
        for (int row = 1; row < rows; row++) {  //索引从0开始,第一行为标题
            //读取单行数据并取单元格数据保存到实体类部分字段中(单元格从0开始)
            QuestionnairePrize prize = new QuestionnairePrize();
            //映射实体类部分字段
            Map<Integer, ExcelData> mappingPrize = mappingQuestionnairePrize(prize);
            int finalRow = row;
            mappingPrize.forEach((index, excelData) -> {
                String value = sheet.getCell(index, finalRow).getContents().trim();
                excelData.transform(value);
            });
            //判断导入的奖品资源是否存在,不存在则保存
            QuestionnairePrize existPrize = prizeDao.findByPrizeType(1,prize.getPrizeCode());
            if(existPrize == null){
                //                需要从表格取值
                prize.setCode(getCode());
                prize.setType(1);
                prize.setUsed(0);
                prize.setDel(0);
                prize.setCreateTime(new Date());
                prize.setUpdateTime(new Date());
                prizeList.add(prize);
            }
        }
        prizeDao.save(prizeList);
        return true;
    }
    /**
     * //映射实体类部分字段
     * @param prize 奖品资源
     * @return
     */
    private Map<Integer, ExcelData> mappingQuestionnairePrize(QuestionnairePrize prize) {
        Map<Integer, ExcelData> dataMap = new HashMap<>();
        //兑奖码
        dataMap.put(0, new ExcelData() {
            @Override
            public void transform(String data) {
                //加密
                String prizeCode = RivaEDCode.passEncode(key1,key2,data);
                prize.setPrizeCode(prizeCode);
            }
        });
        //有效期
        dataMap.put(1, new ExcelData() {
            @Override
            public void transform(String data) {
                prize.setValidity(new Date());
            }
        });
        //领取地址
        dataMap.put(2, new ExcelData() {
            @Override
            public void transform(String data) {
                prize.setAddress(data);
            }
        });
        return dataMap;
    }
}

+ 182 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/util/RivaEDCode.java

@ -0,0 +1,182 @@
package com.yihu.wlyy.util;
/**
 * Riva双向加密,解密算法实现
 * @author huangwenjie
 * @date 2018/1/27 14:36
 */
public class RivaEDCode {
	/**
	 * 16进制转换成10进制
	 *
	 * @param hexString 要进行转换的16进制数字字符串
	 * @return Sring
	 * @throws Exception
	 */
	public static String hextoString(String hexString)
	{
		
		String hexStr = "";
		
		int i;
		int k = 0;
		
		int str1 = 0;
		int str2 = 0;
		
		// 每次取得两个16进制数字字符
		char str3 = hexString.charAt(0);
		char str4 = hexString.charAt(1);
		
		// 定义16进制字符所对应的数值,每个16进制数值对应为数组的索引值
		char myarray[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
		
		for(i = 0; i < myarray.length; i++)
		{
			// 对应16进制字符所对应的数值
			if(myarray[i] == str3)
			{
				str1 = i;
			}
			
			if(myarray[i] == str4)
			{
				str2 = i;
			}
		}
		
		// 换算成10进制数字
		k = str1 * 16 + str2;
		
		hexStr = Integer.toString(k);
		
		return hexStr;
	}
	
	/**
	 * @param encode_str1 字符串一
	 * @param encode_str2 需要加密的字符串
	 * @return String 加密后的字符串
	 * @throws Exception
	 */
	public static String uncPassEncode(String encode_str1, String encode_str2)
	{
		
		String passString = "";
		
		String str = "";
		int userLens = encode_str1.length();
		int passLens = encode_str2.length();
		
		int userPos = 0;
		int passPos = 0;
		
		while (passPos < passLens)
		{
			
			char acii1 = encode_str2.charAt(passPos);
			char acii2 = encode_str1.charAt(userPos);
			
			str += Integer.toHexString(acii1 + acii2);
			userPos++;
			
			if(userPos >= userLens)
				userPos = 0;
			passPos++;
		}
		
		passString = str.toUpperCase();
		
		return passString;
	}
	
	
	/**
	 * 解密用riva加密算法加密的字符串
	 *
	 * @param encode_str1 字符串
	 * @param encode_str2 需要解密的密文
	 * @return String 解密的明文
	 * @throws Exception
	 * @throws NumberFormatException
	 * @throws Exception
	 */
	public static String uncPassDecode(String encode_str1, String encode_str2)
	{
		
		String decodePassStr = "";
		// String en1;
		// String en2;
		
		int userLens = encode_str1.length();
		int passLens = encode_str2.length();
		
		int userPos = 0;
		int passPos = 0;
		
		while (passPos < passLens - 1)
		{
            /*
             * 16进制转换成10进制
             */
			int str1 = Integer.parseInt(hextoString(encode_str2.substring(passPos, passPos + 2)));
			
			int str2 = encode_str1.charAt(userPos);
			
			decodePassStr += String.valueOf((char)(str1 - str2));
			
			userPos++;
			
			if(userPos >= userLens)
				userPos = 0;
			
			passPos += 2;
		}
		
		return decodePassStr;
	}
	
	/**
	 * 双重解密riva算法加密的密文
	 *
	 * @param str1 字符串1
	 * @param str2 字符串2
	 * @param key 加密的密文
	 * @return String 解密后的明文
	 * @throws Exception
	 */
	public static String passDecode(String str1, String str2, String key)
	{
		
		return uncPassDecode(str1, uncPassDecode(str2, key));
		
	}
	
	/**
	 * 利用riva加密算法双重加密字符串
	 *
	 * @param str1 字符串1
	 * @param key 需要加密字符串
	 * @param str2 字符串2
	 * @return String 经过加密的字符串
	 * @throws Exception
	 */
	public static String passEncode(String str1, String str2, String key)
	{
		
		return uncPassEncode(str2, uncPassEncode(str1, key));
		
	}
	
	
	//测试-加密解密
	public static void main(String[] args)
	{
		//解密
//		System.out.println(RivaEDCode.passDecode("LUZ7TN3KOT8AWCD3ZA4NBMI5VNF7E50F6XYEP2WZM68JQYY5JE02L4L5FS9R4NGUGMHSCAPW9AL","C3SHUI8OWBOA4ZASS7FEYJ6RIVXA9SW6U5OA56ERUYZTRFHCRZO8AHT4TTW2MAGT80MGXN","7A778B7F8D8D6E918F7B87756A9B"));
		
		//加密
//		System.out.println(RivaEDCode.passEncode("LUZ7TN3KOT8AWCD3ZA4NBMI5VNF7E50F6XYEP2WZM68JQYY5JE02L4L5FS9R4NGUGMHSCAPW9AL","C3SHUI8OWBOA4ZASS7FEYJ6RIVXA9SW6U5OA56ERUYZTRFHCRZO8AHT4TTW2MAGT80MGXN","1234567"));
	}
}

+ 80 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/vo/UserPrizeVO.java

@ -0,0 +1,80 @@
package com.yihu.wlyy.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.wlyy.util.RivaEDCode;
import org.springframework.beans.factory.annotation.Value;
import javax.persistence.Entity;
import javax.xml.crypto.Data;
/**
 * Created by Reece on 2018/01/27
 * 中奖者列表展示页
 */
public class UserPrizeVO {
	private String userName;        //中奖人姓名
	private String userIdcard;     //中奖人身份证
	private String userOpenid;      //中奖人openid
	private Integer prizeType;      //奖品类型:1电影票
	private String prizeCode;       //奖品兑换码
	private Data validity;    //奖品有效期
	private String address;   //'兑奖地址'
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserIdcard() {
		return userIdcard;
	}
	public void setUserIdcard(String userIdcard) {
		this.userIdcard = userIdcard;
	}
	public String getUserOpenid() {
		return userOpenid;
	}
	public void setUserOpenid(String userOpenid) {
		this.userOpenid = userOpenid;
	}
	public Integer getPrizeType() {
		return prizeType;
	}
	public void setPrizeType(Integer prizeType) {
		this.prizeType = prizeType;
	}
	public String getPrizeCode() {
		return prizeCode;
	}
	public void setPrizeCode(String prizeCode) {
		this.prizeCode = prizeCode;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Data getValidity() {
		return validity;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public void setValidity(Data validity) {
		this.validity = validity;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
}

+ 17 - 0
patient-co-manage/wlyy-manage/src/main/resources/application.yml

@ -135,6 +135,12 @@ wechat:
#测试模式是否开启,用于构造第三方接口数据 0关闭,1开启
testPattern:
  sign: 0
#系统中使用的双层对称加密使用到的KEY
Riva:
  RIVAED_KEY1: LUZ7TN3KOT8AWCD3ZA4NBMI5VNF7E50F6XYEP2WZM68JQYY5JE02L4L5FS9R4NGUGMHSCAPW9AL
  RIVAED_KEY2: C3SHUI8OWBOA4ZASS7FEYJ6RIVXA9SW6U5OA56ERUYZTRFHCRZO8AHT4TTW2MAGT80MGXN
---
spring:
  profiles: test
@ -215,6 +221,12 @@ wechat:
#测试模式是否开启,用于构造第三方接口数据 0关闭,1开启
testPattern:
  sign: 1
#系统中使用的双层对称加密使用到的KEY
Riva:
  RIVAED_KEY1: LUZ7TN3KOT8AWCD3ZA4NBMI5VNF7E50F6XYEP2WZM68JQYY5JE02L4L5FS9R4NGUGMHSCAPW9AL
  RIVAED_KEY2: C3SHUI8OWBOA4ZASS7FEYJ6RIVXA9SW6U5OA56ERUYZTRFHCRZO8AHT4TTW2MAGT80MGXN
---
spring:
  profiles: prod
@ -295,3 +307,8 @@ wechat:
#测试模式是否开启,用于构造第三方接口数据 0关闭,1开启
testPattern:
  sign: 0
#系统中使用的双层对称加密使用到的KEY
Riva:
  RIVAED_KEY1: LUZ7TN3KOT8AWCD3ZA4NBMI5VNF7E50F6XYEP2WZM68JQYY5JE02L4L5FS9R4NGUGMHSCAPW9AL
  RIVAED_KEY2: C3SHUI8OWBOA4ZASS7FEYJ6RIVXA9SW6U5OA56ERUYZTRFHCRZO8AHT4TTW2MAGT80MGXN

+ 3 - 3
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/basedata/basedata_list.jsp

@ -74,13 +74,13 @@
			</div>
		</sec:authorize>
		<sec:authorize url="/admin/wlyyUserRole/importData">
		<sec:authorize url="/admin/questionnaire/importData">
			<div style="font-family:微软雅黑;font-size:Small;display:block;clear:left;padding:0;margin:0;margin-left: 5px">
				<div style="position:relative;display:inline;left:10px;top:8px;white-space:nowrap;text-align:center;background-color:#ffffff;font-weight:bold">导入电影票</div>
				<div style="position:relative;display:inline;left:10px;top:8px;white-space:nowrap;text-align:center;background-color:#ffffff;font-weight:bold">导入奖品</div>
				<div style="height:90px;width:400px;border:#dde7f1 1px solid;">
					<div style="text-align:center;margin:0 auto;padding-top: 25px;">
						<div id="import_film_ticket">
							<div id="user__film_ticket">导入电影票</div>
							<div id="user_film_ticket">导入奖品</div>
						</div>
					</div>
				</div>

+ 13 - 8
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/basedata/basedata_list_js.jsp

@ -186,6 +186,7 @@
//                        })
          });
            /* ************************* 导入管理员 ************************** */
            var import_user_role_uploader = $("#import_user_role").webupload({
                server: ctx + "/admin/wlyyUserRole/importData",
@ -225,10 +226,11 @@
//                        })
            });
            /* ************************* 导入管理员 ************************** */
            var import_user_role_uploader = $("#import_user_role").webupload({
                server: ctx + "/admin/wlyyUserRole/importData",
                pick: {id: '#user_role_file'},
            /* ************************* 导入奖品信息 ************************** */
            var import_film_ticket_uploader = $("#import_film_ticket").webupload({
                server: ctx + "/admin/questionnaire/importData",
                pick: {id: '#user_film_ticket'},
                accept: {
                    title: 'Excel',
                    extensions: 'xls',
@ -237,21 +239,21 @@
                auto: true
            });
            import_user_role_uploader.on('beforeSend', function (file, data, headers) {
            import_film_ticket_uploader.on('beforeSend', function (file, data, headers) {
//                        data.orgCode = orgCode;
//                        data.orgName = orgName;
//						headers = {ajaxHeaderName:ajaxHeaderValue};
            });
            import_user_role_uploader.on('uploadProgress', function (file, percentage) {
            import_film_ticket_uploader.on('uploadProgress', function (file, percentage) {
                $.ligerDialog.waitting('正在保存中,请稍候...');
            });
            import_user_role_uploader.on('uploadError', function (file) {
            import_film_ticket_uploader.on('uploadError', function (file) {
                $.ligerDialog.closeWaitting();
                $.Notice.error("上传失败!");
            });
            import_user_role_uploader.on('uploadSuccess', function (file, resp) {
            import_film_ticket_uploader.on('uploadSuccess', function (file, resp) {
                $.ligerDialog.closeWaitting();
//                        window.sessionStorage.setItem("resultData", JSON.stringify(resp.data));
                $.Notice.success("上传成功。");
@ -264,6 +266,9 @@
//                        })
            });
        }
      };

+ 3 - 0
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/main.jsp

@ -158,6 +158,9 @@
							<sec:authorize url="/admin/surveyTemplate/initial">
								<li><a href="javascript:locationMenu('surveyTemplate');">问卷模板管理</a></li>
							</sec:authorize>
							<sec:authorize url="/admin/questionnaire/initial">
								<li><a href="javascript:locationMenu('questionnaire');">幸运名单</a></li>
							</sec:authorize>
							<sec:authorize url="/admin/survey/center">
						</ul>
					</div>

+ 35 - 0
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/questionnaire/prize/prize_list.jsp

@ -0,0 +1,35 @@
<%@ page contentType="text/html; charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
<!DOCTYPE html>
<html lang="en">
<head>
	<%@ include file="../../head/page_head.jsp" %>
	<title>数据范围管理</title>
</head>
<body>
<div id="div_wrapper">
	<!-- 检索条件 -->
	<div class="m-retrieve-area f-h50 f-dn f-pr m-form-inline" data-role-form style='display: block;'>
		<div class="m-form-group f-mt10">
			<div class="m-form-control f-ml15">
				<input type="text" id="inp_name" placeholder="请输入医生姓名" class="f-ml10" data-attr-scan="name"/>
			</div>
			<div class="m-form-control f-ml15">
				<input type="text" id="inp_mobile" placeholder="请输入身份证号" class="f-ml10" data-attr-scan="mobile"/>
			</div>
			<sec:authorize url="/admin/questionnaire/list">
			<div id="btn_search" class="l-button u-btn u-btn-primary u-btn-small f-ib f-vam  f-ml10" >
				<span>查询</span>
			</div>
			</sec:authorize>
		</div>
	</div>
	<!-- 列表 -->
	<div id="div_user_list">
	</div>
</div>
</body>
<%@ include file="../../head/page_foot.jsp" %>
<%@ include file="prize_list_js.jsp" %>
</html>

+ 120 - 0
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/questionnaire/prize/prize_list_js.jsp

@ -0,0 +1,120 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8" %>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
<script>
	(function ($, win) {
		$(function () {
			/* ************************** 变量定义 ******************************** */
			// 通用工具类库
			var Util = $.Util;
			var retrieve = null;
			var master = null;
			var isFirstPage = false;
			/* *************************** 函数定义 ******************************* */
			function pageInit() {
				retrieve.init();
				master.init();
			}
			function reloadGrid(params) {
				if (isFirstPage) {
					this.grid.options.newPage = 1;
				}
				this.grid.setOptions({parms: params});
				this.grid.loadData(true);
			}
			/* *************************** 模块初始化 ***************************** */
			retrieve = {
				$element: $('.m-retrieve-area'),
				$searchBtn: $('#btn_search'),
				$addBtn: $('#btn_add'),
				$name: $("#inp_name"),//人员姓名
				$code: $("#inp_code"),//医生code
				$mobile: $("#inp_mobile"),
				$hospital: $("#inp_hospital"),//医院code
				init: function () {
					this.$element.show();
					this.$element.attrScan();
					window.form = this.$element;
					this.$name.ligerTextBox({width: 200}); //姓名
					this.$code.ligerTextBox({width: 200}); //姓名
					this.$mobile.ligerTextBox({width: 200})//手机号
					this.$hospital.ligerTextBox({width: 200})//医院code
					this.bindEvents();
				},
				bindEvents: function () {
					var self = this;
					self.$searchBtn.click(function () {
						master.grid.options.newPage = 1;
						master.reloadGrid();
					});
					self.$addBtn.click(function () {
						$.publish("info:create", [''])
					});
				}
			};
			master = {
				infoDialog: null,
				grid: null,
				init: function () {
					var data;
					this.grid = $("#div_user_list").ligerGrid($.LigerGridEx.config({
						url: ctx + 'list',
						parms: {},
						ajaxHeader: ajaxHeaderName,
						ajaxHeaderValue: ajaxHeaderValue,
						columns: [
							{display: 'ID', name: 'id', hide: true},
							{display: '医生编码', name: 'code', width: '20%', align: "center"},
							{display: '医生姓名', name: 'name', width: '8%', align: "center"},
                            {
                                display: '性别', name: 'sex', width: '5%', align: "center",
                                render: function (item) {
                                    if (!item.sex | item.sex == 0) return "未知";
                                    if (parseInt(item.sex) == 1) return '男';
                                    if (parseInt(item.sex) == 2) return '女';
                                    return '未知';
                                }
                            },
							{display: '身份证号', name: 'idCard', width: '12%', align: "center"},
							{display: '手机号码', name: 'mobile', width: '10%', align: "center"},
							{display: '机构编码', name: 'hospital', width: '10%', align: "center"},
							{display: '所属机构', name: 'hospitalName', width: '20%', align: "left"},
						],
					}));
					// 自适应宽度
					this.grid.adjustToWidth();
					this.bindEvents();
				},
				reloadGrid: function (msg) {
					if (msg) {
						//如果是新增,直接刷新页面
						master.grid.loadData();
					} else {
						//如果是查询
						retrieve.$element.attrScan();
						var values = retrieve.$element.Fields.getValues();
						reloadGrid.call(this, values);
					}
				},
			};
			/* ************************* Dialog页面回调接口 ************************** */
			win.reloadMasterGrid = function (msg) {
				if (isNoEmpty(msg)) {
					$.Notice.success(msg);
				}
				master.reloadGrid(msg);
			};
			win.closeUserInfoDialog = function () {
				master.infoDialog.close();
			};
			/* *************************** 页面初始化 **************************** */
			pageInit();
		});
	})(jQuery, window);
</script>

+ 1 - 0
patient-co-manage/wlyy-manage/src/main/webapp/static/js/menu.js

@ -43,6 +43,7 @@ var menu = {
    //问卷调查管理
    "surveyQuestion": "/admin/surveyQuestion/initial",//问题管理界面
    "surveyTemplate": "/admin/surveyTemplate/initial",//问题模板管理界面
    "questionnaire": "/admin/questionnaire/initial",//问卷获奖界面
    //意见反馈与账号申诉
    "feedback": "/admin/feedback/initial",//意见反馈界面

+ 19 - 17
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/SignWebService.java

@ -944,25 +944,26 @@ public class SignWebService extends BaseService {
        }
        Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));
        int year = calendar.get(Calendar.YEAR);
        String yearBegin = DateUtil.dateToStrShort(beginTime) + " 00:00:00";
        String yearEnd = DateUtil.dateToStrShort(endTime) + " 23:59:59";
        //统计当年咨询数量
        String consult_sql = "select count(1) as count from wlyy_consult_team  w where w.doctor = ? and w.patient =? and YEAR(w.czrq) = ? ";
        String consult_sql = "select count(1) as count from wlyy_consult_team  w where w.doctor = ? and w.patient =? and w.czrq>='"+yearBegin+"' and w.czrq<'"+yearEnd+"'";
        //统计随访数量
        String followup_sql = "select count(1) as count from wlyy_followup  w where (w.doctor_code = ? or w.doctor_code =?) and w.patient_code =? and YEAR(w.create_time) = ?  and w.followup_class is not null ";
        String followup_sql = "select count(1) as count from wlyy_followup  w where (w.doctor_code = ? or w.doctor_code =?) and w.patient_code =? and w.create_time>='"+yearBegin+"' and w.create_time<'"+yearEnd+"'  and w.followup_class is not null ";
        //统计待预约数量
        String reservation_sql = "select count(1) as count from wlyy_patient_reservation  w where (w.doctor = ? or w.doctor =?) and w.patient =? and YEAR(w.czrq) = ? ";
        String reservation_sql = "select count(1) as count from wlyy_patient_reservation  w where (w.doctor = ? or w.doctor =?) and w.patient =? and w.czrq>='"+yearBegin+"' and w.czrq<'"+yearEnd+"'";
        //统计健康教育数量
        String yearBegin = DateUtil.dateToStrShort(beginTime) + " 00:00:00";
        String yearEnd = DateUtil.dateToStrShort(endTime) + " 23:59:59";
        String start = elasticsearchUtil.changeTime(yearBegin);
        String end = elasticsearchUtil.changeTime(yearEnd);
//        String article_sql = "select count(1) as count from wlyy_health_edu_article_patient  w where (w.doctor = ? or w.doctor =?) and w.patient =? and YEAR(w.czrq) = ? ";
        String article_sql = "SELECT COUNT(*) FROM "+esIndex+" where userType='1' and patientCode='"+patient+"' and (doctorCode='"+doctorHealth+"' or doctorCode='"+doctor+"') and createTime>='"+start+"' and createTime<'"+end+"'";
        //统计健康指导数量
        String guidance_sql = "select count(1) as count from wlyy_patient_health_guidance  w where (w.doctor = ? or w.doctor =?) and w.patient =? and YEAR(w.czrq) = ? ";
        String guidance_sql = "select count(1) as count from wlyy_patient_health_guidance  w where (w.doctor = ? or w.doctor =?) and w.patient =? and w.czrq>='"+yearBegin+"' and w.czrq<'"+yearEnd+"'";
        StringBuffer countSql = new StringBuffer();
        countSql.append(consult_sql).append(" union all ").append(followup_sql).append(" union all ").append(reservation_sql).append(" union all ").append(guidance_sql);
        List<Map<String, Object>> resultCount = jdbcTemplate.queryForList(countSql.toString(), new Object[]{doctorHealth, patient, year, doctorHealth, doctor, patient, year, doctorHealth, doctor, patient, year,  doctorHealth, doctor, patient, year});
        List<Map<String, Object>> resultCount = jdbcTemplate.queryForList(countSql.toString(), new Object[]{doctorHealth, patient, doctorHealth, doctor, patient,  doctorHealth, doctor, patient,  doctorHealth, doctor, patient});
        Long count = elasticsearchUtil.excuteForLong(article_sql,esType,esIndex);
        resultObject.put("consultNum", resultCount.get(0).get("count"));
        resultObject.put("followupNum", resultCount.get(1).get("count"));
@ -1056,18 +1057,19 @@ public class SignWebService extends BaseService {
        String doctor = signFamily.getDoctor();
        Patient p = patientService.findByCode(signFamily.getPatient());
        String patient = p.getCode();
        String yearBegin = DateUtil.dateToStrShort(signFamily.getBegin()) + " 00:00:00";
        String yearEnd = DateUtil.dateToStrShort(signFamily.getEnd()) + " 23:59:59";
        //获取咨询
        String consult_sql = "select w.consult,w.symptoms,w.czrq,w.status,1 as type from wlyy_consult_team  w where w.doctor = ? and w.patient =? and YEAR(w.czrq) = ? ";
        String consult_sql = "select w.consult,w.symptoms,w.czrq,w.status,1 as type from wlyy_consult_team  w where w.doctor = ? and w.patient =? and w.czrq>='"+yearBegin+"' and w.czrq<'"+yearEnd+"'";
        //获取随访
        String followup_sql = "select w.id,w.followup_type,w.followup_class,w.followup_date as czrq,w.followup_manager_status,w.status,2 as type from wlyy_followup  w where (w.doctor_code = ? or w.doctor_code =?) and w.patient_code =? and YEAR(w.create_time) = ?  ";
        String followup_sql = "select w.id,w.followup_type,w.followup_class,w.followup_date as czrq,w.followup_manager_status,w.status,2 as type from wlyy_followup  w where (w.doctor_code = ? or w.doctor_code =?) and w.patient_code =? and w.create_time>='"+yearBegin+"' and w.create_time<'"+yearEnd+"' and w.followup_class is not null";
        //获取待预约
        String reservation_sql = "select w.code,w.id, w.doctor_name,w.doctor_code,w.doctor_job,w.doctor,w.dname,w.org_code,w.status,w.start_time as czrq,3 as type from wlyy_patient_reservation  w where (w.doctor = ? or w.doctor =?) and w.patient =? and YEAR(w.czrq) = ? ";
        String reservation_sql = "select w.code,w.id, w.doctor_name,w.doctor_code,w.doctor_job,w.doctor,w.dname,w.org_code,w.status,w.start_time as czrq,3 as type from wlyy_patient_reservation  w where (w.doctor = ? or w.doctor =?) and w.patient =? and w.czrq>='"+yearBegin+"' and w.czrq<'"+yearEnd+"'";
        //获取健康教育
//        String article_sql = "select w.id,w.article,w2.title,w2.summary,w.czrq,w.doctor,w.doctor_name,w.is_read,4 as type from wlyy_health_edu_article_patient  w,wlyy_health_edu_article w2 where w.article = w2.code and  (w.doctor = ? or w.doctor =?) and w.patient =? and YEAR(w.czrq) = ? ";
//        Date startTime = DateUtil.getBeginDayOfYear();
//        Date endTime = DateUtil.getEndDayOfYear();
        String yearBegin = DateUtil.dateToStrShort(signFamily.getBegin()) + " 00:00:00";
        String yearEnd = DateUtil.dateToStrShort(signFamily.getEnd()) + " 23:59:59";
//        String startDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(startTime);
//        String endDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(endTime);
        String start = elasticsearchUtil.changeTime(yearBegin);
@ -1075,16 +1077,16 @@ public class SignWebService extends BaseService {
        String article_sql = "SELECT id,articleId as article,articleTitle as title,createTime as czrq,doctorCode as doctor,doctorName as doctor_name,isRead as is_read,articleContent as content FROM "+esIndex+" where userType='1' and patientCode='"+patient+"' and (doctorCode='"+doctorHealth+"' or doctorCode='"+doctor+"') and createTime>='"+start+"' and createTime<'"+end+"'";
        //获取健康指导
        String guidance_sql = "select w.id,w.doctor,w.content,w.czrq,w.read_status,5 as type  from wlyy_patient_health_guidance  w where (w.doctor = ? or w.doctor =?) and w.patient =? and YEAR(w.czrq) = ? ";
        String guidance_sql = "select w.id,w.doctor,w.content,w.czrq,w.read_status,5 as type  from wlyy_patient_health_guidance  w where (w.doctor = ? or w.doctor =?) and w.patient =? and w.czrq>='"+yearBegin+"' and  w.czrq<'"+yearEnd+"'";
        Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));
        int year = calendar.get(Calendar.YEAR);
        //咨询量
        List<Map<String, Object>> consultResult = jdbcTemplate.queryForList(consult_sql, new Object[]{doctorHealth, patient, year});
        List<Map<String, Object>> consultResult = jdbcTemplate.queryForList(consult_sql, new Object[]{doctorHealth, patient});
        //随访量
        List<Map<String, Object>> followupResult = jdbcTemplate.queryForList(followup_sql, new Object[]{doctorHealth, doctor, patient, year});
        List<Map<String, Object>> followupResult = jdbcTemplate.queryForList(followup_sql, new Object[]{doctorHealth, doctor, patient});
        //待预约量
        List<Map<String, Object>> reservationResult = jdbcTemplate.queryForList(reservation_sql, new Object[]{doctorHealth, doctor, patient, year});
        List<Map<String, Object>> reservationResult = jdbcTemplate.queryForList(reservation_sql, new Object[]{doctorHealth, doctor, patient});
        //健康教育量
//        List<Map<String, Object>> articleResult = jdbcTemplate.queryForList(article_sql, new Object[]{doctorHealth, doctor, patient, year});
//        List<HealthEduArticleES> esList = elasticsearchUtil.excute(article_sql, HealthEduArticleES.class, esIndex, esType);
@ -1098,7 +1100,7 @@ public class SignWebService extends BaseService {
            map.put("summary",str!=null?(str.length()>40?str.substring(0,40):str):"");
        }
        //健康指导量
        List<Map<String, Object>> guidanceResult = jdbcTemplate.queryForList(guidance_sql, new Object[]{doctorHealth, doctor, patient, year});
        List<Map<String, Object>> guidanceResult = jdbcTemplate.queryForList(guidance_sql, new Object[]{doctorHealth, doctor, patient});
        List<JSONObject> objects = new ArrayList<>();
        int amount = consultResult.size() + followupResult.size() + reservationResult.size() + articleResult.size() + guidanceResult.size();
        int activeAmount = 0;