Browse Source

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

huangwenjie 7 years ago
parent
commit
57c753f784
23 changed files with 762 additions and 186 deletions
  1. 5 5
      common/common-entity/pom.xml
  2. 97 0
      common/common-entity/src/main/java/com/yihu/es/entity/MapDataDTO.java
  3. 170 144
      common/common-entity/src/main/java/com/yihu/wlyy/entity/device/PatientDevice.java
  4. 78 0
      patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/util/LatitudeUtils.java
  5. 32 0
      patient-co/patient-co-wlyy/doc/技术文档/es/体征地图新增索引
  6. 7 0
      patient-co/patient-co-wlyy/pom.xml
  7. 9 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/Application.java
  8. 6 2
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/PatientDeviceDao.java
  9. 74 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/team/AdminTeamService.java
  10. 3 1
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/jimeiJkEdu/JMJkEduArticleService.java
  11. 79 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/LatitudeUtils.java
  12. 62 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/PinYinUtil.java
  13. 2 0
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/common/FileUploadController.java
  14. 97 25
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/data/DataHandingService.java
  15. 23 5
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/data/DataHandlingController.java
  16. 4 2
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/team/AdminTeamController.java
  17. 2 0
      patient-co/patient-co-wlyy/src/main/resources/application-dev.yml
  18. 3 1
      patient-co/patient-co-wlyy/src/main/resources/application-devtest.yml
  19. 2 0
      patient-co/patient-co-wlyy/src/main/resources/application-local.yml
  20. 2 0
      patient-co/patient-co-wlyy/src/main/resources/application-localtest.yml
  21. 2 0
      patient-co/patient-co-wlyy/src/main/resources/application-prod.yml
  22. 2 0
      patient-co/patient-co-wlyy/src/main/resources/application-test.yml
  23. 1 1
      patient-co/patient-co-wlyy/src/main/resources/system.properties

+ 5 - 5
common/common-entity/pom.xml

@ -63,11 +63,11 @@
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
        <!--<dependency>-->
            <!--<groupId>org.springframework.boot</groupId>-->
            <!--<artifactId>spring-boot-starter-data-elasticsearch</artifactId>-->
            <!--<version>1.3.5.RELEASE</version>-->
        <!--</dependency>-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
            <version>1.3.5.RELEASE</version>
        </dependency>
    </dependencies>
</project>

+ 97 - 0
common/common-entity/src/main/java/com/yihu/es/entity/MapDataDTO.java

@ -0,0 +1,97 @@
package com.yihu.es.entity;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.searchbox.annotations.JestId;
import org.springframework.data.elasticsearch.annotations.GeoPointField;
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
import java.util.Date;
/**
 * Created by chenweida on 2018/2/12.
 */
public class MapDataDTO {
    @JestId
    private String id;
    private String idCard; //设备绑定身份证
    private String deviceSn;//设备SnID
    private Long deviceId;//设备ID 用于区分类型
    @GeoPointField
    private GeoPoint location;//经纬度
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXX")
    @JSONField(format = "yyyy-MM-dd'T'HH:mm:ssXX")
    private Date deviceTime;//设备版定数时间
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXX")
    @JSONField(format = "yyyy-MM-dd'T'HH:mm:ssXX")
    private Date createTime;  // 创建时间(ES:必填)
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getIdCard() {
        return idCard;
    }
    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }
    public String getDeviceSn() {
        return deviceSn;
    }
    public void setDeviceSn(String deviceSn) {
        this.deviceSn = deviceSn;
    }
    public Long getDeviceId() {
        return deviceId;
    }
    public void setDeviceId(Long deviceId) {
        this.deviceId = deviceId;
    }
    public GeoPoint getLocation() {
        return location;
    }
    public void setLocation(GeoPoint location) {
        this.location = location;
    }
    public Date getDeviceTime() {
        return deviceTime;
    }
    public void setDeviceTime(Date deviceTime) {
        this.deviceTime = deviceTime;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public void setLocation(Double lat, Double lng) {
        GeoPoint geoPoint = new GeoPoint(lat, lng);
        this.location = geoPoint;
    }
}

+ 170 - 144
common/common-entity/src/main/java/com/yihu/wlyy/entity/device/PatientDevice.java

