Kaynağa Gözat

Merge branch 'dev' of http://192.168.1.220:10080/jiwei/wlyy2.0 into dev

LiTaohong 6 yıl önce
ebeveyn
işleme
58fef9c81e
33 değiştirilmiş dosya ile 591 ekleme ve 449 silme
  1. 9 3
      common/common-entity/src/main/java/com/yihu/jw/entity/base/role/RoleDO.java
  2. 4 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/saas/SaasBusinessCardDO.java
  3. 11 4
      common/common-entity/src/main/java/com/yihu/jw/entity/base/user/UserHideModuleFunctionDO.java
  4. 2 1
      common/common-entity/src/main/java/com/yihu/jw/entity/base/wx/WxReplySceneDO.java
  5. 20 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/wx/WxWechatDO.java
  6. 8 13
      common/common-entity/src/main/java/com/yihu/jw/entity/iot/datainput/DataStandardDO.java
  7. 12 12
      common/common-entity/src/main/java/com/yihu/jw/entity/specialist/SpecialistServiceItemDO.java
  8. 1 0
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/specialist/SpecialistMapping.java
  9. 59 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/user/UserHideModuleFunctionVO.java
  10. 1 0
      svr/svr-base/src/main/java/com/yihu/jw/base/activemq/ConsumerRunner.java
  11. 4 2
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/saas/SaasBusinessCardEndpoint.java
  12. 2 2
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/team/BaseTeamEndpoint.java
  13. 18 4
      svr/svr-base/src/main/java/com/yihu/jw/base/service/saas/SaasBusinessCardService.java
  14. 17 1
      svr/svr-base/src/main/java/com/yihu/jw/base/service/wx/WechatCoreService.java
  15. 1 1
      svr/svr-iot/pom.xml
  16. 29 29
      svr/svr-iot/src/main/java/com/yihu/iot/config/jpa/HibernateProperties.java
  17. 65 65
      svr/svr-iot/src/main/java/com/yihu/iot/config/jpa/IotJpa.java
  18. 5 1
      svr/svr-iot/src/main/java/com/yihu/iot/datainput/controller/DataInputController.java
  19. 34 13
      svr/svr-iot/src/main/java/com/yihu/iot/datainput/controller/DataSearchController.java
  20. 8 7
      svr/svr-iot/src/main/java/com/yihu/iot/datainput/service/DataInputService.java
  21. 15 13
      svr/svr-iot/src/main/java/com/yihu/iot/datainput/service/DataSearchService.java
  22. 19 18
      svr/svr-iot/src/main/java/com/yihu/iot/service/device/IotPatientDeviceService.java
  23. 7 13
      svr/svr-iot/src/main/java/com/yihu/iot/service/label/FigureLabelSerachService.java
  24. 5 15
      svr/svr-iot/src/main/resources/application.yml
  25. 15 2
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/controller/rehabilitation/RehabilitationManageController.java
  26. 1 1
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/controller/rehabilitation/RehabilitationPlanController.java
  27. 1 1
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/dao/rehabilitation/PatientRehabilitationPlanDao.java
  28. 2 0
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/service/SpecialistEvaluateService.java
  29. 10 10
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/service/SpecialistHospitalServiceItemService.java
  30. 1 3
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/service/SpecialistServiceItemService.java
  31. 167 212
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/service/rehabilitation/RehabilitationManageService.java
  32. 6 2
      svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/service/rehabilitation/RehabilitationPlanService.java
  33. 32 1
      svr/svr-wlyy-specialist/src/main/resources/application.yml

+ 9 - 3
common/common-entity/src/main/java/com/yihu/jw/entity/base/role/RoleDO.java

