瀏覽代碼

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

liubing 4 年之前
父節點
當前提交
62d18854e1
共有 100 個文件被更改,包括 6180 次插入2680 次删除
  1. 26 1
      business/base-service/src/main/java/com/yihu/jw/patient/service/BasePatientService.java
  2. 117 0
      common/common-entity/sql记录
  3. 33 0
      common/common-entity/src/main/java/com/yihu/jw/entity/UuidIdentityEntityWithCreateTime.java
  4. 1 4
      common/common-entity/src/main/java/com/yihu/jw/entity/base/org/BaseOrgDO.java
  5. 68 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java
  6. 59 177
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageDO.java
  7. 0 49
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageDetailTimeDO.java
  8. 0 97
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageDetailsDO.java
  9. 99 18
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageItemDO.java
  10. 0 125
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageNormcatDO.java
  11. 0 153
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackagePropDO.java
  12. 0 124
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackagePropvalueDO.java
  13. 53 0
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageRecordDO.java
  14. 39 128
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageSignRecordDO.java
  15. 0 124
      common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageSkuDO.java
  16. 90 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/archive/ArchiveDO.java
  17. 313 0
      common/common-entity/src/main/java/com/yihu/jw/entity/care/sign/CapacityAssessmentRecordDO.java
  18. 0 34
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/RehabilitationVO.java
  19. 0 46
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackageDetailTimeVO.java
  20. 0 98
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackageDetailsVO.java
  21. 0 213
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackageLogVO.java
  22. 0 106
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackageNormcatVO.java
  23. 0 156
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackagePropVO.java
  24. 0 126
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackagePropvalueVO.java
  25. 0 196
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackageSignRecordVO.java
  26. 0 133
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackageSkuVO.java
  27. 0 151
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackageVO.java
  28. 16 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/web/ObjEnvelop.java
  29. 7 0
      common/common-rest-model/src/main/java/com/yihu/jw/restmodel/web/PageEnvelop.java
  30. 3 0
      gateway/ag-basic/src/main/resources/application.yml
  31. 6 0
      svr/svr-base/pom.xml
  32. 1 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/servicePackage/ServicePackageDao.java
  33. 0 13
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/servicePackage/ServicePackageDetailTimeDao.java
  34. 0 14
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/servicePackage/ServicePackageDetailsDao.java
  35. 25 0
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/servicePackage/ServicePackageItemDao.java
  36. 0 13
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/servicePackage/ServicePackageNormcatDao.java
  37. 0 13
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/servicePackage/ServicePackagePropDao.java
  38. 0 14
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/servicePackage/ServicePackagePropvalueDao.java
  39. 0 14
      svr/svr-base/src/main/java/com/yihu/jw/base/dao/servicePackage/ServicePackageSkuDao.java
  40. 0 55
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/servicePackage/RehabilitationEndpoint.java
  41. 40 22
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/servicePackage/ServicePackageEndpoint.java
  42. 40 34
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/servicePackage/ServicePackageNormcatEndpoint.java
  43. 2 2
      svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/system/SystemDictEntryEndpoint.java
  44. 0 9
      svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/BaseDoctorService.java
  45. 0 16
      svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageDetailTimeService.java
  46. 0 16
      svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageDetailsService.java
  47. 64 0
      svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageItemService.java
  48. 0 16
      svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageNormcatService.java
  49. 0 16
      svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackagePropService.java
  50. 0 16
      svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackagePropvalueService.java
  51. 43 122
      svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageService.java
  52. 0 16
      svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageSkuService.java
  53. 280 0
      svr/svr-cloud-care/pom.xml
  54. 3 0
      svr/svr-cloud-care/readme.MD
  55. 0 0
      svr/svr-cloud-care/sql/sql
  56. 25 0
      svr/svr-cloud-care/src/main/java/com/yihu/SvrCloudCareApplication.java
  57. 14 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/aop/ObserverRequired.java
  58. 89 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/aop/ObserverRequiredAOP.java
  59. 22 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/aop/ServicesAuth.java
  60. 93 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/aop/ServicesAuthAOP.java
  61. 27 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/config/BeanConfig.java
  62. 18 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/config/SpringSecurityAuditorAware.java
  63. 44 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/config/SwaggerDocs.java
  64. 53 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/family/PatientFamilyMemberDao.java
  65. 15 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/sign/ArchiveDao.java
  66. 14 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/sign/CapacityAssessmentRecordDao.java
  67. 14 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/sign/ServicePackageDao.java
  68. 25 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/sign/ServicePackageItemDao.java
  69. 14 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/sign/ServicePackageRecordDao.java
  70. 17 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/sign/ServicePackageSignRecordDao.java
  71. 42 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/team/BaseTeamDao.java
  72. 54 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/team/BaseTeamMemberDao.java
  73. 122 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/dict/DictEndpoint.java
  74. 64 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/doctor/DoctorEndpoint.java
  75. 354 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/family/FamilyMemberEndpoint.java
  76. 207 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/file_upload/FileUploadEndpoint.java
  77. 40 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/org/OrgEndpoint.java
  78. 96 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/patient/PatientEndpoint.java
  79. 290 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/sign/SignEndpoint.java
  80. 232 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/team/TeamEndpoint.java
  81. 59 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/version/VersionEndpoint.java
  82. 261 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/wechat/WechatCoreController.java
  83. 79 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/wechat/WechatMenuController.java
  84. 87 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/doctor/CareDoctorService.java
  85. 799 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/family/PatientFamilyMemberService.java
  86. 34 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/org/BaseOrgService.java
  87. 107 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/patient/CarePatientService.java
  88. 138 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ArchiveService.java
  89. 127 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/CapacityAssessmentRecordService.java
  90. 21 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageItemService.java
  91. 24 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageRecordService.java
  92. 304 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageService.java
  93. 15 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageSignRecordService.java
  94. 60 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/team/BaseTeamMemberService.java
  95. 218 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/team/BaseTeamService.java
  96. 113 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/wechat/WeiXinAccessTokenUtils.java
  97. 105 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/wechat/WeiXinCoreService.java
  98. 126 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/wechat/WeiXinEventProcess.java
  99. 90 0
      svr/svr-cloud-care/src/main/java/com/yihu/jw/care/useragent/UserAgent.java
  100. 0 0
      svr/svr-cloud-care/src/main/resources/application.yml

+ 26 - 1
business/base-service/src/main/java/com/yihu/jw/patient/service/BasePatientService.java

