Переглянути джерело

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

yeshijie 7 роки тому
батько
коміт
ecb8a4dc45
42 змінених файлів з 1891 додано та 255 видалено
  1. 5 6
      common/common-entity/src/main/java/com/yihu/es/entity/HealthEduArticlePatientDTO.java
  2. 21 0
      common/common-entity/src/main/java/com/yihu/wlyy/entity/doctor/survey/SurveyAnswers.java
  3. 24 0
      common/common-entity/src/main/java/com/yihu/wlyy/entity/doctor/survey/SurveyOptionAnswers.java
  4. 109 0
      common/common-entity/src/main/java/com/yihu/wlyy/entity/questionnaire/QuestionnairePrize.java
  5. 112 0
      common/common-entity/src/main/java/com/yihu/wlyy/entity/questionnaire/QuestionnaireUsers.java
  6. 122 0
      common/common-entity/src/main/java/com/yihu/wlyy/entity/questionnaire/QuestionnaireWinning.java
  7. 211 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/controller/manager/user/ManageRangeController.java
  8. 11 7
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/repository/DoctorDao.java
  9. 42 40
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/manager/user/ManageRangeService.java
  10. 13 0
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/basedata/basedata_list.jsp
  11. 40 0
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/basedata/basedata_list_js.jsp
  12. 3 0
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/main.jsp
  13. 2 2
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/user/range/user_role_add.jsp
  14. 107 19
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/user/range/user_role_add_js.jsp
  15. 1 1
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/user/range/user_role_list.jsp
  16. 21 20
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/user/range/user_role_list_js.jsp
  17. 20 15
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/user/range/user_role_modify.jsp
  18. 72 108
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/user/range/user_role_modify_js.jsp
  19. 0 1
      patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/user/user_modify_js.jsp
  20. 1 0
      patient-co-manage/wlyy-manage/src/main/webapp/static/js/menu.js
  21. 57 0
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/GuahaoController.java
  22. 4 8
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/guahao/GuahaoService.java
  23. 10 16
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/template/DoctorFeldsherTemplateService.java
  24. 3 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/doctor/SurveyTemplateOptionsDao.java
  25. 23 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/questionnaire/QuestionnaireUsersDao.java
  26. 17 5
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/SignWebService.java
  27. 3 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/imm/ChildFamilyImmuneService.java
  28. 32 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/questionnaire/QuestionnaireUsersService.java
  29. 78 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/survey/PatientQuestionnaireService.java
  30. 306 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/third/guahao/ImmuneService.java
  31. 182 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/RivaEDCode.java
  32. 74 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/common/util/CaptchaController.java
  33. 36 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/booking/PatientBookingController.java
  34. 39 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/questionnaire/QuestionnaireUsersController.java
  35. 54 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/survey/PatientQuestionnaireController.java
  36. 2 2
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/third/jkedu/service/EduArticleService.java
  37. 5 0
      patient-co/patient-co-wlyy/src/main/resources/application-dev.yml
  38. 5 0
      patient-co/patient-co-wlyy/src/main/resources/application-devtest.yml
  39. 6 1
      patient-co/patient-co-wlyy/src/main/resources/application-local.yml
  40. 6 1
      patient-co/patient-co-wlyy/src/main/resources/application-localtest.yml
  41. 6 1
      patient-co/patient-co-wlyy/src/main/resources/application-prod.yml
  42. 6 1
      patient-co/patient-co-wlyy/src/main/resources/application-test.yml

+ 5 - 6
common/common-entity/src/main/java/com/yihu/es/entity/HealthEduArticlePatientDTO.java