@ -6,158 +6,184 @@ import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
@Entity
@Table(name = "wlyy_patient_device")
public class PatientDevice extends IdEntity {
	// 设备ID
	private Long deviceId;
	// 设备标识 1血糖仪,2.血压计
	private String deviceSn;
	//sim卡号
	private String sim;
	// 设备名称
	private String deviceName;
	// 用户code
	private String user;
	// 设备类型标识
	private String categoryCode;
	// 用户类型标准 -1代表单用户
	private String userType;
	// 用户身份证
	private String userIdcard;
	// 操作医生代码
	private String doctor;
	private String agent;//代绑人代码(家人)
	// 操作时间
	private Date czrq;
	///**
	// * 是否有效
	// * 1-已删除绑定
	// * 0-正常绑定
	// */
	//private int del;
	///**
	// * 删除人CODE
	// */
	//private String delUser;
    // 设备ID
    private Long deviceId;
    // 设备标识 1血糖仪,2.血压计
    private String deviceSn;
    //sim卡号
    private String sim;
    // 设备名称
    private String deviceName;
    // 用户code
    private String user;
    // 设备类型标识
    private String categoryCode;
    // 用户类型标准 -1代表单用户
    private String userType;
    // 用户身份证
    private String userIdcard;
    // 操作医生代码
    private String doctor;
    private String agent;//代绑人代码(家人)
    // 操作时间
    private Date czrq;
    //========================非表字段======================
    //患者居住地址
    private String address;
    ///**
    // * 是否有效
    // * 1-已删除绑定
    // * 0-正常绑定
    // */
    //private int del;
    ///**
    // * 删除人CODE
    // */
    //private String delUser;
    //
	//@Column(name="del_user")
	//public String getDelUser() {
	//	return delUser;
	//}
    //@Column(name="del_user")
    //public String getDelUser() {
    //	return delUser;
    //}
    //
	//public void setDelUser(String delUser) {
	//	this.delUser = delUser;
	//}
    //public void setDelUser(String delUser) {
    //	this.delUser = delUser;
    //}
    //
	//public int getDel() {
	//	return del;
	//}
    //public int getDel() {
    //	return del;
    //}
    //
	//public void setDel(int del) {
	//	this.del = del;
	//}
	@Column(name="device_id")
	public Long getDeviceId() {
		return deviceId;
	}
	public void setDeviceId(Long deviceId) {
		this.deviceId = deviceId;
	}
	@Column(name="device_sn")
	public String getDeviceSn() {
		return deviceSn;
	}
	public void setDeviceSn(String deviceSn) {
		this.deviceSn = deviceSn;
	}
	@Column(name="sim")
	public String getSim() {
		return sim;
	}
	public void setSim(String sim) {
		this.sim = sim;
	}
	@Column(name="device_name")
	public String getDeviceName() {
		return deviceName;
	}
	public void setDeviceName(String deviceName) {
		this.deviceName = deviceName;
	}
	@Column(name="user")
	public String getUser() {
		return user;
	}
	public void setUser(String user) {
		this.user = user;
	}
	@Column(name="category_code")
	public String getCategoryCode() {
		return categoryCode;
	}
	public void setCategoryCode(String categoryCode) {
		this.categoryCode = categoryCode;
	}
	@Column(name="user_type")
	public String getUserType() {
		return userType;
	}
	public void setUserType(String userType) {
		this.userType = userType;
	}
	@Column(name="user_idcard")
	public String getUserIdcard() {
		return userIdcard;
	}
	public void setUserIdcard(String userIdcard) {
		this.userIdcard = userIdcard;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	@Column(name="czrq")
	public Date getCzrq() {
		return czrq;
	}
	public void setCzrq(Date czrq) {
		this.czrq = czrq;
	}
	@Column(name="doctor")
	public String getDoctor() {
		return doctor;
	}
	public void setDoctor(String doctor) {
		this.doctor = doctor;
	}
	@Column(name="agent")
	public String getAgent() {
		return agent;
	}
	public void setAgent(String agent) {
		this.agent = agent;
	}
    //public void setDel(int del) {
    //	this.del = del;
    //}
    @Column(name = "device_id")
    public Long getDeviceId() {
        return deviceId;
    }
    public void setDeviceId(Long deviceId) {
        this.deviceId = deviceId;
    }
    @Column(name = "device_sn")
    public String getDeviceSn() {
        return deviceSn;
    }
    public void setDeviceSn(String deviceSn) {
        this.deviceSn = deviceSn;
    }
    @Column(name = "sim")
    public String getSim() {
        return sim;
    }
    public void setSim(String sim) {
        this.sim = sim;
    }
    @Column(name = "device_name")
    public String getDeviceName() {
        return deviceName;
    }
    public void setDeviceName(String deviceName) {
        this.deviceName = deviceName;
    }
    @Column(name = "user")
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
    @Column(name = "category_code")
    public String getCategoryCode() {
        return categoryCode;
    }
    public void setCategoryCode(String categoryCode) {
        this.categoryCode = categoryCode;
    }
    @Column(name = "user_type")
    public String getUserType() {
        return userType;
    }
    public void setUserType(String userType) {
        this.userType = userType;
    }
    @Column(name = "user_idcard")
    public String getUserIdcard() {
        return userIdcard;
    }
    public void setUserIdcard(String userIdcard) {
        this.userIdcard = userIdcard;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "czrq")
    public Date getCzrq() {
        return czrq;
    }
    public void setCzrq(Date czrq) {
        this.czrq = czrq;
    }
    @Column(name = "doctor")
    public String getDoctor() {
        return doctor;
    }
    public void setDoctor(String doctor) {
        this.doctor = doctor;
    }
    @Column(name = "agent")
    public String getAgent() {
        return agent;
    }
    public void setAgent(String agent) {
        this.agent = agent;
    }
    @Transient
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public PatientDevice(String address, Date czrq, String userIdcard, String deviceSn, Long deviceId) {
        this.address = address;
        this.czrq = czrq;
        this.userIdcard = userIdcard;
        this.deviceSn = deviceSn;
        this.deviceId = deviceId;
    }
    public PatientDevice() {
    }
}

+ 78 - 0
patient-co/patient-co-wlyy-job/src/main/java/com/yihu/wlyy/util/LatitudeUtils.java

@ -0,0 +1,78 @@
package com.yihu.wlyy.util;
import org.apache.commons.lang.StringUtils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
public class LatitudeUtils {
    public static final String KEY_1 = "7d9fbeb43e975cd1e9477a7e5d5e192a";
    /**
     * 返回输入地址的经纬度坐标
     * key lng(经度),lat(纬度)
     */
    public static Map<String,String> getGeocoderLatitude(String address){
        BufferedReader in = null;
        try {
            //将地址转换成utf-8的16进制
            address = URLEncoder.encode(address, "UTF-8");
            URL tirc = new URL("http://api.map.baidu.com/geocoder?address="+ address +"&output=json&key="+ KEY_1);
            in = new BufferedReader(new InputStreamReader(tirc.openStream(),"UTF-8"));
            String res;
            StringBuilder sb = new StringBuilder("");
            while((res = in.readLine())!=null){
                sb.append(res.trim());
            }
            String str = sb.toString();
            Map<String,String> map = null;
            if(StringUtils.isNotEmpty(str)){
                int lngStart = str.indexOf("lng\":");
                int lngEnd = str.indexOf(",\"lat");
                int latEnd = str.indexOf("},\"precise");
                if(lngStart > 0 && lngEnd > 0 && latEnd > 0){
                    String lng = str.substring(lngStart+5, lngEnd);
                    String lat = str.substring(lngEnd+7, latEnd);
                    map = new HashMap<String,String>();
                    map.put("lng", lng);
                    map.put("lat", lat);
                    return map;
                }
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    public static void main(String args[]){
        try {
            Map<String, String> json = LatitudeUtils.getGeocoderLatitude("浦东区张杨路1725号");
            System.out.println("经度 : " + json.get("lng"));
            System.out.println("纬度 : " + json.get("lat"));
        }catch (Exception e ){
            e.printStackTrace();
        }
    }
}

+ 32 - 0
patient-co/patient-co-wlyy/doc/技术文档/es/体征地图新增索引

@ -0,0 +1,32 @@
创建索引
POST  http://172.19.103.68:9200/wlyy_patient_device
查询索引
GET http://172.19.103.68:9200/wlyy_patient_device/
给索引加mapping
POST http://172.19.103.68:9200/wlyy_patient_device/wlyy_patient_device/_mapping
{
	"wlyy_patient_device": {
		"properties": {
			"createTime": {
				"type": "date"
			},
			"idCard": {
				"type": "string",
				"index": "not_analyzed"
			},
			"location": {
				"type": "geo_point"
			},
			"deviceTime": {
				"type": "date"
			},
			"deviceId": {
				"type": "long"
			},
			"deviceSn": {
				"type": "string",
				"index": "not_analyzed"
			}
		}
	}
}

+ 7 - 0
patient-co/patient-co-wlyy/pom.xml

@ -491,6 +491,13 @@
            <version>4.4.5</version>
        </dependency>
        <!--elasticsearch end-->
        <!--拼音https://mvnrepository.com/artifact/org.clojars.cbilson/pinyin4j-->
        <dependency>
            <groupId>org.clojars.cbilson</groupId>
            <artifactId>pinyin4j</artifactId>
            <version>2.5.0</version>
        </dependency>
        <!--拼音https://mvnrepository.com/artifact/org.clojars.cbilson/pinyin4j end-->
    </dependencies>
    <build>
        <finalName>wlyy</finalName>

+ 9 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/Application.java

@ -1,13 +1,22 @@
package com.yihu.wlyy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration;
import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration;
import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration;
import org.springframework.context.ApplicationContext;
/**
 * Created by chenweida on 2017/7/28.
 */
@SpringBootApplication
@EnableAutoConfiguration(exclude = {
        ElasticsearchAutoConfiguration.class,
        ElasticsearchRepositoriesAutoConfiguration.class,
        ElasticsearchDataAutoConfiguration.class
})
public class Application {
    public static ApplicationContext ctx = null;

+ 6 - 2
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/PatientDeviceDao.java

@ -21,7 +21,7 @@ public interface PatientDeviceDao extends PagingAndSortingRepository<PatientDevi
    List<PatientDevice> findByPatient(String user);
    @Query("select a from PatientDevice a where a.user = ?1 and a.deviceSn=?2 ")
    List<PatientDevice> findByPatientAndDeviceSn(String user,String deviceSn);
    List<PatientDevice> findByPatientAndDeviceSn(String user, String deviceSn);
    List<PatientDevice> findByUser(String user, Pageable pageRequest);
@ -38,6 +38,10 @@ public interface PatientDeviceDao extends PagingAndSortingRepository<PatientDevi
    //更换患者绑定的血糖仪
    @Modifying
    @Query("update PatientDevice t set t.deviceSn = ?3 , t.userType = ?4,t.sim=?5 where t.user = ?1 and t.deviceSn = ?2 ")
    int updatePatientDevice(String user, String deviceSN, String newDeviceSN,String userType,String sim);
    int updatePatientDevice(String user, String deviceSN, String newDeviceSN, String userType, String sim);
    @Query("select new com.yihu.wlyy.entity.device.PatientDevice(p.address,a.czrq,a.userIdcard,a.deviceSn,a.deviceId) " +
            "from PatientDevice a,Patient p where a.userIdcard=p.idcard")
    List<PatientDevice> findWithArrdess();
}

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

@ -17,6 +17,7 @@ import com.yihu.wlyy.repository.patient.SignFamilyDao;
import com.yihu.wlyy.repository.patient.SignFamilyRenewDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.service.third.jw.JwSignService;
import com.yihu.wlyy.util.PinYinUtil;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.json.JSONArray;
@ -131,6 +132,79 @@ public class AdminTeamService extends BaseService {
        }
    }
    /**
     * 根据医生code返回所有团队的医生
     * (pc端im使用)改为字母拍讯
     * @author zd 2018-02-11
     * * @param doctor
     * @return
     */
    public Map<String,Object> getTeamMembersByDoctorCodeByAlpha(String doctor){
        String sql = "SELECT " +
                "   d.code" +
                "   ,d.name" +
                "   ,d.hospital" +
                "   ,d.hospital_name hospitalName" +
                "   ,d.dept_name deptName" +
                "   ,d.job_name jobName" +
                "   ,d.level" +
                "   ,d.sex" +
                "   ,d.photo" +
                "   ,d.expertise" +
                "   ,d.introduce" +
                "   ,t.id teamCode" +
                " FROM " +
                "   wlyy_admin_team_member m" +
                "   , wlyy_admin_team t" +
                "   , wlyy_doctor d" +
                "   ,(SELECT t1.id FROM wlyy_admin_team_member m1, wlyy_admin_team t1 WHERE m1.doctor_code = '"+doctor+"' AND t1.id = m1.team_id AND t1.available = true AND m1.available = true) te" +
                " WHERE " +
                "   t.id = m.team_id AND " +
                "   m.doctor_code = d.code AND " +
                "   t.id = te.id AND " +
                "   t.available = true AND " +
                "   m.available = true ";
        List<Map<String, Object>> doctors = jdbcTemplate.queryForList(sql);
        Map<String, Map<String,Object>> result = new HashMap<>();
        if(doctors!=null&&doctors.size()>0){
            for (Map<String, Object> map:doctors){
                String code = map.get("code").toString();
                if(result.containsKey(code)){
                    Map<String,Object> map2 = result.get(code);
                    JSONArray ja = (JSONArray) map2.get("teams");
                    ja.put(map.get("teamCode"));
                }else {
                    JSONArray ja = new JSONArray();
                    ja.put(map.get("teamCode"));
                    map.put("teams",ja);
                    result.put(code,map);
                }
            }
        }
        Map<String,Object>  map =  new LinkedHashMap <>();
        JSONObject resultJson = new JSONObject();
        String[] alphatables = {"a", "b", "c", "d", "e", "f", "g", "h", "i",
                "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};
        if (result.size() > 0) {
            List<Map<String,Object>> list = Lists.newArrayList(result.values());
            for (String alpha : alphatables){
                List<Map<String,Object>> resultList = new ArrayList<>();
                for (Map<String,Object> one : list){
                    String name = String.valueOf(one.get("name"));
                    String firstSpell = PinYinUtil.getFirstSpell(name).substring(0,1);
                    if (alpha.equals(firstSpell)){
                        resultList.add(one);
                        map.put(alpha,resultList);
                    }
                }
            }
            return map;
        } else {
            return map;
        }
    }
    /**
     * 获取团队数量。
     *

+ 3 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/jimeiJkEdu/JMJkEduArticleService.java

@ -435,7 +435,9 @@ public class JMJkEduArticleService extends BaseService {
            healthEduArticleES.setArticleId(article.get("articleId") + "");
            healthEduArticleES.setArticleTitle(article.get("articleTitle") + "");
            healthEduArticleES.setArticleCover(article.get("articleCover") + "");
            healthEduArticleES.setArticleContent(article.get("articleContent") + "");
            String articleContent = article.containsKey("articleContent")?article.getString("articleContent").replaceAll("</?[^>]+>", ""):"";
            healthEduArticleES.setArticleContent(articleContent.length()>0?(articleContent.length()>100?articleContent.substring(0,100):articleContent):"");
//            healthEduArticleES.setArticleContent(article.get("articleContent") + "");
            healthEduArticleES.setArticleCategoryId(article.get("articleCategoryId") + "");
            healthEduArticleES.setFirstLevelCategoryId(article.get("firstLevelCategoryId") + "");
            healthEduArticleES.setFirstLevelCategoryName(article.get("firstLevelCategoryName") + "");

+ 79 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/LatitudeUtils.java

@ -0,0 +1,79 @@
package com.yihu.wlyy.util;
import org.apache.commons.lang.StringUtils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public class LatitudeUtils {
    public static final String KEY_1 = "7d9fbeb43e975cd1e9477a7e5d5e192a";
    /**
     * 返回输入地址的经纬度坐标
     * key lng(经度),lat(纬度)
     */
    public static Map<String,String> getGeocoderLatitude(String address){
        BufferedReader in = null;
        try {
            //将地址转换成utf-8的16进制
            address = URLEncoder.encode(address, "UTF-8");
            URL tirc = new URL("http://api.map.baidu.com/geocoder?address="+ address +"&output=json&key="+ UUID.randomUUID().toString().replace("-",""));
            in = new BufferedReader(new InputStreamReader(tirc.openStream(),"UTF-8"));
            String res;
            StringBuilder sb = new StringBuilder("");
            while((res = in.readLine())!=null){
                sb.append(res.trim());
            }
            String str = sb.toString();
            Map<String,String> map = null;
            if(StringUtils.isNotEmpty(str)){
                int lngStart = str.indexOf("lng\":");
                int lngEnd = str.indexOf(",\"lat");
                int latEnd = str.indexOf("},\"precise");
                if(lngStart > 0 && lngEnd > 0 && latEnd > 0){
                    String lng = str.substring(lngStart+5, lngEnd);
                    String lat = str.substring(lngEnd+7, latEnd);
                    map = new HashMap<String,String>();
                    map.put("lng", lng);
                    map.put("lat", lat);
                    return map;
                }
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    public static void main(String args[]){
        try {
            Map<String, String> json = LatitudeUtils.getGeocoderLatitude("浦东区张杨路1725号");
            System.out.println("经度 : " + json.get("lng"));
            System.out.println("纬度 : " + json.get("lat"));
        }catch (Exception e ){
            e.printStackTrace();
        }
    }
}

+ 62 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/PinYinUtil.java

@ -0,0 +1,62 @@
package com.yihu.wlyy.util;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
public class PinYinUtil {
	/** 
     * 获取汉字串拼音首字母,英文字符不变 
     * @param chinese 汉字串 
     * @return 汉语拼音首字母 
     */ 
    public static String getFirstSpell(String chinese) { 
            StringBuffer pybf = new StringBuffer(); 
            char[] arr = chinese.toCharArray(); 
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); 
            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); 
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); 
            for (int i = 0; i < arr.length; i++) { 
                    if (arr[i] > 128) { 
                            try { 
                                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat); 
                                    if (temp != null) { 
                                            pybf.append(temp[0].charAt(0)); 
                                    } 
                            } catch (BadHanyuPinyinOutputFormatCombination e) { 
                                    e.printStackTrace(); 
                            } 
                    } else { 
                            pybf.append(arr[i]); 
                    } 
            } 
            return pybf.toString().replaceAll("\\W", "").trim(); 
    } 
    /** 
     * 获取汉字串拼音,英文字符不变 
     * @param chinese 汉字串 
     * @return 汉语拼音 
     */ 
    public static String getFullSpell(String chinese) { 
            StringBuffer pybf = new StringBuffer(); 
            char[] arr = chinese.toCharArray(); 
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); 
            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); 
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); 
            for (int i = 0; i < arr.length; i++) { 
                    if (arr[i] > 128) { 
                            try { 
                                    pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]); 
                            } catch (BadHanyuPinyinOutputFormatCombination e) { 
                                    e.printStackTrace(); 
                            } 
                    } else { 
                            pybf.append(arr[i]); 
                    } 
            } 
            return pybf.toString(); 
    }
}