@ -9,7 +9,6 @@ import com.yihu.jw.hospital.ykyy.service.YkyyService;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.util.ConstantUtils;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.utils.StringUtil;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.mysql.query.BaseJpaService;
import com.yihu.utils.security.MD5;
@ -82,6 +81,32 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ
        result.put("medicareCard",cards);
        return result.toJSONString();
    }
    /**
     * 居民id
     * @param patientId
     * @return
     */
    public String findPatientById(String patientId) throws Exception{
        JSONObject result = new JSONObject();
        if(StringUtils.isEmpty(patientId)){
            result.put("result","parameter patientId is null");
            return result.toString();
        }
        BasePatientDO patientDO = basePatientDao.findById(patientId);
        if(patientDO == null){
            result.put("result","not exist patient for id:"+patientId);
            return result.toString();
        }
        PatientMedicareCardDO card = basePatientMedicardCardService.findByTypeAndPatientCodeAndDel("A_01",patientId,"1");
        if(card != null){
            patientDO.setSsc(card.getCode());
        }
        result.put("patient",patientDO);
        return result.toJSONString();
    }
    /**
     * 获取用户基础信息,参数为空查全部
     * @param nameOrIdcard

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

@ -76,3 +76,120 @@ alter table base.wlyy_door_service_order add `nursing_staff` varchar(50) DEFAULT
alter table base.wlyy_door_service_order add `nursing_staff_name` varchar(50) DEFAULT NULL COMMENT '护理人员name';
alter table base.wlyy_door_service_order add `nursing_staff_type` varchar(50) DEFAULT NULL COMMENT '接单的医生类型:医生,健管师,护士等';
-- 2021-02-24 ysj 医养云照护相关
CREATE TABLE `wlyy_archive` (
  `id` varchar(50) NOT NULL,
  `patient` varchar(50) DEFAULT NULL COMMENT '居民code',
  `sick_name` varchar(50) DEFAULT NULL COMMENT '姓名',
  `archive_operator_name` varchar(50) DEFAULT NULL COMMENT '建档人姓名',
  `doctor_code` varchar(50) DEFAULT NULL COMMENT '医生code',
  `archive_status` int(11) DEFAULT NULL COMMENT '档案状态【1.未管理 2.死亡 3.正常 4.高危】【必填】',
  `archive_time` datetime DEFAULT NULL COMMENT '建档时间',
  `sign_status` tinyint(1) DEFAULT NULL COMMENT '签约状态【0未签约,1已签约】',
  `idcard` varchar(32) DEFAULT NULL COMMENT '身份证',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `index_1` (`patient`,`doctor_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='建档表';
CREATE TABLE `base_capacity_assessment_record` (
  `id` varchar(50) NOT NULL,
  `patient` varchar(50) DEFAULT NULL,
  `name` varchar(50) DEFAULT NULL,
  `sex` tinyint(2) DEFAULT NULL,
  `birthday` datetime DEFAULT NULL,
  `idcard` varchar(20) DEFAULT NULL,
  `mobile` varchar(20) DEFAULT NULL,
  `registered_residence` varchar(100) DEFAULT NULL COMMENT '户籍地',
  `live_address` varchar(100) DEFAULT NULL COMMENT '居住地',
  `assessment_time` datetime DEFAULT NULL COMMENT '评估时间',
  `assessment_address` varchar(100) DEFAULT NULL COMMENT '评估地点',
  `living_ability` tinyint(2) DEFAULT NULL COMMENT '日常生活活动能力等级',
  `cognitive_ability` tinyint(2) DEFAULT NULL COMMENT '认知能力',
  `social_ability` tinyint(2) DEFAULT NULL COMMENT '精神状态与社会交流能力',
  `comprehensive_ability` tinyint(2) DEFAULT NULL COMMENT '能力总体评价',
  `level_conclusion` tinyint(2) DEFAULT NULL COMMENT '等级结论',
  `doctor` varchar(50) DEFAULT NULL,
  `doctor_name` varchar(50) DEFAULT NULL,
  `org_code` varchar(50) DEFAULT NULL,
  `org_name` varchar(50) DEFAULT NULL,
  `status` tinyint(2) DEFAULT NULL COMMENT '认可结果(0未认可,1已认可,2不认可)',
  `sign_time` datetime DEFAULT NULL COMMENT '居民签字时间',
  `sign_url` varchar(255) DEFAULT NULL COMMENT '签字结果图片url',
  `service_package_status` tinyint(2) DEFAULT NULL COMMENT '是否分配服务包(0未分配,1已分配)',
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='能力评估记录';
DROP TABLE IF EXISTS `base_service_package`;
CREATE TABLE `base_service_package` (
  `id` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '服务包名称',
  `type` varchar(1) COLLATE utf8_unicode_ci NOT NULL COMMENT '服务类型(1养老服务、2医疗服务、3安防监护、4慢病管理)',
  `price` decimal(10,2) DEFAULT NULL COMMENT '价格',
  `num` int(10) DEFAULT NULL COMMENT '服务项数量',
  `introduce` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '服务介绍',
  `del` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '是否有效(1生效,0失效)',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=COMPACT COMMENT='服务包表';
-- ----------------------------
-- Table structure for base_service_package_item
-- ----------------------------
DROP TABLE IF EXISTS `base_service_package_item`;
CREATE TABLE `base_service_package_item` (
  `id` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `code` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '服务项code',
  `name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '服务项名称',
  `service_package_id` varchar(50) COLLATE utf8_unicode_ci DEFAULT 'system' COMMENT '服务包id',
  `price` decimal(11,2) DEFAULT '0.00' COMMENT '价格',
  `fee_type` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '收费标准(1免费)',
  `org_code` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '机构编码',
  `org_name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '机构名称',
  `introduce` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '服务简介',
  `del` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '是否生效(1 生效,0 失效)',
  `team_code` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '服务团队code',
  `team_name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '服务团队名称',
  `create_time` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=COMPACT COMMENT='服务项';
-- ----------------------------
-- Table structure for base_service_package_record
-- ----------------------------
DROP TABLE IF EXISTS `base_service_package_record`;
CREATE TABLE `base_service_package_record` (
  `id` varchar(50) NOT NULL,
  `sign_id` varchar(50) DEFAULT NULL COMMENT '签约id',
  `service_package_id` varchar(50) DEFAULT NULL COMMENT '服务包id',
  `patient` varchar(50) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='签约的服务包记录表';
-- ----------------------------
-- Table structure for base_service_package_sign_record
-- ----------------------------
DROP TABLE IF EXISTS `base_service_package_sign_record`;
CREATE TABLE `base_service_package_sign_record` (
  `id` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `patient` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '居民code签约人',
  `name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '居民姓名',
  `sign_doctor` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '签约医生code',
  `sign_doctor_name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '签约医生名称',
  `start_time` datetime DEFAULT NULL COMMENT '服务开始时间',
  `end_time` datetime DEFAULT NULL COMMENT '服务结束时间',
  `status` tinyint(4) DEFAULT NULL COMMENT '状态 0新增,1生效,-1已过期',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=COMPACT COMMENT='服务包签约记录表';
alter table base_patient add `marriage` int(11) DEFAULT NULL COMMENT '婚姻状况【10.未婚 20.已婚 30.丧偶 40.离婚 90.未说明的婚姻状况】';
alter table base_patient add `national` int(11) DEFAULT NULL COMMENT '民族';
alter table base_patient add `blood` int(11) DEFAULT NULL COMMENT '血型【1.A型 2.B型 3.O型 4.AB型 5.不详】';
alter table base_patient add `national_name` varchar(20) DEFAULT NULL COMMENT '民族名称';

+ 33 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/UuidIdentityEntityWithCreateTime.java

@ -0,0 +1,33 @@
package com.yihu.jw.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.util.Date;
/**
 * Created by yeshijie on 2021/2/25.
 */
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class UuidIdentityEntityWithCreateTime extends UuidIdentityEntity {
    //创建时间
    @CreatedDate
    protected Date createTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    @Column(name = "create_time", nullable = false, length = 0,updatable = false)
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 1 - 4
common/common-entity/src/main/java/com/yihu/jw/entity/base/org/BaseOrgDO.java

@ -1,13 +1,10 @@
package com.yihu.jw.entity.base.org;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.StringUtils;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
@ -86,7 +83,7 @@ public class BaseOrgDO extends UuidIdentityEntityWithOperator {
	private String spell;
    /**
	 * 机构类型: 1.  医疗机构2.  企事业单位3.  政府机关4.  社会团体 5.药店 0.  部门 6.单位或者独立子公司7.基层机构 8.专业公共机构
	 * 机构类型: 1. 等级医院2. 社区医院3.  养老机构
	 */
	private String type;

+ 68 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java

@ -6,6 +6,7 @@ import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
@ -247,6 +248,28 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
    private String cardType;
    private String alipayId;//支付宝id
    /**
     * 婚姻状况【10.未婚 20.已婚 30.丧偶 40.离婚 90.未说明的婚姻状况】
     */
    private Integer marriage;
    /**
     * '民族'
     */
    private Integer national;
    /**
     * 血型【1.A型 2.B型 3.O型 4.AB型 5.不详】
     */
    private Integer blood;
    /**
     * '民族名称'
     */
    private String nationalName;
    /**
     * 医保卡号
     */
    private String ssc;
    public String getCardType() {
        return cardType;
    }
@ -698,4 +721,49 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
    public void setAlipayId(String alipayId) {
        this.alipayId = alipayId;
    }
    @Column(name = "marriage")
    public Integer getMarriage() {
        return marriage;
    }
    public void setMarriage(Integer marriage) {
        this.marriage = marriage;
    }
    @Column(name = "national")
    public Integer getNational() {
        return national;
    }
    public void setNational(Integer national) {
        this.national = national;
    }
    @Column(name = "blood")
    public Integer getBlood() {
        return blood;
    }
    public void setBlood(Integer blood) {
        this.blood = blood;
    }
    @Column(name = "national_name")
    public String getNationalName() {
        return nationalName;
    }
    public void setNationalName(String nationalName) {
        this.nationalName = nationalName;
    }
    @Transient
    public String getSsc() {
        return ssc;
    }
    public void setSsc(String ssc) {
        this.ssc = ssc;
    }
}

+ 59 - 177
common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageDO.java

@ -1,13 +1,15 @@
package com.yihu.jw.entity.base.servicePackage;
import com.yihu.jw.entity.UuidIdentityEntity;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.team.BaseTeamDO;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import java.util.List;
/**
@ -16,127 +18,22 @@ import java.util.List;
 */
@Entity
@Table(name = "base_service_package")
public class ServicePackageDO extends UuidIdentityEntity implements Serializable {
    public enum Level {
        system("系统", "0"),
        hospital("社区", "1"),
        saas("租户", "2");
        private String name;
        private String value;
        Level(String name, String value) {
            this.name = name;
            this.value = value;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getValue() {
            return value;
        }
        public void setValue(String value) {
            this.value = value;
        }
    }
    public enum Status {
        waiting("待审核", "0"),
        pass("审核通过", "1"),
        unpass("审核不通过", "2");
        private String name;
        private String value;
        Status(String name, String value) {
            this.name = name;
            this.value = value;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getValue() {
            return value;
        }
        public void setValue(String value) {
            this.value = value;
        }
    }
    private String provinceCode;
    private String provinceName;
    private String cityCode;
    private String cityName;
    private String saasId;
    private String name;//服务包名称
    private Integer num;//服务项数量
    private Long price;//预售价//单位分
    private String organization;//发布机构
    private String organizationName;//发布机构名称
    private String level;//服务包级别(0系统,1.医生,2团队,3社区,4区)
    private String creater;//创建者
    private Date createTime;//创建时间
    private String introduce;//服务介绍
    private String endIntroduce;//过期时间说明
    private String status;//审核状态(预留字段0待审核,1审核通过,2审核不通过)
    private Date endTime;//结束时间
    private Integer del;//是否有效(1有效,0失效)
    private Integer sort;//排序
    public String getProvinceCode() {
        return provinceCode;
    }
    public void setProvinceCode(String provinceCode) {
        this.provinceCode = provinceCode;
    }
    public String getProvinceName() {
        return provinceName;
    }
    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }
    public String getCityCode() {
        return cityCode;
    }
    public void setCityCode(String cityCode) {
        this.cityCode = cityCode;
    }
    public String getCityName() {
        return cityName;
    }
public class ServicePackageDO extends UuidIdentityEntityWithCreateTime implements Serializable {
    public void setCityName(String cityName) {
        this.cityName = cityName;
    }
    @Column(name = "saas_id")
    public String getSaasId() {
        return saasId;
    }
    private String name;//'服务包名称'
    private String type;//服务类型(1养老服务、2医疗服务、3安防监护、4慢病管理)
    private BigDecimal price;//价格
    private Integer num;//服务项数量
    private String introduce;//'服务介绍'
    private String del;//'是否有效(1生效,0失效)'
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    private List<ServicePackageItemDO> packageItemDOList;//服务项
    private List<BaseOrgDO> orgDOList;//提供机构
    private List<BaseTeamDO> teamDOList;//服务团队
    private String teamNames;//服务团队
    private String orgNames;//服务机构
    @Column(name = "name")
    public String getName() {
        return name;
    }
@ -145,47 +42,25 @@ public class ServicePackageDO extends UuidIdentityEntity implements Serializable
        this.name = name;
    }
    public Integer getNum() {
        return num;
    @Column(name = "type")
    public String getType() {
        return type;
    }
    public void setNum(Integer num) {
        this.num = num;
    public void setType(String type) {
        this.type = type;
    }
    public Long getPrice() {
    @Column(name = "price")
    public BigDecimal getPrice() {
        return price;
    }
    public void setPrice(Long price) {
    public void setPrice(BigDecimal price) {
        this.price = price;
    }
    public String getLevel() {
        return level;
    }
    public void setLevel(String level) {
        this.level = level;
    }
    public String getCreater() {
        return creater;
    }
    public void setCreater(String creater) {
        this.creater = creater;
    }
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Column(name = "introduce")
    public String getIntroduce() {
        return introduce;
    }
@ -194,59 +69,66 @@ public class ServicePackageDO extends UuidIdentityEntity implements Serializable
        this.introduce = introduce;
    }
    public String getStatus() {
        return status;
    @Column(name = "num")
    public Integer getNum() {
        return num;
    }
    public void setStatus(String status) {
        this.status = status;
    public void setNum(Integer num) {
        this.num = num;
    }
    public Integer getDel() {
    @Column(name = "del")
    public String getDel() {
        return del;
    }
    public void setDel(Integer del) {
    public void setDel(String del) {
        this.del = del;
    }
    public Integer getSort() {
        return sort;
    @Transient
    public List<ServicePackageItemDO> getPackageItemDOList() {
        return packageItemDOList;
    }
    public void setSort(Integer sort) {
        this.sort = sort;
    public void setPackageItemDOList(List<ServicePackageItemDO> packageItemDOList) {
        this.packageItemDOList = packageItemDOList;
    }
    public String getEndIntroduce() {
        return endIntroduce;
    @Transient
    public List<BaseOrgDO> getOrgDOList() {
        return orgDOList;
    }
    public void setEndIntroduce(String endIntroduce) {
        this.endIntroduce = endIntroduce;
    public void setOrgDOList(List<BaseOrgDO> orgDOList) {
        this.orgDOList = orgDOList;
    }
    public String getOrganization() {
        return organization;
    @Transient
    public List<BaseTeamDO> getTeamDOList() {
        return teamDOList;
    }
    public void setOrganization(String organization) {
        this.organization = organization;
    public void setTeamDOList(List<BaseTeamDO> teamDOList) {
        this.teamDOList = teamDOList;
    }
    public String getOrganizationName() {
        return organizationName;
    @Transient
    public String getTeamNames() {
        return teamNames;
    }
    public void setOrganizationName(String organizationName) {
        this.organizationName = organizationName;
    public void setTeamNames(String teamNames) {
        this.teamNames = teamNames;
    }
    public Date getEndTime() {
        return endTime;
    @Transient
    public String getOrgNames() {
        return orgNames;
    }
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    public void setOrgNames(String orgNames) {
        this.orgNames = orgNames;
    }
}

+ 0 - 49
common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageDetailTimeDO.java

@ -1,49 +0,0 @@
package com.yihu.jw.entity.base.servicePackage;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
 * 服务包明细执行时间表
 * @author yeshijie on 2018/8/17.
 */
@Entity
@Table(name = "base_service_package_detail_time")
public class ServicePackageDetailTimeDO extends UuidIdentityEntity implements Serializable {
    private String saasId;
    private String detailId;//服务包明细id
    private Date excutionTime;//执行时间
    @Column(name = "saas_id")
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    @Column(name = "detail_id")
    public String getDetailId() {
        return detailId;
    }
    public void setDetailId(String detailId) {
        this.detailId = detailId;
    }
    @Column(name = "excution_time")
    public Date getExcutionTime() {
        return excutionTime;
    }
    public void setExcutionTime(Date excutionTime) {
        this.excutionTime = excutionTime;
    }
}

+ 0 - 97
common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageDetailsDO.java

@ -1,97 +0,0 @@
package com.yihu.jw.entity.base.servicePackage;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
 * 服务包明细表
 * @author yeshijie on 2018/8/17.
 */
@Entity
@Table(name = "base_service_package_details")
public class ServicePackageDetailsDO extends UuidIdentityEntity implements Serializable {
    private String saasId;
    private String servicePackageId;//服务包id',
    private String code;//服务项目编码',
    private String name;//服务项目名称',
    private Date createTime;//创建时间',
    private Date executionTime;//执行时间',
    private String executionType;//执行类型(1固定时间,2固定次数(不固定时间),3长期)',
    private Integer executionNum;//最少执行次数',
    @Column(name = "saas_id")
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    @Column(name = "service_package_id")
    public String getServicePackageId() {
        return servicePackageId;
    }
    public void setServicePackageId(String servicePackageId) {
        this.servicePackageId = servicePackageId;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Column(name = "execution_type")
    public String getExecutionType() {
        return executionType;
    }
    public void setExecutionType(String executionType) {
        this.executionType = executionType;
    }
    @Column(name = "execution_num")
    public Integer getExecutionNum() {
        return executionNum;
    }
    public void setExecutionNum(Integer executionNum) {
        this.executionNum = executionNum;
    }
    @Column(name = "execution_time")
    public Date getExecutionTime() {
        return executionTime;
    }
    public void setExecutionTime(Date executionTime) {
        this.executionTime = executionTime;
    }
}

+ 99 - 18
common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageItemDO.java

@ -1,22 +1,31 @@
package com.yihu.jw.entity.base.servicePackage;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.math.BigDecimal;
/**
 * Created by Trick on 2018/11/26.
 * Created by yeshijie on 2021/2/23.
 */
@Entity
@Table(name = "base_service_package_item")
public class ServicePackageItemDO extends UuidIdentityEntityWithOperator implements java.io.Serializable {
public class ServicePackageItemDO extends UuidIdentityEntity implements java.io.Serializable {
    private String servicePackageId;//服务包ID
    private String itemName;//服务包名称
    private Double price;//价格
    private String times;//次数/频次
    private String code;//服务包code
    private String name;//服务包名称
    private BigDecimal price;//价格
    private String feeType;//'收费标准(1免费)'
    private String orgCode;//'机构编码'
    private String orgName;//'机构名称'
    private String introduce;//'服务简介'
    private String del;//是否生效(1 生效,0 失效)
    private String teamCode;//'服务团队code'
    private String teamName;//'服务团队名称'
    private String createTime;//
    @Column(name = "service_package_id")
    public String getServicePackageId() {
@ -27,30 +36,102 @@ public class ServicePackageItemDO extends UuidIdentityEntityWithOperator impleme
        this.servicePackageId = servicePackageId;
    }
    @Column(name = "item_name")
    public String getItemName() {
        return itemName;
    @Column(name = "code")
    public String getCode() {
        return code;
    }
    public void setItemName(String itemName) {
        this.itemName = itemName;
    public void setCode(String code) {
        this.code = code;
    }
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "price")
    public Double getPrice() {
    public BigDecimal getPrice() {
        return price;
    }
    public void setPrice(Double price) {
    public void setPrice(BigDecimal price) {
        this.price = price;
    }
    @Column(name = "times")
    public String getTimes() {
        return times;
    @Column(name = "fee_type")
    public String getFeeType() {
        return feeType;
    }
    public void setFeeType(String feeType) {
        this.feeType = feeType;
    }
    @Column(name = "org_code")
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    @Column(name = "org_name")
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
    @Column(name = "introduce")
    public String getIntroduce() {
        return introduce;
    }
    public void setIntroduce(String introduce) {
        this.introduce = introduce;
    }
    @Column(name = "del")
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
    @Column(name = "team_code")
    public String getTeamCode() {
        return teamCode;
    }
    public void setTeamCode(String teamCode) {
        this.teamCode = teamCode;
    }
    @Column(name = "team_name")
    public String getTeamName() {
        return teamName;
    }
    public void setTeamName(String teamName) {
        this.teamName = teamName;
    }
    @Column(name = "create_time")
    public String getCreateTime() {
        return createTime;
    }
    public void setTimes(String times) {
        this.times = times;
    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
}

+ 0 - 125
common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageNormcatDO.java

@ -1,125 +0,0 @@
package com.yihu.jw.entity.base.servicePackage;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
 * 服务包类目表
 * @author yeshijie on 2018/8/29.
 */
@Entity
@Table(name = "base_service_package_normcat")
public class ServicePackageNormcatDO extends UuidIdentityEntity implements Serializable {
    private String saasId;
    private Long cid;//商品所属类目ID
    private Long parentCid;//父类目ID=0时,代表的是一级的类目
    private String name;//类目名称
    private Integer isParent;//该类目是否为父类目(即:该类目是否还有子类目),1为true,0为false
    private Long sortOrder;//排列序号,表示同级类目的展现次序,如数值相等则按名称次序排列。取值范围:大于零的整数
    private String alias;//alias
    private String picUrl;//类型图片
    private String simpleName;//分类简称
    private Date createTime;//创建时间
    private Integer del;//状态。可选值:1(正常),0(删除)
    @Column(name = "saas_id")
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    public Long getCid() {
        return cid;
    }
    public void setCid(Long cid) {
        this.cid = cid;
    }
    @Column(name = "parent_cid")
    public Long getParentCid() {
        return parentCid;
    }
    public void setParentCid(Long parentCid) {
        this.parentCid = parentCid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "is_parent")
    public Integer getIsParent() {
        return isParent;
    }
    public void setIsParent(Integer isParent) {
        this.isParent = isParent;
    }
    @Column(name = "sort_order")
    public Long getSortOrder() {
        return sortOrder;
    }
    public void setSortOrder(Long sortOrder) {
        this.sortOrder = sortOrder;
    }
    public String getAlias() {
        return alias;
    }
    public void setAlias(String alias) {
        this.alias = alias;
    }
    @Column(name = "pic_url")
    public String getPicUrl() {
        return picUrl;
    }
    public void setPicUrl(String picUrl) {
        this.picUrl = picUrl;
    }
    @Column(name = "simple_name")
    public String getSimpleName() {
        return simpleName;
    }
    public void setSimpleName(String simpleName) {
        this.simpleName = simpleName;
    }
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
}

+ 0 - 153
common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackagePropDO.java

@ -1,153 +0,0 @@
package com.yihu.jw.entity.base.servicePackage;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
 * 服务包属性表
 * @author yeshijie on 2018/8/29.
 */
@Entity
@Table(name = "base_service_package_prop")
public class ServicePackagePropDO extends UuidIdentityEntity implements Serializable {
    private String saasId;
    private Long pid;//属性 ID
    private Long parentPid;//上级属性ID
    private Long parentVid;//上级属性值ID
    private String name;//属性名
    private Integer isKeyProp;//是否关键属性。可选值:true(是),false(否)
    private Integer isSaleProp;//是否销售属性。可选值:true(是),false(否)
    private Integer isItemProp;//是否商品属性。可选值:true(是),false(否)
    private Integer must;//是否为必选属性。可选值:true(是),false(否)
    private Integer multi;//是否可以多选。可选值:true(是),false(否)
    private Long sortOrder;
    private Long cid;//类目ID
    private Date createTime;
    private Integer del;//状态。可选值:1(正常),0(删除)
    @Column(name = "saas_id")
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    public Long getPid() {
        return pid;
    }
    public void setPid(Long pid) {
        this.pid = pid;
    }
    @Column(name = "parent_pid")
    public Long getParentPid() {
        return parentPid;
    }
    public void setParentPid(Long parentPid) {
        this.parentPid = parentPid;
    }
    @Column(name = "parent_vid")
    public Long getParentVid() {
        return parentVid;
    }
    public void setParentVid(Long parentVid) {
        this.parentVid = parentVid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "is_key_prop")
    public Integer getIsKeyProp() {
        return isKeyProp;
    }
    public void setIsKeyProp(Integer isKeyProp) {
        this.isKeyProp = isKeyProp;
    }
    @Column(name = "is_sale_prop")
    public Integer getIsSaleProp() {
        return isSaleProp;
    }
    public void setIsSaleProp(Integer isSaleProp) {
        this.isSaleProp = isSaleProp;
    }
    @Column(name = "is_item_prop")
    public Integer getIsItemProp() {
        return isItemProp;
    }
    public void setIsItemProp(Integer isItemProp) {
        this.isItemProp = isItemProp;
    }
    public Integer getMust() {
        return must;
    }
    public void setMust(Integer must) {
        this.must = must;
    }
    public Integer getMulti() {
        return multi;
    }
    public void setMulti(Integer multi) {
        this.multi = multi;
    }
    @Column(name = "sort_order")
    public Long getSortOrder() {
        return sortOrder;
    }
    public void setSortOrder(Long sortOrder) {
        this.sortOrder = sortOrder;
    }
    public Long getCid() {
        return cid;
    }
    public void setCid(Long cid) {
        this.cid = cid;
    }
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
}

+ 0 - 124
common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackagePropvalueDO.java

@ -1,124 +0,0 @@
package com.yihu.jw.entity.base.servicePackage;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
 * 服务包属性值表
 * @author yeshijie on 2018/8/29.
 */
@Entity
@Table(name = "base_service_package_propvalue")
public class ServicePackagePropvalueDO extends UuidIdentityEntity implements Serializable {
    private String saasId;
    private Long cid;//类目ID',
    private Long pid;//属性 ID',
    private String propName;//属性名',
    private Long vid;//属性值ID',
    private String name;//属性值',
    private String nameAlias;//属性值别名',
    private Integer isParent;//是否为父类目属性',
    private Long sortOrder;//排列序号。取值范围:大于零的整数',
    private Date createTime;
    private Integer del;//状态。可选值:1(正常),0(删除)',
    @Column(name = "saas_id")
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    public Long getCid() {
        return cid;
    }
    public void setCid(Long cid) {
        this.cid = cid;
    }
    public Long getPid() {
        return pid;
    }
    public void setPid(Long pid) {
        this.pid = pid;
    }
    @Column(name = "prop_name")
    public String getPropName() {
        return propName;
    }
    public void setPropName(String propName) {
        this.propName = propName;
    }
    public Long getVid() {
        return vid;
    }
    public void setVid(Long vid) {
        this.vid = vid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "name_alias")
    public String getNameAlias() {
        return nameAlias;
    }
    public void setNameAlias(String nameAlias) {
        this.nameAlias = nameAlias;
    }
    @Column(name = "is_parent")
    public Integer getIsParent() {
        return isParent;
    }
    public void setIsParent(Integer isParent) {
        this.isParent = isParent;
    }
    @Column(name = "sort_order")
    public Long getSortOrder() {
        return sortOrder;
    }
    public void setSortOrder(Long sortOrder) {
        this.sortOrder = sortOrder;
    }
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
}

+ 53 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageRecordDO.java

@ -0,0 +1,53 @@
package com.yihu.jw.entity.base.servicePackage;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
/**
 * 签约的服务包记录表
 * Created by yeshijie on 2021/2/25.
 */
@Entity
@Table(name = "base_service_package_record")
public class ServicePackageRecordDO extends UuidIdentityEntityWithCreateTime implements Serializable {
    /**
     * '签约id'
     */
    private String signId;
    /**
     * '服务包id'
     */
    private String servicePackageId;
    /**
     * 居民id
     */
    private String patient;
    public String getSignId() {
        return signId;
    }
    public void setSignId(String signId) {
        this.signId = signId;
    }
    public String getServicePackageId() {
        return servicePackageId;
    }
    public void setServicePackageId(String servicePackageId) {
        this.servicePackageId = servicePackageId;
    }
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
}

+ 39 - 128
common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageSignRecordDO.java

@ -1,70 +1,43 @@
package com.yihu.jw.entity.base.servicePackage;
import com.yihu.jw.entity.UuidIdentityEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
 * 服务包签约记录表
 * 签约记录表
 * @author yeshijie on 2018/8/17.
 */
@Entity
@Table(name = "base_service_package_sign_record")
public class ServicePackageSignRecordDO extends UuidIdentityEntity implements Serializable {
public class ServicePackageSignRecordDO extends UuidIdentityEntityWithCreateTime implements Serializable {
    private String saasId;
    private String servicePackageId;//服务包id
    private String servicePackageName;//服务包名称
    private String patient;//居民code
    private String name;//居民姓名
    private String idcard;//居民身份证
    private String ssc;//社保卡号
    private String signDoctor;//签约医生code
    private String signDoctorName;//签约医生名称
    private String hospital;//医院code
    private String hospitalName;//医院名称
    private Long adminTeamCode;//行政团队id
    private Long price;//服务总价
    private Date startTime;//服务开始时间
    private Date endTime;//服务结束时间
    private Integer status;//状态(0待审核,1已同意,待支付,2.支付成功,已生效,-1未通过,-2已取消,-3已过期)
    private String doctorTeamCode;//医生服务团队code
    private String operator;//签约申请人处理人
    private Date createTime;//创建时间
    private Integer sort;//排序:0 待支付,1未通过,2未通过,3待审核,4.生效
    private String cancelReason;//取消原因
    private String reviewReason;//审核原因
    private Integer status;//状态 0新增,1生效,-1已过期
    @Column(name = "saas_id")
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    /**
     * 签约的服务包
     */
    private List<ServicePackageRecordDO> recordDOList;
    @Column(name = "service_package_id")
    public String getServicePackageId() {
        return servicePackageId;
    }
    public void setServicePackageId(String servicePackageId) {
        this.servicePackageId = servicePackageId;
    }
    @Column(name = "service_package_name")
    public String getServicePackageName() {
        return servicePackageName;
    }
    public void setServicePackageName(String servicePackageName) {
        this.servicePackageName = servicePackageName;
    }
    //社区医生
    private String doctorInfo;
    //助老员
    private String helperInfo;
    //服务包
    private String packageInfo;
    public String getPatient() {
        return patient;
@ -82,22 +55,6 @@ public class ServicePackageSignRecordDO extends UuidIdentityEntity implements Se
        this.name = name;
    }
    public String getIdcard() {
        return idcard;
    }
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
    public String getSsc() {
        return ssc;
    }
    public void setSsc(String ssc) {
        this.ssc = ssc;
    }
    @Column(name = "sign_doctor")
    public String getSignDoctor() {
        return signDoctor;
@ -116,41 +73,8 @@ public class ServicePackageSignRecordDO extends UuidIdentityEntity implements Se
        this.signDoctorName = signDoctorName;
    }
    public String getHospital() {
        return hospital;
    }
    public void setHospital(String hospital) {
        this.hospital = hospital;
    }
    @Column(name = "hospital_name")
    public String getHospitalName() {
        return hospitalName;
    }
    public void setHospitalName(String hospitalName) {
        this.hospitalName = hospitalName;
    }
    @Column(name = "admin_team_code")
    public Long getAdminTeamCode() {
        return adminTeamCode;
    }
    public void setAdminTeamCode(Long adminTeamCode) {
        this.adminTeamCode = adminTeamCode;
    }
    public Long getPrice() {
        return price;
    }
    public void setPrice(Long price) {
        this.price = price;
    }
    @Column(name = "start_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getStartTime() {
        return startTime;
    }
@ -160,6 +84,7 @@ public class ServicePackageSignRecordDO extends UuidIdentityEntity implements Se
    }
    @Column(name = "end_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getEndTime() {
        return endTime;
    }
@ -176,53 +101,39 @@ public class ServicePackageSignRecordDO extends UuidIdentityEntity implements Se
        this.status = status;
    }
    @Column(name = "doctor_team_code")
    public String getDoctorTeamCode() {
        return doctorTeamCode;
    }
    public void setDoctorTeamCode(String doctorTeamCode) {
        this.doctorTeamCode = doctorTeamCode;
    }
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getOperator() {
        return operator;
    @Transient
    public List<ServicePackageRecordDO> getRecordDOList() {
        return recordDOList;
    }
    public void setOperator(String operator) {
        this.operator = operator;
    public void setRecordDOList(List<ServicePackageRecordDO> recordDOList) {
        this.recordDOList = recordDOList;
    }
    public Integer getSort() {
        return sort;
    @Transient
    public String getDoctorInfo() {
        return doctorInfo;
    }
    public void setSort(Integer sort) {
        this.sort = sort;
    public void setDoctorInfo(String doctorInfo) {
        this.doctorInfo = doctorInfo;
    }
    public String getCancelReason() {
        return cancelReason;
    @Transient
    public String getHelperInfo() {
        return helperInfo;
    }
    public void setCancelReason(String cancelReason) {
        this.cancelReason = cancelReason;
    public void setHelperInfo(String helperInfo) {
        this.helperInfo = helperInfo;
    }
    public String getReviewReason() {
        return reviewReason;
    @Transient
    public String getPackageInfo() {
        return packageInfo;
    }
    public void setReviewReason(String reviewReason) {
        this.reviewReason = reviewReason;
    public void setPackageInfo(String packageInfo) {
        this.packageInfo = packageInfo;
    }
}

+ 0 - 124
common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageSkuDO.java

@ -1,124 +0,0 @@
package com.yihu.jw.entity.base.servicePackage;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
 * 服务包sku表
 * @author yeshijie on 2018/8/29.
 */
@Entity
@Table(name = "base_service_package_sku")
public class ServicePackageSkuDO extends UuidIdentityEntity implements Serializable {
    private String saasId;//
    private String servicePackageId;//服务包id',
    private String properties;//sku的销售属性组合字符串(颜色,大小,等等,可通过类目API获取某类目下的销售属性),格式是p1:v1;p2:v2',
    private Long quantity;//属于这个sku的商品的数量,',
    private Long price;//属于这个sku的商品的价格 取值范围:0-100000000;单位:分。如:200,表示:2元。',
    private String propertiesName;//sku所对应的销售属性的中文名字串,格式如:pid1:vid1:pid_name1:vid_name1;pid2:vid2:pid_name2:vid_name2……',
    private String barcode;//商品级别的条形码',
    private Long minPrice;//促销价',
    private Date createTime;//sku创建日期 时间格式:yyyy-MM-dd HH:mm:ss',
    private Date updateTime;//sku最后修改日期 时间格式:yyyy-MM-dd HH:mm:ss',
    private Integer del;//sku状态。 1:正常 ;0:删除',
    @Column(name = "saas_id")
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    @Column(name = "service_package_id")
    public String getServicePackageId() {
        return servicePackageId;
    }
    public void setServicePackageId(String servicePackageId) {
        this.servicePackageId = servicePackageId;
    }
    public String getProperties() {
        return properties;
    }
    public void setProperties(String properties) {
        this.properties = properties;
    }
    public Long getQuantity() {
        return quantity;
    }
    public void setQuantity(Long quantity) {
        this.quantity = quantity;
    }
    public Long getPrice() {
        return price;
    }
    public void setPrice(Long price) {
        this.price = price;
    }
    @Column(name = "properties_name")
    public String getPropertiesName() {
        return propertiesName;
    }
    public void setPropertiesName(String propertiesName) {
        this.propertiesName = propertiesName;
    }
    public String getBarcode() {
        return barcode;
    }
    public void setBarcode(String barcode) {
        this.barcode = barcode;
    }
    @Column(name = "min_price")
    public Long getMinPrice() {
        return minPrice;
    }
    public void setMinPrice(Long minPrice) {
        this.minPrice = minPrice;
    }
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Column(name = "update_time")
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
}

+ 90 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/archive/ArchiveDO.java

@ -0,0 +1,90 @@
package com.yihu.jw.entity.care.archive;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by yeshijie on 2021/2/25.
 */
@Entity
@Table(name = "wlyy_archive")
public class ArchiveDO extends UuidIdentityEntity {
    private String patient;//唯一标识code
    private String sickName;//姓名
    private String archiveOperatorName;// 建档人姓名
    private String doctorCode;// 医生code
    private int archiveStatus;//档案状态【1.未管理 2.死亡 3.正常 4.高危】【必填】
    private Date archiveTime;//建档时间
    private int signStatus;// 签约状态【0未签约,1已签约】
    private String idcard;//身份证
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    public int getSignStatus() {
        return signStatus;
    }
    public void setSignStatus(int signStatus) {
        this.signStatus = signStatus;
    }
    public String getSickName() {
        return sickName;
    }
    public void setSickName(String sickName) {
        this.sickName = sickName;
    }
    public String getArchiveOperatorName() {
        return archiveOperatorName;
    }
    public void setArchiveOperatorName(String archiveOperatorName) {
        this.archiveOperatorName = archiveOperatorName;
    }
    public String getDoctorCode() {
        return doctorCode;
    }
    public void setDoctorCode(String doctorCode) {
        this.doctorCode = doctorCode;
    }
    public int getArchiveStatus() {
        return archiveStatus;
    }
    public void setArchiveStatus(int archiveStatus) {
        this.archiveStatus = archiveStatus;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getArchiveTime() {
        return archiveTime;
    }
    public void setArchiveTime(Date archiveTime) {
        this.archiveTime = archiveTime;
    }
    public String getIdcard() {
        return idcard;
    }
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
}

+ 313 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/sign/CapacityAssessmentRecordDO.java

@ -0,0 +1,313 @@
package com.yihu.jw.entity.care.sign;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
/**
 * Created by yeshijie on 2021/2/25.
 */
@Entity
@Table(name = "base_capacity_assessment_record")
public class CapacityAssessmentRecordDO extends UuidIdentityEntityWithCreateTime {
    private String patient;
    /**
     * 姓名
     */
    private String name;
    /**
     * 生日
     */
    private Date birthday;
    /**
     * 性别,1男,2女
     */
    private Integer sex;
    /**
     * 手机号
     */
    private String mobile;
    /**
     * 身份证
     */
    private String idcard;
    /**
     * 户籍地
     */
    private String registeredResidence;
    /**
     * 居住地
     */
    private String liveAddress;
    /**
     * 评估时间
     */
    private Date assessmentTime;
    /**
     * 评估地点
     */
    private String assessmentAddress;
    /**
     * 日常生活活动能力等级
     * 能力完好(0级) 轻度受损(1级) 中度受损(2级) 重度受损(3级)
     */
    private Integer livingAbility;
    /**
     * 认知能力
     * 能力完好(0级) 轻度受损(1级) 中度受损(2级) 重度受损(3级)
     */
    private Integer cognitiveAbility;
    /**
     *精神状态与社会交流能力
     * 能力完好(0级) 轻度受损(1级) 中度受损(2级) 重度受损(3级)
     */
    private Integer socialAbility;
    /**
     * 能力总体评价
     * 能力完好(0级) 轻度失能(1级) 中度失能(2级) 重度失能(3级)
     */
    private Integer comprehensiveAbility;
    /**
     * 等级结论
     * 能力完好(0级) 轻度失能(1级) 中度失能(2级) 重度失能(3级)
     */
    private Integer levelConclusion;
    private String doctor;
    private String doctorName;
    private String orgCode;
    private String orgName;
    /**
     * 认可结果(0未认可,1已认可,2不认可)
     */
    private Integer status;
    /**
     * 签字结果图片url
     */
    private String signUrl;
    /**
     * 居民签字时间
     */
    private Date signTime;
    /**
     * 是否分配服务包(0未分配,1已分配)
     */
    private Integer servicePackageStatus;
    /**
     * 年纪
     */
    private Integer age;
    private String photo;
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public Integer getSex() {
        return sex;
    }
    public void setSex(Integer sex) {
        this.sex = sex;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public String getIdcard() {
        return idcard;
    }
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
    public String getRegisteredResidence() {
        return registeredResidence;
    }
    public void setRegisteredResidence(String registeredResidence) {
        this.registeredResidence = registeredResidence;
    }
    public String getLiveAddress() {
        return liveAddress;
    }
    public void setLiveAddress(String liveAddress) {
        this.liveAddress = liveAddress;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getAssessmentTime() {
        return assessmentTime;
    }
    public void setAssessmentTime(Date assessmentTime) {
        this.assessmentTime = assessmentTime;
    }
    public String getAssessmentAddress() {
        return assessmentAddress;
    }
    public void setAssessmentAddress(String assessmentAddress) {
        this.assessmentAddress = assessmentAddress;
    }
    public Integer getLivingAbility() {
        return livingAbility;
    }
    public void setLivingAbility(Integer livingAbility) {
        this.livingAbility = livingAbility;
    }
    public Integer getCognitiveAbility() {
        return cognitiveAbility;
    }
    public void setCognitiveAbility(Integer cognitiveAbility) {
        this.cognitiveAbility = cognitiveAbility;
    }
    public Integer getSocialAbility() {
        return socialAbility;
    }
    public void setSocialAbility(Integer socialAbility) {
        this.socialAbility = socialAbility;
    }
    public Integer getComprehensiveAbility() {
        return comprehensiveAbility;
    }
    public void setComprehensiveAbility(Integer comprehensiveAbility) {
        this.comprehensiveAbility = comprehensiveAbility;
    }
    public Integer getLevelConclusion() {
        return levelConclusion;
    }
    public void setLevelConclusion(Integer levelConclusion) {
        this.levelConclusion = levelConclusion;
    }
    public String getDoctor() {
        return doctor;
    }
    public void setDoctor(String doctor) {
        this.doctor = doctor;
    }
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public String getSignUrl() {
        return signUrl;
    }
    public void setSignUrl(String signUrl) {
        this.signUrl = signUrl;
    }
    public Integer getServicePackageStatus() {
        return servicePackageStatus;
    }
    public void setServicePackageStatus(Integer servicePackageStatus) {
        this.servicePackageStatus = servicePackageStatus;
    }
    public Date getSignTime() {
        return signTime;
    }
    public void setSignTime(Date signTime) {
        this.signTime = signTime;
    }
    @Transient
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Transient
    public String getPhoto() {
        return photo;
    }
    public void setPhoto(String photo) {
        this.photo = photo;
    }
}

+ 0 - 34
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/RehabilitationVO.java

@ -1,34 +0,0 @@
package com.yihu.jw.restmodel.base.servicePackage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
/**
 * @author yeshijie on 2018/8/30.
 */
@ApiModel(value = "RehabilitationVO", description = "康复计划服务包")
public class RehabilitationVO implements Serializable {
    @ApiModelProperty(value = "服务包")
    private ServicePackageVO servicePackageVO;
    @ApiModelProperty(value = "服务包签约信息")
    private ServicePackageSignRecordVO signRecordVO;
    public ServicePackageVO getServicePackageVO() {
        return servicePackageVO;
    }
    public void setServicePackageVO(ServicePackageVO servicePackageVO) {
        this.servicePackageVO = servicePackageVO;
    }
    public ServicePackageSignRecordVO getSignRecordVO() {
        return signRecordVO;
    }
    public void setSignRecordVO(ServicePackageSignRecordVO signRecordVO) {
        this.signRecordVO = signRecordVO;
    }
}

+ 0 - 46
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackageDetailTimeVO.java

@ -1,46 +0,0 @@
package com.yihu.jw.restmodel.base.servicePackage;
import com.yihu.jw.restmodel.UuidIdentityVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
/**
 * 服务包明细执行时间表
 * @author yeshijie on 2018/8/17.
 */
@ApiModel(value = "ServicePackageDetailTimeVO", description = "服务包明细执行时间表")
public class ServicePackageDetailTimeVO extends UuidIdentityVO {
    @ApiModelProperty(value = "saas id", example = "EwC0iRSrcS")
    private String saasId;
    @ApiModelProperty(value = "服务包明细id", example = "EwC0iRSrcS")
    private String detailId;//服务包明细id
    @ApiModelProperty(value = "执行时间")
    private Date excutionTime;//执行时间
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    public String getDetailId() {
        return detailId;
    }
    public void setDetailId(String detailId) {
        this.detailId = detailId;
    }
    public Date getExcutionTime() {
        return excutionTime;
    }
    public void setExcutionTime(Date excutionTime) {
        this.excutionTime = excutionTime;
    }
}

+ 0 - 98
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackageDetailsVO.java

@ -1,98 +0,0 @@
package com.yihu.jw.restmodel.base.servicePackage;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.restmodel.UuidIdentityVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
/**
 *
 * @author yeshijie on 2018/8/17.
 */
@ApiModel(value = "ServicePackageDetailsVO", description = "服务包明细表")
public class ServicePackageDetailsVO extends UuidIdentityVO {
    @ApiModelProperty(value = "saas id", example = "EwC0iRSrcS")
    private String saasId;
    @ApiModelProperty(value = "服务包id", example = "EwC0iRSrcS")
    private String servicePackageId;//服务包id',
    @ApiModelProperty(value = "服务项目编码", example = "EwC0iRSrcS")
    private String code;//服务项目编码',
    @ApiModelProperty(value = "服务项目名称", example = "康复计划")
    private String name;//服务项目名称',
    @ApiModelProperty(value = "创建时间")
    private Date createTime;//创建时间',
    @ApiModelProperty(value = "执行时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+08:00")
    private Date executionTime;//执行时间',
    @ApiModelProperty(value = "执行类型", example = "1")
    private String executionType;//执行类型(1固定时间,2固定次数(不固定时间),3长期)',
    @ApiModelProperty(value = "最少执行次数", example = "1")
    private Integer exceutionNum;//最少执行次数',
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    public String getServicePackageId() {
        return servicePackageId;
    }
    public void setServicePackageId(String servicePackageId) {
        this.servicePackageId = servicePackageId;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getExecutionType() {
        return executionType;
    }
    public void setExecutionType(String executionType) {
        this.executionType = executionType;
    }
    public Integer getExceutionNum() {
        return exceutionNum;
    }
    public void setExceutionNum(Integer exceutionNum) {
        this.exceutionNum = exceutionNum;
    }
    public Date getExecutionTime() {
        return executionTime;
    }
    public void setExecutionTime(Date executionTime) {
        this.executionTime = executionTime;
    }
}

+ 0 - 213
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackageLogVO.java

@ -1,213 +0,0 @@
package com.yihu.jw.restmodel.base.servicePackage;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
/**
 * @author yeshijie on 2018/8/30.
 */
@ApiModel(value = "ServicePackageLogVO", description = "服务包日志")
public class ServicePackageLogVO implements Serializable {
    public enum Flag {
        success("成功", 0),
        failure("失败", 1);
        private String name;
        private int value;
        Flag(String name, int value) {
            this.name = name;
            this.value = value;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getValue() {
            return value;
        }
        public void setValue(int value) {
            this.value = value;
        }
    }
    public enum UserType {
        patient("居民", "1"),
        doctor("医生", "2");
        private String name;
        private String value;
        UserType(String name, String value) {
            this.name = name;
            this.value = value;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getValue() {
            return value;
        }
        public void setValue(String value) {
            this.value = value;
        }
    }
    @ApiModelProperty(value = "uuid")
    private String id;//uuid
    @ApiModelProperty(value = "时间")
    private Date createTime;//时间
    @ApiModelProperty(value = "saasid")
    private String saasId;//saasid
    @ApiModelProperty(value = "服务包id")
    private String sevicePackageId;//服务包id
    @ApiModelProperty(value = "服务包明细id")
    private String sevicePackageDetailId;//服务包明细id
    @ApiModelProperty(value = "医生或者患者code")
    private String userCode;//医生或者患者code
    @ApiModelProperty(value = "医生或者患者name")
    private String userName;//医生或者患者name
    @ApiModelProperty(value = "1 患者 2医生")
    private String userType;// 1 患者 2医生
    @ApiModelProperty(value = "关联类型(1健康指导,2健康文章,3代预约)")
    private String relationType;//关联类型(1健康指导,2健康文章,3代预约)
    @ApiModelProperty(value = "关联id")
    private String relationId;//关联id
    @ApiModelProperty(value = "操作说明")
    private String message;//操作说明
    @ApiModelProperty(value = "操作是否成功 1成功 0失败")
    private Integer flag;//操作是否成功 1成功 0失败
    @ApiModelProperty(value = "完成项目数")
    private Integer finish;//完成项目数
    @ApiModelProperty(value = "扩展字段存json")
    private String ext;//扩展字段存json
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    public String getSevicePackageId() {
        return sevicePackageId;
    }
    public void setSevicePackageId(String sevicePackageId) {
        this.sevicePackageId = sevicePackageId;
    }
    public String getSevicePackageDetailId() {
        return sevicePackageDetailId;
    }
    public void setSevicePackageDetailId(String sevicePackageDetailId) {
        this.sevicePackageDetailId = sevicePackageDetailId;
    }
    public String getUserCode() {
        return userCode;
    }
    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserType() {
        return userType;
    }
    public void setUserType(String userType) {
        this.userType = userType;
    }
    public String getRelationType() {
        return relationType;
    }
    public void setRelationType(String relationType) {
        this.relationType = relationType;
    }
    public String getRelationId() {
        return relationId;
    }
    public void setRelationId(String relationId) {
        this.relationId = relationId;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public Integer getFlag() {
        return flag;
    }
    public void setFlag(Integer flag) {
        this.flag = flag;
    }
    public Integer getFinish() {
        return finish;
    }
    public void setFinish(Integer finish) {
        this.finish = finish;
    }
    public String getExt() {
        return ext;
    }
    public void setExt(String ext) {
        this.ext = ext;
    }
}

+ 0 - 106
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackageNormcatVO.java

@ -1,106 +0,0 @@
package com.yihu.jw.restmodel.base.servicePackage;
import com.yihu.jw.restmodel.UuidIdentityVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
/**
 * 服务包类目表
 * @author yeshijie on 2018/8/29.
 */
@ApiModel(value = "ServicePackageNormcatVO", description = "服务包类目表")
public class ServicePackageNormcatVO extends UuidIdentityVO {
    @ApiModelProperty(value = "saas id", example = "EwC0iRSrcS")
    private String saasId;
    @ApiModelProperty(value = "商品所属类目ID", example = "465")
    private Long cid;//商品所属类目ID
    @ApiModelProperty(value = "父类目ID", example = "0")
    private Long parentCid;//父类目ID=0时,代表的是一级的类目
    @ApiModelProperty(value = "类目名称", example = "服务")
    private String name;//类目名称
    @ApiModelProperty(value = "别名", example = "福")
    private String alias;//alias
    @ApiModelProperty(value = "类型图片")
    private String picUrl;//类型图片
    @ApiModelProperty(value = "分类简称")
    private String simpleName;//分类简称
    @ApiModelProperty(value = "创建时间")
    private Date createTime;//创建时间
    @ApiModelProperty(value = "状态。可选值:1(正常),0(删除)", example = "1")
    private Integer del;//状态。可选值:1(正常),0(删除)
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    public Long getCid() {
        return cid;
    }
    public void setCid(Long cid) {
        this.cid = cid;
    }
    public Long getParentCid() {
        return parentCid;
    }
    public void setParentCid(Long parentCid) {
        this.parentCid = parentCid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAlias() {
        return alias;
    }
    public void setAlias(String alias) {
        this.alias = alias;
    }
    public String getPicUrl() {
        return picUrl;
    }
    public void setPicUrl(String picUrl) {
        this.picUrl = picUrl;
    }
    public String getSimpleName() {
        return simpleName;
    }
    public void setSimpleName(String simpleName) {
        this.simpleName = simpleName;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
}

+ 0 - 156
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackagePropVO.java

@ -1,156 +0,0 @@
package com.yihu.jw.restmodel.base.servicePackage;
import com.yihu.jw.restmodel.UuidIdentityVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
/**
 *
 * @author yeshijie on 2018/8/29.
 */
@ApiModel(value = "ServicePackagePropVO", description = "服务包属性表")
public class ServicePackagePropVO extends UuidIdentityVO {
    @ApiModelProperty(value = "saasId", example = "xsaasdaqq")
    private String saasId;
    @ApiModelProperty(value = "属性 id", example = "123412")
    private Long pid;//属性 ID
    @ApiModelProperty(value = "上级属性ID", example = "134")
    private Long parentPid;//上级属性ID
    @ApiModelProperty(value = "上级属性值ID", example = "1324")
    private Long parentVid;//上级属性值ID
    @ApiModelProperty(value = "属性名", example = "爱迪生")
    private String name;//属性名
    @ApiModelProperty(value = "是否关键属性", example = "1")
    private Integer isKeyProp;//是否关键属性。可选值:true(是),false(否)
    @ApiModelProperty(value = "是否销售属性", example = "1")
    private Integer isSaleProp;//是否销售属性。可选值:true(是),false(否)
    @ApiModelProperty(value = "是否商品属性", example = "1")
    private Integer isItemProp;//是否商品属性。可选值:true(是),false(否)
    @ApiModelProperty(value = "是否为必选属性", example = "1")
    private Integer must;//是否为必选属性。可选值:true(是),false(否)
    @ApiModelProperty(value = "是否可以多选", example = "1")
    private Integer multi;//是否可以多选。可选值:true(是),false(否)
    @ApiModelProperty(value = "排序", example = "1")
    private Long sortOrder;
    @ApiModelProperty(value = "类目ID", example = "123")
    private Long cid;//类目ID
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    @ApiModelProperty(value = "状态。可选值:1(正常),0(删除)", example = "1")
    private Integer del;//状态。可选值:1(正常),0(删除)
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    public Long getPid() {
        return pid;
    }
    public void setPid(Long pid) {
        this.pid = pid;
    }
    public Long getParentPid() {
        return parentPid;
    }
    public void setParentPid(Long parentPid) {
        this.parentPid = parentPid;
    }
    public Long getParentVid() {
        return parentVid;
    }
    public void setParentVid(Long parentVid) {
        this.parentVid = parentVid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getIsKeyProp() {
        return isKeyProp;
    }
    public void setIsKeyProp(Integer isKeyProp) {
        this.isKeyProp = isKeyProp;
    }
    public Integer getIsSaleProp() {
        return isSaleProp;
    }
    public void setIsSaleProp(Integer isSaleProp) {
        this.isSaleProp = isSaleProp;
    }
    public Integer getIsItemProp() {
        return isItemProp;
    }
    public void setIsItemProp(Integer isItemProp) {
        this.isItemProp = isItemProp;
    }
    public Integer getMust() {
        return must;
    }
    public void setMust(Integer must) {
        this.must = must;
    }
    public Integer getMulti() {
        return multi;
    }
    public void setMulti(Integer multi) {
        this.multi = multi;
    }
    public Long getSortOrder() {
        return sortOrder;
    }
    public void setSortOrder(Long sortOrder) {
        this.sortOrder = sortOrder;
    }
    public Long getCid() {
        return cid;
    }
    public void setCid(Long cid) {
        this.cid = cid;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
}

+ 0 - 126
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackagePropvalueVO.java

@ -1,126 +0,0 @@
package com.yihu.jw.restmodel.base.servicePackage;
import com.yihu.jw.restmodel.UuidIdentityVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
/**
 * 服务包属性值表
 * @author yeshijie on 2018/8/29.
 */
@ApiModel(value = "ServicePackagePropvalueVO", description = "服务包属性值表")
public class ServicePackagePropvalueVO extends UuidIdentityVO {
    @ApiModelProperty(value = "saasId")
    private String saasId;
    @ApiModelProperty(value = "类目ID")
    private Long cid;//类目ID',
    @ApiModelProperty(value = "属性 ID")
    private Long pid;//属性 ID',
    @ApiModelProperty(value = "属性名")
    private String propName;//属性名',
    @ApiModelProperty(value = "属性值ID")
    private Long vid;//属性值ID',
    @ApiModelProperty(value = "属性值")
    private String name;//属性值',
    @ApiModelProperty(value = "属性值别名")
    private String nameAlias;//属性值别名',
    @ApiModelProperty(value = "是否为父类目属性")
    private Integer isParent;//是否为父类目属性',
    @ApiModelProperty(value = "排列序号")
    private Long sortOrder;//排列序号。取值范围:大于零的整数',
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    @ApiModelProperty(value = "状态。可选值:1(正常),0(删除)")
    private Integer del;//',
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    public Long getCid() {
        return cid;
    }
    public void setCid(Long cid) {
        this.cid = cid;
    }
    public Long getPid() {
        return pid;
    }
    public void setPid(Long pid) {
        this.pid = pid;
    }
    public String getPropName() {
        return propName;
    }
    public void setPropName(String propName) {
        this.propName = propName;
    }
    public Long getVid() {
        return vid;
    }
    public void setVid(Long vid) {
        this.vid = vid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getNameAlias() {
        return nameAlias;
    }
    public void setNameAlias(String nameAlias) {
        this.nameAlias = nameAlias;
    }
    public Integer getIsParent() {
        return isParent;
    }
    public void setIsParent(Integer isParent) {
        this.isParent = isParent;
    }
    public Long getSortOrder() {
        return sortOrder;
    }
    public void setSortOrder(Long sortOrder) {
        this.sortOrder = sortOrder;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
}

+ 0 - 196
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackageSignRecordVO.java

@ -1,196 +0,0 @@
package com.yihu.jw.restmodel.base.servicePackage;
import com.yihu.jw.restmodel.UuidIdentityVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
/**
 *
 * @author yeshijie on 2018/8/17.
 */
@ApiModel(value = "ServicePackageSignRecordVO", description = "服务包签约记录表")
public class ServicePackageSignRecordVO extends UuidIdentityVO {
    @ApiModelProperty(value = "saasId", example = "EwC0iRSrcS")
    private String saasId;
    @ApiModelProperty(value = "服务包id", example = "EwC0iRSrcS")
    private String servicePackageId;//服务包id
    @ApiModelProperty(value = "服务包名称", example = "康复计划")
    private String servicePackageName;//服务包名称
    @ApiModelProperty(value = "居民code", example = "EwC0iRSrcS")
    private String patient;//居民code
    @ApiModelProperty(value = "居民姓名", example = "李四")
    private String name;//居民姓名
    @ApiModelProperty(value = "居民身份证", example = "350124199584724")
    private String idcard;//居民身份证
    @ApiModelProperty(value = "社保卡号", example = "568241")
    private String ssc;//社保卡号
    @ApiModelProperty(value = "签约医生code", example = "EwC0iRSrcS")
    private String signDoctor;//签约医生code
    @ApiModelProperty(value = "签约医生名称", example = "张飒")
    private String signDoctorName;//签约医生名称
    @ApiModelProperty(value = "医院code", example = "EwC0iRSrcS")
    private String hospital;//医院code
    @ApiModelProperty(value = "医院名称", example = "第一医院")
    private String hospitalName;//医院名称
    @ApiModelProperty(value = "行政团队id", example = "EwC0iRSrcS")
    private Long adminTeamCode;//行政团队id
    @ApiModelProperty(value = "服务总价", example = "445554")
    private Long price;//服务总价
    @ApiModelProperty(value = "服务开始时间")
    private Date startTime;//服务开始时间
    @ApiModelProperty(value = "服务结束时间")
    private Date endTime;//服务结束时间
    @ApiModelProperty(value = "状态(1新建,2已完成)")
    private String status;//状态(1新建,2已完成)
    @ApiModelProperty(value = "医生服务团队code", example = "EwC0iRSrcS")
    private String doctorTeamCode;//医生服务团队code
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    public String getServicePackageId() {
        return servicePackageId;
    }
    public void setServicePackageId(String servicePackageId) {
        this.servicePackageId = servicePackageId;
    }
    public String getServicePackageName() {
        return servicePackageName;
    }
    public void setServicePackageName(String servicePackageName) {
        this.servicePackageName = servicePackageName;
    }
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getIdcard() {
        return idcard;
    }
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
    public String getSsc() {
        return ssc;
    }
    public void setSsc(String ssc) {
        this.ssc = ssc;
    }
    public String getSignDoctor() {
        return signDoctor;
    }
    public void setSignDoctor(String signDoctor) {
        this.signDoctor = signDoctor;
    }
    public String getSignDoctorName() {
        return signDoctorName;
    }
    public void setSignDoctorName(String signDoctorName) {
        this.signDoctorName = signDoctorName;
    }
    public String getHospital() {
        return hospital;
    }
    public void setHospital(String hospital) {
        this.hospital = hospital;
    }
    public String getHospitalName() {
        return hospitalName;
    }
    public void setHospitalName(String hospitalName) {
        this.hospitalName = hospitalName;
    }
    public Long getAdminTeamCode() {
        return adminTeamCode;
    }
    public void setAdminTeamCode(Long adminTeamCode) {
        this.adminTeamCode = adminTeamCode;
    }
    public Long getPrice() {
        return price;
    }
    public void setPrice(Long price) {
        this.price = price;
    }
    public Date getStartTime() {
        return startTime;
    }
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }
    public Date getEndTime() {
        return endTime;
    }
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public String getDoctorTeamCode() {
        return doctorTeamCode;
    }
    public void setDoctorTeamCode(String doctorTeamCode) {
        this.doctorTeamCode = doctorTeamCode;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 0 - 133
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackageSkuVO.java

@ -1,133 +0,0 @@
package com.yihu.jw.restmodel.base.servicePackage;
import com.yihu.jw.restmodel.UuidIdentityVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.persistence.Column;
import java.util.Date;
/**
 *
 * @author yeshijie on 2018/8/29.
 */
@ApiModel(value = "ServicePackageSkuVO", description = "服务包sku表")
public class ServicePackageSkuVO extends UuidIdentityVO {
    @ApiModelProperty(value = "saasId", example = "xsaasdaqq")
    private String saasId;//
    @ApiModelProperty(value = "服务包id", example = "xsaasdaqq")
    private String servicePackageId;//服务包id',
    @ApiModelProperty(value = "sku的销售属性组合字符串", example = "p1:v1;p2:v2")
    private String properties;//sku的销售属性组合字符串(颜色,大小,等等,可通过类目API获取某类目下的销售属性),格式是p1:v1;p2:v2',
    @ApiModelProperty(value = "属于这个sku的商品的数量", example = "1234")
    private Long quantity;//属于这个sku的商品的数量,',
    @ApiModelProperty(value = "属于这个sku的商品的价格", example = "5600")
    private Long price;//属于这个sku的商品的价格 取值范围:0-100000000;单位:分。如:200,表示:2元。',
    @ApiModelProperty(value = "sku所对应的销售属性的中文名字串", example = "pid1:vid1:pid_name1:vid_name1;")
    private String propertiesName;//sku所对应的销售属性的中文名字串,格式如:pid1:vid1:pid_name1:vid_name1;pid2:vid2:pid_name2:vid_name2……',
    @ApiModelProperty(value = "商品级别的条形码", example = "xsaasdaqq")
    private String barcode;//商品级别的条形码',
    @ApiModelProperty(value = "促销价", example = "123")
    private Long minPrice;//促销价',
    @ApiModelProperty(value = "sku创建日期")
    private Date createTime;//sku创建日期 时间格式:yyyy-MM-dd HH:mm:ss',
    @ApiModelProperty(value = "sku最后修改日期")
    private Date updateTime;//sku最后修改日期 时间格式:yyyy-MM-dd HH:mm:ss',
    @ApiModelProperty(value = "sku状态。 1:正常 ;0:删除", example = "1")
    private Integer del;//sku状态。 1:正常 ;0:删除',
    @Column(name = "saas_id")
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    @Column(name = "service_package_id")
    public String getServicePackageId() {
        return servicePackageId;
    }
    public void setServicePackageId(String servicePackageId) {
        this.servicePackageId = servicePackageId;
    }
    public String getProperties() {
        return properties;
    }
    public void setProperties(String properties) {
        this.properties = properties;
    }
    public Long getQuantity() {
        return quantity;
    }
    public void setQuantity(Long quantity) {
        this.quantity = quantity;
    }
    public Long getPrice() {
        return price;
    }
    public void setPrice(Long price) {
        this.price = price;
    }
    @Column(name = "properties_name")
    public String getPropertiesName() {
        return propertiesName;
    }
    public void setPropertiesName(String propertiesName) {
        this.propertiesName = propertiesName;
    }
    public String getBarcode() {
        return barcode;
    }
    public void setBarcode(String barcode) {
        this.barcode = barcode;
    }
    @Column(name = "min_price")
    public Long getMinPrice() {
        return minPrice;
    }
    public void setMinPrice(Long minPrice) {
        this.minPrice = minPrice;
    }
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    @Column(name = "update_time")
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
}

+ 0 - 151
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/servicePackage/ServicePackageVO.java

@ -1,151 +0,0 @@
package com.yihu.jw.restmodel.base.servicePackage;
import com.yihu.jw.restmodel.UuidIdentityVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.persistence.Column;
import java.util.Date;
import java.util.List;
/**
 *
 * @author yeshijie on 2018/8/17.
 */
@ApiModel(value = "ServicePackageVO", description = "服务包表")
public class ServicePackageVO extends UuidIdentityVO  {
    @ApiModelProperty(value = "saasId", example = "xsaasdaqq")
    private String saasId;
    @ApiModelProperty(value = "服务包名称", example = "服务")
    private String name;//服务包名称
    @ApiModelProperty(value = "服务包类型", example = "1")
    private String type;//服务包类型
    @ApiModelProperty(value = "服务项数量", example = "20")
    private Integer num;//服务项数量
    @ApiModelProperty(value = "预售价", example = "50000")
    private Long price;//预售价//单位分
    @ApiModelProperty(value = "服务包级别(0系统,1.医生,2团队,3社区,4区)", example = "1")
    private String level;//服务包级别(0系统,1.医生,2团队,3社区,4区)
    @ApiModelProperty(value = "关联code", example = "xsaasdaqq")
    private String levelCode;//关联code
    @ApiModelProperty(value = "创建者", example = "张武1")
    private String creater;//创建者
    @ApiModelProperty(value = "创建时间")
    private Date createTime;//创建时间
    @ApiModelProperty(value = "服务介绍", example = "xsaasdaqq")
    private String introduce;//服务介绍
    @ApiModelProperty(value = "审核状态", example = "1")
    private String status;//审核状态(预留字段0待审核,1审核通过,2审核不通过)
    @ApiModelProperty(value = "是否有效(1有效,0失效)", example = "1")
    private Integer del;//是否有效(1有效,0失效)
    @ApiModelProperty(value = "服务项")
    private List<ServicePackageDetailsVO> detailsVOList;
    @Column(name = "saas_id")
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public Integer getNum() {
        return num;
    }
    public void setNum(Integer num) {
        this.num = num;
    }
    public Long getPrice() {
        return price;
    }
    public void setPrice(Long price) {
        this.price = price;
    }
    public String getLevel() {
        return level;
    }
    public void setLevel(String level) {
        this.level = level;
    }
    @Column(name = "level_code")
    public String getLevelCode() {
        return levelCode;
    }
    public void setLevelCode(String levelCode) {
        this.levelCode = levelCode;
    }
    public String getCreater() {
        return creater;
    }
    public void setCreater(String creater) {
        this.creater = creater;
    }
    @Column(name = "create_time")
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getIntroduce() {
        return introduce;
    }
    public void setIntroduce(String introduce) {
        this.introduce = introduce;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public Integer getDel() {
        return del;
    }
    public void setDel(Integer del) {
        this.del = del;
    }
    public List<ServicePackageDetailsVO> getDetailsVOList() {
        return detailsVOList;
    }
    public void setDetailsVOList(List<ServicePackageDetailsVO> detailsVOList) {
        this.detailsVOList = detailsVOList;
    }
}

+ 16 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/web/ObjEnvelop.java

@ -42,10 +42,26 @@ public class ObjEnvelop<J> extends Envelop {
        envelop.setStatus(200);
        return envelop;
    }
    public static ObjEnvelop getSuccess(String message, Object obj,int status) {
        ObjEnvelop envelop = new ObjEnvelop();
        envelop.setMessage(message);
        envelop.setObj(obj);
        envelop.setStatus(status);
        return envelop;
    }
    public static ObjEnvelop getError(String message) {
        ObjEnvelop envelop = new ObjEnvelop();
        envelop.setMessage(message);
        envelop.setStatus(-1);
        return envelop;
    }
    public static ObjEnvelop getError(String message,int errorCode) {
        ObjEnvelop envelop = new ObjEnvelop();
        envelop.setMessage(message);
        envelop.setStatus(errorCode);
        return envelop;
    }
}

+ 7 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/web/PageEnvelop.java

@ -111,6 +111,13 @@ public class PageEnvelop<T> extends Envelop implements Serializable {
        return envelop;
    }
    public static PageEnvelop getError(String message) {
        PageEnvelop envelop = new PageEnvelop();
        envelop.setMessage(message);
        envelop.setStatus(-1);
        return envelop;
    }
    public static PageEnvelop getSuccessList(String message, List objList) {
        PageEnvelop envelop = new PageEnvelop();
        envelop.setMessage(message);

+ 3 - 0
gateway/ag-basic/src/main/resources/application.yml

@ -80,6 +80,9 @@ zuul:
    svr-door-service:
      path: /doorService/**
      serviceId: svr-door-service
    svr-cloud-care:
      path: /cloudCare/**
      serviceId: svr-cloud-care
#---
#spring:

+ 6 - 0
svr/svr-base/pom.xml

@ -182,6 +182,12 @@
            <groupId>com.yihu.jw</groupId>
            <artifactId>base-service</artifactId>
            <version>2.0.0</version>
            <exclusions>
                <exclusion>
                    <groupId>xalan</groupId>
                    <artifactId>xalan</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>

+ 1 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/servicePackage/ServicePackageDao.java

@ -10,4 +10,5 @@ import org.springframework.data.repository.PagingAndSortingRepository;
 */
public interface ServicePackageDao extends PagingAndSortingRepository<ServicePackageDO, String>, JpaSpecificationExecutor<ServicePackageDO> {
}

+ 0 - 13
svr/svr-base/src/main/java/com/yihu/jw/base/dao/servicePackage/ServicePackageDetailTimeDao.java

@ -1,13 +0,0 @@
package com.yihu.jw.base.dao.servicePackage;
import com.yihu.jw.entity.base.servicePackage.ServicePackageDetailTimeDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 *
 * @author yeshijie on 2018/8/17.
 */
public interface ServicePackageDetailTimeDao extends PagingAndSortingRepository<ServicePackageDetailTimeDO, String>, JpaSpecificationExecutor<ServicePackageDetailTimeDO> {
}

+ 0 - 14
svr/svr-base/src/main/java/com/yihu/jw/base/dao/servicePackage/ServicePackageDetailsDao.java

@ -1,14 +0,0 @@
package com.yihu.jw.base.dao.servicePackage;
import com.yihu.jw.entity.base.servicePackage.ServicePackageDetailsDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 *
 * @author yeshijie on 2018/8/17.
 */
public interface ServicePackageDetailsDao extends PagingAndSortingRepository<ServicePackageDetailsDO, String>, JpaSpecificationExecutor<ServicePackageDetailsDO> {
}

+ 25 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/dao/servicePackage/ServicePackageItemDao.java

@ -0,0 +1,25 @@
package com.yihu.jw.base.dao.servicePackage;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by yeshijie on 2021/2/23.
 */
public interface ServicePackageItemDao extends PagingAndSortingRepository<ServicePackageItemDO, String>, JpaSpecificationExecutor<ServicePackageItemDO> {
    @Query("from ServicePackageItemDO w where w.teamCode =?1 and w.code=?2")
    List<ServicePackageItemDO> findByTeamCode(String teamCode,String code);
    @Query("from ServicePackageItemDO w where w.servicePackageId =?1 and w.del='1'")
    List<ServicePackageItemDO> findByServicePackageId(String servicePackageId);
    @Modifying
    @Query("delete from ServicePackageItemDO p where p.servicePackageId=?1")
    void deleteByServicePackageId(String servicePackageId);
}

+ 0 - 13
svr/svr-base/src/main/java/com/yihu/jw/base/dao/servicePackage/ServicePackageNormcatDao.java

@ -1,13 +0,0 @@
package com.yihu.jw.base.dao.servicePackage;
import com.yihu.jw.entity.base.servicePackage.ServicePackageNormcatDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 *
 * @author yeshijie on 2018/8/29.
 */
public interface ServicePackageNormcatDao extends PagingAndSortingRepository<ServicePackageNormcatDO, String>, JpaSpecificationExecutor<ServicePackageNormcatDO> {
}

+ 0 - 13
svr/svr-base/src/main/java/com/yihu/jw/base/dao/servicePackage/ServicePackagePropDao.java

@ -1,13 +0,0 @@
package com.yihu.jw.base.dao.servicePackage;
import com.yihu.jw.entity.base.servicePackage.ServicePackagePropDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 *
 * @author yeshijie on 2018/8/29.
 */
public interface ServicePackagePropDao extends PagingAndSortingRepository<ServicePackagePropDO, String>, JpaSpecificationExecutor<ServicePackagePropDO> {
}

+ 0 - 14
svr/svr-base/src/main/java/com/yihu/jw/base/dao/servicePackage/ServicePackagePropvalueDao.java

@ -1,14 +0,0 @@
package com.yihu.jw.base.dao.servicePackage;
import com.yihu.jw.entity.base.servicePackage.ServicePackagePropvalueDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 *
 * @author yeshijie on 2018/8/29.
 */
public interface ServicePackagePropvalueDao extends PagingAndSortingRepository<ServicePackagePropvalueDO, String>, JpaSpecificationExecutor<ServicePackagePropvalueDO> {
}

+ 0 - 14
svr/svr-base/src/main/java/com/yihu/jw/base/dao/servicePackage/ServicePackageSkuDao.java

@ -1,14 +0,0 @@
package com.yihu.jw.base.dao.servicePackage;
import com.yihu.jw.entity.base.servicePackage.ServicePackageSkuDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 *
 * @author yeshijie on 2018/8/29.
 */
public interface ServicePackageSkuDao extends PagingAndSortingRepository<ServicePackageSkuDO, String>, JpaSpecificationExecutor<ServicePackageSkuDO> {
}

+ 0 - 55
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/servicePackage/RehabilitationEndpoint.java

@ -1,55 +0,0 @@
package com.yihu.jw.base.endpoint.servicePackage;
import com.yihu.jw.base.service.servicePackage.ServicePackageService;
import com.yihu.jw.entity.base.servicePackage.ServicePackageDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageSignRecordDO;
import com.yihu.jw.restmodel.base.servicePackage.RehabilitationVO;
import com.yihu.jw.restmodel.base.servicePackage.ServicePackageLogVO;
import com.yihu.jw.restmodel.base.servicePackage.ServicePackageVO;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.base.BaseRequestMapping;
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.http.MediaType;
import org.springframework.web.bind.annotation.*;
/**
 * @author yeshijie on 2018/8/30.
 */
@RestController
@RequestMapping(value = BaseRequestMapping.BaseRehabilitation.PREFIX, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(value = "康复计划管理", description = "康复计划管理服务接口", tags = {"wlyy基础服务 - 康复计划管理服务接口"})
public class RehabilitationEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private ServicePackageService servicePackageService;
    @PostMapping(value = BaseRequestMapping.BaseRehabilitation.CREATE)
    @ApiOperation(value = "创建")
    public ObjEnvelop<ServicePackageVO> create (
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception{
        RehabilitationVO rehabilitationVO = toDateEntity(jsonData, RehabilitationVO.class);
        ServicePackageSignRecordDO signRecordDO = convertToModel(rehabilitationVO.getSignRecordVO(), ServicePackageSignRecordDO.class);
        ServicePackageDO servicePackageDO = servicePackageService.addRehabilitation(rehabilitationVO,signRecordDO);
        return success(convertToModel(servicePackageDO, ServicePackageVO.class));
    }
    @PostMapping(value = BaseRequestMapping.BaseRehabilitation.CREATELOG)
    @ApiOperation(value = "新增服务包日志")
    public ObjEnvelop<ServicePackageLogVO> addRehabilitationLog(@ApiParam(name = "jsonData", value = "Json数据", required = true)
                          @RequestBody String jsonData) throws Exception{
        ServicePackageLogVO logVO = toEntity(jsonData,ServicePackageLogVO.class);
        return success(servicePackageService.addRehabilitationLog(logVO));
    }
    @GetMapping(value = BaseRequestMapping.BaseRehabilitation.FINDBYID)
    @ApiOperation(value = "查找完成度",notes = "返回值中的obj=完成数")
    public ObjEnvelop getFinish(@ApiParam(name = "servicePackId", value = "服务包id", required = true)
                             @RequestParam(value = "servicePackId") String servicePackId) throws Exception{
        return success(servicePackageService.getFinish(servicePackId));
    }
}

+ 40 - 22
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/servicePackage/ServicePackageEndpoint.java

@ -1,8 +1,10 @@
package com.yihu.jw.base.endpoint.servicePackage;
import com.yihu.jw.base.dao.servicePackage.ServicePackageDao;
import com.yihu.jw.base.dao.servicePackage.ServicePackageItemDao;
import com.yihu.jw.base.service.servicePackage.ServicePackageService;
import com.yihu.jw.entity.base.servicePackage.ServicePackageDO;
import com.yihu.jw.restmodel.base.servicePackage.ServicePackageVO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
@ -12,11 +14,13 @@ import com.yihu.jw.rm.base.BaseRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @author yeshijie on 2018/8/29.
@ -28,15 +32,19 @@ public class ServicePackageEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private ServicePackageService servicePackageService;
    @Autowired
    private ServicePackageDao servicePackageDao;
    @Autowired
    private ServicePackageItemDao servicePackageItemDao;
    @PostMapping(value = BaseRequestMapping.ServicePackage.CREATE)
    @ApiOperation(value = "创建")
    public ObjEnvelop<ServicePackageVO> create (
            @ApiParam(name = "json_data", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception {
    public Envelop create (
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData) throws Exception {
        ServicePackageDO servicePackageDO = toEntity(jsonData, ServicePackageDO.class);
        servicePackageDO = servicePackageService.save(servicePackageDO);
        return success(convertToModel(servicePackageDO, ServicePackageVO.class));
        servicePackageService.create(servicePackageDO);
        return success("操作成功");
    }
    @PostMapping(value = BaseRequestMapping.ServicePackage.DELETE)
@ -48,22 +56,10 @@ public class ServicePackageEndpoint extends EnvelopRestEndpoint {
        return success("删除成功");
    }
    @PostMapping(value = BaseRequestMapping.ServicePackage.UPDATE)
    @ApiOperation(value = "更新")
    public ObjEnvelop<ServicePackageVO> update (
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception {
        ServicePackageDO servicePackageDO = toEntity(jsonData, ServicePackageDO.class);
        if (null == servicePackageDO.getId()) {
            return failed("ID不能为空", ObjEnvelop.class);
        }
        servicePackageDO = servicePackageService.save(servicePackageDO);
        return success(servicePackageDO, ServicePackageVO.class);
    }
    @GetMapping(value = BaseRequestMapping.ServicePackage.PAGE)
    @ApiOperation(value = "获取分页")
    public PageEnvelop<ServicePackageVO> page (
    public PageEnvelop<ServicePackageDO> page (
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
@ -75,13 +71,35 @@ public class ServicePackageEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size) throws Exception {
        List<ServicePackageDO> servicePackageDOS = servicePackageService.search(fields, filters, sorts, page, size);
        for (ServicePackageDO servicePackageDO:servicePackageDOS){
            List<ServicePackageItemDO> itemDOList = servicePackageItemDao.findByServicePackageId(servicePackageDO.getId());
            List<String> orgNames = itemDOList.stream().map(p -> p.getOrgName()).collect(Collectors.toList()).stream().distinct().collect(Collectors.toList());
            List<String> teamNames = itemDOList.stream().map(p -> p.getTeamName()).collect(Collectors.toList()).stream().distinct().collect(Collectors.toList());
            servicePackageDO.setOrgNames(StringUtils.join(orgNames,","));
            servicePackageDO.setTeamNames(StringUtils.join(teamNames,","));
        }
        int count = (int)servicePackageService.getCount(filters);
        return success(servicePackageDOS, count, page, size, ServicePackageVO.class);
        return success(servicePackageDOS, count, page, size);
    }
    @GetMapping(value = "findById")
    @ApiOperation(value = "按id查找")
    public ObjEnvelop<ServicePackageDO> findById (
            @ApiParam(name = "id", value = "id")
            @RequestParam(value = "id", required = true) String id) throws Exception {
        ServicePackageDO servicePackageDO = servicePackageDao.findOne(id);
        List<ServicePackageItemDO> itemDOList = servicePackageItemDao.findByServicePackageId(servicePackageDO.getId());
        List<String> orgNames = itemDOList.stream().map(p -> p.getOrgName()).collect(Collectors.toList()).stream().distinct().collect(Collectors.toList());
        List<String> teamNames = itemDOList.stream().map(p -> p.getTeamName()).collect(Collectors.toList()).stream().distinct().collect(Collectors.toList());
        servicePackageDO.setOrgNames(StringUtils.join(orgNames,","));
        servicePackageDO.setTeamNames(StringUtils.join(teamNames,","));
        servicePackageDO.setPackageItemDOList(itemDOList);
        return success(servicePackageDO);
    }
    @GetMapping(value = BaseRequestMapping.ServicePackage.LIST)
    @ApiOperation(value = "获取列表")
    public ListEnvelop<ServicePackageVO> list (
    public ListEnvelop<ServicePackageDO> list (
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
@ -89,6 +107,6 @@ public class ServicePackageEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
            @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
        List<ServicePackageDO> servicePackageDOS = servicePackageService.search(fields, filters, sorts);
        return success(servicePackageDOS, ServicePackageVO.class);
        return success(servicePackageDOS);
    }
}

+ 40 - 34
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/servicePackage/ServicePackageNormcatEndpoint.java

@ -1,69 +1,73 @@
package com.yihu.jw.base.endpoint.servicePackage;
import com.yihu.jw.base.service.servicePackage.ServicePackageNormcatService;
import com.yihu.jw.entity.base.servicePackage.ServicePackageNormcatDO;
import com.yihu.jw.restmodel.base.servicePackage.ServicePackageNormcatVO;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.base.service.servicePackage.ServicePackageItemService;
import com.yihu.jw.base.util.ConstantUtils;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.base.BaseRequestMapping;
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.http.MediaType;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * @author yeshijie on 2018/9/7.
 * @author yeshijie on 2021/2/23.
 */
@RestController
@RequestMapping(value = BaseRequestMapping.ServicePackageNormcat.PREFIX, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(value = "服务包类目管理", description = "服务包类目管理服务接口", tags = {"wlyy基础服务 - 服务包类目管理服务接口"})
public class ServicePackageNormcatEndpoint extends EnvelopRestEndpoint {
@RequestMapping(value = "servicePackageItem", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(value = "服务项管理", description = "服务项管理服务接口", tags = {"wlyy基础服务 - 服务项管理服务接口"})
public class ServicePackageItemEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private ServicePackageNormcatService servicePackageNormcatService;
    private ServicePackageItemService servicePackageItemService;
    @PostMapping(value = BaseRequestMapping.ServicePackageNormcat.CREATE)
    @PostMapping(value = "create")
    @ApiOperation(value = "创建")
    public ObjEnvelop<ServicePackageNormcatVO> create (
            @ApiParam(name = "json_data", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception {
        ServicePackageNormcatDO normcatDO = toEntity(jsonData, ServicePackageNormcatDO.class);
        normcatDO = servicePackageNormcatService.save(normcatDO);
        return success(convertToModel(normcatDO, ServicePackageNormcatVO.class));
    public Envelop create (
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData) throws Exception {
        ServicePackageItemDO servicePackageItemDO = toEntity(jsonData, ServicePackageItemDO.class);
        JSONObject result = servicePackageItemService.create(servicePackageItemDO);
        if(StringUtils.endsWithIgnoreCase(ConstantUtils.FAIL,result.getString("response"))){
            return failed(result.getString("msg"));
        }
        return success(result.get("msg"));
    }
    @PostMapping(value = BaseRequestMapping.ServicePackageNormcat.DELETE)
    @PostMapping(value = "delete")
    @ApiOperation(value = "删除")
    public Envelop delete(
            @ApiParam(name = "ids", value = "id串,中间用,分隔", required = true)
            @RequestParam(value = "ids") String ids) throws Exception{
        servicePackageNormcatService.delete(ids.split(","));
        servicePackageItemService.delete(ids.split(","));
        return success("删除成功");
    }
    @PostMapping(value = BaseRequestMapping.ServicePackageNormcat.UPDATE)
    @PostMapping(value = "update")
    @ApiOperation(value = "更新")
    public ObjEnvelop<ServicePackageNormcatVO> update (
    public ObjEnvelop<ServicePackageItemDO> update (
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestBody String jsonData) throws Exception {
        ServicePackageNormcatDO normcatDO = toEntity(jsonData, ServicePackageNormcatDO.class);
        if (null == normcatDO.getId()) {
            @RequestParam String jsonData) throws Exception {
        ServicePackageItemDO servicePackageItemDO = toEntity(jsonData, ServicePackageItemDO.class);
        if (null == servicePackageItemDO.getId()) {
            return failed("ID不能为空", ObjEnvelop.class);
        }
        normcatDO = servicePackageNormcatService.save(normcatDO);
        return success(normcatDO, ServicePackageNormcatVO.class);
        servicePackageItemDO = servicePackageItemService.save(servicePackageItemDO);
        return success(servicePackageItemDO);
    }
    @GetMapping(value = BaseRequestMapping.ServicePackageNormcat.PAGE)
    @GetMapping(value = "page")
    @ApiOperation(value = "获取分页")
    public PageEnvelop<ServicePackageNormcatVO> page (
    public PageEnvelop<ServicePackageItemDO> page (
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
@ -74,21 +78,23 @@ public class ServicePackageNormcatEndpoint extends EnvelopRestEndpoint {
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size) throws Exception {
        List<ServicePackageNormcatDO> normcatDOS = servicePackageNormcatService.search(fields, filters, sorts, page, size);
        int count = (int)servicePackageNormcatService.getCount(filters);
        return success(normcatDOS, count, page, size, ServicePackageNormcatVO.class);
        List<ServicePackageItemDO> servicePackageItemDOS = servicePackageItemService.search(fields, filters, sorts, page, size);
        int count = (int)servicePackageItemService.getCount(filters);
        return success(servicePackageItemDOS, count, page, size);
    }
    @GetMapping(value = BaseRequestMapping.ServicePackageNormcat.LIST)
    @GetMapping(value = "list")
    @ApiOperation(value = "获取列表")
    public ListEnvelop<ServicePackageNormcatVO> list (
    public ListEnvelop<ServicePackageItemDO> list (
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
            @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
        List<ServicePackageNormcatDO> normcatDOS = servicePackageNormcatService.search(fields, filters, sorts);
        return success(normcatDOS, ServicePackageNormcatVO.class);
        List<ServicePackageItemDO> servicePackageItemDOS = servicePackageItemService.search(fields, filters, sorts);
        return success(servicePackageItemDOS);
    }
}

+ 2 - 2
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/system/SystemDictEntryEndpoint.java

@ -162,14 +162,14 @@ public class SystemDictEntryEndpoint extends EnvelopRestEndpoint {
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
            @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
        if(StringUtils.isBlank(saasId)){
/*        if(StringUtils.isBlank(saasId)){
            saasId = defaultSaasId;
        }
        if (StringUtils.isBlank(filters)) {
            filters = "saasId=" + saasId+";";
        } else {
            filters = "saasId=" + saasId + ";" + filters;
        }
        }*/
        List<SystemDictEntryDO> systemDictEntryDOS = systemDictEntryService.search(fields, filters, sorts);
        return success(systemDictEntryDOS, SystemDictEntryVO.class);
    }

+ 0 - 9
svr/svr-base/src/main/java/com/yihu/jw/base/service/doctor/BaseDoctorService.java

@ -3,7 +3,6 @@ package com.yihu.jw.base.service.doctor;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sun.tools.corba.se.idl.ExceptionEntry;
import com.yihu.jw.base.dao.dict.DictJobTitleDao;
import com.yihu.jw.base.dao.doctor.BaseDoctorIncentiveDao;
import com.yihu.jw.base.service.dict.DictDoctorDutyService;
@ -33,30 +32,22 @@ import com.yihu.jw.hospital.mapping.dao.DoctorMappingDao;
import com.yihu.jw.hospital.prescription.service.entrance.EntranceService;
import com.yihu.jw.hospital.prescription.service.entrance.XzzxEntranceService;
import com.yihu.jw.hospital.prescription.service.entrance.YkyyEntranceService;
import com.yihu.jw.hospital.prescription.service.entrance.util.MqSdkUtil;
import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.restmodel.base.wx.WxGraphicMessageVO;
import com.yihu.jw.restmodel.base.wx.WxReplySceneVO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.mysql.query.BaseJpaService;
import com.yihu.utils.security.MD5;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.security.core.parameters.P;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.sound.sampled.Mixer;
import java.io.IOException;
import java.util.*;
import java.util.logging.Logger;

+ 0 - 16
svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageDetailTimeService.java

@ -1,16 +0,0 @@
package com.yihu.jw.base.service.servicePackage;
import com.yihu.jw.base.dao.servicePackage.ServicePackageDetailTimeDao;
import com.yihu.jw.entity.base.servicePackage.ServicePackageDetailTimeDO;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.stereotype.Service;
/**
 *
 * @author yeshijie on 2018/8/17.
 */
@Service
public class ServicePackageDetailTimeService extends BaseJpaService<ServicePackageDetailTimeDO, ServicePackageDetailTimeDao> {
}

+ 0 - 16
svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageDetailsService.java

@ -1,16 +0,0 @@
package com.yihu.jw.base.service.servicePackage;
import com.yihu.jw.base.dao.servicePackage.ServicePackageDetailsDao;
import com.yihu.jw.entity.base.servicePackage.ServicePackageDetailsDO;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.stereotype.Service;
/**
 *
 * @author yeshijie on 2018/8/17.
 */
@Service
public class ServicePackageDetailsService extends BaseJpaService<ServicePackageDetailsDO, ServicePackageDetailsDao> {
}

+ 64 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageItemService.java

@ -0,0 +1,64 @@
package com.yihu.jw.base.service.servicePackage;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.base.dao.servicePackage.ServicePackageItemDao;
import com.yihu.jw.base.util.ConstantUtils;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.StringUtil;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
/**
 * Created by yeshijie on 2021/2/23.
 */
@Service
public class ServicePackageItemService extends BaseJpaService<ServicePackageItemDO, ServicePackageItemDao> {
    @Autowired
    private ServicePackageItemDao servicePackageItemDao;
    public JSONObject create(ServicePackageItemDO itemDO){
        JSONObject result = new JSONObject();
/*         if(StringUtils.isEmpty(itemDO.getTeamCode())){
            result.put("msg","请选择服务团队");
            result.put("response", ConstantUtils.FAIL);
            return result;
        }
       List<ServicePackageItemDO> itemDOList = servicePackageItemDao.findByTeamCode(itemDO.getTeamCode(),itemDO.getCode());
        if(itemDOList.size()>0){
            result.put("msg","该服务团队已存在此服务项,请勿重复添加");
            result.put("response", ConstantUtils.FAIL);
            return result;
        }*/
        if(StringUtil.isEmpty(itemDO.getId())){
            //新增
            itemDO.setPrice(new BigDecimal(0));
            itemDO.setServicePackageId("system");
            itemDO.setCreateTime(DateUtil.getStringDate());
            servicePackageItemDao.save(itemDO);
        }else{
            //修改
            ServicePackageItemDO oldItemDO = servicePackageItemDao.findOne(itemDO.getId());
            oldItemDO.setName(itemDO.getName());
            oldItemDO.setDel(itemDO.getDel());
            oldItemDO.setCode(itemDO.getCode());
            oldItemDO.setFeeType(itemDO.getFeeType());
            oldItemDO.setIntroduce(itemDO.getIntroduce());
            oldItemDO.setOrgCode(itemDO.getOrgCode());
            oldItemDO.setOrgName(itemDO.getOrgName());
            oldItemDO.setTeamCode(itemDO.getTeamCode());
            oldItemDO.setTeamName(itemDO.getTeamName());
            servicePackageItemDao.save(oldItemDO);
        }
        result.put("response",ConstantUtils.SUCCESS);
        result.put("msg","操作成功");
        return result;
    }
}

+ 0 - 16
svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageNormcatService.java

@ -1,16 +0,0 @@
package com.yihu.jw.base.service.servicePackage;
import com.yihu.jw.base.dao.servicePackage.ServicePackageNormcatDao;
import com.yihu.jw.entity.base.servicePackage.ServicePackageNormcatDO;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.stereotype.Service;
/**
 *
 * @author yeshijie on 2018/8/29.
 */
@Service
public class ServicePackageNormcatService extends BaseJpaService<ServicePackageNormcatDO, ServicePackageNormcatDao> {
}

+ 0 - 16
svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackagePropService.java

@ -1,16 +0,0 @@
package com.yihu.jw.base.service.servicePackage;
import com.yihu.jw.base.dao.servicePackage.ServicePackagePropDao;
import com.yihu.jw.entity.base.servicePackage.ServicePackagePropDO;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.stereotype.Service;
/**
 *
 * @author yeshijie on 2018/8/29.
 */
@Service
public class ServicePackagePropService extends BaseJpaService<ServicePackagePropDO, ServicePackagePropDao> {
}

+ 0 - 16
svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackagePropvalueService.java

@ -1,16 +0,0 @@
package com.yihu.jw.base.service.servicePackage;
import com.yihu.jw.base.dao.servicePackage.ServicePackagePropvalueDao;
import com.yihu.jw.entity.base.servicePackage.ServicePackagePropvalueDO;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.stereotype.Service;
/**
 *
 * @author yeshijie on 2018/8/29.
 */
@Service
public class ServicePackagePropvalueService extends BaseJpaService<ServicePackagePropvalueDO, ServicePackagePropvalueDao> {
}

+ 43 - 122
svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageService.java

@ -1,31 +1,25 @@
package com.yihu.jw.base.service.servicePackage;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.elasticsearch.ElasticSearchHelper;
import com.yihu.elasticsearch.ElasticSearchUtil;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.base.dao.servicePackage.ServicePackageDao;
import com.yihu.jw.base.dao.servicePackage.ServicePackageDetailsDao;
import com.yihu.jw.base.dao.servicePackage.ServicePackageItemDao;
import com.yihu.jw.base.dao.servicePackage.ServicePackageSignRecordDao;
import com.yihu.jw.base.util.ConstantUtils;
import com.yihu.jw.entity.base.servicePackage.ServicePackageDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageDetailsDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageSignRecordDO;
import com.yihu.jw.restmodel.base.servicePackage.RehabilitationVO;
import com.yihu.jw.restmodel.base.servicePackage.ServicePackageLogVO;
import com.yihu.jw.restmodel.base.servicePackage.ServicePackageVO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.StringUtil;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 *
@ -40,124 +34,51 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
    @Autowired
    private ServicePackageDao servicePackageDao;
    @Autowired
    private ServicePackageDetailsDao servicePackageDetailsDao;
    private ServicePackageItemDao servicePackageItemDao;
    @Autowired
    private ServicePackageSignRecordDao servicePackageSignRecordDao;
    @Autowired
    private ElasticSearchUtil elasticSearchUtil;
    @Autowired
    private ElasticSearchHelper elastricSearchHelper;
    @Autowired
    private ObjectMapper objectMapper;
    @Value("${es.index.servicePackLog}")
    private String servicePackLongIndex;
    @Value("${es.type.servicePackLog}")
    private String servicePackLongType;
    /**
     * 新增康复计划
     */
    public ServicePackageDO addRehabilitation(RehabilitationVO rehabilitationVO,ServicePackageSignRecordDO signRecordDO) throws Exception{
        ServicePackageVO servicePackageVO = rehabilitationVO.getServicePackageVO();
        ServicePackageDO servicePackageDO = convertToModelDO(servicePackageVO);
        /*List<ServicePackageDetailsDO> detailsDOList = servicePackageDO.getDetailsDOList();
        //新增服务包主表
        servicePackageDO.setCreateTime(new Date());
        servicePackageDO.setDel(1);
        servicePackageDO.setLevel(ServicePackageDO.Level.doctor.getValue());
        servicePackageDO.setLevelCode(servicePackageDO.getCreater());
        servicePackageDO.setStatus(ServicePackageDO.Status.pass.getValue());
        servicePackageDO.setNum(detailsDOList.size());
        servicePackageDO.setType(ServicePackageDO.Type.rehabilitation.getValue());
        servicePackageDao.save(servicePackageDO);
        //新增服务项明细表
        detailsDOList.forEach(one->{
            one.setCreateTime(new Date());
            one.setSaasId(servicePackageDO.getSaasId());
            one.setServicePackageId(servicePackageDO.getId());
        });
        servicePackageDetailsDao.save(detailsDOList);
        //新增签约服务包记录表
        signRecordDO.setCreateTime(new Date());
        signRecordDO.setServicePackageId(servicePackageDO.getId());
        signRecordDO.setStatus(ServicePackageSignRecordDO.Status.create.getValue());
        servicePackageSignRecordDao.save(signRecordDO);
        //新增服务包日志
        ServicePackageLogVO logVO = new ServicePackageLogVO();
        logVO.setCreateTime(new Date());
        logVO.setFlag(ServicePackageLogVO.Flag.success.getValue());
        logVO.setFinish(0);
        logVO.setId(getCode());
        String message = "新增了一条康复计划";
        if(StringUtils.isNotBlank(signRecordDO.getSignDoctorName())){
            message = signRecordDO.getSignDoctorName()+message;
        }
        logVO.setMessage(message);
        logVO.setSaasId(servicePackageVO.getSaasId());
        logVO.setSevicePackageId(servicePackageDO.getId());
        logVO.setUserType(ServicePackageLogVO.UserType.doctor.getValue());
        logVO.setUserCode(signRecordDO.getSignDoctor());
        logVO.setUserName(signRecordDO.getSignDoctorName());
        elastricSearchHelper.save(servicePackLongIndex,servicePackLongType, objectMapper.writeValueAsString(logVO));*/
        return servicePackageDO;
    }
    @Transactional(rollbackFor = Exception.class)
    public JSONObject create(ServicePackageDO servicePackageDO){
        JSONObject result = new JSONObject();
    /**
     * 获取完成度
     * @param servicePackageId
     * @return
     */
    public Integer getFinish(String servicePackageId) throws Exception{
        Integer finish = 0;
        String sql = "select finish from " + servicePackLongIndex + " where servicePackageId='" + servicePackageId + "' and sevicePackageDetailId is not null order by createTime desc limit 1";
        List<Map<String, Object>> returnList = elastricSearchHelper.executeSQL(sql);
        if(returnList!=null&&returnList.size()>0){
            finish = Integer.valueOf(returnList.get(0).get("finish").toString());
        List<ServicePackageItemDO> itemDOList = servicePackageDO.getPackageItemDOList();
        if(itemDOList==null){
            servicePackageDO.setNum(0);
        }else {
            servicePackageDO.setNum(itemDOList.size());
        }
        return finish;
    }
    /**
     * 保存康复计划日志
     * @param logVO
     * @return
     */
    public ServicePackageLogVO addRehabilitationLog(ServicePackageLogVO logVO) throws Exception{
        logVO.setId(getCode());
        int finish = 0;
        String sql = "select finish from " + servicePackLongIndex + " where servicePackageId='" + logVO.getSevicePackageId() + "' and sevicePackageDetailId is not null order by createTime desc limit 1";
        List<Map<String, Object>> returnList = elastricSearchHelper.executeSQL(sql);
        if(returnList!=null&&returnList.size()>0){
            finish = Integer.valueOf(returnList.get(0).get("finish").toString());
            if(StringUtils.isNotBlank(logVO.getSevicePackageDetailId())){
                finish++;
            }
        if(StringUtil.isEmpty(servicePackageDO.getId())){
            //新增
            servicePackageDO.setCreateTime(new Date());
            servicePackageDao.save(servicePackageDO);
        }else{
            //修改
            ServicePackageDO oldDO = servicePackageDao.findOne(servicePackageDO.getId());
            oldDO.setName(servicePackageDO.getName());
            oldDO.setDel(servicePackageDO.getDel());
            oldDO.setType(servicePackageDO.getType());
            oldDO.setIntroduce(servicePackageDO.getIntroduce());
            servicePackageDao.save(oldDO);
            servicePackageItemDao.deleteByServicePackageId(oldDO.getId());
        }
        logVO.setCreateTime(new Date());
        logVO.setFinish(finish);
        if(logVO.getFlag()==null){
            logVO.setFlag(ServicePackageLogVO.Flag.success.getValue());
        List<ServicePackageItemDO> itemDOs = new ArrayList<>();
        for (ServicePackageItemDO itemDO:itemDOList){
            itemDO = servicePackageItemDao.findOne(itemDO.getId());
            ServicePackageItemDO itemDO1 = new ServicePackageItemDO();
            BeanUtils.copyProperties(itemDO,itemDO1);
            itemDO1.setId(null);
            itemDO1.setServicePackageId(servicePackageDO.getId());
            itemDO1.setCreateTime(DateUtil.getStringDate());
            itemDOs.add(itemDO1);
        }
        List<ServicePackageLogVO> logVOList = new ArrayList<>(1);
        logVOList.add(logVO);
        elastricSearchHelper.save(servicePackLongIndex,servicePackLongType,logVOList);
        return logVO;
    }
        servicePackageItemDao.save(itemDOs);
    /**
     * 单个转换
     * @return
     */
    public ServicePackageDO convertToModelDO(ServicePackageVO servicePackageVO){
        ServicePackageDO target = new ServicePackageDO();
        BeanUtils.copyProperties(servicePackageVO, target);
        List<ServicePackageDetailsDO> voList = convertToModels(servicePackageVO.getDetailsVOList(),new ArrayList<>(servicePackageVO.getDetailsVOList().size()),ServicePackageDetailsDO.class);
//        target.setDetailsDOList(voList);
        return target;
        result.put("response", ConstantUtils.SUCCESS);
        result.put("msg","操作成功");
        return result;
    }
}

+ 0 - 16
svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageSkuService.java

@ -1,16 +0,0 @@
package com.yihu.jw.base.service.servicePackage;
import com.yihu.jw.base.dao.servicePackage.ServicePackageSkuDao;
import com.yihu.jw.entity.base.servicePackage.ServicePackageSkuDO;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.stereotype.Service;
/**
 *
 * @author yeshijie on 2018/8/29.
 */
@Service
public class ServicePackageSkuService extends BaseJpaService<ServicePackageSkuDO, ServicePackageSkuDao> {
}

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

@ -0,0 +1,280 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.yihu.jw</groupId>
        <artifactId>wlyy-parent-pom</artifactId>
        <version>2.0.0</version>
        <relativePath>../../wlyy-parent-pom/pom.xml</relativePath>
    </parent>
    <groupId>com.yihu.jw</groupId>
    <artifactId>svr-cloud-care</artifactId>
    <packaging>jar</packaging>
    <version>${parent.version}</version>
    <dependencies>
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <!-- 支持Tomcat启动 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <!--注释掉就不会读取git的配置,只会读取yml中的配置-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
        </dependency>
        <!--<dependency>-->
            <!--<groupId>com.ylz.loginsdk</groupId>-->
            <!--<artifactId>ehcsdk</artifactId>-->
            <!--<version>1.0</version>-->
        <!--</dependency>-->
        <dependency>
            <groupId>com.ylz.dmrh</groupId>
            <artifactId>ehcsdk-java-sdk-base</artifactId>
            <version>1.0.3</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>common-entity</artifactId>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>common-rest-model</artifactId>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>wxpay-sdk</artifactId>
            <version>3.0.9</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>common-request-mapping</artifactId>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>common-exception</artifactId>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>common-util</artifactId>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>common-web</artifactId>
        </dependency>
        <!-- 文件服务器 -->
        <dependency>
            <groupId>com.yihu</groupId>
            <artifactId>fastdfs-starter</artifactId>
        </dependency>
        <!-- Jzkl Starter -->
        <dependency>
            <groupId>com.yihu</groupId>
            <artifactId>swagger-starter</artifactId>
            <version>2.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.yihu</groupId>
            <artifactId>mysql-starter</artifactId>
            <version>2.0.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.tomcat</groupId>
                    <artifactId>tomcat-jdbc</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <!-- <scope>runtime</scope> -->
        </dependency>
        <!--<dependency>-->
            <!--<groupId>com.yihu</groupId>-->
            <!--<artifactId>elasticsearch-starter</artifactId>-->
            <!--<version>2.0.0</version>-->
        <!--</dependency>-->
        <dependency>
            <groupId>io.github.swagger2markup</groupId>
            <artifactId>swagger2markup</artifactId>
            <version>1.3.2</version>
            <exclusions>
                <exclusion>
                    <artifactId>mailapi</artifactId>
                    <groupId>javax.mail</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 发送邮件 -->
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.4.7</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <!--   poi xml导入导出工具 start-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>com.yihu.ehr</groupId>
                    <artifactId>commons-util</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-collections4</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
        </dependency>
        <!-- xlsx  依赖这个包 -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <!--   poi xml导入导出工具 end -->
        <!--基础业务组件-->
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>base-service</artifactId>
            <version>2.0.0</version>
            <exclusions>
                <exclusion>
                    <groupId>xalan</groupId>
                    <artifactId>xalan</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-commons</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!--缩略图-->
        <dependency>
            <groupId>net.coobird</groupId>
            <artifactId>thumbnailator</artifactId>
            <version>0.4.8</version>
        </dependency>
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>im-service</artifactId>
            <version>2.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>sms-service</artifactId>
            <version>2.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>es-service</artifactId>
            <version>2.0.0</version>
        </dependency>
        <!--oracle驱动-->
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.3</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>svr-cloud-care</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.yihu.SvrCloudCareApplication</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

+ 3 - 0
svr/svr-cloud-care/readme.MD

@ -0,0 +1,3 @@
基础微服务
    每个模块有自己独立的文件夹,这样做的好处是以后如果哪个模块需要独立成微服务,代码直接剪切到新的微服务即可。
    每个模块下面有独立的Endpoint,service,model和dao

+ 0 - 0
svr/svr-cloud-care/sql/sql


+ 25 - 0
svr/svr-cloud-care/src/main/java/com/yihu/SvrCloudCareApplication.java

@ -0,0 +1,25 @@
package com.yihu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
/**
 * Created by Trick on 2019/5/13.
 */
@SpringBootApplication
@EnableJpaAuditing
public class SvrCloudCareApplication extends SpringBootServletInitializer {
    public static void main(String[] args)  {
        SpringApplication.run(SvrCloudCareApplication.class, args);
    }
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SvrCloudCareApplication.class);
    }
}

+ 14 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/aop/ObserverRequired.java

@ -0,0 +1,14 @@
package com.yihu.jw.care.aop;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 * Created by Trick on 2017/6/24.
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ObserverRequired {
}

+ 89 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/aop/ObserverRequiredAOP.java

@ -0,0 +1,89 @@
package com.yihu.jw.care.aop;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.json.JSONObject;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
/**
 * Created by Trick on 2017/6/24..
 */
@Aspect
@Component
public class ObserverRequiredAOP {
    //Controller层切点路径
    @Pointcut("execution(* com.yihu.jw.care.endpoint..*.*(..))")
    public void controllerAspect() {
    }
    public ObserverRequiredAOP() {
        //System.out.println("Observer---------------------------------------");
    }
    @Around("controllerAspect() && @annotation(com.yihu.jw.care.aop.ObserverRequired)")
    public Object checkToken(ProceedingJoinPoint point) throws Throwable {
        Object o = null;
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
        String error = "";
        try {
            response.setCharacterEncoding("UTF-8");
            JSONObject json = getAgent(request);
            String observer = json.has("observer") ? json.getString("observer") : "";
            if(StringUtils.isNotBlank(observer)&&"1".equals(observer)){
                PrintWriter writer=response.getWriter();
                writer.write(error(403, "该操作没有权限"));
                writer.flush();
                return o;
            }
        }catch (Exception e){
            //return o;
        }
         o = point.proceed();
        return o;
    }
    public String write(int code, String msg) {
        try {
            JSONObject json = new JSONObject();
            json.put("status", code);
            json.put("msg", msg);
            return json.toString();
        } catch (Exception e) {
            return null;
        }
    }
    public String error(int code, String msg) {
        try {
            JSONObject json = new JSONObject();
            json.put("status", code);
            json.put("msg", msg);
            return json.toString();
        } catch (Exception e) {
            return null;
        }
    }
    public JSONObject getAgent(HttpServletRequest request) {
        try {
            String userAgent = request.getHeader("userAgent");
            if (StringUtils.isEmpty(userAgent)) {
                userAgent = request.getHeader("User-Agent");
            }
            System.out.println("userAgent:" + userAgent);
            return new JSONObject(userAgent);
        } catch (Exception e) {
            return null;
        }
    }
}

+ 22 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/aop/ServicesAuth.java

@ -0,0 +1,22 @@
package com.yihu.jw.care.aop;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 * 使用该注解必须带item。注解的方法参数必须有patientId
 * 服务项权限控制
 * Created by yeshijie on 2021/3/5.
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ServicesAuth {
    /**
     * 服务项code
     * @return
     */
    String item();
}

+ 93 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/aop/ServicesAuthAOP.java

@ -0,0 +1,93 @@
package com.yihu.jw.care.aop;
import com.yihu.jw.care.service.sign.ServicePackageService;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.util.List;
/**
 * Created by yeshijie on 2021/3/5.
 */
@Aspect
@Component
public class ServicesAuthAOP {
    @Autowired
    private ServicePackageService servicePackageService;
    //Controller层切点路径
    @Pointcut("execution(* com.yihu.jw.care.endpoint..*.*(..))")
    public void controllerAspect() {
    }
    public ServicesAuthAOP() {
        //System.out.println("Observer---------------------------------------");
    }
    @Around("controllerAspect() && @annotation(com.yihu.jw.care.aop.ServicesAuth)")
    public Object checkToken(ProceedingJoinPoint point) throws Throwable {
        Object o = null;
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
        try {
            response.setCharacterEncoding("UTF-8");
            MethodSignature signature = (MethodSignature)point.getSignature();
            ServicesAuth annotation = signature.getMethod().getAnnotation(ServicesAuth.class);
            String item = annotation.item();
            String patientId = request.getParameter("patientId");
            if(StringUtils.isBlank(item)||StringUtils.isBlank(patientId)){
                PrintWriter writer=response.getWriter();
                writer.write(error(401, "该操作没有权限"));
                writer.flush();
                return o;
            }
            List<String> items =servicePackageService.getPatientServiceItems(patientId);
            if(!items.contains(item)){
                PrintWriter writer=response.getWriter();
                writer.write(error(401, "该操作没有权限"));
                writer.flush();
                return o;
            }
        }catch (Exception e){
            //return o;
        }
         o = point.proceed();
        return o;
    }
    public String write(int code, String msg) {
        try {
            JSONObject json = new JSONObject();
            json.put("status", code);
            json.put("msg", msg);
            return json.toString();
        } catch (Exception e) {
            return null;
        }
    }
    public String error(int code, String msg) {
        try {
            JSONObject json = new JSONObject();
            json.put("status", code);
            json.put("msg", msg);
            return json.toString();
        } catch (Exception e) {
            return null;
        }
    }
}

+ 27 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/config/BeanConfig.java

@ -0,0 +1,27 @@
package com.yihu.jw.care.config;
import com.yihu.jw.hospital.prescription.service.PrescriptionExpressageService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class BeanConfig {
    //顺丰快递接口请求地址
    @Value("${express.sf_url}")
    private String sf_url;
    //顺丰快递接口接入编码
    @Value("${express.sf_code}")
    private String sf_code;
    //顺丰快递接口checkword
    @Value("${express.sf_check_word}")
    private String sf_check_word;
    @Bean(name = "prescriptionExpressageService")
    PrescriptionExpressageService prescriptionExpressageService(){
        return new PrescriptionExpressageService(sf_url,sf_code,sf_check_word);
    }
}

+ 18 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/config/SpringSecurityAuditorAware.java

@ -0,0 +1,18 @@
package com.yihu.jw.care.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.domain.AuditorAware;
@Configuration
public class SpringSecurityAuditorAware implements AuditorAware {
    @Override
    public Object getCurrentAuditor() {
//        return Optional.ofNullable(SecurityContextHolder.getContext())
//                .map(SecurityContext::getAuthentication)
//                .filter(Authentication::isAuthenticated)
//                .map(Authentication::getPrincipal);
////                .map(Authentication::getDetails);
        return "123";
    }
}

+ 44 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/config/SwaggerDocs.java

@ -0,0 +1,44 @@
package com.yihu.jw.care.config;
import io.github.swagger2markup.GroupBy;
import io.github.swagger2markup.Language;
import io.github.swagger2markup.Swagger2MarkupConfig;
import io.github.swagger2markup.Swagger2MarkupConverter;
import io.github.swagger2markup.builder.Swagger2MarkupConfigBuilder;
import io.github.swagger2markup.markup.builder.MarkupLanguage;
import java.net.URL;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
 * Created by lith on 2018/11/23
 */
public class SwaggerDocs {
    public static void main(String[] args) throws Exception {
        //1.请求 http://ip:port/swagger-resources获取group
        String group = "Default";
        //2.定义请求地址 new URL("http://ip:port/v2/api-docs?group=" + groupName)
        //项目的swagger-ui地址
        URL remoteSwaggerFile = new URL("http://127.0.0.1:10022/v2/api-docs?group=" + group);
        //3.定义文件输出路径
        String prefix = Thread.currentThread().getContextClassLoader().getResource("").getPath();
        //文档输出地址
        Path outputFile = Paths.get(prefix.substring(prefix.lastIndexOf(":") + 1, prefix.indexOf("target") - 1) + "/build/" + group);
        Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
                .withMarkupLanguage(MarkupLanguage.ASCIIDOC)
                .withOutputLanguage(Language.ZH)
                .withPathsGroupedBy(GroupBy.TAGS)
                .withGeneratedExamples()
                .withoutInlineSchema()
                //.withBasePathPrefix()
                .build();
        Swagger2MarkupConverter converter = Swagger2MarkupConverter.from(remoteSwaggerFile)
                .withConfig(config)
                .build();
        converter.toFile(outputFile);
    }
}

+ 53 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/family/PatientFamilyMemberDao.java

@ -0,0 +1,53 @@
package com.yihu.jw.care.dao.family;
import com.yihu.jw.entity.base.patient.BasePatientFamilyMemberDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * @author liuwenbin on 2018/11/27.
 */
public interface PatientFamilyMemberDao extends PagingAndSortingRepository<BasePatientFamilyMemberDO, String>, JpaSpecificationExecutor<BasePatientFamilyMemberDO> {
    @Query("select m from BasePatientFamilyMemberDO m where m.del=1 and m.patient=?1")
    List<BasePatientFamilyMemberDO> getByPatient(String patient);
    @Query("select m from BasePatientFamilyMemberDO m where m.del=1 and m.patient=?1 and m.familyRelation=?2")
    List<BasePatientFamilyMemberDO> getByPatientAndFamilyRelation(String patient, Integer familyRelation);
    @Query("select m from BasePatientFamilyMemberDO m where m.del=1 and m.familyMember=?1")
    List<BasePatientFamilyMemberDO> getByFamilyMember(String familyMember);
    @Query("select m from BasePatientFamilyMemberDO m where m.del=1 and m.familyMember=?1 and m.familyRelation=?2")
    List<BasePatientFamilyMemberDO> getByFamilyMemberAndFamilyRelation(String familyMember, Integer familyRelation);
    @Query("select m from BasePatientFamilyMemberDO m where m.del=1 and m.familyMember=?1 and m.familyRelation in (?2,?3)")
    List<BasePatientFamilyMemberDO> getByFamilyMemberAndFamilyRelation(String familyMember, Integer familyRelation1, Integer familyRelation2);
    @Query("select m from BasePatientFamilyMemberDO m where m.del=1 and m.patient=?1")
    List<BasePatientFamilyMemberDO> getByPatientAndFamilyMember(String patient);
    @Modifying
    @Query("update BasePatientFamilyMemberDO m set m.isAuthorize = ?1 where m.id=?2 ")
    int updateAuthorizeById(Integer isAuthorize, String id);
    @Modifying
    @Query("update BasePatientFamilyMemberDO m set m.del = ?1 where m.id=?2 ")
    int updateDelById(Integer del, String id);
    @Modifying
    @Query("update BasePatientFamilyMemberDO m set m.del = ?1 where m.patient=?2 and m.familyMember=?3 ")
    int updateDelByPatientAndFamilyMember(Integer del, String patient, String familyPatientId);
    BasePatientFamilyMemberDO findByPatientAndFamilyMemberAndDel(String patient, String familyMember, Integer del);
    List<BasePatientFamilyMemberDO> findByPatientAndFamilyRelation(String patient,Integer familyRelation);
    BasePatientFamilyMemberDO findByPatientAndFamilyMember(String patient,String member);
    List<BasePatientFamilyMemberDO> findByFamilyMemberAndIsAuthorize(String familyMember,Integer isAuthorize);
}

+ 15 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/sign/ArchiveDao.java

@ -0,0 +1,15 @@
package com.yihu.jw.care.dao.sign;
import com.yihu.jw.entity.care.archive.ArchiveDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by yeshijie on 2021/2/24.
 */
public interface ArchiveDao extends PagingAndSortingRepository<ArchiveDO, String>, JpaSpecificationExecutor<ArchiveDO> {
    ArchiveDO findByIdcardAndDoctorCode(String idcard, String doctorCode);
    ArchiveDO findByPatientAndDoctorCode(String patient, String doctorCode);
}

+ 14 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/sign/CapacityAssessmentRecordDao.java

@ -0,0 +1,14 @@
package com.yihu.jw.care.dao.sign;
import com.yihu.jw.entity.care.sign.CapacityAssessmentRecordDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by yeshijie on 2021/2/25.
 */
public interface CapacityAssessmentRecordDao extends PagingAndSortingRepository<CapacityAssessmentRecordDO, String>,
        JpaSpecificationExecutor<CapacityAssessmentRecordDO> {
}

+ 14 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/sign/ServicePackageDao.java

@ -0,0 +1,14 @@
package com.yihu.jw.care.dao.sign;
import com.yihu.jw.entity.base.servicePackage.ServicePackageDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 *
 * @author yeshijie on 2018/8/17.
 */
public interface ServicePackageDao extends PagingAndSortingRepository<ServicePackageDO, String>, JpaSpecificationExecutor<ServicePackageDO> {
}

+ 25 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/sign/ServicePackageItemDao.java

@ -0,0 +1,25 @@
package com.yihu.jw.care.dao.sign;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by yeshijie on 2021/2/23.
 */
public interface ServicePackageItemDao extends PagingAndSortingRepository<ServicePackageItemDO, String>, JpaSpecificationExecutor<ServicePackageItemDO> {
    @Query("from ServicePackageItemDO w where w.teamCode =?1 and w.code=?2")
    List<ServicePackageItemDO> findByTeamCode(String teamCode, String code);
    @Query("from ServicePackageItemDO w where w.servicePackageId =?1 and w.del='1'")
    List<ServicePackageItemDO> findByServicePackageId(String servicePackageId);
    @Modifying
    @Query("delete from ServicePackageItemDO p where p.servicePackageId=?1")
    void deleteByServicePackageId(String servicePackageId);
}

+ 14 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/sign/ServicePackageRecordDao.java

@ -0,0 +1,14 @@
package com.yihu.jw.care.dao.sign;
import com.yihu.jw.entity.base.servicePackage.ServicePackageRecordDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by yeshijie on 2021/2/25.
 */
public interface ServicePackageRecordDao extends PagingAndSortingRepository<ServicePackageRecordDO, String>, JpaSpecificationExecutor<ServicePackageRecordDO> {
}

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

@ -0,0 +1,17 @@
package com.yihu.jw.care.dao.sign;
import com.yihu.jw.entity.base.servicePackage.ServicePackageSignRecordDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 *
 * @author yeshijie on 2018/8/17.
 */
public interface ServicePackageSignRecordDao extends PagingAndSortingRepository<ServicePackageSignRecordDO, String>, JpaSpecificationExecutor<ServicePackageSignRecordDO> {
    List<ServicePackageSignRecordDO> findByStatusAndPatient(Integer status, String patient);
}

+ 42 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/team/BaseTeamDao.java

@ -0,0 +1,42 @@
package com.yihu.jw.care.dao.team;
import com.yihu.jw.entity.base.team.BaseTeamDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import java.util.List;
import java.util.Map;
/**
 * 
 * 团队信息 数据库访问层
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong 	1.0  		2018年08月31日 	Created
 *
 * </pre>
 * @since 1.
 */
public interface BaseTeamDao extends PagingAndSortingRepository<BaseTeamDO, String>, JpaSpecificationExecutor<BaseTeamDO>  {
    @Query("select orgCode as code,orgName as name from BaseTeamDO")
    List<Map<String,Object>> getTeamOrgList();
    @Modifying
    @Query("update BaseTeamDO t SET t.del = '0' where t.id = :teamCode")
    void delete(@Param("teamCode") String teamCode);
    @Query("SELECT t from BaseTeamDO t WHERE t.leaderCode = :leaderCode AND t.del = '1'")
    BaseTeamDO findByLeaderCode(@Param("leaderCode") String leaderCode);
    @Query("SELECT t FROM BaseTeamMemberDO m, BaseTeamDO t WHERE m.doctorCode = :doctorCode " +
            "AND t.id = m.teamCode AND t.del = '1' AND m.del = '1'")
    List<BaseTeamDO> findDoctorTeams(@Param(value = "doctorCode") String doctorCode);
    @Query("from BaseTeamDO t WHERE t.del = '1'  AND t.orgCode = ?1 ")
    List<BaseTeamDO> findByOrgCode(String orgCode);
 }

+ 54 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/team/BaseTeamMemberDao.java

@ -0,0 +1,54 @@
package com.yihu.jw.care.dao.team;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.team.BaseTeamMemberDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
 * 
 * 团队成员 数据库访问层
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong 	1.0  		2018年08月31日 	Created
 *
 * </pre>
 * @since 1.
 */
public interface BaseTeamMemberDao extends PagingAndSortingRepository<BaseTeamMemberDO, String>, JpaSpecificationExecutor<BaseTeamMemberDO>  {
    @Query("select doc.name as name,doc.idcard as idcard ,doc.id as doctorCode from BaseDoctorDO doc where doc.id in (select team.doctorCode from BaseTeamMemberDO team where team.teamCode = ?1)")
    List<Map<String,Object>> getTeamMemberList(String teamCode);
    @Query("select id from BaseTeamMemberDO where teamCode = ?1")
    Set<Object> findIdListByTeamCode(String teamCode);
    List<BaseTeamMemberDO> findByTeamCode(String teamCode);
    @Query("SELECT case when count(A) > 0 then true else false END FROM BaseTeamMemberDO A WHERE A.teamCode = :teamCode " +
            "AND A.doctorCode = :doctorCode AND A.del = '1'")
    Boolean isMemberExist(@Param(value = "teamCode") String teamCode, @Param(value = "doctorCode") String doctorCode);
    @Modifying
    @Query("update BaseTeamMemberDO t SET t.del = '0' where t.teamCode = :teamCode")
    void deleteByTeamCode(@Param("teamCode") String teamCode);
    BaseTeamMemberDO findByTeamCodeAndDoctorCode(String teamCode, String doctorCode);
    @Modifying
    @Query("update BaseTeamMemberDO t SET t.del = '0' where t.id = :id")
    void deleteById(@Param("id") String id);
    @Query("SELECT d FROM BaseTeamMemberDO m, BaseTeamDO t, BaseDoctorDO d WHERE t.id = :teamCode AND t.id = m.teamCode " +
            "AND m.doctorCode = d.id AND t.del = '1' AND m.del = '1' ")
    List<BaseDoctorDO> findAllMembers(@Param(value = "teamCode") String teamCode);
}

+ 122 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/dict/DictEndpoint.java

@ -0,0 +1,122 @@
package com.yihu.jw.care.endpoint.dict;
import com.yihu.jw.area.service.*;
import com.yihu.jw.entity.base.area.*;
import com.yihu.jw.restmodel.base.area.*;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
 * Created by yeshijie on 2021/2/24.
 */
@RestController
@RequestMapping("dict" )
@Api(tags = "字典信息", description = "字典信息")
public class DictEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private BaseCommitteeService baseCommitteeService;
    @Autowired
    private BaseTownService baseTownService;
    @Autowired
    private BaseProvinceService baseProvinceService;
    @Autowired
    private BaseCityService baseCityService;
    @Autowired
    private BaseStreetService baseStreetService;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @GetMapping(value = "getNationDict")
    @ApiOperation("获取民族信息列表")
    public ListEnvelop<Map<String,Object>> getNationDict(){
        try {
            String sql = "SELECT t.NATION_CODE code,t.NATION_NAME name FROM zy_nation_dict t";
            List<Map<String,Object>> rs = jdbcTemplate.queryForList(sql);
            return success(rs);
        } catch (Exception e) {
            e.printStackTrace();
            return ListEnvelop.getError("获取字典信息失败!");
        }
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findCommity)
    @ApiOperation(value = "获取居委会列表")
    public ListEnvelop<BaseCommitteeVO> findCommity (
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
            @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
        List<BaseCommitteeDO> baseProvinces = baseCommitteeService.search(fields, filters, sorts);
        return success(baseProvinces, BaseCommitteeVO.class);
    }
    @GetMapping(value = "findStreet")
    @ApiOperation(value = "获取街道列表")
    public ListEnvelop<BaseStreetVO> findStreet (
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
            @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
        List<BaseStreetDO> baseProvinces = baseStreetService.search(fields, filters, sorts);
        return success(baseProvinces, BaseStreetVO.class);
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findTown)
    @ApiOperation(value = "获取区列表")
    public ListEnvelop<BaseTownVO> list (
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
            @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
        List<BaseTownDO> baseTowns = baseTownService.search(fields, filters, sorts);
        return success(baseTowns, BaseTownVO.class);
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findProvince)
    @ApiOperation(value = "获取省列表")
    public ListEnvelop<BaseProvinceVO> findProvince (
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
            @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
        List<BaseProvinceDO> baseProvinces = baseProvinceService.search(fields, filters, sorts);
        return success(baseProvinces, BaseProvinceVO.class);
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findCity)
    @ApiOperation(value = "获取市列表")
    public ListEnvelop<BaseCityVO> findCity (
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
            @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
        List<BaseCityDO> baseCitys = baseCityService.search(fields, filters, sorts);
        return success(baseCitys, BaseCityVO.class);
    }
}

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

@ -0,0 +1,64 @@
package com.yihu.jw.care.endpoint.doctor;
import com.yihu.jw.care.service.doctor.CareDoctorService;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
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.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
 * Created by yeshijie on 2021/3/4.
 */
@RestController
@RequestMapping("doctor" )
@Api(tags = "医生信息", description = "医生信息")
public class DoctorEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private BaseDoctorDao doctorDao;
    @Autowired
    private CareDoctorService doctorService;
    @GetMapping(value = "doctorPage")
    @ApiOperation(value = "获取医生记录分页")
    public PageEnvelop<List<Map<String,Object>>> doctorPage (
            @ApiParam(name = "name", value = "医生姓名", required = false)
            @RequestParam(value = "name",required = false) String name,
            @ApiParam(name = "orgCode", value = "机构code", required = false)
            @RequestParam(value = "orgCode",required = false) String orgCode,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size) throws Exception {
        try{
            return doctorService.doctorPage(name, orgCode, page, size);
        }catch (Exception e){
            e.printStackTrace();
            return PageEnvelop.getError("查询失败");
        }
    }
    @GetMapping(value = "doctorInfo")
    @ApiOperation(value = "获取医生详情")
    public ObjEnvelop doctorInfo (
            @ApiParam(name = "doctorId", value = "医生id", required = true)
            @RequestParam(value = "doctorId",required = true) String doctorId) throws Exception {
        try{
            return ObjEnvelop.getSuccess("查询成功",doctorService.doctorInfo(doctorId));
        }catch (Exception e){
            e.printStackTrace();
            return ObjEnvelop.getError("查询失败");
        }
    }
}

+ 354 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/family/FamilyMemberEndpoint.java

@ -0,0 +1,354 @@
package com.yihu.jw.care.endpoint.family;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.family.PatientFamilyMemberDao;
import com.yihu.jw.care.service.family.PatientFamilyMemberService;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.BasePatientFamilyMemberDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.web.Envelop;
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.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;
/**
 * Created by yeshijie on 2021/3/3.
 */
@RestController
@RequestMapping(value = "family")
@Api(description = "家庭成员")
public class FamilyMemberEndpoint extends EnvelopRestEndpoint {
    
    @Autowired
    private PatientFamilyMemberDao familyMemberDao;
    @Autowired
    private BasePatientDao patientDao;
    @Autowired
    private PatientFamilyMemberService familyMemberService;
    /**
     * 添加成员
     * @param member   成员code
     * @param captcha  验证码
     * @param relation 关系
     * @return
     */
    @RequestMapping(value = "/member_add", method = RequestMethod.POST)
    @ApiOperation(value = "添加成员")
    public Envelop addFamilyMember(@RequestParam("member") String member,
                                   @RequestParam(value = "captcha", required = false) String captcha,
                                   @RequestParam(value = "password", required = false) String password,
                                   @RequestParam("relation") int relation) {
        try {
            if (StringUtils.isEmpty(member)) {
                return failed("添加成员不能为空",-1);
            }
            if (StringUtils.isEmpty(captcha) && StringUtils.isEmpty(password)) {
                return failed( "验证码或密码不能为空",-1);
            }
            if (relation < 0 || relation > 6) {
                return failed( "家庭关系无效",-1);
            }
            int result = familyMemberService.addMember(getUID(), member, captcha, password, relation);
            if (result == -1) {
                return failed( "居民信息查询失败",-1);
            } else if (result == -2) {
                return failed( "该成员未注册",-1);
            } else if (result == -3) {
                return failed( StringUtils.isNotEmpty(captcha) ? "请输入正确的验证码" : "密码错误",-1);
            } else if (result == -4) {
                return failed( "该家庭成员已存在",-1);
            } else if (result == -5) {
                return failed( "该家庭关系已存在成员",-1);
            } else if (result == -6) {
                return failed( "验证码已过期,请重新获取验证码",-1);
            } else if (result == 0) {
                return failed( "不能添加自己",-1);
            } else {
                return success("添加成功");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return failed( "添加失败",-1);
        }
    }
    /**
     * 更新家庭关系
     *
     * @param member   成员code
     * @param relation 家庭关系
     * @return
     */
    @RequestMapping(value = "/relation_update", method = RequestMethod.POST)
    @ApiOperation(value = "家庭成员关系修改")
    public Envelop modifyFamilyRelation(@RequestParam("member") String member, @RequestParam("relation") int relation) {
        try {
            if (StringUtils.isEmpty(member)) {
                return failed( "添加成员不能为空",-1);
            }
            if (relation < 0 || relation > 6) {
                return failed( "家庭关系无效",-1);
            }
            int result = familyMemberService.modifyFamilyRelation(getUID(), member, relation);
            if (result == -1) {
                return failed( "居民信息查询失败",-1);
            } else if (result == -2) {
                return failed( "该成员未注册",-1);
            } else if (result == -3) {
                return failed( "与该成员的关系不存在",-1);
            } else if(result==-5){
                return failed( "该家庭关系已存在成员",-1);
            } else {
                return success( "更新成功");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return failed( "更新失败",-1);
        }
    }
    /**
     * 删除成员
     *
     * @param member
     * @return
     */
    @RequestMapping(value = "/member_delete", method = RequestMethod.POST)
    @ApiOperation(value = "家庭成员删除")
    public Envelop deleteMember(@RequestParam("member") String member) {
        try {
            if (StringUtils.isEmpty(member)) {
                return failed( "成员不能为空",-1);
            }
            int result = familyMemberService.deleteMember(getUID(), member);
            if (result == -1) {
                return failed( "与该成员的关系不存在",-1);
            } else {
                return success( "删除成功");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return failed( "删除失败",-1);
        }
    }
    @RequestMapping(value = "/member_authorize", method = RequestMethod.POST)
    @ApiOperation(value = "家庭成员授权")
    public Envelop authorizeMember(@ApiParam(name = "familyMember", value = "家人code", defaultValue ="1555c32c626343e7aaa62e9cf76c97f2")
                                  @RequestParam(value = "familyMember", required = true) String familyMember,
                                  @ApiParam(name = "isAuthorize", value = "是否授权(0:未授权,1:已授权)", defaultValue ="1")
                                  @RequestParam(value = "isAuthorize", required = true) Integer isAuthorize){
        try {
            int result = familyMemberService.authorizeMember(getUID(),familyMember,isAuthorize);
            if(result==0){
                return failed( "与该成员的关系不存在",-1);
            }
            return success( "授权成功");
        }catch (Exception e){
            return failed("授权失败",-1);
        }
    }
    /**
     * 家庭成员查询
     * @param patient
     * @param isAgree (任意值已同意(只查询家人关系表),null不同意)
     * @return
     */
    @RequestMapping(value = "/members", method = RequestMethod.GET)
    @ApiOperation(value = "家庭成员查询")
    public ObjEnvelop getPatientFamilyMembers(@RequestParam(required = false) String patient,
                                              @RequestParam(required = false) Integer isAgree) {
        try {
            JSONObject data = new JSONObject();
            JSONArray result = new JSONArray();
            if (StringUtils.isNotEmpty(patient)) {
                result = familyMemberService.getPatientMembers(patient, "", true, getUID(),isAgree);
            } else  {
                result = familyMemberService.getPatientFamilyMembers(getUID(), "",null);
            }
            data.put("normalmembers",result);//家人关系
            return ObjEnvelop.getSuccess( "查询成功", data);
        } catch (Exception e) {
            e.printStackTrace();
            return ObjEnvelop.getError( "查询失败");
        }
    }
    @RequestMapping(value = "/authorize_members", method = RequestMethod.GET)
    @ApiOperation(value = "家庭成员(有授权)查询")
    public ObjEnvelop getAuthorizeFamilyMembers(){
        try {
            JSONArray result = familyMemberService.getAuthorizeMembers(getUID());
            return ObjEnvelop.getSuccess( "查询成功", result);
        } catch (Exception e) {
            e.printStackTrace();
            return ObjEnvelop.getError( "查询失败");
        }
    }
    @RequestMapping(value = "/is_authorize", method = RequestMethod.GET)
    @ApiOperation(value = "是否授权查询")
    public ObjEnvelop isAuthorize(@ApiParam(name = "patient", value = "居民code", defaultValue = "")
                              @RequestParam(value = "patient", required = true) String patient,
                              @ApiParam(name = "familyMember", value = "家人code", defaultValue = "")
                              @RequestParam(value = "familyMember", required = true) String familyMember){
        try {
            BasePatientDO p = patientDao.findById(patient);
            JSONObject json = new JSONObject();
            json.put("id", p.getId());
            json.put("name", p.getName());
            if(patient.equals(familyMember)){
                return ObjEnvelop.getSuccess("自己", json);
            }
            BasePatientFamilyMemberDO member = familyMemberDao.findByPatientAndFamilyMember(patient,familyMember);
            if(member==null){
                return ObjEnvelop.getSuccess("不是家人", json,100);
            }
            if(1==member.getIsAuthorize()){
                return ObjEnvelop.getSuccess( "查询成功", json);
            }
            return ObjEnvelop.getSuccess("未授权", json,100);
        } catch (Exception e) {
            e.printStackTrace();
            return ObjEnvelop.getError( "查询失败");
        }
    }
    /**
     * 根据身份证号查询居民是否注册
     *
     * @param idcard 身份证号
     * @return
     */
    @RequestMapping(value = "/is_register", method = RequestMethod.GET)
    @ApiOperation(value = "家庭成员查询")
    public ObjEnvelop isRegister(@RequestParam("idcard") String idcard) {
        try {
            if (StringUtils.isEmpty(idcard)) {
                return ObjEnvelop.getError( "身份证号不能为空");
            }
            JSONObject result = familyMemberService.isRegister(idcard, getUID());
            return ObjEnvelop.getSuccess( "查询成功",  result);
        } catch (Exception e) {
            return ObjEnvelop.getError( "查询失败");
        }
    }
    /**
     * 验证家庭成员微信及手机绑定情况
     * @param memberCode
     * @return
     */
    @RequestMapping(value = "/check_member", method = RequestMethod.GET)
    @ApiOperation(value = "验证家庭成员微信及手机绑定情况")
    public ObjEnvelop checkFamilyMember(@RequestParam("memberCode")String memberCode){
        try {
            JSONObject result = familyMemberService.checkFamilyMember(memberCode);
            return ObjEnvelop.getSuccess( "验证成功",  result);
        }catch (Exception e){
            return ObjEnvelop.getError( "验证失败");
        }
    }
    @RequestMapping(value = "/addMemberByPw", method = RequestMethod.POST)
    @ApiOperation(value = "通过登录验证新增家庭成员")
    public Envelop addMemberByPw(@RequestParam("member") String member,
                                @RequestParam("password")String password,
                                @RequestParam("relation")int relation){
        try {
            if (StringUtils.isEmpty(member)) {
                return failed( "添加成员不能为空",-1);
            }
            if (relation < 0 || relation > 6) {
                return failed( "家庭关系无效",-1);
            }
            int result = familyMemberService.addMemberByPw(getUID(),member,password,relation);
            if(result==0){
                return failed( "不能添加自己",-1);
            }else if(result==-1){
                return failed( "居民信息查询失败",-1);
            }else if(result==-2){
                return failed( "该成员未注册",-1);
            }else if(result==-3){
                return failed( "密码错误",-1);
            }else if (result == -4) {
                return failed( "该家庭成员已存在",-1);
            }else if(result==-5){
                return failed( "该家庭关系已存在成员",-1);
            } else {
                return success( "添加成功");
            }
        } catch (Exception e) {
            return failed( "添加失败",-1);
        }
    }
    @RequestMapping(value = "/addMemberByCaptcha", method = RequestMethod.POST)
    @ApiOperation(value = "通过手机验证码新增家庭成员")
    public Envelop addMemberByCaptcha(@RequestParam("member") String member,
                                     @RequestParam("captcha") String captcha,
                                     @RequestParam("relation") int relation){
        try {
            if (StringUtils.isEmpty(member)) {
                return failed( "添加成员不能为空",-1);
            }
            if (StringUtils.isEmpty(captcha)) {
                return failed( "验证码不能为空",-1);
            }
            if (relation < 0 || relation > 6) {
                return failed( "家庭关系无效",-1);
            }
            int result = familyMemberService.addMemberByCaptcha(getUID(),member,captcha,relation);
            if(result==0){
                return failed( "不能添加自己",-1);
            }else if(result==-1){
                return failed( "居民信息查询失败",-1);
            }else if(result==-2){
                return failed( "该成员未注册",-1);
            }else if(result==-3){
                return failed( "验证码错误",-1);
            }else if (result == -4) {
                return failed( "该家庭成员已存在",-1);
            }else if(result==-5){
                return failed( "该家庭关系已存在成员",-1);
            }else if(result==-6){
                return failed( "验证码已过期,请重新获取验证码",-1);
            } else {
                return success( "添加成功");
            }
        } catch (Exception e) {
            return failed( "添加失败",-1);
        }
    }
}

+ 207 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/file_upload/FileUploadEndpoint.java

@ -0,0 +1,207 @@
package com.yihu.jw.care.endpoint.file_upload;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.file_upload.FileManageService;
import com.yihu.jw.file_upload.FileUploadService;
import com.yihu.jw.restmodel.MutilFileInfo;
import com.yihu.jw.restmodel.iot.common.UploadVO;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.base.BaseRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
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.mock.web.MockMultipartFile;
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;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Map;
/**
 * 文件上传公共类
 */
@RestController
@RequestMapping(BaseRequestMapping.FileUpload.PREFIX)
@Api(tags = "文件上传相关操作", description = "文件上传相关操作")
public class FileUploadEndpoint extends EnvelopRestEndpoint {
    private static final Logger logger = LoggerFactory.getLogger(EnvelopRestEndpoint.class);
    @Value("${fastDFS.fastdfs_file_url}")
    private String fastdfs_file_url;
    @Autowired
    FileUploadService fileUploadService;
    @Value("${testPattern.sign}")
    private String isClose;
    @Value("${testPattern.remote_inner_url}")
    private String remote_inner_url;
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private FileManageService fileManageService;
    @PostMapping(value = BaseRequestMapping.FileUpload.UPLOAD_STREAM_IMG)
    @ApiOperation(value = "文件流上传图片", notes = "文件流上传图片")
    public ObjEnvelop<UploadVO> uploadImg(@ApiParam(value = "文件", required = true)
                                       @RequestParam(value = "file", required = true) MultipartFile file) throws Exception{
        UploadVO uploadVO = new UploadVO();
        if (isClose.equalsIgnoreCase("0")){
            // 得到文件的完整名称  xxx.txt
            String originalFilename = file.getOriginalFilename();
            InputStream inputStream = file.getInputStream();
            uploadVO = fileUploadService.uploadImg(inputStream,originalFilename,file.getSize(),fastdfs_file_url);
        }else if(isClose.equals("2")){
            //内网上传
            String rs = fileUploadService.request(remote_inner_url,file,null);
            logger.info(rs);
            JSONObject json = JSON.parseObject(rs);
            uploadVO = objectMapper.readValue(json.getJSONObject("obj").toJSONString(),UploadVO.class);
        }else if (isClose.equalsIgnoreCase("1")){
            Map<String, Object> map = fileUploadService.uploadImg(file);
            uploadVO.setFullUri(map.get("accessory").toString());
        }
        return success("上传成功", uploadVO);
    }
    @PostMapping(value = BaseRequestMapping.FileUpload.UPLOAD_STREAM_ATTACHMENT)
    @ApiOperation(value = "文件流上传附件", notes = "文件流上传附件")
    public ObjEnvelop<UploadVO> uploadAttachment(@ApiParam(value = "文件", required = true)
                                       @RequestParam(value = "file", required = true) MultipartFile file) throws Exception{
        UploadVO uploadVO = new UploadVO();
        if (isClose.equalsIgnoreCase("0")){
            String originalFilename = file.getOriginalFilename();
            InputStream inputStream = file.getInputStream();
            uploadVO = fileUploadService.uploadAttachment(inputStream,originalFilename,file.getSize(),fastdfs_file_url);
        }else if(isClose.equals("2")){
            //内网上传
            String rs = fileUploadService.request(remote_inner_url,file,null);
            logger.info(rs);
            JSONObject json = JSON.parseObject(rs);
            uploadVO = objectMapper.readValue(json.getJSONObject("obj").toJSONString(),UploadVO.class);
        }else if (isClose.equalsIgnoreCase("1")){
            Map<String, Object> map = fileUploadService.uploadImg(file);
            uploadVO.setFullUri(map.get("accessory").toString());
        }
        return success("上传成功", uploadVO);
    }
    @PostMapping(value = BaseRequestMapping.FileUpload.UPLOAD_STREAM)
    @ApiOperation(value = "文件流上传文件", notes = "文件流上传文件")
    public ObjEnvelop<UploadVO> uploadStream(@ApiParam(value = "文件", required = true)
                                                 @RequestParam(value = "file", required = true) MultipartFile file,
                                             @ApiParam(value = "文件", required = true)
                                             @RequestParam(value = "filename", required = false) String filename) throws Exception{
        UploadVO uploadVO = new UploadVO();
        if (isClose.equalsIgnoreCase("1")){
            Map<String, Object> map = fileUploadService.uploadImg(file);
            uploadVO.setFullUri(map.get("accessory").toString());
        }else if(isClose.equals("2")){
            //内网上传
            String rs = fileUploadService.request(remote_inner_url,file,null);
            logger.info(rs);
            JSONObject json = JSON.parseObject(rs);
            uploadVO = objectMapper.readValue(json.getJSONObject("obj").toJSONString(),UploadVO.class);
        }else {
            // 得到文件的完整名称  xxx.txt
            String originalFilename = file.getOriginalFilename();
            
            //判断文件名称是否有包含后缀,及前端是否有传后缀名称,有的话拼接图片后缀
            if(originalFilename.lastIndexOf(".") == 0 && StringUtils.isNotEmpty(filename)){
                originalFilename = originalFilename +"."+filename;
            }
            
            InputStream inputStream = file.getInputStream();
            uploadVO = fileUploadService.uploadStream(inputStream,originalFilename,fastdfs_file_url);
        }
        return success("上传成功", uploadVO);
    }
    @PostMapping(value = BaseRequestMapping.FileUpload.UPLOAD_STREAM_video)
    @ApiOperation(value = "文件流上传文件", notes = "文件流上传文件")
    public ObjEnvelop<UploadVO> uploadStreamVideo(@ApiParam(value = "文件", required = true)
                                             @RequestParam(value = "file", required = true) MultipartFile file,
                                                  @ApiParam(value = "文件", required = false)
                                                  @RequestParam(value = "filename", required = false) String filename,
                                                  @ApiParam(value = "taskId", required = false)
                                                      @RequestParam(value = "taskId", required = false) String taskId,
                                                  @ApiParam(value = "chunk", required = false)
                                                      @RequestParam(value = "chunk", required = false) Integer chunk,
                                                  @ApiParam(value = "文件", required = false)
                                                      @RequestParam(value = "sizesize", required = false) Long size,
                                                  @ApiParam(value = "chunkTotal", required = false)
                                                      @RequestParam(value = "chunkTotal", required = false) Integer chunkTotal,
                                                  @ApiParam(value = "objectType", required = false)
                                                      @RequestParam(value = "objectType", required = false) Integer objectType
                                             ) throws Exception{
        UploadVO uploadVO = new UploadVO();
        MutilFileInfo files = new MutilFileInfo();
        files.setChunk(chunk);
        files.setChunkTotal(chunkTotal);
        files.setFile(file);
        files.setObjectType(objectType);
        files.setSize(file.getSize());
        files.setTaskId(taskId);
        String taskid = fileManageService.chunkUploadByMappedByteBuffer(files);
        if ("unCompelete".equalsIgnoreCase(taskid)){
            System.out.println("第"+files.getChunk());
            return success("未传完",uploadVO);
        }else {
            File file1 = new File(taskid);
            FileInputStream input = new FileInputStream(file1);
            MultipartFile multipartFile = new MockMultipartFile("file", file1.getName(), "text/plain", IOUtils.toByteArray(input));
            if (isClose.equalsIgnoreCase("1")){
                Map<String, Object> map = fileUploadService.uploadImg(multipartFile);
                uploadVO.setFullUri(map.get("accessory").toString());
            }else if(isClose.equals("2")){
                //内网上传
                String rs = fileUploadService.request(remote_inner_url,multipartFile,null);
                logger.info(rs);
                JSONObject json = JSON.parseObject(rs);
                uploadVO = objectMapper.readValue(json.getJSONObject("obj").toJSONString(),UploadVO.class);
            }else {
                // 得到文件的完整名称  xxx.txt
                String originalFilename = multipartFile.getOriginalFilename();
                //判断文件名称是否有包含后缀,及前端是否有传后缀名称,有的话拼接图片后缀
                if(originalFilename.lastIndexOf(".") == 0 && StringUtils.isNotEmpty(filename)){
                    originalFilename = originalFilename +"."+filename;
                }
                InputStream inputStream = multipartFile.getInputStream();
                uploadVO = fileUploadService.uploadStream(inputStream,originalFilename,fastdfs_file_url);
                file1.delete();
            }
            return success("上传成功", uploadVO);
        }
    }
    @PostMapping(value = BaseRequestMapping.FileUpload.UPLOAD_STRING)
    @ApiOperation(value = "base64上传图片",notes = "base64上传图片")
    public ObjEnvelop<UploadVO> uploadImages(@ApiParam(name = "jsonData", value = "头像转化后的输入流")
                                             @RequestParam(value = "jsonData", required = true) String jsonData) throws Exception {
        UploadVO uploadVO = fileUploadService.uploadImages(jsonData,fastdfs_file_url);
        return success("上传成功", uploadVO);
    }
}

+ 40 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/org/OrgEndpoint.java

@ -0,0 +1,40 @@
package com.yihu.jw.care.endpoint.org;
import com.yihu.jw.care.service.org.BaseOrgService;
import com.yihu.jw.restmodel.web.ListEnvelop;
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.web.bind.annotation.*;
/**
 * Created by yeshijie on 2021/3/3.
 */
@RestController
@RequestMapping("org" )
@Api(tags = "机构信息", description = "机构信息")
public class OrgEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private BaseOrgService orgService;
    @RequestMapping(value = "/findOrgList", method = RequestMethod.GET)
    @ApiOperation(value = "获取机构成员")
    public ListEnvelop findOrgList(@ApiParam(name = "type", value = "机构类型1. 等级医院2. 社区医院3.  养老机构")
                                      @RequestParam(value = "type", required = false) String type,
                                      @ApiParam(name = "name", value = "医生姓名")
                                      @RequestParam(value = "name", required = false) String name) {
        try {
            return ListEnvelop.getSuccess("获取成功",orgService.findOrgList(type,name));
        } catch (Exception e) {
            e.printStackTrace();
            return ListEnvelop.getError("获取失败");
        }
    }
}

+ 96 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/patient/PatientEndpoint.java

@ -0,0 +1,96 @@
package com.yihu.jw.care.endpoint.patient;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.aop.ServicesAuth;
import com.yihu.jw.care.aop.ServicesAuthAOP;
import com.yihu.jw.care.service.patient.CarePatientService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.base.BaseRequestMapping;
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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
 * Created by yeshijie on 2021/2/24.
 */
@RestController
@RequestMapping("patient" )
@Api(tags = "用户基础信息", description = "用户基础信息")
public class PatientEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private CarePatientService patientService;
    @Autowired
    ServicesAuthAOP servicesAuthAOP;
    @GetMapping(value = "testServicesAuth1")
    @ApiOperation(value = "测试居民服务项权限操作")
    @ServicesAuth(item = "auth")
    public Envelop testServicesAuth1(
            @ApiParam(name = "patientId", value = "居民id")
            @RequestParam(value = "patientId", required = true) String patientId) {
        try{
            return success("获取成功");
        }catch (Exception e){
            e.printStackTrace();
            return failed("获取失败",-1);
        }
    }
    @GetMapping(value = "testServicesAuth2")
    @ApiOperation(value = "测试居民服务项权限操作")
    @ServicesAuth(item = "healthEducation")
    public Envelop testServicesAuth2(
            @ApiParam(name = "patientId", value = "居民id")
            @RequestParam(value = "patientId", required = true) String patientId) {
        try{
            return success("获取成功");
        }catch (Exception e){
            e.printStackTrace();
            return failed("获取失败",-1);
        }
    }
    @GetMapping(value = "myPatientPage")
    @ApiOperation(value = "通讯录-我的居民分页")
    public PageEnvelop<List<Map<String,Object>>> myPatientPage (
            @ApiParam(name = "name", value = "居民姓名", required = false)
            @RequestParam(value = "name",required = false) String name,
            @ApiParam(name = "doctorId", value = "医生code", required = true)
            @RequestParam(value = "doctorId",required = true) String doctorId,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size) throws Exception {
        try{
            return patientService.myPatientPage(name, doctorId, page, size);
        }catch (Exception e){
            e.printStackTrace();
            return PageEnvelop.getError("查询失败");
        }
    }
    @GetMapping(value = BaseRequestMapping.BasePatient.getPatientById)
    @ApiOperation(value = "获取居民信息")
    public Envelop getPatientById(
            @ApiParam(name = "id", value = "居民id")
            @RequestParam(value = "id", required = true) String id) {
        try{
            JSONObject result = patientService.findPatientById(id);
            return success("获取成功",result);
        }catch (Exception e){
            e.printStackTrace();
            return failed("获取失败",-1);
        }
    }
}

+ 290 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/sign/SignEndpoint.java

@ -0,0 +1,290 @@
package com.yihu.jw.care.endpoint.sign;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.dao.sign.ArchiveDao;
import com.yihu.jw.care.dao.sign.CapacityAssessmentRecordDao;
import com.yihu.jw.care.service.sign.ArchiveService;
import com.yihu.jw.care.service.sign.CapacityAssessmentRecordService;
import com.yihu.jw.care.service.sign.ServicePackageService;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageSignRecordDO;
import com.yihu.jw.entity.care.archive.ArchiveDO;
import com.yihu.jw.entity.care.sign.CapacityAssessmentRecordDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.common.IdCardUtil;
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.*;
import java.util.List;
import java.util.Map;
/**
 * Created by yeshijie on 2021/2/24.
 */
@RestController
@RequestMapping(value = "sign")
@Api(value = "签约相关", description = "签约相关", tags = {"签约相关"})
public class SignEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private ArchiveService archiveService;
    @Autowired
    private BasePatientDao patientDao;
    @Autowired
    private ArchiveDao archiveDao;
    @Autowired
    private CapacityAssessmentRecordService capacityAssessmentRecordService;
    @Autowired
    private CapacityAssessmentRecordDao capacityAssessmentRecordDao;
    @Autowired
    private ServicePackageService servicePackageService;
    @GetMapping(value = "signRecordPage")
    @ApiOperation(value = "获取签约记录分页")
    public PageEnvelop<List<Map<String,Object>>> signRecordPage (
            @ApiParam(name = "name", value = "居民姓名", required = false)
            @RequestParam(value = "name",required = false) String name,
            @ApiParam(name = "doctorId", value = "医生code", required = true)
            @RequestParam(value = "doctorId",required = true) String doctorId,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size) throws Exception {
        try{
            return servicePackageService.signRecordPage(name, doctorId, page, size);
        }catch (Exception e){
            e.printStackTrace();
            return PageEnvelop.getError("查询失败");
        }
    }
    @GetMapping(value = "getSignTopNum")
    @ApiOperation(value = "签约管理-获取签约/未签约总数")
    public ObjEnvelop servicePackageSign(
            @ApiParam(name = "doctorId", value = "医生id", required = true)
            @RequestParam String doctorId) {
        try{
            int signTotal = servicePackageService.getSignTotal(doctorId);
            int unSignTotal = archiveService.getUnSignTotal(doctorId);
            JSONObject json = new JSONObject();
            json.put("signTotal",signTotal);
            json.put("unSignTotal",unSignTotal);
            return ObjEnvelop.getSuccess("查询成功",json);
        }catch (Exception e){
            e.printStackTrace();
            return ObjEnvelop.getError("查询失败");
        }
    }
    @GetMapping(value = "findSignById")
    @ApiOperation(value = "根据签约记录获取签约详情")
    public ObjEnvelop findSignById(
            @ApiParam(name = "id", value = "签约记录id", required = true)
            @RequestParam String id) {
        try{
            return ObjEnvelop.getSuccess("查询成功",servicePackageService.findSignById(id));
        }catch (Exception e){
            e.printStackTrace();
            return ObjEnvelop.getError("查询失败");
        }
    }
    @PostMapping(value = "servicePackageSign" )
    @ApiOperation(value = "分配服务包-签约")
    @ObserverRequired
    public Envelop servicePackageSign(
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData,
            @ApiParam(name = "doctorId", value = "医生id", required = true)
            @RequestParam String doctorId) {
        try{
            ServicePackageSignRecordDO signRecordDO = servicePackageService.servicePackageSign(jsonData,doctorId);
            servicePackageService.setPatientServiceItems(signRecordDO.getPatient());
            return success("分配成功");
        }catch (Exception e){
            e.printStackTrace();
            return failed("分配失败",-1);
        }
    }
    @GetMapping(value = "servicePackagePage")
    @ApiOperation(value = "获取服务包分页")
    public PageEnvelop<List<Map<String,Object>>> servicePackagePage (
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size) throws Exception {
        try{
            return servicePackageService.servicePackagePage(page, size);
        }catch (Exception e){
            e.printStackTrace();
            return PageEnvelop.getError("查询失败");
        }
    }
    @GetMapping(value = "isCapacityAssessment" )
    @ApiOperation(value = "查询今年是否进行过能力评估")
    public ObjEnvelop isCapacityAssessment(
            @ApiParam(name = "patientId", value = "居民id", required = true)
            @RequestParam String patientId)  {
        try{
            return ObjEnvelop.getSuccess("查询成功",capacityAssessmentRecordService.isCapacityAssessment(patientId));
        }catch (Exception e){
            e.printStackTrace();
            return ObjEnvelop.getError("查询失败");
        }
    }
    @GetMapping(value = "findAssessmentById" )
    @ApiOperation(value = "按id查找评估明细")
    public ObjEnvelop findAssessmentById(
            @ApiParam(name = "id", value = "评估id", required = true)
            @RequestParam String id)  {
        try{
            CapacityAssessmentRecordDO recordDO = capacityAssessmentRecordDao.findOne(id);
            BasePatientDO basePatientDO = patientDao.findById(recordDO.getPatient());
            recordDO.setAge(IdCardUtil.getAgeForIdcard(basePatientDO.getIdcard()));
            recordDO.setPhoto(basePatientDO.getPhoto());
            return ObjEnvelop.getSuccess("查询成功",recordDO);
        }catch (Exception e){
            e.printStackTrace();
            return ObjEnvelop.getError("查询失败");
        }
    }
    @GetMapping(value = "assessmentPage")
    @ApiOperation(value = "获取能力评估分页")
    public PageEnvelop<List<Map<String,Object>>> assessmentPage (
            @ApiParam(name = "doctorId", value = "医生id", required = true)
            @RequestParam(value = "doctorId") String doctorId,
            @ApiParam(name = "name", value = "居民姓名或身份证", required = false)
            @RequestParam(value = "name",required = false) String name,
            @ApiParam(name = "status", value = "认可结果(0未认可,1已认可,2不认可)", required = false)
            @RequestParam(value = "status",required = false) Integer status,
            @ApiParam(name = "levelConclusion", value = "评估结果/等级结论", required = false)
            @RequestParam(value = "levelConclusion",required = false) Integer levelConclusion,
            @ApiParam(name = "servicePackageStatus", value = "服务包分配(0未分配,1已分配)", required = false)
            @RequestParam(value = "servicePackageStatus",required = false) Integer servicePackageStatus,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size) throws Exception {
        try{
            return capacityAssessmentRecordService.assessmentPage(doctorId, name, page, size, status, levelConclusion, servicePackageStatus);
        }catch (Exception e){
            e.printStackTrace();
            return PageEnvelop.getError("查询失败");
        }
    }
    @PostMapping(value = "capacityAssessment" )
    @ApiOperation(value = "生成能力评估报告")
    @ObserverRequired
    public Envelop capacityAssessment(
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData,
            @ApiParam(name = "doctorId", value = "医生id", required = true)
            @RequestParam String doctorId) {
        try{
            capacityAssessmentRecordService.capacityAssessment(jsonData,doctorId);
            return success("生成成功");
        }catch (Exception e){
            e.printStackTrace();
            return failed("生成失败",-1);
        }
    }
    @PostMapping(value = "confirmAssessment" )
    @ApiOperation(value = "确认评估结果")
    @ObserverRequired
    public Envelop confirmAssessment(
            @ApiParam(name = "signUrl", value = "签字结果图片url", required = true)
            @RequestParam String signUrl,
            @ApiParam(name = "status", value = "认可结果(0未认可,1已认可,2不认可)", required = true)
            @RequestParam Integer status,
            @ApiParam(name = "id", value = "评估id", required = true)
            @RequestParam String id) {
        try{
            capacityAssessmentRecordService.confirmAssessment(signUrl, status, id);
            return success("确认成功");
        }catch (Exception e){
            e.printStackTrace();
            return failed("确认失败",-1);
        }
    }
    @PostMapping(value = "createArchive" )
    @ApiOperation(value = "建档")
    @ObserverRequired
    public Envelop createArchive(
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData,
            @ApiParam(name = "doctorId", value = "医生id", required = true)
         @RequestParam String doctorId) {
        try{
            JSONObject jsonObject = JSONObject.parseObject(jsonData);
            BasePatientDO patientDO = toEntity(jsonObject.getJSONObject("patient").toJSONString(), BasePatientDO.class);
            String idcard = patientDO.getIdcard();
            if(patientDao.existsByIdcardAndDel(idcard,"1")){
                ArchiveDO archiveDO = archiveDao.findByIdcardAndDoctorCode(idcard,doctorId);
                if(archiveDO!=null){
                    return success(archiveDO);
                }else {
                    return failed("您所提交的居民信息已存在,请勿重复建档");
                }
            }
            archiveService.createArchive(patientDO,doctorId);
            return success("建档成功");
        }catch (Exception e){
            e.printStackTrace();
            return failed("建档失败",-1);
        }
    }
    @PostMapping(value = "sysArchive" )
    @ApiOperation(value = "同步档案")
    @ObserverRequired
    public Envelop sysArchive(
            @ApiParam(name = "idcard", value = "居民身份证", required = true)
            @RequestParam String idcard,
            @ApiParam(name = "doctorId", value = "医生id", required = true)
            @RequestParam String doctorId)  {
        try{
            archiveService.sysArchive(doctorId,idcard);
            return success("同步成功");
        }catch (Exception e){
            e.printStackTrace();
            return failed("同步失败",-1);
        }
    }
    @GetMapping(value = "archiveList")
    @ApiOperation(value = "获取档案分页")
    public PageEnvelop<List<Map<String,Object>>> archiveList (
            @ApiParam(name = "doctorId", value = "医生id", required = true)
            @RequestParam(value = "doctorId") String doctorId,
            @ApiParam(name = "signStatus", value = "签约状态", required = false)
            @RequestParam(value = "signStatus",required = false) Integer signStatus,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size) throws Exception {
        try{
            return archiveService.archiveList(doctorId,page,size,signStatus);
        }catch (Exception e){
            e.printStackTrace();
            return PageEnvelop.getError("查询失败");
        }
    }
}

+ 232 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/team/TeamEndpoint.java

@ -0,0 +1,232 @@
package com.yihu.jw.care.endpoint.team;
import com.yihu.jw.care.aop.ObserverRequired;
import com.yihu.jw.care.dao.team.BaseTeamDao;
import com.yihu.jw.care.service.team.BaseTeamService;
import com.yihu.jw.entity.base.team.BaseTeamDO;
import com.yihu.jw.restmodel.web.Envelop;
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.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
 * Created by yeshijie on 2021/2/24.
 */
@RestController
@RequestMapping("team" )
@Api(tags = "医生团队信息", description = "医生团队信息")
public class TeamEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private BaseTeamService teamService;
    @Autowired
    private BaseTeamDao teamDao;
    @RequestMapping(method = RequestMethod.POST)
    @ApiOperation(value = "创建团队")
    @ObserverRequired
    public ObjEnvelop createTeam(@RequestParam("teamName") String teamName,
                                 @RequestParam("leaderCode") String leaderCode,
                                 @RequestParam("orgCode") String orgCode,
                                 @RequestParam("orgName") String orgName) {
        try {
            BaseTeamDO teamDO = teamService.createTeam(teamName, leaderCode, orgCode, orgName);
            return ObjEnvelop.getSuccess("创建成功",teamDO);
        } catch (Exception e) {
            e.printStackTrace();
            return ObjEnvelop.getError("创建失败");
        }
    }
    @RequestMapping(value = "/remove", method = RequestMethod.POST)
    @ApiOperation(value = "删除团队信息")
    @ObserverRequired
    public Envelop deleteTeam(@RequestParam("teamCode") String teamCode) {
        try {
            teamService.deleteTeam(teamCode);
            return success("删除成功");
        } catch (Exception e) {
            e.printStackTrace();
            return failed("删除失败", -1);
        }
    }
    @RequestMapping(value = "/{teamCode}/name", method = RequestMethod.POST)
    @ApiOperation(value = "更新团队名称")
    @ObserverRequired
    public ObjEnvelop updateTeamName(@PathVariable("teamCode") String teamCode,
                                 @RequestParam("teamName") String teamName) {
        try {
            BaseTeamDO team = teamService.updateTeamName(teamCode, teamName);
            return ObjEnvelop.getSuccess("更新成功",team);
        } catch (Exception e) {
            e.printStackTrace();
            return ObjEnvelop.getError("更新失败");
        }
    }
    @RequestMapping(value = "/{teamCode}/leader", method = RequestMethod.POST)
    @ApiOperation(value = "更新团队领导")
    @ObserverRequired
    public ObjEnvelop updateTeamLeader(@PathVariable("teamCode") String teamCode,
                                   @RequestParam("doctorCode") String doctorCode) {
        try {
            BaseTeamDO team = teamService.updateTeamLeader(teamCode, doctorCode);
            return ObjEnvelop.getSuccess("更新成功",team);
        } catch (Exception e) {
            e.printStackTrace();
            return ObjEnvelop.getError("更新失败");
        }
    }
    @RequestMapping(value = "/{teamCode}", method = RequestMethod.GET)
    @ApiOperation(value = "团队信息")
    public ObjEnvelop getTeam(@PathVariable("teamCode") String teamCode) {
        try {
            BaseTeamDO team = teamDao.findOne(teamCode);
            return ObjEnvelop.getSuccess("获取成功",team);
        } catch (Exception e) {
            e.printStackTrace();
            return ObjEnvelop.getError("获取失败");
        }
    }
    @RequestMapping(value = "/{teamCode}/members", method = RequestMethod.POST)
    @ApiOperation(value = "添加团队成员,批量添加使用逗号分隔列表")
    @ObserverRequired
    public Envelop addMember(@PathVariable("teamCode") String teamCode,
                            @RequestParam("doctorCodeList") String doctorCodeList) {
        try {
            String doctorCodes[] = doctorCodeList.split(",");
            BaseTeamDO team = teamDao.findOne(teamCode);
            for (String doctorCode : doctorCodes) {
                teamService.addMember(team, doctorCode);
            }
            return success("添加成功");
        } catch (Exception e) {
            e.printStackTrace();
            return failed("删除失败", -1);
        }
    }
    @RequestMapping(value = "/{teamCode}/members", method = RequestMethod.GET)
    @ApiOperation(value = "获取团队成员")
    public ListEnvelop getTeamMembers(@PathVariable("teamCode") String teamCode,
                                      @ApiParam(name = "name", value = "医生姓名")
                                 @RequestParam(value = "name", required = false) String name) {
        try {
            return ListEnvelop.getSuccess("获取成功",teamService.findMembers(teamCode,name));
        } catch (Exception e) {
            e.printStackTrace();
            return ListEnvelop.getError("获取失败");
        }
    }
    @RequestMapping(value = "/{teamCode}/members/{doctorCode}/remove", method = RequestMethod.POST)
    @ApiOperation(value = "移除成员")
    @ObserverRequired
    public Envelop removeMember(@PathVariable("teamCode") String teamCode,
                               @PathVariable("doctorCode") String doctorCode) {
        try {
            teamService.removeMember(teamCode, doctorCode);
            return success("移除成功");
        } catch (Exception e) {
            e.printStackTrace();
            return failed("移除失败", -1);
        }
    }
    @RequestMapping(value = "/team/{doctorCode}/team", method = RequestMethod.GET)
    @ApiOperation(value = "获取团队长团队")
    public ObjEnvelop getLeaderTeam(@PathVariable("doctorCode") String doctorCode) {
        try {
            BaseTeamDO team = teamDao.findByLeaderCode(doctorCode);
            if (team == null) {
                return ObjEnvelop.getError( "没有找到数据!",-2);
            }
            return ObjEnvelop.getSuccess("获取成功",team);
        } catch (Exception e) {
            e.printStackTrace();
            return ObjEnvelop.getError("获取失败");
        }
    }
    /**
     * 当前医生为团队长信息排在最前,成员在后
     * @param doctorCode
     * @return
     */
    @RequestMapping(value = "/team/{doctorCode}/teams", method = RequestMethod.GET)
    @ApiOperation(value = "获取医生团队列表")
    public ListEnvelop getDoctorTeams(@PathVariable("doctorCode") String doctorCode) {
        try {
            ArrayList teams = new ArrayList();
            List<BaseTeamDO> teamList = teamDao.findDoctorTeams(doctorCode);
            BaseTeamDO team = teamDao.findByLeaderCode(doctorCode);
            String teamCode = "";
            if (team != null){
                teams.add(team);
                teamCode = team.getId();
            }
            for (BaseTeamDO list : teamList){
                if (teamCode!=list.getId()){
                    teams.add(list);
                }
            }
            return ListEnvelop.getSuccess("获取成功",teams);
        } catch (Exception e) {
            e.printStackTrace();
            return ListEnvelop.getError("获取失败");
        }
    }
    @RequestMapping(value = "/teams/info", method = RequestMethod.GET)
    @ApiOperation(value = "查询团队信息")
    public ObjEnvelop getTeamInfo( @RequestParam(value = "teamCode", defaultValue = "0", required = true) String teamCode){
        try{
            JSONObject result =  teamService.getTeamInfo(teamCode);
            return ObjEnvelop.getSuccess("查询成功",result);
        }catch (Exception e){
            e.printStackTrace();
            return ObjEnvelop.getError("查询失败");
        }
    }
    @RequestMapping(value = "/teams/{hospital}", method = RequestMethod.GET)
    @ApiOperation(value = "查询机构下的团队(翻译名称)")
    public ListEnvelop getHospitalTeams(@PathVariable  String hospital){
        try{
            List<BaseTeamDO> teams =  teamService.getHospitalTeams(hospital);
            return ListEnvelop.getSuccess("查询成功",teams);
        }catch (Exception e){
            e.printStackTrace();
            return ListEnvelop.getError("获取失败");
        }
    }
    @RequestMapping(value = "/teams/{hospital}/noTranslateAdminTeamLeaderName", method = RequestMethod.GET)
    @ApiOperation(value = "查询机构下的团队(不翻译名称)")
    public ListEnvelop getHospitalTeamsNoTranslateAdminTeamLeaderName(@PathVariable  String hospital){
        try{
            List<BaseTeamDO> teams =  teamDao.findByOrgCode(hospital);
            return ListEnvelop.getSuccess("查询成功",teams);
        }catch (Exception e){
            e.printStackTrace();
            return ListEnvelop.getError("获取失败");
        }
    }
}

+ 59 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/version/VersionEndpoint.java

@ -0,0 +1,59 @@
package com.yihu.jw.care.endpoint.version;
import com.yihu.jw.entity.base.version.AppVersionDO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import com.yihu.jw.version.service.AppVersionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections.map.HashedMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
 * Created by Trick on 2020/2/24.
 */
@RestController
@RequestMapping(value = BaseHospitalRequestMapping.Version.PREFIX)
@Api(value = "app升级", description = "app升级", tags = {"app升级"})
public class VersionEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private AppVersionService versionsService;
    /**
     * 校验APP版本号
     * @param code 版本类型编码
     * @param version 当前版本号
     * @return
     */
    @GetMapping(value = BaseHospitalRequestMapping.Version.app)
    @ApiOperation(value = "app升级")
    public Envelop appVersion(String code, double version) {
            AppVersionDO temp = versionsService.findVersionByCode(code);
            if (temp == null) {
                return Envelop.getError( "无效的APP类型失败!");
            }
            if (version > 0) {
                if (temp.getVersionInt() > version) {
                    // 有新的版本号
                    return success("发现新版本!", temp.getUrl());
                } else {
                    // 已是最新版本
                    return success("已是最新版本!");
                }
            } else {
                Map<String,Object> map = new HashedMap();
                map.put("version_int", temp.getVersionInt());
                map.put("version_str", temp.getVersionStr());
                map.put("url", temp.getUrl());
                map.put("info", temp.getInfo());
                map.put("size", temp.getSize());
                return success("读取版本号成功!", map);
            }
    }
}

+ 261 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/wechat/WechatCoreController.java

@ -0,0 +1,261 @@
package com.yihu.jw.care.endpoint.wechat;
import com.yihu.jw.care.service.wechat.WeiXinCoreService;
import com.yihu.jw.entity.base.wx.WxAccessTokenDO;
import com.yihu.jw.entity.base.wx.WxTemplateConfigDO;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.wechat.WeixinMessagePushUtils;
import com.yihu.jw.wechat.dao.WxPushLogDao;
import com.yihu.jw.wechat.service.WxAccessTokenService;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
/*
 * Created by lyr on 2016/08/11.
*/
@Controller
@RequestMapping(value = "/weixin", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(value = "微信", description = "微信", tags = {"微信"})
public class WechatCoreController extends EnvelopRestEndpoint {
    private Logger logger= LoggerFactory.getLogger(WechatCoreController.class);
    @Autowired
    private WeiXinCoreService weiXinCoreService;
    @Autowired
    private WeixinMessagePushUtils weixinMessagePushUtils;
    @Autowired
    private WxAccessTokenService wxAccessTokenService;
    @Value("${wechat.id}")
    private String wechatId;
    private static String wechat_token ="xAeQrX7uOD0OusIZ5JUQzrLPYIQBlqbS" ;
    @Autowired
    private WxPushLogDao wxPushLogDao;
    /**
     * 微信接口验证
     *
     * @param request
     * @param response
     */
    @RequestMapping(method = RequestMethod.GET)
    @ResponseBody
    public void checkSignature(HttpServletRequest request, HttpServletResponse response) {
        try {
            String signature = request.getParameter("signature").toString();
            String timestamp = request.getParameter("timestamp").toString();
            String nonce = request.getParameter("nonce").toString();
            String echostr = request.getParameter("echostr").toString();
            logger.info("echostr"+echostr+"===nonce"+nonce+"====signature"+signature+"====timestamp"+timestamp);
            if (validate(signature, timestamp, nonce)) {
                // 验证成功,返回验证码
                response.getWriter().print(echostr);
            } else {
                // 验证失败
                response.setStatus(401);
            }
        } catch (Exception e) {
            // 服务器错误
            response.setStatus(500);
        }
    }
  /* *//*
     * 接收居民微信回复的消息
     *
     * @return
    *//*
    @RequestMapping(method = RequestMethod.POST)
    @ResponseBody
    public void receiveMessages(HttpServletRequest request, HttpServletResponse response) {
        try {
            String signature = request.getParameter("signature").toString();
            String timestamp = request.getParameter("timestamp").toString();
            String nonce = request.getParameter("nonce").toString();
            WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById(wechatId);
            if (validate(signature, timestamp, nonce)) {
                String xmlStr = weiXinCoreService.messageProcess(request, wxAccessTokenDO.getAccessToken());
                // 判断返回值是xml、json格式(取关是空串)
                Boolean flag = weiXinCoreService.isXML(xmlStr);
                if (xmlStr == "error") {
                    // 服务器错误
                    response.setStatus(500);
                } else if (!flag && StringUtils.isNotEmpty(xmlStr)) {
                    JSONObject json = new JSONObject(xmlStr);
                    if (json.has("openId")) {
                        if (StringUtils.isNotEmpty(json.getString("openId")) && !("undefined".equals(json.getString("openId")))) {
                                try {
                                    logger.info("调用眼科微信模板消息接口的入参:AccessToken="+wxAccessTokenDO.getAccessToken()+"---Openid="+json.getString(""));
                                    weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(), json.getString("openId"), json);
                                    logger.info("发送成功");
                                } catch (Exception e) {
                                    e.printStackTrace();
                                    logger.info("发送失败,error="+e.getMessage());
                                }
                                //保存发送模板记录,
                                WxPushLogDO wxPushLogDO = new WxPushLogDO();
                                wxPushLogDO.setCreateTime(new Date());
                                wxPushLogDO.setOpenid(json.getString("openId"));
                                wxPushLogDO.setReceiver(null);
                                wxPushLogDO.setWechatId(wechatId);
                                wxPushLogDO.setReceiverName(null);
                                wxPushLogDO.setScene(null);
                                wxPushLogDao.save(wxPushLogDO);
                            }
                        }
                    }
                } else {
                    // 返回消息(图文消息)
                    response.setHeader("Content-type", "text/html;charset=UTF-8");
                    //这句话的意思,是告诉servlet用UTF-8转码,而不是用默认的ISO8859
                    response.setCharacterEncoding("UTF-8");
                    response.getWriter().print(null);
                }
            } else {
                // 验证失败
                response.setStatus(401);
            }
        } catch (Exception e) {
            e.printStackTrace();
            // 服务器错误
            response.setStatus(500);
        }
    }*/
    /**
     * 接收居民微信回复的消息
     *
     * @return
     */
    @RequestMapping(method = RequestMethod.POST)
    @ResponseBody
    public void receiveMessages(HttpServletRequest request, HttpServletResponse response) {
        try {
            String signature = request.getParameter("signature").toString();
            String timestamp = request.getParameter("timestamp").toString();
            String nonce = request.getParameter("nonce").toString();
            WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById(wechatId);
            if (validate(signature, timestamp, nonce)) {
                String xmlStr = weiXinCoreService.messageProcess(request, wxAccessTokenDO.getAccessToken());
                // 判断返回值是xml、json格式(取关是空串)
                Boolean flag = weiXinCoreService.isXML(xmlStr);
                if (xmlStr == "error") {
                    // 服务器错误
                    response.setStatus(500);
                } else if (!flag && StringUtils.isNotEmpty(xmlStr)) {
                    JSONObject json = new JSONObject(xmlStr);
                    if (json.has("openId")) {
                        if (StringUtils.isNotEmpty(json.getString("openId")) && !("undefined".equals(json.getString("openId")))) {
                            logger.info("调用眼科微信模板消息接口的入参:AccessToken="+wxAccessTokenDO.getAccessToken()+"---Openid="+json.getString(""));
                            WxTemplateConfigDO wxTemplateConfigDO = new WxTemplateConfigDO();
                            wxTemplateConfigDO.setRemark(json.toString());
                            weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(), json.getString("openId"), wxTemplateConfigDO);
                            logger.info("发送成功");
                        }
                    }
                } else {
                    // 返回消息(图文消息)
                    response.setHeader("Content-type", "text/html;charset=UTF-8");
                    //这句话的意思,是告诉servlet用UTF-8转码,而不是用默认的ISO8859
                    response.setCharacterEncoding("UTF-8");
                    logger.info(xmlStr);
                    response.getWriter().print(xmlStr);
                }
            } else {
                // 验证失败
                response.setStatus(401);
            }
        } catch (Exception e) {
            e.printStackTrace();
            // 服务器错误
            response.setStatus(500);
        }
    }
     /*
     * 微信推送消息验证
     *
     * @param signature
     * @param timestamp
     * @param nonce
     * @return
     * @throws NoSuchAlgorithmException
     */
    private boolean validate(String signature, String timestamp, String nonce) throws NoSuchAlgorithmException {
        String token = this.wechat_token;
        // 字典序排序
        String[] array = new String[]{token, timestamp, nonce};
        Arrays.sort(array);
        //连接字典序排序后字符串
        String content = "";
        for (String str : array) {
            content += str;
        }
        // 解析
        MessageDigest md = MessageDigest.getInstance("SHA-1");
        String decodeStr = "";
        byte[] bytes = md.digest(content.getBytes());
        decodeStr = byteToStr(bytes);
        if (StringUtils.isNotEmpty(decodeStr) && decodeStr.equals(signature.toUpperCase())) {
            return true;
        } else {
            return false;
        }
    }
    /*
     * 将字节数组转换为字符串
     *
     * @param byteArray
     * @return
    */
    private static String byteToStr(byte[] byteArray) {
        String strDigest = "";
        for (int i = 0; i < byteArray.length; i++) {
            strDigest += byteToHexStr(byteArray[i]);
        }
        return strDigest;
    }
    /*
     * 将字节转换为字符
     *
     * @param mByte
     * @return
     */
    private static String byteToHexStr(byte mByte) {
        char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
        char[] tempArr = new char[2];
        tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
        tempArr[1] = Digit[mByte & 0X0F];
        String s = new String(tempArr);
        return s;
    }
}

+ 79 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/wechat/WechatMenuController.java

@ -0,0 +1,79 @@
package com.yihu.jw.care.endpoint.wechat;
import com.yihu.jw.entity.base.wx.WxAccessTokenDO;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.wechat.wxhttp.HttpUtil;
import com.yihu.jw.wechat.service.WxAccessTokenService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
/**
 * Created by chenweida on 2017/8/4.
 */
@Controller
@RequestMapping(value = "/wechat/menu", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(description = "微信菜单相关管理")
public class WechatMenuController extends EnvelopRestEndpoint {
    private Logger logger= LoggerFactory.getLogger(WechatMenuController.class);
    @Autowired
    private WxAccessTokenService wxAccessTokenService;
    @Value("${wechat.id}")
    private String wechatId;
    /**
     * 微信菜单创建
     *
     * @return
     */
    @ApiOperation(value = "微信菜单创建")
    @RequestMapping(value = "/menu/create", method = RequestMethod.GET)
    public String createMenuTest() {
        try {
            WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById(wechatId);
            String filePath = "/usr/local/hospital/weixin_menu.txt";
            logger.info("filePath"+filePath);
            String url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + wxAccessTokenDO.getAccessToken();
            // 读取微信菜单配置文件
            InputStreamReader reader = new InputStreamReader(new FileInputStream(filePath), "utf-8");
            BufferedReader bufferedReader = new BufferedReader(reader);
            String params = "";
            String readTxt = "";
            // 读取微信菜单
            while ((readTxt = bufferedReader.readLine()) != null) {
                System.out.println(readTxt);
                params += readTxt;
            }
            bufferedReader.close();
            reader.close();
            // 请求微信接口创建菜单
            String jsonStr = HttpUtil.sendPost(url, params);
            logger.info("日志"+jsonStr);
            JSONObject result = new JSONObject(jsonStr);
            if (result != null && result.get("errcode").toString().equals("0") && result.getString("errmsg").equals("ok")) {
                return  "创建成功!";
            } else {
                return "创建失败!";
            }
        } catch (Exception e) {
            return  "创建失败";
        }
    }
}

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

@ -0,0 +1,87 @@
package com.yihu.jw.care.service.doctor;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.DoctorSpecialDiseaseDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.utils.StringUtil;
import com.yihu.mysql.query.BaseJpaService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * Created by yeshijie on 2021/3/3.
 */
@Service
public class CareDoctorService extends BaseJpaService<BaseDoctorDO, BaseDoctorDao> {
    private static Logger logger = LoggerFactory.getLogger(CareDoctorService.class);
    @Autowired
    private BaseDoctorDao baseDoctorDao;
    @Autowired
    private DoctorSpecialDiseaseDao specialDiseaseDao;
    @Autowired
    private StringRedisTemplate redisTemplate;
    @Autowired
    private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
    /**
     * 获取医生详情
     * @return
     */
    public Map<String,Object> doctorInfo(String doctorId){
        String sql = "SELECT d.id,d.name,d.photo,d.introduce,d.mobile,d.idcard,d.sex,h.dept_code deptCode,h.dept_name deptName,d.job_title_code jobTitleCode,d.job_title_name jobTitleName ";
        sql += "from base_doctor d left join base_doctor_hospital h on d.id = h.doctor_code  and h.del = 1" +
                "WHERE d.id = '"+doctorId+"' ";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        for (Map<String,Object> map :list){
            String idcard = map.get("idcard").toString();
            map.put("age", IdCardUtil.getAgeForIdcard(idcard));
        }
        return list.get(0);
    }
    /**
     * 获取医生记录分页
     * @param name
     * @param page
     * @param size
     * @return
     */
    public PageEnvelop<List<Map<String,Object>>> doctorPage(String name,String orgCode,int page, int size){
        String sql = "SELECT d.id,d.name,d.photo,d.mobile,d.idcard,d.sex,h.dept_code deptCode,h.dept_name deptName,d.job_title_code jobTitleCode,d.job_title_name jobTitleName ";
        String countSql = "SELECT count(d.id) ";
        String filters = "from base_doctor d,base_doctor_hospital h " +
                "WHERE d.id = h.doctor_code and d.del = 1 and h.del = 1 ";
        if(!StringUtil.isEmpty(orgCode)){
            filters += " and h.org_code = '"+orgCode+"' ";
        }
        if(!StringUtil.isEmpty(name)){
            filters += " and d.name like '%"+name+"%' ";
        }
        String orderBy = " ORDER BY d.id DESC " +
                "LIMIT "+ (page - 1) * size + "," + size;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql+filters+orderBy);
        for (Map<String,Object> map :list){
            String idcard = map.get("idcard").toString();
            map.put("age", IdCardUtil.getAgeForIdcard(idcard));
        }
        Long count = jdbcTemplate.queryForObject(countSql+filters,Long.class);
        return PageEnvelop.getSuccessListWithPage("success",list,page,size,count);
    }
}

+ 799 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/family/PatientFamilyMemberService.java

@ -0,0 +1,799 @@
package com.yihu.jw.care.service.family;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.family.PatientFamilyMemberDao;
import com.yihu.jw.care.dao.sign.ServicePackageSignRecordDao;
import com.yihu.jw.care.service.wechat.WeiXinAccessTokenUtils;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.BasePatientFamilyMemberDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageSignRecordDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.security.MD5;
import com.yihu.jw.util.wechat.wxhttp.HttpUtil;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * @author liuwenbin on 2018/11/27.
 */
@Service
public class PatientFamilyMemberService extends BaseJpaService<BasePatientFamilyMemberDO, PatientFamilyMemberDao> {
    Map<Integer, String> relations = new HashMap<>();
    @Autowired
    private PatientFamilyMemberDao memberDao;
    @Autowired
    private BasePatientDao patientDao;
    @Autowired
    private ServicePackageSignRecordDao signRecordDao;
    @Autowired
    private WeiXinAccessTokenUtils weiXinAccessTokenUtils;
    @PostConstruct
    public void init() {
        relations.put(0, "其他");
        relations.put(1, "父亲");
        relations.put(2, "母亲");
        relations.put(3, "老公");
        relations.put(4, "老婆");
        relations.put(5, "儿子");
        relations.put(6, "女儿");
        relations.put(7, "未知");
        relations.put(8, "免疫关联");
    }
    /**
     * 家庭关系转换
     *
     * @param patient  居民
     * @param relation 关系 1父亲 2母亲 3老公 4老婆 5儿子 6女儿 7其他
     * @return
     */
    public int familyRelationTrans(BasePatientDO patient, int relation) throws Exception {
        int relationTrans = 0;
        switch (relation) {
            case 1:
            case 2:
                if (patient.getSex() == 1) {
                    relationTrans = 5;
                } else if (patient.getSex() == 2) {
                    relationTrans = 6;
                } else {
                    relationTrans = 0;
                }
                if (relationTrans == 0) {
                    if (IdCardUtil.getSexForIdcard(StringUtils.isEmpty(patient.getIdcard()) ? "" : patient.getIdcard()).equals("1")) {
                        relationTrans = 6;
                    } else if (IdCardUtil.getSexForIdcard(StringUtils.isEmpty(patient.getIdcard()) ? "" : patient.getIdcard()).equals("2")) {
                        relationTrans = 5;
                    }
                }
                break;
            case 3:
                relationTrans = 4;
                break;
            case 4:
                relationTrans = 3;
                break;
            case 5:
            case 6:
                if (patient.getSex() == 1) {
                    relationTrans = 1;
                } else if (patient.getSex() == 2) {
                    relationTrans = 2;
                } else {
                    relationTrans = 0;
                }
                if (relationTrans == 0) {
                    if (IdCardUtil.getSexForIdcard(StringUtils.isEmpty(patient.getIdcard()) ? "" : patient.getIdcard()).equals("1")) {
                        relationTrans = 2;
                    } else if (IdCardUtil.getSexForIdcard(StringUtils.isEmpty(patient.getIdcard()) ? "" : patient.getIdcard()).equals("2")) {
                        relationTrans = 1;
                    }
                }
                break;
        }
        return relationTrans;
    }
    /**
     * 添加家庭成员
     *
     * @param patient 患者
     * @param member  成员
     * @param captcha 验证码
     * @param member  成员
     * @return
     */
    public int addMember(String patient, String member, String captcha, String password, int relation) throws Exception {
        if (patient.equals(member)) {
            return 0;
        }
        BasePatientDO p = patientDao.findById(patient);
        BasePatientDO m = patientDao.findById(member);
        if (p == null) {
            return -1;
        }
        // 添加的成员是否注册判断
        if (m == null) {
            return -2;
        }
        //家庭关系为父亲、母亲、老公、老婆时只能有一个
        if (relation > 0 && relation < 5) {
            List<BasePatientFamilyMemberDO> familyMembers = memberDao.findByPatientAndFamilyRelation(patient, relation);
            if (familyMembers != null && familyMembers.size() > 0) {
                return -5;
            }
        }
        // 验证码验证
//        if (StringUtils.isNotEmpty(captcha)) {
//            int checkStatus = smsService.check(m.getMobile(), 10, captcha);
//            if (checkStatus == -2) {
//                return -6;  // 验证码过期
//            } else if (checkStatus == -1) {
//                return -3; // 验证码错误
//            }
//        }
        if (StringUtils.isNotEmpty(password)) {
            String loginPassword = MD5.GetMD5Code(password + m.getSalt());
            if (!loginPassword.equals(m.getPassword())) {
                return -3;
            }
        }
        // 添加自己与对方的关系
        BasePatientFamilyMemberDO fm = memberDao.findByPatientAndFamilyMember(patient, member);
        // 家庭关系已存在时,不重复添加
        if (fm != null) {
            return -4;
        } else {
            fm = new BasePatientFamilyMemberDO();
            fm.setPatient(patient);
            fm.setFamilyMember(member);
        }
        fm.setFamilyRelation(relation);
        fm.setIsAuthorize(0);//默认授权
        // 添加对方与自己的关系
        BasePatientFamilyMemberDO fmt = memberDao.findByPatientAndFamilyMember(member, patient);
        // 不存在则创建
        if (fmt == null) {
            fmt = new BasePatientFamilyMemberDO();
            fmt.setPatient(member);
            fmt.setFamilyMember(patient);
        }
        // 对方与自己的关系转换
        int relationTrans = familyRelationTrans(p, relation);
        fmt.setFamilyRelation(relationTrans);
        fmt.setIsAuthorize(1);//默认授权
        memberDao.save(fm);
        memberDao.save(fmt);
        //设置家人openid 加入undefined 判断
        if (StringUtils.isBlank(m.getOpenid()) && StringUtils.isNotBlank(p.getOpenid()) && !"undefined".equals(p.getOpenid())) {
            m.setOpenid(p.getOpenid());
            if (m.getOpenidTime() == null) {
                m.setOpenidTime(new Date());
            }
            patientDao.save(m);
        } else if (StringUtils.isBlank(p.getOpenid()) && StringUtils.isNotBlank(m.getOpenid()) && !"undefined".equals(m.getOpenid())) {
            p.setOpenid(m.getOpenid());
            if (p.getOpenidTime() == null) {
                p.setOpenidTime(new Date());
            }
            patientDao.save(p);
        }
        return 1;
    }
    /**
     * 修改家庭成员关系
     * @param patient  居民
     * @param member   成员
     * @param relation 关系
     * @return
     */
    public int modifyFamilyRelation(String patient, String member, int relation) throws Exception {
        BasePatientDO p = patientDao.findById(patient);
        BasePatientDO m = patientDao.findById(member);
        if (p == null) {
            return -1;
        }
        // 成员是否注册判断
        if (m == null) {
            return -2;
        }
        // 自己与对方的关系
        BasePatientFamilyMemberDO fm = memberDao.findByPatientAndFamilyMember(patient, member);
        if (fm == null) {
            return -3;
        }
        if (relation > 0 && relation < 5) {
            List<BasePatientFamilyMemberDO> familyMembers = memberDao.findByPatientAndFamilyRelation(patient, relation);
            if (familyMembers != null && familyMembers.size() > 0) {
                return -5;
            }
        }
        fm.setFamilyRelation(relation);
        // 对方与自己的关系
        BasePatientFamilyMemberDO fmt = memberDao.findByPatientAndFamilyMember(member, patient);
        // 不存在则创建
        if (fmt == null) {
            fmt = new BasePatientFamilyMemberDO();
            fmt.setPatient(patient);
            fmt.setFamilyMember(member);
        }
        int relationTrans = familyRelationTrans(p, relation);
        fmt.setFamilyRelation(relationTrans);
        memberDao.save(fm);
        memberDao.save(fmt);
        return 1;
    }
    /**
     * 删除家庭成员
     * @param patient 居民
     * @param member  成员
     * @return
     */
    public int deleteMember(String patient, String member) {
        // 自己与对方的关系
        BasePatientFamilyMemberDO fm = memberDao.findByPatientAndFamilyMember(patient, member);
        if (fm == null) {
            return -1;
        }
        // 对方与自己的关系
        BasePatientFamilyMemberDO fmt = memberDao.findByPatientAndFamilyMember(member, patient);
        memberDao.delete(fm);
        if (fmt != null) {
            memberDao.delete(fmt);
        }
        return 1;
    }
    /**
     * 设置授权关系
     * @param patient
     * @param member
     * @param isAuthorize
     * @return
     * @throws Exception
     */
    public int authorizeMember(String patient, String member, Integer isAuthorize) throws Exception {
        BasePatientFamilyMemberDO fm = memberDao.findByPatientAndFamilyMember(patient, member);
        if (fm == null) {
            return -1;
        }
        fm.setIsAuthorize(isAuthorize);
        memberDao.save(fm);
        return 1;
    }
    /**
     * 获取居民的家庭成员
     *
     * @param patient 居民
     * @return
     */
    public JSONArray getPatientMembers(String patient, String doctorCode, boolean isContain, String current, Integer isAgree) {
        JSONArray resultArray = getPatientFamilyMembers(patient, doctorCode, isAgree);
        if (resultArray == null) {
            resultArray = new JSONArray();
        }
        if (isContain && !patient.equals(current)) {
            BasePatientDO p = patientDao.findById(patient);
            JSONObject obj = new JSONObject();
            List<ServicePackageSignRecordDO> signs = signRecordDao.findByStatusAndPatient(1,patient);
            boolean jtSign = false;
            if(signs.size()>0){
                jtSign = true;
            }
            obj.put("id", p.getId());
            obj.put("name", p.getName());
            obj.put("sex", p.getSex());
            obj.put("birthday", p.getBirthday());
            obj.put("idcard", StringUtils.isEmpty(p.getIdcard()) ? "" : p.getIdcard());
            obj.put("photo", StringUtils.isEmpty(p.getPhoto()) ? "" : p.getPhoto());
            obj.put("mobile", StringUtils.isEmpty(p.getMobile()) ? "" : p.getMobile());
            obj.put("address", StringUtils.isEmpty(p.getAddress()) ? "" : p.getAddress());
            obj.put("familyRelation", "-1");
            obj.put("familyRelationName", "自己");
            obj.put("isAuthorize", 1);//0:未授权,1:已授权
            obj.put("authorizeStatus", 3);//
            if (jtSign) {
                obj.put("signType", 1);
            } else {
                obj.put("signType", 0);
            }
            resultArray.add(obj);
        }
        return resultArray;
    }
    /**
     * 获取居民的家庭成员
     *
     * @param patient 居民
     * @return
     */
    public JSONArray getPatientFamilyMembers(String patient, String doctorCode, Integer isAgree) {
        JSONArray resultArray = new JSONArray();
        String sql = "select * " +
                " from " +
                "    base_patient_family_member t1, " +
                "    base_patient t2 " +
                " where " +
                "    t2.id in (select family_member from base_patient_family_member where patient = ? ) " +
                "    and t1.patient = ? " +
                "    and t1.family_member = t2.id ";
        List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, new Object[]{patient, patient});
        if (result != null && result.size() > 0) {
            for (Map<String, Object> map : result) {
                JSONObject obj = new JSONObject();
                List<ServicePackageSignRecordDO> signs = signRecordDao.findByStatusAndPatient(1,map.get("family_member").toString());
                boolean jtSign = false;
                int status = 0;
                if(signs.size()>0){
                    jtSign = true;
                    status = 1;
                }
                Integer isAuthorize = (Integer) map.get("is_authorize");
                obj.put("id", map.get("id"));
                obj.put("name", map.get("name"));
                obj.put("sex", map.get("sex"));
                obj.put("isAuthorize", isAuthorize);//0:未授权,1:已授权
                obj.put("birthday", map.get("birthday"));
                obj.put("idcard", StringUtils.isEmpty(String.valueOf(map.get("idcard"))) ? "" : map.get("idcard").toString());
                obj.put("photo", map.get("photo"));
                obj.put("mobile", map.get("mobile"));
                obj.put("address", StringUtils.isEmpty(String.valueOf(map.get("address"))) ? "" : map.get("address"));
                obj.put("familyRelation", map.get("family_relation"));
                obj.put("familyRelationName", relations.get(map.get("family_relation")));
                if (!StringUtils.isEmpty(doctorCode)) {
                    obj.put("relaholder", relations.get(map.get("family_relation")));
                    obj.put("addressCode", "");
                    obj.put("addressName", StringUtils.isEmpty(String.valueOf(map.get("address"))) ? "" : map.get("address"));
                    obj.put("status", status);
                    obj.put("source", 1);
                    if (isAuthorize == 1) {
                        BasePatientFamilyMemberDO familyMember = memberDao.findByPatientAndFamilyMember(String.valueOf(map.get("family_member")), patient);
                        if (familyMember.getIsAuthorize() == 1) {
                            obj.put("authorizeStatus", 1);//相互授权
                        } else {
                            obj.put("authorizeStatus", 2);//居民单方向向家人授权
                        }
                    } else {
                        obj.put("authorizeStatus", 3);//居民被家人授权
                    }
                }
                if (jtSign) {
                    obj.put("signType", 1);
                } else {
                    obj.put("signType", 0);
                }
                obj.put("state", "1");//0 :未处理;1:已同意;2:已拒绝
                obj.put("id", map.get("id"));
                resultArray.add(obj);
            }
        }
        return resultArray;
    }
    /**
     * 获取有授权的家庭成员
     *
     * @param patient
     * @return
     */
    public JSONArray getAuthorizeMembers(String patient) throws Exception {
        JSONArray resultArray = new JSONArray();
        resultArray.add(getPatient(patient));
        List<BasePatientFamilyMemberDO> list = memberDao.findByFamilyMemberAndIsAuthorize(patient, 1);
        if (list != null && list.size() > 0) {
            JSONArray tem = new JSONArray();
            for (BasePatientFamilyMemberDO member : list) {
                JSONObject obj = new JSONObject();
                BasePatientDO p = patientDao.findById(member.getPatient());
                if (p == null) {
                    throw new Exception("成员为空!");
                }
                List<ServicePackageSignRecordDO> signs = signRecordDao.findByStatusAndPatient(1,patient);
                boolean jtSign = false;
                if(signs.size()>0){
                    jtSign = true;
                }
                Integer relation = familyRelationTrans(p, member.getFamilyRelation());
                if (signs.size() > 0){
                    obj.put("signCode",signs.get(0).getId());
                }else {
                    obj.put("signCode","");
                }
                obj.put("id", p.getId());
                obj.put("name", p.getName());
                obj.put("sex", p.getSex());
                obj.put("isAuthorize", member.getIsAuthorize());//0:未授权,1:已授权
                obj.put("birthday", p.getBirthday());
                String idCard = StringUtils.isEmpty(p.getIdcard()) ? "" : p.getIdcard();
                obj.put("idcard", IdCardUtil.getIdcardEncode(idCard));
                obj.put("idcardAll", idCard);
                obj.put("photo", p.getPhoto());
                obj.put("mobile", p.getMobile());
                obj.put("age", IdCardUtil.getAgeByIdcardOrBirthday(p.getIdcard(),p.getBirthday()));
                obj.put("ssc", p.getSsc());
                obj.put("familyRelation", relation);
                obj.put("familyRelationName", relations.get(relation));
                obj.put("address", p.getAddress());
                obj.put("openid", p.getOpenid());
                if (jtSign) {
                    obj.put("signType", 1);
                } else {
                    obj.put("signType", 0);
                }
                if (member.getIsAuthorize() == 0) {
                    tem.add(obj);
                } else {
                    resultArray.add(obj);
                }
            }
            if (tem.size() > 0) {
                for (int i = 0; i < tem.size(); i++) {
                    resultArray.add(tem.get(i));
                }
            }
        }
        return resultArray;
    }
    /**
     * 判断成员是否注册
     *
     * @param idcard 身份证号
     * @return
     */
    public JSONObject isRegister(String idcard, String patient) {
        JSONObject result = new JSONObject();
        BasePatientDO p = patientDao.findByIdcard(idcard);
        if (p == null) {
            result.put("isRegister", 0);
        } else {
            if (patient.equals(p.getId())) {
                result.put("isRegister", -1); //不能添加自己
                return result;
            }
            result.put("isRegister", 1);
            result.put("mobile", StringUtils.isEmpty(p.getMobile()) ? "" : p.getMobile());
            result.put("name", StringUtils.isEmpty(p.getName()) ? "" : p.getName());
            result.put("id",  p.getId());
            result.put("photo", StringUtils.isEmpty(p.getPhoto()) ? "" : p.getPhoto());
            result.put("sex", p.getSex());
        }
        return result;
    }
    public JSONObject getPatient(String patient) {
        BasePatientDO p = patientDao.findById(patient);
        JSONObject obj = new JSONObject();
        List<ServicePackageSignRecordDO> signs = signRecordDao.findByStatusAndPatient(1,patient);
        boolean jtSign = false;
        if(signs.size()>0){
            jtSign = true;
        }
        obj.put("id", p.getId());
        obj.put("name", p.getName());
        obj.put("sex", p.getSex());
        obj.put("birthday", p.getBirthday());
        obj.put("isAuthorize", 1);
        String idCard = StringUtils.isEmpty(p.getIdcard()) ? "" : p.getIdcard();
        obj.put("idcard", IdCardUtil.getIdcardEncode(idCard));
        obj.put("idcardAll", idCard);
        obj.put("age", IdCardUtil.getAgeByIdcardOrBirthday(p.getIdcard(),p.getBirthday()));
        obj.put("ssc", p.getSsc());
        obj.put("photo", StringUtils.isEmpty(p.getPhoto()) ? "" : p.getPhoto());
        obj.put("mobile", StringUtils.isEmpty(p.getMobile()) ? "" : p.getMobile());
        obj.put("address", StringUtils.isEmpty(p.getAddress()) ? "" : p.getAddress());
        obj.put("familyRelation", -1);
        obj.put("familyRelationName", "自己");
        obj.put("isAuthorize", 1);//0:未授权,1:已授权
        obj.put("openid", p.getOpenid());
        if (jtSign) {
            obj.put("signType", 1);
        }else {
            obj.put("signType", 0);
        }
        return obj;
    }
    /**
     * 验证添加的家庭成员
     *
     * @param menber 预绑定成员
     * @return 0未绑定微信,1仅绑定微信,2仅绑定手机,3手机微信都绑定
     */
    public JSONObject checkFamilyMember(String menber) throws Exception {
        JSONObject r = new JSONObject();
        //未绑定微信,未绑定手机
        int result = 0;
        //1.判断微信过滤
        //判断是否绑定微信,如果版绑定了微信,将状态改变为 1
        BasePatientDO p = patientDao.findById(menber);
        if (StringUtils.isNotBlank(p.getOpenid())) {
            String sus = getIsSus(p.getOpenid());
            if (StringUtils.isNotBlank(sus)) {
                if ("1".equals(sus)) {
                    result = 1;
                }
            }
        }
        //2.判断手机过滤
        //判断是否绑定了手机
        if (StringUtils.isNoneBlank(p.getMobile()) && isMobileNO(p.getMobile())) {
            //如果用户绑定了微信,将状态更改为4
            if (result == 1) {
                result = 3;
                //如果用户未绑定微信,将状态更改为2
            } else if (result == 0) {
                result = 2;
            }
        }
        //返回过滤后的状态
        r.put("state", result);
        if (result == 0) {
            r.put("mes", "未绑定微信和手机");
        } else if (result == 1) {
            r.put("mes", "仅绑定微信");
        } else if (result == 2) {
            r.put("mes", "仅绑定手机");
        } else if (result == 3) {
            r.put("mes", "手机和微信皆绑定");
        }
        return r;
    }
    /**
     * 通过用户名密码添加
     *
     * @param patient
     * @param member
     * @param password
     * @param relation
     * @return
     * @throws Exception
     */
    @Transactional
    public int addMemberByPw(String patient, String member, String password, int relation) throws Exception {
        if (patient.equals(member)) {
            return 0;
        }
        BasePatientDO p = patientDao.findById(patient);
        BasePatientDO m = patientDao.findById(member);
        if (p == null) {
            return -1;
        }
        // 添加的成员是否注册判断
        if (m == null) {
            return -2;
        }
        if (StringUtils.isNotEmpty(password)) {
            String loginPassword = MD5.GetMD5Code(password + m.getSalt());
            if (!loginPassword.equals(m.getPassword())) {
                return -3;
            }
        }
        return addMemberFamily(p, m, patient, member, relation);
    }
    @Transactional
    public int addMemberFamily(BasePatientDO p, BasePatientDO m, String patient, String member, int relation) throws Exception {
        if (relation > 0 && relation < 5) {
            List<BasePatientFamilyMemberDO> familyMembers = memberDao.findByPatientAndFamilyRelation(patient, relation);
            if (familyMembers != null && familyMembers.size() > 0) {
                return -5;
            }
        }
        // 添加自己与对方的关系
        BasePatientFamilyMemberDO fm = memberDao.findByPatientAndFamilyMember(patient, member);
        // 家庭关系已存在时,不重复添加
        if (fm != null) {
            return -4;
        } else {
            fm = new BasePatientFamilyMemberDO();
            fm.setPatient(patient);
            fm.setFamilyMember(member);
        }
        fm.setFamilyRelation(relation);
        fm.setIsAuthorize(0);//默认授权
        // 添加对方与自己的关系
        BasePatientFamilyMemberDO fmt = memberDao.findByPatientAndFamilyMember(member, patient);
        // 不存在则创建
        if (fmt == null) {
            fmt = new BasePatientFamilyMemberDO();
            fmt.setPatient(member);
            fmt.setFamilyMember(patient);
        }
        // 对方与自己的关系转s
        //int relationTrans = familyRelationTrans(p, relation);
        int relationTrans = familyRelationTrans(p, relation);
        fmt.setFamilyRelation(relationTrans);
        fmt.setIsAuthorize(0);//默认授权
        memberDao.save(fm);
        memberDao.save(fmt);
        //设置家人openid
        if (StringUtils.isBlank(m.getOpenid()) && StringUtils.isNotBlank(p.getOpenid()) && !"undefined".equals(p.getOpenid())) {
            m.setOpenid(p.getOpenid());
            if (m.getOpenidTime() == null) {
                m.setOpenidTime(new Date());
            }
            patientDao.save(m);
        } else if (StringUtils.isBlank(p.getOpenid()) && StringUtils.isNotBlank(m.getOpenid()) && !"undefined".equals(m.getOpenid())) {
            p.setOpenid(m.getOpenid());
            if (p.getOpenidTime() == null) {
                p.setOpenidTime(new Date());
            }
            patientDao.save(p);
        }
        return 1;
    }
    @Transactional
    public int addMemberByCaptcha(String patient, String member, String captcha, int relation) throws Exception {
        if (patient.equals(member)) {
            return 0;
        }
        BasePatientDO p = patientDao.findById(patient);
        BasePatientDO m = patientDao.findById(member);
        if (p == null) {
            return -1;
        }
        // 添加的成员是否注册判断
        if (m == null) {
            return -2;
        }
//        // 验证码验证
//        if (StringUtils.isNotEmpty(captcha)) {
//            int checkStatus = smsService.check(m.getMobile(), 10, captcha);
//            if (checkStatus == -2) {
//                return -6;  // 验证码过期
//            } else if (checkStatus == -1) {
//                return -3; // 验证码错误
//            }
//        }
        return addMemberFamily(p, m, patient, member, relation);
    }
    /**
     * 获取subscribe
     *
     * @param openid
     * @return
     * @throws Exception
     */
    public String getIsSus(String openid) throws Exception {
        String userInfo_url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=" + weiXinAccessTokenUtils.getAccessToken() + "&openid=" + openid + "&lang=zh_CN";
        String params = "";
        String result = HttpUtil.sendGet(userInfo_url, params);
        JSONObject json = JSONObject.parseObject(result);
        if (json.containsKey("subscribe")) {
            return json.get("subscribe").toString();
        } else {
            return null;
        }
    }
    public boolean isMobileNO(String number) {
        Pattern pattern = Pattern.compile("^1(3|4|5|7|8)[0-9]\\d{8}$");
        Matcher m = pattern.matcher(number);
        return m.matches();
    }
    /**
     * 获取已绑定家人的信息
     * @param patient
     */
    public List<BasePatientFamilyMemberDO> getByPatientAndFamilyRelation(String patient,Integer familyRelation){
        List<BasePatientFamilyMemberDO> list = null;
        if(familyRelation==null){
            list = memberDao.getByPatient(patient);
        }else{
            list = memberDao.getByPatientAndFamilyRelation(patient,familyRelation);
        }
        return list;
    }
    public List<BasePatientFamilyMemberDO> getByFamilyMemberAndRelation(String familyMember,Integer familyRelation){
        List<BasePatientFamilyMemberDO> list = null;
        if(familyRelation==null){
            list = memberDao.getByFamilyMember(familyMember);
        }else{
            list = memberDao.getByFamilyMemberAndFamilyRelation(familyMember,familyRelation);
        }
        return list;
    }
}

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

@ -0,0 +1,34 @@
package com.yihu.jw.care.service.org;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.utils.StringUtil;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * Created by yeshijie on 2021/3/3.
 */
@Service
public class BaseOrgService extends BaseJpaService<BaseOrgDO, BaseOrgDao> {
    @Autowired
    private BaseOrgDao orgDao;
    public List<BaseOrgDO> findOrgList(String type,String name){
        String sql = "select a.* from base_org a where a.del = 1";
        if(!StringUtil.isBlank(type)){
            sql += " and a.type = '"+type+"' ";
        }
        if(!StringUtil.isBlank(name)){
            sql += " and a.name like '%"+name+"%' ";
        }
        return jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseOrgDO.class));
    }
}

+ 107 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/patient/CarePatientService.java

@ -0,0 +1,107 @@
package com.yihu.jw.care.service.patient;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.PatientMedicareCardDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.service.BasePatientMedicardCardService;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.utils.StringUtil;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * 
 * 居民基础信息服务service
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong    1.0  2018年08月31日 Created
 *
 * </pre>
 * @since 1.
 */
@Service
public class CarePatientService<T, R extends CrudRepository> extends BaseJpaService<BasePatientDO, BasePatientDao> {
    @Autowired
    private BasePatientDao basePatientDao;
    @Autowired
    private BasePatientMedicardCardService basePatientMedicardCardService;
    @Autowired
    private ObjectMapper objectMapper;
    /**
     * 签约记录
     * @param name
     * @param doctorId
     * @param page
     * @param size
     * @return
     */
    public PageEnvelop<List<Map<String,Object>>> myPatientPage(String name, String doctorId, int page, int size){
        String sql = "SELECT DISTINCT p.id,sr.start_time,p.name,p.sex,p.idcard,p.openid,p.photo ";
        String countSql = "SELECT count(DISTINCT sr.patient) ";
        String filters = " from base_service_package_sign_record sr,base_service_package_record r, " +
                "base_service_package_item i,base_team_member m,base_patient p " +
                "WHERE sr.id = r.sign_id and r.service_package_id = i.service_package_id " +
                "and i.del = 1 and m.team_code = i.team_code and p.id = sr.patient " +
                "and m.doctor_code = '"+doctorId+"' and m.del = '1' ";
        if(!StringUtil.isEmpty(name)){
            filters += " and p.name like '%"+name+"%' ";
        }
        String orderBy = " ORDER BY sr.start_time DESC " +
                "LIMIT "+ (page - 1) * size + "," + size;
        String familySql = "SELECT p.id,p.name,p.sex,p.idcard,p.mobile,p.phone,f.family_relation,p.openid from base_patient_family_member f,base_patient p " +
                "WHERE p.id = f.family_member and f.del=1 and f.patient=?";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql+filters+orderBy);
        for (Map<String,Object> map :list){
            String id = map.get("id").toString();
            String idcard = map.get("idcard").toString();
            map.put("age", IdCardUtil.getAgeForIdcard(idcard));
            map.put("family",jdbcTemplate.queryForList(familySql,id));
        }
        Long count = jdbcTemplate.queryForObject(countSql+filters,Long.class);
        return PageEnvelop.getSuccessListWithPage("success",list,page,size,count);
    }
    /**
     * 居民id
     * @param patientId
     * @return
     */
    public JSONObject findPatientById(String patientId) throws Exception{
        JSONObject result = new JSONObject();
        if(StringUtils.isEmpty(patientId)){
            result.put("result","parameter patientId is null");
            return result;
        }
        BasePatientDO patientDO = basePatientDao.findById(patientId);
        if(patientDO == null){
            result.put("result","not exist patient for id:"+patientId);
            return result;
        }
        PatientMedicareCardDO card = basePatientMedicardCardService.findByTypeAndPatientCodeAndDel("A_01",patientId,"1");
        if(card != null){
            patientDO.setSsc(card.getCode());
        }
        result.put("patient",patientDO);
        return result;
    }
}

+ 138 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ArchiveService.java

@ -0,0 +1,138 @@
package com.yihu.jw.care.service.sign;
import com.yihu.jw.care.dao.sign.ArchiveDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.PatientMedicareCardDO;
import com.yihu.jw.entity.care.archive.ArchiveDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.dao.BasePatientMedicareCardDao;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.mysql.query.BaseJpaService;
import com.yihu.utils.security.MD5;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
/**
 * Created by yeshijie on 2021/2/24.
 */
@Service
public class ArchiveService extends BaseJpaService<ArchiveDO, ArchiveDao> {
    @Autowired
    private ArchiveDao archiveDao;
    @Autowired
    private BasePatientDao patientDao;
    @Autowired
    private BaseDoctorDao doctorDao;
    @Autowired
    private BasePatientMedicareCardDao patientMedicareCardDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    /**
     * 获取医生未签约总数
     * @param doctorId
     * @return
     */
    public int getUnSignTotal(String doctorId){
        String sql = "SELECT COUNT(*) from wlyy_archive WHERE doctor_code = '"+doctorId+"' and sign_status = 0 " ;
        return jdbcTemplate.queryForObject(sql,Integer.class);
    }
    public PageEnvelop<List<Map<String,Object>>> archiveList(String doctorId, int page, int size,Integer signStatus){
        String sql = "SELECT a.archive_time,p.idcard,p.mobile,p.name,p.sex,p.id ";
        String countSql = "SELECT count(*) ";
        String filters = "from wlyy_archive a,base_patient p " +
                "WHERE a.doctor_code = '"+doctorId+"' and a.patient = p.id";
        if(signStatus!=null){
            filters += " and a.sign_status = "+signStatus;
        }
        String orderBy = " ORDER BY a.archive_time DESC " +
                "LIMIT "+ (page - 1) * size + "," + size;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql+filters+orderBy);
        for (Map<String,Object> map :list){
            String idcard = map.get("idcard").toString();
            map.put("archiveTime", map.get("archive_time").toString().substring(0,19));
            map.put("age", IdCardUtil.getAgeForIdcard(idcard));
        }
        Long count = jdbcTemplate.queryForObject(countSql+filters,Long.class);
        return PageEnvelop.getSuccessListWithPage("success",list,page,size,count);
    }
    /**
     * 建档,生成居民账户
     * @param patientDO
     * @param doctorId
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public int createArchive(BasePatientDO patientDO,String doctorId){
        String idcard = patientDO.getIdcard();
        String salt = UUID.randomUUID().toString().substring(0,5);
        String pw = idcard.substring(idcard.length()-6);
        patientDO.setPassword(MD5.md5Hex(pw + "{" + salt + "}"));
        patientDO.setSalt(salt);
        patientDO.setDel("1");
        patientDO.setEnabled(1);
        patientDO.setLocked(0);
        patientDO.setCreateTime(new Date());
        patientDO.setUpdateTime(new Date());
        patientDO.setPatientStatus("1");
        patientDao.save(patientDO);
        PatientMedicareCardDO cardDO = new PatientMedicareCardDO();
        cardDO.setCode(patientDO.getSsc());
        cardDO.setDel("1");
        cardDO.setPatientCode(patientDO.getId());
        cardDO.setType("A_01");
        cardDO.setParentType("A");
        patientMedicareCardDao.save(cardDO);
        BaseDoctorDO doctorDO = doctorDao.findById(doctorId);
        ArchiveDO archiveDO = new ArchiveDO();
        archiveDO.setArchiveOperatorName(doctorDO.getName());
        archiveDO.setArchiveTime(new Date());
        archiveDO.setDoctorCode(doctorId);
        archiveDO.setPatient(patientDO.getId());
        archiveDO.setSickName(patientDO.getName());
        archiveDO.setSignStatus(0);
        archiveDO.setIdcard(patientDO.getIdcard());
        archiveDao.save(archiveDO);
        return 0;
    }
    /**
     * 同步档案
     */
    public void sysArchive(String doctorId,String idcard){
        BasePatientDO patientDO = patientDao.findByIdcardAndDel(idcard,"1");
        BaseDoctorDO doctorDO = doctorDao.findById(doctorId);
        ArchiveDO archiveDO = new ArchiveDO();
        archiveDO.setArchiveOperatorName(doctorDO.getName());
        archiveDO.setArchiveTime(new Date());
        archiveDO.setDoctorCode(doctorId);
        archiveDO.setPatient(patientDO.getId());
        archiveDO.setSickName(patientDO.getName());
        archiveDO.setSignStatus(0);
        archiveDO.setIdcard(patientDO.getIdcard());
        archiveDao.save(archiveDO);
    }
}

+ 127 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/CapacityAssessmentRecordService.java

@ -0,0 +1,127 @@
package com.yihu.jw.care.service.sign;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.care.dao.sign.CapacityAssessmentRecordDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.care.sign.CapacityAssessmentRecordDO;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.StringUtil;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * Created by yeshijie on 2021/2/25.
 */
@Service
public class CapacityAssessmentRecordService extends BaseJpaService<CapacityAssessmentRecordDO, CapacityAssessmentRecordDao> {
    @Autowired
    private CapacityAssessmentRecordDao capacityAssessmentRecordDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private BaseDoctorDao doctorDao;
    @Autowired
    private BaseDoctorHospitalDao doctorHospitalDao;
    public PageEnvelop<List<Map<String,Object>>> assessmentPage(String doctorId,String name, int page, int size,
                    Integer status,Integer levelConclusion,Integer servicePackageStatus){
        String sql = "SELECT c.id,c.patient,c.assessment_time,c.service_package_status servicePackageStatus, " +
                "c.`status`,c.level_conclusion levelConclusion,p.name,p.mobile,p.sex,p.idcard  ";
        String countSql = "SELECT count(*) ";
        String filters = "from base_capacity_assessment_record c,base_patient p " +
                "WHERE c.doctor = '"+doctorId+"' and c.patient = p.id " +
                " and c.assessment_time>='" + DateUtil.getNowYear() + "-01-01'";
        if(status!=null){
            filters += " and c.status = "+status;
        }
        if(levelConclusion!=null){
            filters += " and c.level_conclusion = "+levelConclusion;
        }
        if(servicePackageStatus!=null){
            filters += " and c.service_package_status = "+servicePackageStatus;
        }
        if(!StringUtil.isEmpty(name)){
            filters += " and (c.name like '%"+name+"%' or c.idcard like '%"+name+"%') ";
        }
        String orderBy = " ORDER BY c.assessment_time DESC " +
                "LIMIT "+ (page - 1) * size + "," + size;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql+filters+orderBy);
        for (Map<String,Object> map :list){
            String idcard = map.get("idcard").toString();
            map.put("assessmentTime", map.get("assessment_time").toString().substring(0,19));
            map.put("age", IdCardUtil.getAgeForIdcard(idcard));
        }
        Long count = jdbcTemplate.queryForObject(countSql+filters,Long.class);
        return PageEnvelop.getSuccessListWithPage("success",list,page,size,count);
    }
    /**
     * 查询居民今年是否进行过能力评估
     * @param patient
     * @return
     */
    public Integer isCapacityAssessment(String patient){
        String sql = "select count(*) from base_capacity_assessment_record where patient = '"+patient+"' and ";
        sql += " assessment_time>= '" + DateUtil.getNowYear() + "-01-01'";
        Integer count = jdbcTemplate.queryForObject(sql,Integer.class);
        return count;
    }
    /**
     * 生成评估报告
     * @param jsonData
     * @param doctorId
     * @throws Exception
     */
    public void capacityAssessment(String jsonData,String doctorId) throws Exception{
        JSONObject jsonObject = JSONObject.parseObject(jsonData);
        CapacityAssessmentRecordDO recordDO = objectMapper.readValue(jsonObject.getJSONObject("assessment").toJSONString(), CapacityAssessmentRecordDO.class);
        if(isCapacityAssessment(recordDO.getPatient())==0){
            BaseDoctorDO doctorDO = doctorDao.findById(doctorId);
            List<BaseDoctorHospitalDO> doctorHospitalDOs = doctorHospitalDao.findByDoctorCode(doctorId);
            recordDO.setOrgCode(doctorHospitalDOs.get(0).getOrgCode());
            recordDO.setOrgName(doctorHospitalDOs.get(0).getOrgName());
            recordDO.setDoctorName(doctorDO.getName());
            recordDO.setDoctor(doctorId);
            recordDO.setServicePackageStatus(0);
            recordDO.setStatus(0);
            capacityAssessmentRecordDao.save(recordDO);
        }
    }
    /**
     * 确认评估结果
     * @param signUrl
     * @param status
     * @param id
     */
    public void confirmAssessment(String signUrl,Integer status,String id){
        CapacityAssessmentRecordDO recordDO = capacityAssessmentRecordDao.findOne(id);
        recordDO.setStatus(status);
        recordDO.setSignUrl(signUrl);
        recordDO.setSignTime(new Date());
        capacityAssessmentRecordDao.save(recordDO);
    }
}

+ 21 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageItemService.java

@ -0,0 +1,21 @@
package com.yihu.jw.care.service.sign;
import com.yihu.jw.care.dao.sign.ServicePackageItemDao;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 * Created by yeshijie on 2021/2/23.
 */
@Service
public class ServicePackageItemService extends BaseJpaService<ServicePackageItemDO, ServicePackageItemDao> {
    @Autowired
    private ServicePackageItemDao servicePackageItemDao;
}

+ 24 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageRecordService.java

@ -0,0 +1,24 @@
package com.yihu.jw.care.service.sign;
import com.yihu.jw.care.dao.sign.ServicePackageRecordDao;
import com.yihu.jw.entity.base.servicePackage.ServicePackageRecordDO;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
/**
 * Created by yeshijie on 2021/2/25.
 */
@Service
public class ServicePackageRecordService extends BaseJpaService<ServicePackageRecordDO, ServicePackageRecordDao> {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private ServicePackageRecordDao servicePackageRecordDao;
}

+ 304 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageService.java

@ -0,0 +1,304 @@
package com.yihu.jw.care.service.sign;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.care.dao.sign.*;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.PatientMedicareCardDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageRecordDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageSignRecordDO;
import com.yihu.jw.entity.care.archive.ArchiveDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.service.BasePatientMedicardCardService;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.utils.StringUtil;
import com.yihu.mysql.query.BaseJpaService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
 *
 * @author yeshijie on 2018/8/17.
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class ServicePackageService extends BaseJpaService<ServicePackageDO, ServicePackageDao> {
    private Logger logger = LoggerFactory.getLogger(ServicePackageService.class);
    @Autowired
    private ServicePackageDao servicePackageDao;
    @Autowired
    private ServicePackageItemDao servicePackageItemDao;
    @Autowired
    private ServicePackageSignRecordDao servicePackageSignRecordDao;
    @Autowired
    private ServicePackageRecordDao servicePackageRecordDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private ObjectMapper objectMapper;
    @Autowired
    private BaseDoctorDao doctorDao;
    @Autowired
    private BasePatientDao patientDao;
    @Autowired
    private ArchiveDao archiveDao;
    @Autowired
    private BasePatientMedicardCardService basePatientMedicardCardService;
    @Autowired
    private StringRedisTemplate redisTemplate;
    /**
     * 获取居民签约的服务项
     * @param patientId
     * @return
     */
    public List<String> getPatientServiceItems(String patientId){
        String key = "serviceItem:"+patientId;
        List<String> res;
        if(redisTemplate.hasKey(key)){
            long size = redisTemplate.opsForList().size(key);
            res = redisTemplate.opsForList().range(key,0,size);
        }else{
            res = fingServiceItemsCodeByPatientId(patientId);
            redisTemplate.opsForList().leftPushAll(key,res);
        }
        return res;
    }
    /**
     * 每次修改服务项重新设置res的服务项值
     * @param patientId
     */
    public void setPatientServiceItems(String patientId){
        String key = "serviceItem:"+patientId;
        if(redisTemplate.hasKey(key)){
            redisTemplate.delete(key);
        }
        List<String> res = fingServiceItemsCodeByPatientId(patientId);
        redisTemplate.opsForList().leftPushAll(key,res);
    }
    /**
     * 查找居民的签约服务项
     * @param patientId
     * @return
     */
    public List<Map<String,Object>> fingServiceItemsByPatientId(String patientId){
        String sql = "SELECT DISTINCT i.code,i.name from base_service_package_sign_record sr,base_service_package_record r, " +
                " base_service_package_item i  where  sr.id = r.sign_id and r.service_package_id = i.service_package_id " +
                "  and i.del = 1 and sr.`status`=1 and  sr.patient  = '"+patientId+"' ";
        return jdbcTemplate.queryForList(sql);
    }
    /**
     * 查找居民的签约服务项Code
     * @param patientId
     * @return
     */
    public List<String> fingServiceItemsCodeByPatientId(String patientId){
        String sql = "SELECT DISTINCT i.code from base_service_package_sign_record sr,base_service_package_record r, " +
                " base_service_package_item i  where  sr.id = r.sign_id and r.service_package_id = i.service_package_id " +
                "  and i.del = 1 and sr.`status`=1 and  sr.patient  = '"+patientId+"' ";
        return jdbcTemplate.queryForList(sql,String.class);
    }
    /**
     * 获取签约明细
     * @param id
     */
    public JSONObject findSignById(String id) throws Exception{
        JSONObject json = new JSONObject();
        ServicePackageSignRecordDO signRecordDO = servicePackageSignRecordDao.findOne(id);
        BasePatientDO patientDO = patientDao.findById(signRecordDO.getPatient());
        PatientMedicareCardDO card = basePatientMedicardCardService.findByTypeAndPatientCodeAndDel("A_01",signRecordDO.getPatient(),"1");
        if(card != null){
            patientDO.setSsc(card.getCode());
        }
        json.put("patient",patientDO);
        List<Map<String,Object>> packageList = fingdBySignId(id);
        List<Map<String,Object>> doctorList = fingdDoctorBySignId(id,"generalDoctor");
        List<Map<String,Object>> helperList = fingdDoctorBySignId(id,"helper");
        String doctorInfo = "";
        String helperInfo = "";
        String packageInfo = "";
        if(doctorList.size()>0){
            doctorInfo = doctorList.get(0).get("name").toString()+"等"+doctorList.size()+"名";
        }
        if(helperList.size()>0){
            helperInfo = doctorList.get(0).get("name").toString()+"等"+helperList.size()+"名";
        }
        if(packageList.size()>0){
            packageInfo = packageList.get(0).get("name").toString()+"等"+packageList.size()+"个";
        }
        signRecordDO.setDoctorInfo(doctorInfo);
        signRecordDO.setHelperInfo(helperInfo);
        signRecordDO.setPackageInfo(packageInfo);
        json.put("signRecordDO",signRecordDO);
        return json;
    }
    /**
     * 根据签约记录查找医生/助老员
     * @param signId
     */
    public List<Map<String,Object>> fingdDoctorBySignId(String signId,String role){
        String sql = "SELECT DISTINCT d.id,d.name from base_service_package_sign_record sr,base_service_package_record r, " +
                "base_service_package_item i,base_team_member m,base_doctor d,base_doctor_role dr " +
                "WHERE sr.id = r.sign_id and r.service_package_id = i.service_package_id " +
                "and i.del = 1 and m.team_code = i.team_code " +
                "and m.del = '1' and d.id = dr.doctor_code and dr.role_code = '"+role+"' " +
                "and sr.id = '"+signId+"' ";
        return jdbcTemplate.queryForList(sql);
    }
    /**
     * 根据签约记录查找服务包
     * @param signId
     */
    public List<Map<String,Object>> fingdBySignId(String signId){
        String sql = "SELECT DISTINCT p.id,p.`name` from base_service_package_sign_record sr,base_service_package_record r, " +
                "base_service_package p " +
                "WHERE sr.id = r.sign_id and  p.id = r.service_package_id and p.del = 1 " +
                "and sr.id = '"+signId+"' ";
        return jdbcTemplate.queryForList(sql);
    }
    /**
     * 签约记录
     * @param name
     * @param doctorId
     * @param page
     * @param size
     * @return
     */
    public PageEnvelop<List<Map<String,Object>>> signRecordPage(String name,String doctorId,int page, int size){
        String sql = "SELECT DISTINCT sr.patient,sr.id,sr.start_time,p.name,p.sex,p.idcard,p.openid,p.photo ";
        String countSql = "SELECT count(DISTINCT sr.patient) ";
        String filters = " from base_service_package_sign_record sr,base_service_package_record r, " +
                "base_service_package_item i,base_team_member m,base_patient p " +
                "WHERE sr.id = r.sign_id and r.service_package_id = i.service_package_id " +
                "and i.del = 1 and m.team_code = i.team_code and p.id = sr.patient " +
                "and m.doctor_code = '"+doctorId+"' and m.del = '1' and sr.`status`=1 ";
        if(!StringUtil.isEmpty(name)){
            filters += " and sr.name like '%"+name+"%' ";
        }
        String orderBy = " ORDER BY sr.start_time DESC " +
                "LIMIT "+ (page - 1) * size + "," + size;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql+filters+orderBy);
        for (Map<String,Object> map :list){
            String id = map.get("id").toString();
            List<Map<String,Object>> servicePackageList = fingdBySignId(id);
            map.put("servicePackageList",servicePackageList);
            String idcard = map.get("idcard").toString();
            map.put("age", IdCardUtil.getAgeForIdcard(idcard));
            map.put("startTime", map.get("start_time").toString().substring(0,19));
        }
        Long count = jdbcTemplate.queryForObject(countSql+filters,Long.class);
        return PageEnvelop.getSuccessListWithPage("success",list,page,size,count);
    }
    /**
     * 获取医生签约总数
     * @param doctorId
     * @return
     */
    public int getSignTotal(String doctorId){
        String sql = "SELECT COUNT(DISTINCT sr.patient) from base_service_package_sign_record sr,base_service_package_record r, " +
                "base_service_package_item i,base_team_member m " +
                "WHERE sr.id = r.sign_id and r.service_package_id = i.service_package_id " +
                "and i.del = 1 and m.team_code = i.team_code " +
                "and m.doctor_code = '"+doctorId+"' and m.del = '1' and sr.`status`=1 ";
        return jdbcTemplate.queryForObject(sql,Integer.class);
    }
    /**
     * 签约分配服务包
     * @param jsonData
     * @param doctorId
     */
    @Transactional(rollbackFor = Exception.class)
    public ServicePackageSignRecordDO servicePackageSign(String jsonData,String doctorId) throws Exception{
        ServicePackageSignRecordDO signRecordDO = objectMapper.readValue(jsonData, ServicePackageSignRecordDO.class);
        List<ServicePackageRecordDO> recordDOList = signRecordDO.getRecordDOList();
        String signId = signRecordDO.getId();
        if(StringUtil.isEmpty(signId)){
            List<ServicePackageSignRecordDO> signRecordDOs = servicePackageSignRecordDao.findByStatusAndPatient(1,signRecordDO.getPatient());
            if(signRecordDOs.size()==0){
                BaseDoctorDO doctorDO = doctorDao.findById(doctorId);
                //需要新增签约记录
                signRecordDO.setStatus(1);
                signRecordDO.setStartTime(new Date());
                Calendar cal = Calendar.getInstance();
                cal.add(Calendar.YEAR,1);
                signRecordDO.setEndTime(cal.getTime());
                signRecordDO.setSignDoctor(doctorId);
                signRecordDO.setSignDoctorName(doctorDO.getName());
                servicePackageSignRecordDao.save(signRecordDO);
                signId = signRecordDO.getId();
                //建档状态修改
                ArchiveDO archiveDO = archiveDao.findByPatientAndDoctorCode(signRecordDO.getPatient(),doctorId);
                if(archiveDO!=null){
                    archiveDO.setSignStatus(1);
                    archiveDao.save(archiveDO);
                }
            }else{
                signId = signRecordDOs.get(0).getId();
            }
        }
        for (ServicePackageRecordDO recordDO:recordDOList){
            recordDO.setPatient(signRecordDO.getPatient());
            recordDO.setSignId(signId);
        }
        servicePackageRecordDao.save(recordDOList);
        return signRecordDO;
    }
    public PageEnvelop<List<Map<String,Object>>> servicePackagePage(int page, int size){
        String sql = "SELECT p.id,p.`name`,p.type,p.introduce,p.num  ";
        String countSql = "SELECT count(*) ";
        String filters = "from base_service_package p " +
                "WHERE p.del = 1 ";
        String orderBy = " ORDER BY p.create_time DESC " +
                "LIMIT "+ (page - 1) * size + "," + size;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql+filters+orderBy);
        for (Map<String,Object> map :list){
            String id = map.get("id").toString();
            List<ServicePackageItemDO> itemDOList = servicePackageItemDao.findByServicePackageId(id);
            if(itemDOList.size()>0){
                map.put("detail",itemDOList.get(0).getName()+"等"+itemDOList.size()+"项服务");
            }else{
                map.put("detail","");
            }
        }
        Long count = jdbcTemplate.queryForObject(countSql+filters,Long.class);
        return PageEnvelop.getSuccessListWithPage("success",list,page,size,count);
    }
}

+ 15 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/ServicePackageSignRecordService.java

@ -0,0 +1,15 @@
package com.yihu.jw.care.service.sign;
import com.yihu.jw.care.dao.sign.ServicePackageSignRecordDao;
import com.yihu.jw.entity.base.servicePackage.ServicePackageSignRecordDO;
import com.yihu.mysql.query.BaseJpaService;
import org.springframework.stereotype.Service;
/**
 *
 * @author yeshijie on 2018/8/17.
 */
@Service
public class ServicePackageSignRecordService extends BaseJpaService<ServicePackageSignRecordDO, ServicePackageSignRecordDao> {
}

+ 60 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/team/BaseTeamMemberService.java

@ -0,0 +1,60 @@
package com.yihu.jw.care.service.team;
import com.yihu.jw.care.dao.team.BaseTeamMemberDao;
import com.yihu.jw.entity.base.team.BaseTeamMemberDO;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
 * 
 * 团队成员服务service
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong    1.0  2018年08月31日 Created
 *
 * </pre>
 * @since 1.
 */
@Service
public class BaseTeamMemberService extends BaseJpaService<BaseTeamMemberDO, BaseTeamMemberDao> {
    @Autowired
    private BaseTeamMemberDao baseTeamMemberDao;
    /**
     * 根据团队标识获取团队成员Id列表
     *
     * @param teamCode
     * @return
     */
    public Set<Object> findMemberIdList(String teamCode) {
        Set<Object> result = new HashSet<>();
        if (StringUtils.isEmpty(teamCode)) {
            return result;
        }
        return baseTeamMemberDao.findIdListByTeamCode(teamCode);
    }
    /**
     * 根据团队标识获取居民团队成员列表
     * @param teamCode
     * @return
     */
    public List<BaseTeamMemberDO> findMembersByTeamCode(String teamCode){
        List<BaseTeamMemberDO> result = new ArrayList<>();
        if(org.apache.commons.lang.StringUtils.isEmpty(teamCode)){
            return result;
        }
        return baseTeamMemberDao.findByTeamCode(teamCode);
    }
}

+ 218 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/team/BaseTeamService.java

@ -0,0 +1,218 @@
package com.yihu.jw.care.service.team;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.care.dao.team.BaseTeamDao;
import com.yihu.jw.care.dao.team.BaseTeamMemberDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.team.BaseTeamDO;
import com.yihu.jw.entity.base.team.BaseTeamMemberDO;
import com.yihu.mysql.query.BaseJpaService;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * 
 * 团队信息服务service
 * 
 * @version 
 * <pre>
 * Author	Version		Date		Changes
 * litaohong    1.0  2018年08月31日 Created
 *
 * </pre>
 * @since 1.
 */
@Service
public class BaseTeamService extends BaseJpaService<BaseTeamDO, BaseTeamDao> {
    @Autowired
    private BaseTeamMemberService teamMemberService;
    @Autowired
    private BaseTeamMemberDao memberDao;
    @Autowired
    private BaseDoctorDao doctorDao;
    @Autowired
    private BaseTeamDao teamDao;
    @Autowired
    private ObjectMapper objectMapper;
    /**
     * 创建团队。
     * @return
     */
    public BaseTeamDO createTeam(String teamName, String leaderCode, String orgCode, String orgName) {
        BaseTeamDO team = new BaseTeamDO();
        team.setName(teamName);
        team.setLeaderCode(leaderCode);
        team.setOrgCode(orgCode);
        team.setOrgName(orgName);
        team.setDel("1");
        team.setTeamNum("0");
        teamDao.save(team);
        addMember(team,leaderCode);
        return team;
    }
    /**
     * 添加成员。
     * @param doctorCode
     */
    public void addMember(BaseTeamDO team, String doctorCode) {
        if (!memberDao.isMemberExist(team.getId(), doctorCode)) {
            BaseTeamMemberDO member = new BaseTeamMemberDO();
            member.setTeamCode(team.getId());
            member.setDoctorCode(doctorCode);
            member.setDel("1");
            member.setOrgCode(team.getOrgCode());
            memberDao.save(member);
        }
    }
    /**
     * 删除团队
     * @param teamCode
     */
    @Transactional(rollbackFor = Exception.class)
    public void deleteTeam(String teamCode) {
        teamDao.delete(teamCode);
        memberDao.deleteByTeamCode(teamCode);
    }
    /**
     * 更新团队名称。
     * @return
     */
    public BaseTeamDO updateTeamName(String teamCode, String teamName) {
        BaseTeamDO team = teamDao.findOne(teamCode);
        if (team != null) {
            team.setName(teamName);
            teamDao.save(team);
        }
        return team;
    }
    /**
     * 更新团队领导。
     * @return
     */
    public BaseTeamDO updateTeamLeader(String teamCode, String doctorCode) {
        BaseTeamDO team = teamDao.findOne(teamCode);
        if (team != null) {
            team.setLeaderCode(doctorCode);
            teamDao.save(team);
        }
        return team;
    }
    public List<Map<String,Object>> findMembers(String teamCode, String name) {
        String sql = "SELECT " +
                " d.*,h.org_code,h.org_name,h.org_name,h.dept_code,h.dept_name " +
                "FROM " +
                " base_team_member m, " +
                " base_doctor d, " +
                " base_doctor_hospital h " +
                " WHERE " +
                " m.team_code = '"+teamCode+"' and m.doctor_code = d.id " +
                " and m.del = '1' and d.id = h.doctor_code";
        if(!StringUtils.isEmpty(name)){
            sql += " and d.name like '%"+name+"%'";
        }
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        BaseTeamDO team = teamDao.findOne(teamCode);
        for(Map<String,Object> member : list){
            String id = member.get("id").toString();
            if (id.equals(team.getLeaderCode())) {
                member.put("leader",true);
            } else {
                member.put("leader",false);
            }
        }
        return list;
    }
    /**
     * 获取团队信息
     * @param teamCode
     * @return
     */
    public List<Map<String,Object>> findMembers(String teamCode) {
        String sql = "SELECT " +
                " d.*,h.org_code,h.org_name,h.org_name,h.dept_code,h.dept_name " +
                "FROM " +
                " base_team_member m, " +
                " base_doctor d, " +
                " base_doctor_hospital h " +
                " WHERE " +
                " m.team_code = '"+teamCode+"' and m.doctor_code = d.id " +
                " and m.del = '1' and d.id = h.doctor_code";
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        return list;
    }
    /**
     * 移除团队信息
     * @param teamCode
     * @param doctorCode
     */
    public void removeMember(String teamCode, String doctorCode) {
        BaseTeamMemberDO member = memberDao.findByTeamCodeAndDoctorCode(teamCode, doctorCode);
        if (member != null){
            memberDao.delete(member);
        }
    }
    /**
     * 获取团队信息
     * @param teamCode
     * @return
     */
    public JSONObject getTeamInfo(String teamCode){
        BaseTeamDO adminTeam = teamDao.findOne(teamCode);
        JSONObject result = new JSONObject();
        JSONObject teamInfo = new JSONObject(adminTeam);
        BaseDoctorDO doctor = doctorDao.findById(adminTeam.getLeaderCode());
        teamInfo.put("leaderName",doctor.getName());
        result.put("team",teamInfo);
        List<Map<String,Object>> members = findMembers(teamCode);
        List<JSONObject> doctors = new ArrayList<>();
        for(Map<String,Object> d:members){
            JSONObject doctorInfo = new JSONObject();
            doctorInfo.put("name",d.get("name").toString());
            doctorInfo.put("id",d.get("id").toString());
            doctorInfo.put("deptName",d.get("dept_name").toString());
            doctorInfo.put("jobTitleName",d.get("job_title_name").toString());
            doctorInfo.put("photo",d.get("photo").toString());
            doctors.add(doctorInfo);
        }
        result.put("members",doctors);
        return result;
    }
    /**
     * 查询机构下的团队(翻译名称)
     * @param orgCode
     * @return
     */
    public List<BaseTeamDO> getHospitalTeams(String orgCode){
        String sql = "SELECT t.*,CAST(d.name AS char) name from base_doctor d,base_team t " +
                "WHERE t.org_code = '"+orgCode+"' and t.leader_code = d.id " +
                " and t.del = '1'";
        List<BaseTeamDO> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BaseTeamDO.class));
        return list;
    }
}

+ 113 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/wechat/WeiXinAccessTokenUtils.java

@ -0,0 +1,113 @@
package com.yihu.jw.care.service.wechat;
import com.yihu.jw.entity.base.wx.WxAccessTokenDO;
import com.yihu.jw.util.wechat.wxhttp.HttpUtil;
import com.yihu.jw.wechat.dao.WxAccessTokenDao;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
/**
 * Created by lyr on 2016/08/22.
 */
@Component
public class WeiXinAccessTokenUtils {
    private static Logger logger = LoggerFactory.getLogger(WeiXinAccessTokenUtils.class);
    @Autowired
    private WxAccessTokenDao accessTokenDao;
    @Autowired
    StringRedisTemplate redisTemplate;
    @Value("${wechat.appId}")
    private String appId;
    @Value("${wechat.appSecret}")
    private String appSecret;
    @Value("${wechat.accId}")
    private String accId;
    /**
     * 获取微信AccessToken
     *
     * @return
     */
    public synchronized String getAccessToken(){
        try {
            if (redisTemplate.hasKey("AccessToken:"+accId)){
                String jsonStr = redisTemplate.opsForValue().get("AccessToken:"+accId);
                JSONObject jsonObject = new JSONObject(jsonStr);
                long add_timestamp = jsonObject.getLong("add_timestamp");
                long expires_in = jsonObject.getLong("expires_in");
                String token = jsonObject.getString("access_token");
                if ((System.currentTimeMillis() - add_timestamp) < (expires_in * 1000)) {
                    return token;
                } else {
                    redisTemplate.delete("AccessToken:"+accId);
                }
            }
            String token_url = "https://api.weixin.qq.com/cgi-bin/token";
            String params = "grant_type=client_credential&appid=" +appId + "&secret=" + appSecret;
            String result = HttpUtil.sendGet(token_url, params);
            JSONObject json = new JSONObject(result);
            if (json.has("access_token")) {
                String token = json.get("access_token").toString();
                String expires_in = json.get("expires_in").toString();
                WxAccessTokenDO newaccessToken = new WxAccessTokenDO();
                newaccessToken.setAccessToken(token);
                newaccessToken.setExpiresIn(Long.parseLong(expires_in));
                newaccessToken.setWechatId(accId);
                accessTokenDao.save(newaccessToken);
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("access_token",token);
                jsonObject.put("add_timestamp",System.currentTimeMillis());
                jsonObject.put("expires_in",Long.parseLong(expires_in));
                redisTemplate.opsForValue().set("AccessToken:"+accId,jsonObject.toString());
                return token;
            } else {
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    public synchronized String setAccessToken(){
        accessTokenDao.deleteByWechatId(accId);
        String token_url = "https://api.weixin.qq.com/cgi-bin/token";
        String params = "grant_type=client_credential&appid=" +appId + "&secret=" + appSecret;
        String result = HttpUtil.sendGet(token_url, params);
        JSONObject json = new JSONObject(result);
        if (json.has("access_token")) {
            String token = json.get("access_token").toString();
            String expires_in = json.get("expires_in").toString();
            WxAccessTokenDO newaccessToken = new WxAccessTokenDO();
            newaccessToken.setAccessToken(token);
            newaccessToken.setExpiresIn(Long.parseLong(expires_in));
            newaccessToken.setWechatId(accId);
            accessTokenDao.save(newaccessToken);
            if (redisTemplate.hasKey("AccessToken:"+accId)){
                String jsonStr = redisTemplate.opsForValue().get("AccessToken:"+accId);
                JSONObject jsonObject = new JSONObject(jsonStr);
                jsonObject.put("access_token",token);
                jsonObject.put("add_timestamp",System.currentTimeMillis());
                jsonObject.put("expires_in",Long.parseLong(expires_in));
                redisTemplate.opsForValue().set("AccessToken:"+accId,jsonObject.toString());
            }else {
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("access_token",token);
                jsonObject.put("add_timestamp",System.currentTimeMillis());
                jsonObject.put("expires_in",Long.parseLong(expires_in));
                redisTemplate.opsForValue().set("AccessToken:"+accId,jsonObject.toString());
            }
            return token;
        } else {
            //token失败原因
            logger.info(result);
            return null;
        }
    }
}

+ 105 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/wechat/WeiXinCoreService.java

@ -0,0 +1,105 @@
package com.yihu.jw.care.service.wechat;
import com.yihu.jw.util.wechat.WeiXinMessageUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by lyr on 2016/08/11.
 */
@Service
public class WeiXinCoreService {
    private Logger logger= LoggerFactory.getLogger(WeiXinCoreService.class);
    @Autowired
    private WeiXinEventProcess weiXinEventProcess;
    /**
     * 微信推送消息处理
     *
     * @param request
     * @param accessToken
     */
    public String messageProcess(HttpServletRequest request, String accessToken) {
        try (InputStream inputStream = request.getInputStream()){
            String returnStr = "";
            // 将解析结果存储在HashMap中
            Map<String, String> message = new HashMap();
            // 从request中取得输入流
            // 读取输入流
            SAXReader reader = new SAXReader();
            Document document = reader.read(inputStream);
            // 得到xml根元素
            Element root = document.getRootElement();
            // 得到根元素的所有子节点
            List elementList = root.elements();
            // 遍历所有子节点
            for (Object e : elementList) {
                Element ele = (Element) e;
                message.put(ele.getName(), ele.getText());
            }
//            logger.info("weixin  event:" + message.toString());
            // 添加access_token参数
            message.put("token", accessToken);
            // 消息处理
            returnStr = messageProcess(message);
            return returnStr;
        } catch (Exception e) {
            e.printStackTrace();
            return "error";
        }
    }
    /**
     * 对接收到的消息进行处理
     *
     * @param message
     * @return
     */
    private String messageProcess(Map<String, String> message) throws Exception {
        String msgType = message.get("MsgType");
        String result = "";
        switch (msgType) {
            case WeiXinMessageUtils.REQ_MESSAGE_TYPE_EVENT:  // 事件消息
                result = weiXinEventProcess.eventProcess(message);
                break;
            case WeiXinMessageUtils.RESP_MESSAGE_TYPE_TEXT:  // 回复文本消息
                String content = message.get("Content");
                break;
            default:
                break;
        }
        return result;
    }
    /**
     * 判断是否是xml结构
     */
    public boolean isXML(String value) {
        try {
            DocumentHelper.parseText(value);
        } catch (DocumentException e) {
            return false;
        }
        return true;
    }
}

+ 126 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/wechat/WeiXinEventProcess.java

@ -0,0 +1,126 @@
package com.yihu.jw.care.service.wechat;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.util.wechat.WeiXinMessageReplyUtils;
import com.yihu.jw.util.wechat.WeiXinMessageUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 微信事件处理
 * <p>
 * Created by lyr on 2016/08/11
 */
@Component
public class WeiXinEventProcess {
    private static Logger logger = LoggerFactory.getLogger(WeiXinEventProcess.class);
    @Value("${wechat.id}")
    private String wechatId;
    @Autowired
    private BaseDoctorDao baseDoctorDao;
    /**
     * 微信推送事件处理
     *
     * @param message
     * @return
     */
    public String eventProcess(Map<String, String> message) throws Exception {
        String result = "";
        String event = message.get("Event");
        switch (event) {
            case WeiXinMessageUtils.EVENT_TYPE_SCAN: // 扫描二维码事件
                result = scanEventProcess(message);
                break;
            case WeiXinMessageUtils.EVENT_TYPE_SUBSCRIBE: // 订阅事件
                if (message.containsKey("EventKey") && StringUtils.isNotEmpty(message.get("EventKey")) && message.containsKey("Ticket")
                        && StringUtils.isNotEmpty(message.get("Ticket"))) {
                    result = scanEventProcess(message);
                } /*else {
                    result = subscribeEventProcess(message);
                }*/
                break;
            /*case WeiXinMessageUtils.EVENT_TYPE_UNSUBSCRIBE: // 取消订阅事件
                 result = unsubscribeEventProcess(message);
                break;
            case WeiXinMessageUtils.EVENT_TYPE_CLICK: //菜单点击
                result = this.clickProcess(message);*/
            default:
                break;
        }
        return result;
    }
    /**
     * 微信扫码事件处理(封装图文消息体)
     *
     * @param message
     * @return
     * @throws Exception
     */
    private String scanEventProcess(Map<String, String> message) throws Exception {
        String result = "";
        // 场景值
        String eventKey = message.get("EventKey");
        if (StringUtils.isNotEmpty(eventKey) && (eventKey.startsWith("doctor_"))) {
            // 图文信息
            List<Map<String, String>> articles = new ArrayList<>();
            Map<String, String> article = new HashMap<>();
            // 二维码参数
            String[] keys = eventKey.replace("doctor_", "").split("_");
            // 图片URL
            String picUrl = "";
            BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(keys[0]);
            String url = null;
            if (null!=baseDoctorDO){
                picUrl = baseDoctorDO.getPhoto();
            }
            // 医生二维码跳转URL
            if ("xm_ykyy_wx".equalsIgnoreCase(wechatId)){
                url = "https://intel.yanketong.com/ims-wx/#/doctorInfo?doctorCode="+keys[0];
                picUrl = "https://intel.yanketong.com/"+picUrl;
                article.put("Url", url);
                article.put("Title", keys[1] + "医生个人诊间");
                article.put("Description", "厦门眼科中心医院互联网医院");
                article.put("PicUrl", picUrl);
                articles.add(article);
            }else {
                article.put("Url", url);
                article.put("Title", keys[1] + "医生个人诊间");
                article.put("Description", "海沧医院互联网医院");
                article.put("PicUrl", picUrl);
                articles.add(article);
            }
            // 图文消息URL
            //图片地址
//            picUrl = picUrl.replace("{server}", serverUrl);
            // 消息XML
            result = WeiXinMessageReplyUtils.replyNewsMessage(message.get("FromUserName"), message.get("ToUserName"), articles);
        }
        return result;
    }
}

+ 90 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/useragent/UserAgent.java

@ -0,0 +1,90 @@
package com.yihu.jw.care.useragent;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
 * 用户头部信息获取
 * Created by Trick on 2018/10/30.
 */
@Component
public class UserAgent {
    /**
     * 获取当前登录人ID
     * @return
     */
    public String getUID() {
        try {
            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
            String userAgent = request.getHeader("userAgent");
            if (StringUtils.isEmpty(userAgent)) {
                userAgent = request.getHeader("User-Agent");
            }
            JSONObject json = JSON.parseObject(userAgent);
            return json.getString("uid");
        } catch (Exception e) {
            return null;
        }
    }
    /**
     * 获取登录人姓名
     * @return
     */
    public String getUNAME(){
        try {
            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
            String userAgent = request.getHeader("userAgent");
            if (StringUtils.isEmpty(userAgent)) {
                userAgent = request.getHeader("User-Agent");
            }
            JSONObject json = JSON.parseObject(userAgent);
            String info = json.getString("uname");
            String uname = java.net.URLDecoder.decode(info,"UTF-8");
            return uname;
        } catch (Exception e) {
            return null;
        }
    }
    /**
     * 获取角色ID
     * @return
     */
    public String getROLEID() {
        try {
            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
            String userAgent = request.getHeader("userAgent");
            if (StringUtils.isEmpty(userAgent)) {
                userAgent = request.getHeader("User-Agent");
            }
            JSONObject json = JSON.parseObject(userAgent);
            return json.getString("roleid");
        } catch (Exception e) {
            return null;
        }
    }
    public JSONObject getUserAgent(){
        try{
            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
            String userAgent = request.getHeader("userAgent");
            JSONObject user = JSON.parseObject(userAgent);
            return user;
        }catch (Exception e){
            return null;
        }
    }
}

+ 0 - 0
svr/svr-cloud-care/src/main/resources/application.yml


部分文件因文件數量過多而無法顯示