Browse Source

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

liubing 3 years ago
parent
commit
acdabda8a5
28 changed files with 1546 additions and 61 deletions
  1. 36 0
      common/common-entity/sql记录
  2. 101 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/handover/BaseDayHandover.java
  3. 9 1
      common/common-entity/src/main/java/com/yihu/jw/entity/care/securitymonitoring/BaseEmergencyWarnLogDO.java
  4. 56 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/video/BaseVideoDO.java
  5. 170 0
      common/common-entity/src/main/java/com/yihu/jw/entity/patient/BaseDeviceRepairEntity.java
  6. 58 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/WlyyTokenGranter.java
  7. 18 0
      server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java
  8. 6 0
      svr/svr-cloud-care/pom.xml
  9. 9 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/device/BaseDeviceRepairDao.java
  10. 20 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/handover/BaseDayHandoverDao.java
  11. 2 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/security/BaseEmergencyWarnLogDao.java
  12. 17 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/video/BaseVideoDao.java
  13. 149 21
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/DoctorDeviceController.java
  14. 100 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorDayHandoverController.java
  15. 31 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorEndpoint.java
  16. 24 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/lifeCare/DoctorLifeCareEndpoint.java
  17. 23 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/lifeCare/PatientLifeCareEndpoint.java
  18. 97 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/orderLogProcess/OrderLogProcessController.java
  19. 64 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/video/PatientVideoEndpoint.java
  20. 89 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/assistance/EmergencyAssistanceService.java
  21. 159 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/DeviceManageService.java
  22. 62 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/doctor/DayHandoverService.java
  23. 17 22
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/lifeCare/LifeCareOrderService.java
  24. 11 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/org/BaseOrgService.java
  25. 32 1
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java
  26. 155 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/DingdingUtil.java
  27. 18 16
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/data/SaveDataPushJob.java
  28. 13 0
      svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/device/InitializeDataJobService.java

+ 36 - 0
common/common-entity/sql记录

@ -1698,6 +1698,42 @@ ALTER table base_visit add COLUMN `life_consult` VARCHAR(500) DEFAULT NULL COMME
-- 2022-03-14 ysj
ALTER TABLE base_login_log ADD token varchar(50) COMMENT '登录token 做权限验证用' ;
-- 2022-03-21 wsl
CREATE TABLE `base_device_repair` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `device_sn` varchar(50) DEFAULT NULL COMMENT '设备sn码',
  `bind_user` varchar(50) DEFAULT NULL COMMENT '绑定人code',
  `bind_user_name` varchar(20) DEFAULT NULL COMMENT '绑定人',
  `status` int(2) DEFAULT NULL COMMENT '报修状态:0 报修中、1 已完成',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  `repair_peoper` varchar(50) DEFAULT NULL COMMENT '报修人code',
  `repair_peoper_name` varchar(10) DEFAULT NULL COMMENT '报修人',
  `show` varchar(200) DEFAULT NULL COMMENT '说明',
  `img` varchar(2500) DEFAULT NULL COMMENT '图片地址“,”分割',
  `deal_peoper` varchar(50) DEFAULT NULL COMMENT '处理人',
  `deal_peoper_name` varchar(10) DEFAULT NULL COMMENT '处理人',
  `deal_time` datetime DEFAULT NULL COMMENT '处理时间',
  `feedback` varchar(50) DEFAULT NULL COMMENT '反馈',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备报修表';
-- 2022-03-22 wsl
CREATE TABLE `base_day_handover` (
  `id` varchar(50) NOT NULL COMMENT '表id',
  `create_user` varchar(50) DEFAULT NULL COMMENT '提交人',
  `create_user_name` varchar(10) DEFAULT NULL COMMENT '提交人',
  `handover_user` varchar(50) DEFAULT NULL COMMENT '交接人',
  `handover_user_name` varchar(10) DEFAULT NULL COMMENT '交接人',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  `device_overview` varchar(200) DEFAULT NULL COMMENT '设备概况',
  `old_overview` varchar(200) DEFAULT NULL COMMENT '老人概况',
  `note` varchar(200) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='日常交接';
-- 2022-03-21 lb
ALTER TABLE birthday_wishes_to_patient MODIFY COLUMN admin_team_code VARCHAR(50) DEFAULT NULL COMMENT '医生所在团队';

+ 101 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/handover/BaseDayHandover.java

@ -0,0 +1,101 @@
package com.yihu.jw.entity.care.handover;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by wsl on 2022/03/22.
 */
@Entity
@Table(name = "base_day_handover")
public class BaseDayHandover extends UuidIdentityEntityWithCreateTime {
    private String createUser; //提交人
    private String createUserName; //
    private String handoverUser; //交接人
    private String handoverUserName; //
    private Date createTime; //创建时间
    private String deviceOverview; //设备概况
    private String oldOverview; //老人概况
    private String note; //备注
    @Column(name = "create_user")
    public String getCreateUser() {
        return createUser;
    }
    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }
    @Column(name = "create_user_name")
    public String getCreateUserName() {
        return createUserName;
    }
    public void setCreateUserName(String createUserName) {
        this.createUserName = createUserName;
    }
    @Column(name = "handover_user")
    public String getHandoverUser() {
        return handoverUser;
    }
    public void setHandoverUser(String handoverUser) {
        this.handoverUser = handoverUser;
    }
    @Column(name = "handover_user_name")
    public String getHandoverUserName() {
        return handoverUserName;
    }
    public void setHandoverUserName(String handoverUserName) {
        this.handoverUserName = handoverUserName;
    }
    @Override
    public Date getCreateTime() {
        return createTime;
    }
    @Override
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Column(name = "device_overview")
    public String getDeviceOverview() {
        return deviceOverview;
    }
    public void setDeviceOverview(String deviceOverview) {
        this.deviceOverview = deviceOverview;
    }
    @Column(name = "old_overview")
    public String getOldOverview() {
        return oldOverview;
    }
    public void setOldOverview(String oldOverview) {
        this.oldOverview = oldOverview;
    }
    @Column(name = "note")
    public String getNote() {
        return note;
    }
    public void setNote(String note) {
        this.note = note;
    }
}

+ 9 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/care/securitymonitoring/BaseEmergencyWarnLogDO.java

@ -7,7 +7,6 @@ import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.xml.crypto.Data;
import java.util.Date;
/**
@ -24,6 +23,7 @@ public class BaseEmergencyWarnLogDO extends IdEntity {
    public Integer userType; //用户类型 1居民 2社工
    public String content;
    public Date createTime;
    public Integer type; //保存类型(1已知悉,2前往,3 110,4 120,5小结)
    public String timeInfo;
@ -84,4 +84,12 @@ public class BaseEmergencyWarnLogDO extends IdEntity {
    public void setTimeInfo(String timeInfo) {
        this.timeInfo = timeInfo;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
}

+ 56 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/video/BaseVideoDO.java

@ -0,0 +1,56 @@
package com.yihu.jw.entity.care.video;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by yeshijie on 2022/3/21.
 */
@Entity
@Table(name = "base_video")
public class BaseVideoDO extends UuidIdentityEntityWithCreateTime {
    private String type;//类型 1疾病防治 2健康生活 3慢病防治
    private String title;//标题
    private String url;//url
    private String img;//封面图片
    @Column(name = "type")
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    @Column(name = "title")
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    @Column(name = "url")
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    @Column(name = "img")
    public String getImg() {
        return img;
    }
    public void setImg(String img) {
        this.img = img;
    }
}

+ 170 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/patient/BaseDeviceRepairEntity.java

