From 8f710fb84ddfcdb3c27bcd26dd19e6884af28b9a Mon Sep 17 00:00:00 2001
From: houruijun <411269194@kidgrow.com>
Date: Tue, 27 Oct 2020 19:06:32 +0800
Subject: [PATCH] Merge branch 'dev' of http://192.168.2.240:7070/r/kidgrow-microservices-platform into dev

---
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/EquipmentDockingController.java              |  155 +++++++++
 .gitignore                                                                                                                                                               |    1 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml                                                               |   10 
 kidgrow-commons/kidgrow-redis-spring-boot-starter/src/main/java/com/kidgrow/redis/util/RedisConstant.java                                                                |    2 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/EquipmentDockingServiceFallbackFactory.java |   28 +
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/EquipmentDockingMapper.java                         |   34 ++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/EquipmentDockingMapper.xml                                                |   97 +++++
 pom.xml                                                                                                                                                                  |    2 
 kidgrow-uaa/kidgrow-uaa-server/src/main/resources/application.yml                                                                                                        |    2 
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/controller/FileController.java                                        |   11 
 kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/service/impl/SuperServiceImpl.java                                                   |    5 
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/impl/AbstractIFileService.java                                   |   34 +
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/EquipmentDockingService.java                         |   19 +
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/equipmentDocking.html                                                                           |  352 ++++++++++++++++++++
 kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/resources/application.yml                                                                                          |    6 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SaasClientPay.java                                   |    3 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/saasClientPay.html                                                                              |   14 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/EquipmentDocking.java                                |  102 ++++++
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/fallback/FileServiceFallbackFactory.java                           |    5 
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/IFileService.java                                                |    9 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/EquipmentDockingServiceImpl.java              |   74 ++++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IEquipmentDockingService.java                      |   40 ++
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/FileService.java                                                   |    7 
 23 files changed, 991 insertions(+), 21 deletions(-)

diff --git a/.gitignore b/.gitignore
index 2af840c..d4d3365 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,3 +30,4 @@
 /kidgrow-web/kidgrow-web-manager/src/main/resources/static/package-lock.json
 /kidgrow-web/kidgrow-web-manager/src/main/resources/static.zip
 /git
+/kidgrow-web/kidgrow-web-manager/src/main/resources/static.rar
diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/FileService.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/FileService.java
index 7aea84d..7710a90 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/FileService.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/FileService.java
@@ -60,5 +60,12 @@
      */
     @PostMapping(value="byteUplaod")
     FileInfo byteUplaod(@RequestParam("fileName") String fileName,@RequestBody byte[] bytes);
+    /**
+     * 文件上传 根据fileType选择上传方式 hospitalId  departmentId
+     * @param file
+     * @return
+     */
+    @PostMapping(value="/feignUploadHosIdAndDepId",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+    FileInfo feignUploadHosIdAndDepId(@RequestPart("file") MultipartFile file,@RequestParam("imgType") String imgType,@RequestParam("hospitalId") String hospitalId,@RequestParam("departmentId") String departmentId);
 
 }
diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/fallback/FileServiceFallbackFactory.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/fallback/FileServiceFallbackFactory.java
index 18f5142..4d06ec6 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/fallback/FileServiceFallbackFactory.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/fallback/FileServiceFallbackFactory.java
@@ -51,6 +51,11 @@
             public FileInfo byteUplaod(String fileName, byte[] bytes) {
                 return null;
             }
+
+            @Override
+            public FileInfo feignUploadHosIdAndDepId(MultipartFile file, String imgType, String hospitalId, String departmentId) {
+                return null;
+            }
         };
     }
 }
diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/IFileService.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/IFileService.java
index 8558339..9b3d2ea 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/IFileService.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/IFileService.java
@@ -6,6 +6,7 @@
 import com.kidgrow.filecenter.model.FileInfo;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.util.Map;
 
@@ -43,5 +44,11 @@
      */
     ResultBody baseDownLoad(Map<String, Object> map) throws Exception;
 
-    FileInfo byteUplaod(String fileName, InputStream inputStream, int size);
+    FileInfo byteUplaod(String fileName, InputStream inputStream, int size) throws IOException;
+    /**
+     * 文件上传 根据fileType选择上传方式 hospitalId  departmentId
+     * @param file
+     * @return
+     */
+    FileInfo feignUploadHosIdAndDepId(MultipartFile file, String imgType, String hospitalId, String departmentId)throws Exception;
 }
diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/impl/AbstractIFileService.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/impl/AbstractIFileService.java
index 492dbff..33591ab 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/impl/AbstractIFileService.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/impl/AbstractIFileService.java
@@ -320,7 +320,7 @@
     }
 
     @Override
