Browse Source

管理页数据报错问题

huangwenjie 7 years ago
parent
commit
9bf8560d3f
61 changed files with 484 additions and 250 deletions
  1. 10 0
      common/common-entity/src/main/java/com/yihu/wlyy/entity/security/AccessToken.java
  2. 10 0
      common/common-entity/src/main/java/com/yihu/wlyy/entity/security/JsApiTicket.java
  3. 3 0
      patient-co-customization/patient-co-modern-medicine/src/main/java/com/yihu/mm/controller/WeixinBaseController.java
  4. 2 2
      patient-co-customization/patient-co-modern-medicine/src/main/java/com/yihu/mm/repository/wlyy/patient/AccessTokenDao.java
  5. 6 1
      patient-co-customization/patient-co-modern-medicine/src/main/java/com/yihu/mm/service/AccessTokenService.java
  6. 4 1
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/controller/common/account/CustomerController.java
  7. 14 16
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/manager/account/CustomerService.java
  8. 9 7
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/http/HttpClientUtil.java
  9. 4 2
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/http/HttpHelper.java
  10. 17 10
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/util/ImUtill.java
  11. 16 13
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/service/DeviceService.java
  12. 10 20
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/task/PushMsgTask.java
  13. 4 4
      patient-co-service/wlyy_device/src/main/resources/application.yml
  14. 74 66
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/SignController.java
  15. 12 1
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/SignZYService.java
  16. 20 2
      patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/ZysoftService.java
  17. 2 2
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/repository/security/AccessTokenDao.java
  18. 2 2
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/repository/security/JsapiTicketDao.java
  19. 3 0
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/service/app/family/FamilyMemberService.java
  20. 1 1
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/service/app/sign/SignWebService.java
  21. 8 2
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/service/common/account/AccessTokenService.java
  22. 4 0
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/web/WeixinBaseController.java
  23. 69 0
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/web/doctor/template/DoctorFeldsherTemplateController.java
  24. 3 0
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/wechat/util/WeiXinAccessTokenUtils.java
  25. 1 1
      patient-co/patient-co-doctor-assistant/src/main/resources/wechat/weixin_menu_feldsher.txt
  26. 3 3
      patient-co/patient-co-statistics/src/main/resources/application.yml
  27. 1 1
      patient-co/patient-co-wlyy-job/pom.xml
  28. 3 1
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/event/ApplicationEvent.java
  29. 3 2
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/PatientDiseaseConditionSynJob.java
  30. 2 2
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/security/AccessTokenDao.java
  31. 2 2
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/security/JsapiTicketDao.java
  32. 3 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/app/family/FamilyMemberService.java
  33. 8 2
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/common/account/AccessTokenService.java
  34. 4 8
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/common/account/PatientService.java
  35. 1 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/third/jw/JwPrescriptionService.java
  36. 4 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/web/WeixinBaseController.java
  37. 3 4
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/web/quota/JobController.java
  38. 3 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/wechat/util/WeiXinAccessTokenUtils.java
  39. 1 1
      patient-co/patient-co-wlyy-job/src/main/resources/system.properties
  40. 1 1
      patient-co/patient-co-wlyy/pom.xml
  41. 1 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/prescription/PrescriptionReviewedDao.java
  42. 2 2
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/security/AccessTokenDao.java
  43. 2 2
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/security/JsapiTicketDao.java
  44. 3 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/family/FamilyMemberService.java
  45. 1 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/PatientHealthGuidanceService.java
  46. 1 2
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/PatientHealthIndexService.java
  47. 12 5
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/prescription/PrescriptionInfoService.java
  48. 2 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/sign/SignWebService.java
  49. 1 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/team/AdminTeamService.java
  50. 8 2
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/common/account/AccessTokenService.java
  51. 1 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/third/jw/JwPrescriptionService.java
  52. 1 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/CommonUtil.java
  53. 20 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/ImUtill.java
  54. 9 11
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/SendPatientUtil.java
  55. 4 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/WeixinBaseController.java
  56. 2 17
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/health/DoctorHealthController.java
  57. 8 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/wx/WechatTagController.java
  58. 3 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/util/WeiXinAccessTokenUtils.java
  59. 40 10
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/util/WeiXinTagUtil.java
  60. 12 12
      patient-co/patient-co-wlyy/src/main/resources/logback.xml
  61. 1 1
      pom.xml

+ 10 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/security/AccessToken.java