@ -0,0 +1,170 @@
package com.yihu.jw.entity.patient;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import java.util.Date;
@Entity
@Table(name = "base_device_repair")
@SequenceGenerator(name = "id_generated", sequenceName = "seq_base_device_repair")
public class BaseDeviceRepairEntity extends IdEntity {
    private String orderId; //
    private String deviceSn; //设备sn码
    private String deviceName;//设备名称
    private String bindUser; //绑定人code
    private String bindUserName; //绑定人
    private Integer status; //报修状态:0 报修中、1 已完成
    private Date createTime; //创建时间
    private String repairPeoper; //报修人code
    private String repairPeoperName; //
    private String showContent; //说明
    private String img; //图片地址“,”分割
    private String dealPeoper; //处理人
    private String dealPeoperName; //
    private Date dealTime; //处理时间
    private String feedback; //反馈
    @Column(name = "order_id")
    public String getOrderId() {
        return orderId;
    }
    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }
    @Column(name = "device_sn")
    public String getDeviceSn() {
        return deviceSn;
    }
    public void setDeviceSn(String deviceSn) {
        this.deviceSn = deviceSn;
    }
    @Column(name = "bind_user")
    public String getBindUser() {
        return bindUser;
    }
    public void setBindUser(String bindUser) {
        this.bindUser = bindUser;
    }
    @Column(name = "bind_user_name")
    public String getBindUserName() {
        return bindUserName;
    }
    public void setBindUserName(String bindUserName) {
        this.bindUserName = bindUserName;
    }
    @Column(name = "status")
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Column(name = "repair_peoper")
    public String getRepairPeoper() {
        return repairPeoper;
    }
    public void setRepairPeoper(String repairPeoper) {
        this.repairPeoper = repairPeoper;
    }
    @Column(name = "repair_peoper_name")
    public String getRepairPeoperName() {
        return repairPeoperName;
    }
    public void setRepairPeoperName(String repairPeoperName) {
        this.repairPeoperName = repairPeoperName;
    }
    @Column(name = "show_content")
    public String getShowContent() {
        return showContent;
    }
    public void setShowContent(String showContent) {
        this.showContent = showContent;
    }
    @Column(name = "img")
    public String getImg() {
        return img;
    }
    public void setImg(String img) {
        this.img = img;
    }
    @Column(name = "deal_peoper")
    public String getDealPeoper() {
        return dealPeoper;
    }
    public void setDealPeoper(String dealPeoper) {
        this.dealPeoper = dealPeoper;
    }
    @Column(name = "deal_peoper_name")
    public String getDealPeoperName() {
        return dealPeoperName;
    }
    public void setDealPeoperName(String dealPeoperName) {
        this.dealPeoperName = dealPeoperName;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "deal_time")
    public Date getDealTime() {
        return dealTime;
    }
    public void setDealTime(Date dealTime) {
        this.dealTime = dealTime;
    }
    @Column(name = "feedback")
    public String getFeedback() {
        return feedback;
    }
    public void setFeedback(String feedback) {
        this.feedback = feedback;
    }
    @Column(name = "device_name")
    public String getDeviceName() {
        return deviceName;
    }
    public void setDeviceName(String deviceName) {
        this.deviceName = deviceName;
    }
}

+ 58 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/WlyyTokenGranter.java

