Przeglądaj źródła

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

trick9191 7 lat temu
rodzic
commit
5036cc5220
39 zmienionych plików z 365 dodań i 108 usunięć
  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-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/PatientHealthIndexDao.java
  7. 9 7
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/http/HttpClientUtil.java
  8. 4 2
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/http/HttpHelper.java
  9. 17 10
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/common/util/ImUtill.java
  10. 20 12
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/service/DeviceService.java
  11. 10 20
      patient-co-service/wlyy_device/src/main/java/com/yihu/hos/device/task/PushMsgTask.java
  12. 4 4
      patient-co-service/wlyy_device/src/main/resources/application.yml
  13. 2 2
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/repository/security/AccessTokenDao.java
  14. 2 2
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/repository/security/JsapiTicketDao.java
  15. 3 0
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/service/app/family/FamilyMemberService.java
  16. 8 2
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/service/common/account/AccessTokenService.java
  17. 4 0
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/web/WeixinBaseController.java
  18. 69 0
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/web/doctor/template/DoctorFeldsherTemplateController.java
  19. 3 0
      patient-co/patient-co-doctor-assistant/src/main/java/com/yihu/wlyy/wechat/util/WeiXinAccessTokenUtils.java
  20. 1 1
      patient-co/patient-co-doctor-assistant/src/main/resources/wechat/weixin_menu_feldsher.txt
  21. 2 2
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/security/AccessTokenDao.java
  22. 2 2
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/repository/security/JsapiTicketDao.java
  23. 3 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/app/family/FamilyMemberService.java
  24. 8 2
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/service/common/account/AccessTokenService.java
  25. 4 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/web/WeixinBaseController.java
  26. 3 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/wechat/util/WeiXinAccessTokenUtils.java
  27. 2 2
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/security/AccessTokenDao.java
  28. 2 2
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/security/JsapiTicketDao.java
  29. 3 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/family/FamilyMemberService.java
  30. 13 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/health/PatientHealthIndexService.java
  31. 1 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/team/AdminTeamService.java
  32. 8 2
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/common/account/AccessTokenService.java
  33. 5 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/common/account/PatientService.java
  34. 1 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/third/jw/JwPrescriptionService.java
  35. 21 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/ImUtill.java
  36. 9 11
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/SendPatientUtil.java
  37. 4 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/WeixinBaseController.java
  38. 80 17
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/health/DoctorHealthController.java
  39. 3 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/util/WeiXinAccessTokenUtils.java

+ 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-service/wlyy_device/src/main/java/com/yihu/hos/device/common/dao/PatientHealthIndexDao.java

@ -53,5 +53,8 @@ public interface PatientHealthIndexDao
	List<PatientHealthIndex> findByType(String patient, String deviceSn, String value1, Integer type, Date recordDate);
	@Query("select a from PatientHealthIndex a where a.user = ?1 and a.type =?2  order by recordDate desc ")
    List<PatientHealthIndex> findByPatientAndType(String patientCode, String diseaseType, Pageable pageable);
    List<PatientHealthIndex> findByPatientAndType(String patientCode, int type, Pageable pageable);
	@Query("select count(a) from PatientHealthIndex a where a.recordDate >= ?1 and a.recordDate <= ?2 and a.type in (1,2) and a.status = ?3 and a.del = '1'")
	int getCountByTimeAndStatus(Date start, Date end,int status);
}