+ 2 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/common/FileUploadController.java

@ -101,6 +101,7 @@ public class FileUploadController extends BaseController {
     * @return
     * @throws IOException
     * @throws IllegalStateException
     * 备注:图片先保存到本地服务器,后续保存图片到fastDFS
     */
    @RequestMapping(value = "image", method = RequestMethod.POST  /*,headers = "Accept=image/png"*/ )
    @ResponseBody
@ -620,6 +621,7 @@ public class FileUploadController extends BaseController {
                json.put("status", 200);
                json.put("msg", "上传成功");
                json.put("urls", urls);
                logger.info("图片上传:" + json.toString());
                return json.toString();
            } catch (Exception e) {

+ 97 - 25
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/data/DataHandingService.java

@ -1,25 +1,30 @@
package com.yihu.wlyy.web.data;
import com.yihu.es.entity.HealthEduArticleES;
import com.yihu.es.entity.MapDataDTO;
import com.yihu.wlyy.config.es.ElastricSearchSave;
import com.yihu.wlyy.entity.device.PatientDevice;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.manage.User;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.repository.doctor.DoctorDao;
import com.yihu.wlyy.repository.manage.UserDao;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.repository.patient.PatientDeviceDao;
import com.yihu.wlyy.util.ElasticsearchUtil;
import com.yihu.wlyy.util.LatitudeUtils;
import com.yihu.wlyy.util.MD5;
import net.sf.json.JSONArray;
import org.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.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.*;
/**
 * Created by Administrator on 2016.10.17.
@ -36,43 +41,46 @@ public class DataHandingService {
    private ElasticsearchUtil elasticsearchUtil;
    @Autowired
    private ElastricSearchSave elastricSearchSave;
    @Autowired
    private PatientDeviceDao patientDeviceDao;
    @Transactional
    public String producePatientAndDoctorPassword() {
        int patientCount=0;
        int patientErrorCount=0;
        int doctorCount=0;
        int doctorErrorCount=0;
        List<Patient> patients= patientDao.findAllIdCardPatientAndNoPassword();
        for (Patient patient:patients){
            String idcard=patient.getIdcard();
            if(!StringUtils.isEmpty(patient.getPassword())||StringUtils.isEmpty(idcard)||(idcard.length()!=15&&idcard.length()!=18)){
        int patientCount = 0;
        int patientErrorCount = 0;
        int doctorCount = 0;
        int doctorErrorCount = 0;
        List<Patient> patients = patientDao.findAllIdCardPatientAndNoPassword();
        for (Patient patient : patients) {
            String idcard = patient.getIdcard();
            if (!StringUtils.isEmpty(patient.getPassword()) || StringUtils.isEmpty(idcard) || (idcard.length() != 15 && idcard.length() != 18)) {
                patientErrorCount++;
                continue;
            }
            String password=idcard.substring(idcard.length()-6);
            String salt= UUID.randomUUID().toString().replace("-","");
            String password = idcard.substring(idcard.length() - 6);
            String salt = UUID.randomUUID().toString().replace("-", "");
            patient.setSalt(salt);
            patient.setPassword(MD5.GetMD5Code(password+salt));
            patient.setPassword(MD5.GetMD5Code(password + salt));
            patientCount++;
        }
        patientDao.save(patients);
        List<Doctor> doctors= doctorDao.findAllDoctors();
        for (Doctor doctor:doctors){
            String phone= doctor.getMobile();
            if(!StringUtils.isEmpty(doctor.getPassword())||StringUtils.isEmpty(phone)||phone.length()!=11){
        List<Doctor> doctors = doctorDao.findAllDoctors();
        for (Doctor doctor : doctors) {
            String phone = doctor.getMobile();
            if (!StringUtils.isEmpty(doctor.getPassword()) || StringUtils.isEmpty(phone) || phone.length() != 11) {
                doctorErrorCount++;
                continue;
            }
            String password=phone.substring(5);
            String salt= UUID.randomUUID().toString().replace("-","");
            String password = phone.substring(5);
            String salt = UUID.randomUUID().toString().replace("-", "");
            doctor.setSalt(salt);
            doctor.setPassword(MD5.GetMD5Code(password+salt));
            doctor.setPassword(MD5.GetMD5Code(password + salt));
            doctorCount++;
        }
        doctorDao.save(doctors);
        return "更新患者(默认身份证后六位):"+patientCount+",有身份证异常的患者:"+patientErrorCount+",更新医生(默认电话后六位):"+doctorCount+",有电话号码异常的医生:"+doctorErrorCount;
        return "更新患者(默认身份证后六位):" + patientCount + ",有身份证异常的患者:" + patientErrorCount + ",更新医生(默认电话后六位):" + doctorCount + ",有电话号码异常的医生:" + doctorErrorCount;
    }
    public String initWLyyDoctorTable2WLyyUserTable() {
        JSONObject returnjo = new JSONObject();
        List<Doctor> doctors = doctorDao.findAllDoctors();
@ -113,9 +121,73 @@ public class DataHandingService {
        userDao.save(userTemp);
    }
    public Boolean esToEs(){
    public Boolean esToEs() {
        String sql = " SELECT * FROM health_edu_article_patient_test ";
        List<HealthEduArticleES> esList = elasticsearchUtil.excute(sql, HealthEduArticleES.class, "health_edu_article_patient_test", "health_edu_article_patient_test");
        return  elastricSearchSave.save(esList, "health_edu_article_patient", "health_edu_article_patient");
        return elastricSearchSave.save(esList, "health_edu_article_patient", "health_edu_article_patient");
    }
    @Value("${es.index.patientDevice}")
    private String patientDeviceIndex;
    @Value("${es.type.patientDevice}")
    private String patientDeviceType;
    private Logger logger = LoggerFactory.getLogger(DataHandingService.class);
    public net.sf.json.JSONObject deviceData2Es() {
        net.sf.json.JSONObject jo = new net.sf.json.JSONObject();
        try {
            //得到已经已经绑定的体征设备
            List<PatientDevice> patientDevices = patientDeviceDao.findWithArrdess();
            List<MapDataDTO> dataDTOs = new ArrayList<>();
            Integer error = 0;
            for (int i = 0; i < patientDevices.size(); i++) {
                PatientDevice one = patientDevices.get(i);
                MapDataDTO mapDataDTO = new MapDataDTO();
                mapDataDTO.setCreateTime(new Date());
                mapDataDTO.setDeviceTime(one.getCzrq());
                mapDataDTO.setDeviceId(one.getDeviceId());
                mapDataDTO.setDeviceSn(one.getDeviceSn());
                mapDataDTO.setIdCard(one.getUserIdcard());
                if (StringUtils.isEmpty(one.getAddress())) {
                    error++;
                    continue;
                }
                Map<String, String> json = LatitudeUtils.getGeocoderLatitude(one.getAddress().replace("G.", "").replace("(糖友网)", "").replace("(高友网)", ""));
                if (json == null) {
                    error++;
                    continue;
                }
                logger.info("地址:," + one.getAddress() + "坐标" + json.toString());
                mapDataDTO.setLocation(Double.valueOf(json.get("lat")), Double.valueOf(json.get("lng")));
                dataDTOs.add(mapDataDTO);
        }
            elastricSearchSave.save(dataDTOs, patientDeviceIndex, patientDeviceType);
            return jo;
        } catch (Exception e) {
            e.printStackTrace();
            return jo;
        }
    }
    public JSONArray getAllDeviceData() {
        JSONArray ja = new JSONArray();
        List<Map<String, Object>> returnData = elasticsearchUtil.excuteDataModel("SELECT location,idCard FROM wlyy_patient_device");
        returnData.stream().forEach(one->{
            net.sf.json.JSONObject jo=new net.sf.json.JSONObject();
            jo.put("idcard",one.get("idCard"));
            net.sf.json.JSONObject locatio=new net.sf.json.JSONObject();
            locatio.put("lat",one.get("location.lat")); //纬度 -90 ~~ 90
            locatio.put("lon",one.get("location.lon")); //经度 -180 ~~ 180
            jo.put("location",locatio);
            ja.add(jo);
        });
        return ja;
    }
}

+ 23 - 5
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/data/DataHandlingController.java

@ -9,6 +9,7 @@ import com.yihu.wlyy.web.third.jkedu.service.EduArticleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
@ -197,15 +198,15 @@ public class DataHandlingController extends BaseController {
        return write(200, "数据更新成功!", "data", flag);
    }
    @RequestMapping(value = "/getArticleStatics",method = RequestMethod.GET)
    @RequestMapping(value = "/getArticleStatics", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation("将旧数据文章的相关统计数据转移到新数据库")
    public String getArticleStatics(){
    public String getArticleStatics() {
        boolean flag = eduArticleService.getArticleStatics();
        if (flag){
        if (flag) {
            return write(200, "数据更新成功!");
        }else {
        } else {
            return write(200, "数据更新失败!");
        }
    }
@ -238,7 +239,7 @@ public class DataHandlingController extends BaseController {
    @RequestMapping(value = "/esToEs", method = RequestMethod.POST)
    @ResponseBody
    @ApiOperation("正式环境test数据清洗到prod中")
    public String esToEs(){
    public String esToEs() {
        Boolean flag = dataHandingService.esToEs();
        if (flag) {
            return write(200, "EStest数据清洗到ESprod成功!");
@ -246,4 +247,21 @@ public class DataHandlingController extends BaseController {
            return write(0, "EStest数据清洗到ESprod失败!");
        }
    }
    @RequestMapping(value = "/deviceData2Es", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation("把地图数据生成到ES中")
    public String deviceData2Es() {
        JSONObject jsonObject = dataHandingService.deviceData2Es();
        return write(200, jsonObject.toString());
    }
    @RequestMapping(value = "/getAllDeviceData", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation("得到全部的地图数据")
    public String getAllDeviceData() {
        JSONArray jsonObject = dataHandingService.getAllDeviceData();
        return write(200, jsonObject.toString());
    }
}

+ 4 - 2
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/team/AdminTeamController.java

@ -61,14 +61,16 @@ public class AdminTeamController extends BaseController {
    /**
     * pc端im使用
     * 备注:2018-02-11service改为用字母拍讯 zd
     * @return
     */
    @RequestMapping(value = "/doctorTeamMembers", method = RequestMethod.GET)
    @ApiOperation(value = "根据医生code返回所有团队的医生")
    public String getTeamMembersByDoctorCode(){
        try {
            JSONArray jsonArray = teamService.getTeamMembersByDoctorCode(getUID());
            return write(200, "OK", "data", jsonArray);
            //JSONArray jsonArray = teamService.getTeamMembersByDoctorCode(getUID());
            Map<String,Object> map = teamService.getTeamMembersByDoctorCodeByAlpha(getUID());
            return write(200, "OK", "data", map);
        }catch (Exception e){
            error(e);
            return error(-1, e.getMessage());

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

@ -111,11 +111,13 @@ es:
    Statistics: wlyy_quota_test
    FollowUp: wlyy_followup
    QuestionnaireWinning: wlyy_questionnaire_winning
    patientDevice: wlyy_patient_device
  type:
    HealthEduArticlePatient: health_edu_article_patient_test2
    Statistics: wlyy_quota_test
    FollowUpContent: wlyy_followup_content
    QuestionnaireWinning: wlyy_questionnaire_winning
    patientDevice: wlyy_patient_device
  host:  http://172.19.103.68:9200
  tHost: 172.19.103.68:9300
  clusterName: jkzl

+ 3 - 1
patient-co/patient-co-wlyy/src/main/resources/application-devtest.yml

@ -109,11 +109,13 @@ es:
    FollowUp: wlyy_followup
    Statistics: wlyy_quota_test
    QuestionnaireWinning: wlyy_questionnaire_winning
    patientDevice: wlyy_patient_device
  type:
    HealthEduArticlePatient: health_edu_article_patient_test3
    FollowUpContent: wlyy_followup_content
    Statistics: wlyy_quota_test
    QuestionnaireWinning: wlyy_questionnaire_winning
    patientDevice: wlyy_patient_device
  host:  http://172.19.103.68:9200
  tHost: 172.19.103.68:9300
  clusterName: jkzl
@ -131,7 +133,7 @@ activemq:
  password: admin
  url: tcp://172.19.103.87:61616
  queue:
    healtHarticleQueue: healthArticleChannel_devtest  #健康文章推送
    healtHarticleQueue: healthArticleChannel_test  #健康文章推送
##如果是外网项目就是flase 内网是true
neiwang:

+ 2 - 0
patient-co/patient-co-wlyy/src/main/resources/application-local.yml

@ -103,11 +103,13 @@ es:
    Statistics: wlyy_quota_prod
    FollowUp: wlyy_followup
    QuestionnaireWinning: wlyy_questionnaire_winning
    patientDevice: wlyy_patient_device
  type:
    HealthEduArticlePatient: health_edu_article_patient
    Statistics: wlyy_quota_prod
    FollowUpContent: wlyy_followup_content
    QuestionnaireWinning: wlyy_questionnaire_winning
    patientDevice: wlyy_patient_device
  host:  http://10.95.22.155:9200,http://10.95.22.156:9200
  tHost: 10.95.22.155:9300,10.95.22.156:9300
  clusterName: jkzl

+ 2 - 0
patient-co/patient-co-wlyy/src/main/resources/application-localtest.yml

@ -104,11 +104,13 @@ es:
    Statistics: wlyy_quota_test
    FollowUp: wlyy_followup
    QuestionnaireWinning: wlyy_questionnaire_winning
    patientDevice: wlyy_patient_device
  type:
    HealthEduArticlePatient: health_edu_article_patient_test
    Statistics: wlyy_quota_test
    FollowUpContent: wlyy_followup_content
    QuestionnaireWinning: wlyy_questionnaire_winning
    patientDevice: wlyy_patient_device
  host:  http://172.19.103.68:9200
  tHost: 172.19.103.68:9300
  clusterName: jkzl

+ 2 - 0
patient-co/patient-co-wlyy/src/main/resources/application-prod.yml

@ -109,11 +109,13 @@ es:
    Statistics: wlyy_quota_prod
    FollowUp: wlyy_followup
    QuestionnaireWinning: wlyy_questionnaire_winning
    patientDevice: wlyy_patient_device
  type:
    HealthEduArticlePatient: health_edu_article_patient
    Statistics: wlyy_quota_prod
    FollowUpContent: wlyy_followup_content
    QuestionnaireWinning: wlyy_questionnaire_winning
    patientDevice: wlyy_patient_device
  host:  http://59.61.92.90:9065,http://59.61.92.90:9067
  tHost: 59.61.92.90:9066,59.61.92.90:9068
  clusterName: jkzl

+ 2 - 0
patient-co/patient-co-wlyy/src/main/resources/application-test.yml

@ -102,11 +102,13 @@ es:
    FollowUp: wlyy_followup
    Statistics: wlyy_quota_test
    QuestionnaireWinning: wlyy_questionnaire_winning
    patientDevice: wlyy_patient_device
  type:
    HealthEduArticlePatient: health_edu_article_patient_test3
    FollowUpContent: wlyy_followup_content
    Statistics: wlyy_quota_test
    QuestionnaireWinning: wlyy_questionnaire_winning
    patientDevice: wlyy_patient_device
  host:  http://172.19.103.68:9200
  tHost: 172.19.103.68:9300
  clusterName: jkzl

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

@ -31,7 +31,7 @@ patient_QRCode_url=https://open.weixin.qq.com/connect/oauth2/authorize?appid={ap
#居民产检计划
patient_prenata_url=https://open.weixin.qq.com/connect/oauth2/authorize?appid={appId}&amp;redirect_uri={server}%2fwx%2fhtml%2ffybj%2fhtml%2fyunjianjihua.html&amp;response_type=code&amp;scope=snsapi_base&amp;state=STATE#wechat_redirect
#居民免疫计划
patient_immune_url=#居民抽奖图片地址
patient_immune_url=https://open.weixin.qq.com/connect/oauth2/authorize?appid={appId}&amp;redirect_uri={server}%2fwx%2fhtml%2ffybj%2fhtml%2fmianyijihua.html&amp;response_type=code&amp;scope=snsapi_base&amp;state=STATE#wechat_redirect
#居民wifi图片地址
patient_wifi_pic_url = {server}/images/wifi.png
#居民抽奖图片地址