@ -116,6 +116,14 @@ public class WlyyTokenGranter implements TokenGranter {
                        requestFactory,
                        userDetailsService
                ));
        tokenGranters.put(DingTalkTokenGranter.GRANT_TYPE,
                new DingTalkTokenGranter(
                        authenticationManager,
                        tokenServices,
                        clientDetailsService,
                        requestFactory,
                        userDetailsService
                ));
    }
    public OAuth2AccessToken grant(String grantType, TokenRequest tokenRequest) {
@ -576,6 +584,56 @@ public class WlyyTokenGranter implements TokenGranter {
                throw new InvalidGrantException("User account is locked");
            }
//            parameters.put("password",userDetails.getPassword());
            Authentication userAuth = new UsernamePasswordAuthenticationToken(username,userDetails.getPassword(),  this.authoritiesMapper.mapAuthorities(userDetails.getAuthorities()));
            ((AbstractAuthenticationToken) userAuth).setDetails(parameters);
            OAuth2Request storedOAuth2Request = getRequestFactory().createOAuth2Request(client, tokenRequest);
            return new OAuth2Authentication(storedOAuth2Request, userAuth);
        }
    }
    /**
     * 钉钉免登录
     */
    public static class DingTalkTokenGranter extends AbstractTokenGranter {
        private static final String GRANT_TYPE = "dingTalk";
        private final AuthenticationManager authenticationManager;
        private final UserDetailsService userDetailsService;
        private GrantedAuthoritiesMapper authoritiesMapper = new NullAuthoritiesMapper();
        public DingTalkTokenGranter(AuthenticationManager authenticationManager,
                                  AuthorizationServerTokenServices tokenServices,
                                  ClientDetailsService clientDetailsService,
                                  OAuth2RequestFactory requestFactory,
                                  UserDetailsService userDetailsService) {
            this(authenticationManager, tokenServices, clientDetailsService, requestFactory, userDetailsService, GRANT_TYPE);
        }
        protected DingTalkTokenGranter(AuthenticationManager authenticationManager,
                                     AuthorizationServerTokenServices tokenServices,
                                     ClientDetailsService clientDetailsService,
                                     OAuth2RequestFactory requestFactory,
                                     UserDetailsService userDetailsService,
                                     String grantType) {
            super(tokenServices, clientDetailsService, requestFactory, grantType);
            this.authenticationManager = authenticationManager;
            this.userDetailsService = userDetailsService;
        }
        @Override
        protected OAuth2Authentication getOAuth2Authentication(ClientDetails client, TokenRequest tokenRequest) {
            Map<String, String> parameters = new LinkedHashMap<String, String>(tokenRequest.getRequestParameters());
            String username = parameters.get("username");
            SaltUser userDetails = (SaltUser)userDetailsService.loadUserByUsername(username);
            if (!userDetails.isEnabled()) {
                throw new InvalidGrantException("User is disabled");
            }
            if (!userDetails.isAccountNonLocked()) {
                throw new InvalidGrantException("User account is locked");
            }
//            parameters.put("password",userDetails.getPassword());
            Authentication userAuth = new UsernamePasswordAuthenticationToken(username,userDetails.getPassword(),  this.authoritiesMapper.mapAuthorities(userDetails.getAuthorities()));
            ((AbstractAuthenticationToken) userAuth).setDetails(parameters);

+ 18 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java

@ -300,6 +300,24 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
                String data[] = encdata.split(":");
                username = data[1];
                parameters.put("username", username);
            }else if("dingTalk".equals(flag)){
                //钉钉免登录
                parameters.put("grant_type", "dingTalk");
                String authCode = parameters.get("authCode");
                if(org.apache.commons.lang3.StringUtils.isBlank(authCode)){
                    throw new InvalidRequestException("请求参数错误");
                }
                String registerRes= httpClientUtil.get("http://127.0.0.1:10301/doctor/dingtalk_app_user?authCode="+authCode,"UTF-8");
                JSONObject jsonObject= JSONObject.parseObject(registerRes);
                if (jsonObject.getInteger("status") == 200){
                    parameters.put("username", jsonObject.getString("message"));
                }else{
                    HttpHeaders headers = new HttpHeaders();
                    headers.set("Cache-Control", "no-store");
                    headers.set("Pragma", "no-cache");
                    Oauth2Envelop<WlyyUserSimple> oauth2Envelop = new Oauth2Envelop<>(jsonObject.getString("message"), -1, null);
                    return new ResponseEntity<>(oauth2Envelop, headers, HttpStatus.OK);
                }
            }else if (StringUtils.isEmpty(parameters.get("captcha"))) {
                parameters.put("grant_type", "password");
                //解密密码

+ 6 - 0
svr/svr-cloud-care/pom.xml

@ -270,6 +270,12 @@
            <artifactId>artemis-http-client</artifactId>
            <version>1.1.3</version>
        </dependency>
        <!--钉钉sdk-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>zwdd-sdk-java</artifactId>
            <version>1.2.0</version>
        </dependency>
    </dependencies>
    <build>

+ 9 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/device/BaseDeviceRepairDao.java

@ -0,0 +1,9 @@
package com.yihu.jw.care.dao.device;
import com.yihu.jw.entity.patient.BaseDeviceRepairEntity;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface BaseDeviceRepairDao extends PagingAndSortingRepository<BaseDeviceRepairEntity,Long>,
        JpaSpecificationExecutor<BaseDeviceRepairEntity> {
}

+ 20 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/handover/BaseDayHandoverDao.java

@ -0,0 +1,20 @@
package com.yihu.jw.care.dao.handover;
import com.yihu.jw.entity.care.handover.BaseDayHandover;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by wsl on 2022/03/22
 */
public interface BaseDayHandoverDao extends PagingAndSortingRepository<BaseDayHandover, String>, JpaSpecificationExecutor<BaseDayHandover> {
    @Query("select h from BaseDayHandover h where h.createUser = ?1 order by h.createTime DESC")
    List<BaseDayHandover> findByCreateUser(String code);
    // Map<String,Object> findById(String id);
}

+ 2 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/security/BaseEmergencyWarnLogDao.java

@ -2,6 +2,7 @@ package com.yihu.jw.care.dao.security;
import com.yihu.jw.entity.care.securitymonitoring.BaseEmergencyWarnLogDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
@ -12,5 +13,6 @@ import java.util.List;
public interface BaseEmergencyWarnLogDao extends PagingAndSortingRepository<BaseEmergencyWarnLogDO, Long>,
        JpaSpecificationExecutor<BaseEmergencyWarnLogDO> {
    @Query("select w from BaseEmergencyWarnLogDO w where w.orderId = ?1 and w.type is null ")
    List<BaseEmergencyWarnLogDO> findByOrderIdOrderByCreateTimeDesc(String oderId);
}

+ 17 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/video/BaseVideoDao.java

@ -0,0 +1,17 @@
package com.yihu.jw.care.dao.video;
import com.yihu.jw.entity.care.video.BaseVideoDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by yeshijie on 2022/3/21.
 */
public interface BaseVideoDao extends PagingAndSortingRepository<BaseVideoDO, String>, JpaSpecificationExecutor<BaseVideoDO> {
    @Query("select a from BaseVideoDO a where a.type = ?1")
    List<BaseVideoDO> findByType(String type) throws Exception;
}

+ 149 - 21
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/device/DoctorDeviceController.java

@ -1,20 +1,18 @@
package com.yihu.jw.care.endpoint.device;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.dao.device.PatientDeviceDao;
import com.yihu.jw.care.endpoint.BaseController;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.service.contacts.ContactsService;
import com.yihu.jw.care.service.device.DeviceDetailService;
import com.yihu.jw.care.service.device.DeviceManageService;
import com.yihu.jw.care.service.device.PatientDeviceService;
import com.yihu.jw.care.util.CommonUtil;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.care.useragent.UserAgent;
import com.yihu.jw.entity.care.device.DevicePatientDevice;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.entity.patient.BaseDeviceRepairEntity;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -23,10 +21,11 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -44,20 +43,13 @@ public class DoctorDeviceController extends BaseController {
	@Autowired
	private PatientDeviceService patientDeviceService;
	@Autowired
	private DeviceDetailService deviceDetailService;
	DeviceManageService deviceManageService;
	@Autowired
	private BasePatientDao patientDao;
	@Autowired
	private BaseDoctorDao doctorDao;
	@Autowired
	private CommonUtil commonUtil;
	@Autowired
	private PatientDeviceDao patientDeviceDao;
	@Autowired
	private JmsTemplate jmsTemplate;
	PermissionService permissionService;
	@Autowired
	private ContactsService contactsService;
	@Autowired
	UserAgent userAgent;
	private ObjectMapper  objectMapper=new ObjectMapper();
@ -153,5 +145,141 @@ public class DoctorDeviceController extends BaseController {
		}
	}
	@RequestMapping(value = "/getDeviceList", method = RequestMethod.POST)
	@ApiOperation(value = "获取居民设备绑定列表")
	public String getDeviceList(@ApiParam(name = "doctor", value = "医生code")
								@RequestParam(value = "doctor", required = false) String doctor,
								@ApiParam(name = "patientName", value = "居民名字或者idCard")
								@RequestParam(value = "patientName", required = false) String patientName,
								@ApiParam(name = "categoryCode", value = "设备类型标识 1血糖仪,2.血压计,3药盒,4智能手表,7 = 居家报警器,12 监控器 13 睡眠带 14气感报警器 15烟感报警器 16拐杖 17随身wifi")
								@RequestParam(value = "categoryCode", required = false) String categoryCode,
								@ApiParam(name = "page", value = "分页起始id", defaultValue = "1")
								@RequestParam(value = "page", required = true) int page,
								@ApiParam(name = "pagesize", value = "每页条数", defaultValue = "10")
								@RequestParam(value = "pagesize", required = true) int pagesize) {
		List<Map<String, Object>> deviceList = null;
		try {
			JSONObject param = new JSONObject();
			param.put("doctorId",doctor);
			if(permissionService.noPermission(2,param)){
				return write(-1,"该操作没有权限");
			}
			return write(200,"成功","data",deviceManageService.getDeviceList(doctor, patientName, categoryCode, page, pagesize));
		} catch (Exception e) {
			error(e);
			return  errorResult(e);
		}
	}
	@RequestMapping(value = "/getDeviceInfo",method = RequestMethod.POST)
	@ApiOperation(value = "设备详细信息")
	public String getDeviceInfo(@ApiParam(name = "patient",value = "居民code")
								@RequestParam(value = "patient")String patient,
								@ApiParam(name = "deviceSn",value = "设备SN码")
								@RequestParam(value = "deviceSn")String deviceSn){
		try {
			JSONObject param = new JSONObject();
			param.put("doctorId",permissionService.getUID());
			if(permissionService.noPermission(2,param)){
				return write(-1,"该操作没有权限");
			}
			org.json.JSONObject result = deviceManageService.getDeviceInfo(patient, deviceSn);
			if (result.getInt(ResponseContant.resultFlag)==ResponseContant.success){
				return write(200,"获取成功","data", JSON.parseObject(result.getString(ResponseContant.resultMsg)));
			}else {
				return error(-1,result.getString(ResponseContant.resultMsg));
			}
		} catch (Exception e) {
			error(e);
			return errorResult(e);
		}
	}
	@RequestMapping(value = "/getMonitoring",method = RequestMethod.POST)
    @ApiOperation(value = "监护信息")
	public String getMonitoring(@ApiParam(name = "patient", value = "居民code")
								@RequestParam(value = "patient") String patient,
								@ApiParam(name = "topicItem", value = "专题code,关联security_topic_dict字典", required = false)
								@RequestParam(value = "topicItem",required = false,defaultValue = "preventLost") String topicItem){
		try {
			JSONObject param = new JSONObject();
			param.put("doctorId",permissionService.getUID());
			if(permissionService.noPermission(2,param)){
				return write(-1,"该操作没有权限");
			}
			return write(200,"成功","data",deviceManageService.getMonitoring(patient,topicItem));
		} catch (Exception e) {
			error(e);
			return errorResult(e);
		}
	}
    @RequestMapping(value = "/getRepairList",method = RequestMethod.POST)
    @ApiOperation(value = "报修列表")
    public String getRepairList(@ApiParam(name = "doctor",value = "医生code")
                                @RequestParam(value = "doctor")String doctor,
								@ApiParam(name = "categoryCode",value = "设备类型标识")
								@RequestParam(name = "categoryCode",required = false)String categoryCode,
                                @ApiParam(name = "patientName",value = "居民code 或 身份证")
                                @RequestParam(value = "patientName",required = false)String patientName,
                                @ApiParam(name = "page")
                                @RequestParam(value = "page")Integer page,
                                @ApiParam(name = "pageSize")
                                @RequestParam(value = "pageSize")Integer pageSize
                                ){
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId",doctor);
            if(permissionService.noPermission(2,param)){
                return write(-1,"该操作没有权限");
            }
            return write(200,"成功","data",deviceManageService.getRepairList(doctor,categoryCode,patientName,page,pageSize));
        } catch (Exception e) {
            error(e);
			return errorResult(e);
        }
    }
    @RequestMapping(value = "/getRepairInfo",method = RequestMethod.POST)
    @ApiOperation(value = "报修详细信息")
    public String getRepairInfo(@ApiParam(name = "orderId", value = "报修id")
                                @RequestParam(value = "orderId") String orderId) {
        try {
			JSONObject param = new JSONObject();
			param.put("doctorId",permissionService.getUID());
			if(permissionService.noPermission(2,param)){
				return write(-1,"该操作没有权限");
			}
            return write(200,"成功","data",deviceManageService.getRepairInfo(orderId));
        } catch (Exception e) {
            error(e);
			return errorResult(e);
        }
    }
    @RequestMapping(value = "/deviceRepair",method = RequestMethod.POST)
    @ApiOperation(value="报修")
    public String deviceRepair(@ApiParam(name = "repairJson",value = "报修对象")
                               @RequestParam(value = "repairJson")String repairJson){
        try {
			String doctor = permissionService.getUID();
			JSONObject param = new JSONObject();
			param.put("doctorId",userAgent.getUID());
			if(permissionService.noPermission(2,param)){
				return write(-1,"该操作没有权限");
			}
			BaseDeviceRepairEntity baseDeviceRepairEntity = JSON.parseObject(repairJson, BaseDeviceRepairEntity.class);
            return write(200,"成功","data",deviceManageService.deviceRepair(baseDeviceRepairEntity,doctor));
        } catch (Exception e) {
            error(e);
			return errorResult(e);
        }
    }
	
}

+ 100 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorDayHandoverController.java

@ -0,0 +1,100 @@
package com.yihu.jw.care.endpoint.doctor;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.endpoint.BaseController;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.service.doctor.DayHandoverService;
import com.yihu.jw.care.useragent.UserAgent;
import com.yihu.jw.entity.care.handover.BaseDayHandover;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created by Bing on 2021/7/16.
 */