+ 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{

+ 20 - 12
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;
@ -397,7 +400,6 @@ public class DeviceService {
                //连续5次体征值正常,则修改为非预警状态;连续5次异常,修改为预警状态-----START
                String patientCode = result.getUser();
                //患者信息
                Patient patient = patientDao.findByCode(patientCode);
@ -408,19 +410,16 @@ public class DeviceService {
                Sort sort = new Sort(Sort.Direction.DESC, "recordDate");
                // 分页信息
                Pageable pageRequest = new PageRequest(0, 5, sort);
                Pageable pageable = new PageRequest(1, 5);
                List<PatientHealthIndex> bloodPressurepatientHealthIndices = new ArrayList<>();
                List<PatientHealthIndex> bloodSuggurpatientHealthIndices = new ArrayList<>();
                if( 1 == patient.getDisease()){
                    bloodPressurepatientHealthIndices = patientHealthIndexDao.findByPatientAndType(patientCode,"2",pageable);
                    bloodPressurepatientHealthIndices = patientHealthIndexDao.findByPatientAndType(patientCode,2,pageable);
                } else if( 2 == patient.getDisease()){
                    bloodSuggurpatientHealthIndices = patientHealthIndexDao.findByPatientAndType(patientCode,"1",pageable);
                    bloodSuggurpatientHealthIndices = patientHealthIndexDao.findByPatientAndType(patientCode,1,pageable);
                } else {
                    bloodPressurepatientHealthIndices = patientHealthIndexDao.findByPatientAndType(patientCode,"2",pageable);
                    bloodSuggurpatientHealthIndices = patientHealthIndexDao.findByPatientAndType(patientCode,"1",pageable);
                    bloodPressurepatientHealthIndices = patientHealthIndexDao.findByPatientAndType(patientCode,2,pageable);
                    bloodSuggurpatientHealthIndices = patientHealthIndexDao.findByPatientAndType(patientCode,1,pageable);
                }
                for (PatientHealthIndex patientHealthIndex : bloodPressurepatientHealthIndices) {
@ -436,9 +435,17 @@ public class DeviceService {
                }
                //连续5次异常,修改用户为预警状态
                if( (5 == bloodPressureBbnormalCount || 5 == bloodSuggurBbnormalCount) && 0 == patient.getStandardStatus()){
                //连续3次异常,修改用户为预警状态
                if( (3 == bloodPressureBbnormalCount || 3 == bloodSuggurBbnormalCount) && 0 == patient.getStandardStatus()){
                    patient.setStandardStatus(1);
                }else{
                    Date end = new Date();
                    Date start = DateUtil.setDateTime(end,-7);
                    //计算血糖或者血压一周内的异常记录数量
                    int errorCount = patientHealthIndexDao.getCountByTimeAndStatus(start,end,1);
                    if(errorCount >= 5){//超过5次,记为预警状态
                        patient.setStandardStatus(1);
                    }
                }
                //连续5次正常,修改用户为非预警状态
@ -446,6 +453,7 @@ public class DeviceService {
                    patient.setStandardStatus(0);
                }
                patientDao.save(patient);
                //连续5次体征值正常,则修改为非预警状态;连续5次异常,修改为预警状态-----END
            }
        } catch (Exception e) {
@ -775,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

+ 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 {

+ 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"
        }
    ]
}

+ 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 - 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 - 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 {

+ 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 {

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

@ -1352,4 +1352,17 @@ public class PatientHealthIndexService extends BaseService {
    public Iterable<DoctorHealthStandard> findDoctorStandardByDoctor(String code) {
        return doctorHealthStandardDao.findByDoctor(code);
    }
    /**
     * 批量保存患者预警方案
     * @param list
     * @param patients
     * @return
     */
    public Iterable<PatientHealthStandard> saveStandardPatients(List<PatientHealthStandard> list, List<Patient> patients) {
        for (Patient patient:patients) {
            patientHealthStandardDao.deleteByPatient(patient.getCode());
        }
        return patientHealthStandardDao.save(list);
    }
}

+ 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);
	}
	

+ 5 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/common/account/PatientService.java

@ -1011,4 +1011,9 @@ public class PatientService extends TokenService {
    public void save(Patient patient) {
        patientDao.save(patient);
    }
    public List<Patient> findAllSignPatientTeamcode(String teamcode) {
        return patientDao.findAllSignPatientTeamcode(teamcode);
    }
}

+ 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"));//医嘱号

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

@ -325,6 +325,27 @@ public class ImUtill {
        return obj;
    }
    /**
     * 判断会话是否存在
     */
    public Boolean sessionIsExist(String sessionId) {
        Boolean re = false;
        String imAddr = im_host + "api/v2/sessions/isExist";
        JSONObject params = new JSONObject();
        params.put("session_id", sessionId);
        String ret = HttpClientUtil.postBody(imAddr, params);
        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 {

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

@ -3,8 +3,10 @@ package com.yihu.wlyy.web.doctor.health;
import com.yihu.device.entity.DevicePatientHealthIndex;
import com.yihu.wlyy.aop.ObserverRequired;
import com.yihu.wlyy.entity.doctor.health.DoctorHealthStandard;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.PatientHealthStandard;
import com.yihu.wlyy.service.app.health.PatientHealthIndexService;
import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.util.SystemConf;
import com.yihu.wlyy.web.BaseController;
import io.swagger.annotations.Api;
@ -31,6 +33,8 @@ public class DoctorHealthController extends BaseController {
	@Autowired
	private PatientHealthIndexService healthIndexService;
	@Autowired
	private PatientService patientService;
	@RequestMapping(value = "recent",method = RequestMethod.GET)
	@ResponseBody
@ -239,17 +243,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, "保存失败!");
@ -259,12 +252,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, "保存成功");
@ -391,4 +378,80 @@ public class DoctorHealthController extends BaseController {
		}
	}
	@RequestMapping(value = "savastandbyteamcode",method = RequestMethod.GET)
	@ResponseBody
	@ApiOperation("医生保存团队下所有居民的预警方案")
	public String doctorSaveStandardByTeamCode(
			@ApiParam("团队代码") @RequestParam String teamcode,
			@ApiParam("预警值Json") @RequestParam String json) {
		try {
			JSONArray array = new JSONArray(json);
			if (StringUtils.isEmpty(teamcode) || array == null || array.length() == 0) {
				return error(-1, "保存失败!");
			}
			List<Patient> patients = patientService.findAllSignPatientTeamcode(teamcode);
			if(!patients.isEmpty()){
				// 生成数据对象
				List<PatientHealthStandard> list = new ArrayList<>();
				//保存患者的数据时,同时医生的预警值方案
				List<DoctorHealthStandard> doclist = new ArrayList<>();
				for (int i = 0; i < array.length(); i++) {
					JSONObject obj = array.getJSONObject(i);
					if (obj == null) {
						continue;
					}
					for (Patient patient: patients) {
						PatientHealthStandard standard = new PatientHealthStandard();
						standard.setDoctor(getUID());
						standard.setMaxValue1(obj.has("max_value1") ? NumberUtils.toDouble(obj.getString("max_value1"), 0) : 0);
						standard.setMaxValue2(obj.has("max_value2") ? NumberUtils.toDouble(obj.getString("max_value2"), 0) : 0);
						standard.setMinValue1(obj.has("min_value1") ? NumberUtils.toDouble(obj.getString("min_value1"), 0) : 0);
						standard.setMinValue2(obj.has("min_value2") ? NumberUtils.toDouble(obj.getString("min_value2"), 0) : 0);
						standard.setType(obj.getInt("type"));
						standard.setPatient(patient.getCode());
						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, "保存失败!");
				}
				// 保存数据库
				Iterable<PatientHealthStandard> iterable = healthIndexService.saveStandardPatients(list, patients);
				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, "保存成功");
		} catch (Exception e) {
			error(e);
			return invalidUserException(e, -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 {