-    public FileInfo byteUplaod(String fileName, InputStream inputStream,int size) {
+    public FileInfo byteUplaod(String fileName, InputStream inputStream,int size) throws IOException {
         String houzhui=fileName.substring(fileName.lastIndexOf(".")+1);
         String newFileName= RandomValueUtils.uuid()+"."+houzhui;
         FileInfo newfileInfo=new FileInfo();
@@ -332,7 +332,37 @@
         newfileInfo.setSource("aliyun");
         newfileInfo.setImgType(houzhui);
         newfileInfo.setCreateTime(new Date());
-        this.fileUpLoadOss(newfileInfo,OssPathEn+"pdf/"+newFileName,inputStream);
+        this.fileUpLoadOss(newfileInfo,"pdf/"+newFileName,inputStream);
+        baseMapper.insert(newfileInfo);
+        inputStream.close();
+        return newfileInfo;
+    }
+
+    @Override
+    public FileInfo feignUploadHosIdAndDepId(MultipartFile file, String imgType, String hospitalId, String departmentId) throws Exception {
+        List<String> lassStr= Arrays.asList("png","bmp","dib","gif","jfif","jpe","jpeg","jpg","tif","tiff","ico");
+        String suffix=file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
+        if(!lassStr.contains(suffix)){
+            return null;
+        }
+        String name = file.getOriginalFilename();
+        String fileName= UUID.randomUUID().toString().replaceAll("-","");
+        //image/jpeg;base64
+        String newFileName=fileName+name.substring(name.lastIndexOf("."));
+        FileInfo newfileInfo=new FileInfo();
+        newfileInfo.setName(newFileName);
+        newfileInfo.setId(IdUtil.fastSimpleUUID());
+        newfileInfo.setSize(file.getSize());
+        newfileInfo.setIsImg(true);
+        newfileInfo.setContentType("image/jpeg");
+        newfileInfo.setSource("aliyun");
+        newfileInfo.setImgType(imgType);
+        newfileInfo.setCreateTime(new Date());
+        String folderByDate =DateUtil.formatDate(new Date());
+        String filePath = FilePath(imgType, folderByDate, hospitalId, departmentId);
+        InputStream inputStream = file.getInputStream();
+        this.fileUpLoadOss(newfileInfo,filePath+newFileName,inputStream);
+        inputStream.close();
         baseMapper.insert(newfileInfo);
         return newfileInfo;
     }
diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/controller/FileController.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/controller/FileController.java
index b70149c..45c5a19 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/controller/FileController.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/controller/FileController.java
@@ -69,6 +69,15 @@
         return fileService.uploadForThumbnails(file,imgType);
     }
     /**
+     * 文件上传 根据fileType选择上传方式 hospitalId  departmentId
+     * @param file
+     * @return
+     */
+    @PostMapping(value="/feignUploadHosIdAndDepId",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+    public FileInfo feignUploadHosIdAndDepId(@RequestPart("file") MultipartFile file,@RequestParam("imgType") String imgType,@RequestParam("hospitalId") String hospitalId,@RequestParam("departmentId") String departmentId) throws Exception {
+        return fileService.feignUploadHosIdAndDepId(file,imgType,hospitalId,departmentId);
+    }
+    /**
      * base64上传图片
      */
     @PostMapping(value="baseUplaod",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@@ -91,7 +100,7 @@
      * byte[]上传
      */
     @PostMapping(value="byteUplaod")
-    public FileInfo byteUplaod(@RequestParam("fileName") String fileName,@RequestBody byte[] bytes){
+    public FileInfo byteUplaod(@RequestParam("fileName") String fileName,@RequestBody byte[] bytes) throws IOException{
         if(bytes.length == 0){
             return null;
         }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/EquipmentDockingService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/EquipmentDockingService.java
new file mode 100644
index 0000000..51931d8
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/EquipmentDockingService.java
@@ -0,0 +1,19 @@
+package com.kidgrow.oprationcenter.feign;
+
+import com.kidgrow.common.constant.ServiceNameConstants;
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.oprationcenter.feign.fallback.EquipmentDockingServiceFallbackFactory;
+import com.kidgrow.oprationcenter.model.EquipmentDocking;
+import com.kidgrow.ribbon.config.FeignHttpInterceptorConfig;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+@FeignClient(value = ServiceNameConstants.OPRATION_SERVER,configuration= FeignHttpInterceptorConfig.class,
+        fallbackFactory = EquipmentDockingServiceFallbackFactory.class, decode404 = true)
+public interface EquipmentDockingService {
+    @PostMapping("equipmentdocking/isAuthorize")
+    Boolean isAuthorize(@RequestBody EquipmentDocking equipmentDocking);
+    @PostMapping("equipmentdocking/query")
+    ResultBody findByObject(@RequestBody EquipmentDocking equipmentDocking);
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/EquipmentDockingServiceFallbackFactory.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/EquipmentDockingServiceFallbackFactory.java
new file mode 100644
index 0000000..3a270aa
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/EquipmentDockingServiceFallbackFactory.java
@@ -0,0 +1,28 @@
+package com.kidgrow.oprationcenter.feign.fallback;
+
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.oprationcenter.feign.EquipmentDockingService;
+import com.kidgrow.oprationcenter.model.EquipmentDocking;
+import feign.hystrix.FallbackFactory;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component
+public class EquipmentDockingServiceFallbackFactory implements FallbackFactory<EquipmentDockingService> {
+
+    @Override
+    public EquipmentDockingService create(Throwable throwable) {
+        return new EquipmentDockingService() {
+            @Override
+            public Boolean isAuthorize(EquipmentDocking equipmentDocking) {
+                return null;
+            }
+
+            @Override
+            public ResultBody findByObject(EquipmentDocking equipmentDocking) {
+                return null;
+            }
+        };
+    }
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/EquipmentDocking.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/EquipmentDocking.java
new file mode 100644
index 0000000..b24a964
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/EquipmentDocking.java
@@ -0,0 +1,102 @@
+package com.kidgrow.oprationcenter.model;
+
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.kidgrow.common.model.SuperModel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.hibernate.validator.constraints.NotEmpty;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ * @Description: <br>
+ * @Project: 用户中心<br>
+ * @CreateDate: Created in 2020-10-19 11:14:58 <br>
+ * @Author: <a href="4345453@kidgrow.com">liuke</a>
+ * @version 1.0
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("equipment_docking")
+public class EquipmentDocking extends SuperModel {
+    private static final long serialVersionUID=1L;
+
+            /**
+    * 医院名称
+    */
+        @NotEmpty(message = "医院名称不能为空")
+        private String hospitalName;
+            /**
+    * 科室名称
+    */
+        @NotEmpty(message = "科室名称不能为空")
+        private String departName;
+            /**
+    * 医院唯一标识
+    */
+        @NotNull(message = "医院唯一标识不能为空")
+        @JsonSerialize(using = ToStringSerializer.class)
+        private Long hospitalId;
+            /**
+    * 部门唯一表示
+    */
+            @NotNull(message = "部门唯一表示不能为空")
+            @JsonSerialize(using = ToStringSerializer.class)
+        private Long departId;
+            /**
+    * 设备厂家名称
+    */
+        @NotEmpty(message = "设备厂家名称不能为空")
+        private String companyName;
+            /**
+    * 设备型号
+    */
+        @NotEmpty(message = "设备型号不能为空")
+        private String unitType;
+            /**
+    * 设备品牌
+    */
+        @NotEmpty(message = "设备品牌不能为空")
+        private String equipmentBrand;
+            /**
+    * 设备机器码
+    */
+        @NotEmpty(message = "设备机器码不能为空")
+        private String machineCode;
+            /**
+    * hospital_id+depart_id+machine_code 进行md5加密生成的32位小写的字符串
+    */
+//        @NotEmpty(message = "hospital_id+depart_id+machine_code 进行md5加密生成的32位小写的字符串不能为空")
+        private String outAccesskey;
+            /**
+    * 设备厂家联系人电话
+    */
+        @NotEmpty(message = "设备厂家联系人电话不能为空")
+        private String contactPhone;
+            /**
+    * 设备厂家联系人名称
+    */
+        @NotEmpty(message = "设备厂家联系人名称不能为空")
+        private String contactName;
+            /**
+    * 备注信息
+    */
+        private String remarkComment;
+                                    /**
+    * 状态,1启用,0停用 
+    */
+        private Boolean enabled;
+            /**
+    * 是否删除,1删除,0未删除
+    */
+        @TableLogic
+        private Boolean isDel;
+    }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SaasClientPay.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SaasClientPay.java
index c8788d2..70cd685 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SaasClientPay.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SaasClientPay.java
@@ -130,9 +130,6 @@
     @JsonSerialize(
             using = ToStringSerializer.class
     )
-    @TableId(
-            type = IdType.ASSIGN_ID
-    )
     @DateTimeFormat(
             pattern = "yyyy-MM-dd HH:mm:ss"
     )
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/EquipmentDockingMapper.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/EquipmentDockingMapper.java
new file mode 100644
index 0000000..f1ed99d
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/EquipmentDockingMapper.java
@@ -0,0 +1,34 @@
+package com.kidgrow.oprationcenter.mapper;
+
+import com.kidgrow.db.mapper.SuperMapper;
+import com.kidgrow.oprationcenter.model.EquipmentDocking;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ * @Description: <br>
+ * @Project: 用户中心<br>
+ * @CreateDate: Created in 2020-10-19 11:14:58 <br>
+ * @Author: <a href="4345453@kidgrow.com">liuke</a>
+ * @version 1.0
+ */
+public interface EquipmentDockingMapper extends SuperMapper<EquipmentDocking> {
+    /**
+     * 分页查询列表
+     * @param page
+     * @param params
+     * @return
+     */
+    List<EquipmentDocking> findList(Page<EquipmentDocking> page, @Param("p") Map<String, Object> params);
+
+    /**
+     * 根据EquipmentDocking对象当做查询条件进行查询
+     * @param
+     * @return EquipmentDocking对象
+     */
+    EquipmentDocking findByObject(@Param("p") EquipmentDocking equipmentDocking);
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IEquipmentDockingService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IEquipmentDockingService.java
new file mode 100644
index 0000000..17c1ed4
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IEquipmentDockingService.java
@@ -0,0 +1,40 @@
+package com.kidgrow.oprationcenter.service;
+
+import com.kidgrow.common.model.PageResult;
+import com.kidgrow.common.service.ISuperService;
+import com.kidgrow.oprationcenter.model.EquipmentDocking;
+
+import java.util.Map;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ * @Description: <br>
+ * @Project: 用户中心<br>
+ * @CreateDate: Created in 2020-10-19 11:14:58 <br>
+ * @Author: <a href="4345453@kidgrow.com">liuke</a>
+ * @version 1.0
+ */
+public interface IEquipmentDockingService extends ISuperService<EquipmentDocking> {
+    /**
+     * 列表
+     * @param params
+     * @return
+     */
+    PageResult<EquipmentDocking> findList(Map<String, Object> params);
+
+
+    /**
+    * 根据EquipmentDocking对象当做查询条件进行查询
+    * @param equipmentDocking
+    * @return EquipmentDocking对象
+    */
+    EquipmentDocking findByObject(EquipmentDocking equipmentDocking);
+
+    /**
+     * 是否授权
+     * @param equipmentDocking
+     * @return
+     */
+    boolean isAuthorize(EquipmentDocking equipmentDocking);
+}
+
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/EquipmentDockingServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/EquipmentDockingServiceImpl.java
new file mode 100644
index 0000000..538ff46
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/EquipmentDockingServiceImpl.java
@@ -0,0 +1,74 @@
+package com.kidgrow.oprationcenter.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kidgrow.common.model.PageResult;
+import com.kidgrow.common.service.impl.SuperServiceImpl;
+import com.kidgrow.oprationcenter.mapper.EquipmentDockingMapper;
+import com.kidgrow.oprationcenter.model.EquipmentDocking;
+import com.kidgrow.oprationcenter.service.IEquipmentDockingService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ * @Description: <br>
+ * @Project: 用户中心<br>
+ * @CreateDate: Created in 2020-10-19 11:14:58 <br>
+ * @Author: <a href="4345453@kidgrow.com">liuke</a>
+ * @version 1.0
+ */
+@Slf4j
+@Service
+public class EquipmentDockingServiceImpl extends SuperServiceImpl<EquipmentDockingMapper, EquipmentDocking> implements IEquipmentDockingService {
+    /**
+     * 列表
+     * @param params
+     * @return
+     */
+    @Override
+    public PageResult<EquipmentDocking> findList(Map<String, Object> params){
+        Page<EquipmentDocking> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
+        List<EquipmentDocking> list  =  baseMapper.findList(page, params);
+        return PageResult.<EquipmentDocking>builder().data(list).code(0).count(page.getTotal()).build();
+    }
+
+    /**
+   * 根据EquipmentDocking对象当做查询条件进行查询
+   * @param equipmentDocking
+   * @return EquipmentDocking
+   */
+    @Override
+    public EquipmentDocking findByObject(EquipmentDocking equipmentDocking){
+        return baseMapper.findByObject(equipmentDocking);
+    }
+    /**
+     * 是否授权
+     * @param equipmentDocking
+     * @return
+     */
+    @Override
+    public boolean isAuthorize(EquipmentDocking equipmentDocking) {
+        EquipmentDocking byObject = baseMapper.findByObject(equipmentDocking);
+        if(byObject==null){
+            log.error("没有查到数据");
+            return false;
+        }else {
+            if (byObject.getIsDel()) {
+                log.error("该设备已经删除");
+                return false;
+            }else {
+                if (byObject.getEnabled()) {
+                    return true;
+                }else {
+                    log.error("该设备已禁用");
+                    return false;
+                }
+            }
+        }
+    }
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/EquipmentDockingMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/EquipmentDockingMapper.xml
new file mode 100644
index 0000000..043f835
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/EquipmentDockingMapper.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!---->
+<mapper namespace="com.kidgrow.oprationcenter.mapper.EquipmentDockingMapper">
+    <!--定义查询列-->
+    <sql id="Column_List">
+	   *
+	</sql>
+
+    <!--sql查询片段-->
+    <sql id="where">
+        <where>
+            <!--查询条件自行添加-->
+            is_del=0
+                                    <if test="p.id != null and p.id !=''">
+                and  id =  #{p.id}
+            </if>
+                                                <if test="p.hospitalName != null and p.hospitalName !=''">
+                and  hospital_name =  #{p.hospitalName}
+            </if>
+                                                <if test="p.departName != null and p.departName !=''">
+                and  depart_name =  #{p.departName}
+            </if>
+                                                <if test="p.hospitalId != null and p.hospitalId !=''">
+                and  hospital_id =  #{p.hospitalId}
+            </if>
+                                                <if test="p.departId != null and p.departId !=''">
+                and  depart_id =  #{p.departId}
+            </if>
+                                                <if test="p.companyName != null and p.companyName !=''">
+                and  company_name =  #{p.companyName}
+            </if>
+                                                <if test="p.unitType != null and p.unitType !=''">
+                and  unit_type =  #{p.unitType}
+            </if>
+                                                <if test="p.equipmentBrand != null and p.equipmentBrand !=''">
+                and  equipment_brand =  #{p.equipmentBrand}
+            </if>
+                                                <if test="p.machineCode != null and p.machineCode !=''">
+                and  machine_code =  #{p.machineCode}
+            </if>
+                                                <if test="p.outAccesskey != null and p.outAccesskey !=''">
+                and  out_accesskey =  #{p.outAccesskey}
+            </if>
+                                                <if test="p.contactPhone != null and p.contactPhone !=''">
+                and  contact_phone =  #{p.contactPhone}
+            </if>
+                                                <if test="p.contactName != null and p.contactName !=''">
+                and  contact_name =  #{p.contactName}
+            </if>
+                                                <if test="p.remarkComment != null and p.remarkComment !=''">
+                and  remark_comment =  #{p.remarkComment}
+            </if>
+                                                <if test="p.createUserId != null and p.createUserId !=''">
+                and  create_user_id =  #{p.createUserId}
+            </if>
+                                                <if test="p.createUserName != null and p.createUserName !=''">
+                and  create_user_name =  #{p.createUserName}
+            </if>
+                                                <if test="p.createTime != null and p.createTime !=''">
+                and  create_time =  #{p.createTime}
+            </if>
+                                                <if test="p.updateUserId != null and p.updateUserId !=''">
+                and  update_user_id =  #{p.updateUserId}
+            </if>
+                                                <if test="p.updateUserName != null and p.updateUserName !=''">
+                and  update_user_name =  #{p.updateUserName}
+            </if>
+                                                <if test="p.updateTime != null and p.updateTime !=''">
+                and  update_time =  #{p.updateTime}
+            </if>
+                                                <if test="p.enabled != null and p.enabled !=''">
+                and  enabled =  #{p.enabled}
+            </if>
+                                                <if test="p.isDel != null and p.isDel !=''">
+                and  is_del =  #{p.isDel}
+            </if>
+                                </where>
+    </sql>
+
+    <!--定义根据-EquipmentDocking当作查询条件返回对象-->
+    <select id="findByObject"  resultType="com.kidgrow.oprationcenter.model.EquipmentDocking">
+        select <include refid="Column_List"/>
+        from equipment_docking
+        <include refid="where"/>
+        order by id desc
+        limit 1
+    </select>
+
+    <!--定义根据-EquipmentDocking当作查询条件返回对象集合-->
+    <select id="findList" resultType="com.kidgrow.oprationcenter.model.EquipmentDocking">
+        select <include refid="Column_List"/>
+        from equipment_docking
+        <include refid="where"/>
+        order by id desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/EquipmentDockingController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/EquipmentDockingController.java
new file mode 100644
index 0000000..3383b2c
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/EquipmentDockingController.java
@@ -0,0 +1,155 @@
+package com.kidgrow.oprationcenter.controller;
+
+import com.kidgrow.common.controller.BaseController;
+import com.kidgrow.common.model.PageResult;
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.common.utils.StringUtils;
+import com.kidgrow.oprationcenter.model.EquipmentDocking;
+import com.kidgrow.oprationcenter.service.IEquipmentDockingService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.DigestUtils;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description:
+ * @Project: 用户中心
+ * @CreateDate: Created in 2020-10-19 11:14:58 <br>
+ * @Author: <a href="4345453@kidgrow.com">liuke</a>
+ * @version: 1.0
+ */
+@Slf4j
+@RestController
+@RequestMapping("/equipmentdocking")
+@Api(tags = "")
+public class EquipmentDockingController extends BaseController {
+    @Autowired
+    private IEquipmentDockingService equipmentDockingService;
+
+    /**
+     * 列表
+     */
+    @ApiOperation(value = "查询列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer")
+    })
+    @GetMapping
+    public PageResult list(@RequestParam Map<String, Object> params) {
+        if (!params.containsKey("page")) {
+            params.put("page", 1);
+        }
+        if (!params.containsKey("limit")) {
+            params.put("limit", 10);
+        }
+        return equipmentDockingService.findList(params);
+    }
+
+    /**
+     * 查询
+     */
+    @ApiOperation(value = "查询")
+    @GetMapping("/{id}")
+    public ResultBody findById(@PathVariable Long id) {
+        EquipmentDocking model = equipmentDockingService.getById(id);
+        return ResultBody.ok().data(model).msg("查询成功");
+    }
+
+    /**
+     * 根据EquipmentDocking当做查询条件进行查询
+     */
+    @ApiOperation(value = "根据EquipmentDocking当做查询条件进行查询")
+    @PostMapping("/query")
+    public ResultBody findByObject(@RequestBody EquipmentDocking equipmentDocking) {
+        EquipmentDocking model = equipmentDockingService.findByObject(equipmentDocking);
+        return ResultBody.ok().data(model).msg("查询成功");
+    }
+
+    /**
+     * 新增or更新
+     */
+    @ApiOperation(value = "保存")
+    @PostMapping
+    public ResultBody save(@Valid @RequestBody EquipmentDocking equipmentDocking, BindingResult bindingResult) {
+        List<String> errMsg = new ArrayList<>();
+        if (bindingResult.hasErrors()) {
+            for (ObjectError error : bindingResult.getAllErrors()) {
+                errMsg.add(error.getDefaultMessage());
+            }
+            return ResultBody.failed().msg(errMsg.toString());
+        } else {
+
+            boolean v = false;
+            String md5Password = DigestUtils.md5DigestAsHex(("" + equipmentDocking.getHospitalId() + equipmentDocking.getDepartId() + equipmentDocking.getMachineCode()).getBytes());
+            equipmentDocking.setOutAccesskey(md5Password);
+            v = equipmentDockingService.saveOrUpdate(equipmentDocking);
+            if (v) {
+                return ResultBody.ok().data(equipmentDocking).msg("保存成功");
+            } else {
+                return ResultBody.failed().msg("保存失败");
+            }
+        }
+    }
+
+    /**
+     * 更新状态
+     */
+    @ApiOperation(value = "更新状态")
+    @PostMapping("update")
+    public ResultBody update(@RequestBody EquipmentDocking equipmentDocking) {
+        boolean v = equipmentDockingService.saveOrUpdate(equipmentDocking);
+        if (v) {
+            return ResultBody.ok();
+        } else {
+            return ResultBody.failed().data("更新失败");
+        }
+    }
+
+    /**
+     * 删除
+     */
+    @ApiOperation(value = "删除")
+    @DeleteMapping("/{id}")
+    public ResultBody delete(@PathVariable Long id) {
+        boolean v = equipmentDockingService.removeById(id);
+        if (v) {
+            return ResultBody.ok().msg("删除成功");
+        } else {
+            return ResultBody.failed().msg("删除失败");
+        }
+    }
+
+    /**
+     * 是否授权
+     *
+     * @param equipmentDocking
+     * @return
+     */
+    @PostMapping("isAuthorize")
+    public Boolean isAuthorize(@RequestBody EquipmentDocking equipmentDocking) {
+        if (StringUtils.isBlank(equipmentDocking.getMachineCode())) {
+            log.error("请输入机器码");
+            return false;
+        }
+        if (StringUtils.isBlank(equipmentDocking.getOutAccesskey())) {
+            log.error("请输入授权秘钥");
+            return false;
+        }
+        return equipmentDockingService.isAuthorize(equipmentDocking);
+    }
+
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml
index 6aa942e..48a235c 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml
@@ -92,6 +92,7 @@
       - product_order_record
       - saas_client_pay
       - pay_manager
+      - equipment_docking
     ignoreSqls:
       - com.kidgrow.usercenter.mapper.SysRoleMapper.findAll
       - com.kidgrow.oprationcenter.mapper.ConsumptionRecordMapper.findDetailList
@@ -106,7 +107,8 @@
     mchID: 1386873502
     key: GSFcX6WdgRTAS6154EW14WE3SGBSER49
     #    certPath: D:\develop\chengxu\houtai\3cc.txt # 从微信商户平台下载的安全证书存放的路径、我放在resources下面,切记一定要看看target目录下的class文件下有没有打包apiclient_cert.p12文件
-    payNotifyUrl: http://open.zuul.kidgrow.cloud/api-opration/wxController/callback # 微信支付成功的异步通知接口
+#    payNotifyUrl: http://open.zuul.kidgrow.cloud/api-opration/wxController/callback # 微信支付成功的异步通知接口
+    payNotifyUrl:  ${kidgrow.pay.wxpay.payNotifyUrl} # 微信支付成功的异步通知接口
     domain: https://api.mch.weixin.qq.com
   #支付宝app支付
   alipay:
@@ -115,8 +117,10 @@
     format: JSON
     charset: utf-8
     signType: RSA2
-    returnUrl: http://open.zuul.kidgrow.cloud/api-opration/alipay/return
-    notifyUrl: http://open.zuul.kidgrow.cloud/api-opration/alipay/notify
+#    returnUrl: http://open.zuul.kidgrow.cloud/api-opration/alipay/return
+#    notifyUrl: http://open.zuul.kidgrow.cloud/api-opration/alipay/notify
+    returnUrl: ${kidgrow.pay.alipay.returnUrl}
+    notifyUrl: ${kidgrow.pay.alipay.notifyUrl}
     app-private-key: MIIEowIBAAKCAQEA9wDq+cxVvN3q3sUdqku/vHGwddzj5a7Re1ixbDZUPX/8CLvMTPZo8qJ0j14HxnjgVMCX3Wo1u5L4zPlqXzW5UVhPuVUnr5VToRGrOspOZBfY81gj/fJGmF2Mln0XlSqeoPRAS9SGEdEa9S87mAX3BjtyZhU2a7gxnd1/ca2QJxwgMXLX00MJl3ZrpngVFYXR/s16MV87FVq+Gfhk8tTPT25PVfufUmS7RRbiZriirNQPOYgCKQ4mi03oAGXTZGS2I3V59iph2ui89IJm4iS11t4RLqQf8Yyr+Z0rTaIfqJPQ9QMaJdl1VRaFU2jGToGIWpVe7eP/mWfG4ZBYlrVvhQIDAQABAoIBADVgG2bTgwuHIQP2sIxmRg6gurMdgpnVhysSZXSu4NFRYNM6UdGnxdH4zRtWBHQdFsz5uVd9ZhMclWsl0pi0cVFktgWkoyjMKgA6YzgXE42JobYkK9LqkdrHDGRQr9HqHdFGNsasLDSZbSvigww87b6JBhWNK+9nJEGq5alZCjeI7bTK8YlFmOlgRJ6oe1tzmYOpQMDwsZoWFx9xN9+SHursZ8bQymTRLcfZIt6vMK8rv0L/MIhxCC51hxT88gyT5Pm4087c30qbS5IlpeKqPC0TkVuvRgASZ348dP09Lf6KpAf06cMixeu0SSCGVOGyqCDgI/yn2H9XCk6++HyyCNkCgYEA/fNmCoBMSbhayyAU9TF/UPF9Msyy465JuHp1yKYJaM1L/a2C3YG7gjO8tvVxq64qFH62b4XU+Qq/arIHHdiGObzLN101oRtAqCMG8IWgM1Rd66HvEwyOnroqZarSnSmg1Uwktz9qFdmRGhGB4ePGfDWQ6yxm7l9H/U/VHalFOF8CgYEA+P8rBSP7AyKDGOXiPRFFkuOK++bxWQ0yC0V7m/XYsihqEfhunMPoHlUDpHM6d571ftHXCljdQ+0hK7xGXAD4Tqyf9wsK+/oRwOrEdHCLU9k8iFVYbo5KO/IwqXpsrlrI2ragPod8xETIGzxqm9IsSDQNXcvnViZI09cxyj6OcpsCgYArK6ZsIJVXbuyYXVLSv+BZ3UOgUCYVCHrlzoOZYYh19Xh2nnmBuF0s7CinnZ/+RHRI2aWf3ctvrsENnUgSbc2boRmWxtSoF57tNk8mskCimTQCK5wdy+Ou3gz5DYoSR5Jc0D3pnPEm176QBOvkf7ktQlnpcLnqye3OBTVAfpcS1wKBgQCOm55pCE14YyjQdsFXlm/RjC8KzR9HkI4r9HSyQ2ED0K/HcRDxCicEUE6QvkorPsh+BPLzgyffAo4v/VoS0Z9ld+r6U8HLxVKrugogYmD5+f54WuEWGLqdkL2cI3jhdy94TIaEqZak1nwBVV39tqcUB3PsV588MRse8S4cFi4BpwKBgEZTMUcEQ2pHIrcVZXHSp5GTBXY70J5xCh+uO5F4iBhmVWaqOECi1/c6Nz3SYyizsIspZG3gzYvEoe7KVaMmkCWlRW0NcXMuN0KnE70J4YoFw3WhWKNh0zQAL57lMAQkPoZVusYePCQyct9j7EboNoPgyB2CvKU152FJkkl1c4XB
     alipay-public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlxD+qCFXTnJrwbGgKPNEcZqrPpHnNoJDTdP+zhWI7ABv/rASfOhWZi56vyQhKldgbc01VBFa0myTpECHlPMZn32DGNg8DIxuV+LEIT+l2Lqjn4wQtX3zUNPHR3bTZlMEVw9JYQZI+XR2i4ZWoOszo6ahAO9SxEuNUlsCSBDMEIPaEjGJmu57X+os8TRlgj8Mxo90JVqSZlRq7eFc7wVTMe5e9p9ITctdiB+utkO0/rSh4T+VUaV1zNk8/n5jh0xDSXL4QdEe832Naeu67Y6w6vezkvF9GUwEmfJqs6PH3sF1gOKgjakbFXauEOJXnXEdyMmOKhG93jT+9GtvV/ywmwIDAQAB
 
diff --git a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/service/impl/SuperServiceImpl.java b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/service/impl/SuperServiceImpl.java
index 1bf6b9a..4283914 100644
--- a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/service/impl/SuperServiceImpl.java
+++ b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/service/impl/SuperServiceImpl.java
@@ -105,8 +105,9 @@
         if (null != entity) {
             Class<?> cls = entity.getClass();
             TableInfo tableInfo = TableInfoHelper.getTableInfo(cls);
-            if (null != tableInfo && StringUtils.isNotEmpty(tableInfo.getKeyProperty())) {
-                Object idVal = ReflectionKit.getMethodValue(cls, entity, tableInfo.getKeyProperty());
+            if (null != tableInfo && StringUtils.isNotBlank(tableInfo.getKeyProperty())) {
+//                Object idVal = ReflectionKit.getMethodValue(cls, entity, tableInfo.getKeyProperty());
+                Object idVal = ReflectionKit.getFieldValue(entity,tableInfo.getKeyProperty());
                 if (StringUtils.checkValNull(idVal) || Objects.isNull(getById((Serializable) idVal))) {
                     if (StrUtil.isEmpty(msg)) {
                         msg = "已存在";
diff --git a/kidgrow-commons/kidgrow-redis-spring-boot-starter/src/main/java/com/kidgrow/redis/util/RedisConstant.java b/kidgrow-commons/kidgrow-redis-spring-boot-starter/src/main/java/com/kidgrow/redis/util/RedisConstant.java
index 98b073b..9cce45d 100644
--- a/kidgrow-commons/kidgrow-redis-spring-boot-starter/src/main/java/com/kidgrow/redis/util/RedisConstant.java
+++ b/kidgrow-commons/kidgrow-redis-spring-boot-starter/src/main/java/com/kidgrow/redis/util/RedisConstant.java
@@ -10,4 +10,6 @@
     String USER_ORGANIZATION="USER_ORGANIZATION";
 
     String ORGANIZATION="ORGANIZATION";
+
+    String EQUIPMENT_DOCKING_TIME="EquipmentDockingTime";
 }
diff --git a/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/resources/application.yml b/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/resources/application.yml
index 332f7ac..c2308e0 100644
--- a/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/resources/application.yml
+++ b/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/resources/application.yml
@@ -231,6 +231,8 @@
       - /api-opration/wxController/callback
       - /api-opration/alipay/notify
       - /api-opration/alipay/return
+      - /api-record/DiagnosticUnfinishedFegin/equipmentList
+      - /api-record/DiagnosticUnfinishedFegin/equipmentUpload
 #      - /api-user/syshospital/findAllByMap
 #      - /api-user/sysdictionaries/findAll
 #      - /api-user/sysdepartment/findListByHospitalId
@@ -267,7 +269,9 @@
         /api-evaluation/evaluationxrayinfo/checkQRCode,
         /api-opration/wxController/callback,
         /api-opration/alipay/return,
-        /api-opration/alipay/notify
+        /api-opration/alipay/notify,
+        /api-record/DiagnosticUnfinishedFegin/equipmentList,
+        /api-record/DiagnosticUnfinishedFegin/equipmentUpload
 #        /api-user/syshospital/findAllByMap,
 #        /api-user/sysdictionaries/findAll,
 #        /api-user/sysdepartment/findListByHospitalId
diff --git a/kidgrow-uaa/kidgrow-uaa-server/src/main/resources/application.yml b/kidgrow-uaa/kidgrow-uaa-server/src/main/resources/application.yml
index 30f4715..abcd92c 100644
--- a/kidgrow-uaa/kidgrow-uaa-server/src/main/resources/application.yml
+++ b/kidgrow-uaa/kidgrow-uaa-server/src/main/resources/application.yml
@@ -56,7 +56,7 @@
   security:
     code:
       # 忽略验证码的应用编号
-      ignoreClientCode: app,hospital,webApp,readxapp
+      ignoreClientCode: app,hospital,readxapp
 
 encrypt:
   key-store:
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/equipmentDocking.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/equipmentDocking.html
new file mode 100644
index 0000000..ab66076
--- /dev/null
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/equipmentDocking.html
@@ -0,0 +1,352 @@
+<div class="layui-card">
+    <div class="layui-card-header">
+        <h2 class="header-title">第三方设备对接</h2>
+        <span class="layui-breadcrumb pull-right">
+            <a href="#!home_console">首页</a>
+            <a><cite>第三方设备对接</cite></a>
+        </span>
+    </div>
+    <div class="layui-card-body">
+        <div class="layui-form toolbar">
+            <input name="hospitalName" id="hospitalName-serch" placeholder="按医院名称" type="text"
+                    class="layui-input search-input" maxlength="50" autocomplete="off" />&emsp;
+                    <input type="hidden" id="hospitalId-serch" />
+            <select id="departmentId-serch" lay-filter="department_clients">
+                <option value="">--科室--</option>
+            </select>&emsp;
+            <button id="app-btn-search" class="layui-btn icon-btn permissions" permissions="equipmentDocking-list"><i class="layui-icon">&#xe615;</i>搜索</button>
+            <button id="docto-templete-btn-add" class="layui-btn icon-btn permissions" permissions="equipmentDocking-edit"><i class="layui-icon">&#xe654;</i>添加</button>
+        </div>
+
+        <!-- 数据表格 -->
+        <table class="layui-table permissions" permissions="equipmentDocking-list" id="app-table" lay-filter="app-table"></table>
+    </div>
+</div>
+
+<!-- 表格操作列 -->
+<script type="text/html" id="equipment-docking-bar">
+    <a class="layui-btn layui-btn-primary layui-btn-xs permissions" permissions="equipmentDocking-edit"  lay-event="edit">修改</a>
+    <a class="layui-btn layui-btn-xs permissions" permissions="equipmentDocking-del"  lay-event="del">删除</a>
+</script>
+<!-- 表格状态列 -->
+<script type="text/html" id="equipment-docking-state">
+    <input type="checkbox" lay-filter="equipment-docking-state" value="{{d.id}}" lay-skin="switch" lay-text="正常|锁定"
+           {{d.enabled==true?'checked':''}} class="permissions" permissions="equipmentDocking-enable"/>
+</script>
+
+<!-- 表单弹窗 -->
+<script type="text/html" id="app-model">
+    <form id="app-form" lay-filter="app-form" class="layui-form model-form">
+        <input name="id" type="hidden"/>
+        <div class="layui-form-item">
+            <label class="layui-form-label" style="width: 75px;">所在医院</label>
+            <div class="layui-input-block" style="width: 150px;">
+                <input name="hospitalName" id="hospitalName" placeholder="请输入医院名称" type="text" class="layui-input"
+                    maxlength="50" lay-verify="required" required style="width: 150px;" />
+                <input type="hidden" name="hospitalId" id="hospitalId" />
+                <input type="hidden" name="id" id="id" />
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">科室</label>
+            <div class="layui-input-block" style="width: 150px;">
+                <input name="departName" id="departmentName" placeholder="请选择科室" type="hidden"
+                    class="layui-input" maxlength="20" />
+                <select id="departmentId" name="departId" lay-filter="departmentId" placeholder="请选择科室"
+                    lay-verify="required" required>
+                    <option value="">-请选择科室-</option>
+                </select>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">设备厂家名称</label>
+            <div class="layui-input-block">
+                <input name="companyName" lay-verify="required" required  type="text" class="layui-input" />
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">设备型号</label>
+            <div class="layui-input-block">
+                <input name="unitType" lay-verify="required" required type="text" class="layui-input" />
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">设备品牌</label>
+            <div class="layui-input-block">
+                <input name="equipmentBrand" lay-verify="required"  required type="text" class="layui-input" />
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">设备电脑机器码</label>
+            <div class="layui-input-block">
+                <input name="machineCode" lay-verify="required" required type="text" class="layui-input" />
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">安装日期</label>
+            <div class="layui-input-block">
+                <input type="text" name="createTime" class="layui-input search-input" lay-verify="required" required id="startTime" placeholder="开始时间">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">安装联系人</label>
+            <div class="layui-input-block">
+                <input name="contactName" lay-verify="required" required type="text" class="layui-input" />
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">安装联系人电话</label>
+            <div class="layui-input-block">
+                <input name="contactPhone" lay-verify="required|phone" required type="text" class="layui-input" />
+            </div>
+        </div>
+        <div class="layui-form-item model-form-footer">
+            <button class="layui-btn layui-btn-primary"  ew-event="closeDialog" type="button">取消</button>
+            <button class="layui-btn" id="sure" lay-filter="equipmentDocking-form-submit" permissions="	
+            equipmentDocking-edit" lay-submit>保存</button>
+        </div>
+    </form>
+</script>
+
+
+<script>
+    layui.use(['form', 'table', 'laydate', 'util','autocomplete','laydate', 'config', 'admin'], function () {
+        var form = layui.form;
+        var table = layui.table;
+        var config = layui.config;
+        var layer = layui.layer;
+        var util = layui.util;
+        var admin = layui.admin;
+        var autocomplete = layui.autocomplete;
+        var laydate = layui.laydate;
+        //自动完成-医院名称
+        autocomplete.render({
+            elem: $('#hospitalName-serch')[0],
+            keywordsName: 'hospitalName', //查询关键字名称
+            url: config.base_server + 'api-user/syshospital/findByName',
+            template_val: '{{d.hospitalName}}', //选择后文本框显示的数据字段
+            template_txt: "<div class='layui-table-cell'>{{d.hospitalName}}</div>", //下拉列表模板
+            onselect: function (resp) {
+
+                $("#hospitalId-serch").val(resp.id);
+                //重新装载科室
+                getdepartmentSerch(resp.id);
+            }
+        });
+        //获取科室
+        var getdepartmentSerch = function (data) {
+            admin.req('api-user/sysdepartment/findListByHospitalId', {
+                id: data
+            }, function (data) {
+                layer.closeAll('loading');
+                if (0 === data.code) {
+                    department = data.data;
+                    $('#departmentId-serch').empty();
+                    if (data.data.length > 0) {
+                        $('#departmentName-serch').val(data.data[0].departmentName);
+                        $('#departmentId-serch').append(new Option("请选择", "",
+                            false, false));
+                    }
+                    $.each(data.data, function (index, item) {
+                        //往下拉菜单里添加元素
+                        $('#departmentId-serch').append(new Option(item.departmentName, item.id,
+                            false, false));
+                        form.render('select', 'app-form');
+                    })
+                    form.render();
+                } else {
+                    layer.msg(data.msg, {
+                        icon: 2,
+                        time: 2000
+                    });
+                }
+            }, 'get');
+        }
+         
+        // 添加按钮点击事件
+        $('#docto-templete-btn-add').click(function () {
+            showEditModel(undefined, 1);
+        });
+        //// 刷新
+        $('#docto-templete-btn-update').click(function () {
+            table.reload('app-table', { where: {} });
+        });
+       
+
+        // 渲染表格
+        table.render({
+            elem: '#app-table',
+            url: config.base_server + 'api-opration/equipmentdocking',
+            method: 'GET',
+            headers: { 'Authorization': 'Bearer ' + config.getToken().access_token },
+            page: true,
+            cols: [[
+                { field: 'hospitalName',align:'center', width: '10%', title: '医院名称' },
+                // { field: 'hospitalId',align:'center', width: '10%', title: '医院唯一标识' },
+                { field: 'departName',align:'center', width: '10%', title: '科室名称' },
+                // { field: 'departId',align:'center', width: '10%', title: '科室唯一标识' },
+                { field: 'companyName',align:'center', width: '5%', title: '设备厂家名称' },
+                { field: 'unitType',align:'center', width: '10%', title: '设备型号' },
+                { field: 'equipmentBrand',align:'center', width: '5%', title: '设备品牌' },
+                { field: 'machineCode',align:'center', width: '10%', title: '设备电脑机器码' },
+                { field: 'createTime',align:'center', width: '10%', title: '安装日期',templet: "<div>{{layui.util.toDateString(d.createTime, 'yyyy/MM/dd')}}</div>" },
+                { field: 'contactName',align:'center', width: '5%', title: '安装联系人' },
+                { field: 'contactPhone',align:'center', width: '5%', title: '安装联系人电话' },
+                { field: 'enabled',align:'center', width: '5%', templet: '#equipment-docking-state', title: '状态'},
+                { field: 'outAccesskey',align:'center', width: '10%', title: 'AccessKey' },
+                { field: 'id',align:'center', width: '10%', toolbar: '#equipment-docking-bar', title: '操作',fixed: 'right' },
+            ]],
+            done: function(res){
+                permissionsInput(res,config);
+            }
+        });
+         
+        //获取科室
+        var getdepartment = function (data) {
+            admin.req('api-user/sysdepartment/findListByHospitalId', {
+                id: data
+            }, function (data) {
+                layer.closeAll('loading');
+                if (0 === data.code) {
+                    department = data.data;
+                    $('#departmentId').empty();
+                    if (data.data.length > 0) {
+                        $('#departmentName').val(data.data[0].departmentName);
+                    }
+                    $.each(data.data, function (index, item) {
+                        //往下拉菜单里添加元素
+                        $('#departmentId').append(new Option(item.departmentName, item.id,
+                            false, false));
+                        form.render('select', 'app-form');
+                    })
+                    form.render();
+                } else {
+                    layer.msg(data.msg, {
+                        icon: 2,
+                        time: 2000
+                    });
+                }
+            }, 'get');
+        }
+        // 工具条点击事件
+        table.on('tool(app-table)', function (obj) {
+            var data = obj.data;
+            var layEvent = obj.event;
+            if (layEvent === 'edit') { // 查看详情
+                showEditModel(data, 2);
+            }else if(layEvent === 'del'){
+                layer.confirm('确定删除此用户吗?', function (i) {
+                    layer.close(i);
+                    layer.load(2);
+                    admin.req('api-opration/equipmentdocking/' + obj.data.id, {}, function (data) {
+                        layer.closeAll('loading');
+                        if (data.code == 0) {
+                            layer.msg(data.msg, { icon: 1, time: 2000 });
+                            table.reload('app-table', {});
+                        } else {
+                            layer.msg(data.msg, { icon: 2, time: 2000 });
+                        }
+                    }, 'delete');
+                });
+            }
+        });
+
+        // 搜索按钮点击事件
+        $('#app-btn-search').click(function () {
+            var departId = $('#departmentId-serch').val();
+            var hospitalId = $('#hospitalId-serch').val();
+            var templeteTitle = $('#templeteTitle').val();
+            table.reload('app-table', { where: { hospitalId: hospitalId, departId: departId } });
+        });
+
+        // 修改user状态
+        form.on('switch(equipment-docking-state)', function (obj) {
+            layer.load(2);
+            admin.req('api-opration/equipmentdocking/update', JSON.stringify({
+                id: obj.elem.value,
+                enabled: obj.elem.checked ? true : false
+            }), function (data) {
+                layer.closeAll('loading');
+                if (data.code == 0) {
+                    layer.msg(data.msg, { icon: 1, time: 2000 });
+                    table.reload('app-table', {});
+                } else {
+                    layer.msg(data.msg, { icon: 2, time: 2000 });
+                    $(obj.elem).prop('checked', !obj.elem.checked);
+                    form.render('checkbox');
+                }
+            }, 'POST');
+        });
+
+        // 表单提交事件
+        form.on('submit(equipmentDocking-form-submit)', function (data) {
+            layer.load(2);
+            admin.req('api-opration/equipmentdocking', JSON.stringify(data.field), function (data) {
+                layer.closeAll('loading');
+                if (data.code == 0) {
+                    // layer.msg(data.msg, { icon: 1, time: 2000 });
+                    layer.closeAll();
+                    table.reload('app-table', {});
+                } else {
+                    layer.msg(data.msg, { icon: 2, time: 2000 });
+                }
+            }, "POST");
+            return false;
+        });
+        // // 显示编辑弹窗
+        var showEditModel = function (data, index) {
+            var title = "";
+            if (index == 1) {
+                title = "新增";
+            } else if (index == 2) {
+                title = "修改";
+            }
+            layer.open({
+                type: 1,
+                title: title,
+                area: '450px',
+                offset: '120px',
+                content: $('#app-model').html(),
+                success: function () {
+                    $('#app-form')[0].reset();
+                    $('#app-form').attr('method', 'POST');
+                    if (data) {
+                        if(index==1){
+                            $('#sure').hide();
+                        }
+                        form.val('app-form', data);
+                        console.log(data,"1111111111111")
+                         //重新装载科室
+                        getdepartment(data.hospitalId);
+                        form.render();
+                    }
+                    //自动完成-医院名称
+                    autocomplete.render({
+                        elem: $('#hospitalName')[0],
+                        keywordsName: 'hospitalName', //查询关键字名称
+                        url: config.base_server + 'api-user/syshospital/findByName',
+                        template_val: '{{d.hospitalName}}', //选择后文本框显示的数据字段
+                        template_txt: "<div class='layui-table-cell'>{{d.hospitalName}}</div>", //下拉列表模板
+                        onselect: function (resp) {
+
+                            $("#hospitalId").val(resp.id);
+                            //重新装载科室
+                            getdepartment(resp.id);
+                        }
+                    });
+                    //执行一个laydate实例
+                    laydate.render({
+                        elem: '#startTime' //指定元素
+                        ,type: 'datetime'
+                    });
+                    //新增 和  更新   科室触发的事件
+                    form.on('select(departmentId)', function () {
+                        //将部门名称赋值
+                        $('#departmentName').val($(this)[0].innerHTML);
+                    });
+                   
+                }
+            });
+        };
+    });
+</script>
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/saasClientPay.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/saasClientPay.html
index b934721..ddfee6d 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/saasClientPay.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/saasClientPay.html
@@ -8,8 +8,7 @@
     </div>
     <div class="layui-card-body">
         <div class="layui-form toolbar">
-            <input name="hospitalName" id="hospitalName-seach" placeholder="按医院名称" type="text"
-                class="layui-input search-input" maxlength="50" autocomplete="off" />&emsp;
+           
             <input type="hidden" id="hospitalId" />
             <select id="departmentId" lay-filter="department_clients">
                 <option>--科室--</option>
@@ -20,12 +19,14 @@
             <div class="layui-col-sm4">
                 <input type="text" class="layui-input search-input" id="startTime" placeholder="开始时间"> 至 <input
                     type="text" class="layui-input search-input" id="endTime" placeholder="结束时间"> &emsp;
+                    <input name="hospitalName" id="hospitalName-seach" placeholder="按医院名称" type="text"
+                    class="layui-input search-input" maxlength="50" autocomplete="off" />&emsp;
             </div>
-            <button id="app-btn-search" class="layui-btn icon-btn permissions" permissions="sysdictionaries-list"><i
+            <button id="app-btn-search" class="layui-btn icon-btn permissions" permissions="saasclientpay-list"><i
                     class="layui-icon">&#xe615;</i>搜索</button>
-            <button id="piliangjiesuan" class="layui-btn icon-btn permissions" permissions="sysdictionaries-edit"><i
+            <button id="piliangjiesuan" class="layui-btn icon-btn permissions" permissions="saasclientpay-edit"><i
                     class="layui-icon">&#xe654;</i>批量结算</button>
-            <button id="export" class="layui-btn icon-btn permissions" permissions="sysdictionaries-edit"><i
+            <button id="export" class="layui-btn icon-btn permissions" permissions="saasclientpay-export"><i
                     class="layui-icon">&#xe654;</i>导出</button>
         </div>
 
@@ -53,7 +54,7 @@
         laydate.render({
             elem: '#endTime' //指定元素
         });
-
+        // permissionsInput(null, config);
 
         // 获取应用列表
         // layer.load(2);
@@ -220,6 +221,7 @@
                 }
             });
         }
+        
         //比较日期大小
         function compareDate(logintime, logouttime) {
             var arys1 = new Array();
diff --git a/pom.xml b/pom.xml
index e4e0d40..e62b831 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,7 +51,7 @@
         <easypoi.version>4.1.0</easypoi.version>
         <poi.version>4.1.0</poi.version>
         <druid-starter>1.1.10</druid-starter>
-        <mybatis-plus-boot-starter.version>3.3.1</mybatis-plus-boot-starter.version>
+        <mybatis-plus-boot-starter.version>3.4.0</mybatis-plus-boot-starter.version>
         <p6spy.version>3.8.6</p6spy.version>
         <swagger.version>2.9.2</swagger.version>
         <guava.version>28.1-jre</guava.version>

--
Gitblit v1.8.0