@RestController
@RequestMapping(value = "doctor/handover")
@Api(tags = "社工端-日常交接", description = "日常交接")
public class DoctorDayHandoverController extends BaseController {
    @Autowired
    DayHandoverService dayHandoverService;
    @Autowired
    UserAgent userAgent;
    @Autowired
    PermissionService permissionService;
    @PostMapping("/saveHandover")
    @ApiOperation(value = "保存日常交接")
    public String saveHandover(@ApiParam(name = "dayHandoverJson", value = "交接对象")
                               @RequestParam(value = "dayHandoverJson") String dayHandoverJson) {
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId", userAgent.getUID());
            if (permissionService.noPermission(1, param)) {
                return write(-1, "该操作没有权限");
            }
            if (dayHandoverService.doctorIf(param.get("doctorId").toString())) {
                return write(-1, "该操作仅支持社工");
            }
            BaseDayHandover baseDayHandover = JSON.parseObject(dayHandoverJson, BaseDayHandover.class);
            if (null == baseDayHandover) {
                return write(-1, "参数错误!");
            }
            return write(200, "成功", "data", dayHandoverService.saveDayHandover(baseDayHandover));
        } catch (Exception e) {
            error(e);
            return errorResult(e);
        }
    }
    @PostMapping("/getDayHandoverList")
    @ApiOperation(value = "获取交接列表")
    public String getDayHandoverList(@ApiParam(name = "doctor")
                                     @RequestParam(value = "doctor") String doctor) {
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId", doctor);
            if (permissionService.noPermission(1, param)) {
                return write(-1, "该操作没有权限");
            }
            if (dayHandoverService.doctorIf(doctor)) {
                return write(-1, "该操作仅支持社工");
            }
            return write(200, "成功", "data", dayHandoverService.getDayHandoverList(doctor));
        } catch (Exception e) {
            error(e);
            return errorResult(e);
        }
    }
    @PostMapping("/getTeamMember")
    @ApiOperation(value = "获取团队成员")
    public String getTeamMember(@ApiParam(name = "doctor")
                                @RequestParam(value = "doctor") String doctor) {
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId", doctor);
            if (permissionService.noPermission(1, param)) {
                return write(-1, "该操作没有权限");
            }
            return write(200, "成功", "data", dayHandoverService.getTeamMember(doctor));
        } catch (Exception e) {
            error(e);
            return errorResult(e);
        }
    }
}

+ 31 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorEndpoint.java

@ -7,8 +7,10 @@ import com.yihu.jw.care.service.consult.ConsultTeamService;
import com.yihu.jw.care.service.doctor.CareDoctorService;
import com.yihu.jw.care.service.doctor.DoctorServicePermissionsService;
import com.yihu.jw.care.service.sign.CapacityAssessmentRecordService;
import com.yihu.jw.care.util.DingdingUtil;
import com.yihu.jw.care.util.EntranceUtil;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
@ -47,7 +49,36 @@ public class DoctorEndpoint extends EnvelopRestEndpoint {
    private DoctorServicePermissionsService doctorServicePermissionsService;
    @Autowired
    private PermissionService permissionService;
    @Autowired
    private DingdingUtil dingdingUtil;
    @GetMapping(value = "dingtalk_app_user")
    @ApiOperation(value = "钉钉授权code获取用户信息")
    public Envelop dingtalk_app_user(@ApiParam(name = "authCode", value = "钉钉授权code", required = true)
                                     @RequestParam(value = "authCode",required = true) String authCode){
        try {
            JSONObject jsonObject = dingdingUtil.dingtalk_app_user(authCode);
            if(jsonObject.getBoolean("success")){
                JSONObject content = jsonObject.getJSONObject("content");
                if(content.getBoolean("success")){
                    long accountId = content.getJSONObject("data").getLong("accountId");
                    BaseDoctorDO doctorDO = doctorDao.findByYktDoctorId(accountId+"");
                    if(doctorDO == null){
                        return Envelop.getError("暂无该账号,请联系云照护工作人员配置");
                    }else{
                        return success(doctorDO.getMobile());
                    }
                }else{
                    return Envelop.getError(content.getString("responseMessage"));
                }
            }else {
                return Envelop.getError("获取失败");
            }
        }catch (Exception e){
            e.printStackTrace();
            return failedException2(e);
        }
    }
    @PostMapping(value = "updOnline")
    @ApiOperation(value = "更新在线状态")

+ 24 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/lifeCare/DoctorLifeCareEndpoint.java

@ -2,7 +2,9 @@ package com.yihu.jw.care.endpoint.lifeCare;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.service.lifeCare.LifeCareOrderService;
import com.yihu.jw.care.service.org.BaseOrgService;
import com.yihu.jw.entity.care.lifeCare.LifeCareOrderDO;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.Envelop;
@ -28,6 +30,10 @@ public class DoctorLifeCareEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private LifeCareOrderService lifeCareOrderService;
    @Autowired
    private BaseOrgService baseOrgService;
    @Autowired
    private PermissionService permissionService;
    @GetMapping(value = "queryBriefList")
    @ApiOperation(value = "调度员查询工单列表")
@ -188,4 +194,22 @@ public class DoctorLifeCareEndpoint extends EnvelopRestEndpoint {
            return failedException2(e);
        }
    }
    @PostMapping("getLifeOrg")
    @ApiOperation(value = "医生端-获取生活服务照例机构")
    public Envelop getLifeOrg(){
        try {
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("doctorId",permissionService.getUID());
            if (permissionService.noPermission(1, jsonObject)) {
                return ObjEnvelop.getError("该操作没有权限",-1);
            }
            return ObjEnvelop.getSuccess("获取成功",baseOrgService.findLifeOrg(),200);
        } catch (Exception e) {
           return failedObjEnvelopException2(e);
        }
    }
}

+ 23 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/lifeCare/PatientLifeCareEndpoint.java

@ -2,7 +2,9 @@ package com.yihu.jw.care.endpoint.lifeCare;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.service.lifeCare.LifeCareOrderService;
import com.yihu.jw.care.service.org.BaseOrgService;
import com.yihu.jw.entity.care.lifeCare.LifeCareOrderDO;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.Envelop;
@ -28,6 +30,10 @@ public class PatientLifeCareEndpoint  extends EnvelopRestEndpoint {
    @Autowired
    private LifeCareOrderService lifeCareOrderService;
    @Autowired
    private BaseOrgService baseOrgService;
    @Autowired
    private PermissionService permissionService;
    @PostMapping(value = "create")
    @ApiOperation(value = "申请生活照料")
@ -153,4 +159,21 @@ public class PatientLifeCareEndpoint  extends EnvelopRestEndpoint {
            return failedObjEnvelopException2(e);
        }
    }
    @PostMapping("getLifeOrg")
    @ApiOperation(value = "医生端-获取生活服务照例机构")
    public Envelop getLifeOrg(){
        try {
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("patient",permissionService.getUID());
            if (permissionService.noPermission(1, jsonObject)) {
                return ObjEnvelop.getError("该操作没有权限",-1);
            }
            return ObjEnvelop.getSuccess("获取成功",baseOrgService.findLifeOrg(),200);
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
        }
    }
}

+ 97 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/orderLogProcess/OrderLogProcessController.java

@ -0,0 +1,97 @@
package com.yihu.jw.care.endpoint.orderLogProcess;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.endpoint.BaseController;
import com.yihu.jw.care.service.assistance.EmergencyAssistanceService;
import com.yihu.jw.care.service.common.PermissionService;
import com.yihu.jw.care.useragent.UserAgent;
import com.yihu.jw.entity.care.securitymonitoring.BaseEmergencyWarnLogDO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
 * @Author: wsl
 * @Date: 2022/03/23
 */
@RestController
@RequestMapping("orderLogProcess/")
@Api(tags = "流程日志保存")
public class OrderLogProcessController extends BaseController {
    @Autowired
    EmergencyAssistanceService easervice;
    @Autowired
    PermissionService permissionService;
    @Autowired
    UserAgent userAgent;
    @RequestMapping(value = "phoneLogSave", method = RequestMethod.POST)
    @ApiOperation(value = "110/120拨打日志保存")
    public String phoneLogSave(@ApiParam(name = "logJson")
                               @RequestParam(value = "logJson") String logJson,
                               @ApiParam(name = "type")
                               @RequestParam(value = "type") Integer type) {
        try {
             JSONObject param = new JSONObject();
            param.put("doctorId", permissionService.getUID());
            if (permissionService.noPermission(1, param)) {
                return write(-1, "该操作没有权限");
            }
            if (StringUtils.isNotBlank(logJson)) {
                BaseEmergencyWarnLogDO baseEmergencyWarnLogDO = JSON.parseObject(logJson, BaseEmergencyWarnLogDO.class);
                int i = easervice.phoneLogSave(baseEmergencyWarnLogDO, type);
                switch (i) {
                    case 1:
                        return write(200, "成功");
                    case -1:
                        return error(-1, "类型错误");
                    default:
                        return write(400, "参数错误");
                }
            }else {
                return error(400,"参数错误");
            }
        } catch (Exception e) {
            error(e);
            return errorResult(e);
        }
    }
    @RequestMapping(value = "processLog", method = RequestMethod.POST)
    @ApiOperation(value = "紧急救助工单流程")
    public String processLog(@ApiParam(name = "orderid")
                             @RequestParam(value = "orderid") String orderid) {
        try {
            JSONObject param = new JSONObject();
            param.put("doctorId", permissionService.getUID());
            if (permissionService.noPermission(1, param)) {
                return write(-1, "该操作没有权限");
            }
            JSONObject emergencyAssistanceProcess = easervice.getEmergencyAssistanceProcess(orderid);
            if (null == emergencyAssistanceProcess) {
                return error(400, "工单不存在");
            }
            return write(200, "成功", "data", emergencyAssistanceProcess);
        } catch (Exception e) {
            error(e);
            return errorResult(e);
        }
    }
}

+ 64 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/video/PatientVideoEndpoint.java