@ -14,11 +14,17 @@ import javax.persistence.Table;
@Table(name = "base_role")
public class RoleDO extends UuidIdentityEntityWithOperator {
	//角色名称
	/**
	 * 角色名称
	 */
	private String name;
	//备注
	/**
	 * 备注
	 */
	private String remark;
	//是否系统管理员
	/**
	 * 是否系统管理员
	 */
	private Boolean system;
	@Column(name = "name", length = 50)

+ 4 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/saas/SaasBusinessCardDO.java

@ -8,6 +8,10 @@ import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * <p>
 *     field - 必须和对应实体的字段名相同
 * </p>
 *
 * Entity - SAAS名片
 * Created by progr1mmer on 2018/9/7.
 */

+ 11 - 4
common/common-entity/src/main/java/com/yihu/jw/entity/base/user/UserHideModuleFunctionDO.java

@ -7,17 +7,24 @@ import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by progr1mmer on 2018/8/14.
 * @author progr1mmer
 * @date Created on 2018/8/14.
 */
@Entity
@Table(name = "base_user_hide_module_function")
public class UserHideModuleFunctionDO extends IntegerIdentityEntity {
    //用户ID
    /**
     * 用户ID
     */
    private String userId;
    //模块ID
    /**
     * 模块ID
     */
    private Integer moduleId;
    //功能ID(该字段为空则直接隐藏上级模块)
    /**
     * 功能ID(该字段为空则直接隐藏上级模块)
     */
    private Integer functionId;
    @Column(name = "user_id", nullable = false, length = 50)

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/base/wx/WxReplySceneDO.java

@ -18,7 +18,7 @@ public class WxReplySceneDO extends UuidIdentityEntityWithOperator implements ja
    private String appOriginId;//原始ID(唯一)
    private String msgType;//微信消息类型:text,event,image,voice,video,shortvideo,location,link
    private String event;//微信事件类型:SCAN,LOCATION,CLICK,subscribe,unsubscribe
    private String scene;//图文消息/自定义消息,分组场景
    private String scene;//图文消息/自定义消息,分组场景,微信的eventKey
    private String content;//居民回复内容,消息字段
    private Integer status;//状态(-1删除 0 冻结 1可用
@ -84,4 +84,5 @@ public class WxReplySceneDO extends UuidIdentityEntityWithOperator implements ja
    public void setStatus(Integer status) {
        this.status = status;
    }
}

+ 20 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/wx/WxWechatDO.java

@ -29,6 +29,8 @@ public class WxWechatDO extends UuidIdentityEntityWithOperator implements java.i
    private String appSecret;//'微信app_secret'
    private String appOriginId;//原始ID
    private String baseUrl;//'微信base_url'
    private String userName;//公总号登录账户
    private String password;//用户密码
    private String remark;//'备注'
@ -158,4 +160,22 @@ public class WxWechatDO extends UuidIdentityEntityWithOperator implements java.i
    public void setState(String state) {
        this.state = state;
    }
    @Column(name = "user_name", length = 200)
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    @Column(name = "password", length = 200)
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

+ 8 - 13
common/common-entity/src/main/java/com/yihu/jw/entity/iot/datainput/DataStandardDO.java

@ -11,27 +11,16 @@ import java.io.Serializable;
@Table(name = "iot_base_data_def")
public class DataStandardDO extends UuidIdentityEntity implements Serializable {
    @Column(name = "base_name")
    private String baseName;
    @Column(name = "item_code")
    private String baseName;
    private String itemCode;
    @Column(name = "item_name")
    private String itemName;
    @Column(name = "item_type")
    private String itemType;
    @Column(name = "required")
    private String required;
    @Column(name = "item_value_min")
    private String itemValueMin;
    @Column(name = "item_value_max")
    private String itemValueMax;
    @Column(name = "base_name")
    public String getBaseName() {
        return baseName;
    }
@ -40,6 +29,7 @@ public class DataStandardDO extends UuidIdentityEntity implements Serializable {
        this.baseName = baseName;
    }
    @Column(name = "item_code")
    public String getItemCode() {
        return itemCode;
    }
@ -48,6 +38,7 @@ public class DataStandardDO extends UuidIdentityEntity implements Serializable {
        this.itemCode = itemCode;
    }
    @Column(name = "item_name")
    public String getItemName() {
        return itemName;
    }
@ -56,6 +47,7 @@ public class DataStandardDO extends UuidIdentityEntity implements Serializable {
        this.itemName = itemName;
    }
    @Column(name = "item_type")
    public String getItemType() {
        return itemType;
    }
@ -64,6 +56,7 @@ public class DataStandardDO extends UuidIdentityEntity implements Serializable {
        this.itemType = itemType;
    }
    @Column(name = "required")
    public String getRequired() {
        return required;
    }
@ -72,6 +65,7 @@ public class DataStandardDO extends UuidIdentityEntity implements Serializable {
        this.required = required;
    }
    @Column(name = "item_value_min")
    public String getItemValueMin() {
        return itemValueMin;
    }
@ -80,6 +74,7 @@ public class DataStandardDO extends UuidIdentityEntity implements Serializable {
        this.itemValueMin = itemValueMin;
    }
    @Column(name = "item_value_max")
    public String getItemValueMax() {
        return itemValueMax;
    }

+ 12 - 12
common/common-entity/src/main/java/com/yihu/jw/entity/specialist/SpecialistServiceItemDO.java

@ -53,16 +53,16 @@ public class SpecialistServiceItemDO extends UuidIdentityEntityWithOperator impl
    private Integer hospitalGrade; //医院等级
    @Column(name = "three_hospitals")
    private Integer threeHospitals; //三级医院收费标准
    private Double threeHospitals; //三级医院收费标准
    @Column(name = "two_hospitals")
    private Integer twoHospitals; //二级医院收费标准
    private Double twoHospitals; //二级医院收费标准
    @Column(name = "one_hospitals")
    private Integer oneHospitals;//一级医院以及一级以下的社区医院
    private Double oneHospitals;//一级医院以及一级以下的社区医院
    @Column(name = "unit")
    private Integer unit; //计价单位
    private String unit; //计价单位
    @Column(name = "add_item")
    private String addItem;//加收项目
@ -177,38 +177,38 @@ public class SpecialistServiceItemDO extends UuidIdentityEntityWithOperator impl
    }
    @Column(name = "three_hospitals")
    public Integer getThreeHospitals() {
    public Double getThreeHospitals() {
        return threeHospitals;
    }
    public void setThreeHospitals(Integer threeHospitals) {
    public void setThreeHospitals(Double threeHospitals) {
        this.threeHospitals = threeHospitals;
    }
    @Column(name = "two_hospitals")
    public Integer getTwoHospitals() {
    public Double getTwoHospitals() {
        return twoHospitals;
    }
    public void setTwoHospitals(Integer twoHospitals) {
    public void setTwoHospitals(Double twoHospitals) {
        this.twoHospitals = twoHospitals;
    }
    @Column(name = "one_hospitals")
    public Integer getOneHospitals() {
    public Double getOneHospitals() {
        return oneHospitals;
    }
    public void setOneHospitals(Integer oneHospitals) {
    public void setOneHospitals(Double oneHospitals) {
        this.oneHospitals = oneHospitals;
    }
    @Column(name = "unit")
    public Integer getUnit() {
    public String getUnit() {
        return unit;
    }
    public void setUnit(Integer unit) {
    public void setUnit(String unit) {
        this.unit = unit;
    }

+ 1 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/specialist/SpecialistMapping.java

@ -83,6 +83,7 @@ public class SpecialistMapping {
        public static final String updatePlanDetailStatusById = "/updatePlanDetailStatusById";
        public static final String updatePlanStatusById = "/updatePlanStatusById";
        public static final String planSchedule = "/planSchedule";
        public static final String planListByPatient = "/planListByPatient";
    }
    public static class serviceItem{

+ 59 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/user/UserHideModuleFunctionVO.java

@ -0,0 +1,59 @@
package com.yihu.jw.restmodel.base.user;
import com.yihu.jw.restmodel.IntegerIdentityVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.persistence.Column;
/**
 * @author progr1mmer
 * @date Created on 2018/9/11.
 */
@ApiModel(value = "UserHideModuleFunctionVO", description = "用户取消订阅的模块或者功能")
public class UserHideModuleFunctionVO extends IntegerIdentityVO {
    /**
     * 用户ID
     */
    @ApiModelProperty(value = "用户ID", example = "402303ee65634dfs0234sf9a324a0023")
    private String userId;
    /**
     * 模块ID
     */
    @ApiModelProperty(value = "模块ID", example = "402303ee65634dfs0234sf9a324a0024")
    private Integer moduleId;
    /**
     * 功能ID(该字段为空则直接隐藏上级模块)
     */
    @ApiModelProperty(value = "功能ID", example = "402303ee65634dfs0234sf9a324a0025")
    private Integer functionId;
    @Column(name = "user_id", nullable = false, length = 50)
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    @Column(name = "module_id", nullable = false)
    public Integer getModuleId() {
        return moduleId;
    }
    public void setModuleId(Integer moduleId) {
        this.moduleId = moduleId;
    }
    @Column(name = "function_id")
    public Integer getFunctionId() {
        return functionId;
    }
    public void setFunctionId(Integer functionId) {
        this.functionId = functionId;
    }
}

+ 1 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/activemq/ConsumerRunner.java

@ -15,6 +15,7 @@ import java.util.Set;
/**
 * Runner - 消息执行者
 * Created by progr1mmer on 2018/8/2.
 * @author progr1mmer
 */
public class ConsumerRunner implements Runnable, ExceptionListener {

+ 4 - 2
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/saas/SaasBusinessCardEndpoint.java

@ -103,8 +103,10 @@ public class SaasBusinessCardEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "saasId", value = "SAAS ID", required = true)
            @RequestParam(value = "saasId") String saasId,
            @ApiParam(name = "sourceId", value = "实体对象ID,如医生、居民", required = true)
            @RequestParam(value = "sourceId") String sourceId) throws Exception {
        Map<String, Object> card = saasBusinessCardService.generateBusinessCard(type, saasId, sourceId);
            @RequestParam(value = "sourceId") String sourceId,
            @ApiParam(name = "orgId", value = "机构编码")
            @RequestParam(value = "orgId", required = false) String orgId) throws Exception {
        Map<String, Object> card = saasBusinessCardService.generateBusinessCard(type, saasId, sourceId, orgId);
        return success(card);
    }

+ 2 - 2
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/team/BaseTeamEndpoint.java

@ -1,6 +1,7 @@
package com.yihu.jw.base.endpoint.team;
import com.yihu.jw.base.service.team.BaseTeamService;
import com.yihu.jw.entity.base.team.BaseTeamDO;
import com.yihu.jw.restmodel.base.team.BaseTeamVO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
@ -14,9 +15,8 @@ import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import com.yihu.jw.entity.base.team.BaseTeamDO;
import java.util.List;
/**
*

+ 18 - 4
svr/svr-base/src/main/java/com/yihu/jw/base/service/saas/SaasBusinessCardService.java

@ -2,6 +2,7 @@ package com.yihu.jw.base.service.saas;
import com.yihu.jw.base.dao.saas.SaasBusinessCardDao;
import com.yihu.jw.base.service.doctor.BaseDoctorService;
import com.yihu.jw.base.service.patient.BasePatientService;
import com.yihu.jw.entity.base.saas.SaasBusinessCardDO;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.beans.factory.annotation.Autowired;
@ -13,25 +14,38 @@ import java.util.Map;
/**
 * Service - SAAS名片
 * Created by progr1mmer on 2018/9/7.
 * @author progr1mmer
 * @date Created on 2018/9/7.
 */
@Service
public class SaasBusinessCardService extends BaseJpaService<SaasBusinessCardDO, SaasBusinessCardDao> {
    @Autowired
    private BaseDoctorService doctorService;
    @Autowired
    private BasePatientService basePatientService;
    public Map<String, Object> generateBusinessCard(SaasBusinessCardDO.Type type, String saasId, String id) throws Exception {
    /**
     * 此接口配置的字段应和实体的字段名相同
     *
     * @param type
     * @param saasId
     * @param sourceId
     * @param orgId
     * @return
     * @throws Exception
     */
    public Map<String, Object> generateBusinessCard(SaasBusinessCardDO.Type type, String saasId, String sourceId, String orgId) throws Exception {
        List<SaasBusinessCardDO> saasBusinessCardDO = search("type=" + type  + ";saasId=" + saasId);
        Map<String, Object> card = new HashMap<>();
        if (type == SaasBusinessCardDO.Type.doctor) {
            //模拟加载医生数据
            Map<String, Object> source = new HashMap<>();
            Map<String, Object> source = doctorService.getDoctorInfo(orgId, sourceId);
            saasBusinessCardDO.forEach(item -> card.put(item.getField(), source.get(item.getField())));
            return card;
        } else if (type == SaasBusinessCardDO.Type.patient) {
            //模拟加载居民数据
            Map<String, Object> source = new HashMap<>();
            Map<String, Object> source = basePatientService.getPatientInfo(sourceId);
            saasBusinessCardDO.forEach(item -> card.put(item.getField(), source.get(item.getField())));
            return card;
        }

+ 17 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/service/wx/WechatCoreService.java

@ -224,7 +224,23 @@ public class WechatCoreService {
     * @param message
     * @return
     */
    public String clickProcess(Map<String, String> message){
    public String clickProcess(Map<String, String> message)throws Exception{
        //获取原始id
        String toUserName = message.get("ToUserName");
        //EventKey值为菜单的场景值
        String eventKey = message.get("EventKey");
        //查询需要对应匹配的点击事件值
        List<WxReplySceneDO> scenes = wxReplySceneDao.findByAppOriginIdAndMsgTypeAndEventAndStatus(toUserName,WeiXinMessageUtils.REQ_MESSAGE_TYPE_EVENT,WeiXinMessageUtils.EVENT_TYPE_CLICK,1);
        if(scenes!=null&&scenes.size()>0){
            //匹配对应点击事件场景值
            for(WxReplySceneDO scene:scenes){
                //判断带参二维码中前缀是否包该场景值
                if(StringUtils.isNotBlank(scene.getScene())&&eventKey.indexOf(scene.getScene())!=-1){
                    return getGraphicXMl(scene.getScene(),scene.getWechatId(),message);
                }
            }
        }
        return "";
    }

+ 1 - 1
svr/svr-iot/pom.xml

@ -127,7 +127,7 @@
        </dependency>
        <dependency>
            <groupId>com.yihu</groupId>
            <artifactId>elasticsearch-jest-starter</artifactId>
            <artifactId>elasticsearch-starter</artifactId>
            <version>2.0.0</version>
        </dependency>
        <!--<dependency>

+ 29 - 29
svr/svr-iot/src/main/java/com/yihu/iot/config/jpa/HibernateProperties.java

@ -1,29 +1,29 @@
package com.yihu.iot.config.jpa;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;
import java.util.Properties;
/**
 * Created by chenweida on 2017/4/6.
 */
@Component
@RefreshScope
public class HibernateProperties {
    @Value("${hibernate.dialect}")
    private String dialect;
    @Value("${hibernate.show_sql}")
    private String show_sql;
    @Value("${hibernate.ejb.naming_strategy}")
    private String naming_strategy;
    public  Properties hibProperties() {
        Properties properties = new Properties();
        properties.put("hibernate.dialect",dialect);
        properties.put("hibernate.show_sql", show_sql);
        properties.put("hibernate.ejb.naming_strategy", naming_strategy);
        return properties;
    }
}
//package com.yihu.iot.config.jpa;
//
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.cloud.context.config.annotation.RefreshScope;
//import org.springframework.stereotype.Component;
//
//import java.util.Properties;
//
///**
// * Created by chenweida on 2017/4/6.
// */
//@Component
//@RefreshScope
//public class HibernateProperties {
//    @Value("${hibernate.dialect}")
//    private String dialect;
//    @Value("${hibernate.show_sql}")
//    private String show_sql;
//    @Value("${hibernate.ejb.naming_strategy}")
//    private String naming_strategy;
//
//    public  Properties hibProperties() {
//        Properties properties = new Properties();
//        properties.put("hibernate.dialect",dialect);
//        properties.put("hibernate.show_sql", show_sql);
//        properties.put("hibernate.ejb.naming_strategy", naming_strategy);
//        return properties;
//    }
//}

+ 65 - 65
svr/svr-iot/src/main/java/com/yihu/iot/config/jpa/IotJpa.java

@ -1,65 +1,65 @@
package com.yihu.iot.config.jpa;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
/**
 * Created by chenweida on 2017/4/6.
 */
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        entityManagerFactoryRef = "iotEntityManagerFactory",
        transactionManagerRef = "iotTransactionManager",
        basePackages = {"com.yihu.iot.dao","com.yihu.iot.datainput.dao"})   //设置Repository所在位置
public class IotJpa {
    @Autowired
    private HibernateProperties hibernateProperties;
    @Bean(name = "iotEntityManagerFactory")
    @Primary
    public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary(DataSource dataSource) {
        LocalContainerEntityManagerFactoryBean emfb = new LocalContainerEntityManagerFactoryBean();
        emfb.setDataSource(dataSource);
        emfb.setPackagesToScan("com.yihu.jw.entity.iot");
        emfb.setPersistenceUnitName("iot");
        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        emfb.setJpaVendorAdapter(vendorAdapter);
        emfb.setJpaProperties(hibernateProperties.hibProperties());
        return emfb;
    }
    @Bean(name = "iotTransactionManager")
    @Primary
    JpaTransactionManager transactionManagerSecondary(
            @Qualifier("iotEntityManagerFactory") EntityManagerFactory builder) {
        return new JpaTransactionManager(builder);
    }
    @Bean
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource(){
        return DataSourceBuilder.create().build();
    }
}
//package com.yihu.iot.config.jpa;
//
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Qualifier;
//import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
//import org.springframework.boot.context.properties.ConfigurationProperties;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.context.annotation.Primary;
//import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
//import org.springframework.orm.jpa.JpaTransactionManager;
//import org.springframework.orm.jpa.JpaVendorAdapter;
//import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
//import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
//import org.springframework.transaction.annotation.EnableTransactionManagement;
//
//import javax.persistence.EntityManagerFactory;
//import javax.sql.DataSource;
//
///**
// * Created by chenweida on 2017/4/6.
// */
//@Configuration
//@EnableTransactionManagement
//@EnableJpaRepositories(
//        entityManagerFactoryRef = "iotEntityManagerFactory",
//        transactionManagerRef = "iotTransactionManager",
//        basePackages = {"com.yihu.iot.dao","com.yihu.iot.datainput.dao"})   //设置Repository所在位置
//public class IotJpa {
//
//    @Autowired
//    private HibernateProperties hibernateProperties;
//
//    @Bean(name = "iotEntityManagerFactory")
//    @Primary
//    public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary(DataSource dataSource) {
//
//        LocalContainerEntityManagerFactoryBean emfb = new LocalContainerEntityManagerFactoryBean();
//        emfb.setDataSource(dataSource);
//        emfb.setPackagesToScan("com.yihu.jw.entity.iot");
//        emfb.setPersistenceUnitName("iot");
//        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
//        emfb.setJpaVendorAdapter(vendorAdapter);
//        emfb.setJpaProperties(hibernateProperties.hibProperties());
//
//        return emfb;
//    }
//
//
//    @Bean(name = "iotTransactionManager")
//    @Primary
//    JpaTransactionManager transactionManagerSecondary(
//            @Qualifier("iotEntityManagerFactory") EntityManagerFactory builder) {
//        return new JpaTransactionManager(builder);
//    }
//
//    @Bean
//    @Primary
//    @ConfigurationProperties(prefix = "spring.datasource")
//    public DataSource dataSource(){
//        return DataSourceBuilder.create().build();
//    }
//
//}

+ 5 - 1
svr/svr-iot/src/main/java/com/yihu/iot/datainput/controller/DataInputController.java

@ -15,6 +15,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
@RestController
@RequestMapping(DataRequestMapping.api_iot_common)
@Api(tags = "数据上传操作", description = "数据上传操作")
@ -35,7 +37,9 @@ public class DataInputController {
    @PostMapping(value = DataRequestMapping.DataInput.api_data_input, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "体征数据上传", notes = "数据上传入库")
    public MixEnvelop uploadData(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData) {
    public MixEnvelop uploadData(
            @ApiParam(name = "json_data", value = "", defaultValue = "")
            @RequestBody String jsonData) throws IOException  {
        String str = "";
        try {
            str = dataInputService.inputBodySignsData(jsonData);

+ 34 - 13
svr/svr-iot/src/main/java/com/yihu/iot/datainput/controller/DataSearchController.java

@ -15,6 +15,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
@RestController
@RequestMapping(DataRequestMapping.api_iot_common)
@Api(tags = "数据查询操作", description = "数据查询操作")
@ -26,7 +28,8 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_data_search_one, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "查询单条数据", notes = "根据id查询单条数据")
    public MixEnvelop<DataBodySignsVO, DataBodySignsVO> getOne(
            @ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
            @ApiParam(name = "json_data", value = "", defaultValue = "")
            @RequestBody String jsonData) throws IOException {
        try{
            return MixEnvelop.getSuccess(DataRequestMapping.DataSearch.search_success,dataSearchService.getDataToBean(jsonData));
        } catch (ApiException e){
@ -37,7 +40,9 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_user_search_list, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "查询数据", notes = "根据条件查询数据")
    @ApiModelProperty()
    public MixEnvelop<DataBodySignsVO, DataBodySignsVO> getList(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
    public MixEnvelop<DataBodySignsVO, DataBodySignsVO> getList(
            @ApiParam(name = "json_data", value = "", defaultValue = "")
            @RequestBody String jsonData) throws IOException {
        try{
            return MixEnvelop.getSuccess(DataRequestMapping.DataSearch.search_success,dataSearchService.getDataToBean(jsonData));
        } catch (ApiException e){
@ -47,9 +52,11 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_user_search_list_page, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "查询数据,分页", notes = "根据条件查询数据,分页")
    public MixEnvelop getListPage(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
    public MixEnvelop getListPage(
            @ApiParam(name = "json_data", value = "", defaultValue = "")
            @RequestBody String jsonData) throws IOException {
        try{
            return MixEnvelop.getSuccess(DataRequestMapping.DataSearch.search_success,dataSearchService.getDataToBean(jsonData));
            return MixEnvelop.getSuccess(DataRequestMapping.DataSearch.search_success, dataSearchService.getDataToBean(jsonData));
        } catch (ApiException e){
            return MixEnvelop.getError(e.getMessage(), e.getErrorCode());
        }
@ -57,11 +64,13 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_user_search_recent5, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "获取最近5条数据", notes = "根据居民的体征类型,测量时间获取")
    public MixEnvelop<DataBodySignsVO, DataBodySignsVO> getRecent5ByTypeAndTime(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData ){
    public MixEnvelop<DataBodySignsVO, DataBodySignsVO> getRecent5ByTypeAndTime(
            @ApiParam(name = "json_data", value = "", defaultValue = "")
            @RequestBody String jsonData ) throws IOException {
        try{
            JSONObject jsonObject = JSONObject.parseObject(jsonData);
            jsonObject.put("size",5);
            return MixEnvelop.getSuccess(DataRequestMapping.DataSearch.search_success,dataSearchService.getDataToBean(jsonObject.toJSONString()));
            jsonObject.put("size", 5);
            return MixEnvelop.getSuccess(DataRequestMapping.DataSearch.search_success, dataSearchService.getDataToBean(jsonObject.toJSONString()));
        } catch (ApiException e){
            return MixEnvelop.getError(e.getMessage(), e.getErrorCode());
        }
@ -69,7 +78,9 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_user_abnormal_times_a_week, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "获取居民一周内体征数据异常次数", notes = "血糖或血压体征数据")
    public MixEnvelop getAbnormalTimesAWeek(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
    public MixEnvelop getAbnormalTimesAWeek(
            @ApiParam(name = "json_data", value = "", defaultValue = "")
            @RequestBody String jsonData) throws IOException {
        try{
            return MixEnvelop.getSuccess(DataRequestMapping.DataSearch.search_success,dataSearchService.getDataToBean(jsonData));
        } catch (ApiException e){
@ -79,7 +90,9 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_user_search_recent1, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "查询体征数据", notes = "根据居民code和删除标识获取最近一次体征数据")
    public MixEnvelop getRecent1ByCodeAndDel(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData) {
    public MixEnvelop getRecent1ByCodeAndDel(
            @ApiParam(name = "json_data", value = "", defaultValue = "")
            @RequestBody String jsonData) throws IOException {
        try {
            JSONObject jsonObject = JSONObject.parseObject(jsonData);
            jsonObject.put("size",1);
@ -91,7 +104,9 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_user_search_list_code_del, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "查询体征数据", notes = "根据居民code和删除标识获取所有体征数据,时间倒序")
    public MixEnvelop getListByCodeAndDel(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
    public MixEnvelop getListByCodeAndDel(
            @ApiParam(name = "json_data", value = "", defaultValue = "")
            @RequestBody String jsonData) throws IOException {
        try{
            return MixEnvelop.getSuccess(DataRequestMapping.DataSearch.search_success,dataSearchService.getDataToBean(jsonData));
        } catch (ApiException e){
@ -101,7 +116,9 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_user_delete, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "体征数据删除", notes = "根据id删除标志,支持伪删除")
    public MixEnvelop delete(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
    public MixEnvelop delete(
            @ApiParam(name = "json_data", value = "", defaultValue = "")
            @RequestBody String jsonData) throws IOException {
        try{
            String str = dataSearchService.updateData(jsonData);
            if(!StringUtils.equalsIgnoreCase("true",str)){
@ -115,7 +132,9 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_user_update, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "更新体征记录", notes = "根据id更新体征记录(包括体征值、上传时间等)")
    public MixEnvelop update(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
    public MixEnvelop update(
            @ApiParam(name = "json_data", value = "", defaultValue = "")
            @RequestBody String jsonData) throws IOException {
        try{
            String str = dataSearchService.updateData(jsonData);
            if(!StringUtils.equalsIgnoreCase("true",str)){
@ -129,7 +148,9 @@ public class DataSearchController {
    @PostMapping(value = DataRequestMapping.DataSearch.api_user_search_werun_datas, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "查询微信运动数据", notes = "根据Id获取用户微信运动数据")
    public MixEnvelop getWeRunDataListById(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
    public MixEnvelop getWeRunDataListById(
            @ApiParam(name = "json_data", value = "", defaultValue = "")
            @RequestBody String jsonData) throws IOException {
        try{
            return MixEnvelop.getSuccess(DataRequestMapping.DataSearch.search_success,dataSearchService.getWeRunDataList(jsonData));
        } catch (ApiException e){

+ 8 - 7
svr/svr-iot/src/main/java/com/yihu/iot/datainput/service/DataInputService.java

@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
//import com.yihu.base.hbase.HBaseAdmin;
//import com.yihu.base.hbase.HBaseHelper;
import com.yihu.elasticsearch.jest.ElastricSearchHelper;
import com.yihu.elasticsearch.ElasticSearchHelper;
import com.yihu.iot.datainput.enums.DataOperationTypeEnum;
import com.yihu.iot.datainput.util.ConstantUtils;
import com.yihu.iot.datainput.util.RowKeyUtils;
@ -22,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.util.*;
/**
@ -41,7 +42,7 @@ public class DataInputService {
    private DataProcessLogService dataProcessLogService;
    @Autowired
    private ElastricSearchHelper elastricSearchHelper;
    private ElasticSearchHelper elasticSearchHelper;
//    @Autowired
//    private HBaseHelper hBaseHelper;
@ -125,7 +126,7 @@ public class DataInputService {
     * @param json
     * @return
     */
    public String uploadData(String json){
    public String uploadData(String json) throws IOException {
        String fileName = "";
        String fileAbsPath = "";
        String rowkey = "";
@ -186,7 +187,7 @@ public class DataInputService {
        }
        //将数据存入es
        elastricSearchHelper.save(ConstantUtils.esIndex, ConstantUtils.esType, jsonObject.toJSONString());
        elasticSearchHelper.save(ConstantUtils.esIndex, ConstantUtils.esType, jsonObject.toJSONString());
        try {
//            boolean tableExists = hBaseAdmin.isTableExists(ConstantUtils.tableName);
@ -216,7 +217,7 @@ public class DataInputService {
     * @param json
     * @return
     */
    public String inputBodySignsData(String json){
    public String inputBodySignsData(String json) throws IOException {
        String fileName = "";
        String fileAbsPath = "";
        String rowkey = "";
@ -279,7 +280,7 @@ public class DataInputService {
        JSONArray saveArray = new JSONArray();
        saveArray.add(bodySignsDO);
        //将数据存入es
        elastricSearchHelper.save(ConstantUtils.esIndex, ConstantUtils.esType, saveArray.toJSONString());
        elasticSearchHelper.save(ConstantUtils.esIndex, ConstantUtils.esType, saveArray.toJSONString());
        /*try {
            boolean tableExists = hBaseAdmin.isTableExists(ConstantUtils.tableName);
@ -323,7 +324,7 @@ public class DataInputService {
            return "invalid stepinfolist";
        }
        try{
            bool = elastricSearchHelper.save(ConstantUtils.weRunDataIndex,ConstantUtils.weRunDataType,json);
            bool = elasticSearchHelper.save(ConstantUtils.weRunDataIndex,ConstantUtils.weRunDataType,json);
        }catch (Exception e){
            logger.error("upload weRunData to elasticsearch failed," + e.getMessage());
            return e.getMessage();

+ 15 - 13
svr/svr-iot/src/main/java/com/yihu/iot/datainput/service/DataSearchService.java

@ -3,7 +3,7 @@ package com.yihu.iot.datainput.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
//import com.yihu.base.hbase.HBaseHelper;
import com.yihu.elasticsearch.jest.ElastricSearchHelper;
import com.yihu.elasticsearch.ElasticSearchHelper;
import com.yihu.iot.datainput.util.ConstantUtils;
import com.yihu.iot.datainput.util.RowKeyUtils;
import com.yihu.iot.service.common.ElasticSearchQueryGenerator;
@ -20,6 +20,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.*;
@Component
@ -28,7 +30,7 @@ public class DataSearchService {
    private Logger logger = LoggerFactory.getLogger(DataSearchService.class);
    @Autowired
    private ElastricSearchHelper elastricSearchHelper;
    private ElasticSearchHelper elasticSearchHelper;
    @Autowired
    private ElasticSearchQueryGenerator elasticSearchQueryGenerator;
@ -36,12 +38,12 @@ public class DataSearchService {
//    @Autowired
//    private HBaseHelper hBaseHelper;
    public String getData(String jsonData){
    public String getData(String jsonData) throws IOException {
        logger.info("load data from elasticsearch start:" + org.apache.http.client.utils.DateUtils.formatDate(new Date(), DateUtil.yyyy_MM_dd_HH_mm_ss));
        JSONObject resultJsonObj = new JSONObject();
        JSONArray  resultArray = new JSONArray();
        SearchSourceBuilder query = elasticSearchQueryGenerator.getQueryBuilder("data",jsonData);
        SearchResult esResult = elastricSearchHelper.search(ConstantUtils.esIndex,ConstantUtils.esType,query.toString());
        SearchResult esResult = elasticSearchHelper.search(ConstantUtils.esIndex,ConstantUtils.esType,query.toString());
        if(esResult.getTotal() == 0){
            return "";
        }
@ -78,7 +80,7 @@ public class DataSearchService {
     * @param json
     * @return
     */
    public String updateData(String json) {
    public String updateData(String json) throws IOException {
        JSONObject params = JSONObject.parseObject(json);
        //拿到rid,构造通用查询结构,查询对应es Id
        String rid = params.getString("rid");
@ -95,7 +97,7 @@ public class DataSearchService {
        String _id = "";
        try {
            //将该rid的文档取出来
            SearchResult searchResult = elastricSearchHelper.search(ConstantUtils.esIndex, ConstantUtils.esType, queryString.toString());
            SearchResult searchResult = elasticSearchHelper.search(ConstantUtils.esIndex, ConstantUtils.esType, queryString.toString());
            params.remove("rid");
            _id = getEsId(searchResult.getJsonString());
            String resultSource = searchResult.getSourceAsString();
@ -121,7 +123,7 @@ public class DataSearchService {
//        boolean bool = elastricSearchHelper.update(ConstantUtils.esIndex, ConstantUtils.esType, _id, updateObj.toJSONString());
//        Update update = new Update();
//        update.
        boolean bool = elastricSearchHelper.update(ConstantUtils.esIndex, ConstantUtils.esType, _id, resultObject);
        boolean bool = elasticSearchHelper.update(ConstantUtils.esIndex, ConstantUtils.esType, _id, resultObject);
        return String.valueOf(bool);
    }
@ -191,11 +193,11 @@ public class DataSearchService {
     * @param jsonData
     * @return
     */
    public List<DataBodySignsVO> getDataToBean(String jsonData){
    public List<DataBodySignsVO> getDataToBean(String jsonData) throws IOException {
        List<DataBodySignsVO> result = new ArrayList<>();
        logger.info("load data from elasticsearch start:" + org.apache.http.client.utils.DateUtils.formatDate(new Date(), DateUtil.yyyy_MM_dd_HH_mm_ss));
        SearchSourceBuilder query = elasticSearchQueryGenerator.getQueryBuilder("data",jsonData);
        SearchResult esResult = elastricSearchHelper.search(ConstantUtils.esIndex,ConstantUtils.esType,query.toString());
        SearchResult esResult = elasticSearchHelper.search(ConstantUtils.esIndex,ConstantUtils.esType,query.toString());
        if(null== esResult || esResult.getTotal()==null || esResult.getTotal() == 0){
            return result;
        }
@ -212,14 +214,14 @@ public class DataSearchService {
     * @param json
     * @return
     */
    public List<WeRunDataVO> getWeRunDataList(String json){
    public List<WeRunDataVO> getWeRunDataList(String json) throws IOException {
        List<WeRunDataVO> result = new ArrayList<>();
        SearchSourceBuilder query = elasticSearchQueryGenerator.getQueryBuilder("stepInfoList",json);
        SearchResult esResult = elastricSearchHelper.search(ConstantUtils.weRunDataIndex,ConstantUtils.weRunDataType,query.toString());
        if(null != esResult && esResult.getTotal() == 0){
        SearchResult esResult = elasticSearchHelper.search(ConstantUtils.weRunDataIndex,ConstantUtils.weRunDataType,query.toString());
        if (null != esResult && esResult.getTotal() == 0){
            return result;
        }
        for(String str:esResult.getSourceAsStringList()){
        for (String str:esResult.getSourceAsStringList()){
            WeRunDataVO weRunDataVO = JSONObject.parseObject(str,WeRunDataVO.class);
            result.add(weRunDataVO);
        }

+ 19 - 18
svr/svr-iot/src/main/java/com/yihu/iot/service/device/IotPatientDeviceService.java

@ -1,7 +1,7 @@
package com.yihu.iot.service.device;
import com.alibaba.fastjson.JSONObject;
import com.yihu.elasticsearch.jest.ElastricSearchHelper;
import com.yihu.elasticsearch.ElasticSearchHelper;
import com.yihu.iot.dao.device.IotPatientDeviceDao;
import com.yihu.iot.datainput.util.ConstantUtils;
import com.yihu.iot.service.common.ElasticSearchQueryGenerator;
@ -21,19 +21,20 @@ import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.io.IOException;
import java.util.*;
/**
 * @author yeshijie on 2018/1/16.
 */
@Service
public class IotPatientDeviceService extends BaseJpaService<IotPatientDeviceDO,IotPatientDeviceDao> {
public class IotPatientDeviceService extends BaseJpaService<IotPatientDeviceDO, IotPatientDeviceDao> {
    private Logger logger = LoggerFactory.getLogger(IotPatientDeviceService.class);
    @Autowired
    private IotPatientDeviceDao iotPatientDeviceDao;
    @Autowired
    private ElastricSearchHelper elastricSearchHelper;
    private ElasticSearchHelper elasticSearchHelper;
    @Autowired
    private ElasticSearchQueryGenerator elasticSearchQueryGenerator;
@ -86,7 +87,7 @@ public class IotPatientDeviceService extends BaseJpaService<IotPatientDeviceDO,I
            logger.info("地址:," + deviceVO.getAddress() + "坐标" + json.toString());
            dataDTO.setLocation(Double.valueOf(json.get("lat")), Double.valueOf(json.get("lng")));
//            dataDTOs.add(dataDTO);
            elastricSearchHelper.save(ConstantUtils.deviceLocationIndex, ConstantUtils.deviceLocationType,JSONObject.toJSONString(dataDTO));
            elasticSearchHelper.save(ConstantUtils.deviceLocationIndex, ConstantUtils.deviceLocationType,JSONObject.toJSONString(dataDTO));
        } catch (Exception e) {
            e.printStackTrace();
        }
@ -179,9 +180,9 @@ public class IotPatientDeviceService extends BaseJpaService<IotPatientDeviceDO,I
     * 查询所有设备地址
     * @return
     */
    public List<LocationDataVO> findAllDeviceLocations(){
    public List<LocationDataVO> findAllDeviceLocations() throws IOException {
        SearchSourceBuilder queryStr = elasticSearchQueryGenerator.getQueryAllBuilder();
        JestResult esResult = elastricSearchHelper.search(ConstantUtils.deviceLocationIndex,ConstantUtils.deviceLocationType,queryStr.toString());
        JestResult esResult = elasticSearchHelper.search(ConstantUtils.deviceLocationIndex,ConstantUtils.deviceLocationType,queryStr.toString());
        return getESResultBeanList(esResult);
    }
@ -189,9 +190,9 @@ public class IotPatientDeviceService extends BaseJpaService<IotPatientDeviceDO,I
     * 根据居民绑定的idCard查询设备地址
     * @return
     */
    public List<LocationDataVO> findDeviceLocationsByIdCard(String jsonData){
    public List<LocationDataVO> findDeviceLocationsByIdCard(String jsonData) throws IOException {
        SearchSourceBuilder queryStr = elasticSearchQueryGenerator.getQueryBuilder("",jsonData);
        JestResult esResult = elastricSearchHelper.search(ConstantUtils.deviceLocationIndex,ConstantUtils.deviceLocationType,queryStr.toString());
        JestResult esResult = elasticSearchHelper.search(ConstantUtils.deviceLocationIndex,ConstantUtils.deviceLocationType,queryStr.toString());
        return getESResultBeanList(esResult);
    }
@ -199,9 +200,9 @@ public class IotPatientDeviceService extends BaseJpaService<IotPatientDeviceDO,I
     * 根据设备SN码查询设备地址
     * @return
     */
    public List<LocationDataVO> findDeviceLocationsBySn(String jsonData){
    public List<LocationDataVO> findDeviceLocationsBySn(String jsonData) throws IOException {
        SearchSourceBuilder queryStr = elasticSearchQueryGenerator.getQueryBuilder("",jsonData);
        JestResult esResult = elastricSearchHelper.search(ConstantUtils.deviceLocationIndex,ConstantUtils.deviceLocationType,queryStr.toString());
        JestResult esResult = elasticSearchHelper.search(ConstantUtils.deviceLocationIndex,ConstantUtils.deviceLocationType,queryStr.toString());
        return getESResultBeanList(esResult);
    }
@ -222,10 +223,10 @@ public class IotPatientDeviceService extends BaseJpaService<IotPatientDeviceDO,I
     * 设备解绑,根据Sn或idCard删除地址
     * @return
     */
    public boolean deleteLocationsByIdcardOrSn(String jsonData){
    public boolean deleteLocationsByIdcardOrSn(String jsonData) throws IOException {
        List<Map<String,Object>> idList = new ArrayList<>();
        SearchSourceBuilder queryStr = elasticSearchQueryGenerator.getQueryBuilder("",jsonData);
        JestResult esResult = elastricSearchHelper.search(ConstantUtils.deviceLocationIndex,ConstantUtils.deviceLocationType,queryStr.toString());
        JestResult esResult = elasticSearchHelper.search(ConstantUtils.deviceLocationIndex,ConstantUtils.deviceLocationType,queryStr.toString());
        List<LocationDataVO> resultList = getESResultBeanList(esResult);
        for(LocationDataVO locationDataVO : resultList){
                Map<String,Object> map = new HashMap<>();
@ -234,7 +235,7 @@ public class IotPatientDeviceService extends BaseJpaService<IotPatientDeviceDO,I
        }
        boolean bool = true;
        try {
            elastricSearchHelper.delete(ConstantUtils.deviceLocationIndex, ConstantUtils.deviceLocationType, idList);
            elasticSearchHelper.delete(ConstantUtils.deviceLocationIndex, ConstantUtils.deviceLocationType, idList);
        }catch (Exception e){
            bool = false;
        }
@ -247,17 +248,17 @@ public class IotPatientDeviceService extends BaseJpaService<IotPatientDeviceDO,I
     * 设备地址修改,根据Sn或idCard修改地址
     * @return
     */
    public boolean updateLocationsByIdcardOrSn(String jsonData){
    public boolean updateLocationsByIdcardOrSn(String jsonData) throws IOException {
        List<Map<String,Object>> idList = new ArrayList<>();
        SearchSourceBuilder queryStr = elasticSearchQueryGenerator.getQueryBuilder("",jsonData);
        JestResult esResult = elastricSearchHelper.search(ConstantUtils.deviceLocationIndex,ConstantUtils.deviceLocationType,queryStr.toString());
        JestResult esResult = elasticSearchHelper.search(ConstantUtils.deviceLocationIndex,ConstantUtils.deviceLocationType,queryStr.toString());
        List<LocationDataVO> resultList = getESResultBeanList(esResult);
        for(LocationDataVO locationDataVO : resultList){
            Map<String,Object> map = new HashMap<>();
            map.put("_id",locationDataVO.getId());
            idList.add(map);
        }
        boolean bool = elastricSearchHelper.updateByMap(ConstantUtils.deviceLocationIndex, ConstantUtils.deviceLocationType,idList);
        boolean bool = elasticSearchHelper.updateByMap(ConstantUtils.deviceLocationIndex, ConstantUtils.deviceLocationType,idList);
        return bool;
    }
@ -266,10 +267,10 @@ public class IotPatientDeviceService extends BaseJpaService<IotPatientDeviceDO,I
     * @param jsonData
     * @return
     */
    public int getESCount(String jsonData){
    public int getESCount(String jsonData)throws IOException {
        int count = 0;
        SearchSourceBuilder queryStr = elasticSearchQueryGenerator.getQueryBuilder("",jsonData);
        io.searchbox.core.SearchResult result = elastricSearchHelper.search(ConstantUtils.deviceLocationIndex,ConstantUtils.deviceLocationType,queryStr.toString());
        io.searchbox.core.SearchResult result = elasticSearchHelper.search(ConstantUtils.deviceLocationIndex,ConstantUtils.deviceLocationType,queryStr.toString());
        count = result.getTotal();
        return count;
    }

+ 7 - 13
svr/svr-iot/src/main/java/com/yihu/iot/service/label/FigureLabelSerachService.java

@ -2,8 +2,7 @@ package com.yihu.iot.service.label;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.elasticsearch.jest.ElasticFactory;
import com.yihu.elasticsearch.jest.ElastricSearchHelper;
import com.yihu.elasticsearch.ElasticSearchHelper;
import com.yihu.iot.datainput.util.ConstantUtils;
import com.yihu.iot.service.common.ElasticSearchQueryGenerator;
import io.searchbox.client.JestClient;
@ -17,6 +16,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@ -30,20 +30,18 @@ public class FigureLabelSerachService implements Serializable {
    private Logger logger = LoggerFactory.getLogger(FigureLabelSerachService.class);
    @Autowired
    private ElastricSearchHelper elastricSearchHelper;
    @Autowired
    private ElasticFactory elasticFactory;
    private ElasticSearchHelper elastricSearchHelper;
    @Autowired
    private ElasticSearchQueryGenerator elasticSearchQueryGenerator;
    @Autowired
    private JestClient jestClient;
    /**
     * 查询标签
     * @param list
     */
    public void getFigureLabelByList(List<LocationDataVO> list){
        JestClient jestClient = null;
        try {
            jestClient = this.elasticFactory.getJestClient();
            for (LocationDataVO one:list) {
                JSONArray jsonArray = new JSONArray();
                JSONObject json = new JSONObject();
@ -79,10 +77,6 @@ public class FigureLabelSerachService implements Serializable {
            }
        } catch (Exception var10) {
            var10.printStackTrace();
        } finally {
            if(jestClient != null) {
                jestClient.shutdownClient();
            }
        }
    }
@ -110,7 +104,7 @@ public class FigureLabelSerachService implements Serializable {
     * @param json
     * @return
     */
    public List<FigureLabelDataModelVO> getFigureLabelByIdcard(String json){
    public List<FigureLabelDataModelVO> getFigureLabelByIdcard(String json) throws IOException {
        List<FigureLabelDataModelVO> list = new ArrayList<>();
        if(!json.contains("idcard")){
            logger.error("invalid elasticserach query condition,no parameter [idcard]!");
@ -130,7 +124,7 @@ public class FigureLabelSerachService implements Serializable {
     * @param json
     * @return
     */
    public List<FigureLabelDataModelVO> getFigureLabelByLabel(String json){
    public List<FigureLabelDataModelVO> getFigureLabelByLabel(String json) throws IOException {
        List<FigureLabelDataModelVO> list = new ArrayList<>();
        if(!json.contains("labelType") || !json.contains("labelCode")){
            logger.error("invalid elasticserach query condition,no parameter [labelType] or [labelCode]!");

+ 5 - 15
svr/svr-iot/src/main/resources/application.yml

@ -5,7 +5,6 @@ server:
spring:
  jmx:
    default-domain: svr-iot
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    max-active: 50
@ -23,20 +22,14 @@ spring:
    test-while-idle: true #指明连接是否被空闲连接回收器(如果有)进行检验,如果检测失败,则连接将被从池中去除
    min-evictable-idle-time-millis: 3600000 #连接池中连接,在时间段内一直空闲,被逐出连接池的时间(1000*60*60),以毫秒为单位
    time-between-eviction-runs-millis: 300000 #在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位,一般比minEvictableIdleTimeMillis小
  data:
    elasticsearch: #ElasticsearchProperties
      cluster-name: jkzl #默认即为elasticsearch  集群名
      cluster-nodes: 172.19.103.45:9300,172.19.103.68:9300 #配置es节点信息,逗号分隔,如果没有指定,则启动ClientNode
      cluster-nodes-jest: http://172.19.103.45:9200,http://172.19.103.68:9200  #多个逗号分割
      local: false #是否本地连接
      properties: # Additional properties used to configure the client.
        enable: true
  # JEST (Elasticsearch HTTP client) (JestProperties)
  # Elasticsearch Transport
  elasticsearch:
    cluster-name: jkzl #默认即为elasticsearch  集群名
    cluster-nodes: 172.19.103.45:9300,172.19.103.68:9300 #配置es节点信息,逗号分隔,如果没有指定,则启动ClientNode
    client-transport-sniff: false
    # JEST (Elasticsearch HTTP client) (JestProperties)
    jest:
      uris: http://172.19.103.45:9200,http://172.19.103.68:9200
#      uris: http://172.19.103.68:9200
      connection-timeout: 60000 # Connection timeout in milliseconds.
      multi-threaded: true # Enable connection requests from multiple execution threads.
#      username: # Login user.
@ -74,12 +67,9 @@ fast-dfs:
#  user:
#    name: root
---
spring:
  profiles: jwdev
  datasource:
    url: jdbc:mysql://172.19.103.77:3306/xmiot?useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=true
    username: root

+ 15 - 2
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/controller/rehabilitation/RehabilitationManageController.java

@ -80,7 +80,7 @@ public class RehabilitationManageController {
                                          @RequestParam(value = "executeEndTime", required = true)String executeEndTime,
                                          @ApiParam(name = "planId", value = "计划id", required = true)
                                          @RequestParam(value = "planId", required = true)String planId,
                                          @ApiParam(name = "searchTask", value = "快速查找任务:(1、我的任务,2、随访,3、复诊,4、健康教育)", required = false)
                                          @ApiParam(name = "searchTask", value = "快速查找任务:(1、我的任务,2、健康教育,3、复诊,4、随访)", required = false)
                                          @RequestParam(value = "searchTask", required = false)Integer searchTask,
                                          @ApiParam(name = "status", value = "任务状态(0未完成,1已完成,2已预约)", required = false)
                                          @RequestParam(value = "status", required = false)Integer status,
@ -103,7 +103,7 @@ public class RehabilitationManageController {
                                         @RequestParam(value = "executeEndTime", required = true)String executeEndTime,
                                         @ApiParam(name = "planId", value = "计划id", required = true)
                                         @RequestParam(value = "planId", required = true)String planId,
                                         @ApiParam(name = "searchTask", value = "快速查找任务:(1、我的任务,2、随访,3、复诊,4、健康教育)", required = false)
                                         @ApiParam(name = "searchTask", value = "快速查找任务:(1、我的任务,2、健康教育,3、复诊,4、随访)", required = false)
                                         @RequestParam(value = "searchTask", required = false)Integer searchTask,
                                         @ApiParam(name = "status", value = "任务状态(0未完成,1已完成,2已预约)", required = false)
                                         @RequestParam(value = "status", required = false)Integer status,
@ -333,4 +333,17 @@ public class RehabilitationManageController {
            return ObjEnvelop.getError(e.getMessage());
        }
    }
    @GetMapping(value = SpecialistMapping.rehabilitation.planListByPatient)
    @ApiOperation(value = "康复管理-根据居民获取康复计划")
    public ObjEnvelop planListByPatient(@ApiParam(name = "patientCode", value = "居民code", required = true)
                                   @RequestParam(value = "patientCode", required = true)String patientCode){
        try {
            return rehabilitationManageService.planListByPatient(patientCode);
        }catch (Exception e){
            e.printStackTrace();
            tracer.getCurrentSpan().logEvent(e.getMessage());
            return ObjEnvelop.getError(e.getMessage());
        }
    }
}

+ 1 - 1
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/controller/rehabilitation/RehabilitationPlanController.java

@ -162,7 +162,7 @@ public class RehabilitationPlanController extends EnvelopRestEndpoint {
            }
            String planDetails = array.toString();
            ObjectMapper object = new ObjectMapper();
            object.setDateFormat(new SimpleDateFormat("yyyy-MM-dd hh:mm"));
            object.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm"));
            List<RehabilitationDetailDO> details = object.readValue(planDetails, new TypeReference<List<RehabilitationDetailDO>>(){});
            PatientRehabilitationPlanDO planDO = toEntity(rehabilitationPlan, PatientRehabilitationPlanDO.class);
            planDO = rehabilitationPlanService.createPatientRehabilitationPlan(planDO);

+ 1 - 1
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/dao/rehabilitation/PatientRehabilitationPlanDao.java

@ -19,7 +19,7 @@ public interface PatientRehabilitationPlanDao extends PagingAndSortingRepository
    List<PatientRehabilitationPlanDO> findByPatientAndCreateUser(String patient, String doctor);
    @Query(" select p from PatientRehabilitationPlanDO p where p.patient=?1 order by p.createTime desc ")
    List<PatientRehabilitationPlanDO> findbyPatients(String patientCode);
    List<PatientRehabilitationPlanDO> findByPatients(String patientCode);
    @Query("update PatientRehabilitationPlanDO a set a.status=?1 where a.id =?2 ")
    @Modifying

+ 2 - 0
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/service/SpecialistEvaluateService.java

@ -53,6 +53,7 @@ public class SpecialistEvaluateService extends EnvelopRestEndpoint {
        MixEnvelop<SpecialistEvaluateDO,SpecialistEvaluateDO> envelop = new MixEnvelop<>();
        JSONArray evaluate = jsonObject.getJSONArray("evaluate");
        JSONArray evaluateLabel = jsonObject.getJSONArray("evaluateLabel");
        String patientCode = jsonObject.getString("patient");
        List<SpecialistEvaluateDO> specialistEvaluateDOList = new ArrayList<>();
        List<SpecialistEvaluateLabelDO> specialistEvaluateLabelDOS = new ArrayList<>();
        for (int i = 0;i<evaluate.size();i++){
@ -70,6 +71,7 @@ public class SpecialistEvaluateService extends EnvelopRestEndpoint {
        if (specialistEvaluateDOList != null && specialistEvaluateDOList.size() != 0){
            for (SpecialistEvaluateDO specialistEvaluateDO:specialistEvaluateDOList){
                specialistEvaluateDO.setRelationType(1);
                specialistEvaluateDO.setPatient(patientCode);
                specialistEvaluateDO.setCreateTime(new Date());
                specialistEvaluateDO.setUpdateTime(new Date());
                doctor = specialistEvaluateDO.getDoctor();

+ 10 - 10
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/service/SpecialistHospitalServiceItemService.java

@ -97,27 +97,27 @@ public class SpecialistHospitalServiceItemService extends EnvelopRestEndpoint {
        MixEnvelop<JSONArray,JSONArray> envelop = new MixEnvelop<>();
        String sqlUtil = "";
        if (StringUtils.isNoneBlank(serviceItemName)||serviceItemName != null){
            sqlUtil="and service_item_name LIKE '%"+serviceItemName+"%'";
            sqlUtil=" AND service_item_id IN ( SELECT id FROM wlyy_service_item WHERE 1=1 and title LIKE '%"+serviceItemName+"%')";
        }
        List<HospitalServiceItemDO> hospitalServiceItemDOS1 = new ArrayList<>();
        if (StringUtils.isNoneBlank(hospital)&&hospital.equals(docHospital)){
            String sql1 = "select * from wlyy_hospital_service_item where 1=1 AND hospital = '"+docHospital+"' "+sqlUtil;
            String sql1 = "select * from wlyy_hospital_service_item where 1=1 AND status = 1 AND imediate=1 AND hospital = '"+docHospital+"'"+sqlUtil;
            List<HospitalServiceItemDO> hospitalServiceItemDOList = jdbcTemplate.query(sql1,new BeanPropertyRowMapper(HospitalServiceItemDO.class));
            for (HospitalServiceItemDO hospitalServiceItemDO:hospitalServiceItemDOList){
                hospitalServiceItemDO.setFlag(3);
                hospitalServiceItemDOS1.add(hospitalServiceItemDO);
            }
        }else if (hospital == null || hospital == ""){
            String sql1 = "select * from wlyy_hospital_service_item where 1=1 AND hospital = '"+docHospital+"' "+sqlUtil;
            String sql1 = "select * from wlyy_hospital_service_item where 1=1 AND status = 1 AND imediate=1 AND hospital = '"+docHospital+"'"+sqlUtil;
            List<HospitalServiceItemDO> hospitalServiceItemDOList = jdbcTemplate.query(sql1,new BeanPropertyRowMapper(HospitalServiceItemDO.class));
            for (HospitalServiceItemDO hospitalServiceItemDO:hospitalServiceItemDOList){
                hospitalServiceItemDO.setFlag(2);
                hospitalServiceItemDOS1.add(hospitalServiceItemDO);
            }
        }else{
            String sql = "select * from wlyy_hospital_service_item where 1=1 AND hospital = '"+hospital+"' ";
            String sql = "select * from wlyy_hospital_service_item where 1=1 AND status = 1 AND imediate=1 AND hospital = '"+hospital+"' "+sqlUtil;
            List<HospitalServiceItemDO> hospitalServiceItemDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(HospitalServiceItemDO.class));
            String sql1 = "select * from wlyy_hospital_service_item where 1=1 AND hospital = '"+docHospital+"' "+sqlUtil;
            String sql1 = "select * from wlyy_hospital_service_item where 1=1 AND status = 1 AND imediate=1 AND hospital = '"+docHospital+"' "+sqlUtil;
            List<HospitalServiceItemDO> hospitalServiceItemDOList = jdbcTemplate.query(sql1,new BeanPropertyRowMapper(HospitalServiceItemDO.class));
            for (HospitalServiceItemDO hospitalServiceItemDO:hospitalServiceItemDOList){
                boolean flag = false;
@ -139,22 +139,22 @@ public class SpecialistHospitalServiceItemService extends EnvelopRestEndpoint {
                        }
                    }else{
                        if (isTrue == false){
                            hospitalServiceItemDO1.setFlag(2);
                            hospitalServiceItemDO1.setFlag(1);
                            hospitalServiceItemDOS1.add(hospitalServiceItemDO1);
                        }
                    }
                }
                if (flag==false){
                    boolean isTure1 = false;
                    boolean isTrue1 = false;
                    if (hospitalServiceItemDOS1 != null && hospitalServiceItemDOS1.size() != 0){
                        for (HospitalServiceItemDO hospitalServiceItemDO2:hospitalServiceItemDOS1){
                            if (hospitalServiceItemDO.getServiceItemId().equals(hospitalServiceItemDO2.getServiceItemId())){
                                isTure1 = true;
                                isTrue1 = true;
                            }
                        }
                    }
                    if (isTure1 == false){
                        hospitalServiceItemDO.setFlag(1);
                    if (isTrue1 == false){
                        hospitalServiceItemDO.setFlag(2);
                        hospitalServiceItemDOS1.add(hospitalServiceItemDO);
                    }
                }

+ 1 - 3
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/service/SpecialistServiceItemService.java

@ -165,7 +165,7 @@ public class SpecialistServiceItemService {
     */
    public MixEnvelop<SpecialistServiceItemDO,SpecialistServiceItemDO> selectByHospital(String hospital){
        MixEnvelop<SpecialistServiceItemDO,SpecialistServiceItemDO> envelop = new MixEnvelop<>();
        String sql = "select * from wlyy_service_item where status = 1";
        String sql = "select * from wlyy_service_item where status = 1 AND imediate = 1 ";
        List<SpecialistServiceItemDO> specialistServiceItemDOS = jdbcTemplate.query(sql,new BeanPropertyRowMapper(SpecialistServiceItemDO.class));
        List<SpecialistServiceItemDO> specialistServiceItemDOList = new ArrayList<>();
        for (int i =0;i<specialistServiceItemDOS.size();i++){
@ -181,9 +181,7 @@ public class SpecialistServiceItemService {
                    specialistServiceItemDOList.add(specialistServiceItemDO);
                }
            }else {
                if (hospitalServiceItemDOS.size() == 0 || hospitalServiceItemDOS == null){
                    specialistServiceItemDOList.add(specialistServiceItemDO);
                }
            }
        }
        envelop.setDetailModelList(specialistServiceItemDOList);

+ 167 - 212
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/service/rehabilitation/RehabilitationManageService.java

@ -25,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -72,15 +73,11 @@ public class RehabilitationManageService {
//            leftSql += " left join "+basedb+".wlyy_patient_disease_server s on p.patient=s.patient and s.del=1 and s.disease ='"+diseaseCode+"'" ;
//        }
        if(doctorType==2){//家医是根据签约关系过滤
            leftSql+=" and f.doctor='"+doctorCode+"' ";
            leftSql+=" and (f.doctor='"+doctorCode+"' or f.doctor_health='"+doctorCode+"') ";
        }
        String sql = " select p.*,f.idcard,f.hospital_name from wlyy_specialist.wlyy_patient_rehabilitation_plan p  " +leftSql+
                " where 1=1 " ;
        if(doctorType==1){//专科医生是根据计划的创建者字段过滤
            sql+=" and (p.create_user in (select r.doctor assistant from " +
                    " wlyy_specialist.wlyy_specialist_patient_relation r where r.health_assistant ='"+doctorCode+"') " +
                    " or p.create_user='"+doctorCode+"') ";
        }
        if(planType!=null){
            sql += " and p.plan_type="+planType;
        }
@ -99,7 +96,7 @@ public class RehabilitationManageService {
        if(todaybacklog!=null&&todaybacklog==1){
            condition += " and execute_time>='"+todayStart+"' and execute_time<='"+todayEnd+"'";
        }
        finalSql =" select DISTINCT b.* from (select DISTINCT plan_id from wlyy_specialist.wlyy_rehabilitation_plan_detail where  1=1 "+condition+") a " +
        finalSql =" select DISTINCT b.* from (select  plan_id,doctor from wlyy_specialist.wlyy_rehabilitation_plan_detail where  1=1 "+condition+") a " +
                " JOIN ("+sql+") b on a.plan_id=b.id ";
//        if(todaybacklog!=null&&todaybacklog==1){
//            finalSql = " select DISTINCT b.* from (select DISTINCT plan_id from wlyy_specialist.wlyy_rehabilitation_plan_detail where execute_time>='"+todayStart+"' and execute_time<='"+todayEnd+"') a "+
@ -107,6 +104,12 @@ public class RehabilitationManageService {
//        }else{
//            finalSql = " select b.* from ("+sql+") b ";
//        }
        if(doctorType==1){//专科医生是根据计划的创建者字段过滤
//            sql+=" and (p.create_user in (select r.doctor assistant from " +
//                    " wlyy_specialist.wlyy_specialist_patient_relation r where r.health_assistant ='"+doctorCode+"') " +
//                    " or p.create_user='"+doctorCode+"') ";
            finalSql += " where  b.create_user = '"+doctorCode+"' or a.doctor ='"+doctorCode+"'";
        }
        List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(finalSql);
        int count = 0;
        if(rstotal!=null&&rstotal.size()>0&&rstotal.get(0).get("id")!=null){
@ -127,7 +130,6 @@ public class RehabilitationManageService {
                resultMap.put("patientName",one.get("name"));
                resultMap.put("patientCode",one.get("patient"));
                resultMap.put("id",one.get("id"));
                resultMap.put("patientCode",one.get("patient"));
                resultMap.put("status",one.get("status"));//康复计划状态
                //健康情况
                resultMap.put("healthyCondition","康复期");
@ -140,6 +142,7 @@ public class RehabilitationManageService {
                    case 3:planTypeName="(转)转家庭病床" ;break;
                }
                resultMap.put("planTypeName",planTypeName);
                resultMap.put("planCreateUser",one.get("create_user"));
                //今日待办(即今日全部的项目)
                Date beginTime = DateUtil.strToDateLong(DateUtil.getStringDateShort()+ " "+"00:00:00");
                Date endTime = DateUtil.strToDateLong(DateUtil.getStringDateShort()+ " "+"23:59:59");
@ -166,189 +169,110 @@ public class RehabilitationManageService {
    }
//    public MixEnvelop<Map<String,Object>, Map<String,Object>> findRehabilitationPlanDetailList(String doctorCode, String diseaseCode, Integer planType,Integer todaybacklog,String patientCode,Integer page, Integer pageSize) throws Exception{
//        List<Map<String,Object>> resultList = new ArrayList<>();
//        String leftSql =" left join "+basedb+".wlyy_sign_family f on f.patient=p.patient ";
//        if(StringUtils.isNotEmpty(diseaseCode)){
//            leftSql += " left join "+basedb+".wlyy_patient_disease_server s on p.patient=s.patient and s.del=1 and s.disease ='"+diseaseCode+"'" ;
//        }
//        String sql = " select p.*,f.idcard,f.hospital_name,f.admin_team_code from wlyy_specialist.wlyy_patient_rehabilitation_plan p  " +leftSql+
//                " where (p.create_user in (select r.health_assistant assistant from " +
//                " wlyy_specialist.wlyy_specialist_patient_relation r where r.health_assistant is not null) " +
//                " or p.create_user='"+doctorCode+"') and p.patient='"+patientCode+"'" ;
//        if(planType!=null){
//            sql += " and p.plan_type="+planType;
//        }
//        String finalSql = "";
//        if(todaybacklog!=null&&todaybacklog==1){
//            finalSql = " select b.* from (select DISTINCT program_id wlyy_rehabilitation_plan_detail where execute_time>='' and execute_time<='') a "+
//                    "LEFT JOIN ("+sql+") b on a.program_id=b.id";
//        }else{
//            finalSql = " select b.* from ("+sql+") b ";
//        }
//        List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(finalSql);
//        int count = 0;
//        if(rstotal!=null&&rstotal.size()>0){
//            count = rstotal.size();
//        }
//        finalSql += " ORDER BY b.create_time DESC LIMIT "+(page-1)*pageSize+","+pageSize;
//        List<Map<String,Object>> patientRehabilitationPlanDOList = jdbcTemplate.queryForList(finalSql);
//        for(Map<String,Object> one:patientRehabilitationPlanDOList){
//            Map<String,Object> resultMap = new HashMap<>();
//            Integer age = IdCardUtil.getAgeForIdcard(one.get("idcard")+"");
//            String sex = IdCardUtil.getSexForIdcard_new(one.get("idcard")+"");
//            resultMap.put("age",age);
//            resultMap.put("hospitalName",one.get("hospital_name"));
//            resultMap.put("sex","1".equals(sex)?"男":("2".equals(sex)?"女":"未知"));
//            resultMap.put("patientName",one.get("name"));
//
//            //疾病类型
//            String diseaseSql = " select s.* from "+basedb+".wlyy_patient_disease_server s where s.del=1 and s.patient='"+patientCode+"' ";
//            List<Map<String,Object>> diseaseList = jdbcTemplate.queryForList(diseaseSql);
//            List<String> disease = new ArrayList<>();
//            for(Map<String,Object> one2:diseaseList){
//                disease.add(one2.get("disease_name")+"");
//            }
//            resultMap.put("diseaseList",disease);
//
//            //家庭医生
//            Integer adminTeamCode = Integer.valueOf(one.get("admin_team_code").toString());
//            String adminTeamSql = " select t.*,h.name as hospitalName from "+basedb+".wlyy_admin_team t left join "+basedb+".dm_hospital h on h.code=t.org_code where t.available = 1 and t.id="+adminTeamCode;
//            List<Map<String,Object>> adminTeamList = jdbcTemplate.queryForList(adminTeamSql);
//            String teanName = adminTeamList.size()>0?adminTeamList.get(0).get("name").toString():"";
//            String hospitalName = adminTeamList.size()>0?adminTeamList.get(0).get("hospitalName").toString():"";
//
//            resultMap.put("teanName",teanName);
//            resultMap.put("teanHospitalName",hospitalName);
//
//            //专科医生
//            String specialistSql = " select * from wlyy_specialist.wlyy_specialist_patient_relation where doctor='"+doctorCode+
//                    "' and patient ='"+patientCode+"' and status in ('1','0') and sign_status ='1' " ;
//            List<Map<String,Object>> specialistList = jdbcTemplate.queryForList(specialistSql);
//            Integer specialistAdminTeamCode = specialistList.size()>0?(Integer)specialistList.get(0).get("team_code"):0;
//            String specialistAdminTeamSql = " select t.*,h.name as hospitalName from "+basedb+".wlyy_admin_team t left join "+basedb+".dm_hospital h on h.code=t.org_code where t.available = 1 and t.id="+adminTeamCode;
//            List<Map<String,Object>> specialistAdminTeamList = jdbcTemplate.queryForList(specialistAdminTeamSql);
//            String specialistTeanName = specialistAdminTeamList.size()>0?specialistAdminTeamList.get(0).get("name").toString():"";
//            String specialistHospitalName = specialistAdminTeamList.size()>0?specialistAdminTeamList.get(0).get("hospitalName").toString():"";
//            resultMap.put("specialistTeanName",specialistTeanName);
//            resultMap.put("specialistHospitalName",specialistHospitalName);
//
//            //安排类型
//            String planTypeName = null;
//            Integer planTypeTemp = (Integer)one.get("plan_type");
//            switch (planTypeTemp){
//                case 1:planTypeName="康复计划" ;break;
//                case 2:planTypeName="(转)社区医院" ;break;
//                case 3:planTypeName="(转)转家庭病床" ;break;
//            }
//
//            //服务项列表
//            String planDetailSql = "select DISTINCT d.service_item_id from wlyy_rehabilitation_plan_detail d  where d.program_id ='"+one.get("id")+"'";
//            List<Map<String,Object>> planDetailList = jdbcTemplate.queryForList(planDetailSql);
//            List<Map<String,Object>> planDetail = new ArrayList<>();
//            for(Map<String,Object> one3:planDetailList){
//                Map<String,Object> temp = new HashMap<>();
//                temp.put("planTypeName",planTypeName);
//                temp.put("status",one3.get("status"));
//                one3.get("status");
//            }
//        }
//
//        return MixEnvelop.getSuccessListWithPage(SpecialistMapping.api_success,resultList,page,pageSize,Long.valueOf(count));
//    }
    /**
     * 康复管理更多计划
     * @param doctorCode
     * @param currentDoctorCode
     * @param patientCode
     * @return
     * @throws Exception
     */
    public ObjEnvelop findRehabilitationPlanDetailList(String doctorCode,String patientCode) throws Exception{
        Map<String,Object> resultMap = new HashMap<>();
        resultMap.put("patientCode",patientCode);//居民code
        //专科医生
        String specialistRelationSql = "select r.*,t.name as teamName,h.name as specialistHospitalName from wlyy_specialist.wlyy_specialist_patient_relation r left join "+basedb+".wlyy_admin_team t on r.team_code=t.id left join "+basedb+".dm_hospital h on t.org_code=h.code where r.sign_status ='1' and r.status in('0','1') and r.patient='"+patientCode+"' and r.doctor='"+doctorCode+"'";
        List<Map<String,Object>> specialistRelationList = jdbcTemplate.queryForList(specialistRelationSql);
        Map<String,Object> specialistMap = specialistRelationList.get(0);
        resultMap.put("specialistAdminTeamName",specialistMap.get("teamName"));
        resultMap.put("specialistHospitalName",specialistMap.get("specialistHospitalName"));//专科医生所在医院
        String specialistFinishItemSql = "";
        Integer specialistUnfinishCount = rehabilitationDetailDao.unfinishItemByDoctor(doctorCode,patientCode,1);
        Integer specialistFinishCount = rehabilitationDetailDao.findItemByDoctor(doctorCode,patientCode);
        Integer specialistServiceCount = rehabilitationDetailDao.completeServiceByDoctor(doctorCode,patientCode,1);
        resultMap.put("specialistFinishItemCount",specialistFinishCount-specialistUnfinishCount);//完成项目
        resultMap.put("specialistServiceRecordCount",specialistServiceCount);//服务次数
        //家庭医生(包括全科医生、健管师)
        String signFamilySql = "SELECT f.*,t.name as teamName FROM "+basedb+".wlyy_sign_family f LEFT JOIN "+basedb+".wlyy_admin_team t on f.admin_team_code=t.id where f.status =1 and f.expenses_status='1' and f.patient='"+patientCode+"'";
        List<Map<String,Object>> signFamilyList = jdbcTemplate.queryForList(signFamilySql);
        Map<String,Object> signFamilyMap = signFamilyList.get(0);
        resultMap.put("signFamilyAdminTeamName",signFamilyMap.get("teamName"));
        resultMap.put("familyHospitalName",signFamilyMap.get("hospital_name"));//家庭医生所在医院
        Integer familyUnfinishCount = rehabilitationDetailDao.unfinishItemByDoctor(signFamilyMap.get("doctor")+"",signFamilyMap.get("doctor_health")+"",patientCode,1);
        Integer familyFinishCount = rehabilitationDetailDao.findItemByDoctor(signFamilyMap.get("doctor")+"",signFamilyMap.get("doctor_health")+"",patientCode);
        Integer familyServiceCount = rehabilitationDetailDao.completeServiceByDoctor(signFamilyMap.get("doctor")+"",signFamilyMap.get("doctor_health")+"",patientCode,1);
        resultMap.put("signFamilyFinishItemCount",familyFinishCount-familyUnfinishCount);//完成项目
        resultMap.put("signFamilyServiceRecordCount",familyServiceCount);//服务次数
    public ObjEnvelop findRehabilitationPlanDetailList(String currentDoctorCode,String patientCode) throws Exception{
        String sql = " select DISTINCT r.* from wlyy_specialist.wlyy_specialist_patient_relation r join wlyy_patient_rehabilitation_plan p on r.patient=p.patient where r.sign_status ='1' and r.status in('0','1') and r.patient='"+patientCode+"' ";
        List<Map<String,Object>> specialistPatientRelationList = jdbcTemplate.queryForList(sql);
        List<Map<String,Object>> resultList = new ArrayList<>();
        for(Map<String,Object> temp: specialistPatientRelationList){
            String doctorCode = temp.get("doctor")+"";
            Map<String,Object> resultMap = new HashMap<>();
            Integer isOperator = 0;
            resultMap.put("patientCode",patientCode);//居民code
            //专科医生
            String specialistRelationSql = "select r.*,t.name as teamName,h.name as specialistHospitalName from wlyy_specialist.wlyy_specialist_patient_relation r left join "+basedb+".wlyy_admin_team t on r.team_code=t.id left join "+basedb+".dm_hospital h on t.org_code=h.code where r.sign_status ='1' and r.status in('0','1') and r.patient='"+patientCode+"' and r.doctor='"+doctorCode+"'";
            List<Map<String,Object>> specialistRelationList = jdbcTemplate.queryForList(specialistRelationSql);
            Map<String,Object> specialistMap = specialistRelationList.get(0);
            resultMap.put("specialistAdminTeamName",specialistMap.get("teamName"));
            resultMap.put("specialistHospitalName",specialistMap.get("specialistHospitalName"));//专科医生所在医院
            Integer specialistUnfinishCount = rehabilitationDetailDao.unfinishItemByDoctor(doctorCode,patientCode,1);
            Integer specialistFinishCount = rehabilitationDetailDao.findItemByDoctor(doctorCode,patientCode);
            Integer specialistServiceCount = rehabilitationDetailDao.completeServiceByDoctor(doctorCode,patientCode,1);
            resultMap.put("specialistFinishItemCount",specialistFinishCount-specialistUnfinishCount);//完成项目
            resultMap.put("specialistServiceRecordCount",specialistServiceCount);//服务次数
        //基础信息
        resultMap.put("hospitalName",signFamilyMap.get("hospital_name"));
        Integer age = IdCardUtil.getAgeForIdcard(signFamilyMap.get("idcard")+"");
        String sex = IdCardUtil.getSexForIdcard_new(signFamilyMap.get("idcard")+"");
        resultMap.put("age",age);
        resultMap.put("sex","1".equals(sex)?"男":("2".equals(sex)?"女":"未知"));
        resultMap.put("patientName",signFamilyMap.get("name"));
        //疾病类型
        String diseaseSql = " select s.* from "+basedb+".wlyy_patient_disease_server s where s.del=1 and s.patient='"+patientCode+"' and s.specialist_relation_code='"+specialistMap.get("id")+"' ";
        List<Map<String,Object>> diseaseList = jdbcTemplate.queryForList(diseaseSql);
        List<String> disease = new ArrayList<>();
        for(Map<String,Object> one2:diseaseList){
            disease.add(one2.get("disease_name")+"");
        }
        resultMap.put("diseaseList",disease);
            //家庭医生(包括全科医生、健管师)
            String signFamilySql = "SELECT f.*,t.name as teamName FROM "+basedb+".wlyy_sign_family f LEFT JOIN "+basedb+".wlyy_admin_team t on f.admin_team_code=t.id where f.status =1 and f.expenses_status='1' and f.patient='"+patientCode+"'";
            List<Map<String,Object>> signFamilyList = jdbcTemplate.queryForList(signFamilySql);
            Map<String,Object> signFamilyMap = signFamilyList.get(0);
            resultMap.put("signFamilyAdminTeamName",signFamilyMap.get("teamName"));
            resultMap.put("familyHospitalName",signFamilyMap.get("hospital_name"));//家庭医生所在医院
            Integer familyUnfinishCount = rehabilitationDetailDao.unfinishItemByDoctor(signFamilyMap.get("doctor")+"",signFamilyMap.get("doctor_health")+"",patientCode,1);
            Integer familyFinishCount = rehabilitationDetailDao.findItemByDoctor(signFamilyMap.get("doctor")+"",signFamilyMap.get("doctor_health")+"",patientCode);
            Integer familyServiceCount = rehabilitationDetailDao.completeServiceByDoctor(signFamilyMap.get("doctor")+"",signFamilyMap.get("doctor_health")+"",patientCode,1);
            resultMap.put("signFamilyFinishItemCount",familyFinishCount-familyUnfinishCount);//完成项目
            resultMap.put("signFamilyServiceRecordCount",familyServiceCount);//服务次数
        //计划列表
        List<PatientRehabilitationPlanDO> list = patientRehabilitationPlanDao.findByPatientAndCreateUser(patientCode,doctorCode);
        List<Map<String,Object>> rehabilitationPlanList = new ArrayList<>();
        for(PatientRehabilitationPlanDO one:list){
            Map<String,Object> planMap = new HashMap<>();
            planMap.put("planId",one.getId());
            //安排类型
            String planTypeName = null;
            Integer planTypeTemp = one.getPlanType();
            switch (planTypeTemp){
                case 1:planTypeName="康复计划" ;break;
                case 2:planTypeName="(转)社区医院" ;break;
                case 3:planTypeName="(转)转家庭病床" ;break;
            //基础信息
            resultMap.put("hospitalName",signFamilyMap.get("hospital_name"));
            Integer age = IdCardUtil.getAgeForIdcard(signFamilyMap.get("idcard")+"");
            String sex = IdCardUtil.getSexForIdcard_new(signFamilyMap.get("idcard")+"");
            resultMap.put("age",age);
            resultMap.put("sex","1".equals(sex)?"男":("2".equals(sex)?"女":"未知"));
            resultMap.put("patientName",signFamilyMap.get("name"));
            //疾病类型
            String diseaseSql = " select s.* from "+basedb+".wlyy_patient_disease_server s where s.del=1 and s.patient='"+patientCode+"' and s.specialist_relation_code='"+specialistMap.get("id")+"' ";
            List<Map<String,Object>> diseaseList = jdbcTemplate.queryForList(diseaseSql);
            List<String> disease = new ArrayList<>();
            for(Map<String,Object> one2:diseaseList){
                disease.add(one2.get("disease_name")+"");
            }
            planMap.put("planTypeName",planTypeName);
            planMap.put("status",one.getStatus());//0已中止,1进行中,2已完成
            resultMap.put("diseaseList",disease);
            //状态(0未完成,1已完成,2已预约)
            //今日待办
            Date beginTime = DateUtil.strToDateLong(DateUtil.getStringDateShort()+ " "+"00:00:00");
            Date endTime = DateUtil.strToDateLong(DateUtil.getStringDateShort()+ " "+"23:59:59");
            Integer todayBacklogCount = rehabilitationDetailDao.todayBacklogCount(one.getId(),beginTime,endTime);
            planMap.put("todayBacklogCount",todayBacklogCount);
            //已完成
            Integer finishedCount = rehabilitationDetailDao.completenessCount(1,one.getId(),beginTime,endTime);
            planMap.put("finishedCount",finishedCount);//已完成
            //未完成
            Integer notstartedCount = rehabilitationDetailDao.completenessCount(0,one.getId(),beginTime,endTime);//未完成
            Integer underwayCount = rehabilitationDetailDao.completenessCount(2,one.getId(),beginTime,endTime);//已预约
            Integer unfinishedCount = notstartedCount+underwayCount;
            planMap.put("unfinishedCount",unfinishedCount);//未完成
            //完成度(已完成/(已完成+未完成))
            Integer allFinishCount = rehabilitationDetailDao.findByStatusAndPlanId(1,one.getId());
            Integer allCount = rehabilitationDetailDao.findAllByPlanId(one.getId());
            planMap.put("allCount",allCount);//总数
            planMap.put("allFinishCount",allFinishCount);//全部已完成数
            rehabilitationPlanList.add(planMap);
            //计划列表
            List<PatientRehabilitationPlanDO> list = patientRehabilitationPlanDao.findByPatientAndCreateUser(patientCode,doctorCode);
            List<Map<String,Object>> rehabilitationPlanList = new ArrayList<>();
            for(PatientRehabilitationPlanDO one:list){
                Map<String,Object> planMap = new HashMap<>();
                planMap.put("planId",one.getId());
                //安排类型
                String planTypeName = null;
                Integer planTypeTemp = one.getPlanType();
                switch (planTypeTemp){
                    case 1:planTypeName="康复计划" ;break;
                    case 2:planTypeName="(转)社区医院" ;break;
                    case 3:planTypeName="(转)转家庭病床" ;break;
                }
                planMap.put("planTypeName",planTypeName);
                planMap.put("status",one.getStatus());//0已中止,1进行中,2已完成
                if(currentDoctorCode.equals(doctorCode)){
                    isOperator = 1;
                }
                planMap.put("isOperator",isOperator);
                //状态(0未完成,1已完成,2已预约)
                //今日待办
                Date beginTime = DateUtil.strToDateLong(DateUtil.getStringDateShort()+ " "+"00:00:00");
                Date endTime = DateUtil.strToDateLong(DateUtil.getStringDateShort()+ " "+"23:59:59");
                Integer todayBacklogCount = rehabilitationDetailDao.todayBacklogCount(one.getId(),beginTime,endTime);
                planMap.put("todayBacklogCount",todayBacklogCount);
                //已完成
                Integer finishedCount = rehabilitationDetailDao.completenessCount(1,one.getId(),beginTime,endTime);
                planMap.put("finishedCount",finishedCount);//已完成
                //未完成
                Integer notstartedCount = rehabilitationDetailDao.completenessCount(0,one.getId(),beginTime,endTime);//未完成
                Integer underwayCount = rehabilitationDetailDao.completenessCount(2,one.getId(),beginTime,endTime);//已预约
                Integer unfinishedCount = notstartedCount+underwayCount;
                planMap.put("unfinishedCount",unfinishedCount);//未完成
                //完成度(已完成/(已完成+未完成))
                Integer allFinishCount = rehabilitationDetailDao.findByStatusAndPlanId(1,one.getId());
                Integer allCount = rehabilitationDetailDao.findAllByPlanId(one.getId());
                planMap.put("allCount",allCount);//总数
                planMap.put("allFinishCount",allFinishCount);//全部已完成数
                rehabilitationPlanList.add(planMap);
            }
            resultMap.put("rehabilitationPlanList",rehabilitationPlanList);
            resultList.add(resultMap);
        }
        resultMap.put("rehabilitationPlanList",rehabilitationPlanList);
        return ObjEnvelop.getSuccess(SpecialistMapping.api_success,resultMap);
        return ObjEnvelop.getSuccess(SpecialistMapping.api_success,resultList);
    }
@ -360,24 +284,21 @@ public class RehabilitationManageService {
     * @param doctorCode 登陆医生
     */
    public ObjEnvelop calendarPlanDetail(String executeStartTime,String executeEndTime,String planId,Integer searchTask,Integer status,String doctorCode) throws Exception{
//        String executeStartTime = DateUtil.getFristDayOfMonth()+" "+"00:00:00";
//        String executeEndTime = DateUtil.getLastDayOfMonth()+" "+"23:59:59";
        String sql = " select d.* from wlyy_specialist.wlyy_rehabilitation_plan_detail d " +
                " LEFT JOIN wlyy_specialist.wlyy_hospital_service_item h on d.hospital_service_item_id = h.id "+
                " LEFT JOIN wlyy_service_item i on i.id = h.service_item_id " +
                " where d.execute_time>='"+executeStartTime+"' and d.execute_time<='"+executeEndTime+"' and d.plan_id='"+planId+"' " ;
        if(searchTask!=null){
            if(searchTask==1){
//                if(role==1){
//                    sql+="and d.type='"+role+"' " ;
//                }
                sql+=" and d.doctor='"+doctorCode+"' " ;
            }else{
                sql+=" and i.type='"+searchTask+"' " ;
            }else if(searchTask==2||searchTask==4){
                sql+=" and i.type="+searchTask+" " ;
            }else if(searchTask==3){
                sql+=" and i.reserve="+searchTask+" " ;
            }
        }
        if(status!=null){
            sql+= "and d.status="+status;
            sql+= " and d.status="+status;
        }
        List<Map<String,Object>> rehabilitationDetailList = jdbcTemplate.queryForList(sql);
@ -487,8 +408,10 @@ public class RehabilitationManageService {
        if(searchTask!=null){
            if(searchTask==1){
                sql+="and d.doctor='"+doctorCode+"' ";
            }else{
                sql+=" and i.type='"+searchTask+"' " ;
            }else if(searchTask==2||searchTask==4){
                sql+=" and i.type="+searchTask+" " ;
            }else if(searchTask==3){
                sql+=" and i.reserve="+searchTask+" " ;
            }
        }
        if(status!=null){
@ -512,8 +435,8 @@ public class RehabilitationManageService {
            planDetailList +=",'"+one+"'";
        }
        String planDetailResult = StringUtils.isNotEmpty(planDetailList)?planDetailList.substring(1):"";
        String sql = "select i.title,i.content,i.type as itemType,i.reserve,d.id,d.execute_time,d.hospital_name,d.status,d.type as detailType,d.expense,d.doctor as specialistDoctor," +
                " d.doctor_name as specialistDoctorName,p.patient ,p.create_user ,p.create_user_name " +
        String sql = "select i.title,i.content,i.type as itemType,i.reserve,d.id,d.execute_time,d.hospital_name,d.status,d.type as detailType,d.expense,d.doctor as executeDoctor," +
                " d.doctor_name as executeDoctorName,p.patient ,p.create_user as createDoctor,p.create_user_name as createDoctorName, p.status as planStatus  " +
                " from wlyy_specialist.wlyy_rehabilitation_plan_detail d " +
                " LEFT JOIN wlyy_specialist.wlyy_hospital_service_item h on d.hospital_service_item_id = h.id "+
                " LEFT JOIN wlyy_specialist.wlyy_service_item i on i.id = h.service_item_id " +
@ -525,19 +448,21 @@ public class RehabilitationManageService {
        List<Map<String,Object>> resultList = new ArrayList<>();
        for(Map<String,Object> one:serviceItemList){
            Map<String,Object> resultMap = new HashMap<>();
            List<String> executeDoctorList = new ArrayList<>();
            Integer isMyTask = 0;
            if(StringUtils.isNotEmpty(doctorCode)&&doctorCode.equals(one.get("specialistDoctor")+"")){
            if(StringUtils.isNotEmpty(doctorCode)&&doctorCode.equals(one.get("executeDoctor")+"")){
                isMyTask=1;
            }
            resultMap.put("isMyTask",isMyTask);//0不是自己的任务,1是自己的任务
            if(!(one.get("specialistDoctor")+"").equals((one.get("create_user")+""))){
                executeDoctorList.add(one.get("create_user_name")+"");
            }
            executeDoctorList.add(one.get("specialistDoctorName")+"");
            resultMap.put("specialistDoctorCode",one.get("create_user")+"");//专科医生code
            resultMap.put("specialistDoctorName",one.get("create_user_name")+"");//专科医生名字
            resultMap.put("executeDoctorList",executeDoctorList);
//            if(!(one.get("specialistDoctor")+"").equals((one.get("create_user")+""))){
//                executeDoctorList.add(one.get("create_user_name")+"");
//            }
            List<String> executeDoctorList = new ArrayList<>();
            executeDoctorList.add(one.get("executeDoctorName")+"");
            resultMap.put("executeDoctorList",executeDoctorList);//执行医生名称列表
            resultMap.put("executeDoctorCode",one.get("executeDoctor")+"");//执行医生code
            resultMap.put("executeDoctorName",one.get("executeDoctorName")+"");//执行医生code
            resultMap.put("specialistDoctorCode",one.get("createDoctor")+"");//创建人(专科)医生code
            resultMap.put("specialistDoctorName",one.get("createDoctorName")+"");//创建人(专科)医生名字
            resultMap.put("title",one.get("title"));//项目标题
            resultMap.put("planDetaiId",one.get("id"));//计划服务项目id
            resultMap.put("shortExecuteTime",DateUtil.dateToStr((Date) one.get("execute_time"),DateUtil.HH_MM));//项目标题
@ -546,6 +471,7 @@ public class RehabilitationManageService {
            resultMap.put("executeTime",one.get("execute_time"));//执行时间
            resultMap.put("expense",one.get("expense"));//收费
            resultMap.put("reserve",one.get("reserve"));//是否需要预约(1预约、0不预约)
            resultMap.put("planStatus",one.get("planStatus"));//计划的状态
            Integer status = Integer.valueOf(one.get("status").toString());//状态(0未完成,1已完成,2已预约)
            String statusName = "";
            switch (status){
@ -593,8 +519,8 @@ public class RehabilitationManageService {
     *
     */
    public ObjEnvelop serviceItem(String planDetailId,String doctorCode) throws Exception{
        String sql = "select i.title,i.content,i.type as itemType,i.reserve,d.id,d.execute_time,d.hospital_name,d.status,d.type,d.expense,d.doctor as specialistDoctor, " +
                " d.doctor_name as specialistDoctorName,p.patient ,p.name as patientName,p.create_user ,p.create_user_name " +
        String sql = "select i.title,i.content,i.type as itemType,i.reserve,d.id,d.execute_time,d.hospital_name,d.status,d.type,d.expense,d.doctor as executeDoctor, " +
                " d.doctor_name as executeDoctorName,p.patient ,p.name as patientName,p.create_user as createDoctor,p.create_user_name as createDoctorName, p.status as planStatus" +
                " from wlyy_specialist.wlyy_rehabilitation_plan_detail d " +
                " LEFT JOIN wlyy_specialist.wlyy_hospital_service_item h on d.hospital_service_item_id = h.id "+
                " LEFT JOIN wlyy_specialist.wlyy_service_item i on i.id = h.service_item_id " +
@ -605,17 +531,20 @@ public class RehabilitationManageService {
        Map<String,Object> resultMap = new HashMap<>();
        List<String> executeDoctorList = new ArrayList<>();
        Integer isMyTask = 0;
        if(StringUtils.isNotEmpty(doctorCode)&&doctorCode.equals(one.get("specialistDoctor")+"")){
        //判断登陆者和执行医生是不是同一个人
        if(StringUtils.isNotEmpty(doctorCode)&&doctorCode.equals(one.get("executeDoctor")+"")){
            isMyTask=1;
        }
        resultMap.put("isMyTask",isMyTask);//0不是自己的任务,1是自己的任务
        if(!(one.get("specialistDoctor")+"").equals((one.get("create_user")+""))){
            executeDoctorList.add(one.get("create_user_name")+"");
        }
        executeDoctorList.add(one.get("specialistDoctorName")+"");
        resultMap.put("executeDoctorList",executeDoctorList);
        resultMap.put("specialistDoctorCode",one.get("create_user")+"");//专科医生code
        resultMap.put("specialistDoctorName",one.get("create_user_name")+"");//专科医生名字
//        if(!(one.get("specialistDoctor")+"").equals((one.get("create_user")+""))){
//            executeDoctorList.add(one.get("create_user_name")+"");
//        }
        executeDoctorList.add(one.get("executeDoctorName")+"");
        resultMap.put("executeDoctorList",executeDoctorList);//执行医生名称列表
        resultMap.put("executeDoctorCode",one.get("executeDoctor")+"");//执行医生code
        resultMap.put("executeDoctorName",one.get("executeDoctorName")+"");//执行医生code
        resultMap.put("specialistDoctorCode",one.get("createDoctor")+"");//创建人(专科)医生code
        resultMap.put("specialistDoctorName",one.get("createDoctorName")+"");//创建人(专科)医生名字
        resultMap.put("title",one.get("title"));//项目标题
        resultMap.put("shortExecuteTime",DateUtil.dateToStr((Date) one.get("execute_time"),DateUtil.HH_MM));//项目标题
        resultMap.put("content",one.get("content"));//项目内容
@ -623,6 +552,7 @@ public class RehabilitationManageService {
        resultMap.put("executeTime",one.get("execute_time"));//执行时间
        resultMap.put("expense",one.get("expense"));//收费
        resultMap.put("reserve",one.get("reserve"));//是否需要预约(1预约、0不预约)
        resultMap.put("planStatus",one.get("planStatus"));//计划的状态
        Integer status = Integer.valueOf(one.get("status").toString());//状态(0未完成,1已完成,2已预约)
        String statusName = "";
        switch (status){
@ -726,7 +656,7 @@ public class RehabilitationManageService {
            serviceDoctorList.add(healthDoctorMap);
        }
        String specialistRelationSql = "select * from wlyy_specialist.wlyy_specialist_patient_relation where patient='"+patientCode+"' and sign_status='1' and status='1'";
        String specialistRelationSql = "select * from wlyy_specialist.wlyy_specialist_patient_relation where patient='"+patientCode+"' and sign_status='1' and status >=0  ";
        List<Map<String,Object>> specialistRelationList = jdbcTemplate.queryForList(specialistRelationSql);
        for(Map<String,Object> one:specialistRelationList){
            String doctor = one.get("doctor")+"";
@ -746,7 +676,7 @@ public class RehabilitationManageService {
        //康复计划
        List<Map<String,Object>> planList = new ArrayList<>();
        List<PatientRehabilitationPlanDO> list = patientRehabilitationPlanDao.findbyPatients(patientCode);
        List<PatientRehabilitationPlanDO> list = patientRehabilitationPlanDao.findByPatients(patientCode);
        Integer planUnderway = 0;//进行中
        Integer planFinish = 0;//已完成
        for(PatientRehabilitationPlanDO one:list){
@ -1083,7 +1013,7 @@ public class RehabilitationManageService {
    }
    /**
     * 更新康复计划项目操作日志并且确认完成更新status
     * 更新康复计划项目操作日志并且确认完成更新status.
     * @param node
     * @param image
     * @param planDeatilId
@ -1093,6 +1023,21 @@ public class RehabilitationManageService {
        Map<String,Object> resultMap = new HashedMap();
        int i = rehabilitationDetailDao.updateStatusById(1,planDeatilId);
        int j = rehabilitationOperateRecordsDao.updateNodeAndRelationRecordImg(node,image,planDeatilId);
        //如果整个计划的服务项都完成了,整个计划也完成了
        String allSql ="SELECT * FROM wlyy_rehabilitation_plan_detail where plan_id = (SELECT plan_id FROM `wlyy_rehabilitation_plan_detail` WHERE id='"+planDeatilId+"')";
        List<RehabilitationDetailDO> rehabilitationDetailDOList = jdbcTemplate.query(allSql,new BeanPropertyRowMapper<>(RehabilitationDetailDO.class));
        int allCount=0;
        String planId="";
        for (RehabilitationDetailDO rehabilitationDetailDO : rehabilitationDetailDOList){
            if (rehabilitationDetailDO.getStatus()==1){
                allCount++;
            }
        }
        if (rehabilitationDetailDOList.size()>0 && rehabilitationDetailDOList.size()==allCount){
            planId = rehabilitationDetailDOList.get(0).getPlanId();
            patientRehabilitationPlanDao.updateStatusById(2,planId);
        }
        //更新返回数据提供发送消息使用
        String sql ="SELECT" +
                " i.service_item_id," +
                " r.doctor_code," +
@ -1145,4 +1090,14 @@ public class RehabilitationManageService {
        resultMap.put("healthyCondition","康复期");
        return ObjEnvelop.getSuccess(SpecialistMapping.api_success,resultMap);
    }
    /**
     * 根据居民获取康复计划
     * @param patient
     * @return
     */
    public ObjEnvelop planListByPatient(String patient){
        List<PatientRehabilitationPlanDO> list = patientRehabilitationPlanDao.findByPatients(patient);
        return ObjEnvelop.getSuccess(SpecialistMapping.api_success,list);
    }
}

+ 6 - 2
svr/svr-wlyy-specialist/src/main/java/com/yihu/jw/service/rehabilitation/RehabilitationPlanService.java

@ -65,6 +65,10 @@ public class RehabilitationPlanService extends BaseJpaService<RehabilitationPlan
    private String baseUrl;
    @Value("${basedb.name}")
    private String basedb;
    @Value("${wechat.wechat_base_url}")
    private String wechat_base_url;
    @Value("${wechat.appId}")
    private String appId;
    @Autowired
    private RehabilitationPlanTemplateDao templateDao;
@ -252,6 +256,7 @@ public class RehabilitationPlanService extends BaseJpaService<RehabilitationPlan
        }
        //服务包数据
        servicePackageVO.put("detailsVOList", detailsVOList);
        servicePackageVO.put("num", detailsVOList.size());
        servicePackageVO.put("saasId", "xmihealth");
        servicePackageVO.put("name", planDO.getTitle());
        servicePackageVO.put("introduce", planDO.getTitle());
@ -301,9 +306,8 @@ public class RehabilitationPlanService extends BaseJpaService<RehabilitationPlan
                fileUrl = rehabilitationDetailDO.getServiceQrCode();
            } else {
                //String contentJsonStr="{\"planDetailId\":\""+planDetailId+"\",\"sessionId\":\""+sessionId+"\"}";
                String contentJsonStr="html/kfgl/html/confirm-service.html"+"?paramStr="+planDetailId+","+doctorCode;
                String contentJsonStr="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appId+"&redirect_uri="+wechat_base_url+"/wx/html/kfgl/html/confirm-service.html"+"?paramStr="+planDetailId+","+doctorCode+"&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
                InputStream ipt = QrcodeUtil.createQrcode(contentJsonStr, 300, "png");
                isneiwang = false;
                if (isneiwang) {
                    // 圖片列表
                    List<String> tempPaths = new ArrayList<String>();

+ 32 - 1
svr/svr-wlyy-specialist/src/main/resources/application.yml

@ -89,6 +89,13 @@ neiwang:
base:
  url: http://172.17.110.212:10020/
wechat:
  appId: wxd03f859efdf0873d
  appSecret: 2935b54b53a957d9516c920a544f2537
  wechat_token: 27eb3bb24f149a7760cf1bb154b08040
  wechat_base_url: http%3a%2f%2fweixin.xmtyw.cn%2fwlyy-dev
  accId: gh_ffd64560fb21
---
spring:
  profiles: jwtest
@ -110,6 +117,13 @@ neiwang:
base:
  url: http://172.17.110.212:10020/
wechat:
  appId: wx1f129f7b51701428
  appSecret: 988f005d8309ed1795939e0f042431fb
  wechat_token: 27eb3bb24f149a7760cf1bb154b08040
  wechat_base_url: http%3a%2f%2fehr.yihu.com%2fwlyy
  accId: gh_ffd64560fb21
---
spring:
  profiles: jwdevtest
@ -127,10 +141,17 @@ fast-dfs:
neiwang:
  enable: true
  wlyy: http://172.19.103.88:10051/svr-slyy-specialist/
  wlyy: http://172.19.103.33:9797/svr-wlyy-specialist/
base:
  url: http://172.17.110.212:10020/
wechat:
  appId: wx1f129f7b51701428
  appSecret: 988f005d8309ed1795939e0f042431fb
  wechat_token: 27eb3bb24f149a7760cf1bb154b08040
  wechat_base_url: http%3a%2f%2fehr.yihu.com%2fwlyy
  accId: gh_ffd64560fb21
---
spring:
  profiles: prod
@ -148,3 +169,13 @@ fast-dfs:
neiwang:
  enable: false
  #wlyy: http://59.61.92.90:9099/iot/
base:
  url: http://172.17.110.212:10020/
wechat:
  appId: wxad04e9c4c5255acf
  appSecret: ae77c48ccf1af5d07069f5153d1ac8d3
  wechat_token: 27eb3bb24f149a7760cf1bb154b08040
  wechat_base_url: http%3a%2f%2fwww.xmtyw.cn%2fwlyy
  accId: gh_ffd64560fb21