@ -33,7 +33,7 @@ public class HealthEduArticlePatientDTO {
    // 文章内容
    private String content;
    // 是否已读:0已读,1未读
    private Integer read;
    private Integer isRead;
    // 发布时间
    private Date czrq;
    // 签约类型 1三师 2家庭
@ -151,13 +151,12 @@ public class HealthEduArticlePatientDTO {
        this.content = content;
    }
    @Column(name = "is_read")
    public Integer getRead() {
        return read;
    public Integer getIsRead() {
        return isRead;
    }
    public void setRead(Integer read) {
        this.read = read;
    public void setIsRead(Integer isRead) {
        this.isRead = isRead;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")

+ 21 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/doctor/survey/SurveyAnswers.java

@ -26,6 +26,9 @@ public class SurveyAnswers extends IdEntity implements Serializable {
//    创建时间
    private Date createTime;
//    用户openId
    private String openId;
    public SurveyAnswers() {
    }
@ -38,6 +41,16 @@ public class SurveyAnswers extends IdEntity implements Serializable {
        this.createTime = createTime;
    }
    public SurveyAnswers(String code, String surveyCode, String patient, String questionCode, String content, Date createTime, String openId) {
        this.code = code;
        this.surveyCode = surveyCode;
        this.patient = patient;
        this.questionCode = questionCode;
        this.content = content;
        this.createTime = createTime;
        this.openId = openId;
    }
    public Date getCreateTime() {
        return createTime;
    }
@ -85,4 +98,12 @@ public class SurveyAnswers extends IdEntity implements Serializable {
    public void setContent(String content) {
        this.content = content;
    }
    public String getOpenId() {
        return openId;
    }
    public void setOpenId(String openId) {
        this.openId = openId;
    }
}

+ 24 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/doctor/survey/SurveyOptionAnswers.java

@ -30,6 +30,9 @@ public class SurveyOptionAnswers extends IdEntity implements Serializable {
//    创建时间
    private Date createTime;
//    用户openId
    private String openId;
    public SurveyOptionAnswers() {
    }
@ -44,6 +47,19 @@ public class SurveyOptionAnswers extends IdEntity implements Serializable {
        this.createTime = createTime;
    }
    public SurveyOptionAnswers(String code, String patient, String surveyCode, String questionCode, String optionsCode, String optionComment, int answerType, Date createTime,String openId) {
        this.code = code;
        this.patient = patient;
        this.surveyCode = surveyCode;
        this.questionCode = questionCode;
        this.optionsCode = optionsCode;
        this.optionComment = optionComment;
        this.answerType = answerType;
        this.createTime = createTime;
        this.openId = openId;
    }
    public Date getCreateTime() {
        return createTime;
    }
@ -107,4 +123,12 @@ public class SurveyOptionAnswers extends IdEntity implements Serializable {
    public void setAnswerType(int answerType) {
        this.answerType = answerType;
    }
    public String getOpenId() {
        return openId;
    }
    public void setOpenId(String openId) {
        this.openId = openId;
    }
}

+ 109 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/questionnaire/QuestionnairePrize.java

@ -0,0 +1,109 @@
package com.yihu.wlyy.entity.questionnaire;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
 * 调查问卷奖品表
 * @author huangwenjie
 * @date 2018/1/27 14:22
 */
@Entity
@Table(name = "wlyy_questionnaire_prize")
public class QuestionnairePrize extends IdEntity implements Serializable {
	private static final long serialVersionUID = 8358924836164389434L;
	
	// 业务主键
	private String code;
	//奖品类型:1电影票
	private Integer type;
	//奖品兑奖码
	private String prizeCode;
	//奖品有效期
	private Date validity;
	//兑奖地址
	private String address;
	//0为未使用,1为已使用
	private Integer used;
	//0为有效,1为删除
	private Integer del;
	private Date create_time;
	private Date update_time;
	
	public String getCode() {
		return code;
	}
	
	public void setCode(String code) {
		this.code = code;
	}
	
	public Integer getType() {
		return type;
	}
	
	public void setType(Integer type) {
		this.type = type;
	}
	
	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 Date getValidity() {
		return validity;
	}
	
	public void setValidity(Date validity) {
		this.validity = validity;
	}
	
	public String getAddress() {
		return address;
	}
	
	public void setAddress(String address) {
		this.address = address;
	}
	
	public Integer getUsed() {
		return used;
	}
	
	public void setUsed(Integer used) {
		this.used = used;
	}
	
	public Integer getDel() {
		return del;
	}
	
	public void setDel(Integer del) {
		this.del = del;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getCreate_time() {
		return create_time;
	}
	
	public void setCreate_time(Date create_time) {
		this.create_time = create_time;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getUpdate_time() {
		return update_time;
	}
	
	public void setUpdate_time(Date update_time) {
		this.update_time = update_time;
	}
}

+ 112 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/questionnaire/QuestionnaireUsers.java

@ -0,0 +1,112 @@
package com.yihu.wlyy.entity.questionnaire;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
 * 调查问卷用户基本信息表
 * @author huangwenjie
 * @date 2018/1/27 14:17
 */
@Entity
@Table(name = "wlyy_questionnaire_users")
public class QuestionnaireUsers extends IdEntity implements Serializable {
	
	private static final long serialVersionUID = 8358924836164389434L;
	
	// 业务主键
	private String code;
	// 身份证号
	private String idcard;
	// 姓名
	private String name;
	// 微信编号
	private String openid;
	// 手机号
	private String mobile;
	//户籍所在地
	private String census;
	//现居住地
	private String address;
	
	private Date createTime;
	private Date updateTime;
	
	public String getCode() {
		return code;
	}
	
	public void setCode(String code) {
		this.code = code;
	}
	
	public String getIdcard() {
		return idcard;
	}
	
	public void setIdcard(String idcard) {
		this.idcard = idcard;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public String getOpenid() {
		return openid;
	}
	
	public void setOpenid(String openid) {
		this.openid = openid;
	}
	
	public String getMobile() {
		return mobile;
	}
	
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}
	
	public String getCensus() {
		return census;
	}
	
	public void setCensus(String census) {
		this.census = census;
	}
	
	public String getAddress() {
		return address;
	}
	
	public void setAddress(String address) {
		this.address = address;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getCreateTime() {
		return createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getUpdateTime() {
		return updateTime;
	}
	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}
}

+ 122 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/questionnaire/QuestionnaireWinning.java

@ -0,0 +1,122 @@
package com.yihu.wlyy.entity.questionnaire;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
 * 调查问卷中奖纪录表
 * @author huangwenjie
 * @date 2018/1/27 14:27
 */
@Entity
@Table(name = "wlyy_questionnaire_winning")
public class QuestionnaireWinning extends IdEntity implements Serializable {
	
	private static final long serialVersionUID = 8358924836164389434L;
	
	// 业务主键
	private String code;
	//用户CODE
	private String userCode;
	//用户身份证信息
	private String userIdcard;
	//中奖人姓名
	private String userName;
	//中奖人openid
	private String userOpenid;
	//奖品类型:1电影票
	private Integer prizeType;
	//奖品兑奖码
	private String prizeCode;
	//0为未删除,1为删除
	private Integer del;
	private Date create_time;
	private Date update_time;
	
	public String getCode() {
		return code;
	}
	
	public void setCode(String code) {
		this.code = code;
	}
	
	public String getUserCode() {
		return userCode;
	}
	
	public void setUserCode(String userCode) {
		this.userCode = userCode;
	}
	
	public String getUserIdcard() {
		return userIdcard;
	}
	
	public void setUserIdcard(String userIdcard) {
		this.userIdcard = userIdcard;
	}
	
	public String getUserName() {
		return userName;
	}
	
	public void setUserName(String userName) {
		this.userName = userName;
	}
	
	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;
	}
	
	public Integer getDel() {
		return del;
	}
	
	public void setDel(Integer del) {
		this.del = del;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getCreate_time() {
		return create_time;
	}
	
	public void setCreate_time(Date create_time) {
		this.create_time = create_time;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getUpdate_time() {
		return update_time;
	}
	
	public void setUpdate_time(Date update_time) {
		this.update_time = update_time;
	}
}

+ 211 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/controller/manager/user/ManageRangeController.java

@ -0,0 +1,211 @@
package com.yihu.wlyy.controller.manager.user;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.wlyy.controller.BaseController;
import com.yihu.wlyy.entity.Doctor;
import com.yihu.wlyy.entity.User;
import com.yihu.wlyy.entity.WlyyRole;
import com.yihu.wlyy.service.manager.user.ManageRangeService;
import com.yihu.wlyy.service.manager.user.UserService;
import com.yihu.wlyy.util.MD5;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
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 java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * Created by Reece on 2018/1/16.
 */
@Controller
@RequestMapping(value = "admin/range")
@Api(description = "管理端医生管理")
public class ManageRangeController extends BaseController {
    @Autowired
    private ManageRangeService rangeService;
    /**
     * 初始化及关键字搜索列表页
     * @return 返回列表页路径
     */
    @RequestMapping(value = "initial", method = RequestMethod.GET)
    public String listPageInit(){
        return "user/range/user_role_list";
    }
    /**
     *新增时跳转到新增页面
     * @return 编辑页面路径
     */
    @RequestMapping(value = "infoInit",method = RequestMethod.GET)
    public String addPageInit(){
        return "user/range/user_role_add";
    }
    /**
     * 查看和编辑时带参页面跳转
     * @param doc 医生code
     * @param mode
     * @return
     */
    @RequestMapping(value = "editInit",method = RequestMethod.GET)
    public String editPageInit(String doc,String hospital,String mode){
        request.setAttribute("doc",doc);
        request.setAttribute("hospital",hospital);
        request.setAttribute("mode",mode);
        return "user/range/user_role_modify";
    }
    /**
     * wlyy_user_role 列表展示及页面搜索医生信息
     * @param name
     * @param idcard
     * @param page
     * @param pageSize
     * @return
     */
    @RequestMapping(value = "userRoleList")
    @ResponseBody
    public String searchList(
            @RequestParam(value = "name",required = false) String name,
            @RequestParam(value = "mobile",required = false) String idcard,
            @RequestParam(value= "page",required = false) Integer page,
            @RequestParam(value = "rows",required = false) Integer pageSize){
        try{
            Page<Doctor> userRoleList = rangeService.searchList(name, idcard, page, pageSize);
//            List<Doctor> countRoleList = rangeService.searchList(name, idcard);
            return write(200,"操作成功",page,pageSize,userRoleList);
        }catch (Exception ex){
            error(ex);
            return error(-1,"操作失败!");
        }
    }
    /**
     * 搜索新增的医生信息
     * @return
     */
    @RequestMapping(value = "doctorList")
    @ResponseBody
    public String getDoctorList(
            @RequestParam(value = "name",required = false) String name,
            @RequestParam(value = "mobile",required = false) String idcard,
            @RequestParam(value= "page",required = false) Integer page,
            @RequestParam(value = "rows",required = false) Integer pageSize){
        try{
            Page<Doctor> doctorList = rangeService.getDoctorList(name, idcard,page,pageSize);
            return write(200,"操作成功",page,pageSize,doctorList);
        }catch (Exception ex){
            error(ex);
            return error(-1,"操作失败!");
        }
    }
    /**
     * 查询所有的医院信息
     * @return
     */
    @RequestMapping(value = "hostpitalList")
    @ResponseBody
    public String getHostpitalList( ){
        try{
            List<WlyyRole> roles = rangeService.getHostpitalList();
            return write(200,"操作成功","data",roles);
        }catch (Exception ex){
            error(ex);
            return error(-1,"操作失败!");
        }
    }
    /**
     * 列表页根据医生code查询医生详情
     * @param doc 医生code
     * @param hospital 医院code
     * @return
     */
    @RequestMapping(value = "userRoleDetail")
    @ResponseBody
    public String getUserRole(
            @ApiParam(name = "doc", defaultValue = "2")
            @RequestParam(name = "doc", required = true) String doc,
            @ApiParam(name = "hospital", defaultValue = "350001")
            @RequestParam(name = "hospital", required = true) String hospital) {
        try{
            List<Doctor> doctor = rangeService.getUser(doc,hospital);
            return write(200,"操作成功","data",doctor);
        }catch (Exception ex){
            error(ex);
            return error(-1,"操作失败!");
        }
    }
    //删除医生在wlyy_user_role表的信息
    @RequestMapping(value = "delete")
    @ResponseBody
    public String deleteUserRole(String doc,String hospital){
        try{
            if (StringUtils.isEmpty(doc) || StringUtils.isEmpty(hospital)){
                return error(-1,"参数错误!");
            }
            rangeService.deleteUserRole(doc,hospital);
            return write(200,"操作成功!");
        }catch (Exception ex){
            error(ex);
            return error(-1,"操作失败!");
        }
    }
    /**
     * 新增医生信息到wlyy_user_role
     * @param info 新增医生及医院 信息 {["doc": "新增医生code(批量添加逗号分隔)","hospital" : "新增医生权限code(批量添加逗号分隔)"],[]}
     * @return
     */
    @RequestMapping(value = "create")
    @ResponseBody
    public String createUserRole(String info){
        try{
            String result = rangeService.saveUserRole(info);
            return write(200,result);
        }catch (Exception ex){
            error(ex);
            return error(-1,"操作失败!");
        }
    }
    /**
     * 编辑医生相关信息
     * @param doc 编辑医生code(批量添加逗号分隔)
     * @param oldHospital 修改前的医生权限code
     * @param hospital 修改后的医生权限code
     * @return
     */
    @RequestMapping(value = "update")
    @ResponseBody
    public String updateUserRole(String doc,String oldHospital,String hospital){
        try{
            //先删除原信息在
            rangeService.updateUserRole(doc,oldHospital,hospital);
            return write(200,"操作成功!");
        }catch (Exception ex){
            error(ex);
            return error(-1,"操作失败!");
        }
    }
}

+ 11 - 7
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/repository/DoctorDao.java

@ -65,36 +65,40 @@ public interface DoctorDao extends PagingAndSortingRepository<Doctor, Long>, Jpa
    //搜索及列表查询
    @Query("SELECT p  FROM Doctor p, WlyyUserRole r, WlyyRole ro " +
            " WHERE r.user = p.code AND p.hospital = ro.code AND p.status = 1 AND p.name = ?1 AND p.idCard = ?2")
            " WHERE r.user = p.code AND r.role = ro.code AND p.status = 1 AND p.name = ?1 AND p.idCard = ?2")
    Page<Doctor> findByFilter(String name, String  idcard, Pageable pageable);
    //搜索及列表查询
    @Query("SELECT p  FROM Doctor p, WlyyUserRole r, WlyyRole ro " +
            " WHERE r.user = p.code AND p.hospital = ro.code AND p.status = 1 AND p.name = ?1 ")
            " WHERE r.user = p.code AND r.role = ro.code AND p.status = 1 AND p.name = ?1 ")
    Page<Doctor> findByName(String name, Pageable pageable);
    //搜索及列表查询
    @Query("SELECT p  FROM Doctor p, WlyyUserRole r, WlyyRole ro " +
            " WHERE r.user = p.code AND p.hospital = ro.code AND p.status = 1 AND p.idCard = ?1 ")
            " WHERE r.user = p.code AND r.role = ro.code AND p.status = 1 AND p.idCard = ?1 ")
    Page<Doctor> findByIdcard(String  idcard, Pageable pageable);
    //搜索及列表查询
    @Query("SELECT p  FROM Doctor p, WlyyUserRole r, WlyyRole ro " +
            " WHERE r.user = p.code AND p.hospital = ro.code AND p.status = 1 ")
            " WHERE r.user = p.code AND r.role = ro.code AND p.status = 1 ")
    Page<Doctor> findByAllFilter(Pageable pageable);
    //搜索及列表查询
    @Query("SELECT p FROM Doctor p where p.status= 1 ")
    Page<Doctor> findByFilterAll(Pageable pageable);
    //搜索及列表查询不在wlyy_user_role表的医生
    @Query(value = "SELECT p FROM Doctor p where p.status= 1 AND p.name = ?1 AND p.idCard = ?2 ")
    List<Doctor> findDoctorByFilter(String name, String  idcard);
    Page<Doctor> findDoctorByFilter(String name, String  idcard,Pageable pageable);
    //搜索及列表查询不在wlyy_user_role表的医生
    @Query(value = "SELECT p FROM Doctor p where p.status= 1 AND p.name = ?1 ")
    List<Doctor> findDoctorByName(String name);
    Page<Doctor> findDoctorByName(String name,Pageable pageable);
    //搜索及列表查询不在wlyy_user_role表的医生
    @Query(value = "SELECT p FROM Doctor p where p.status= 1 AND p.idCard = ?1 ")
    List<Doctor> findDoctorByIdcard(String  idcard);
    Page<Doctor> findDoctorByIdcard(String  idcard,Pageable pageable);
    //搜索及列表查询
    @Query("SELECT p  FROM Doctor p, WlyyUserRole r, WlyyRole ro " +

+ 42 - 40
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/manager/user/ManageRangeService.java

@ -1,5 +1,8 @@
package com.yihu.wlyy.service.manager.user;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.wlyy.entity.*;
import com.yihu.wlyy.repository.*;
import com.yihu.wlyy.util.Envelop;
@ -47,7 +50,7 @@ public class ManageRangeService extends BaseJpaService<Doctor, DoctorDao> {
     * @return
     * @throws Exception
     */
    public List<Doctor> searchList(String name, String idcard, Integer page, Integer pageSize) throws Exception {
    public Page<Doctor> searchList(String name, String idcard, Integer page, Integer pageSize) throws Exception {
        if (page == null) {
            page = 1;
        }
@ -57,29 +60,17 @@ public class ManageRangeService extends BaseJpaService<Doctor, DoctorDao> {
        // 展示状态排序
        Sort sort = new Sort(Sort.Direction.ASC, "id");
        PageRequest pageRequest = new PageRequest(page - 1, pageSize, sort);
        List<Doctor> userList = null;
        Page<Doctor> userList = null;
        /*if (StringUtils.isNotEmpty(name) && StringUtils.isNotEmpty(idcard)) {
        if (StringUtils.isNotEmpty(name) && StringUtils.isNotEmpty(idcard)) {
            userList = doctorDao.findByFilter(name, idcard, pageRequest);
        } else if (StringUtils.isEmpty(name) && StringUtils.isNotEmpty(idcard)) {
            userList = doctorDao.findByIdcard(idcard, pageRequest);
        } else if (StringUtils.isNotEmpty(name) && StringUtils.isEmpty(idcard)) {
            userList = doctorDao.findByName(name, pageRequest);
        } else {
            userList = doctorDao.findByFilterAll(pageRequest);
        }*/
        String sql = "SELECT p.code,p.name,p.sex,p.idCard,p.mobile,ro.code hospital,ro.name hospitalName " +
                " FROM wlyy_doctor p, wlyy_user_role r, wlyy_role ro  " +
                " WHERE r.user = p.code AND r.role = ro.code AND p.status = 1 ";
        if (StringUtils.isNotEmpty(name) && StringUtils.isNotEmpty(idcard)) {
            sql += " AND p.name = " + name + " AND p.idcard = " + idcard;
        } else if (StringUtils.isEmpty(name) && StringUtils.isNotEmpty(idcard)) {
            sql += " AND p.idcard = " + idcard;;
        } else if (StringUtils.isNotEmpty(name) && StringUtils.isEmpty(idcard)) {
            sql += " AND p.name = " + name;
            userList = doctorDao.findByAllFilter(pageRequest);
        }
        sql += " ORDER BY p.id ASC  limit "+ (page-1) +"," +pageSize;
        userList = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(Doctor.class));
        return userList;
    }
@ -127,16 +118,18 @@ public class ManageRangeService extends BaseJpaService<Doctor, DoctorDao> {
     * @return
     * @throws Exception
     */
    public List<Doctor> getDoctorList(String name, String idcard) throws Exception {
    public Page<Doctor> getDoctorList(String name, String idcard,Integer page,Integer pageSize) throws Exception {
        // 展示状态排序
        List<Doctor> userList = null;
        Page<Doctor> userList = null;
        PageRequest request = new PageRequest(page-1,pageSize);
        if (StringUtils.isNotEmpty(name) && StringUtils.isNotEmpty(idcard)) {
            userList = doctorDao.findDoctorByFilter(name, idcard);
            userList = doctorDao.findDoctorByFilter(name, idcard,request);
        } else if (StringUtils.isEmpty(name) && StringUtils.isNotEmpty(idcard)) {
            userList = doctorDao.findDoctorByIdcard(idcard);
            userList = doctorDao.findDoctorByIdcard(idcard,request);
        } else if (StringUtils.isNotEmpty(name) && StringUtils.isEmpty(idcard)) {
            userList = doctorDao.findDoctorByName(name);
            userList = doctorDao.findDoctorByName(name,request);
        }else {
            userList = doctorDao.findByFilterAll(request);
        }
        return userList;
@ -162,29 +155,38 @@ public class ManageRangeService extends BaseJpaService<Doctor, DoctorDao> {
    }
    //保存先判断wlyy_role是否存在在新增
    public int saveUserRole(String doc, String hospital) throws Exception {
        int flag = 200;
    public String saveUserRole(String json) throws Exception {
        String msg = "";
        try {
            Doctor doctor = doctorDao.findByCode(doc);
            if (doctor != null) {
                WlyyUserRole wlyyUserRole = userRoleDao.findByUserAndRole(doc, hospital);
                if (wlyyUserRole == null) {
                    WlyyUserRole userRole = new WlyyUserRole();
                    userRole.setUser(doc);
                    userRole.setRole(hospital);
                    userRole.setCzrq(new Date());
                    userRole.setCzy("1");
                    userRoleDao.save(userRole);
                } else {
                    flag = -1;
            JSONArray arrays = JSONArray.parseArray(json);
            for (Object array:arrays) {
                JSONObject infos = JSON.parseObject(array.toString());
                String doc = infos.containsKey("doc")?infos.getString("doc"):null;
                String hospital = infos.containsKey("hospital")?infos.getString("hospital"):null;
                if(StringUtils.isNotEmpty(doc) &&  StringUtils.isNotEmpty(hospital)){
                    Doctor doctor = doctorDao.findByCode(doc);
                    WlyyRole hosInfo = roleDao.findByCode(hospital);
                    if (doctor != null) {
                        WlyyUserRole wlyyUserRole = userRoleDao.findByUserAndRole(doc, hospital);
                        if (wlyyUserRole == null) {
                            WlyyUserRole userRole = new WlyyUserRole();
                            userRole.setUser(doc);
                            userRole.setRole(hospital);
                            userRole.setCzrq(new Date());
                            userRole.setCzy("1");
                            userRoleDao.save(userRole);
                        } else {
                            msg += "医生:"+doctor.getName()+" 已存在 "+hosInfo.getName()+" 医院权限"+"<br/>";
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            flag = -2;
        }
        return flag;
        return msg;
    }
@ -200,7 +202,7 @@ public class ManageRangeService extends BaseJpaService<Doctor, DoctorDao> {
            String sql = "SELECT p.code,p.name,p.sex,p.idcard,p.mobile,ro.code hospital,ro.name hospitalName " +
                    " FROM wlyy_doctor p, wlyy_user_role r, wlyy_role ro  " +
                    " WHERE r.user = p.code AND r.role = ro.code AND p.status = 1  " +
                    " and r.user = "+ doc +" and ro.code = "+ hospital;
                    " and r.user = '"+ doc +"' and ro.code = '"+ hospital + "' ";
            doctor =  jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(Doctor.class));
        } catch (Exception e) {
            e.printStackTrace();

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

@ -73,6 +73,19 @@
				</div>
			</div>
		</sec:authorize>
		<sec:authorize url="/admin/wlyyUserRole/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="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>
					</div>
				</div>
			</div>
		</sec:authorize>
	</div>
</body>
<%@ include file="../head/page_foot.jsp"%>

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

@ -224,6 +224,46 @@
//
//                        })
            });
            /* ************************* 导入管理员 ************************** */
            var import_user_role_uploader = $("#import_user_role").webupload({
                server: ctx + "/admin/wlyyUserRole/importData",
                pick: {id: '#user_role_file'},
                accept: {
                    title: 'Excel',
                    extensions: 'xls',
                    mimeTypes: '.xls'
                },
                auto: true
            });
            import_user_role_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) {
                $.ligerDialog.waitting('正在保存中,请稍候...');
            });
            import_user_role_uploader.on('uploadError', function (file) {
                $.ligerDialog.closeWaitting();
                $.Notice.error("上传失败!");
            });
            import_user_role_uploader.on('uploadSuccess', function (file, resp) {
                $.ligerDialog.closeWaitting();
//                        window.sessionStorage.setItem("resultData", JSON.stringify(resp.data));
                $.Notice.success("上传成功。");
//                        self.orgInfoDialog = $.ligerDialog.open({
//                            height: 550,
//                            width: 1024,
//                            title: "上传结果",
//                            url: ctx + '/admin/hos/doctor/importResult'
//
//                        })
            });
        }
      };

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

@ -180,6 +180,9 @@
							<sec:authorize url="/admin/roles/initial">
								<li><a href="javascript:locationMenu('roles');">角色管理</a></li>
							</sec:authorize>
							<sec:authorize url="/admin/range/initial">
								<li><a href="javascript:locationMenu('range');">数据范围管理</a></li>
							</sec:authorize>
							<sec:authorize url="/admin/security/center">
						</ul>
					</div>

+ 2 - 2
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/user/range/user_role_add.jsp

@ -19,14 +19,14 @@
			</div>
			<sec:authorize url="/admin/range/doctorList">
			<div id="btn_search" class="l-button u-btn u-btn-primary u-btn-small f-ib f-vam  f-ml10" >
				<span>查add询</span>
				<span>查询</span>
			</div>
			</sec:authorize>
			<!-- 保存按钮 -->
			<sec:authorize url="/admin/range/create">
				<div class="m-form-control m-form-control-fr">
					<div id="btn_add" class="l-button u-btn u-btn-primary u-btn-small f-ib f-vam" style="margin-right: 20px;">
						<span>新增</span>
						<span>批量新增</span>
					</div>
				</div>
			</sec:authorize>

+ 107 - 19
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/user/range/user_role_add_js.jsp

@ -9,13 +9,34 @@
            var retrieve = null;
            var master = null;
            var isFirstPage = false;
            var selectDict = [];
            /* *************************** 函数定义 ******************************* */
            function pageInit() {
                retrieve.init();
                querySelectData()
                master.init();
            }
            function querySelectData() {
                $.ajax({
                    url: ctx + "hostpitalList",
                    method: "get",
                    dataType: "json",
                    async: false,
                    data: {},
                    success: function (result) {
                        if (result.status == '200') {
                            selectDict = result.data;
                            retrieve.init();
                        } else {
                            $.Notice.error('请求数据失败');
                            retrieve.init();
                        }
                    },
                    error: function (data) {
                        $.Notice.error("系统异常,请联系管理员!");
                    }
                });
            }
            function reloadGrid(params) {
                if (isFirstPage) {
                    this.grid.options.newPage = 1;
@ -66,7 +87,7 @@
                        columns: [
                            {display: 'ID', name: 'id', hide: true},
                            {display: '医生编码', name: 'code', width: '30%', align: "center"},
                            {display: '医生姓名', name: 'name', width: '8%', align: "center"},
                            {display: '医生姓名', name: 'name', width: '8 %', align: "center"},
                            {
                                display: '性别', name: 'sex', width: '5%', align: "center",
                                render: function (item) {
@ -78,8 +99,35 @@
                            },
                            {display: '身份证号', name: 'idCard', width: '17%', align: "center"},
                            {display: '手机号码', name: 'mobile', width: '10%', align: "center"},
                            {display: '机构编码', name: 'hospital', width: '10%', align: "center"},
                            {display: '所属机构', name: 'hospitalName', width: '20%', align: "left"},
//                            {display: '机构编码', name: 'hospital', width: '0%', align: "center", hide: true},
                            {display: '新增机构', name: 'hospitalName', width: '25%', align: "left",
                                render: function (row) {
                                    var html = '',
                                        htmlStr = '';
                                    for(var i=0;i<selectDict.length;i++){
                                        if(row.hospital == selectDict[i].code){
                                            html += '<option selected value="'+selectDict[i].code+'">'+selectDict[i].name+'</option>'
                                        }else{
                                            html += '<option value="'+selectDict[i].code+'">'+selectDict[i].name+'</option>'
                                        }
                                    }
                                    htmlStr = '<select data-id="'+row.code+'" class="j-select" style="background-color: transparent;width:90%;border: none;height:38px;">'+html+'</select>';
                                    return htmlStr;
                                }
                            },
                            {
                                display: '操作', name: 'operator', width: '5%', align: "center", isSort: false,
                                render: function (row) {
                                    var html = '';
                                    <sec:authorize url="/admin/range/create">
                                    if (!Util.isStrEquals(row.code, "admin")) {
                                        html += '<a href="javascript:void(0)" onclick="javascript:' + Util.format("$.publish('{0}',['{1}','{2}'])", "info:create",row.code,row.hospital) + '">新增</a>';
                                    }
                                    </sec:authorize>
                                    return html;
                                }
                            }
                        ],
                        checkbox: true,
                    }));
@ -99,22 +147,62 @@
                    }
                },
                bindEvents: function () {
                    var changeData = [],//下拉变动的数据
                        oldSelect = [];//选择数据,未变更机构
                    $('#div_wrapper').on('change','.j-select',function(){
                        var obj = {},
                            $val = $(this).val(),
                            code = $(this).attr('data-id');
                        for(var i=0;i<changeData.length;i++ ){
                            if(changeData[i].doc == code){
                                changeData[i].hospital = $val;
                                return
                            }
                        }
                        obj.doc = code
                        obj.hospital = $val
                        changeData.push(obj)
                    })
                    var self = this;
                    $.subscribe('info:create', function (event, id) {
                        var title = '新增用户';
                        var rows = master.grid.getSelectedRows();
                        var codes = new Array()
                        for (var i=0;i<rows.length;i++){
                            codes.push(rows[i].code)
                    $.subscribe('info:create', function (event,doc,hospital) {
                        if(doc){
                            oldSelect = [{'doc':doc,'hospital':hospital}]
                        }else{
                            oldSelect = []
                            var rows = master.grid.getSelectedRows()
                            for (var i=0;i<rows.length;i++){
                                var obj={}
                                obj.doc = rows[i].code;
                                obj.hospital = rows[i].hospital
                                oldSelect.push(obj);
                            }
                        }
                        self.infoDialog = $.ligerDialog.open({
                            height: 600,
                            width: 850,
                            urlParms: {"doc": codes.toString(), "mode": "new"},
                            title: title,
                            url: ctx + '/admin/range/create'
                        })
                        for(var j=0;j<oldSelect.length;j++){
                            for(var z=0;z<changeData.length;z++){
                                if(oldSelect[j].doc == changeData[z].doc){
                                    oldSelect[j].hospital = changeData[z].hospital
                                }
                            }
                        }
                        var params={};
                            params.info = JSON.stringify(oldSelect)
                        $.ajax({
                            url: ctx + "/admin/range/create",
                            method: "post",
                            dataType: "json",
                            async: false,
                            data:  params,
                            success: function (result) {
                                if (result.status == '200') {
                                    window.reloadMasterGrid(result.msg);
                                } else {
                                    $.Notice.error('请求数据失败');
                                }
                            },
                            error: function (data) {
                                $.Notice.error("系统异常,请联系管理员!");
                            }
                        });
                    });
                }

+ 1 - 1
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/user/range/user_role_list.jsp

@ -19,7 +19,7 @@
			</div>
			<sec:authorize url="/admin/range/userRoleList">
			<div id="btn_search" class="l-button u-btn u-btn-primary u-btn-small f-ib f-vam  f-ml10" >
				<span>查list询</span>
				<span>查询</span>
			</div>
			</sec:authorize>
			<sec:authorize url="/admin/range/infoInit">

+ 21 - 20
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/user/range/user_role_list_js.jsp

@ -31,8 +31,9 @@
				$searchBtn: $('#btn_search'),
				$addBtn: $('#btn_add'),
				$name: $("#inp_name"),//人员姓名
				$code: $("#inp_code"),//人员姓名
				$code: $("#inp_code"),//医生code
				$mobile: $("#inp_mobile"),
				$hospital: $("#inp_hospital"),//医院code
				init: function () {
					this.$element.show();
					this.$element.attrScan();
@ -40,6 +41,7 @@
					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 () {
@ -84,15 +86,15 @@
								display: '操作', name: 'operator', width: '15%', align: "center", isSort: false,
								render: function (row) {
									var html = '';
									html += '<a  href="javascript:void(0)" onclick="javascript:' + Util.format("$.publish('{0}',['{1}'])", "info:view", row.code) + '">查看</a>';
									<sec:authorize url="/admin/range/update">
									html += '<a  href="javascript:void(0)" onclick="javascript:' + Util.format("$.publish('{0}',['{1}','{2}'])", "info:view", row.code,row.hospital) + '">查看</a>';
									<sec:authorize url="/admin/range/userRoleDetail">
									if (!Util.isStrEquals(row.code, "admin")) {
										html += '<a  style="margin-left:10px;"href="javascript:void(0)" onclick="javascript:' + Util.format("$.publish('{0}',['{1}'])", "info:edit", row.code) + '">编辑</a>';
										html += '<a  style="margin-left:10px;"href="javascript:void(0)" onclick="javascript:' + Util.format("$.publish('{0}',['{1}','{2}'])", "info:edit", row.code,row.hospital) + '">编辑</a>';
									}
									</sec:authorize>
									<sec:authorize url="/admin/range/delete">
									if (!Util.isStrEquals(row.code, "admin")) {
										html += '<a  style="margin-left:10px;" title="删除" href="javascript:void(0)" onclick="javascript:' + Util.format("$.publish('{0}',['{1}','{2}'])", "info:del", row.code) + '">删除</a>';
										html += '<a  style="margin-left:10px;" title="删除" href="javascript:void(0)" onclick="javascript:' + Util.format("$.publish('{0}',['{1}','{2}'])", "info:del", row.code,row.hospital) + '">删除</a>';
									}
									</sec:authorize>
									return html;
@ -116,11 +118,11 @@
						reloadGrid.call(this, values);
					}
				},
				delRecord: function (id, code) {
				delRecord: function (code,hospital) {
					var self = this;
					$.ajax({
						url: ctx + "/admin/range/delete",
						data: {"id": id},
						data: {"doc": code,"hospital":hospital},
						method: "post",
						dataType: "json",
						success: function (result) {
@ -137,42 +139,41 @@
				},
				bindEvents: function () {
					var self = this;
					$.subscribe('info:view', function (event, id) {
						var title = '查看用户信息';
					$.subscribe('info:view', function (event,code,hospital) {
						var title = '查看医生信息';
						self.infoDialog = $.ligerDialog.open({
							height: 460,
							width: 490,
							urlParms: {"id": id, "mode": "view"},
							urlParms: {"doc": code, "hospital": hospital, "mode": "view"},
							title: title,
							url: ctx + '/admin/range/editInit'
						})
					});
					$.subscribe('info:edit', function (event, id) {
						var title = '编辑用户信息';
					$.subscribe('info:edit', function (event, code,hospital) {
						var title = '编辑医生信息';
						self.infoDialog = $.ligerDialog.open({
							height: 460,
							width: 490,
							urlParms: {"id": id, "mode": "edit"},
							urlParms: {"doc": code,"hospital":hospital,"mode": "edit"},
							title: title,
							url: ctx + '/admin/range/editInit'
						})
					});
					$.subscribe('info:create', function (event, id) {
						var title = '新增用户';
					$.subscribe('info:create', function (event) {
						var title = '新增角色';
						self.infoDialog = $.ligerDialog.open({
							height: 600,
							width: 850,
							urlParms: {"id": id, "mode": "new"},
							width: 950,
							urlParms: {"mode": "new"},
							title: title,
							url: ctx + '/admin/range/infoInit'
						})
					});
					$.subscribe('info:del', function (event, id, code) {
					$.subscribe('info:del', function (event, code, hospital) {
						$.ligerDialog.confirm('确认删除该行信息?<br>如果是请点击确认按钮,否则请点击取消。', function (yes) {
							if (yes) {
								self.delRecord(id, code);
								self.delRecord(code, hospital);
							}
						});
					})

+ 20 - 15
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/user/range/user_role_modify.jsp

@ -8,47 +8,52 @@
	</style>
</head>
<body>
<div id="div_patient_info_form" data-role-form class="m-form-inline f-mt20 f-ml30" data-role-form>
	<input type="hidden" id="inp_id" value='${id}' data-attr-scan="id"/>
<div id="div_doctor_info_form" data-role-form class="m-form-inline f-mt20 f-ml30" data-role-form>
	<input type="hidden" id="inp_mode" value='${mode}'/>
	<div class="m-form-group" style="padding:10 0 10 0">
		<label class="label_title" style="width:120px">医生编modify码</label>
		<label class="label_title" style="width:120px">医生编码</label>
		<div class="l-text-wrapper m-form-control essential">
			<input type="text"  id="inp_code" class="required useTitle ajax f-w240 validate-special-char"  required-title="编码不能为空"  data-attr-scan="code"/>
			<input type="text"  id="inp_code" readonly class="required useTitle ajax f-w240 validate-special-char"  required-title="编码不能为空"  data-attr-scan="code" value='${doc}'/>
		</div>
	</div>
	<div class="m-form-group">
		<label class="label_title" style="width:120px">医生姓名</label>
		<div class="l-text-wrapper m-form-control essential">
			<input type="text"  id="inp_name" class="required useTitle f-w240 validate-special-char"  required-title="姓名不能为空"  data-attr-scan="name"/>
			<input type="text"  id="inp_name" readonly class="required useTitle f-w240 validate-special-char"  required-title="姓名不能为空"  data-attr-scan="name"/>
		</div>
		<div class="m-form-group">
			<label class="label_title" style="width:120px">身份证号</label>
			<div class="l-text-wrapper m-form-control essential">
				<input type="text"  id="inp_phone" class="required useTitle f-w240 validate-special-char" required-title="号码不能为空"  data-attr-scan="phone"/>
			</div>
	</div>
	<div class="m-form-group">
		<label class="label_title" style="width:120px">性别</label>
		<div class="l-text-wrapper m-form-control essential">
			<input type="text"  id="inp_sex" readonly class="required useTitle f-w240 validate-special-char" required-title="性别不能为空"  required-title="请输入性别"  data-attr-scan="sex"/>
		</div>
	</div>
	<div class="m-form-group">
		<label class="label_title" style="width:120px">身份证号</label>
		<div class="l-text-wrapper m-form-control essential">
			<input type="text"  id="inp_idcard" readonly class="required useTitle f-w240 validate-special-char" required-title="身份证号不能为空"  required-title="请输入身份证号码"  data-attr-scan="idCard"/>
		</div>
	</div>
	<div class="m-form-group">
		<label class="label_title" style="width:120px">手机号码</label>
		<div class="l-text-wrapper m-form-control essential">
			<input type="text"  id="inp_mobile" class="required useTitle ajax validate-mobile-phone f-w240 validate-special-char" required-title="手机号码不能为空"  required-title="请输入手机号码"  data-attr-scan="mobile"/>
			<input type="text"  id="inp_mobile" readonly class="required useTitle ajax validate-mobile-phone f-w240 validate-special-char" required-title="手机号码不能为空"  required-title="请输入手机号码"  data-attr-scan="mobile"/>
		</div>
	</div>
	<div class="m-form-group">
		<label class="label_title" style="width:120px">机构编码</label>
		<div class="l-text-wrapper m-form-control essential">
			<input type="text"  id="inp_type" class="required useTitle f-w240 validate-special-char" required-title="用户类型不能为空"  data-attr-scan="type"/>
			<input type="text"  id="inp_hospital" readonly class="required useTitle f-w240 validate-special-char" required-title="机构编码不能为空"  data-attr-scan="hospital" value='${hospital}'/>
		</div>
	</div>
	<div class="m-form-group" id="new_psw_div" style="display: none">
	<div class="m-form-group">
		<label class="label_title" style="width:120px">所属机构</label>
		<div class="l-text-wrapper m-form-control essential">
			<input type="password"  id="inp_psw" class="required useTitle f-w240 validate-special-char" required-title="登陆密码不能为空"  data-attr-scan="password"/>
			<input type="text"  id="inp_hospital_name" class="required useTitle f-w240 validate-special-char" required-title="所属机构不能为空"  data-attr-scan="hospitalName"/>
		</div>
	</div>
	</div>
	<div class="m-form-group f-pa" id="btn_save_close"  style="right: 10px;bottom: 0;display: none">
	<div class="m-form-group f-pa" id="btn_save_close"  style="right: 10px;bottom: 10px;display: none">
		<div class="m-form-control">
			<input type="button" value="保存" id="btn_save" class="l-button u-btn u-btn-primary u-btn-large f-ib f-vam" />
			<div id="btn_cancel" class="l-button u-btn u-btn-cancel u-btn-large f-ib f-vam" >

+ 72 - 108
patient-co-manage/wlyy-manage/src/main/webapp/WEB-INF/views/user/range/user_role_modify_js.jsp

@ -4,82 +4,110 @@
	(function ($, win) {
		$(function () {
			var Util = $.Util;
			var doc = $('#inp_code').val();
			var hospital = $('#inp_hospital').val();
			var type = $('#inp_mode').val();
			var id = $('#inp_id').val();
			var info = "";
			var oldCode = "";
			var oldMobile = "";
			var jValidation = $.jValidation;
			var selectDict = [];
			//页面初始化
			function pageInit() {
				info.init();
                querySelectData();
				info.initForm();
			}
			function querySelectData(){
                $.ajax({
                    url: ctx + "hostpitalList",
                    method: "get",
                    dataType: "json",
                    async: false,
                    data: {},
                    success: function (result) {
                        if (result.status == '200') {
                            selectDict = $.map( result.data,function(item,i){
                                item.typeId = item.code;
                                item.text = item.name;
                                delete item.code;
                                delete item.name;
                                return item
                            })
                            info.init();
                        } else {
                            $.Notice.error('请求数据失败');
                            info.init();
                        }
                    },
                    error: function (data) {
                        $.Notice.error("系统异常,请联系管理员!");
                    }
                });
            }
			info = {
				//变量
				$form: $("#div_patient_info_form"),
				$form: $("#div_doctor_info_form"),
				$code: $('#inp_code'),
				$name: $('#inp_name'),
				$sex: $('#inp_sex'),
				$idcard: $('#inp_idcard'),
				$mobile: $('#inp_mobile'),
				$type: $("#inp_type"),
                $jobNo:$("#inp_jobNo"),
                $seat:$("#inp_seat"),
                $phone:$("#inp_phone"),
				//$roles:$("#inp_roles"),
				$organization: $("#inp_organizationId"),
				$hospital: $("#inp_hospital"),
                $hospitalName:$("#inp_hospital_name"),
				init: function () {
				    //input样式
					this.$form.attrScan();
					this.$code.ligerTextBox({width: 240});
					this.$name.ligerTextBox({width: 240});
                    this.$sex.ligerTextBox({width: 240});
                    this.$idcard.ligerTextBox({width: 240});
					this.$mobile.ligerTextBox({width: 240});
					this.typeBox = this.$type.ligerComboBox({
					this.$hospital.ligerTextBox({width: 240});
					this.$hospitalName.ligerComboBox({
						width: 240,
						data: [
							{text: '管理员', typeId: '1'},
							{text: '医生', typeId: '2'},
                            {text: '客服管理员', typeId: '3'},
                            {text: '普通客服', typeId: '4'},
							{text: '其他', typeId: '0'}
						],
						data: selectDict,
						initIsTriggerEvent: false,
						valueField: 'typeId',
					});
                    this.$jobNo.ligerTextBox({width: 240});
                    this.$seat.ligerTextBox({width: 240});
                    this.$phone.ligerTextBox({width: 240});
                        onSelected: function(id,name){
                            $("#inp_hospital").val(id);
                        }
                    });
				},
				initForm: function () {
					_this = this;
                    this.bindEvents();
					//修改、查看
					if (isNoEmpty(id) && id != 0) {
						$.ajax({
							url: ctx + "/admin/range/userRoleDetail",
							url: ctx + "userRoleDetail",
							method: "post",
							dataType: "json",
							async: false,
							data: {id:id},
							data: {"doc": doc,"hospital":hospital},
							success: function (result) {
								if (result.status == '200') {
									//通过id查信息
									var data = result.data;
								    //获取list
									var data = result.data[0];
									var temSex = "";
									if (!data) {
										return
									}
									oldCode = data.code;
									oldMobile = data.mobile;
									if(data.sex == 1) {
                                        temSex = '男';
                                    }else if (data.sex == 2){
                                        temSex = '女';
                                    }else {
                                        temSex = '未知';
                                    }
									_this.$form.Fields.fillValues({
										code: data.code,
										code: doc,
										name: data.name,
										mobile: data.mobile,
                                        jobNo:data.jobNo,
                                        seat:data.seat,
                                        phone:data.phone
                                        sex: temSex,
                                        idCard: data.idCard,
                                        mobile: data.mobile,
                                        hospital: data.hospital,
                                        hospitalName: data.hospitalName,
									});
									_this.typeBox.selectValue(data.type);
								} else {
                                } else {
									$.Notice.error(result.msg);
								}
							},
@ -89,8 +117,9 @@
						});
					}
					if (type == "view") {
					    //查看时只读属性不可更新数据
						_this.$form.addClass("m-form-readonly"); //表单只读
						$(".essential").addClass("XXXtest");
						$(".essential").removeClass("essential");
@ -112,57 +141,7 @@
					var validator = new jValidation.Validation(this.$form, {
						immediate: true, onSubmit: false,
						onElementValidateForAjax: function (elm) {
							if (Util.isStrEquals($(elm).attr("id"), 'inp_mobile')) {
								var result = new jValidation.ajax.Result();
								var newMobile = $('#inp_mobile').val();
								if (newMobile != null && oldMobile != '' && oldMobile == newMobile) {
									return true;
								}
								if (newMobile != oldMobile) {
									$.ajax({
										url: ctx + "/admin/user/isMobileExist",
										async: false,
										method: "post",
										dataType: "json",
										data: {"mobile": newMobile},
										success: function (data) {
											if (data == true) {
												result.setResult(false);
												result.setErrorMsg("手机号已注册过");
											} else {
												result.setResult(true);
											}
										}
									});
								}
								return result;
							}
							;
							if (Util.isStrEquals($(elm).attr("id"), 'inp_code')) {
								var result = new jValidation.ajax.Result();
								var newCode = $('#inp_code').val();
								if (newCode != null && oldCode != '' && oldCode == newCode) {
									return true;
								}
								if (newCode != oldCode) {
									$.ajax({
										url: ctx + "/admin/user/isCodeExist",
										async: false,
										method: "post",
										dataType: "json",
										data: {"code": newCode},
										success: function (data) {
											if (data == true) {
												result.setResult(false);
												result.setErrorMsg("用户编码已存在");
											} else {
												result.setResult(true);
											}
										}
									});
								}
								return result;
							}
						}
					});
@ -172,33 +151,18 @@
                        if (!validator.validate()) {
                            return;
                        }
                        values.type = self.typeBox.getValue();
                        update(values);
                    });
                    $("#inp_type").change(function () {
                        var val = self.typeBox.getValue();
                        if(val==3||val==4){
                            $("#customer").show();
                        }else{
                            $("#customer").hide();
                        }
                        debugger
                    });
                    //编辑信息
					function update(values) {
						var dataModel = $.DataModel.init();
						var url = "update";
						if (values.id == 0) {
							url = "create";
						}
						$.ajax({
							url: ctx + "/admin/user/" + url,
							url: ctx + "/admin/range/update",
							async: false,
							method: "post",
							dataType: "json",
							data: {jsonData: JSON.stringify(values)},
							data: {"doc": doc,"oldHospital":hospital,"hospital": $("#inp_hospital").val()},
							success: function (data) {
								if (data.status == 200) {
									parent.window.reloadMasterGrid(data.msg);

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

@ -183,7 +183,6 @@
                        }else{
                            $("#customer").hide();
                        }
                        debugger
                    });

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

@ -32,6 +32,7 @@ var menu = {
    "user": "/admin/user/initial",//人员管理界面
    "roles": "/admin/roles/initial",//用户角色管理界面
    "feature": "/admin/feature/initial",//用户角色管理界面
    "range": "/admin/range/initial",//医生管理界面
    //配置管理中心
    "dict": "/admin/dict/initial",//人员管理界面

+ 57 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/GuahaoController.java

@ -301,6 +301,25 @@ public class GuahaoController {
		}
	}
	
	@RequestMapping(value = "/imm/get/GetOrgNumberList",method = RequestMethod.GET)
	@ResponseBody
	@ApiOperation("计免:获取免疫接种号源")
	public Result GetOrgNumberListGet(@ApiParam(name="orgId",value="机构编码",defaultValue = "350206")
	                               @RequestParam String orgId,
	                               @ApiParam(name="ScheduleId",value="排班ID",defaultValue = "350211B10402017080901")
	                               @RequestParam String ScheduleId)
	{
		try {
			
			String data = guahaoService.GetOrgNumberList(orgId,ScheduleId);
			
			return Result.success("获取免疫接种号源!",data);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	
	@RequestMapping(value = "/imm/GetOrgScheduleList",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("计免:获取免疫接种排班信息")
@ -322,6 +341,27 @@ public class GuahaoController {
		}
	}
	
	@RequestMapping(value = "/imm/get/GetOrgScheduleList",method = RequestMethod.GET)
	@ResponseBody
	@ApiOperation("计免:获取免疫接种排班信息")
	public Result GetOrgScheduleListGet(@ApiParam(name="OrgCode",value="机构编码",defaultValue = "350211B1040")
	                                 @RequestParam String OrgCode,
	                                 @ApiParam(name="StartTime",value="开始日期",defaultValue = "2017-08-09")
	                                 @RequestParam String StartTime,
	                                 @ApiParam(name="EndTime",value="结束日期",defaultValue = "2017-08-10")
	                                 @RequestParam String EndTime)
	{
		try {
			
			String data = guahaoService.GetOrgScheduleList(OrgCode,StartTime,EndTime);
			
			return Result.success("获取免疫接种排班信息!",data);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	
	@RequestMapping(value = "/imm/GetOrgScheduleAndNumberList",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("计免:获取免疫接种排班信息和号源信息")
@ -339,6 +379,23 @@ public class GuahaoController {
		}
	}
	
	@RequestMapping(value = "/imm/get/GetOrgScheduleAndNumberList",method = RequestMethod.GET)
	@ResponseBody
	@ApiOperation("计免:获取免疫接种排班信息和号源信息")
	public Result GetOrgScheduleAndNumberListGet(@ApiParam(name="OrgCode",value="机构编码",defaultValue = "")
	                                          @RequestParam String OrgCode)
	{
		try {
			
			String data = guahaoService.GetOrgScheduleAndNumberList(OrgCode);
			
			return Result.success("获取免疫接种排班信息和号源信息!",data);
		} catch (Exception ex) {
			ex.printStackTrace();
			return Result.error(ex.getMessage());
		}
	}
	
	@RequestMapping(value = "/imm/GetResImmuneListWithBarCode",method = RequestMethod.POST)
	@ResponseBody
	@ApiOperation("计免:根据条形码获取预约记录")

+ 4 - 8
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/guahao/GuahaoService.java

@ -1421,10 +1421,8 @@ public class GuahaoService {
        params.put("PatientPhone", patientPhone);
        result = immPostSecond("RegisterImmune","计免预约-免疫接种确认预约",params);
    
        com.alibaba.fastjson.JSONObject data = com.alibaba.fastjson.JSONObject.parseObject(result);
    
        if(data.containsKey("OK")){
            result = data.getString("OK");
        if (StringUtils.startsWith(result, "OK")){
            result = "OK";
        }
    
        return result;
@ -1463,10 +1461,8 @@ public class GuahaoService {
        params.put("PatientPhone", patientPhone);
        result = immPostSecond("UnResRegisterImmune","计免预约-免疫接种确认预约",params);
    
        com.alibaba.fastjson.JSONObject data = com.alibaba.fastjson.JSONObject.parseObject(result);
    
        if(data.containsKey("OK")){
            result = data.getString("OK");
        if (StringUtils.startsWith(result, "OK")){
            result = "OK";
        }
    
        return result;

+ 10 - 16
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/template/DoctorFeldsherTemplateService.java

@ -62,6 +62,7 @@ public class DoctorFeldsherTemplateService extends BaseService {
            sendJson.put("first", first);
            sendJson.put("remark", remark);
            sendJson.put("url", url);//带参数的模板跳转链接
            sendJson.put("toUser", patient);//带参数的模板跳转链接
            pushMsgTask.putWxMsg(weiXinAccessTokenUtils.getAccessToken(), 11, openId, name, sendJson);
            //发送代理人
            jsonArray = weiXinOpenIdUtils.getAgentOpenId(patient, openId);
@ -69,14 +70,10 @@ public class DoctorFeldsherTemplateService extends BaseService {
                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject j = jsonArray.getJSONObject(i);
                    Patient member = (Patient) j.get("member");
                    int start = url.indexOf("&toUser=");
                    int end = url.indexOf("&", start + 1);
                    String touser = url.substring(start, end);
                    url = url.replace(touser, "&toUser=" + member.getCode());
//                    int representedStart = url.indexOf("&represented=");
//                    int representedEnd = url.length();
//                    String represented = url.substring(representedStart, representedEnd);
//                    url = url.replace(represented, "&represented=" + member.getCode());
                    int representedStart = url.indexOf("&represented=");
                    int representedEnd = url.length();
                    String represented = url.substring(representedStart, representedEnd);
                    url = url.replace(represented, "&represented=" + member.getCode());
                    //name患者姓名
                    sendJson.put("first", weiXinOpenIdUtils.getTitleMes(people, (int) j.get("relation"), name) + first);
                    sendJson.put("url", url);
@ -95,6 +92,7 @@ public class DoctorFeldsherTemplateService extends BaseService {
            sendJson.put("first", first);
            sendJson.put("remark", remark);
            sendJson.put("url", url);//带参数的模板跳转链接
            sendJson.put("toUser", patient);//带参数的模板跳转链接
            pushMsgTask.putWxMsg(weiXinAccessTokenUtils.getAccessToken(), 11, openId, name, sendJson);
            //发送代理人
            jsonArray = weiXinOpenIdUtils.getAgentOpenId(patient, openId);
@ -102,14 +100,10 @@ public class DoctorFeldsherTemplateService extends BaseService {
                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject j = jsonArray.getJSONObject(i);
                    Patient member = (Patient) j.get("member");
                    int start = url.indexOf("&toUser=");
                    int end = url.indexOf("&", start + 1);
                    String touser = url.substring(start, end);
                    url = url.replace(touser, "&toUser=" + member.getCode());
//                    int representedStart = url.indexOf("&represented=");
//                    int representedEnd = url.length();
//                    String represented = url.substring(representedStart, representedEnd);
//                    url = url.replace(represented, "&represented=" + member.getCode());
                    int representedStart = url.indexOf("&represented=");
                    int representedEnd = url.length();
                    String represented = url.substring(representedStart, representedEnd);
                    url = url.replace(represented, "&represented=" + member.getCode());
                    //name患者姓名
                    sendJson.put("first", weiXinOpenIdUtils.getTitleMes(people, (int) j.get("relation"), name) + first);
                    sendJson.put("url", url);

+ 3 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/doctor/SurveyTemplateOptionsDao.java

@ -14,6 +14,9 @@ public interface SurveyTemplateOptionsDao extends PagingAndSortingRepository<Sur
    @Query("select t from  SurveyTemplateOptions t where  t.templateQuestionCode = ?1 and t.templateCode = ?2 and t.del = 1 ")
    List<SurveyTemplateOptions> findById(String qstcode, String tempCode);
    @Query("select t from  SurveyTemplateOptions t where t.templateCode = ?1 and t.del = 1 ")
    List<SurveyTemplateOptions> findByQuestionCode(String qstcode);
    @Modifying
    @Query("update SurveyTemplateOptions t set t.haveComment=?4,t.content=?5," +
            "t.questionCodeNext=?6,t.isRequired=?7,t.sort=?8 where  t.templateQuestionCode = ?2 and t.templateCode = ?1 and t.code=?3")

+ 23 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/questionnaire/QuestionnaireUsersDao.java

@ -0,0 +1,23 @@
package com.yihu.wlyy.repository.questionnaire;
import com.yihu.wlyy.entity.questionnaire.QuestionnaireUsers;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.Date;
import java.util.List;
/**
 * Created by Reece on 2017/3/10.
 */
public interface QuestionnaireUsersDao extends PagingAndSortingRepository<QuestionnaireUsers, Long> {
    @Query("select u from  QuestionnaireUsers u where  u.openid=?1")
    QuestionnaireUsers findByOpoenId(String openId);
    @Modifying
    @Query("update QuestionnaireUsers t set t.name=?2,t.idcard=?3," +
            "t.mobile=?4,t.census=?5,t.address=?6,t.updateTime = ?7  where  t.code=?1")
    int modifyOption(String code, String name, String idCard, String mobile, String census, String address, Date updateTime);
}

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

@ -872,6 +872,8 @@ public class SignWebService extends BaseService {
        Long adminTeamId = null;
        String doctorHealth = null;
        String doctor = null;
        Date beginTime = null;
        Date endTime = null;
        JSONObject resultObject = new JSONObject();
        //先查找续签表有没有记录
        List<SignFamilyRenew> renews = signFamilyRenewDao.findByTeamCodeIsValid(teamCode, code);
@ -899,6 +901,8 @@ public class SignWebService extends BaseService {
            adminTeamId = signFamily.getAdminTeamId();
            doctorHealth = signFamily.getDoctorHealth();
            doctor = signFamily.getDoctor();
            beginTime = signFamily.getBegin();
            endTime = signFamily.getEnd();
            resultObject.put("expensesStatus", signFamily.getExpensesStatus());
        } else {
            SignFamilyRenew renew = renews.get(0);
@ -907,6 +911,8 @@ public class SignWebService extends BaseService {
            adminTeamId = renew.getAdminTeamId();
            doctorHealth = renew.getDoctorHealth();
            doctor = renew.getDoctor();
            beginTime = renew.getBegin();
            endTime = renew.getEnd();
            resultObject.put("expensesStatus",renew.getExpensesStatus() );
        }
@ -945,18 +951,24 @@ public class SignWebService extends BaseService {
        //统计待预约数量
        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 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 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) = ? ";
        StringBuffer countSql = new StringBuffer();
        countSql.append(consult_sql).append(" union all ").append(followup_sql).append(" union all ").append(reservation_sql).append(" union all ").append(article_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, doctorHealth, doctor, patient, year});
        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});
        Long count = elasticsearchUtil.excuteForLong(article_sql,esType,esIndex);
        resultObject.put("consultNum", resultCount.get(0).get("count"));
        resultObject.put("followupNum", resultCount.get(1).get("count"));
        resultObject.put("reservationNum", resultCount.get(2).get("count"));
        resultObject.put("articleNum", resultCount.get(3).get("count"));
        resultObject.put("guidanceNum", resultCount.get(4).get("count"));
        resultObject.put("articleNum", count!=null?count.longValue():0);
        resultObject.put("guidanceNum", resultCount.get(3).get("count"));
        return resultObject;
    }

+ 3 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/imm/ChildFamilyImmuneService.java

@ -50,7 +50,9 @@ public class ChildFamilyImmuneService extends BaseService {
		}else{
			childFamilyImmune = childFamilyImmuneDao.findByfaAndChildCodeAndFamilyCode(childInfo.getCode(),uid);
			
			if(childFamilyImmune != null){
			if(childFamilyImmune == null){
				childFamilyImmune = new ChildFamilyImmune();
			}else{
				throw new Exception("您已绑定过该新生儿,无法重复绑定");
			}
		}

+ 32 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/questionnaire/QuestionnaireUsersService.java

@ -0,0 +1,32 @@
package com.yihu.wlyy.service.questionnaire;
import com.yihu.wlyy.entity.questionnaire.QuestionnaireUsers;
import com.yihu.wlyy.repository.questionnaire.QuestionnaireUsersDao;
import com.yihu.wlyy.service.BaseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
 * Created by Reece on 2017/3/14.
 */
@Service
@Transactional
public class QuestionnaireUsersService extends BaseService {
    @Autowired
    private QuestionnaireUsersDao questionnaireUsersDao;
    public void userInfo(String openId){
        QuestionnaireUsers questionnaireUsers = questionnaireUsersDao.findByOpoenId(openId);
        if (questionnaireUsers!=null){
            //TODO 根据身份证判断是否抽过奖,去es里查询,如果有抽过奖则返回code,没有返回实体类。
        }
    }
    public void SaveUser(QuestionnaireUsers questionnaireUsers){
    }
}

+ 78 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/survey/PatientQuestionnaireService.java

@ -2,6 +2,7 @@ package com.yihu.wlyy.service.survey;
import com.yihu.wlyy.entity.doctor.survey.*;
import com.yihu.wlyy.repository.doctor.*;
import com.yihu.wlyy.repository.questionnaire.QuestionnaireUsersDao;
import com.yihu.wlyy.service.BaseService;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
@ -9,6 +10,7 @@ import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -34,6 +36,13 @@ public class PatientQuestionnaireService extends BaseService {
    private SurveyAnswersDao surveyAnswersDao;
    @Autowired
    SurveyStatisticsDao surveyStatisticsDao;
    @Autowired
    private  SurveyTemplateQuestionsDao surveyTemplateQuestionsDao;
    @Autowired
    private SurveyTemplateOptionsDao surveyTemplateOptionsDao;
    @Autowired
    private QuestionnaireUsersDao questionnaireUsersDao;
    private Logger logger = LoggerFactory.getLogger(this.getClass());
    public JSONObject getSurveySummary(String patient, String id) throws Exception {
@ -221,4 +230,73 @@ 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 String saveAnswerAndLotto(JSONObject jsonData) 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  UUID.randomUUID().toString();
    }
}

+ 306 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/third/guahao/ImmuneService.java

@ -528,4 +528,310 @@ public class ImmuneService {
			throw new Exception("获取免疫接种机构列表息失败!");
		}
	}
	
	/**
	 * 获取免疫接种排班信息(7天排班)
	 * @param orgCode
	 * @return
	 * @throws Exception
	 */
	public JSONObject GetOrgScheduleList(String orgCode) throws Exception{
//		String url = jwUrl + "/third/guahao/imm/GetOrgScheduleList";
//		List<NameValuePair> params = new ArrayList<>();
//		params.add(new BasicNameValuePair("OrgCode", orgCode));
//		params.add(new BasicNameValuePair("StartTime", DateUtil.getStringDateShort()));//现在的时间
//
//		Date endDate = DateUtil.getPreDays(new Date(),7);
//		params.add(new BasicNameValuePair("EndTime", DateUtil.dateToStrShort(endDate)));//现在的时间往后延7天
//
//		String response = httpClientUtil.post(url, params, "UTF-8");
//		JSONObject data = JSONObject.parseObject(response);
//		int status = data.getInteger("status");
//		String xml = data.getString("data");
		
		int status = 200;
		String xml = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\n" +
				"<ArrayOfViewImmuneModel xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
				"\t<ViewImmuneModel>\n" +
				"\t\t<Org>\n" +
				"\t\t\t<ORG_ID>106</ORG_ID>\n" +
				"\t\t\t<CODE>350211B1009</CODE>\n" +
				"\t\t\t<NAME>思明区鹭江街道社区卫生服务中心</NAME>\n" +
				"\t\t\t<ADDRESS /><REMARK />\n" +
				"\t\t\t<SHORT_NAME>思明区鹭江街道社区卫生服务中心</SHORT_NAME>\n" +
				"\t\t\t<RESERVATION_TELEPHONE />\n" +
				"\t\t\t<NUMBER_RELEASE_TIME xsi:nil=\"true\" />\n" +
				"\t\t\t<NUMBER_RELEASE_DAY xsi:nil=\"true\" />\n" +
				"\t\t\t<AVG_SCORE>10</AVG_SCORE>\n" +
				"\t\t\t<PHONE_INTRODUCTION />\n" +
				"\t\t\t<STATUS xsi:nil=\"true\" />\n" +
				"\t\t\t<SORT>0</SORT>\n" +
				"\t\t\t<ORG_TYPE xsi:nil=\"true\" />\n" +
				"\t\t\t<ZONE_CODE>350203</ZONE_CODE>\n" +
				"\t\t\t<UPDATE_DATE xsi:nil=\"true\" />\n" +
				"\t\t\t<ORG_IMMUNE xsi:nil=\"true\" />\n" +
				"\t\t</Org>\n" +
				"\t\t<DateNumbers>\n" +
				"\t\t\t<DateNumber>\n" +
				"\t\t\t\t<SECTIONLIST />\n" +
				"\t\t\t\t<ID>8adf96c561193b5e0161196985600086</ID>\n" +
				"\t\t\t\t<DATE>2018-01-29T00:00:00</DATE>\n" +
				"\t\t\t\t<TIME>AM</TIME>\n" +
				"\t\t\t\t<MAX>43</MAX>\n" +
				"\t\t\t\t<USED>1</USED>\n" +
				"\t\t\t\t<FEE>0</FEE>\n" +
				"\t\t\t\t<STATUS>1</STATUS>\n" +
				"\t\t\t</DateNumber>\n" +
				"\t\t\t<DateNumber>\n" +
				"\t\t\t\t<SECTIONLIST />\n" +
				"\t\t\t\t<ID>8adf96c561193b5e01611969856a0101</ID>\n" +
				"\t\t\t\t<DATE>2018-01-29T00:00:00</DATE>\n" +
				"\t\t\t\t<TIME>PM</TIME>\n" +
				"\t\t\t\t<MAX>41</MAX>\n" +
				"\t\t\t\t<USED>1</USED>\n" +
				"\t\t\t\t<FEE>0</FEE>\n" +
				"\t\t\t\t<STATUS>1</STATUS>\n" +
				"\t\t\t</DateNumber>\n" +
				"\t\t\t<DateNumber>\n" +
				"\t\t\t\t<SECTIONLIST />\n" +
				"\t\t\t\t<ID>8adf96c5611b73ac01611e8fd97c0e82</ID>\n" +
				"\t\t\t\t<DATE>2018-01-30T00:00:00</DATE>\n" +
				"\t\t\t\t<TIME>AM</TIME>\n" +
				"\t\t\t\t<MAX>43</MAX>\n" +
				"\t\t\t\t<USED>1</USED>\n" +
				"\t\t\t\t<FEE>0</FEE>\n" +
				"\t\t\t\t<STATUS>1</STATUS>\n" +
				"\t\t\t</DateNumber>\n" +
				"\t\t\t<DateNumber>\n" +
				"\t\t\t\t<SECTIONLIST />\n" +
				"\t\t\t\t<ID>8adf96c5611b73ac01611e8fd9830efd</ID>\n" +
				"\t\t\t\t<DATE>2018-01-30T00:00:00</DATE>\n" +
				"\t\t\t\t<TIME>PM</TIME>\n" +
				"\t\t\t\t<MAX>41</MAX>\n" +
				"\t\t\t\t<USED>1</USED>\n" +
				"\t\t\t\t<FEE>0</FEE>\n" +
				"\t\t\t\t<STATUS>1</STATUS>\n" +
				"\t\t\t</DateNumber>\n" +
				"\t\t\t<DateNumber>\n" +
				"\t\t\t\t<SECTIONLIST />\n" +
				"\t\t\t\t<ID>8adf96c5611b73ac01611e8fd97c0e82</ID>\n" +
				"\t\t\t\t<DATE>2018-01-31T00:00:00</DATE>\n" +
				"\t\t\t\t<TIME>AM</TIME>\n" +
				"\t\t\t\t<MAX>43</MAX>\n" +
				"\t\t\t\t<USED>1</USED>\n" +
				"\t\t\t\t<FEE>0</FEE>\n" +
				"\t\t\t\t<STATUS>1</STATUS>\n" +
				"\t\t\t</DateNumber>\n" +
				"\t\t\t<DateNumber>\n" +
				"\t\t\t\t<SECTIONLIST />\n" +
				"\t\t\t\t<ID>8adf96c5611b73ac01611e8fd9830efd</ID>\n" +
				"\t\t\t\t<DATE>2018-01-31T00:00:00</DATE>\n" +
				"\t\t\t\t<TIME>PM</TIME>\n" +
				"\t\t\t\t<MAX>41</MAX>\n" +
				"\t\t\t\t<USED>1</USED>\n" +
				"\t\t\t\t<FEE>0</FEE>\n" +
				"\t\t\t\t<STATUS>1</STATUS>\n" +
				"\t\t\t</DateNumber>\n" +
				"\t\t</DateNumbers>\n" +
				"\t</ViewImmuneModel>\n" +
				"</ArrayOfViewImmuneModel>";
		
		
		
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
		
		JSONObject result = new JSONObject();
		
		if(200 == status && StringUtils.isNotBlank(xml)){
			Document document = DocumentHelper.parseText(xml);
			
			
			Element ArrayOfImmuneSchudleModel = document.getRootElement();
			Element ViewImmuneModel = ArrayOfImmuneSchudleModel.element("ViewImmuneModel");
			Element Org = ViewImmuneModel.element("Org");
			
			//机构信息
			Element ORG_ID = Org.element("ORG_ID");
			Element CODE = Org.element("CODE");
			Element NAME = Org.element("NAME");
			Element SHORT_NAME = Org.element("SHORT_NAME");
			Element SORT = Org.element("SORT");
			Element ZONE_CODE = Org.element("ZONE_CODE");
			Element AVG_SCORE = Org.element("AVG_SCORE");
			
			result.put("ORG_CODE",CODE.getTextTrim());//机构编码
			result.put("ORG_ID",ORG_ID.getTextTrim());//机构ID
			result.put("ORG_NAME",NAME.getTextTrim());//机构名称
			result.put("ORG_SHORT_NAME",SHORT_NAME.getTextTrim());//机构简称
			String hospitalcode = hospitalMappingDao.getCodeByMapping(CODE.getTextTrim(), "1");
			Hospital hospital = hospitalDao.findByCode(hospitalcode);
			result.put("ORG_PHOTO",hospital.getPhoto());//机构图片
			result.put("ORG_PHONE",hospital.getPhone());//机构电话
			result.put("ORG_ADDRESS",hospital.getAddress());//机构地址
			result.put("ORG_INFO",hospital.getIntro());//机构简介
			result.put("AVG_SCORE",AVG_SCORE.getTextTrim());
			result.put("SORT",SORT.getTextTrim());
			result.put("ZONE_CODE",ZONE_CODE.getTextTrim());//机构区域编码
			
			//排班列表
			Element DateNumbers = ViewImmuneModel.element("DateNumbers");
			Iterator<Element> iterator = DateNumbers.elementIterator();
			JSONArray DateNumbersJSON = new JSONArray();
			while(iterator.hasNext()){
				JSONObject DateNumberJSON = new JSONObject();
				Element e = iterator.next();
				Element ID = e.element("ID");
				Element DATE = e.element("DATE");
				Element TIME = e.element("TIME");
				Element MAX = e.element("MAX");
				Element USED = e.element("USED");
				Element FEE = e.element("FEE");
				Element STATUS = e.element("STATUS");
				DateNumberJSON.put("ID",ID.getTextTrim());//排班ID
				DateNumberJSON.put("DATE",DATE.getTextTrim());//排班日期
				DateNumberJSON.put("TIME",TIME.getTextTrim());//上午或者下去
				DateNumberJSON.put("MAX",MAX.getTextTrim());//号源数量
				DateNumberJSON.put("USED",USED.getTextTrim());//已使用
				DateNumberJSON.put("FEE",FEE.getTextTrim());//费用
				DateNumberJSON.put("STATUS",STATUS.getTextTrim());//排班状态:1可用,0不可用
				
				Date datevo = dateFormat.parse(DATE.getTextTrim());
				DateNumberJSON.put("DATEVO", DateUtil.dateToStrShort(datevo));
				DateNumberJSON.put("WEEK",DateUtil.getWeekByDate(datevo));
				DateNumbersJSON.add(DateNumberJSON);
			}
			
			result.put("DateNumbers",DateNumbersJSON);
			return result;
		}else{
			throw new Exception("获取免疫接种机构列表息失败!");
		}
	}
	
	/**
	 * 获取免疫接种号源
	 * @param orgId
	 * @param scheduleId
	 * @param amorpm
	 * @return
	 * @throws Exception
	 */
	public JSONArray GetOrgNumberList(String orgId, String scheduleId,String amorpm) throws Exception{
//		String url = jwUrl + "/third/guahao/imm/GetOrgNumberList";
//		List<NameValuePair> params = new ArrayList<>();
//		params.add(new BasicNameValuePair("orgId", orgId));
//		params.add(new BasicNameValuePair("ScheduleId", scheduleId);//现在的时间
//
//		String response = httpClientUtil.post(url, params, "UTF-8");
//		JSONObject data = JSONObject.parseObject(response);
//		int status = data.getInteger("status");
//		String xml = data.getString("data");
		
		int status = 200;
		String xml = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\n" +
				"<ArrayOfV_NUMBER_IMMUNE\n" +
				"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
				"    xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" +
				"    <V_NUMBER_IMMUNE>\n" +
				"        <ORG_ID>501</ORG_ID>\n" +
				"        <START_TIME>2017-08-24T08:00:00</START_TIME>\n" +
				"        <END_TIME>2017-08-24T08:08:00</END_TIME>\n" +
				"        <SCHEDULE_ID>350211B10392017082401</SCHEDULE_ID>\n" +
				"        <NUMBER_ID>081000</NUMBER_ID>\n" +
				"        <UPDATE_TIME>2017-08-14T10:04:41</UPDATE_TIME>\n" +
				"        <LIMIT>1</LIMIT>\n" +
				"        <USED>0</USED>\n" +
				"        <CREATE_TIME>2017-08-14T10:04:41</CREATE_TIME>\n" +
				"        <UPLOAD_STATUS>0</UPLOAD_STATUS>\n" +
				"        <DATA_STATUS>1</DATA_STATUS>\n" +
				"        <IS_CORRECT>0</IS_CORRECT>\n" +
				"        <DELAY>0</DELAY>\n" +
				"        <CANCEL_DATE xsi:nil=\"true\" />\n" +
				"        <PLATFORM_FLAG>0</PLATFORM_FLAG>\n" +
				"    </V_NUMBER_IMMUNE>\n" +
				"    <V_NUMBER_IMMUNE>\n" +
				"        <ORG_ID>501</ORG_ID>\n" +
				"        <START_TIME>2017-08-24T09:00:00</START_TIME>\n" +
				"        <END_TIME>2017-08-24T09:08:00</END_TIME>\n" +
				"        <SCHEDULE_ID>350211B10392017082401</SCHEDULE_ID>\n" +
				"        <NUMBER_ID>081000</NUMBER_ID>\n" +
				"        <UPDATE_TIME>2017-08-14T10:04:41</UPDATE_TIME>\n" +
				"        <LIMIT>1</LIMIT>\n" +
				"        <USED>0</USED>\n" +
				"        <CREATE_TIME>2017-08-14T10:04:41</CREATE_TIME>\n" +
				"        <UPLOAD_STATUS>0</UPLOAD_STATUS>\n" +
				"        <DATA_STATUS>1</DATA_STATUS>\n" +
				"        <IS_CORRECT>0</IS_CORRECT>\n" +
				"        <DELAY>0</DELAY>\n" +
				"        <CANCEL_DATE xsi:nil=\"true\" />\n" +
				"        <PLATFORM_FLAG>0</PLATFORM_FLAG>\n" +
				"    </V_NUMBER_IMMUNE>\n" +
				"    <V_NUMBER_IMMUNE>\n" +
				"        <ORG_ID>501</ORG_ID>\n" +
				"        <START_TIME>2017-08-24T10:00:00</START_TIME>\n" +
				"        <END_TIME>2017-08-24T10:08:00</END_TIME>\n" +
				"        <SCHEDULE_ID>350211B10392017082401</SCHEDULE_ID>\n" +
				"        <NUMBER_ID>081000</NUMBER_ID>\n" +
				"        <UPDATE_TIME>2017-08-14T10:04:41</UPDATE_TIME>\n" +
				"        <LIMIT>1</LIMIT>\n" +
				"        <USED>0</USED>\n" +
				"        <CREATE_TIME>2017-08-14T10:04:41</CREATE_TIME>\n" +
				"        <UPLOAD_STATUS>0</UPLOAD_STATUS>\n" +
				"        <DATA_STATUS>1</DATA_STATUS>\n" +
				"        <IS_CORRECT>0</IS_CORRECT>\n" +
				"        <DELAY>0</DELAY>\n" +
				"        <CANCEL_DATE xsi:nil=\"true\" />\n" +
				"        <PLATFORM_FLAG>0</PLATFORM_FLAG>\n" +
				"    </V_NUMBER_IMMUNE>\n" +
				"</ArrayOfV_NUMBER_IMMUNE>";
		
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
		JSONArray result = new JSONArray();
		if(200 == status && StringUtils.isNotBlank(xml)){
			Document document = DocumentHelper.parseText(xml);
			Element ArrayOfV_NUMBER_IMMUNE = document.getRootElement();
			Iterator<Element> iterator = ArrayOfV_NUMBER_IMMUNE.elementIterator();
			while(iterator.hasNext()){
				JSONObject DateNumberJSON = new JSONObject();
				Element e = iterator.next();
				Element ORG_ID = e.element("ORG_ID");
				Element START_TIME = e.element("START_TIME");
				Date START_TIME_VO = dateFormat.parse(START_TIME.getTextTrim());
				Element END_TIME = e.element("END_TIME");
				Date END_TIME_VO = dateFormat.parse(END_TIME.getTextTrim());
				Element SCHEDULE_ID = e.element("SCHEDULE_ID");
				Element NUMBER_ID = e.element("NUMBER_ID");
				Element UPDATE_TIME = e.element("UPDATE_TIME");
				Element LIMIT = e.element("LIMIT");
				Element USED = e.element("USED");
				Element CREATE_TIME = e.element("CREATE_TIME");
				Element UPLOAD_STATUS = e.element("UPLOAD_STATUS");
				Element DATA_STATUS = e.element("DATA_STATUS");
				Element IS_CORRECT = e.element("IS_CORRECT");
				Element DELAY = e.element("DELAY");
				Element PLATFORM_FLAG = e.element("PLATFORM_FLAG");
				DateNumberJSON.put("ORG_ID",ORG_ID.getTextTrim());//机构ID
				DateNumberJSON.put("ID",NUMBER_ID.getTextTrim());//排班ID
				DateNumberJSON.put("START_TIME",START_TIME.getTextTrim());//号源开始时间
				DateNumberJSON.put("START_TIME_VO",DateUtil.dateToStrLong(START_TIME_VO));//号源开始时间--前端展示和预约用
				DateNumberJSON.put("END_TIME",END_TIME.getTextTrim());//号源结束时间
				DateNumberJSON.put("END_TIME_VO",DateUtil.dateToStrLong(END_TIME_VO));//号源结束时间--前端展示用
				DateNumberJSON.put("UPDATE_TIME",UPDATE_TIME.getTextTrim());//号源更新时间
				DateNumberJSON.put("CREATE_TIME",CREATE_TIME.getTextTrim());//号源创建
				DateNumberJSON.put("TIME",amorpm);//上午或者下去
				DateNumberJSON.put("LIMIT",LIMIT.getTextTrim());//号源数量
				DateNumberJSON.put("USED",USED.getTextTrim());//已使用
				DateNumberJSON.put("DATA_STATUS",DATA_STATUS.getTextTrim());//号源状态:1可用,0不可用
				DateNumberJSON.put("UPLOAD_STATUS",UPLOAD_STATUS.getTextTrim());//上传状态:1可用,0不可用
				DateNumberJSON.put("IS_CORRECT",IS_CORRECT.getTextTrim());//是否可修改:1可以,0不可以
				DateNumberJSON.put("DELAY",DELAY.getTextTrim());//是否延迟:1可以,0不可以
				DateNumberJSON.put("PLATFORM_FLAG",PLATFORM_FLAG.getTextTrim());//平台标志
				DateNumberJSON.put("SCHEDULE_ID",SCHEDULE_ID.getTextTrim());//排班ID
				result.add(DateNumberJSON);
			}
			return result;
		}else{
			throw new Exception("获取免疫接种机构列表息失败!");
		}
	}
}

+ 182 - 0
patient-co/patient-co-wlyy/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"));
	}
}

+ 74 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/common/util/CaptchaController.java

@ -5,6 +5,8 @@ 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;
@ -30,6 +32,9 @@ import java.util.concurrent.ConcurrentHashMap;
@RestController
@RequestMapping(value = "/patient/captcha", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class CaptchaController extends BaseController {
    @Autowired
    private StringRedisTemplate redisTemplate;
    private Map<String, String> captchaCache = new ConcurrentHashMap<>();
    private DefaultKaptcha captchaProducer = new DefaultKaptcha();
@ -108,4 +113,73 @@ public class CaptchaController extends BaseController {
    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());
        }
    }
}

+ 36 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/booking/PatientBookingController.java

@ -191,6 +191,42 @@ public class PatientBookingController extends WeixinBaseController{
        }
    }
    
    @RequestMapping(value = "/imm/GetOrgScheduleList", method = RequestMethod.GET)
    @ResponseBody
    @ObserverRequired
    @ApiOperation("计免:获取免疫接种排班信息-7天排班")
    public String GetOrgScheduleList (@ApiParam(name = "orgCode", value = "机构编码", defaultValue = "")
                                          @RequestParam(value = "orgCode", required = true) String orgCode){
        
        try{
            com.alibaba.fastjson.JSONObject result = immuneService.GetOrgScheduleList(orgCode);
            return write(200, "查询成功","data",result);
        }catch (Exception e){
            error(e);
            return error(-1, e.getMessage());
        }
    }
    
    @RequestMapping(value = "/imm/GetOrgNumberList", method = RequestMethod.GET)
    @ResponseBody
    @ObserverRequired
    @ApiOperation("计免:获取免疫接种号源")
    public String GetOrgNumberList (@ApiParam(name="orgId",value="机构编码-ZONECODE",defaultValue = "350206")
                                    @RequestParam String orgId,
                                    @ApiParam(name="ScheduleId",value="排班ID",defaultValue = "350211B10402017080901")
                                    @RequestParam String ScheduleId,
                                    @ApiParam(name="amorpm",value="上午或者下午",defaultValue = "AM")
                                    @RequestParam String amorpm){
        
        try{
            com.alibaba.fastjson.JSONArray result = immuneService.GetOrgNumberList(orgId,ScheduleId,amorpm);
            return write(200, "查询成功","data",result);
        }catch (Exception e){
            error(e);
            return error(-1, e.getMessage());
        }
    }
    
    @RequestMapping(value = "/imm/RegisterImmune", method = RequestMethod.POST)
    @ResponseBody
    @ObserverRequired

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

@ -0,0 +1,39 @@
package com.yihu.wlyy.web.patient.questionnaire;
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.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 = "/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) {
    return "";
    }
}

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

@ -1,5 +1,7 @@
package com.yihu.wlyy.web.patient.survey;
import com.google.gson.JsonObject;
import com.yihu.wlyy.rest.model.common.SimpleResult;
import com.yihu.wlyy.service.survey.PatientQuestionnaireService;
import com.yihu.wlyy.web.BaseController;
import io.swagger.annotations.Api;
@ -7,12 +9,17 @@ 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.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.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
 * Created by Reece on 2017/3/14.
 */
@ -23,6 +30,9 @@ public class PatientQuestionnaireController extends BaseController {
    @Autowired
    private PatientQuestionnaireService patientQuestionnaireService;
    @Autowired
    private StringRedisTemplate redisTemplate;
    @RequestMapping(value = "getSurveySummary", method = RequestMethod.GET)
    @ApiOperation(value = "居民端获取问卷概述")
    @ResponseBody
@ -74,4 +84,48 @@ public class PatientQuestionnaireController extends BaseController {
        }
    }
    @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);
            }
            //验证成功,保存问卷进行抽奖
            if (pass){
                return write(200, "操作成功!","data",patientQuestionnaireService.saveAnswerAndLotto(json));
            }else{
                return write(-1, "验证码错误!");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return write(-1, "操作失败!");
        }
    }
}

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

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

+ 5 - 0
patient-co/patient-co-wlyy/src/main/resources/application-dev.yml

@ -136,3 +136,8 @@ neiwang:
  enable: false
  #wlyy: http://59.61.92.90:8072/wlyy
  wlyy: http://192.168.131.131:8080/
#系统中使用的双层对称加密使用到的KEY
Riva:
  RIVAED_KEY1: LUZ7TN3KOT8AWCD3ZA4NBMI5VNF7E50F6XYEP2WZM68JQYY5JE02L4L5FS9R4NGUGMHSCAPW9AL
  RIVAED_KEY2: C3SHUI8OWBOA4ZASS7FEYJ6RIVXA9SW6U5OA56ERUYZTRFHCRZO8AHT4TTW2MAGT80MGXN

+ 5 - 0
patient-co/patient-co-wlyy/src/main/resources/application-devtest.yml

@ -135,3 +135,8 @@ activemq:
neiwang:
  enable: true
  wlyy: http://localhost:8081
#系统中使用的双层对称加密使用到的KEY
Riva:
  RIVAED_KEY1: LUZ7TN3KOT8AWCD3ZA4NBMI5VNF7E50F6XYEP2WZM68JQYY5JE02L4L5FS9R4NGUGMHSCAPW9AL
  RIVAED_KEY2: C3SHUI8OWBOA4ZASS7FEYJ6RIVXA9SW6U5OA56ERUYZTRFHCRZO8AHT4TTW2MAGT80MGXN

+ 6 - 1
patient-co/patient-co-wlyy/src/main/resources/application-local.yml

@ -126,4 +126,9 @@ activemq:
##如果是外网项目就是flase 内网是true
neiwang:
  enable: true
  wlyy: http://59.61.92.90:8072/wlyy
  wlyy: http://59.61.92.90:8072/wlyy
#系统中使用的双层对称加密使用到的KEY
Riva:
  RIVAED_KEY1: LUZ7TN3KOT8AWCD3ZA4NBMI5VNF7E50F6XYEP2WZM68JQYY5JE02L4L5FS9R4NGUGMHSCAPW9AL
  RIVAED_KEY2: C3SHUI8OWBOA4ZASS7FEYJ6RIVXA9SW6U5OA56ERUYZTRFHCRZO8AHT4TTW2MAGT80MGXN

+ 6 - 1
patient-co/patient-co-wlyy/src/main/resources/application-localtest.yml

@ -127,4 +127,9 @@ activemq:
##如果是外网项目就是flase 内网是true
neiwang:
  enable: true
  wlyy: http://59.61.92.90:8072/wlyy
  wlyy: http://59.61.92.90:8072/wlyy
#系统中使用的双层对称加密使用到的KEY
Riva:
  RIVAED_KEY1: LUZ7TN3KOT8AWCD3ZA4NBMI5VNF7E50F6XYEP2WZM68JQYY5JE02L4L5FS9R4NGUGMHSCAPW9AL
  RIVAED_KEY2: C3SHUI8OWBOA4ZASS7FEYJ6RIVXA9SW6U5OA56ERUYZTRFHCRZO8AHT4TTW2MAGT80MGXN

+ 6 - 1
patient-co/patient-co-wlyy/src/main/resources/application-prod.yml

@ -140,4 +140,9 @@ springfox:
    swagger:
      v2:
        host: 27.155.100.191
        path: /swagger/api-docs
        path: /swagger/api-docs
#系统中使用的双层对称加密使用到的KEY
Riva:
  RIVAED_KEY1: LUZ7TN3KOT8AWCD3ZA4NBMI5VNF7E50F6XYEP2WZM68JQYY5JE02L4L5FS9R4NGUGMHSCAPW9AL
  RIVAED_KEY2: C3SHUI8OWBOA4ZASS7FEYJ6RIVXA9SW6U5OA56ERUYZTRFHCRZO8AHT4TTW2MAGT80MGXN

+ 6 - 1
patient-co/patient-co-wlyy/src/main/resources/application-test.yml

@ -125,4 +125,9 @@ activemq:
##如果是外网项目就是flase,false会调用内网http接口项目提交  内网是true直接上传fastDfs
neiwang:
  enable: true
  wlyy: http://59.61.92.90:8072/wlyy
  wlyy: http://59.61.92.90:8072/wlyy
#系统中使用的双层对称加密使用到的KEY
Riva:
  RIVAED_KEY1: LUZ7TN3KOT8AWCD3ZA4NBMI5VNF7E50F6XYEP2WZM68JQYY5JE02L4L5FS9R4NGUGMHSCAPW9AL
  RIVAED_KEY2: C3SHUI8OWBOA4ZASS7FEYJ6RIVXA9SW6U5OA56ERUYZTRFHCRZO8AHT4TTW2MAGT80MGXN