@ -0,0 +1,64 @@
package com.yihu.jw.care.endpoint.video;
import com.yihu.jw.care.dao.video.BaseVideoDao;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by yeshijie on 2022/3/21.
 */
@RestController
@RequestMapping(value = "pateintVideo")
@Api(value = "居民视频", description = "居民视频", tags = {"居民视频"})
public class PatientVideoEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private BaseVideoDao baseVideoDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @RequestMapping(value = "findVideoNum", method = RequestMethod.GET)
    @ApiOperation(value = "按类型获取视频列表")
    public ObjEnvelop findVideoNum() {
        try {
            String sql = "SELECT type,COUNT(*) num from base_video GROUP BY type";
            List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
            Map<String, Integer> map = new HashMap<>();
            //类型 1疾病防治 2健康生活 3慢病防治
            map.put("1",0);
            map.put("2",0);
            map.put("3",0);
            for (Map<String, Object> one:list){
                map.put(String.valueOf(one.get("type")), Integer.valueOf(String.valueOf(one.get("num"))));
            }
            return ObjEnvelop.getSuccess("获取成功",map);
        } catch (Exception e) {
            return failedObjEnvelopException2(e);
        }
    }
    @RequestMapping(value = "findVideo", method = RequestMethod.GET)
    @ApiOperation(value = "按类型获取视频列表")
    public ListEnvelop findVideo(@ApiParam(name = "type", value = "类型 1疾病防治 2健康生活 3慢病防治")
                                 @RequestParam(value = "type", required = true) String type) {
        try {
            return ListEnvelop.getSuccess("获取成功",baseVideoDao.findByType(type));
        } catch (Exception e) {
            return failedListEnvelopException2(e);
        }
    }
}

+ 89 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/assistance/EmergencyAssistanceService.java

@ -1077,6 +1077,7 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
            BaseDoctorDO doctorDO = doctorDao.findById(doctor);
            if (null!=doctorDO){
                BaseEmergencyWarnLogDO logDO = new BaseEmergencyWarnLogDO();
                BaseEmergencyWarnLogDO logTypeDO = new BaseEmergencyWarnLogDO();
                logDO.setUserCode(doctor);
                logDO.setUserName(doctorDO.getName());
                logDO.setOrderId(orderId);
@ -1084,6 +1085,15 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
                logDO.setCreateTime(new Date());
                logDO.setContent("前往定位");
                logDao.save(logDO);
                logTypeDO.setUserCode(doctor);
                logTypeDO.setUserName(doctorDO.getName());
                logTypeDO.setOrderId(orderId);
                logTypeDO.setUserType(2);
                logTypeDO.setCreateTime(new Date());
                logTypeDO.setContent("前往定位");
                logTypeDO.setType(2);
                logDao.save(logTypeDO);
            }
        }
@ -1393,4 +1403,83 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        return result;
    }
    public JSONObject getEmergencyAssistanceProcess(String orderId){
        JSONObject jsonObject = new JSONObject();
        String eaSql = "SELECT `status`,create_time AS createTime,complete_time AS completeTime " +
                "from base_emergency_assistance_order WHERE id = '"+orderId+"'";
        List<Map<String, Object>> maps = jdbcTemplate.queryForList(eaSql);
        if (maps.size()==0) {
            return null;
        }
        for (Map<String, Object> map : maps) {
            jsonObject.put("status",map.get("status"));
            jsonObject.put("createTime",map.get("createTime"));
        }
        String sql = "select * from base_emergency_warn_log where user_type = 2 and order_id = '"+orderId+"' and type IS NOT NULL ";
        List<BaseEmergencyWarnLogDO> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(BaseEmergencyWarnLogDO.class));
        for (BaseEmergencyWarnLogDO baseEmergencyWarnLogDO : query) {
            jsonObject.put("type1_status",0);
            jsonObject.put("type2_status",0);
            jsonObject.put("type3_status",0);
            jsonObject.put("type4_status",0);
            jsonObject.put("type5_status",0);
            switch (baseEmergencyWarnLogDO.getType()){
                case 1:
                    jsonObject.put("type1_status",1);
                    jsonObject.put("type1_name",baseEmergencyWarnLogDO.getUserName());
                    jsonObject.put("type1_content",baseEmergencyWarnLogDO.getContent());
                    jsonObject.put("type1_time",baseEmergencyWarnLogDO.getCreateTime());
                    break;
                case 2:
                    jsonObject.put("type2_status",1);
                    jsonObject.put("type2_name",baseEmergencyWarnLogDO.getUserName());
                    jsonObject.put("type2_content",baseEmergencyWarnLogDO.getContent());
                    jsonObject.put("type2_time",baseEmergencyWarnLogDO.getCreateTime());
                    break;
                case 3:
                    jsonObject.put("type3_status",1);
                    jsonObject.put("type3_name",baseEmergencyWarnLogDO.getUserName());
                    jsonObject.put("type3_content",baseEmergencyWarnLogDO.getContent());
                    jsonObject.put("type3_time",baseEmergencyWarnLogDO.getCreateTime());
                    break;
                case 4:
                    jsonObject.put("type4_status",1);
                    jsonObject.put("type4_name",baseEmergencyWarnLogDO.getUserName());
                    jsonObject.put("type4_content",baseEmergencyWarnLogDO.getContent());
                    jsonObject.put("type4_time",baseEmergencyWarnLogDO.getCreateTime());
                    break;
                case 5:
                    jsonObject.put("type5_status",1);
                    jsonObject.put("type5_name",baseEmergencyWarnLogDO.getUserName());
                    jsonObject.put("type5_content",baseEmergencyWarnLogDO.getContent());
                    jsonObject.put("type5_time",baseEmergencyWarnLogDO.getCreateTime());
                    break;
                default:
                    break;
            }
        }
        return jsonObject;
    }
    public int phoneLogSave(BaseEmergencyWarnLogDO baseEmergencyWarnLogDO,Integer type){
        switch (type) {
            case 1:
                baseEmergencyWarnLogDO.setContent("呼叫110");
                break;
            case 2:
                baseEmergencyWarnLogDO.setContent("呼叫120");
                break;
            default:
                return -1;
        }
        baseEmergencyWarnLogDO.setUserType(2);
        baseEmergencyWarnLogDO.setType(4);
        baseEmergencyWarnLogDO.setCreateTime(new Date());
        logDao.save(baseEmergencyWarnLogDO);
        return 1;
    }
}

+ 159 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/device/DeviceManageService.java