@ -14,12 +14,22 @@ public class AccessToken extends IdEntity {
    private String access_token;
    private String acc_id;
    private Long add_timestamp;
    private Long expires_in;
    private Date czrq;
    public String getAcc_id() {
        return acc_id;
    }
    public void setAcc_id(String acc_id) {
        this.acc_id = acc_id;
    }
    public String getAccess_token() {
        return access_token;
    }

+ 10 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/security/JsApiTicket.java

@ -18,12 +18,22 @@ public class JsApiTicket extends IdEntity {
    private String jsapi_ticket;
    private String acc_id;;
    private Long add_timestamp;
    private Long expires_in;
    private Date czrq;
    public String getAcc_id() {
        return acc_id;
    }
    public void setAcc_id(String acc_id) {
        this.acc_id = acc_id;
    }
    public String getJsapi_ticket() {
        return jsapi_ticket;
    }

+ 3 - 0
patient-co-customization/patient-co-modern-medicine/src/main/java/com/yihu/mm/controller/WeixinBaseController.java

@ -27,6 +27,8 @@ public class WeixinBaseController extends BaseController {
	private String appId;
	@Value("${wechat.appSecret}")
	private String appSecret;
	@Value("${wechat.accId}")
	private String accId;
	@Autowired
	private CommonUtil CommonUtil;
	@Autowired
@ -60,6 +62,7 @@ public class WeixinBaseController extends BaseController {
				AccessToken newaccessToken = new AccessToken();
				newaccessToken.setAccess_token(token);
				newaccessToken.setExpires_in(Long.parseLong(expires_in));
				newaccessToken.setAcc_id(accId);
				accessTokenService.addAccessToken(newaccessToken);
				return token;
			} else {

+ 2 - 2
patient-co-customization/patient-co-modern-medicine/src/main/java/com/yihu/mm/repository/wlyy/patient/AccessTokenDao.java

@ -11,7 +11,7 @@ import org.springframework.data.repository.PagingAndSortingRepository;
public interface AccessTokenDao extends PagingAndSortingRepository<AccessToken, Long> {
	
	@Query("select p from AccessToken p order by p.add_timestamp desc")
	Iterable<AccessToken> findAccessToken();
	@Query("select p from AccessToken p where p.acc_id = ?1 order by p.add_timestamp desc")
	Iterable<AccessToken> findAccessToken(String accId);
	
}

+ 6 - 1
patient-co-customization/patient-co-modern-medicine/src/main/java/com/yihu/mm/service/AccessTokenService.java

@ -8,6 +8,7 @@ package com.yihu.mm.service;
import com.yihu.mm.repository.wlyy.patient.AccessTokenDao;
import com.yihu.wlyy.entity.security.AccessToken;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springside.modules.utils.Clock;
@ -24,13 +25,16 @@ public class AccessTokenService {
	@Autowired
	private AccessTokenDao accessTokenDao;
	@Value("${wechat.accId}")
	private String accId;
	private Clock clock = Clock.DEFAULT;
	public Iterable<AccessToken> findAccessToken() {
		return accessTokenDao.findAccessToken();
		return accessTokenDao.findAccessToken(accId);
	}
@ -41,6 +45,7 @@ public class AccessTokenService {
	public void addAccessToken(AccessToken accessToken) {
		accessToken.setAdd_timestamp(System.currentTimeMillis());
		accessToken.setCzrq(clock.getCurrentDate());
		accessToken.setAcc_id(accId);
		accessTokenDao.save(accessToken);
	}

+ 4 - 1
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/controller/common/account/CustomerController.java

@ -188,7 +188,10 @@ public class CustomerController extends BaseController {
            type="3";
        }
        Map<String, Object> resp = customerService.sendMsg(doctor,msg,type);
        return write(200,"","data",resp);
        if(resp.size()==0){
            return write(200,"发送成功");
        }
        return write(-1,"发送失败","data",resp);
    }
}

+ 14 - 16
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/manager/account/CustomerService.java

@ -113,22 +113,6 @@ public class CustomerService{
	public Map<String, Object> sendMsg(Doctor doctor,String msg,String type) {
		Map<String, Object> resp = new HashMap<String, Object>();
		//发送短信消息啦
		String mobile = doctor.getMobile();
		//
		if(!StringUtils.isBlank(mobile)&&!"2".equals(type)){
			List<NameValuePair> par = new ArrayList<NameValuePair>();
			par.add(new BasicNameValuePair("mobiles", mobile));
			par.add(new BasicNameValuePair("content", msg));
			String result = HttpClientUtil.post(messageApi+"/sendMobileMessage",par,"UTF-8");
			JSONObject resultJson = new JSONObject(result);
			if(1!=resultJson.getInt("successNum")){
				resp.put("mobile","-1");//-1代表发送失败
			}
		}
		//发送微信消息啦
		String openId = doctor.getOpenid();
		if(!StringUtils.isBlank(openId)&&!"1".equals(type)){
@ -142,6 +126,20 @@ public class CustomerService{
				resp.put("wechat","-1");//-1代表发送失败
			}
		}
		//发送短信消息啦
		String mobile = doctor.getMobile();
		if(!StringUtils.isBlank(mobile)&&!"2".equals(type)){
			msg+="\n您可通过微信关注\"i健康智能助手\"公众号(微信号:厦门i健康)更快更便捷的获取服务信息。";
			List<NameValuePair> par = new ArrayList<NameValuePair>();
			par.add(new BasicNameValuePair("mobiles", mobile));
			par.add(new BasicNameValuePair("content", msg));
			String result = HttpClientUtil.post(messageApi+"/sendMobileMessage",par,"UTF-8");
			JSONObject resultJson = new JSONObject(result);
			if(1!=resultJson.getInt("successNum")){
				resp.put("mobile","-1");//-1代表发送失败
			}
		}
		return resp;
	}
}

+ 9 - 7
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/http/HttpClientUtil.java

@ -18,6 +18,7 @@ import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.client.RestTemplate;
@ -29,10 +30,11 @@ import java.util.Map;
/**
 * Created by hzp on 2016/8/9.
 */
@Component
public class HttpClientUtil {
    /**************************** 私有方法 *****************************************/
    private static CloseableHttpClient getCloseableHttpClient(SSLConnectionSocketFactory ssl) {
    private CloseableHttpClient getCloseableHttpClient(SSLConnectionSocketFactory ssl) {
        if(ssl == null)
        {
            return HttpClients.createDefault();
@ -45,7 +47,7 @@ public class HttpClientUtil {
        }
    }
    private static void close(CloseableHttpClient httpClient, CloseableHttpResponse response) {
    private void close(CloseableHttpClient httpClient, CloseableHttpResponse response) {
        try {
            if (httpClient != null) {
                httpClient.close();
@ -62,7 +64,7 @@ public class HttpClientUtil {
        }
    }
    private static HttpRequestBase getRequest(String method,String url,Map<String,Object> params,Map<String,Object> header) throws Exception
    private HttpRequestBase getRequest(String method,String url,Map<String,Object> params,Map<String,Object> header) throws Exception
    {
        List<BasicNameValuePair> jsonParams = new ArrayList<>();
        //配置参数
@ -101,7 +103,7 @@ public class HttpClientUtil {
    /**
     * get请求
     */
    public static HttpResponse request(String method,String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password) {
    public HttpResponse request(String method,String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password) {
        HttpResponse re = new HttpResponse();
        CloseableHttpResponse response = null;
        CloseableHttpClient httpclient = getCloseableHttpClient(ssl);
@ -142,7 +144,7 @@ public class HttpClientUtil {
     * @param chatSet 编码格式
     * @return
     */
    public static String get(String url, String chatSet) {
    public String get(String url, String chatSet) {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        try {
            // 创建httpget.
@ -175,7 +177,7 @@ public class HttpClientUtil {
        return null;
    }
    public static String postBody(String url,JSONObject params){
    public String postBody(String url,JSONObject params){
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
@ -186,7 +188,7 @@ public class HttpClientUtil {
        return ret;
    }
    public static void putBody(String url,JSONObject params){
    public void putBody(String url,JSONObject params){
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");

+ 4 - 2
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/http/HttpHelper.java

@ -3,7 +3,7 @@ package com.yihu.hos.device.common.http;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.ssl.SSLContexts;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.net.ssl.SSLContext;
@ -23,6 +23,8 @@ public class HttpHelper {
    private String httpsUser;
    private String httpsUserPassword;
    @Autowired
    private HttpClientUtil HttpClientUtil;
    private SSLConnectionSocketFactory  getDefaultSSL()
    {
@ -148,7 +150,7 @@ public class HttpHelper {
        }
    }
    public static HttpResponse delete(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    public HttpResponse delete(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
    {
        return HttpClientUtil.request("DELETE",url,params,header,ssl,user,password);

+ 17 - 10
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/util/ImUtill.java

@ -2,11 +2,18 @@ package com.yihu.hos.device.common.util;
import com.yihu.hos.device.common.http.HttpClientUtil;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
 * Created by 卓 on 2017/1/13.
 */
@Component
public class ImUtill {
    @Autowired
    private HttpClientUtil HttpClientUtil;
    /**
     * 发送消息给IM
     *
@ -14,7 +21,7 @@ public class ImUtill {
     * @param contentType 1文字 2图片消息
     * @param content     内容
     */
    public static String sendImMsg(String baseUrl,String from,String fromName, String sessionId, String contentType, String content,String businessType) {
    public String sendImMsg(String baseUrl,String from,String fromName, String sessionId, String contentType, String content,String businessType) {
        String imAddr = baseUrl + "/api/v2/sessions/"+sessionId+"/messages";
        JSONObject params = new JSONObject();
        params.put("sender_id", from);
@ -35,7 +42,7 @@ public class ImUtill {
     * @param contentType 1文字 2图片消息
     * @param content     内容
     */
    public static String sendTopicIM(String baseUrl,String from,String fromName, String topicId, String contentType, String content) {
    public String sendTopicIM(String baseUrl,String from,String fromName, String topicId, String contentType, String content) {
        String url = baseUrl+ ("api/v2/sessions/topic/"+topicId+"/messages");
        JSONObject params = new JSONObject();
        params.put("sender_id", from);
@ -55,7 +62,7 @@ public class ImUtill {
     * @param endUserName 结束人名字
     * @param sessionId 会话ID
     */
    public static JSONObject endTopics(String baseUrl,String sessionId,String endUser, String endUserName,String topicId) {
    public JSONObject endTopics(String baseUrl,String sessionId,String endUser, String endUserName,String topicId) {
        String imAddr = baseUrl + "api/v2/sessions/"+sessionId+"/topics/"+topicId+"/ended";
        JSONObject params = new JSONObject();
        params.put("session_id", sessionId);
@ -78,7 +85,7 @@ public class ImUtill {
     * @param user 结束人名字
     * @param sessionId 会话ID
     */
    public static void updateTopicUser(String baseUrl,String sessionId,String user) {
    public void updateTopicUser(String baseUrl,String sessionId,String user) {
        String imAddr = baseUrl + "api/v2/sessions/"+sessionId+"/participants/"+user;
        JSONObject params = new JSONObject();
        params.put("user", user+":"+0);
@ -92,7 +99,7 @@ public class ImUtill {
     * @param topicName  议题名称
     * @param participants 成员
     */
    public static JSONObject createTopics(String baseUrl,String sessionId, String topicId, String topicName, JSONObject participants, JSONObject messages, String sessionType) {
    public JSONObject createTopics(String baseUrl,String sessionId, String topicId, String topicName, JSONObject participants, JSONObject messages, String sessionType) {
        String imAddr = baseUrl + "api/v2/sessions/"+topicId+"/topics";
        JSONObject params = new JSONObject();
        params.put("topic_id", topicId);
@ -115,7 +122,7 @@ public class ImUtill {
     * 创建会话(system)
     *
     */
    public static JSONObject createSession(String baseUrl,JSONObject participants,String sessionType,String sessionName,String sessionId) {
    public JSONObject createSession(String baseUrl,JSONObject participants,String sessionType,String sessionName,String sessionId) {
        String imAddr = baseUrl + "api/v2/sessions";
        JSONObject params = new JSONObject();
        params.put("participants", participants.toString());
@ -141,7 +148,7 @@ public class ImUtill {
     * @param images
     * @return
     */
    public static JSONObject getCreateTopicMessage(String senderId,String senderName,String title,String description,String images){
    public JSONObject getCreateTopicMessage(String senderId,String senderName,String title,String description,String images){
        JSONObject messages = new JSONObject();
        messages.put("description",description);
        messages.put("title",title);
@ -151,7 +158,7 @@ public class ImUtill {
        return messages;
    }
    public static JSONObject getTopicMessage(String baseUrl,String topicId,String startMsgId,String endMsgId,int page,int pagesize,String uid){
    public JSONObject getTopicMessage(String baseUrl,String topicId,String startMsgId,String endMsgId,int page,int pagesize,String uid){
        String url = baseUrl
                + "api/v2/sessions/topic/"+topicId+"/messages?topic_id="+topicId+"&end="+startMsgId
                +"&start="+(endMsgId==null?"":endMsgId)+"&page="+page+"&pagesize="+pagesize+"&user="+uid;
@ -176,7 +183,7 @@ public class ImUtill {
     * @param sessionId
     * @return
     */
    public static JSONObject deleteMucUser(String baseUrl,String userId,String oldUserId,String sessionId) throws  Exception{
    public JSONObject deleteMucUser(String baseUrl,String userId,String oldUserId,String sessionId) throws  Exception{
        String url = baseUrl
                + "api/v2/sessions/"+sessionId+"/participant/update";
        try{
@ -202,7 +209,7 @@ public class ImUtill {
     * @param topicId
     * @return
     */
    public static JSONObject getTopic(String baseUrl,String topicId) throws  Exception{
    public JSONObject getTopic(String baseUrl,String topicId) throws  Exception{
        String url =baseUrl
                + "api/v2/sessions/topics/"+topicId+"?topic_id="+topicId;
        try{

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

@ -19,7 +19,6 @@ import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
@ -58,6 +57,8 @@ public class DeviceService {
    @Autowired
    private HttpHelper httpHelper;
    @Autowired
    private HttpClientUtil HttpClientUtil;
    @Autowired
    private SystemConfig systemConfig;
    @Autowired
    private JdbcTemplate jdbcTemplate;
@ -65,6 +66,8 @@ public class DeviceService {
    private  PatientBloodSuggerDao patientBloodSuggerDao;
    @Autowired
    private PatientHealthTimeDao patientHealthTimeDao;
    @Autowired
    private PushMsgTask pushMsgTask;
    private ObjectMapper objectMapper = new ObjectMapper();
    private Integer aStart;
@ -164,16 +167,16 @@ public class DeviceService {
        return "1";//"空腹血糖"
    }
 /*   private Boolean isInArea(String time, String[] timeArea) {
        String date = DateUtil.getDateFromDateTime(time);
        Long beginTime = DateUtil.compareDateTime(DateUtil.toTimestamp(time), DateUtil.toTimestamp(date + " " + timeArea[0] + ":00"));
        Long endTime = DateUtil.compareDateTime(DateUtil.toTimestamp(time), DateUtil.toTimestamp(date + " " + timeArea[1] + ":00"));
        if (beginTime > 0 && endTime < 0) {
            return true;
        } else {
            return false;
        }
    }*/
    /*   private Boolean isInArea(String time, String[] timeArea) {
           String date = DateUtil.getDateFromDateTime(time);
           Long beginTime = DateUtil.compareDateTime(DateUtil.toTimestamp(time), DateUtil.toTimestamp(date + " " + timeArea[0] + ":00"));
           Long endTime = DateUtil.compareDateTime(DateUtil.toTimestamp(time), DateUtil.toTimestamp(date + " " + timeArea[1] + ":00"));
           if (beginTime > 0 && endTime < 0) {
               return true;
           } else {
               return false;
           }
       }*/
// 判断时间是否在对应时间段
    private Boolean isInArea(String time,String begin,String end) {
        String date = DateUtil.getDateFromDateTime(time);
@ -440,7 +443,7 @@ public class DeviceService {
                    Date start = DateUtil.setDateTime(end,-7);
                    //计算血糖或者血压一周内的异常记录数量
                    int errorCount = patientHealthIndexDao.getCountByTimeAndStatus(start,end,1);
                    if(errorCount >= 5){
                    if(errorCount >= 5){//超过5次,记为预警状态
                        patient.setStandardStatus(1);
                    }
                }
@ -780,7 +783,7 @@ public class DeviceService {
        // 批量保存消息
        messageDao.save(messages);
        // 推送消息给医生
        PushMsgTask.getInstance().put(array);
        pushMsgTask.put(array);
    }
    /**

+ 10 - 20
patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/task/PushMsgTask.java

@ -1,39 +1,28 @@
package com.yihu.hos.device.task;
import com.yihu.hos.device.common.configuration.SystemConfig;
import com.yihu.hos.device.common.util.ImUtill;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.concurrent.LinkedBlockingQueue;
@Component
public class PushMsgTask {
	public static String url="";
	private static Logger logger = LoggerFactory.getLogger(PushMsgTask.class);
	// 最大容量为50的数组堵塞队列
	private static LinkedBlockingQueue<JSONObject> queue = new LinkedBlockingQueue<JSONObject>();
	private static PushMsgTask instance;
	private static Object lock = new Object();
	@Value("${systemConfig.socket_server}")
	private String socket_server;
	@Autowired
	private SystemConfig systemConfig;
	public static PushMsgTask getInstance() {
		synchronized (lock) {
			if (instance == null) {
				instance = new PushMsgTask();
				instance.run();
			}
		}
		return instance;
	}
	private ImUtill ImUtill;
	/**
	 * 添加一条推送消息
@ -75,6 +64,7 @@ public class PushMsgTask {
		}
	}
	@PostConstruct
	private void run() {
		new Thread(new ConsumerTask()).start();
	}
@ -116,7 +106,7 @@ public class PushMsgTask {
	 * @param msg 消息内容
	 * @param data 消息数据
	 */
	public static boolean pushMessage(String receiver, String msgType, String title, String msg, String data) {
	public boolean pushMessage(String receiver, String msgType, String title, String msg, String data) {
		try {
//			String url = "http://127.0.0.1:3000/api/v1/chats/sm";
//			HttpHelper httpHelper=new HttpHelper();
@ -135,8 +125,8 @@ public class PushMsgTask {
//			} else {
//				throw new Exception("接口调用错误!"+response.getBody());
//			}
			String url = "http://127.0.0.1:3000/";
			String url = socket_server +"/";
			org.json.JSONObject participants = new org.json.JSONObject();
			participants.put("system",0);
			participants.put(receiver,0);

+ 4 - 4
patient-co-service/wlyy_device/src/main/resources/application.yml

@ -52,8 +52,8 @@ spring:
  profiles: test
  datasource:
    url: jdbc:mysql://172.19.103.85:3306/device?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    username: ssgg
    password: ssgg
    username: linzhou
    password: linzhou
    driverClassName: com.mysql.jdbc.Driver
    maxTotal: 500
    maxIdle: 30
@ -77,7 +77,7 @@ healthStandard:
systemConfig:
  msg_push_server: http://127.0.0.1:3000/system/sendmsg.im
  jw_server: http://172.19.103.88:8011/wlyy_service-1.0-SNAPSHOT
  socket_server: http://192.168.131.102:3008
  socket_server: http://172.19.103.88:3000
---
spring:
  profiles: production
@ -107,5 +107,5 @@ healthStandard:
  ssy_max: 140
systemConfig:
  msg_push_server: http://127.0.0.1:3000/system/sendmsg.im
  jw_server: http://59.61.92.90:8087/wlyy_service
  jw_server: http://59.61.92.90:8072/wlyy_service
  socket_server: http://27.155.101.77:3000

+ 74 - 66
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/SignController.java

@ -7,6 +7,7 @@ import com.zoe.phip.ssp.sdk.ApiException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@ -22,77 +23,84 @@ import java.util.Map;
@Api(description = "基卫签约服务接口")
public class SignController {
	@Autowired
	ZysoftService zysoftService;
    @Autowired
    ZysoftService zysoftService;
	@Autowired
	private SignZYService signZYService;
    @Autowired
    private SignZYService signZYService;
	/******************************* 签约接口 ********************************************************/
    /******************************* 签约接口 ********************************************************/
	@RequestMapping(value = "CheckSignFamily",method = RequestMethod.POST)
	@ApiOperation("查询是否已签约")
	public Result checkSignFamily(
			@ApiParam(name="idcard",value="患者身份证",defaultValue = "350821201112240026")
			@RequestParam(value="idcard",required = true) String idcard){
		try {
			Map<String,String> response = signZYService.checkSignFamily(idcard);
			return Result.success("查询签约成功!",response);
		} catch (Exception ex) {
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
    @RequestMapping(value = "CheckSignFamily",method = RequestMethod.POST)
    @ApiOperation("查询是否已签约")
    public Result checkSignFamily(
            @ApiParam(name="idcard",value="患者身份证",defaultValue = "350821201112240026")
            @RequestParam(value="idcard",required = true) String idcard){
        try {
            Map<String,String> response = signZYService.checkSignFamily(idcard);
            return Result.success("查询签约成功!",response);
        } catch (Exception ex) {
            if(ex instanceof ApiException)
            {
                ApiException apiEx = (ApiException) ex;
                return Result.error(apiEx.errorCode(),ex.getMessage());
            }
            else{
                return Result.error(ex.getMessage());
            }
        }
    }
	@RequestMapping(value = "getSickFamilyDoctorSignLimit",method = RequestMethod.POST)
	@ApiOperation("查询家庭医生签约人数上限接口")
	public Result getSickFamilyDoctorSignLimit(
			@ApiParam(name="jwTeamCode",value="智业行政团队code",defaultValue = "44")
			@RequestParam(value="jwTeamCode",required = true) String jwTeamCode){
		try {
			String response = signZYService.getSickFamilyDoctorSignLimit(jwTeamCode);
			return Result.success("查询签约成功!",response);
		} catch (Exception ex) {
			ex.printStackTrace();
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
    @RequestMapping(value = "getSickFamilyDoctorSignLimit",method = RequestMethod.POST)
    @ApiOperation("查询家庭医生签约人数上限接口")
    public Result getSickFamilyDoctorSignLimit(
            @ApiParam(name="jwTeamCode",value="智业行政团队code",defaultValue = "44")
            @RequestParam(value="jwTeamCode",required = true) String jwTeamCode){
        try {
            String response = signZYService.getSickFamilyDoctorSignLimit(jwTeamCode);
            return Result.success("查询签约成功!",response);
        } catch (Exception ex) {
            ex.printStackTrace();
            if(ex instanceof ApiException)
            {
                ApiException apiEx = (ApiException) ex;
                return Result.error(apiEx.errorCode(),ex.getMessage());
            }
            else{
                return Result.error(ex.getMessage());
            }
        }
    }
	@RequestMapping(value = "getSickFamilyDoctorSpecialistControl",method = RequestMethod.POST)
	@ApiOperation("查询家签慢病患者定标情况接口")
	public Result getSickFamilyDoctorSpecialistControl(
			@ApiParam(name="TIME_START",value="修改的开始时间",defaultValue = "2016-9-1 00:00:00")
			@RequestParam(value="TIME_START",required = true) String TIME_START,
			@ApiParam(name="TIME_END",value="修改的开始时间",defaultValue = "2016-9-1 12:00:00")
			@RequestParam(value="TIME_END",required = true) String TIME_END){
		try {
			String response = signZYService.getSickFamilyDoctorSpecialistControl(TIME_START,TIME_END);
			return Result.success("查询签约成功!",response);
		} catch (Exception ex) {
			ex.printStackTrace();
			if(ex instanceof ApiException)
			{
				ApiException apiEx = (ApiException) ex;
				return Result.error(apiEx.errorCode(),ex.getMessage());
			}
			else{
				return Result.error(ex.getMessage());
			}
		}
	}
    @RequestMapping(value = "getSickFamilyDoctorSpecialistControl",method = RequestMethod.POST)
    @ApiOperation("查询家签慢病患者定标情况接口")
    public Result getSickFamilyDoctorSpecialistControl(
            @ApiParam(name="TIME_START",value="修改的开始时间",defaultValue = "2017-6-6 00:00:00")
            @RequestParam(value="TIME_START",required = false) String TIME_START,
            @ApiParam(name="TIME_END",value="修改的开始时间",defaultValue = "2017-6-7 23:59:59")
            @RequestParam(value="TIME_END",required = false) String TIME_END,
            @ApiParam(name="IDENTITY_CARD_NO",value="身份证号",defaultValue = "360502194503120013")
            @RequestParam(value="IDENTITY_CARD_NO",required = false) String IDENTITY_CARD_NO){
        try {
            String response = "";
            if(StringUtils.isBlank(IDENTITY_CARD_NO)){
                response = signZYService.getSickFamilyDoctorSpecialistControl(TIME_START,TIME_END);
            }else{
                response = signZYService.getSickFamilyDoctorSpecialistControlByIdcard(IDENTITY_CARD_NO);
            }
            return Result.success("查询成功!",response);
        } catch (Exception ex) {
            ex.printStackTrace();
            if(ex instanceof ApiException)
            {
                ApiException apiEx = (ApiException) ex;
                return Result.error(apiEx.errorCode(),ex.getMessage());
            }
            else{
                return Result.error(ex.getMessage());
            }
        }
    }

+ 12 - 1
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/SignZYService.java

@ -139,7 +139,7 @@ public class SignZYService {
    }
    /**
     * 查询家签慢病患者定标情况接口
     * 根据时间范围查询家签慢病患者定标情况接口
     * @param time_start
     * @param time_end
     * @return
@ -149,4 +149,15 @@ public class SignZYService {
        String response = zysoftService.getSickFamilyDoctorSpecialistControl(time_start,time_end,hospitalMapping[0],hospitalMapping[1]);
        return response;
    }
    /**
     * 根据身份证号查询家签慢病患者定标情况接口
     * @param identity_card_no
     * @return
     */
    public String getSickFamilyDoctorSpecialistControlByIdcard(String identity_card_no) throws Exception {
        String[] hospitalMapping = getHospitalMapping(null); //获取机构映射
        String response = zysoftService.getSickFamilyDoctorSpecialistControlByIdcard(identity_card_no,hospitalMapping[0],hospitalMapping[1]);
        return response;
    }
}

+ 20 - 2
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/ZysoftService.java

@ -120,8 +120,8 @@ public class ZysoftService {
        paramsList.put("msgHeader",msgHeader);
        paramsList.put("msgBody",msgBody);
        //System.out.print("msgHeader:"+msgHeader+"\r\n");
        //System.out.print("msgBody:"+msgBody+"\r\n");
        System.out.print("msgHeader:"+msgHeader+"\r\n");
        System.out.print("msgBody:"+msgBody+"\r\n");
        //新增日志
        String method = "POST";
@ -778,4 +778,22 @@ public class ZysoftService {
        return response;
    }
    /**
     * 根据身份证号查询家签慢病患者定标情况接口
     * @param identity_card_no
     * @return
     */
    public String getSickFamilyDoctorSpecialistControlByIdcard(String identity_card_no,String hospital,String licence) throws Exception{
        Map<String,String> header = new HashMap<>();
        header.put("ORGCODE",hospital);
        header.put("LICENCE",licence);
        Map<String,String> params = new HashMap<>();
        params.put("IDENTITY_CARD_NO",identity_card_no);
        String response = postSecond("getSickFamilyDoctorSpecialistControl","查询家签慢病患者定标情况接口",params,header,false);
        return response;
    }
}

+ 2 - 2
patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/repository/security/AccessTokenDao.java

@ -12,7 +12,7 @@ import com.yihu.wlyy.entity.security.AccessToken;
public interface AccessTokenDao extends PagingAndSortingRepository<AccessToken, Long> {
	
	@Query("select p from AccessToken p order by p.add_timestamp desc")
	Iterable<AccessToken> findAccessToken();
	@Query("select p from AccessToken p where p.acc_id = ?1 order by p.add_timestamp desc")
	Iterable<AccessToken> findAccessToken(String accId);
	
}

+ 2 - 2
patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/repository/security/JsapiTicketDao.java

@ -11,7 +11,7 @@ import com.yihu.wlyy.entity.security.JsApiTicket;
public interface JsapiTicketDao extends PagingAndSortingRepository<JsApiTicket, Long> {
	
	@Query("select p from JsApiTicket p order by p.add_timestamp desc")
	Iterable<JsApiTicket> findJsapiTicket();
	@Query("select p from JsApiTicket p where p.acc_id = ?1 order by p.add_timestamp desc")
	Iterable<JsApiTicket> findJsapiTicket(String accId);
	
}

+ 3 - 0
patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/service/app/family/FamilyMemberService.java

@ -67,6 +67,8 @@ public class FamilyMemberService extends BaseService {
    private String appId;
    @Value("${wechat.appSecret}")
    private String appSecret;
    @Value("${wechat.accId}")
    private String accId;
    @PostConstruct
    public void init() {
@ -907,6 +909,7 @@ public class FamilyMemberService extends BaseService {
            AccessToken newaccessToken = new AccessToken();
            newaccessToken.setAccess_token(token);
            newaccessToken.setExpires_in(Long.parseLong(expires_in));
            newaccessToken.setAcc_id(accId);
            accessTokenService.addAccessToken(newaccessToken);
            return token;
        } else {

+ 1 - 1
patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/service/app/sign/SignWebService.java

@ -2574,7 +2574,7 @@ public class SignWebService extends BaseService {
    }
    public List<String> findOpenidsByTown(String town) {
        String sql = "select w.openid from wlyy_sign_family w ,dm_hospital d where w.hospital=d.`code` and d.town='" + town + "' and w.openid is not null and w.openid !=''";
        String sql = "select  w.openid from wlyy_sign_family w ,dm_hospital d where w.hospital=d.`code` and d.town='" + town + "' and w.openid is not null and w.openid !=''";
        return jdbcTemplate.queryForList(sql, String.class);
    }

+ 8 - 2
patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/service/common/account/AccessTokenService.java

@ -6,6 +6,7 @@
package com.yihu.wlyy.service.common.account;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springside.modules.utils.Clock;
@ -27,6 +28,9 @@ public class AccessTokenService extends BaseService {
	private AccessTokenDao accessTokenDao;
	private JsapiTicketDao jsapiTicketDao;
	@Value("${wechat.accId}")
	private String accId;
	
	@Autowired
	public void setJsapiTicketDao(JsapiTicketDao jsapiTicketDao) {
@ -45,11 +49,11 @@ public class AccessTokenService extends BaseService {
	}
	
	public Iterable<AccessToken> findAccessToken() {
		return accessTokenDao.findAccessToken();
		return accessTokenDao.findAccessToken(accId);
	}
	
	public Iterable<JsApiTicket> findJsapiTicket() {
		return jsapiTicketDao.findJsapiTicket();
		return jsapiTicketDao.findJsapiTicket(accId);
	}
	
	/**
@ -59,6 +63,7 @@ public class AccessTokenService extends BaseService {
	public void addAccessToken(AccessToken accessToken) {
		accessToken.setAdd_timestamp(System.currentTimeMillis());
		accessToken.setCzrq(clock.getCurrentDate());
		accessToken.setAcc_id(accId);
		accessTokenDao.save(accessToken);
	}
	
@ -73,6 +78,7 @@ public class AccessTokenService extends BaseService {
	public void addJsapiTicket(JsApiTicket jsApiTicket) {
		jsApiTicket.setAdd_timestamp(System.currentTimeMillis());
		jsApiTicket.setCzrq(clock.getCurrentDate());
		jsApiTicket.setAcc_id(accId);
		jsapiTicketDao.save(jsApiTicket);
	}
	

+ 4 - 0
patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/web/WeixinBaseController.java

@ -42,6 +42,8 @@ public class WeixinBaseController extends BaseController {
	private String appId;
	@Value("${wechat.appSecret}")
	private String appSecret;
	@Value("${wechat.accId}")
	private String accId;
	@Value("${images.path}")
	private String imagesPath;
@ -147,6 +149,7 @@ public class WeixinBaseController extends BaseController {
				AccessToken newaccessToken = new AccessToken();
				newaccessToken.setAccess_token(token);
				newaccessToken.setExpires_in(Long.parseLong(expires_in));
				newaccessToken.setAcc_id(accId);
				accessTokenService.addAccessToken(newaccessToken);
				return token;
			} else {
@ -188,6 +191,7 @@ public class WeixinBaseController extends BaseController {
					JsApiTicket newJsApiTicket = new JsApiTicket();
					newJsApiTicket.setJsapi_ticket(ticket);
					newJsApiTicket.setExpires_in(Long.parseLong(expires_in));
					newJsApiTicket.setAcc_id(accId);
					accessTokenService.addJsapiTicket(newJsApiTicket);
					return ticket;
				} else {

+ 69 - 0
patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/web/doctor/template/DoctorFeldsherTemplateController.java

@ -0,0 +1,69 @@
package com.yihu.wlyy.web.doctor.template;
import com.yihu.wlyy.aop.ObserverRequired;
import com.yihu.wlyy.entity.template.DoctorGuidanceTemp;
import com.yihu.wlyy.repository.template.DoctorGuidanceTempDao;
import com.yihu.wlyy.service.template.DoctorFeldsherTemplateService;
import com.yihu.wlyy.service.template.DoctorGuidanceTempService;
import com.yihu.wlyy.web.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
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.RestController;
import java.util.List;
import java.util.Map;
/**
 * 医生健康指导模板
 * <p>
 * Created by Reece on 2017/9/14.
 */
@RestController
@RequestMapping(value = "/doctor/feldsher")
@Api(description = "医生健康指导模板")
public class DoctorFeldsherTemplateController extends BaseController {
    @Autowired
    private DoctorFeldsherTemplateService feldsherTemplateService;
    @Autowired
    DoctorGuidanceTempDao guidanceTempDao;
    /**
     * @param doctorCode   医生code
     * @param sessionId    会话Id
     * @param sessionType  会话类型
     * @param businessType 消息类型
     * @param from         发送者
     * @param content      消息内容
     * @return
     */
    @RequestMapping(value = "/sendDoctorTemplate", method = RequestMethod.GET)
    @ApiOperation(value = "医生助手给医生发送模板消息")
    public String sendDoctorTemplate(@RequestParam @ApiParam(value = "医生code") String doctorCode,
                                     @RequestParam @ApiParam(value = "会话Id", required = false) String sessionId,
                                     @RequestParam @ApiParam(value = "会话类型", required = false) String sessionType,
                                     @RequestParam @ApiParam(value = "消息类型") String businessType,
                                     @RequestParam @ApiParam(value = "发送者", required = false) String from,
                                     @RequestParam @ApiParam(value = "消息内容") String content) {
        try {
            Boolean flag = feldsherTemplateService.sendDoctorTemplate(doctorCode, sessionId, sessionType, businessType, from, content);
            if (flag){
                return write(200, "发送成功!");
            }else {
                return write( -1, "发送失败!");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return invalidUserException(e, -1, "发送失败!");
        }
    }
}

+ 3 - 0
patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/wechat/util/WeiXinAccessTokenUtils.java

@ -23,6 +23,8 @@ public class WeiXinAccessTokenUtils {
    private String appId;
    @Value("${wechat.appSecret}")
    private String appSecret;
    @Value("${wechat.accId}")
    private String accId;
    /**
     * 获取微信AccessToken
     *
@ -51,6 +53,7 @@ public class WeiXinAccessTokenUtils {
                AccessToken newaccessToken = new AccessToken();
                newaccessToken.setAccess_token(token);
                newaccessToken.setExpires_in(Long.parseLong(expires_in));
                newaccessToken.setAcc_id(accId);
                accessTokenService.addAccessToken(newaccessToken);
                return token;
            } else {

+ 1 - 1
patient-co/patient-co-doctor-assistant/src/main/resources/wechat/weixin_menu_feldsher.txt

@ -3,7 +3,7 @@
        {
            "name": "我的资料",
            "type": "view",
		    "url":"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx088a4d8e8208e6ce&redirect_uri=http%3a%2f%2fwww.xmtyw.cn%2fwlyy%2fwx_doctor%2fhtml%2fhome%2fhtml%2fjumpApp.html&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect"
		    "url":"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx088a4d8e8208e6ce&redirect_uri=http%3a%2f%2fwww.xmtyw.cn%2fwlyy%2fwx_doctor%2fhtml%2fhome%2fhtml%2fmy-info.html&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect"
        }
    ]
}

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

@ -167,15 +167,15 @@ spring:
  datasource:
    primaryReadWrite:
      url: jdbc:mysql://10.59.22.7:3306/wlyy?useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=true
      url: jdbc:mysql://10.95.22.7:3306/wlyy?useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=true
      username: wlyy
      password: jkzlehr@123
    primaryRead:
      url: jdbc:mysql://10.59.22.7:3306/wlyy?useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=true
      url: jdbc:mysql://10.95.22.7:3306/wlyy?useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=true
      username: wlyy
      password: jkzlehr@123
    im: #im库:
      url: jdbc:mysql://10.59.22.7:3306/im?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      url: jdbc:mysql://10.95.22.7:3306/im?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: im
      password: im!)123

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

@ -474,7 +474,7 @@
                    <target>1.8</target>
                    <compilerArguments>
                        <verbose/>
                        <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
                        <bootclasspath>${java.home}/lib/rt.jar:${java.home}/lib/jce.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
                <version>3.1</version>

+ 3 - 1
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/event/ApplicationEvent.java

@ -2,6 +2,7 @@ package com.yihu.wlyy.event;
import com.yihu.wlyy.job.*;
import com.yihu.wlyy.job.consult.EvaluateScoreJob;
import com.yihu.wlyy.job.consult.FinishConsultJob;
import com.yihu.wlyy.redis.RedisThread;
import com.yihu.wlyy.util.SystemConf;
import org.slf4j.Logger;
@ -101,7 +102,7 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
            //居民24小时未回复的咨询自动关闭 每小时59分开始执行一次
            if (!quartzHelper.isExistJob("finish_consult_job")) {
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("finish_consult_job");
                quartzHelper.addJob(PrescriptionExecuteSickSettleJob.class, trigger, "finish_consult_job", new HashMap<String, Object>());
                quartzHelper.addJob(FinishConsultJob.class, trigger, "finish_consult_job", new HashMap<String, Object>());
                logger.info("finish_consult_job success");
            } else {
                logger.info("finish_consult_job exist");
@ -126,6 +127,7 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
            }
            // 启动redis 消息队列线程
            logger.info("redis message start");
            new Thread(redisThread).start();

+ 3 - 2
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/job/PatientDiseaseConditionSynJob.java

@ -26,8 +26,9 @@ public class PatientDiseaseConditionSynJob implements Job {
        logger.info("START=====开始更新慢病患者定标情况的JOB");
        try {
            String startdate = DateUtil.getStringDateShort() + " 00:00:00";
            String enddate = DateUtil.getStringDateShort() + " 23:59:59";
            //获取前一天的时间范围
            String startdate = DateUtil.getNextDay(DateUtil.getStringDateShort(),-1) + " 00:00:00";
            String enddate = DateUtil.getNextDay(DateUtil.getStringDateShort(),-1) + " 23:59:59";
            //根据起止时间查询家签慢病患者定标情况,并同步到本地数据库
            jwPrescriptionService.getPatientDiseaseContentMapByTime(startdate,enddate);

+ 2 - 2
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/security/AccessTokenDao.java

@ -12,7 +12,7 @@ import com.yihu.wlyy.entity.security.AccessToken;
public interface AccessTokenDao extends PagingAndSortingRepository<AccessToken, Long> {
	
	@Query("select p from AccessToken p order by p.add_timestamp desc")
	Iterable<AccessToken> findAccessToken();
	@Query("select p from AccessToken p where p.acc_id = ?1 order by p.add_timestamp desc")
	Iterable<AccessToken> findAccessToken(String addId);
	
}

+ 2 - 2
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/security/JsapiTicketDao.java

@ -11,7 +11,7 @@ import com.yihu.wlyy.entity.security.JsApiTicket;
public interface JsapiTicketDao extends PagingAndSortingRepository<JsApiTicket, Long> {
	
	@Query("select p from JsApiTicket p order by p.add_timestamp desc")
	Iterable<JsApiTicket> findJsapiTicket();
	@Query("select p from JsApiTicket p where p.acc_id = ?1 order by p.add_timestamp desc")
	Iterable<JsApiTicket> findJsapiTicket(String accId);
	
}

+ 3 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/app/family/FamilyMemberService.java

@ -67,6 +67,8 @@ public class FamilyMemberService extends BaseService {
    private String appId;
    @Value("${wechat.appSecret}")
    private String appSecret;
    @Value("${wechat.accId}")
    private String accId;
    @PostConstruct
    public void init() {
@ -907,6 +909,7 @@ public class FamilyMemberService extends BaseService {
            AccessToken newaccessToken = new AccessToken();
            newaccessToken.setAccess_token(token);
            newaccessToken.setExpires_in(Long.parseLong(expires_in));
            newaccessToken.setAcc_id(accId);
            accessTokenService.addAccessToken(newaccessToken);
            return token;
        } else {

+ 8 - 2
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/common/account/AccessTokenService.java

@ -6,6 +6,7 @@
package com.yihu.wlyy.service.common.account;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springside.modules.utils.Clock;
@ -27,6 +28,9 @@ public class AccessTokenService extends BaseService {
	private AccessTokenDao accessTokenDao;
	private JsapiTicketDao jsapiTicketDao;
	@Value("${wechat.accId}")
	private String accId;
	
	@Autowired
	public void setJsapiTicketDao(JsapiTicketDao jsapiTicketDao) {
@ -45,11 +49,11 @@ public class AccessTokenService extends BaseService {
	}
	
	public Iterable<AccessToken> findAccessToken() {
		return accessTokenDao.findAccessToken();
		return accessTokenDao.findAccessToken(accId);
	}
	
	public Iterable<JsApiTicket> findJsapiTicket() {
		return jsapiTicketDao.findJsapiTicket();
		return jsapiTicketDao.findJsapiTicket(accId);
	}
	
	/**
@ -59,6 +63,7 @@ public class AccessTokenService extends BaseService {
	public void addAccessToken(AccessToken accessToken) {
		accessToken.setAdd_timestamp(System.currentTimeMillis());
		accessToken.setCzrq(clock.getCurrentDate());
		accessToken.setAcc_id(accId);
		accessTokenDao.save(accessToken);
	}
	
@ -73,6 +78,7 @@ public class AccessTokenService extends BaseService {
	public void addJsapiTicket(JsApiTicket jsApiTicket) {
		jsApiTicket.setAdd_timestamp(System.currentTimeMillis());
		jsApiTicket.setCzrq(clock.getCurrentDate());
		jsApiTicket.setAcc_id(accId);
		jsapiTicketDao.save(jsApiTicket);
	}
	

+ 4 - 8
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/common/account/PatientService.java

@ -12,7 +12,6 @@ import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.ServerLabelTree;
import com.yihu.wlyy.entity.patient.SignFamily;
import com.yihu.wlyy.entity.patient.SignFamilyRenew;
import com.yihu.wlyy.entity.patient.prescription.PrescriptionLog;
import com.yihu.wlyy.entity.security.Token;
import com.yihu.wlyy.repository.doctor.DoctorAdminTeamDao;
import com.yihu.wlyy.repository.doctor.DoctorDao;
@ -20,17 +19,15 @@ import com.yihu.wlyy.repository.doctor.DoctorPatientDao;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.repository.patient.SignFamilyDao;
import com.yihu.wlyy.repository.security.TokenDao;
import com.yihu.wlyy.service.third.jw.JwPrescriptionService;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.EncodesUtil;
import com.yihu.wlyy.util.IdcardInfoExtractor;
import com.yihu.wlyy.util.SystemData;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
@ -44,8 +41,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import org.springside.modules.utils.Clock;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@ -154,7 +149,7 @@ public class PatientService extends TokenService {
        }
        //如果之前患者的openId为空并且openID有值更新时间 如果opentime是空也设置时间
        if ((!org.springframework.util.StringUtils.isEmpty(openid) && org.springframework.util.StringUtils.isEmpty(patient.getOpenid())) ||
            patient.getOpenidTime() == null) {
                patient.getOpenidTime() == null) {
            patient.setOpenidTime(new Date());
        }
        //System.out.println("========openid=======");
@ -996,6 +991,7 @@ public class PatientService extends TokenService {
        patientDao.save(patient);
    }
    /**
     * 根据患者身份证号更新患者颜色定标情况
     * @param idcard_diseasecontion_map

+ 1 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/third/jw/JwPrescriptionService.java

@ -41,6 +41,7 @@ public class JwPrescriptionService {
    private PrescriptionDao prescriptionDao;
    @Autowired
    private PatientService patientService;
    /**
     * 获取字典列表
     * @param dictName 字典名称

+ 4 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/web/WeixinBaseController.java

@ -42,6 +42,8 @@ public class WeixinBaseController extends BaseController {
	private String appId;
	@Value("${wechat.appSecret}")
	private String appSecret;
	@Value("${wechat.accId}")
	private String accId;
	@Value("${images.path}")
	private String imagesPath;
@ -147,6 +149,7 @@ public class WeixinBaseController extends BaseController {
				AccessToken newaccessToken = new AccessToken();
				newaccessToken.setAccess_token(token);
				newaccessToken.setExpires_in(Long.parseLong(expires_in));
				newaccessToken.setAcc_id(accId);
				accessTokenService.addAccessToken(newaccessToken);
				return token;
			} else {
@ -188,6 +191,7 @@ public class WeixinBaseController extends BaseController {
					JsApiTicket newJsApiTicket = new JsApiTicket();
					newJsApiTicket.setJsapi_ticket(ticket);
					newJsApiTicket.setExpires_in(Long.parseLong(expires_in));
					newJsApiTicket.setAcc_id(accId);
					accessTokenService.addJsapiTicket(newJsApiTicket);
					return ticket;
				} else {

+ 3 - 4
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/web/quota/JobController.java

@ -14,7 +14,6 @@ import com.yihu.wlyy.web.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.MediaType;
@ -452,7 +451,6 @@ public class JobController extends BaseController {
        }
    }
    //******************************长处方 end********************************
    /**
     * 居民监测方案提醒通知
@ -472,13 +470,14 @@ public class JobController extends BaseController {
        }
    }
    /**
     *立即执行当天的慢病患者定标情况同步
     *立即执行前一天的慢病患者定标情况同步
     *@author huangwenjie
     *@date 2017/9/17 14:16
     */
    @RequestMapping(value = "/executePatientDiseaseConditionSynJob", method = RequestMethod.POST)
    @ApiOperation("立即执行当天的慢病患者定标情况同步")
    @ApiOperation("立即执行前一天的慢病患者定标情况同步")
    public String executePatientDiseaseConditionSynJob() {
        try {
            quartzHelper.startNow(PatientDiseaseConditionSynJob.class, "PATIENT-DISEASE-CONDITION-SYN", null);

+ 3 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/wechat/util/WeiXinAccessTokenUtils.java

@ -23,6 +23,8 @@ public class WeiXinAccessTokenUtils {
    private String appId;
    @Value("${wechat.appSecret}")
    private String appSecret;
    @Value("${wechat.accId}")
    private String accId;
    /**
     * 获取微信AccessToken
     *
@ -51,6 +53,7 @@ public class WeiXinAccessTokenUtils {
                AccessToken newaccessToken = new AccessToken();
                newaccessToken.setAccess_token(token);
                newaccessToken.setExpires_in(Long.parseLong(expires_in));
                newaccessToken.setAcc_id(accId);
                accessTokenService.addAccessToken(newaccessToken);
                return token;
            } else {

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

@ -98,7 +98,7 @@ finish_consult_job=* 59 * * * ?
#提醒有监测方案的居民上传数据,每29分钟执行一次
doctor_feldsher_template_job=0 0/29 * * * ?
#病患者定标情况同步JOB (每天2点一次)
# 病患者定标情况同步JOB (每天2点一次)
patient_disease_contion_syn_job=0 0 2 * * ?

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

@ -467,7 +467,7 @@
                    <target>1.8</target>
                    <compilerArguments>
                        <verbose/>
                        <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
                        <bootclasspath>${java.home}/lib/rt.jar:${java.home}/lib/jce.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
                <version>3.1</version>

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/prescription/PrescriptionReviewedDao.java

@ -12,7 +12,7 @@ import java.util.List;
 */
public interface PrescriptionReviewedDao extends PagingAndSortingRepository<PrescriptionReviewed, Long>, JpaSpecificationExecutor<PrescriptionReviewed> {
    @Query("select p from PrescriptionReviewed p where p.prescriptionCode=?1")
    @Query(value = "select p from PrescriptionReviewed p where p.prescriptionCode=?1 order by p.reviewedTime desc")
    PrescriptionReviewed findByPrescriptionCode(String prescriptionCode);
    @Query("select p from PrescriptionReviewed p where p.prescriptionCode=?1 and p.status=?2")

+ 2 - 2
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/security/AccessTokenDao.java

@ -12,7 +12,7 @@ import com.yihu.wlyy.entity.security.AccessToken;
public interface AccessTokenDao extends PagingAndSortingRepository<AccessToken, Long> {
	
	@Query("select p from AccessToken p order by p.add_timestamp desc")
	Iterable<AccessToken> findAccessToken();
	@Query("select p from AccessToken p where p.acc_id = ?1 order by p.add_timestamp desc")
	Iterable<AccessToken> findAccessToken(String accId);
	
}

+ 2 - 2
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/security/JsapiTicketDao.java

@ -11,7 +11,7 @@ import com.yihu.wlyy.entity.security.JsApiTicket;
public interface JsapiTicketDao extends PagingAndSortingRepository<JsApiTicket, Long> {
	
	@Query("select p from JsApiTicket p order by p.add_timestamp desc")
	Iterable<JsApiTicket> findJsapiTicket();
	@Query("select p from JsApiTicket p where p.acc_id = ?1 order by p.add_timestamp desc")
	Iterable<JsApiTicket> findJsapiTicket(String accId);
	
}

+ 3 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/family/FamilyMemberService.java

@ -67,6 +67,8 @@ public class FamilyMemberService extends BaseService {
    private String appId;
    @Value("${wechat.appSecret}")
    private String appSecret;
    @Value("${wechat.accId}")
    private String accId;
    @PostConstruct
    public void init() {
@ -907,6 +909,7 @@ public class FamilyMemberService extends BaseService {
            AccessToken newaccessToken = new AccessToken();
            newaccessToken.setAccess_token(token);
            newaccessToken.setExpires_in(Long.parseLong(expires_in));
            newaccessToken.setAcc_id(accId);
            accessTokenService.addAccessToken(newaccessToken);
            return token;
        } else {

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/PatientHealthGuidanceService.java

@ -248,7 +248,7 @@ public class PatientHealthGuidanceService extends BaseService {
	 */
	public JSONArray findByPatientAndGuidanceAndTeam(String patient,long teamCode,int page,int pageSize){
		Sort sort = new Sort(Sort.Direction.DESC,"createTime");
		PageRequest pageRequest = new PageRequest(0, pageSize, sort);
		PageRequest pageRequest = new PageRequest(page, pageSize, sort);
		Page<Object> result = patientHealthGuidanceDao.findByPatientAndTeamCode(patient,teamCode,pageRequest);
		JSONArray array = new JSONArray();
		if (result != null) {

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

@ -118,7 +118,7 @@ public class PatientHealthIndexService extends BaseService {
            }
        }
        else{
           throw new Exception("Result not exit!");
            throw new Exception("Result not exit!");
        }
    }
@ -1352,7 +1352,6 @@ public class PatientHealthIndexService extends BaseService {
    public Iterable<DoctorHealthStandard> findDoctorStandardByDoctor(String code) {
        return doctorHealthStandardDao.findByDoctor(code);
    }
    /**
     * 批量保存患者预警方案
     * @param list

+ 12 - 5
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/prescription/PrescriptionInfoService.java

@ -1295,6 +1295,13 @@ public class PrescriptionInfoService extends BaseService {
                " LEFT(pr.create_time,19) AS createTime, " +
                " pr.doctor, " +
                " pr.dispensary_type AS dispensaryType," +
                " e.address, " +
                " e.province_name AS provinceName, " +
                " e.city_name AS cityName," +
                " e.town_name AS townName," +
                " e.street_name AS streetName," +
                " e.hospital_name AS hospitalName," +
                " e.hospital_address AS hospitalAddress," +
                " e.expressage_code AS expressageCode, " +
                " e.expressage_name AS expressageName, " +
                " e.expressage_hospital_address AS expressageHospitalAddress, " +
@ -1360,7 +1367,7 @@ public class PrescriptionInfoService extends BaseService {
            param.add(endDate + " 23:59:59");
        }
        if (StringUtils.isNotBlank(hospital)) {
            pre_sql.append(" AND e.hospital_code = ? ");
            pre_sql.append(" AND e.patient_hospital_code = ? ");
            param.add(hospital);
        }
        if (StringUtils.isNotBlank(state)) {
@ -1402,7 +1409,7 @@ public class PrescriptionInfoService extends BaseService {
            param.add(endDate + " 23:59:59");
        }
        if (StringUtils.isNotBlank(hospital)) {
            pre_sql.append(" AND e.hospital_code = ? ");
            pre_sql.append(" AND e.patient_hospital_code = ? ");
            param.add(hospital);
        }
        if (StringUtils.isNotBlank(state)) {
@ -1446,13 +1453,13 @@ public class PrescriptionInfoService extends BaseService {
    }
    public JSONArray getHospitalListTitle(String teamCode) {
        StringBuffer pre_sql = new StringBuffer("SELECT e.hospital_code AS hospitalCode ,e.hospital_name AS hospitalName FROM " +
        StringBuffer pre_sql = new StringBuffer("SELECT e.patient_hospital_code AS hospitalCode ,e.patient_hospital_name AS hospitalName FROM " +
                "  wlyy_prescription pr " +
                "  JOIN wlyy_prescription_expressage e ON pr.code = e.prescription_code " +
                "  WHERE pr.admin_team_id = ? " +
                "  AND (e.expressage_code IS NULL OR e.expressage_code ='') " +
                "  AND pr.dispensary_type =3 " +
                "  GROUP BY e.hospital_code ");
                "  GROUP BY e.patient_hospital_code ");
        List<Map<String, Object>> list = jdbcTemplate.queryForList(pre_sql.toString(), new Object[]{teamCode});
        return new JSONArray(list);
    }
@ -1708,7 +1715,7 @@ public class PrescriptionInfoService extends BaseService {
                    sql +=" AND d.`name` LIKE '%"+name+"%' ";
                }
                if(page!=null&&size!=null){
                    sql += " LIMIT "+(page-1)+","+size;
                    sql += " LIMIT "+(page-1)*size+","+size;
                }
        String totalSql = "SELECT " +
                " count(1) AS total" +

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

@ -2582,7 +2582,8 @@ public class SignWebService extends BaseService {
    }
    public List<String> findOpenidsByTown(String town) {
        String sql = "select w.openid from wlyy_sign_family w ,dm_hospital d where w.hospital=d.`code` and d.town='" + town + "' and w.openid is not null and w.openid !=''";
        String sql = "select distinct w.openid from wlyy_sign_family w ,dm_hospital d where w.hospital=d.`code` and d.town='" + town + "' and w.openid is not null and w.openid !='' and w.`status`>0 " +
                " and w.expenses_status ='1' ";
        return jdbcTemplate.queryForList(sql, String.class);
    }

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/team/AdminTeamService.java

@ -256,7 +256,7 @@ public class AdminTeamService extends BaseService {
                com.alibaba.fastjson.JSONObject json = com.alibaba.fastjson.JSONObject.parseObject(response);
                if(json.getInteger("status")==200){
                    com.alibaba.fastjson.JSONObject data = json.getJSONObject("data");
                    if("1".equals(data.getString("CODE"))){
                    if("1".equals(data.getString("CODE"))&&data.getJSONArray("DATA").size()>0){
                        sign_limit_number = data.getJSONArray("DATA").getJSONObject(0).getInteger("SIGN_LIMIT_NUMBER");//签约上线
                    }
                }

+ 8 - 2
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/common/account/AccessTokenService.java

@ -6,6 +6,7 @@
package com.yihu.wlyy.service.common.account;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springside.modules.utils.Clock;
@ -27,6 +28,9 @@ public class AccessTokenService extends BaseService {
	private AccessTokenDao accessTokenDao;
	private JsapiTicketDao jsapiTicketDao;
	@Value("${wechat.accId}")
	private String accId;
	
	@Autowired
	public void setJsapiTicketDao(JsapiTicketDao jsapiTicketDao) {
@ -45,11 +49,11 @@ public class AccessTokenService extends BaseService {
	}
	
	public Iterable<AccessToken> findAccessToken() {
		return accessTokenDao.findAccessToken();
		return accessTokenDao.findAccessToken(accId);
	}
	
	public Iterable<JsApiTicket> findJsapiTicket() {
		return jsapiTicketDao.findJsapiTicket();
		return jsapiTicketDao.findJsapiTicket(accId);
	}
	
	/**
@ -59,6 +63,7 @@ public class AccessTokenService extends BaseService {
	public void addAccessToken(AccessToken accessToken) {
		accessToken.setAdd_timestamp(System.currentTimeMillis());
		accessToken.setCzrq(clock.getCurrentDate());
		accessToken.setAcc_id(accId);
		accessTokenDao.save(accessToken);
	}
	
@ -73,6 +78,7 @@ public class AccessTokenService extends BaseService {
	public void addJsapiTicket(JsApiTicket jsApiTicket) {
		jsApiTicket.setAdd_timestamp(System.currentTimeMillis());
		jsApiTicket.setCzrq(clock.getCurrentDate());
		jsApiTicket.setAcc_id(accId);
		jsapiTicketDao.save(jsApiTicket);
	}
	

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/third/jw/JwPrescriptionService.java

@ -140,7 +140,7 @@ public class JwPrescriptionService {
                totalCount = byRefParaData.getJSONObject(0).getInteger("totalCount");
                errorMsg = byRefParaData.getJSONObject(0).getString("errorMsg");
                if(returnData.size()>0){
                    for(int i=0;i<totalCount;i++){
                    for(int i=totalCount-1;i>=0;i--){
                        JSONObject recipe = returnData.getJSONArray(0).getJSONObject(i);//获取最后一条处方
                        JSONObject pre = new JSONObject();
                        pre.put("code",recipe.getString("RECIPE_NO"));//医嘱号

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/CommonUtil.java

@ -368,7 +368,7 @@ public class CommonUtil {
        heightStr = df2.format(heightCM/100d);
        double height = Double.parseDouble(heightStr);
        double bmi = weight / height * 2;
        double bmi = weight / (height * height);
        return bmi;
    }

+ 20 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/ImUtill.java

@ -325,6 +325,26 @@ public class ImUtill {
        return obj;
    }
    /**
     * 判断会话是否存在
     */
    public Boolean sessionIsExist(String sessionId) {
        Boolean re = false;
        String url = im_host + "api/v2/sessions/isExist?session_id="+sessionId;
        JSONObject params = new JSONObject();
        String ret = HttpClientUtil.get(url, "UTF-8");
        JSONObject obj = null;
        try {
            obj = new JSONObject(ret);
            if(obj.getInt("status")==200&&sessionId.equals(obj.getString("sessionId"))){
                re = true;
            }
        } catch (Exception e) {
            return null;
        }
        return re;
    }
    /**
     * 创建会话(system)
     */

+ 9 - 11
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/SendPatientUtil.java

@ -1,15 +1,9 @@
package com.yihu.wlyy.util;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class SendPatientUtil extends  Thread {
	private String from;
	private String fromName;
@ -51,12 +45,16 @@ public class SendPatientUtil extends  Thread {
		if(!"4".equals(contentType)){
			contentType = "0";
		}
		JSONObject sessionJson  = imUtill.createSession(participants,ImUtill.SESSION_TYPE_MUC,title,to+"_"+teamCode+"_"+type);
		if(sessionJson.getInt("status")==-1){
			throw  new RuntimeException(sessionJson.getString("message"));
		String sessionId = to+"_"+teamCode+"_"+type;
		Boolean flag = imUtill.sessionIsExist(sessionId);
		if(!flag){
			JSONObject sessionJson  = imUtill.createSession(participants,ImUtill.SESSION_TYPE_MUC,title,sessionId);
			if(sessionJson.getInt("status")==-1){
				throw  new RuntimeException(sessionJson.getString("message"));
			}
		}
		JSONObject session = sessionJson.getJSONObject("data");
		return imUtill.sendImMsg(from,fromName,session.getString("id"),contentType,content,"1");
		return imUtill.sendImMsg(from,fromName,sessionId,contentType,content,"1");
	}
	public void run(){

+ 4 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/WeixinBaseController.java

@ -42,6 +42,8 @@ public class WeixinBaseController extends BaseController {
	private String appId;
	@Value("${wechat.appSecret}")
	private String appSecret;
	@Value("${wechat.accId}")
	private String accId;
	@Value("${images.path}")
	private String imagesPath;
@ -147,6 +149,7 @@ public class WeixinBaseController extends BaseController {
				AccessToken newaccessToken = new AccessToken();
				newaccessToken.setAccess_token(token);
				newaccessToken.setExpires_in(Long.parseLong(expires_in));
				newaccessToken.setAcc_id(accId);
				accessTokenService.addAccessToken(newaccessToken);
				return token;
			} else {
@ -188,6 +191,7 @@ public class WeixinBaseController extends BaseController {
					JsApiTicket newJsApiTicket = new JsApiTicket();
					newJsApiTicket.setJsapi_ticket(ticket);
					newJsApiTicket.setExpires_in(Long.parseLong(expires_in));
					newJsApiTicket.setAcc_id(accId);
					accessTokenService.addJsapiTicket(newJsApiTicket);
					return ticket;
				} else {

+ 2 - 17
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/health/DoctorHealthController.java

@ -33,6 +33,8 @@ public class DoctorHealthController extends BaseController {
	@Autowired
	private PatientHealthIndexService healthIndexService;
	@Autowired
	private PatientService patientService;
	@Autowired
	private PatientService patientService;
@ -244,17 +246,6 @@ public class DoctorHealthController extends BaseController {
							standard.setCzrq(new Date());
							list.add(standard);
						}
						DoctorHealthStandard doctorHealthStandard = new DoctorHealthStandard();
						doctorHealthStandard.setDoctor(getUID());
						doctorHealthStandard.setMaxValue1(obj.has("max_value1") ? NumberUtils.toDouble(obj.getString("max_value1"), 0) : 0);
						doctorHealthStandard.setMaxValue2(obj.has("max_value2") ? NumberUtils.toDouble(obj.getString("max_value2"), 0) : 0);
						doctorHealthStandard.setMinValue1(obj.has("min_value1") ? NumberUtils.toDouble(obj.getString("min_value1"), 0) : 0);
						doctorHealthStandard.setMinValue2(obj.has("min_value2") ? NumberUtils.toDouble(obj.getString("min_value2"), 0) : 0);
						doctorHealthStandard.setType(obj.getInt("type"));
						doctorHealthStandard.setCzrq(new Date());
						doclist.add(doctorHealthStandard);
					}
					if (list.size() == 0) {
						return error(-1, "保存失败!");
@ -264,12 +255,6 @@ public class DoctorHealthController extends BaseController {
					if (iterable == null || iterable.iterator() == null || !iterable.iterator().hasNext()) {
						return error(-1, "保存失败!");
					}
					Iterable<DoctorHealthStandard> dociterable = healthIndexService.saveDocStandard(doclist, getUID());
					if (dociterable == null || dociterable.iterator() == null || !dociterable.iterator().hasNext()) {
						return error(-1, "保存失败!");
					}
				}
			return write(200, "保存成功");

+ 8 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/wx/WechatTagController.java

@ -37,6 +37,7 @@ public class WechatTagController extends BaseController {
            String string = weiXinTagUtil.createTag(tagName);
            return write(200, "创建成功", "date", string);
        } catch (Exception e) {
            error(e);
            return error(-1, "失败");
        }
    }
@ -49,6 +50,7 @@ public class WechatTagController extends BaseController {
            String string = weiXinTagUtil.deleteTag(tageId);
            return write(200, "删除成功", "date", string);
        } catch (Exception e) {
            error(e);
            return error(-1, "失败");
        }
    }
@ -60,6 +62,7 @@ public class WechatTagController extends BaseController {
            String string = weiXinTagUtil.queryTags();
            return write(200, "查询成功", "date", string);
        } catch (Exception e) {
            error(e);
            return error(-1, "失败");
        }
    }
@ -73,6 +76,7 @@ public class WechatTagController extends BaseController {
            String string = weiXinTagUtil.queryTagWithOpenid(openid);
            return write(200, "查询成功", "date", string);
        } catch (Exception e) {
            error(e);
            return error(-1, "失败");
        }
    }
@ -88,6 +92,7 @@ public class WechatTagController extends BaseController {
            String string = weiXinTagUtil.addTagWithOpenid(java.util.Arrays.asList(openis), tageId,null,null);
            return write(200, "查询成功", "date", string);
        } catch (Exception e) {
            error(e);
            return error(-1, "失败");
        }
    }
@ -103,6 +108,7 @@ public class WechatTagController extends BaseController {
            String string = weiXinTagUtil.deleteTagWithOpenid(java.util.Arrays.asList(openis), tageId);
            return write(200, "查询成功", "date", string);
        } catch (Exception e) {
            error(e);
            return error(-1, "失败");
        }
    }
@ -117,6 +123,7 @@ public class WechatTagController extends BaseController {
            String string = weiXinTagUtil.addTagWithOpenid(openids, tageId,null,null);
            return write(200, "查询成功", "date", string);
        } catch (Exception e) {
            error(e);
            return error(-1, "失败");
        }
    }
@ -130,6 +137,7 @@ public class WechatTagController extends BaseController {
            String string = weiXinTagUtil.deleteTagWithOpenid(openids, tageId);
            return write(200, "查询成功", "date", string);
        } catch (Exception e) {
            error(e);
            return error(-1, "失败");
        }
    }

+ 3 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/util/WeiXinAccessTokenUtils.java

@ -23,6 +23,8 @@ public class WeiXinAccessTokenUtils {
    private String appId;
    @Value("${wechat.appSecret}")
    private String appSecret;
    @Value("${wechat.accId}")
    private String accId;
    /**
     * 获取微信AccessToken
     *
@ -51,6 +53,7 @@ public class WeiXinAccessTokenUtils {
                AccessToken newaccessToken = new AccessToken();
                newaccessToken.setAccess_token(token);
                newaccessToken.setExpires_in(Long.parseLong(expires_in));
                newaccessToken.setAcc_id(accId);
                accessTokenService.addAccessToken(newaccessToken);
                return token;
            } else {

+ 40 - 10
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/util/WeiXinTagUtil.java

@ -21,6 +21,7 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -74,26 +75,55 @@ public class WeiXinTagUtil {
        try {
            net.sf.json.JSONObject params = new net.sf.json.JSONObject();
            params.put("openid_list", net.sf.json.JSONArray.fromObject(openIds));
            params.put("tagid", tagId);
            String result = httpUtil.sendPost(add_user_tag + weiXinAccessTokenUtils.getAccessToken(), params.toString());
            //为openID分组
            List<List<String>> list = getSplitList(openIds,40);
            net.sf.json.JSONObject resultJson = net.sf.json.JSONObject.fromObject(result);
            if(list!=null&&list.size()>0){
            if (resultJson.containsKey("errcode")) {
                Integer status = resultJson.getInt("errcode");
                if (status != 0) {
                    throw new Exception("创建失败," + result);
                for(List<String> ops : list){
                    params.put("openid_list", net.sf.json.JSONArray.fromObject(openIds));
                    params.put("tagid", tagId);
                    String result = httpUtil.sendPost(add_user_tag + weiXinAccessTokenUtils.getAccessToken(), params.toString());
                    net.sf.json.JSONObject resultJson = net.sf.json.JSONObject.fromObject(result);
                }
            }
            return result;
//            if (resultJson.containsKey("errcode")) {
//                Integer status = resultJson.getInt("errcode");
//                if (status != 0) {
//                    throw new Exception("创建失败," + result);
//                }
//            }
            return "1";
        } catch (Exception e) {
            logger.error(e.getMessage());
            return null;
        }
    }
    /**
     *
     * @param list 要拆分的集合
     * @param size 指定的大小
     * @return
     */
    public static List<List<String>> getSplitList(List<String> list , int size)
    {
        List<List<String>> returnList = new ArrayList<List<String>>();
        int listSize = list.size();
        int num = listSize%size==0?listSize/size:(listSize/size+1);
        int start = 0;
        int end = 0;
        for(int i=1;i<=num;i++)
        {
            start = (i-1)*size;
            end = i*size>listSize?listSize:i*size;
            System.out.println(start+":"+end);
            returnList.add(list.subList(start, end));
        }
        return returnList;
    }
    /**
     * 根据openID给用户打标签,
     *

+ 12 - 12
patient-co/patient-co-wlyy/src/main/resources/logback.xml

@ -11,9 +11,9 @@
    </appender>
    <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/tmp/logs/wlyy.log</file>
        <file>/Users/Mewtwo/ideaSpace/log/tmp/logs/wlyy.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/tmp/logs/wlyy.%d{yyyy-MM-dd}.log</fileNamePattern>
            <fileNamePattern>/Users/Mewtwo/ideaSpace/log/tmp/logs/wlyy.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <encoder>
@ -23,9 +23,9 @@
    </appender>
    <appender name="business_m" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/datadisk/wlyy_logs/business_m.log</file>
        <file>/Users/Mewtwo/ideaSpace/log/wlyy_logs/business_m.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/datadisk/wlyy_logs/rolling/business_m.%d{yyyy-MM-dd_HH-mm}.log</fileNamePattern>
            <fileNamePattern>/Users/Mewtwo/ideaSpace/log/wlyy_logs/rolling/business_m.%d{yyyy-MM-dd_HH-mm}.log</fileNamePattern>
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <encoder>
@ -34,9 +34,9 @@
        </encoder>
    </appender>
    <appender name="business_d" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/datadisk/wlyy_logs/business.log</file>
        <file>/Users/Mewtwo/ideaSpace/log/wlyy_logs/business.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/datadisk/wlyy_logs/dayLogs/business.%d{yyyy-MM-dd}.log</fileNamePattern>
            <fileNamePattern>/Users/Mewtwo/ideaSpace/log/wlyy_logs/dayLogs/business.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <encoder>
@ -45,9 +45,9 @@
        </encoder>
    </appender>
    <appender name="interface_call_m" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/datadisk/wlyy_logs/interface_call_m.log</file>
        <file>/Users/Mewtwo/ideaSpace/log/wlyy_logs/interface_call_m.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/datadisk/wlyy_logs/rolling/interface_call_m.%d{yyyy-MM-dd_HH-mm}.log</fileNamePattern>
            <fileNamePattern>/Users/Mewtwo/ideaSpace/log/wlyy_logs/rolling/interface_call_m.%d{yyyy-MM-dd_HH-mm}.log</fileNamePattern>
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <encoder>
@ -56,9 +56,9 @@
        </encoder>
    </appender>
    <appender name="interface_call_d" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/datadisk/wlyy_logs/interface_call.log</file>
        <file>/Users/Mewtwo/ideaSpace/log/wlyy_logs/interface_call.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/datadisk/wlyy_logs/dayLogs/interface_call.%d{yyyy-MM-dd}.log</fileNamePattern>
            <fileNamePattern>/Users/Mewtwo/ideaSpace/log/wlyy_logs/dayLogs/interface_call.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <encoder>
@ -90,10 +90,10 @@
    <!--处方支付日志 start-->
    <!-- 演示按时间滚动的策略 -->
    <appender name="dailyRollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>/tmp/logs/wlyy_prescription_pay.log</File>
        <File>/Users/Mewtwo/ideaSpace/log/tmp/logs/wlyy_prescription_pay.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <FileNamePattern>/tmp/logs/wlyy_prescription_pay.%d{yyyy-MM-dd}.log</FileNamePattern>
            <FileNamePattern>/Users/Mewtwo/ideaSpace/log/tmp/logs/wlyy_prescription_pay.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!-- 保留 15天数据,默认无限
            <maxHistory>15</maxHistory>-->
        </rollingPolicy>

+ 1 - 1
pom.xml

@ -608,7 +608,7 @@
                        <target>1.8</target>
                        <compilerArguments>
                            <verbose/>
                            <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
                            <bootclasspath>${java.home}/lib/rt.jar:${java.home}/lib/jce.jar</bootclasspath>
                        </compilerArguments>
                    </configuration>
                    <version>3.1</version>