@ -0,0 +1,159 @@
package com.yihu.jw.care.service.device;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.device.BaseDeviceRepairDao;
import com.yihu.jw.care.dao.sign.BasePatientHelperDao;
import com.yihu.jw.care.service.security.SecurityMonitoringOrderService;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.patient.BaseDeviceRepairEntity;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@Service
public class DeviceManageService extends BaseJpaService<BaseDeviceRepairEntity,BaseDeviceRepairDao> {
    @Autowired
    JdbcTemplate jdbcTemplate;
    @Autowired
    PatientDeviceService patientDeviceService;
    @Autowired
    SecurityMonitoringOrderService securityMonitoringOrderService;
    @Autowired
    BaseDeviceRepairDao baseDeviceRepairDao;
    @Autowired
    private BasePatientHelperDao patientHelperDao;
    @Autowired
    BaseDoctorDao baseDoctorDao;
    /*获取设备清单 数据范围为我关联的居民绑定的设备清单*/
    public List<Map<String, Object>> getDeviceList(String doctor, String patientName, String categoryCode, int page, int pageSize) {
        String sql = "select Distinct p.id,p.`name`,dd.photo,pd.device_id deviceId,pd.category_code categoryCode,pd.device_name deviceName, " +
                " pd.device_sn deviceSn,pd.czrq,pd.doctor,pd.doctor_name doctorName,pd.agent,pd.agent_name agentName " +
                " from wlyy_patient_device pd,wlyy_devices wd,base_patient p,dm_device dd where p.id = pd.`user`  and pd.del = 0 " +
                " and pd.device_sn = wd.device_code and pd.category_code = dd.category_code and dd.model = wd.device_model and p.del=1 ";
        if (StringUtils.isNotBlank(patientName)) {
            sql += " AND (p.`name` LIKE '%" + patientName + "%' or  p.idcard LIKE '%" + patientName + "%') ";
        }
        if (StringUtils.isNotBlank(categoryCode)) {
            sql += " and pd.category_code ='" + categoryCode + "'";
        }
        if (StringUtils.isNotBlank(doctor)) {//
            BaseDoctorDO doctorByid = baseDoctorDao.findById(doctor);
            if (doctorByid.getLevel() == 2) {
                sql += " and EXISTS (SELECT ph.patient from base_patient_helper ph WHERE pd.user = ph.patient AND ph.doctor = '"+doctor+"' and ph.del = '1')";
            } else {
                sql += " and EXISTS (SELECT sr.patient from base_service_package_sign_record sr,base_service_package_record r,base_team_member m " +
                        " WHERE sr.patient = p.id and sr.status=1 and m.team_code = r.team_code and sr.id=r.sign_id " +
                        " and m.doctor_code = '" + doctor + "' and m.del = '1') ";
            }
        }
        sql += " ORDER BY pd.czrq DESC LIMIT " + (page - 1) * pageSize + " , " + pageSize + " ";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        return list;
    }
    /*设备详细信息*/
    public org.json.JSONObject getDeviceInfo(String patient, String deviceSn) throws Exception {
        return patientDeviceService.getPatientDeviceDetail(patient, deviceSn, null);
    }
    /*监护信息*/
    public JSONObject getMonitoring(String patient, String topicItem) {
        return securityMonitoringOrderService.patientMonitoringInfo(patient, topicItem, null, true);
    }
    /*报修列表*/
    public List<Map<String, Object>> getRepairList(String doctor,String categoryCode, String patientName, int page, int pageSize) {
        BaseDoctorDO doctorById = baseDoctorDao.findById(doctor);
        String repairSql = "";
        if (null != doctorById) {
            //level == 2 社工
            //level == 4 助老员
            if (doctorById.getLevel() == 4) {
                 repairSql ="SELECT DISTINCT" +
                         " pd.device_name AS deviceName,dr.`status` AS `status` ,dr.bind_user_name AS bindName,dr.deal_peoper_name AS dealName,dr.create_time AS createTime" +
                         " FROM" +
                         " wlyy_patient_device pd," +
                         " base_device_repair dr," +
                         " base_patient_helper ph," +
                         " base_patient p" +
                         " WHERE" +
                         " p.id = pd.`user`" +
                         " AND pd.del = 0" +
                         " AND dr.repair_peoper = ph.doctor" +
                         " AND dr.device_sn = pd.device_sn" +
                         " AND pd. USER = ph.patient" +
                         " AND ph.doctor = '"+doctor+"'" +
                         " AND ph.del = '1'";
            } else {
                 repairSql = "SELECT DISTINCT dr.order_id AS id,dr.bind_user_name AS patientName," +
                        " dr.`status` AS `status`,dr.create_time AS createTime,dr.repair_peoper_name AS repairName,wd.device_name AS deviceName" +
                        " FROM" +
                        " wlyy_patient_device pd," +
                        " wlyy_devices wd," +
                        " base_patient p," +
                        " dm_device dd," +
                        " base_device_repair dr" +
                        " WHERE" +
                        " p.id = pd.`user`" +
                        " AND pd.del = 0" +
                        " AND pd.device_sn = wd.device_code" +
                        " AND pd.category_code = dd.category_code" +
                        " AND dd.model = wd.device_model" +
                        " AND p.del = 1" +
                        " AND pd.device_sn = dr.device_sn" +
                        " and EXISTS (SELECT sr.patient from base_service_package_sign_record sr,base_service_package_record r,base_team_member m " +
                        " WHERE sr.patient = p.id and sr.status=1 and m.team_code = r.team_code and sr.id=r.sign_id AND dr.repair_peoper = m.doctor_code" +
                        " and m.doctor_code = '" + doctor + "' and m.del = '1')";
            }
        }
        if (StringUtils.isNotBlank(patientName)) {
            repairSql += " AND (p.`name` LIKE '%" + patientName + "%' or  p.idcard LIKE '%" + patientName + "%') ";
        }
        if (StringUtils.isNotBlank(categoryCode)) {
            repairSql += " and pd.category_code ='" + categoryCode + "'";
        }
        repairSql += " ORDER BY pd.czrq DESC LIMIT " + (page - 1) * pageSize + " , " + pageSize + " ";
        return jdbcTemplate.queryForList(repairSql);
    }
    /*报修详细信息*/
    public List<BaseDeviceRepairEntity> getRepairInfo(String orderId) {
        return jdbcTemplate.query("SELECT * from base_device_repair WHERE order_id = '" + orderId + "'", new BeanPropertyRowMapper<>(BaseDeviceRepairEntity.class));
    }
    /*报修*/
    public BaseDeviceRepairEntity deviceRepair(BaseDeviceRepairEntity repairEntity,String doctor) {
        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
            if (2==doctorDO.getLevel()||4==doctorDO.getLevel()){
                repairEntity.setOrderId(UUID.randomUUID().toString().replaceAll("-", ""));
                repairEntity.setStatus(0);
                repairEntity.setCreateTime(DateUtil.getNowDate());
            }else{
                repairEntity.setStatus(1);
            }
        return baseDeviceRepairDao.save(repairEntity);
    }
}

+ 62 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/doctor/DayHandoverService.java

@ -0,0 +1,62 @@
package com.yihu.jw.care.service.doctor;
import com.yihu.jw.care.dao.handover.BaseDayHandoverDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.care.handover.BaseDayHandover;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * 2022/03/22  wsl
 */
@Service
public class DayHandoverService {
    @Autowired
    JdbcTemplate jdbcTemplate;
    @Autowired
    BaseDayHandoverDao baseDayHandoverDao;
    @Autowired
    BaseDoctorDao baseDoctorDao;
    //保存日常交接
    public BaseDayHandover saveDayHandover(BaseDayHandover baseDayHandover) {
        return baseDayHandoverDao.save(baseDayHandover);
    }
    //获取交接列表
    public List<BaseDayHandover> getDayHandoverList(String doctor) {
        return baseDayHandoverDao.findByCreateUser(doctor);
    }
    //获取团队成员
    public List<Map<String, Object>> getTeamMember(String doctor) {
        String memberSql = "SELECT Distinct" +
                " d. NAME AS `name`, d.id AS id " +
                " FROM base_team_member m, base_doctor d" +
                " WHERE " +
                " m.team_code = (SELECT team_code FROM base_team_member WHERE doctor_code ='" + doctor + "' AND del = '1') and m.doctor_code = d.id " +
                " and m.del = '1'";
        return jdbcTemplate.queryForList(memberSql);
    }
    //判断是否是社工医生
    public boolean doctorIf(String doctorCode){
        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctorCode);
        if (doctorDO.getLevel()!=1) {
            return false;
        }
        return true;
    }
}

+ 17 - 22
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/lifeCare/LifeCareOrderService.java

@ -16,20 +16,17 @@ import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.wx.BasePatientWechatDo;
import com.yihu.jw.entity.care.doorCoach.BaseDoorCoachOrderDO;
import com.yihu.jw.entity.care.lifeCare.LifeCareCancelLogDO;
import com.yihu.jw.entity.care.lifeCare.LifeCareFeeDetailDO;
import com.yihu.jw.entity.care.lifeCare.LifeCareItemDictDO;
import com.yihu.jw.entity.care.lifeCare.LifeCareOrderDO;
import com.yihu.jw.entity.door.BaseAdminServiceDynamic;
import com.yihu.jw.entity.order.BusinessOrderDO;
import com.yihu.jw.entity.patient.Patient;
import com.yihu.jw.order.dao.BusinessOrderDao;
import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.entity.EntityUtils;
@ -42,6 +39,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
@ -669,27 +667,24 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
        }
        //给签约医生发送预约短信
        String sql ="SELECT i.code,r.team_code,pack.org_code,pack.org_name from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack  \n" +
                "where  sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id and r.service_package_id = pack.id and i.del = 1 and sr.`status`=1 \n" +
                "and  sr.patient  = '"+orderDO.getPatient()+"' and i.code='lifeCare' ";
        List<Map<String,Object>> items = jdbcTemplate.queryForList(sql);
        if(items.size()==0){
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            String failMsg = "居民未签约生活照料服务,无法发起申请";
            result.put(ResponseContant.resultMsg, failMsg);
            logger.error(failMsg);
            return result;
        }
        Map<String,Object> mapTmp = items.get(0);
        List<BaseDoctorDO> doctorDOS = baseTeamMemberDao.findAllMembersByLevel(mapTmp.get("team_code").toString(),2);
        for (BaseDoctorDO doctorDO:doctorDOS){
            try {
                if (StringUtils.isNotBlank(doctorDO.getMobile())){
                    messageUtil.sendTXYSJson("1099807",doctorDO.getMobile(),orderDO.getPatientName(),"生活照料");
        try {
            String hospitalDoctorSql = "SELECT d.mobile AS mobile FROM base_doctor_hospital h,base_doctor d WHERE h.doctor_code = d.id " +
                    " AND d.doctor_level = 4" +
                    " AND h.org_code = '"+orderDO.getHospital()+"'" +
                    " AND h.del = 1" +
                    " AND d.del = 1" +
                    " AND d.mobile IS NOT NULL" +
                    " AND d.mobile != ''";
            List<Map<String, Object>> maps = jdbcTemplate.queryForList(hospitalDoctorSql);
            if (maps.size() != 0) {
                for (Map<String, Object> map : maps) {
                    messageUtil.sendTXYSJson("1099807", map.get("mobile").toString(), orderDO.getPatientName(), "生活照料");
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
        return result;

+ 11 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/org/BaseOrgService.java

@ -9,6 +9,7 @@ import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * Created by yeshijie on 2021/3/3.
@ -39,4 +40,14 @@ public class BaseOrgService extends BaseJpaService<BaseOrgDO, BaseOrgDao> {
        BaseOrgDO orgDO = orgDao.findByCode(orgCode);
        return orgDO;
    }
    //生活照料服务机构 存在服务项的机构
    public List<Map<String, Object>> findLifeOrg(){
        String findLifesql = "SELECT DISTINCT o.`code` as code,o.`name` as name FROM base_org o,base_life_care_item_dict d WHERE o.type = '3' and o.del = 1 and o.`code` = d.org_code";
        List<Map<String, Object>> maps = jdbcTemplate.queryForList(findLifesql);
        if (maps.size()==0) {
            return null;
        }
        return maps;
    }
}

+ 32 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java

@ -50,7 +50,6 @@ import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.entity.EntityUtils;
import com.yihu.jw.util.healthIndex.HealthIndexUtil;
import com.yihu.mysql.query.BaseJpaService;
import jdk.nashorn.internal.runtime.FindProperty;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -1371,6 +1370,16 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        one.setConclusionStatus(2);
        securityMonitoringOrderDao.save(one);
        BaseEmergencyWarnLogDO logTypeDO = new BaseEmergencyWarnLogDO();
        logTypeDO.setUserCode(doctor);
        logTypeDO.setUserName(one.getDoctor());
        logTypeDO.setOrderId(orderId);
        logTypeDO.setUserType(2);
        logTypeDO.setCreateTime(new Date());
        logTypeDO.setContent("完成服务小结");
        logTypeDO.setType(5);
        logDao.save(logTypeDO);
        //完成工单向pc管理端发送消息
        JSONObject message = new JSONObject();
        String latLon = one.getServeLat() + "," + one.getServeLon();
@ -2191,6 +2200,8 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
            BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
            if (null != doctorDO) {
                BaseEmergencyWarnLogDO logDO = new BaseEmergencyWarnLogDO();
                BaseEmergencyWarnLogDO logTypeDO = new BaseEmergencyWarnLogDO();
                logDO.setUserCode(doctor);
                logDO.setUserName(doctorDO.getName());
                logDO.setOrderId(orderId);
@ -2198,6 +2209,15 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
                logDO.setCreateTime(new Date());
                logDO.setContent("社工" + doctorDO.getName() + "前往定位");
                logDao.save(logDO);
                logTypeDO.setUserCode(doctor);
                logTypeDO.setUserName(doctorDO.getName());
                logTypeDO.setOrderId(orderId);
                logTypeDO.setUserType(2);
                logTypeDO.setCreateTime(new Date());
                logTypeDO.setContent("前往定位");
                logTypeDO.setType(2);
                logDao.save(logTypeDO);
            }
        }
        result.put("resultFlag", 1);
@ -2213,13 +2233,24 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
        if (null != doctorDO) {
            BaseEmergencyWarnLogDO logDO = new BaseEmergencyWarnLogDO();
            BaseEmergencyWarnLogDO logTypeDD = new BaseEmergencyWarnLogDO();
            logDO.setUserCode(doctor);
            logDO.setUserName(doctorDO.getName());
            logDO.setOrderId(orderId);
            logDO.setUserType(2);
            logDO.setCreateTime(new Date());
            logDO.setContent("社工" + doctorDO.getName() + "已知悉");
            logTypeDD.setUserCode(doctor);
            logTypeDD.setUserName(doctorDO.getName());
            logTypeDD.setOrderId(orderId);
            logTypeDD.setUserType(2);
            logTypeDD.setCreateTime(new Date());
            logTypeDD.setContent("已知悉");
            logTypeDD.setType(1);
            logDao.save(logDO);
            logDao.save(logTypeDD);
        }
    }

+ 155 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/DingdingUtil.java

@ -0,0 +1,155 @@
package com.yihu.jw.care.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.xxpt.gateway.shared.client.http.ExecutableClient;
import com.alibaba.xxpt.gateway.shared.client.http.GetClient;
import com.alibaba.xxpt.gateway.shared.client.http.PostClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
/**
 * 阿里巴巴钉钉工具类
 * Created by yeshijie on 2022/3/23.
 */
@Component
public class DingdingUtil {
    private static final Logger logger = LoggerFactory.getLogger(DingdingUtil.class);
    //测试
    private static final String AppKey = "ceshiyzh-jtP6zf3cfZEqs8UmmYNra";
    private static final String AppSecret = "NbbH9viHPDNTPTuQPz2Y0Y06F88krYWTTPLv0h01";
    //正式
//    private static final String AppKey = "zhyzh-r085NCVALJYmgcDc7oBVFRZj";
//    private static final String AppSecret = "fH8ZVDGAmJaeF7ujwAZgCi40w0U3im9J801vBaSF";
    private static final String DomainName = "openplatform.dg-work.cn";
    private static final String tenantId = "50495309";
    private static final String gettokenApi = "/gettoken.json";
    private static final String dingtalk_app_user = "/rpc/oauth2/dingtalk_app_user.json";
    private static final String get_by_mobiles = "/mozi/employee/get_by_mobiles";
    private static final String getuserinfo_bycode = "/rpc/oauth2/getuserinfo_bycode.json";
    //executableClient要单例,并且使用前要初始化,只需要初始化一次
    private static ExecutableClient executableClient = null;
    @PostConstruct
    public void clientInit(){
        if(executableClient == null){
            synchronized(ExecutableClient.class){
                if(executableClient == null){
                    executableClient = ExecutableClient.getInstance();
                    executableClient.setAccessKey(AppKey);
                    executableClient.setSecretKey(AppSecret);
                    executableClient.setDomainName(DomainName);
                    executableClient.setProtocal("https");
                    executableClient.init();
                }
            }
        }
    }
    /**
     * 获取AccessToken
     * @return
     */
    public String getAccessToken(){
        GetClient getClient = executableClient.newGetClient(gettokenApi);
        //设置参数
        getClient.addParameter("appkey", AppKey);
        getClient.addParameter("appsecret", AppSecret);
        //调用API
        String apiResult = getClient.get();
        logger.info(apiResult);
        //{"success":true,"content":{"data":{"expiresIn":7200,"accessToken":"app_4197121c698246cea9ec660902324edd"},"success":true,"requestId":"276077ca16480212814976877e76c6","responseMessage":"OK","responseCode":"0","bizErrorCode":"0"},"bizErrorCode":"0"}
        JSONObject jsonObject = JSON.parseObject(apiResult);
        if(jsonObject.getBoolean("success")){
            JSONObject content = jsonObject.getJSONObject("content");
            if(content.getBoolean("success")){
                return content.getJSONObject("data").getString("accessToken");
            }
        }
        return null;
    }
    /**
     * 获取用户信息
     * @return
     */
    public JSONObject dingtalk_app_user(String authCode){
        //调用API
        PostClient postClient = executableClient.newPostClient(dingtalk_app_user);
        //设置参数
        postClient.addParameter("access_token", getAccessToken());
        postClient.addParameter("auth_code", authCode);
        //Call API
        String apiResult = postClient.post();
        logger.info(apiResult);
        //{"success":true,"content":{"success":false,"responseMessage":"code失效或不存在","responseCode":"240111","bizErrorCode":"MBS-B001-02-16-240111"}}
        return JSON.parseObject(apiResult);
    }
    /**
     * 根据手机号获取员工账户id
     * @param mobiles
     * @return
     */
    public static JSONArray get_by_mobiles(String mobiles){
        //调用API
        PostClient postClient = executableClient.newPostClient(get_by_mobiles);
        //设置参数
        postClient.addParameter("areaCode", "86");
        //手机号码列表,逗号分隔,最多50个
        postClient.addParameter("mobiles", mobiles);
        postClient.addParameter("tenantId", tenantId);
        postClient.addParameter("namespace", "local");
        //Call API
        String apiResult = postClient.post();
        logger.info(apiResult);
        //{"success":true,"content":{"data":[{"accountId":821685,"mobile":"15859634562","employeeCode":"GE_f27a7231e19f4b31b8f11d2859d1be07","status":0},{"accountId":821606,"mobile":"13559485270","employeeCode":"GE_10933a0f8bc949149143163cba5bb81f","status":0}],"success":true,"requestId":"2760828316480239373806874ed97b","responseMessage":"OK","responseCode":"0","bizErrorCode":"0"},"bizErrorCode":"0"}
        JSONObject jsonObject = JSON.parseObject(apiResult);
        if(jsonObject.getBoolean("success")){
            JSONObject content = jsonObject.getJSONObject("content");
            if(content.getBoolean("success")){
                return content.getJSONArray("data");
            }
        }
        return null;
    }
    public String getuserinfo_bycode(String code){
        //调用API
        PostClient postClient = executableClient.newPostClient(getuserinfo_bycode);
        //设置参数
        postClient.addParameter("access_token", getAccessToken());
        postClient.addParameter("code", code);
        //Call API
        String apiResult = postClient.post();
        logger.info(apiResult);
//        JSONObject jsonObject = JSON.parseObject(apiResult);
//        if(jsonObject.getBoolean("success")){
//            JSONObject content = jsonObject.getJSONObject("content");
//            if(content.getBoolean("success")){
//                return content.getJSONObject("data").getString("accessToken");
//            }
//        }
        return null;
    }
//    public static void main(String[] args) {
//        String mobiles = "13559485270,15859634562";
//        System.out.println(get_by_mobiles(mobiles));
//        getuserinfo_bycode("f826c1a762a54ce6abb01c74dcc3ec000c89b501");
//
//        dingtalk_app_user("f826c1a762a54ce6abb01c74dcc3ec000c89b501");
//    }
}

+ 18 - 16
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/data/SaveDataPushJob.java

@ -107,12 +107,10 @@ public class SaveDataPushJob implements Job {
        Map<String,String> signOlderMap = signOlderList.stream().collect(Collectors.toMap(String::toString,String::toString));
        //签约幼儿id
/*
        String signInfantSql = "SELECT DISTINCT p.id FROM base_patient p INNER JOIN base_service_package_sign_record sr on p.id = sr.patient and sr.`status`=1 and " +
                " p.id not in ("+filterUser+") WHERE p.del = 1 and p.archive_type =2 ";
        List<String> signInfantList = jdbcTemplate.queryForList(signInfantSql, String.class);
        Map<String,String> signInfanMap = signInfantList.stream().collect(Collectors.toMap(String::toString,String::toString));
*/
        //System.out.println(date);
        saveSecurityMonitoringOrder(date,signOlderMap);
@ -261,17 +259,19 @@ public class SaveDataPushJob implements Job {
    //幼儿基本信息
    public void saveInfantInfo(String date){
        String infantInfoSql = "SELECT DISTINCT" +
                " p.`name` AS `name`, TIMESTAMPDIFF(YEAR, p.birthday, CURDATE()) AS age , t.status AS `status` ,h.org_code orgCode,h.org_name AS orgName, p.address AS address,p.create_time AS createTime, p.update_time AS updateTime" +
        String infantInfoSql = "SELECT DISTINCT p.id AS id,o.address AS address,p.name AS `name`,t.status AS `status`,o.name AS `orgName`," +
                " TIMESTAMPDIFF(YEAR, p.birthday, CURDATE()) AS age,p.create_time AS createTime,p.update_time AS updateTime" +
                " FROM" +
                " base_doctor_patient_tmp t" +
                " LEFT JOIN base_patient p ON t.patient = p.id" +
                " LEFT JOIN base_doctor_hospital h ON h.org_code = t.org_code" +
                " base_doctor_patient_tmp t," +
                " base_patient p," +
                " base_org o" +
                " WHERE" +
                " p.archive_type = 2" +
                " t.patient = p.id" +
                " AND p.archive_type = 2" +
                " AND t.del = 1" +
                " AND p.del = 1" +
                " AND t.type = 3" +
                " AND p.update_time >= '"+date +"'";
                " AND t.org_code = o.code" +
                " AND p.update_time >= '2021-05-31'";
        List<Map<String, Object>> infantInfoList = jdbcTemplate.queryForList(infantInfoSql);
        List list = new ArrayList();
        for (Map<String, Object> map : infantInfoList) {
@ -281,7 +281,6 @@ public class SaveDataPushJob implements Job {
            zhBaseInfantInfoDO.setAge(map.get("age").toString());
            zhBaseInfantInfoDO.setName(map.get("name").toString());
            zhBaseInfantInfoDO.setCreateTime(DateUtil.strToDate(map.get("createTime").toString()));
            zhBaseInfantInfoDO.setEnterSchool(map.get("orgCode").toString());
            zhBaseInfantInfoDO.setEnterSchoolName(map.get("orgName").toString());
            zhBaseInfantInfoDO.setUpdateTime(DateUtil.strToDate(map.get("updateTime").toString()));
            zhBaseInfantInfoDO.setIfEnterSchool(map.get("status").toString());
@ -323,28 +322,31 @@ public class SaveDataPushJob implements Job {
        String devicePushLogSql = "SELECT * FROM device_data_push_log WHERE create_time >= '"+date+"' ";
        List<ZhDeviceDataPushLogDO> devicePushLogList = jdbcTemplate.query(devicePushLogSql, new BeanPropertyRowMapper<>(ZhDeviceDataPushLogDO.class));
        zhDeviceDataPushLogDao.save(devicePushLogList);
        devicePushLogList = null;
        //烟感气感实时数据
        String deviceHealthIndexSql ="SELECT * FROM base_device_health_index WHERE create_time >= '"+date+"'";
        List<ZhBaseDeviceHealthIndexDO> deviceHealthIndexList = jdbcTemplate.query(deviceHealthIndexSql, new BeanPropertyRowMapper<>(ZhBaseDeviceHealthIndexDO.class));
        zhBaseDeviceHealthIndexDao.save(deviceHealthIndexList);
        deviceHealthIndexList = null;
        //拐杖
        String yxIndexSql = "SELECT * FROM base_yxdevice_index WHERE create_time >= '"+date+"'";
        List<ZhBaseYxdeviceIndexDO> yxIndexList = jdbcTemplate.query(yxIndexSql, new BeanPropertyRowMapper<>(ZhBaseYxdeviceIndexDO.class));
        zhBaseYxdeviceIndexDao.save(yxIndexList);
        yxIndexList = null;
        //睡眠带
        String sleepSql = "SELECT * FROM base_sleep_device where create_time >= '"+date +"'";
        List<ZhBaseSleepDeviceDO> sleepList = jdbcTemplate.query(sleepSql, new BeanPropertyRowMapper<>(ZhBaseSleepDeviceDO.class));
        zhBaseSleepDeviceDao.save(sleepList);
        sleepList = null;
        //手表
        String sleepX1Sql ="SELECT * FROM base_sleep_x1device WHERE create_time >= '"+date+"'";
        List<ZhBaseSleepX1deviceDO> sleepX1List = jdbcTemplate.query(sleepX1Sql, new BeanPropertyRowMapper<>(ZhBaseSleepX1deviceDO.class));
        zhBaseSleepX1deviceDao.save(sleepX1List);
        sleepX1List = null;
        sleepList = null;
        yxIndexList = null;
        deviceHealthIndexList = null;
        devicePushLogList = null;
    }
    //设备表

+ 13 - 0
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/service/device/InitializeDataJobService.java

@ -56,15 +56,18 @@ public class InitializeDataJobService {
        switch(type){
            case "1":
                //安防监护工单
                System.out.println("初始化安防监护");
                saveDataPushJob.saveSecurityMonitoringOrder(date,signOlderMap);
                break;
            case "2":
                System.out.println("初始化上门辅导");
                //上门辅导工单
                saveDataPushJob.saveDoorCoachOrder(date,jkzlUserMap);
                //上门辅导 服务工单价格
                saveDataPushJob.saveDoorCoachFeeDetail(date);
                break;
            case "3":
                System.out.println("初始化生活照料");
                // 生活照料 工单
                saveDataPushJob.saveLifeCareOrder(date,signOlderMap);
                //生活照料 价格
@ -72,21 +75,28 @@ public class InitializeDataJobService {
                break;
            case "4":
                //紧急救助工单
                System.out.println("初始化紧急救助工单");
                saveDataPushJob.saveEmergencyAssistanceOrder(date,signOlderMap);
                break;
            case "5":
                System.out.println("初始化老人居民信息");
                //老人居民信息
                saveDataPushJob.saveOlderInfo(date,signOlderMap);
                System.out.println("初始化幼儿基本信息");
                //幼儿基本信息
                saveDataPushJob.saveInfantInfo(date);
                System.out.println("初始化服务项");
                //服务项
                saveDataPushJob.saveServicePackageItem(date);
                break;
            case "6":
                System.out.println("初始化设备表");
                //设备表
                saveDataPushJob.saveWlyyDevice(date);
                System.out.println("初始化老人签约信息");
                //老人签约信息
                saveDataPushJob.saveSignOlderInfo(date);
                System.out.println("初始化教师信息");
                //教师信息
                saveDataPushJob.saveTeacherInfo(date);
                break;
@ -96,14 +106,17 @@ public class InitializeDataJobService {
                break;
            case "8":
                //机构
                System.out.println("初始化机构");
                saveDataPushJob.saveOldOrg(date,jkzlOrgMap);
                saveDataPushJob.saveHospitalOrg(date,jkzlOrgMap);
                saveDataPushJob.saveInfantOrg(date,jkzlOrgMap);
                break;
            case "9":
                System.out.println("初始化幼儿 活动 公艺 报名");
                //幼儿 活动 公艺 报名
                saveDataPushJob.saveActivity(date);
                //日常走访
                System.out.println("初始化日常走访");
                saveDataPushJob.saveVisit(date);
                break;
        }