From 675b33cdf2d9f846a1ea1055052578e1d00d592c Mon Sep 17 00:00:00 2001
From: zzc <Zhengzhic18@163.com>
Date: Mon, 17 Mar 2025 09:05:13 +0800
Subject: [PATCH] =?UTF-8?q?=E7=AD=9B=E6=9F=A5=E4=BA=8C=E7=BB=B4=E7=A0=81?=
 =?UTF-8?q?=E3=80=81=E7=AD=9B=E6=9F=A5=E5=88=97=E8=A1=A8=E5=AE=8C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 acupuncture-admin/pom.xml                     |   20 +
 .../controller/web/DmsLoginController.java    |    6 +
 .../controller/web/ExternalController.java    |   63 +
 .../controller/web/ScreeningController.java   |  173 +
 .../controller/web/WxQrCodeController.java    |  127 +
 .../src/main/resources/application-dev.yml    |   10 +-
 .../src/main/resources/application-stage.yml  |    7 +-
 .../src/main/resources/application.yml        |    1 +
 acupuncture-common/pom.xml                    |   13 +
 .../common/constant/ErrorConstant.java        |  157 +
 .../common/constant/UserConstants.java        |   16 +
 .../common/core/redis/RedisCache.java         |   47 +
 .../acupuncture/common/enums/BaseEnum.java    |  131 +
 .../common/exception/base/BaseException.java  |    7 +
 .../acupuncture/common/utils/AsposeUtils.java |   60 +
 .../acupuncture/common/utils/QrCodeUtil.java  |   86 +
 .../framework/config/SecurityConfig.java      |    4 +-
 .../src/main/resources/mbg.xml                |   12 +-
 acupuncture-system/pom.xml                    |   35 +
 .../system/domain/dto/AmsWxQrCodeDto.java     |   53 +
 .../system/domain/dto/ExternalDto.java        |  208 +
 .../system/domain/dto/ScreeningDto.java       |  411 ++
 .../system/domain/po/AmsScreenWxQrCode.java   |  172 +
 .../domain/po/AmsScreenWxQrCodeExample.java   | 1121 +++
 .../system/domain/po/ScrScreening.java        |  139 +
 .../system/domain/po/ScrScreeningDetail.java  |   95 +
 .../domain/po/ScrScreeningDetailExample.java  |  641 ++
 .../system/domain/po/ScrScreeningDraw.java    |  128 +
 .../domain/po/ScrScreeningDrawExample.java    |  851 +++
 .../system/domain/po/ScrScreeningExample.java |  881 +++
 .../system/domain/po/ScrScreeningRecord.java  |  315 +
 .../domain/po/ScrScreeningRecordExample.java  | 1961 +++++
 .../system/domain/po/UplReportImage.java      |  139 +
 .../domain/po/UplReportImageExample.java      |  921 +++
 .../system/domain/po/UplRtcfInfo.java         | 1008 +++
 .../system/domain/po/UplRtcfInfoExample.java  | 6441 +++++++++++++++++
 .../system/domain/vo/AmsWxQrCodeVo.java       |   84 +
 .../system/domain/vo/DmsLoginUserVo.java      |    4 +
 .../system/domain/vo/ExternalVo.java          |  218 +
 .../system/domain/vo/QuestionnaireVo.java     |  549 ++
 .../system/domain/vo/ScrScreenVo.java         |   75 +
 .../system/persist/dao/ExternalDao.java       |   17 +
 .../system/persist/dao/ScreeningDao.java      |   20 +
 .../persist/dao/ScreeningDetailDao.java       |   44 +
 .../system/persist/dao/WxQrCodeDao.java       |   23 +
 .../mapper/AmsScreenWxQrCodeMapper.java       |   28 +
 .../mapper/ScrScreeningDetailMapper.java      |   28 +
 .../mapper/ScrScreeningDrawMapper.java        |   28 +
 .../persist/mapper/ScrScreeningMapper.java    |   28 +
 .../mapper/ScrScreeningRecordMapper.java      |   28 +
 .../persist/mapper/UplReportImageMapper.java  |   28 +
 .../persist/mapper/UplRtcfInfoMapper.java     |   28 +
 .../system/service/DmsLoginService.java       |    3 +
 .../system/service/ExternalService.java       |   38 +
 .../system/service/IScreeningService.java     |   72 +
 .../system/service/WxQrCodeService.java       |   32 +
 .../service/impl/DmsLoginServiceImpl.java     |    5 +
 .../service/impl/ExternalServiceImpl.java     |   62 +
 .../service/impl/ScreeningServiceImpl.java    |  351 +
 .../service/impl/WxQrCodeServiceImpl.java     |  330 +
 .../main/resources/mapper/dao/ExternalDao.xml |   28 +
 .../resources/mapper/dao/ScreeningDao.xml     |   38 +
 .../mapper/dao/ScreeningDetailDao.xml         |  116 +
 .../main/resources/mapper/dao/WxQrCodeDao.xml |   89 +
 .../mapper/system/AmsScreenWxQrCodeMapper.xml |  347 +
 .../system/ScrScreeningDetailMapper.xml       |  237 +
 .../mapper/system/ScrScreeningDrawMapper.xml  |  285 +
 .../mapper/system/ScrScreeningMapper.xml      |  300 +
 .../system/ScrScreeningRecordMapper.xml       |  552 ++
 .../mapper/system/UplReportImageMapper.xml    |  300 +
 .../mapper/system/UplRtcfInfoMapper.xml       | 1545 ++++
 pom.xml                                       |    2 +-
 72 files changed, 22415 insertions(+), 7 deletions(-)
 create mode 100644 acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/ExternalController.java
 create mode 100644 acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/ScreeningController.java
 create mode 100644 acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/WxQrCodeController.java
 create mode 100644 acupuncture-common/src/main/java/com/acupuncture/common/constant/ErrorConstant.java
 create mode 100644 acupuncture-common/src/main/java/com/acupuncture/common/enums/BaseEnum.java
 create mode 100644 acupuncture-common/src/main/java/com/acupuncture/common/utils/AsposeUtils.java
 create mode 100644 acupuncture-common/src/main/java/com/acupuncture/common/utils/QrCodeUtil.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/AmsWxQrCodeDto.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/ExternalDto.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/ScreeningDto.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/po/AmsScreenWxQrCode.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/po/AmsScreenWxQrCodeExample.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreening.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningDetail.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningDetailExample.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningDraw.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningDrawExample.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningExample.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningRecord.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningRecordExample.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/po/UplReportImage.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/po/UplReportImageExample.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/po/UplRtcfInfo.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/po/UplRtcfInfoExample.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/AmsWxQrCodeVo.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/ExternalVo.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/QuestionnaireVo.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/ScrScreenVo.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/ExternalDao.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/ScreeningDao.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/ScreeningDetailDao.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/WxQrCodeDao.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/AmsScreenWxQrCodeMapper.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/ScrScreeningDetailMapper.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/ScrScreeningDrawMapper.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/ScrScreeningMapper.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/ScrScreeningRecordMapper.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/UplReportImageMapper.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/UplRtcfInfoMapper.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/service/ExternalService.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/service/IScreeningService.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/service/WxQrCodeService.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/service/impl/ExternalServiceImpl.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/service/impl/ScreeningServiceImpl.java
 create mode 100644 acupuncture-system/src/main/java/com/acupuncture/system/service/impl/WxQrCodeServiceImpl.java
 create mode 100644 acupuncture-system/src/main/resources/mapper/dao/ExternalDao.xml
 create mode 100644 acupuncture-system/src/main/resources/mapper/dao/ScreeningDao.xml
 create mode 100644 acupuncture-system/src/main/resources/mapper/dao/ScreeningDetailDao.xml
 create mode 100644 acupuncture-system/src/main/resources/mapper/dao/WxQrCodeDao.xml
 create mode 100644 acupuncture-system/src/main/resources/mapper/system/AmsScreenWxQrCodeMapper.xml
 create mode 100644 acupuncture-system/src/main/resources/mapper/system/ScrScreeningDetailMapper.xml
 create mode 100644 acupuncture-system/src/main/resources/mapper/system/ScrScreeningDrawMapper.xml
 create mode 100644 acupuncture-system/src/main/resources/mapper/system/ScrScreeningMapper.xml
 create mode 100644 acupuncture-system/src/main/resources/mapper/system/ScrScreeningRecordMapper.xml
 create mode 100644 acupuncture-system/src/main/resources/mapper/system/UplReportImageMapper.xml
 create mode 100644 acupuncture-system/src/main/resources/mapper/system/UplRtcfInfoMapper.xml

diff --git a/acupuncture-admin/pom.xml b/acupuncture-admin/pom.xml
index 4663ac2f..fe6877f8 100644
--- a/acupuncture-admin/pom.xml
+++ b/acupuncture-admin/pom.xml
@@ -53,12 +53,32 @@
         <dependency>
             <groupId>com.acupuncture</groupId>
             <artifactId>acupuncture-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>jakarta.activation</artifactId>
+                    <groupId>com.sun.activation</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <!-- 定时任务-->
         <dependency>
             <groupId>com.acupuncture</groupId>
             <artifactId>acupuncture-quartz</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>poi-ooxml</artifactId>
+                    <groupId>org.apache.poi</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>poi</artifactId>
+                    <groupId>org.apache.poi</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>poi-ooxml-schemas</artifactId>
+                    <groupId>org.apache.poi</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <!-- 代码生成-->
diff --git a/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/DmsLoginController.java b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/DmsLoginController.java
index b684580d..91360ec3 100644
--- a/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/DmsLoginController.java
+++ b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/DmsLoginController.java
@@ -12,6 +12,7 @@ import com.acupuncture.common.utils.SecurityUtils;
 import com.acupuncture.framework.web.service.SysPermissionService;
 import com.acupuncture.framework.web.service.TokenService;
 import com.acupuncture.framework.web.service.WebDmsLoginService;
+import com.acupuncture.system.domain.po.DmsTenant;
 import com.acupuncture.system.domain.vo.DmsLoginUserVo;
 import com.acupuncture.system.service.DmsLoginService;
 import com.acupuncture.system.service.ISysUserService;
@@ -87,4 +88,9 @@ public class DmsLoginController {
         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
         return JsonResponse.ok(dmsLoginService.resetPwd(user));
     }
+
+    @PostMapping("/queryTenantById")
+    public JsonResponse<DmsTenant> queryTenantById(@RequestBody DmsLoginUserVo.Query dto){
+        return JsonResponse.ok(dmsLoginService.queryById(dto.getId()));
+    }
 }
diff --git a/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/ExternalController.java b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/ExternalController.java
new file mode 100644
index 00000000..08cbea0b
--- /dev/null
+++ b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/ExternalController.java
@@ -0,0 +1,63 @@
+package com.acupuncture.web.controller.web;
+
+import com.acupuncture.common.config.RuoYiConfig;
+import com.acupuncture.common.core.domain.AjaxResult;
+import com.acupuncture.common.core.domain.BaseDto;
+import com.acupuncture.common.utils.file.FileUploadUtils;
+import com.acupuncture.common.utils.file.FileUtils;
+import com.acupuncture.system.domain.dto.ExternalDto;
+import com.acupuncture.system.domain.vo.ExternalVo;
+import com.acupuncture.system.service.ExternalService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Author zzc
+ * @Package com.acupuncture.web.controller.web
+ * @Date 2025/3/15 9:21
+ * @description:
+ */
+@Slf4j
+@Api(tags = "外部接口")
+@RestController
+@RequestMapping("/api")
+public class ExternalController {
+
+    @Resource
+    private ExternalService externalService;
+
+    @ApiOperation("获取人员信息")
+    @GetMapping("/http/getUserInfo")
+    public Object test(@RequestParam("from") String from, @RequestParam("memberid") String memberid) {
+        ExternalVo.Result query = externalService.query(from, memberid);
+        if (query == null) {
+            return "no person";
+        }
+        return query;
+    }
+
+    @ApiOperation("上传数据")
+    @PostMapping("/http/uploadMemberInfo")
+    public Object add(@RequestBody BaseDto<ExternalDto.Insert> dto){
+        int add = externalService.add(dto.getParam().getList());
+        if (add == 0) {
+            return "upload fail";
+        }
+        return "upload ok";
+    }
+
+//    /**
+//     * 上传测试报告
+//     * @param reportImageVo
+//     * @return
+//     */
+//    int addReportImage(ExternalDto.ReportImageDto reportImageVo){
+//
+//    }
+}
diff --git a/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/ScreeningController.java b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/ScreeningController.java
new file mode 100644
index 00000000..be9f4df2
--- /dev/null
+++ b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/ScreeningController.java
@@ -0,0 +1,173 @@
+package com.acupuncture.web.controller.web;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.CharsetUtil;
+import cn.hutool.core.util.StrUtil;
+import com.acupuncture.common.annotation.Anonymous;
+import com.acupuncture.common.core.domain.BaseDto;
+import com.acupuncture.common.core.domain.JsonResponse;
+import com.acupuncture.common.utils.SecurityUtils;
+import com.acupuncture.system.domain.dto.ScreeningDto;
+import com.acupuncture.system.domain.vo.QuestionnaireVo;
+import com.acupuncture.system.domain.vo.ScrScreenVo;
+import com.acupuncture.system.service.IScreeningService;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.net.URLEncoder;
+import java.util.Date;
+import java.util.List;
+
+@Slf4j
+@Api(tags = "筛查")
+@RestController
+@RequestMapping("/screening")
+public class ScreeningController {
+    @Resource
+    private IScreeningService screeningService;
+
+    @ApiOperation(value = "查询筛查列表", notes = "原:查询医院是否填写了调查筛查")
+    @RequestMapping(value = "/queryDetail", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
+    public JsonResponse<PageInfo<ScrScreenVo.Result>> queryDetail(@ApiParam @Validated @RequestBody BaseDto<ScreeningDto.Query> param){
+        log.info("查询筛查列表");
+        if (param.getPageNum() > 0) {
+            PageHelper.startPage(param.getPageNum(), param.getPageSize());
+        }
+        return JsonResponse.ok(screeningService.queryDetailByPage(param.getParam(), param.getPageNum(), param.getPageSize()));
+    }
+
+
+    @ApiOperation(value = "创建筛查详情", notes = "")
+    @RequestMapping(value = "/create", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
+    public JsonResponse<QuestionnaireVo.DetailInfo> createDetail(@ApiParam @Validated @RequestBody BaseDto<ScreeningDto.CreateDetail> params) throws Exception {
+        log.info("创建筛查详情{}", params);
+        QuestionnaireVo.DetailInfo detailInfo = screeningService.createDetail(params.getParam(), params.getParam().getUserId(), params.getParam().getTenantId());
+        log.info("创建筛查详情结束");
+        return JsonResponse.ok(detailInfo);
+    }
+
+    @Anonymous
+    @ApiOperation(value = "创建筛查详情***", notes = "")
+    @RequestMapping(value = "/createNoToken", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
+    public JsonResponse<QuestionnaireVo.DetailInfo> createNoToken(@ApiParam @Validated @RequestBody BaseDto<ScreeningDto.CreateDetail> params) throws Exception {
+        log.info("创建筛查详情{}", params);
+       QuestionnaireVo.DetailInfo detailInfo = screeningService.createDetail(params.getParam(), params.getParam().getUserId(), params.getParam().getTenantId());
+        log.info("创建筛查详情结束");
+        return JsonResponse.ok(detailInfo);
+    }
+
+    @ApiOperation(value = "提交筛查", notes = "")
+    @RequestMapping(value = "/submit", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
+    public JsonResponse submitQuestionnaire(@ApiParam @Validated @RequestBody BaseDto<ScreeningDto.SubmitScreeningQuestionnaire> params) throws Exception {
+        log.info("提交筛查开始{}", params);
+        screeningService.submitQuestionnaire(params.getParam(), SecurityUtils.getUserId());
+        return JsonResponse.ok();
+    }
+
+    @Anonymous
+    @ApiOperation(value = "提交筛查**", notes = "")
+    @RequestMapping(value = "/submitNoToken", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
+    public JsonResponse submitNoToken(@ApiParam @Validated @RequestBody BaseDto<ScreeningDto.SubmitScreeningQuestionnaire> params) throws Exception {
+        log.info("提交筛查开始{}", params);
+      screeningService.submitQuestionnaire(params.getParam(), 0L);
+        return JsonResponse.ok();
+    }
+
+
+    @Anonymous
+    @ApiOperation(value = "保存调查筛查**", notes = "")
+    @RequestMapping(value = "/save", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
+    public JsonResponse saveQuestionnaire(@ApiParam @Validated @RequestBody BaseDto<ScreeningDto.SaveQuestionnaire> params) throws Exception {
+        log.info("保存调查筛查开始{}", params);
+        screeningService.saveQuestionnaire(params.getParam(), params.getParam().getUserId());
+        log.info("保存调查筛查结束");
+        return JsonResponse.ok();
+    }
+
+    @ApiOperation(value = "筛查随访", notes = "")
+    @RequestMapping(value = "/follow", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
+    public JsonResponse follow(@Validated @RequestBody BaseDto<ScreeningDto.ScreenFollow> screenFollow){
+        screeningService.follow(screenFollow.getParam().getPatientId(), screenFollow.getParam().getStatus());
+        return JsonResponse.ok();
+    }
+
+    @ApiOperation(value = "查询筛查列表", notes = "原:查询医院是否填写了调查筛查")
+    @RequestMapping(value = "/queryNotWrite", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
+    public JsonResponse<PageInfo<QuestionnaireVo.WriteStatus>> queryNotWrite(@ApiParam @Validated @RequestBody BaseDto<ScreeningDto.QueryNotWrite> params) throws Exception {
+        log.info("保存调查筛查开始{}", params);
+        List<QuestionnaireVo.WriteStatus> writeStatusList = screeningService.queryNotWrite(params.getParam());
+        log.info("保存调查筛查结束{}", writeStatusList);
+        return JsonResponse.ok(new PageInfo<>(writeStatusList));
+    }
+
+    @ApiOperation(value = "导出筛查列表", notes = "")
+    @RequestMapping(value = "/exportScreen", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
+    public void export(HttpServletResponse response, @RequestBody @Validated  BaseDto<ScreeningDto.Query> param) {
+        screeningService.export(response, param.getParam());
+    }
+
+    @ApiOperation(value = "导出认知筛查列表", notes = "")
+    @RequestMapping(value = "/exportRzScreen", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
+    public void exportRzScreen(HttpServletResponse response, @RequestBody @Validated  BaseDto<ScreeningDto.Query> param) {
+        screeningService.exportRzScreen(response, param.getParam());
+    }
+
+//    @Anonymous
+//    @ApiOperation(value = "导出筛查记录", notes = "")
+//    @RequestMapping(value = "/export", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"})
+//    public void export(@ApiParam @Validated ScreeningDto.Export export, HttpServletResponse response) throws Exception {
+//        log.info("导出筛查记录{}", export);
+//        // 未添加时间条件
+//        Workbook workbook = screeningService.export(export);
+//        log.info("导出筛查记录结束");
+//        String str = "";
+//        if (1L == export.getQid()) {
+//            str = "2021年1-6月";
+//        } else if (3L == export.getQid()) {
+//            str = "2021年7-11月";
+//        } else if (4L == export.getQid()) {
+//            str = "2021年7-12月";
+//        } else if (10L == export.getQid()) {
+//            str = "2022年7-12月";
+//        }
+//        String fileName = str + "山西省缺血性脑卒中数据汇总表" + DateUtil.format(new Date(), "yyyyMMddHHmmss") + ".xlsx";
+//        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, CharsetUtil.UTF_8));
+//        workbook.write(response.getOutputStream());
+//    }
+//
+//    @Anonymous
+//    @ApiOperation(value = "导出筛查记录", notes = "")
+//    @RequestMapping(value = "/exportByArea", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"})
+//    public void exportByArea(@ApiParam @Validated ScreeningDto.ExportByArea export, HttpServletResponse response) throws Exception {
+//        log.info("导出筛查记录{}", export);
+//        // 未添加时间条件
+//        Workbook workbook = screeningService.exportByArea(export);
+//        log.info("导出筛查记录结束");
+//        String str = "";
+//        if (1L == export.getQid()) {
+//            str = "2021年1-6月";
+//        } else if (3L == export.getQid()) {
+//            str = "2021年7-11月";
+//        } else if (4L == export.getQid()) {
+//            str = "2021年7-12月";
+//        } else if (10L == export.getQid()) {
+//            str = "2022年7-12月";
+//        }
+//        String fileName = str + "山西省缺血性脑卒中数据汇总表"
+//                + (StrUtil.isNotEmpty(export.getArea()) ? ("(" + export.getArea() + ")") : "")
+//                + DateUtil.format(new Date(), "yyyyMMddHHmmss") + ".xlsx";
+//        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, CharsetUtil.UTF_8));
+//        workbook.write(response.getOutputStream());
+//    }
+}
diff --git a/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/WxQrCodeController.java b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/WxQrCodeController.java
new file mode 100644
index 00000000..5738bea4
--- /dev/null
+++ b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/WxQrCodeController.java
@@ -0,0 +1,127 @@
+package com.acupuncture.web.controller.web;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.acupuncture.common.annotation.Anonymous;
+import com.acupuncture.common.core.domain.BaseDto;
+import com.acupuncture.common.core.domain.JsonResponse;
+import com.acupuncture.system.domain.dto.AmsWxQrCodeDto;
+import com.acupuncture.system.domain.dto.PmsPatientDto;
+import com.acupuncture.system.domain.po.AmsScreenWxQrCode;
+import com.acupuncture.system.domain.vo.AmsWxQrCodeVo;
+import com.acupuncture.system.service.WxQrCodeService;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.util.List;
+
+@Slf4j
+@Api(tags = "微信二维码")
+@RestController
+@RequestMapping("/wxQrCode")
+public class WxQrCodeController {
+
+    @Resource
+    private WxQrCodeService wxQrCodeService;
+
+    @ApiOperation(value = "查询")
+    @PostMapping("/queryList")
+    public JsonResponse<PageInfo<AmsWxQrCodeVo.Result>> queryList(@Validated @RequestBody BaseDto<AmsWxQrCodeDto.Select> baseDto){
+        PageHelper.startPage(baseDto.getPageNum(), baseDto.getPageSize());
+        return JsonResponse.ok(new PageInfo<>(wxQrCodeService.queryList(baseDto.getParam().getDiseaseId(), baseDto.getParam().getDeptId())));
+    }
+
+    @ApiOperation(value = "新增")
+    @PostMapping("/add")
+    public JsonResponse add(@Validated @RequestBody AmsScreenWxQrCode amsWxQrCode) throws Exception{
+        wxQrCodeService.add(amsWxQrCode);
+        return JsonResponse.ok();
+    }
+
+    @ApiOperation(value = "删除")
+    @PostMapping("/delete")
+    public JsonResponse delete(@Validated @RequestBody PmsPatientDto.Delete delete){
+        wxQrCodeService.delete(delete.getIdList());
+        return JsonResponse.ok();
+    }
+
+    @ApiOperation(value = "导出")
+    @PostMapping("/export")
+    public JsonResponse export(@Validated @RequestBody AmsWxQrCodeDto.Query query) throws IOException{
+        return JsonResponse.ok(wxQrCodeService.export(query.getUrl(), query.getBq()));
+    }
+//
+    @ApiOperation(value = "查询筛查二维码")
+    @PostMapping("/queryScreenList")
+    public JsonResponse<PageInfo<AmsWxQrCodeVo.ScreenResult>> queryScreenList(@Validated @RequestBody BaseDto<AmsWxQrCodeDto.ScreenSelect> dto){
+        if (dto.getPageNum() > 0) {
+            PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
+        }
+        return JsonResponse.ok(new PageInfo<>(wxQrCodeService.queryList(dto.getParam().getTenantId())));
+    }
+
+    @ApiOperation(value = "查询客户端筛查二维码")
+    @PostMapping("/queryClientScreenList")
+    public JsonResponse<List<AmsWxQrCodeVo.ScreenResult>> queryClientScreenList(){
+        return JsonResponse.ok(wxQrCodeService.queryScreenList());
+    }
+
+    @ApiOperation(value = "添加筛查二维码")
+    @PostMapping("/addScreen")
+    public JsonResponse addScreen(@Validated @RequestBody AmsWxQrCodeDto.ScreenInsert amsScreenWxQrCode) throws Exception{
+        wxQrCodeService.add(amsScreenWxQrCode);
+        return JsonResponse.ok();
+    }
+
+    @ApiOperation(value = "删除")
+    @PostMapping("/deleteScreen")
+    public JsonResponse deleteScreen(@Validated @RequestBody PmsPatientDto.Delete delete){
+        wxQrCodeService.deleteScreen(delete.getIdList());
+        return JsonResponse.ok();
+    }
+
+    @ApiOperation(value = "导出筛查")
+    @PostMapping("/exportScreen")
+    public JsonResponse exportScreen(@Validated @RequestBody AmsWxQrCodeDto.Query query) throws Exception{
+        return JsonResponse.ok(wxQrCodeService.exportScreen(query.getUrl(), query.getTenantId()));
+    }
+
+    @ApiOperation(value = "导出海报筛查")
+    @PostMapping("/exportHbScreen")
+    public JsonResponse exportHbScreen(@Validated @RequestBody AmsWxQrCodeDto.Query query) throws Exception{
+        return JsonResponse.ok(wxQrCodeService.exportHbScreen(query.getUrl(), query.getTenantId()));
+    }
+//
+//    @Anonymous
+//    @ApiOperation(value = "导出静脉溶栓")
+//    @PostMapping("/exportJmrs")
+//    public JsonResponse exportJmrs(@Validated @RequestBody AmsWxQrCodeDto.Query query) throws Exception{
+//        return JsonResponse.ok(wxQrCodeService.exportjmrs(query.getUrl()));
+//
+//    }
+//
+//    @ApiOperation(value = "客户端导出")
+//    @GetMapping("/exportScreenPath")
+//    public JsonResponse exportScreenPath() throws Exception {
+//        return JsonResponse.ok(wxQrCodeService.exportScreenPath());
+//    }
+//
+//    @ApiOperation(value = "客户端导出ZIP")
+//    @PostMapping("/exportZipScreenPath")
+//    public JsonResponse exportZipScreenPath(@Validated @RequestBody AmsWxQrCodeDto.Query query) throws Exception {
+//        return JsonResponse.ok(wxQrCodeService.exportZipScreenPath(query.getTenantId()));
+//    }
+//
+//    @ApiOperation(value = "客户端导出海报ZIP")
+//    @PostMapping("/exportHbZipScreenPath")
+//    public JsonResponse exportHbZipScreenPath(@Validated @RequestBody AmsWxQrCodeDto.Query query) throws Exception {
+//        return JsonResponse.ok(wxQrCodeService.exportHbZipScreenPath(query.getTenantId()));
+//    }
+
+}
diff --git a/acupuncture-admin/src/main/resources/application-dev.yml b/acupuncture-admin/src/main/resources/application-dev.yml
index a6042094..a020b54a 100644
--- a/acupuncture-admin/src/main/resources/application-dev.yml
+++ b/acupuncture-admin/src/main/resources/application-dev.yml
@@ -58,4 +58,12 @@ spring:
                     merge-sql: true
                 wall:
                     config:
-                        multi-statement-allow: true
\ No newline at end of file
+                        multi-statement-allow: true
+
+file:
+    PatientTemplate: /home/acupuncture/server/profile/PatientTemplate.xlsx
+    TreamentTemplate: /home/acupuncture/server/profile/TreamentTemplate.xlsx
+    wxQrCodeTemplate: /home/acupuncture/server/profile/wxQrCodeTemplate.docx
+    screenQrCodeTemplate: /home/acupuncture/server/profile/screenQrCodeTemplate.docx
+    hbTemplate: /home/acupuncture/server/profile/screenHbQrCodeTemplate.docx
+    screenPath: http://test.tall.wiki/acupuncture/web-admin/screening/H5?hospitalId=hosId&hospitalName=hosName&centerId=cId
\ No newline at end of file
diff --git a/acupuncture-admin/src/main/resources/application-stage.yml b/acupuncture-admin/src/main/resources/application-stage.yml
index aa11b73b..3e216ada 100644
--- a/acupuncture-admin/src/main/resources/application-stage.yml
+++ b/acupuncture-admin/src/main/resources/application-stage.yml
@@ -61,4 +61,9 @@ spring:
                         multi-statement-allow: true
 file:
     PatientTemplate: /home/acupuncture/server/profile/PatientTemplate.xlsx
-    TreamentTemplate: /home/acupuncture/server/profile/TreamentTemplate.xlsx
\ No newline at end of file
+    TreamentTemplate: /home/acupuncture/server/profile/TreamentTemplate.xlsx
+    wxQrCodeTemplate: /home/acupuncture/server/profile/wxQrCodeTemplate.docx
+    screenQrCodeTemplate: /home/acupuncture/server/profile/screenQrCodeTemplate.docx
+    hbTemplate: /home/acupuncture/server/profile/screenHbQrCodeTemplate.docx
+    screenPath: http://test.tall.wiki/acupuncture/web-admin/screening/H5?hospitalId=hosId&hospitalName=hosName&centerId=cId
+    jmrsUrl: /home/acupuncture/server/profile/uploads/jmrsTemplate.docx
diff --git a/acupuncture-admin/src/main/resources/application.yml b/acupuncture-admin/src/main/resources/application.yml
index 5e6b60b6..7a586722 100644
--- a/acupuncture-admin/src/main/resources/application.yml
+++ b/acupuncture-admin/src/main/resources/application.yml
@@ -12,6 +12,7 @@ acupuncture:
   addressEnabled: false
   # 验证码类型 math 数字计算 char 字符验证
   captchaType: math
+  profileUrl: /profile
 
 # 开发环境配置
 server:
diff --git a/acupuncture-common/pom.xml b/acupuncture-common/pom.xml
index 56bc592d..66091089 100644
--- a/acupuncture-common/pom.xml
+++ b/acupuncture-common/pom.xml
@@ -135,6 +135,19 @@
             <scope>compile</scope>
         </dependency>
 
+        <!--docx转换为pdf-->
+        <dependency>
+            <groupId>com.luhuiguo</groupId>
+            <artifactId>aspose-words</artifactId>
+            <version>23.1</version>
+        </dependency>
+
+        <!--生成二维码-->
+        <dependency>
+            <groupId>net.glxn.qrgen</groupId>
+            <artifactId>javase</artifactId>
+            <version>2.0</version>
+        </dependency>
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/acupuncture-common/src/main/java/com/acupuncture/common/constant/ErrorConstant.java b/acupuncture-common/src/main/java/com/acupuncture/common/constant/ErrorConstant.java
new file mode 100644
index 00000000..cc7fb088
--- /dev/null
+++ b/acupuncture-common/src/main/java/com/acupuncture/common/constant/ErrorConstant.java
@@ -0,0 +1,157 @@
+package com.acupuncture.common.constant;
+
+import com.acupuncture.common.enums.BaseEnum;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author :wei
+ * @date :Created in 2021/10/31 16:58
+ */
+
+@Getter
+@AllArgsConstructor
+public enum ErrorConstant implements BaseEnum {
+
+    SUCCESS(200, "ok"),
+    SYS_ERROR(500, "网络繁忙,请您稍后重试"),
+
+    FILE_FORMAT_ERROR(100, "文件格式错误"),
+
+    INSERT_ERROR(1, "数据添加错误!"),
+    NAME_ERROR(2, "请填写姓名"),
+    SEX_ERROR(3, "请选择性别"),
+    NATION_ERROR(4, "请选择民族"),
+    ID_CARD_NULL(5, "请填写身份证信息"),
+    PARAM_NULL(6, "请检查您的参数是否填写完整。"),
+    EDUCATION_ERROR(7, "请选择文化程度"),
+    EDUCATION_UNIT_ERROR(8, "请填写教育年限"),
+    PARAM_ERROR(9, "请求参数错误,请确认操作是否正确。"),
+    ID_CARD_ERROR(10, "身份证格式错误,请检查身份证填写是否正确。"),
+    PATIENT_ERROR(11, "患者身份证信息已存在或患者信息异常!"),
+    PATIENT_ID_ERROR(12, "患者ID信息异常!"),
+    QUESTION_NOT_FOUND(13, "试题未找到。"),
+    MOBILE_ERROR(14, "手机号格式错误,请确认操作是否正确!"),
+    MOBILE_NULL_ERROR(15, "请填写手机号"),
+    ADDRESS_ERROR(16, "请填写住址信息"),
+    AGE_ERROR(17, "请填写年龄"),
+    CAREER_ERROR(18, "请选择职业"),
+    REPORT_ID_ERROR(21, "患者报告单信息异常!"),
+
+    WORD_ERROR(19, "文件生成异常!"),
+    BAIDU_IDENTIFY_WORDS(20, "图片识别异常,请重新拍摄!(请勿倾斜图片或在光线黑暗的环境中拍摄)"),
+    QUESTION_SAVE_ERROR(21, "选项不能为空!"),
+
+
+    QUESTION_RULE_NOT_FOUND(47, "该评测规则未知,请联系开发人员。"),
+    REPORT_DOCTOR_ERROR(48, "对不起,您没有修改报告单结果的权限。"),
+    NOT_LOGIN(49, "对不起,您尚未登录或登录已失效,请重新登录。"),
+    POSITION_NOT_3(50, "对不起,您尚未选择职务,请重新选择。"),
+
+
+    PATIENT_NOT_CHOICE(57, "没有选择病人,不进行保存答案。"),
+
+
+    URL_ERROR(98, "请求路径转换异常。"),
+    THIRD_ERROR(100, "调用第三方刚接口异常"),
+
+    //参数校验错误
+    PARAMETER_VALIDATOR_ERROR(40000, "参数校验错误"),
+    //没有找到TOKEN
+    TOKEN_NOTFOUND(40001, "Missing or invalid Authorization header."),
+    //Token签名解析错误
+    TOKEN_SIGNATURE_INVALIDATE(40002, "Token signature encoding error"),
+    //Token过期
+    TOKEN_EXPIRED(40003, "Token过期"),
+    //Token Stub 错误
+    TOKEN_STUB_NOT_FOUND(40004, "Token stub not found"),
+    //Token其他错误
+    TOKEN_FAILED(40005, "Token其他错误"),
+    //用户被禁用
+    USER_DISABLED(40006, "User disabled,Please concact the System Administrator"),
+    //没有找到TOKEN
+    USER_CHANGE_PASSWORD_NOT_SAME(40007, "两次密码不一致"),
+    //验证码错误
+    USER_PHONE_SMSCODE_ERROR(40008, "验证码错误"),
+    //短信验证码发送太频繁
+    USER_PHONE_SMSCODE_SEND_INTERVAL_SMALL(40009, "短信验证码发送太频繁,请稍后再试"),
+    //电话和用户名不匹配
+    USER_PHONE_USERNAME_NOT_MATCH(40011, "电话和用户名不匹配"),
+    //没有找到TOKEN
+    USER_LOGIN_WXMP_INVALID_CODE(40012, "无效的小程序code"),
+    //没有找到TOKEN
+    USER_TOKEN_ID_NOT_MATCH(40013, "token中的用户ID和要操作的用户ID不匹配"),
+    //管理员手机号重复
+    USER_PHONE_REPEAT(40014, "管理员手机号重复"),
+    //管理员手机号重复
+    USER_PHONE_NOT_FIND(40015, "手机号不能为空"),
+    //登录类型错误
+    LOGIN_TYPE_ERROR(40016, "登录类型错误,1管理员,2客户端"),
+    //未找到登录类型
+    LOGIN_USERTYPE_NOT_FOUND(40017, "未找到登录类型,00管理员,01客户端"),
+    //没有找到TOKEN
+    PAGEHELPER_SQL_ERROR(40018, "PageHelper自定义SQL解析错误"),
+    //查询记录多于预期
+    RECORD_TOO_MANY_THAN_EXPECTED(50001, "查询记录多于预期"),
+    //FinishKey不正确
+    FINISH_KEY_NOT_FOUND(50002, "FinishKey不正确"),
+    //测评记录不存在
+    PATIENT_REPORT_NOT_FOUND(50003, "测评记录不存在"),
+    //阶段不存在
+    STAGE_NOT_FOUND(50004, "阶段不存在"),
+    FB_TIME_NOT_FIND(50008, "发病时间不正确"),
+    DY_TIME_NOT_FIND(50009, "到院时间不正确"),
+    CZDC_TIME_NOT_FIND(50009, "卒中医生到场时间不正确"),
+    TZ_TIME_NOT_FIND(50009, "团注时间不正确"),
+    CCWC_TIME_NOT_FIND(50010, "穿刺完成时间不正确"),
+    SCXGZT_TIME_NOT_FIND(50011, "首次血管再通时间不正确"),
+    ZY_TIME_NOT_FIND(50012, "住院时间不正确"),
+    SS_TIME_NOT_FIND(50013, "CEA/CAS手术手术时间不正确"),
+    CY_TIME_NOT_FIND(50014, "出院时间不正确"),
+    HOSPITAL_REPEAT_SUBMIT(35,"数据已提交,无法修改"),
+    QUESTIONNAIRE_DETAIL_ERROR(37,"问卷详情信息错误"),
+    QUESTIONNAIRE_INFO_INCOMPLETE(39,"请填写全部选项"),
+    XGZL_INCOMPLETE(40,"请填写血管内治疗的全部选项"),
+    WxmpLoginFailed(50071,"小程序登陆失败"),
+    NOT_DOCTOR(50072, "未找到医生信息"),
+
+    DCS_RUNNING_ERROR(50073,"数据治理服务正在运行中"),
+    DcsLogError(50074,"lastSyncId和lastMakeupDate不应该为null"),
+    DateRangeError(50075,"日期范围错误"),
+    PASSWPRD_ERROR(50076,"密码错误"),
+    HAVING_BIND(50077,"您已绑定"),
+    HAVING_APPLY(50078,"您已申请"),
+    AUTHORITY(50079,"无权限操作"),
+    PHONE_HAVING(50080,"手机号已被注册"),
+
+    PHONE_NOT_FIND(50081,"手机号未找到"),
+
+    DONT_UPDATE(50082,"不允许修改"),
+
+    PHONE_HAVE(50083,"手机号已经存在,请勿重复提交。"),
+
+    NO_PERMISSION(50084,"无权限"),
+    ;
+
+    private Integer code;
+    private String desc;
+
+    public ErrorConstant addMsg(String msg) {
+        this.desc = msg + "行:" + this.desc;
+        return this;
+    }
+
+    public static ErrorConstant getByCode(int code) {
+        for (ErrorConstant codeEnum : ErrorConstant.values()) {
+            if (codeEnum.getCode().intValue() == code) {
+                return codeEnum;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public String getKey() {
+        return String.valueOf(code);
+    }
+}
diff --git a/acupuncture-common/src/main/java/com/acupuncture/common/constant/UserConstants.java b/acupuncture-common/src/main/java/com/acupuncture/common/constant/UserConstants.java
index f6dc2955..3a0a5c41 100644
--- a/acupuncture-common/src/main/java/com/acupuncture/common/constant/UserConstants.java
+++ b/acupuncture-common/src/main/java/com/acupuncture/common/constant/UserConstants.java
@@ -85,4 +85,20 @@ public class UserConstants
      * QuestionAnswer分隔符
      */
     public static final String ANSWER_JOIN_STRING = "!@#";
+
+    public enum SubmitStatus {
+        /**
+         * 问卷提交状态 0:保存 1:提交
+         */
+        save((byte) 0, "保存"),
+        submit((byte) 1, "提交"),
+        ;
+        public byte status;
+        public String name;
+
+        SubmitStatus(byte status, String name) {
+            this.status = status;
+            this.name = name;
+        }
+    }
 }
diff --git a/acupuncture-common/src/main/java/com/acupuncture/common/core/redis/RedisCache.java b/acupuncture-common/src/main/java/com/acupuncture/common/core/redis/RedisCache.java
index d12a2923..01b5a98e 100644
--- a/acupuncture-common/src/main/java/com/acupuncture/common/core/redis/RedisCache.java
+++ b/acupuncture-common/src/main/java/com/acupuncture/common/core/redis/RedisCache.java
@@ -73,7 +73,54 @@ public class RedisCache
     {
         return redisTemplate.expire(key, timeout, unit);
     }
+    /**
+     * 普通缓存获取
+     *
+     * @param key 键
+     * @return 值
+     */
+    public Object get(String key) {
+        return key == null ? null : redisTemplate.opsForValue().get(key);
+    }
+    /**
+     * 普通缓存放入
+     *
+     * @param key   键
+     * @param value 值
+     * @return true成功 false失败
+     */
+    public boolean set(String key, Object value) {
+        try {
+            redisTemplate.opsForValue().set(key, value);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+
+    }
 
+    /**
+     * 普通缓存放入并设置时间
+     *
+     * @param key     键
+     * @param value   值
+     * @param seconds 时间(秒) time要大于0 如果time小于等于0 将设置无限期
+     * @return true成功 false 失败
+     */
+    public boolean set(String key, Object value, long seconds) {
+        try {
+            if (seconds > 0) {
+                redisTemplate.opsForValue().set(key, value, seconds, TimeUnit.SECONDS);
+            } else {
+                set(key, value);
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
     /**
      * 获取有效时间
      *
diff --git a/acupuncture-common/src/main/java/com/acupuncture/common/enums/BaseEnum.java b/acupuncture-common/src/main/java/com/acupuncture/common/enums/BaseEnum.java
new file mode 100644
index 00000000..88c6e5a0
--- /dev/null
+++ b/acupuncture-common/src/main/java/com/acupuncture/common/enums/BaseEnum.java
@@ -0,0 +1,131 @@
+package com.acupuncture.common.enums;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public interface BaseEnum {
+    /**
+     * 获取枚举标识
+     *
+     * @return
+     */
+    Integer getCode();
+
+    /**
+     * 获取枚举标识
+     *
+     * @return
+     */
+    String getKey();
+
+    /**
+     * 获取枚举描述
+     *
+     * @return
+     */
+    String getDesc();
+
+    /**
+     * 通过枚举类型和code值获取对应的枚举类型
+     *
+     * @param enumType
+     * @param code
+     * @param <T>
+     * @return
+     */
+    static <T extends BaseEnum> T codeOf(Class<? extends BaseEnum> enumType, Integer code) {
+        if (enumType == null || code == null) {
+            return null;
+        }
+        T[] enumConstants = (T[]) enumType.getEnumConstants();
+        if (enumConstants == null) {
+            return null;
+        }
+        for (T enumConstant : enumConstants) {
+            int enumCode = enumConstant.getCode();
+            if (code.equals(enumCode)) {
+                return enumConstant;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 通过枚举类型和code值获取对应的枚举类型
+     *
+     * @param enumType
+     * @param key
+     * @param <T>
+     * @return
+     */
+    static <T extends BaseEnum> T keyOf(Class<? extends BaseEnum> enumType, String key) {
+        if (enumType == null || key == null) {
+            return null;
+        }
+        T[] enumConstants = (T[]) enumType.getEnumConstants();
+        if (enumConstants == null) {
+            return null;
+        }
+        for (T enumConstant : enumConstants) {
+            String enumKey = enumConstant.getKey();
+            if (key.equals(enumKey)) {
+                return enumConstant;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 通过枚举类型和text值获取对应的枚举类型
+     * 该方法等价于  枚举类.valueOf("");
+     * @param enumType
+     * @param text
+     * @param <T>
+     * @return
+     */
+    static <T extends BaseEnum> T textOf(Class<? extends BaseEnum> enumType, String text) {
+        if (enumType == null || text.isEmpty()) {
+            return null;
+        }
+        T[] enumConstants = (T[]) enumType.getEnumConstants();
+        if (enumConstants == null) {
+            return null;
+        }
+        for (T enumConstant : enumConstants) {
+            String enumText = enumConstant.toString();
+            if (text.equals(enumText)) {
+                return enumConstant;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 将enum转换为list
+     *
+     * @param enumType
+     * @param <T>
+     * @return
+     */
+    static <T extends BaseEnum> List<Map<String, Object>> enum2List(Class<? extends BaseEnum> enumType) {
+        if (enumType == null) {
+            return null;
+        }
+        T[] enumConstants = (T[]) enumType.getEnumConstants();
+        if (enumConstants == null) {
+            return null;
+        }
+        ArrayList<Map<String, Object>> results = new ArrayList<>();
+        for (T bean : enumConstants) {
+            String desc = bean.getDesc();
+            Integer code = bean.getCode();
+            HashMap<String, Object> map = new HashMap<>(10);
+            map.put("code", code);
+            map.put("desc", desc);
+            results.add(map);
+        }
+        return results;
+    }
+}
diff --git a/acupuncture-common/src/main/java/com/acupuncture/common/exception/base/BaseException.java b/acupuncture-common/src/main/java/com/acupuncture/common/exception/base/BaseException.java
index 5c747b17..cad20e2b 100644
--- a/acupuncture-common/src/main/java/com/acupuncture/common/exception/base/BaseException.java
+++ b/acupuncture-common/src/main/java/com/acupuncture/common/exception/base/BaseException.java
@@ -1,5 +1,6 @@
 package com.acupuncture.common.exception.base;
 
+import com.acupuncture.common.enums.BaseEnum;
 import com.acupuncture.common.utils.MessageUtils;
 import com.acupuncture.common.utils.StringUtils;
 
@@ -60,6 +61,12 @@ public class BaseException extends RuntimeException
         this(null, null, null, defaultMessage);
     }
 
+    public BaseException(BaseEnum errorConstant) {
+        super(errorConstant.getDesc());
+        this.code = errorConstant.getCode().toString();
+        this.defaultMessage = errorConstant.getDesc();
+    }
+
     @Override
     public String getMessage()
     {
diff --git a/acupuncture-common/src/main/java/com/acupuncture/common/utils/AsposeUtils.java b/acupuncture-common/src/main/java/com/acupuncture/common/utils/AsposeUtils.java
new file mode 100644
index 00000000..ae75cf92
--- /dev/null
+++ b/acupuncture-common/src/main/java/com/acupuncture/common/utils/AsposeUtils.java
@@ -0,0 +1,60 @@
+package com.acupuncture.common.utils;
+
+import com.aspose.words.Document;
+import com.aspose.words.ParagraphFormat;
+import com.aspose.words.SaveFormat;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+/**
+ * @ author   myy
+ * @ Date   2023/6/8 0008 11:29
+ */
+public class AsposeUtils {
+
+    /**
+     * 文档转换为pdf
+     *
+     * @param inPath
+     * @param outPath
+     * @return
+     */
+    public static boolean doc2pdf(String inPath, String outPath) {
+        FileOutputStream os = null;
+        try {
+            long old = System.currentTimeMillis();
+
+            // 新建一个空白pdf文档
+            File file = new File(outPath);
+            os = new FileOutputStream(file);
+            // doc是将要被转化的word文档
+            Document doc = new Document(inPath);
+            //调用Linux系统中的字体(为了避免转换出现乱码,需要把windows中的字体库移到Linux系统中)
+//            FontSettings.getDefaultInstance().setFontsFolder("/usr/share/fonts/Chinese/", true);
+            //删除原来的格式,以免出现多处空行
+            ParagraphFormat pf = doc.getStyles().getDefaultParagraphFormat();
+            pf.clearFormatting();
+            // 全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF,
+            doc.save(os, SaveFormat.PDF);
+
+            long now = System.currentTimeMillis();
+            // 转化用时
+            System.out.println("pdf转换成功,共耗时:" + ((now - old) / 1000.0) + "秒");
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        } finally {
+            if (os != null) {
+                try {
+                    os.flush();
+                    os.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return true;
+    }
+}
diff --git a/acupuncture-common/src/main/java/com/acupuncture/common/utils/QrCodeUtil.java b/acupuncture-common/src/main/java/com/acupuncture/common/utils/QrCodeUtil.java
new file mode 100644
index 00000000..854f74e3
--- /dev/null
+++ b/acupuncture-common/src/main/java/com/acupuncture/common/utils/QrCodeUtil.java
@@ -0,0 +1,86 @@
+package com.acupuncture.common.utils;
+
+import cn.hutool.core.date.DateUtil;
+import net.glxn.qrgen.core.image.ImageType;
+import net.glxn.qrgen.javase.QRCode;
+
+import java.io.*;
+
+/**
+ * 二维码工具类
+ *
+ * @author: wuHuiJuan
+ * @create: 2019/12/25 10:36
+ */
+public class QrCodeUtil {
+
+    /**
+     * 根据文件路径生成二维码
+     *
+     * @param url
+     * @param parentPath
+     * @return
+     * @throws IOException
+     */
+    public static String urlToQRCode(String url, String parentPath) throws IOException {
+        String fileName = "qrCode/" + DateUtil.today() + "/" + System.currentTimeMillis() + ".png";
+        ByteArrayOutputStream stream = QRCode.from(url).to(ImageType.BMP).withSize(450, 450).stream();
+        byte[] codeByte = stream.toByteArray();
+        File file = new File(parentPath, fileName);
+        if (!file.getParentFile().exists()) {
+            file.getParentFile().mkdirs();
+        }
+        OutputStream out = null;
+        try {
+            out = new FileOutputStream(file);
+            out.write(codeByte);
+            out.flush();
+        } finally {
+            if (out != null) {
+                out.close();
+            }
+        }
+        return fileName;
+    }
+
+
+    /**
+     * 根据文件路径生成二维码(可以调整大小)
+     *
+     * @param url
+     * @param parentPath
+     * @param type       图片类型。0缩略图 1打印图
+     * @return
+     * @throws IOException
+     */
+    public static String urlToQRCodeWithSize(String url, String parentPath, int type) throws IOException {
+        String name = System.currentTimeMillis() + "";
+        int size = 200;
+        if (type == 0) {
+            name = "缩略图";
+            size = 200;
+        } else if (type == 1) {
+            name = "打印图";
+            size = 1000;
+        }
+        String fileName = name + ".png";
+        ByteArrayOutputStream stream = QRCode.from(url).to(ImageType.BMP).withSize(size, size).stream();
+        byte[] codeByte = stream.toByteArray();
+        File file = new File(parentPath, fileName);
+        if (!file.getParentFile().exists()) {
+            file.getParentFile().mkdirs();
+        }
+        OutputStream out = null;
+        try {
+            out = new FileOutputStream(file);
+            out.write(codeByte);
+            out.flush();
+        } finally {
+            if (out != null) {
+                out.close();
+            }
+        }
+        return fileName;
+    }
+
+}
diff --git a/acupuncture-framework/src/main/java/com/acupuncture/framework/config/SecurityConfig.java b/acupuncture-framework/src/main/java/com/acupuncture/framework/config/SecurityConfig.java
index ec943aa2..03175fa3 100644
--- a/acupuncture-framework/src/main/java/com/acupuncture/framework/config/SecurityConfig.java
+++ b/acupuncture-framework/src/main/java/com/acupuncture/framework/config/SecurityConfig.java
@@ -114,9 +114,9 @@ public class SecurityConfig
             .authorizeHttpRequests((requests) -> {
                 permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                requests.antMatchers("/login", "/register", "/captchaImage", "/web/login").permitAll()
+                requests.antMatchers("/login", "/register", "/captchaImage", "/web/login", "/web/queryTenantById").permitAll()
                     // 静态资源,可匿名访问
-                    .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
+                    .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**", "/static/**").permitAll()
                     .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
                     // 除上面外的所有请求全部需要鉴权认证
                     .anyRequest().authenticated();
diff --git a/acupuncture-generator/src/main/resources/mbg.xml b/acupuncture-generator/src/main/resources/mbg.xml
index 2dd59338..7ab9460b 100644
--- a/acupuncture-generator/src/main/resources/mbg.xml
+++ b/acupuncture-generator/src/main/resources/mbg.xml
@@ -57,8 +57,16 @@
             <property name="enableSubPackages" value="false"/>
         </javaClientGenerator>
 
-        <table tableName="dms_tenant" domainObjectName="DmsTenant" enableDeleteByExample="false"/>
-<!--        <table tableName="dms_user" domainObjectName="DmsUser" enableDeleteByExample="false"/>-->
+        <table tableName="upl_rtcf_info" domainObjectName="UplRtcfInfo" enableDeleteByExample="false"/>
+        <table tableName="upl_report_image" domainObjectName="UplReportImage" enableDeleteByExample="false"/>
+        <table tableName="scr_screening" domainObjectName="ScrScreening" enableDeleteByExample="false"/>
+        <table tableName="scr_screening_detail" domainObjectName="ScrScreeningDetail" enableDeleteByExample="false"/>
+        <table tableName="scr_screening_draw" domainObjectName="ScrScreeningDraw" enableDeleteByExample="false"/>
+        <table tableName="scr_screening_record" domainObjectName="ScrScreeningRecord" enableDeleteByExample="false"/>
+        <table tableName="scr_screening_sound" domainObjectName="ScrScreeningSound" enableDeleteByExample="false"/>
+        <table tableName="ams_screen_wx_qr_code" domainObjectName="AmsScreenWxQrCode" enableDeleteByExample="false"/>
+
+        <!--        <table tableName="dms_user" domainObjectName="DmsUser" enableDeleteByExample="false"/>-->
 <!--        <table tableName="fms_followup_queue" domainObjectName="FmsFollowupQueue" enableDeleteByExample="false"/>-->
 <!--        <table tableName="fms_followup_task" domainObjectName="FmsFollowupTask" enableDeleteByExample="false"/>-->
 <!--        <table tableName="fms_patient_queue_relation" domainObjectName="FmsPatientQueueRelation" enableDeleteByExample="false"/>-->
diff --git a/acupuncture-system/pom.xml b/acupuncture-system/pom.xml
index fde24e93..ad62855a 100644
--- a/acupuncture-system/pom.xml
+++ b/acupuncture-system/pom.xml
@@ -21,6 +21,20 @@
         <dependency>
             <groupId>com.acupuncture</groupId>
             <artifactId>acupuncture-common</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>curvesapi</artifactId>
+                    <groupId>com.github.virtuald</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>commons-compress</artifactId>
+                    <groupId>org.apache.commons</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>poi-ooxml</artifactId>
+                    <groupId>org.apache.poi</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.projectlombok</groupId>
@@ -47,6 +61,27 @@
             <groupId>org.quartz-scheduler</groupId>
             <artifactId>quartz</artifactId>
         </dependency>
+
+        <!--常用工具类 -->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.5.14</version>
+        </dependency>
+        <dependency>
+            <groupId>com.belerweb</groupId>
+            <artifactId>pinyin4j</artifactId>
+            <version>2.5.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.deepoove</groupId>
+            <artifactId>poi-tl</artifactId>
+            <version>1.10.5</version>
+        </dependency>
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/AmsWxQrCodeDto.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/AmsWxQrCodeDto.java
new file mode 100644
index 00000000..61d69fc6
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/AmsWxQrCodeDto.java
@@ -0,0 +1,53 @@
+package com.acupuncture.system.domain.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+public class AmsWxQrCodeDto {
+
+    @Data
+    public static class Select{
+        @ApiModelProperty("部门ID")
+        private Long deptId;
+        @ApiModelProperty("病区ID")
+        private Long diseaseId;
+    }
+
+    @Data
+    public static class Query{
+        private String url;
+        private String bq;
+
+        private Long tenantId;
+
+        private List<Long> idList;
+
+    }
+
+    @Data
+    public static class ScreenSelect{
+        @ApiModelProperty("医院ID")
+        private Long tenantId;
+    }
+
+    @Data
+    public static class ScreenInsert{
+        private Long id;
+
+        private String url;
+
+        private String path;
+
+        private Long tenantId;
+
+        private String remark;
+        @ApiModelProperty("联系人")
+        private String contacts;
+        @ApiModelProperty("联系电话")
+        private String phone;
+        @ApiModelProperty("联系地址")
+        private String address;
+    }
+}
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/ExternalDto.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/ExternalDto.java
new file mode 100644
index 00000000..029e4d79
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/ExternalDto.java
@@ -0,0 +1,208 @@
+package com.acupuncture.system.domain.dto;
+
+import com.acupuncture.system.domain.po.UplReportImage;
+import com.acupuncture.system.domain.po.UplRtcfInfo;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author zzc
+ * @Package com.acupuncture.system.domain.dto
+ * @Date 2025/3/15 10:30
+ * @description:
+ */
+public class ExternalDto {
+    @Data
+    public static class Insert{
+        private List<RtcfInfoDto> list;
+    }
+
+    @Data
+    @ApiModel("人体成分数据上传")
+    public static class RtcfInfoDto{
+        private Long id;
+
+        private String message;
+
+        private String uuid;
+
+        private String deviceId;
+
+        private String deviceType;
+
+        private String memberid;
+
+        private String testId;
+
+        private String testDate;
+
+        private String name;
+
+        private String sex;
+
+        private String height;
+
+        private String birthYear;
+
+        private String weight;
+
+        private String fat;
+
+        private String bone;
+
+        private String protein;
+
+        private String water;
+
+        private String muscle;
+
+        private String smm;
+
+        private String pbf;
+
+        private String bmi;
+
+        private String bmr;
+
+        private String whr;
+
+        private String edema;
+
+        private String vfi;
+
+        private String bodyAge;
+
+        private String score;
+
+        private String bodyType;
+
+        private String lbm;
+
+        private String icw;
+
+        private String ecw;
+
+        private String standardWeight;
+
+        private String weightControl;
+
+        private String fatControl;
+
+        private String muscleControl;
+
+        private String liverRisk;
+
+        private String asmi;
+
+        private String trFat;
+
+        private String laFat;
+
+        private String raFat;
+
+        private String llFat;
+
+        private String rlFat;
+
+        private String trWater;
+
+        private String laWater;
+
+        private String raWater;
+
+        private String llWater;
+
+        private String rlWater;
+
+        private String trMuscle;
+
+        private String laMuscle;
+
+        private String raMuscle;
+
+        private String llMuscle;
+
+        private String rlMuscle;
+
+        private String trBone;
+
+        private String laBone;
+
+        private String raBone;
+
+        private String llBone;
+
+        private String rlBone;
+
+        private String weightMax;
+
+        private String weightMin;
+
+        private String fatMax;
+
+        private String fatMin;
+
+        private String boneMax;
+
+        private String boneMin;
+
+        private String proteinMax;
+
+        private String proteinMin;
+
+        private String waterMax;
+
+        private String waterMin;
+
+        private String muscleMax;
+
+        private String muscleMin;
+
+        private String smmMax;
+
+        private String smmMin;
+
+        private String pbfMax;
+
+        private String pbfMin;
+
+        private String bmiMax;
+
+        private String bmiMin;
+
+        private String whrMax;
+
+        private String whrMin;
+
+        private String edemaMax;
+
+        private String edemaMin;
+
+        private String vfiMax;
+
+        private String vfiMin;
+
+        private String diagnosis;
+
+    }
+
+    @Data
+    @ApiModel("报告图片")
+    public static class ReportImageDto{
+        private Long id;
+
+        private String patientId;
+
+        private String fileName;
+
+        private String filePath;
+    }
+
+    @Data
+    public static class Query{
+        private String from;
+        private String memberid;
+    }
+}
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/ScreeningDto.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/ScreeningDto.java
new file mode 100644
index 00000000..d2d469b6
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/dto/ScreeningDto.java
@@ -0,0 +1,411 @@
+package com.acupuncture.system.domain.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author zzc
+ * @date 2023-09-25  17:05
+ * @description TODO
+ */
+public class ScreeningDto {
+
+    @Data
+    public static class Query {
+        private String keywords;
+        @ApiModelProperty("姓名")
+        private String name;
+        @ApiModelProperty("性别")
+        private Byte gender;
+        @ApiModelProperty("身份证号")
+        private String idCard;
+        @ApiModelProperty("手机号")
+        private String phone;
+
+        @ApiModelProperty("0正常 1低危 2中危 3高危")
+        private Byte dangeStatus;
+
+        private Integer startAge;
+
+        private Integer endAge;
+        private Long hospitalId;
+
+        private String province;
+        private String city;
+        private String county;
+
+        private String hospitalName;
+
+        @ApiModelProperty("0卒中筛查  33认知筛查")
+        private Byte type = 0;
+
+        @ApiModelProperty("认知筛查结果")
+        private Integer rzscResult;
+
+        @ApiModelProperty("是否脱敏 (0:未脱敏 1脱敏)")
+        private Byte isDesensitization;
+
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+        private Date startTime;
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+        private Date endTime;
+    }
+
+    @Data
+    @ApiModel("MessageReportDto - Report")
+    public static class Report {
+        @ApiModelProperty("条码号")
+        private String barcode;
+        @JsonProperty("Datas")
+        @ApiModelProperty("检测结果,8+2 信息,结果解读、处理意见")
+        private DataDto Datas;
+        @JsonProperty("Sample")
+        @ApiModelProperty("返回样本信息")
+        private SampleDto Sample;
+
+        @Data
+        public static class SampleDto {
+            private String id;
+            @JsonProperty("Hospital")
+            private String Hospital;
+            @JsonProperty("PagName")
+            private String PagName;
+            @JsonProperty("Name")
+            private String Name;
+            @JsonProperty("Sex")
+            private String Sex;
+            @JsonProperty("Age")
+            private String Age;
+            @JsonProperty("HospitalNum")
+            private String HospitalNum;
+            @JsonProperty("MedicalNumber")
+            private String MedicalNumber;
+            @JsonProperty("HospitalSno")
+            private String HospitalSno;
+            @JsonProperty("SubmitDoctor")
+            private String SubmitDoctor;
+            @JsonProperty("Department")
+            private String Department;
+            @JsonProperty("ExaminerDoctor")
+            private String ExaminerDoctor;
+            @JsonProperty("AuditStaffDoctor")
+            private String AuditStaffDoctor;
+            @JsonProperty("BedNo")
+            private String BedNo;
+            @JsonProperty("Diagnosis")
+            private String Diagnosis;
+            @JsonProperty("SampleNo")
+            private String SampleNo;
+            @JsonProperty("SampleType")
+            private String SampleType;
+            @JsonProperty("BarCode")
+            private String BarCode;
+            @JsonProperty("CreateDate")
+            private String CreateDate;
+            @JsonProperty("SubmitTime")
+            private String SubmitTime;
+            @JsonProperty("Remarks")
+            private String Remarks;
+            @JsonProperty("RiskScore")
+            private String RiskScore;
+            @JsonProperty("Proposal")
+            private String Proposal;
+            @JsonProperty("EmptyStomach")
+            private String EmptyStomach;
+
+        }
+
+        @Data
+        public static class DataDto {
+            @JsonProperty("AssessItem")
+            private List<AssessItemDto> AssessItem;
+            @JsonProperty("ItemResult")
+            private List<ItemResultDto> ItemResult;
+            @JsonProperty("Resultpers")
+            private List<ResultpersDto> Resultpers;
+            @JsonProperty("Mademessages")
+            private List<MademessagesDto> Mademessages;
+
+            @Data
+            public static class AssessItemDto {
+                private String seqNo;
+
+                private String name;
+
+                private String resultYes;
+            }
+
+
+            @Data
+            public static class ItemResultDto {
+                private String itemName;
+
+                private String result;
+
+                private String rangeMin;
+
+                private String rangeMax;
+
+            }
+
+            @Data
+            public static class ResultpersDto {
+                private String sno;
+
+                private String scontent;
+            }
+
+            @Data
+            public static class MademessagesDto {
+                private String sno;
+
+                private String scontent;
+            }
+
+        }
+    }
+
+    @Data
+    @ApiModel("提交高危筛查问卷")
+    public static class SubmitScreeningQuestionnaire {
+        @NotNull(message = "问卷详情id不能为空")
+        @ApiModelProperty("问卷详情id")
+        private Long detailId;
+    }
+
+    @Data
+    @ApiModel("MessageReportDto - AssetsEvaluation")
+    public static class AssetsEvaluation {
+        @ApiModelProperty("条码号")
+        @JsonProperty("barCode")
+        private String barCode;
+        @JsonProperty("PictureBit")
+        @NotNull(message = "图片Base64不能为空")
+        @ApiModelProperty("图片 采用 base64 算法转换成 string")
+        private String PictureBit;
+        @JsonProperty("PictureName")
+        @ApiModelProperty("图片名称")
+        @NotNull(message = "图片名称不能为空")
+        private String PictureName;
+    }
+
+
+    @Data
+    @ApiModel("查询地区")
+    public static class QueryArea {
+        @ApiModelProperty("地区id")
+        private Long id = 0L;
+    }
+
+    @Data
+    @ApiModel("查询筛查信息详情")
+    public static class QueryQuestionnaire {
+        @NotNull(message = "请选择筛查")
+        @ApiModelProperty("筛查id")
+        private Long id;
+        private Long userId;
+    }
+
+    @Data
+    @ApiModel("保存筛查信息")
+    public static class SaveQuestionnaire {
+        @NotNull(message = "筛查详情id不能为空")
+        @ApiModelProperty("筛查详情id")
+        private Long detailId;
+        @ApiModelProperty("题目code")
+        private String code;
+        @ApiModelProperty("答案")
+        private String answer;
+        private Long userId;
+    }
+
+    @Data
+    @ApiModel("筛查随访")
+    public static class ScreenFollow {
+        @NotNull(message = "筛查详情id不能为空")
+        @ApiModelProperty("筛查详情id")
+        private Long patientId;
+        @ApiModelProperty("状态(0未随访 1已随访)")
+        private Byte status;
+    }
+
+    @Data
+    @ApiModel("查询是否填写")
+    public static class QueryNotWrite {
+        @ApiModelProperty("项目id")
+        private Long projectId;
+        @ApiModelProperty("时间")
+        private Long time = System.currentTimeMillis();
+        private Long userId;
+    }
+
+    @Data
+    @ApiModel("提交筛查")
+    public static class SubmitQuestionnaire {
+        @NotNull(message = "筛查详情id不能为空")
+        @ApiModelProperty("筛查详情id")
+        private Long detailId;
+        @NotNull(message = "医院名称不能为空")
+        @ApiModelProperty("医院名称")
+        private String name;
+        @NotNull(message = "部门名称不能为空")
+        @ApiModelProperty("部门名称")
+        private String departmentName;
+        @NotNull(message = "职位名称不能为空")
+        @ApiModelProperty("职位名称")
+        private String positionName;
+        @NotNull(message = "提交人姓名不能为空")
+        @ApiModelProperty("提交人姓名")
+        private String submitter;
+        @NotNull(message = "提交人手机号不能为空")
+        @ApiModelProperty("提交人手机号")
+        private String phone;
+        private Long userId;
+    }
+
+    @Data
+    @ApiModel("创建筛查详情")
+    public static class CreateDetail {
+        @NotNull(message = "筛查类型不能为空")
+        @ApiModelProperty("筛查类型(0-卒中 1-高危筛查)")
+        private Byte type;
+        private Long userId;
+        private Long tenantId;
+
+        private Long centerId;
+    }
+
+    @Data
+    @ApiModel("判断是否提交了筛查-请求")
+    public static class Export {
+        @ApiModelProperty("筛查id")
+        private Long qid;
+        @ApiModelProperty("开始时间 年-月-日 时:分:秒")
+        private String startTime;
+        @ApiModelProperty("结束时间 年-月-日 时:分:秒")
+        private String endTime;
+    }
+
+    @Data
+    @ApiModel("判断是否提交了筛查-请求")
+    public static class ExportByArea extends Export {
+        @ApiModelProperty("城市名称: 运城市,太原市...")
+        @NotBlank
+        private String area;
+    }
+
+    @Data
+    @ApiModel("查询医院列表-请求")
+    public static class QueryHospitalList {
+        @ApiModelProperty("地区")
+        private String area;
+        @ApiModelProperty("名字")
+        private String name;
+    }
+
+    @Data
+    @ApiModel("后台查看高危筛查信息")
+    public static class BackQueryScreening {
+        @ApiModelProperty("第几页")
+        @Min(value = 1)
+        private int pageNum = 1;
+        @ApiModelProperty("每页多少条")
+        @Min(value = 1)
+        @Max(value = 100)
+        private int pageSize = 10;
+
+        @ApiModelProperty("身份证号")
+        private String idCard;
+        @ApiModelProperty("姓名")
+        private String name;
+        @ApiModelProperty("性别 0女 1男")
+        private String sex;
+        @ApiModelProperty("出生日期筛选--开始")
+        private String startTime;
+        @ApiModelProperty("出生日期筛选--结束")
+        private String endTime;
+        @ApiModelProperty("年龄")
+        private String age;
+        @ApiModelProperty("手机号")
+        private String phone;
+
+
+        @ApiModelProperty("高血压 0没有 1有")
+        private Byte hypertension;
+        @ApiModelProperty("血脂 0没有 1有")
+        private Byte bloodFat;
+        @ApiModelProperty("糖尿病 0没有 1有")
+        private Byte diabetes;
+        @ApiModelProperty("心房颤动 0没有 1有")
+        private Byte fibrillation;
+        @ApiModelProperty("吸烟 0没有 1有")
+        private Byte smoke;
+        @ApiModelProperty("体重 0正常 1超重")
+        private Byte weight;
+        @ApiModelProperty("运动 0正常 1缺乏")
+        private Byte sports;
+        @ApiModelProperty("卒中家族史 0没有 1有")
+        private Byte acupunctureFamily;
+        @ApiModelProperty("脑卒中病史 0没有 1有")
+        private Byte cerebralStroke;
+        @ApiModelProperty("脑缺血病史 0没有 1有")
+        private Byte cerebralIschemia;
+        @ApiModelProperty("危险等级 0正常 1高危 2中危 3低危")
+        private Byte type;
+        @ApiModelProperty("健康跟踪 0待处理 1已联系 2已就诊")
+        private Byte healthTracking;
+    }
+
+
+    @Data
+    @ApiModel("后台查找筛查填写信息列表-返回")
+    public static class BackQueryQuestionnaire {
+        @ApiModelProperty("地区信息 市/县")
+        private String county;
+        @ApiModelProperty("医院名称")
+        private String hospitalName;
+        @ApiModelProperty("医院等级")
+        private String hospitalLevel;
+        @ApiModelProperty("联系人")
+        private String contacts;
+        @ApiModelProperty("手机号")
+        private String phone;
+        @ApiModelProperty("是否为脑防委高级卒中中心")
+        private String cuzhong;
+        @ApiModelProperty("是否为脑防委卒中防治中心")
+        private String fangzhi;
+        @ApiModelProperty("是否为山西省溶栓2.0版地图医院")
+        private String hosMap;
+        @ApiModelProperty("是否开展血管内治疗")
+        private String xgzl;
+        @ApiModelProperty("提交时间开始")
+        private Long submitTimeStart;
+        @ApiModelProperty("提交时间结束")
+        private Long submitTimeEnd;
+        @ApiModelProperty("第几页")
+        @Min(value = 1)
+        private int pageNum = 1;
+        @ApiModelProperty("每页多少条")
+        @Min(value = 1)
+        @Max(value = 100)
+        private int pageSize = 10;
+    }
+
+    @Data
+    @ApiModel("查询首页按钮详情")
+    public static class QueryDto {
+        private Long userId;
+        private String phone;
+        private String name;
+    }
+}
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/AmsScreenWxQrCode.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/AmsScreenWxQrCode.java
new file mode 100644
index 00000000..91136a9a
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/AmsScreenWxQrCode.java
@@ -0,0 +1,172 @@
+package com.acupuncture.system.domain.po;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class AmsScreenWxQrCode implements Serializable {
+    private Long id;
+
+    private String url;
+
+    private String path;
+
+    private Long tenantId;
+
+    private String remark;
+
+    private String createBy;
+
+    private Date createTime;
+
+    private String updateBy;
+
+    private Date updateTime;
+
+    private Byte delFlag;
+
+    private String contacts;
+
+    private String phone;
+
+    private String address;
+
+    private Long centerId;
+
+    private static final long serialVersionUID = 1L;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url == null ? null : url.trim();
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path == null ? null : path.trim();
+    }
+
+    public Long getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(Long tenantId) {
+        this.tenantId = tenantId;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark == null ? null : remark.trim();
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy == null ? null : createBy.trim();
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy == null ? null : updateBy.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Byte getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(Byte delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public String getContacts() {
+        return contacts;
+    }
+
+    public void setContacts(String contacts) {
+        this.contacts = contacts == null ? null : contacts.trim();
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone == null ? null : phone.trim();
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address == null ? null : address.trim();
+    }
+
+    public Long getCenterId() {
+        return centerId;
+    }
+
+    public void setCenterId(Long centerId) {
+        this.centerId = centerId;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", url=").append(url);
+        sb.append(", path=").append(path);
+        sb.append(", tenantId=").append(tenantId);
+        sb.append(", remark=").append(remark);
+        sb.append(", createBy=").append(createBy);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", updateBy=").append(updateBy);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", delFlag=").append(delFlag);
+        sb.append(", contacts=").append(contacts);
+        sb.append(", phone=").append(phone);
+        sb.append(", address=").append(address);
+        sb.append(", centerId=").append(centerId);
+        sb.append("]");
+        return sb.toString();
+    }
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/AmsScreenWxQrCodeExample.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/AmsScreenWxQrCodeExample.java
new file mode 100644
index 00000000..2babc3df
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/AmsScreenWxQrCodeExample.java
@@ -0,0 +1,1121 @@
+package com.acupuncture.system.domain.po;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class AmsScreenWxQrCodeExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public AmsScreenWxQrCodeExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(Long value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Long value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Long value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Long value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Long value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<Long> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<Long> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(Long value1, Long value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(Long value1, Long value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIsNull() {
+            addCriterion("url is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIsNotNull() {
+            addCriterion("url is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlEqualTo(String value) {
+            addCriterion("url =", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotEqualTo(String value) {
+            addCriterion("url <>", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlGreaterThan(String value) {
+            addCriterion("url >", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlGreaterThanOrEqualTo(String value) {
+            addCriterion("url >=", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLessThan(String value) {
+            addCriterion("url <", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLessThanOrEqualTo(String value) {
+            addCriterion("url <=", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLike(String value) {
+            addCriterion("url like", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotLike(String value) {
+            addCriterion("url not like", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIn(List<String> values) {
+            addCriterion("url in", values, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotIn(List<String> values) {
+            addCriterion("url not in", values, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlBetween(String value1, String value2) {
+            addCriterion("url between", value1, value2, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotBetween(String value1, String value2) {
+            addCriterion("url not between", value1, value2, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andPathIsNull() {
+            addCriterion("path is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPathIsNotNull() {
+            addCriterion("path is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPathEqualTo(String value) {
+            addCriterion("path =", value, "path");
+            return (Criteria) this;
+        }
+
+        public Criteria andPathNotEqualTo(String value) {
+            addCriterion("path <>", value, "path");
+            return (Criteria) this;
+        }
+
+        public Criteria andPathGreaterThan(String value) {
+            addCriterion("path >", value, "path");
+            return (Criteria) this;
+        }
+
+        public Criteria andPathGreaterThanOrEqualTo(String value) {
+            addCriterion("path >=", value, "path");
+            return (Criteria) this;
+        }
+
+        public Criteria andPathLessThan(String value) {
+            addCriterion("path <", value, "path");
+            return (Criteria) this;
+        }
+
+        public Criteria andPathLessThanOrEqualTo(String value) {
+            addCriterion("path <=", value, "path");
+            return (Criteria) this;
+        }
+
+        public Criteria andPathLike(String value) {
+            addCriterion("path like", value, "path");
+            return (Criteria) this;
+        }
+
+        public Criteria andPathNotLike(String value) {
+            addCriterion("path not like", value, "path");
+            return (Criteria) this;
+        }
+
+        public Criteria andPathIn(List<String> values) {
+            addCriterion("path in", values, "path");
+            return (Criteria) this;
+        }
+
+        public Criteria andPathNotIn(List<String> values) {
+            addCriterion("path not in", values, "path");
+            return (Criteria) this;
+        }
+
+        public Criteria andPathBetween(String value1, String value2) {
+            addCriterion("path between", value1, value2, "path");
+            return (Criteria) this;
+        }
+
+        public Criteria andPathNotBetween(String value1, String value2) {
+            addCriterion("path not between", value1, value2, "path");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdIsNull() {
+            addCriterion("tenant_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdIsNotNull() {
+            addCriterion("tenant_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdEqualTo(Long value) {
+            addCriterion("tenant_id =", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdNotEqualTo(Long value) {
+            addCriterion("tenant_id <>", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdGreaterThan(Long value) {
+            addCriterion("tenant_id >", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("tenant_id >=", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdLessThan(Long value) {
+            addCriterion("tenant_id <", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdLessThanOrEqualTo(Long value) {
+            addCriterion("tenant_id <=", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdIn(List<Long> values) {
+            addCriterion("tenant_id in", values, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdNotIn(List<Long> values) {
+            addCriterion("tenant_id not in", values, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdBetween(Long value1, Long value2) {
+            addCriterion("tenant_id between", value1, value2, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdNotBetween(Long value1, Long value2) {
+            addCriterion("tenant_id not between", value1, value2, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIsNull() {
+            addCriterion("remark is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIsNotNull() {
+            addCriterion("remark is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkEqualTo(String value) {
+            addCriterion("remark =", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotEqualTo(String value) {
+            addCriterion("remark <>", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkGreaterThan(String value) {
+            addCriterion("remark >", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+            addCriterion("remark >=", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLessThan(String value) {
+            addCriterion("remark <", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLessThanOrEqualTo(String value) {
+            addCriterion("remark <=", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLike(String value) {
+            addCriterion("remark like", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotLike(String value) {
+            addCriterion("remark not like", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIn(List<String> values) {
+            addCriterion("remark in", values, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotIn(List<String> values) {
+            addCriterion("remark not in", values, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkBetween(String value1, String value2) {
+            addCriterion("remark between", value1, value2, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotBetween(String value1, String value2) {
+            addCriterion("remark not between", value1, value2, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByIsNull() {
+            addCriterion("create_by is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByIsNotNull() {
+            addCriterion("create_by is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByEqualTo(String value) {
+            addCriterion("create_by =", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotEqualTo(String value) {
+            addCriterion("create_by <>", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByGreaterThan(String value) {
+            addCriterion("create_by >", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByGreaterThanOrEqualTo(String value) {
+            addCriterion("create_by >=", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByLessThan(String value) {
+            addCriterion("create_by <", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByLessThanOrEqualTo(String value) {
+            addCriterion("create_by <=", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByLike(String value) {
+            addCriterion("create_by like", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotLike(String value) {
+            addCriterion("create_by not like", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByIn(List<String> values) {
+            addCriterion("create_by in", values, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotIn(List<String> values) {
+            addCriterion("create_by not in", values, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByBetween(String value1, String value2) {
+            addCriterion("create_by between", value1, value2, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotBetween(String value1, String value2) {
+            addCriterion("create_by not between", value1, value2, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNull() {
+            addCriterion("create_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNotNull() {
+            addCriterion("create_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeEqualTo(Date value) {
+            addCriterion("create_time =", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotEqualTo(Date value) {
+            addCriterion("create_time <>", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThan(Date value) {
+            addCriterion("create_time >", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("create_time >=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThan(Date value) {
+            addCriterion("create_time <", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("create_time <=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIn(List<Date> values) {
+            addCriterion("create_time in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotIn(List<Date> values) {
+            addCriterion("create_time not in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeBetween(Date value1, Date value2) {
+            addCriterion("create_time between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("create_time not between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByIsNull() {
+            addCriterion("update_by is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByIsNotNull() {
+            addCriterion("update_by is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByEqualTo(String value) {
+            addCriterion("update_by =", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotEqualTo(String value) {
+            addCriterion("update_by <>", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByGreaterThan(String value) {
+            addCriterion("update_by >", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByGreaterThanOrEqualTo(String value) {
+            addCriterion("update_by >=", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByLessThan(String value) {
+            addCriterion("update_by <", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByLessThanOrEqualTo(String value) {
+            addCriterion("update_by <=", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByLike(String value) {
+            addCriterion("update_by like", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotLike(String value) {
+            addCriterion("update_by not like", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByIn(List<String> values) {
+            addCriterion("update_by in", values, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotIn(List<String> values) {
+            addCriterion("update_by not in", values, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByBetween(String value1, String value2) {
+            addCriterion("update_by between", value1, value2, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotBetween(String value1, String value2) {
+            addCriterion("update_by not between", value1, value2, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNull() {
+            addCriterion("update_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNotNull() {
+            addCriterion("update_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeEqualTo(Date value) {
+            addCriterion("update_time =", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotEqualTo(Date value) {
+            addCriterion("update_time <>", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThan(Date value) {
+            addCriterion("update_time >", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("update_time >=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThan(Date value) {
+            addCriterion("update_time <", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("update_time <=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIn(List<Date> values) {
+            addCriterion("update_time in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotIn(List<Date> values) {
+            addCriterion("update_time not in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeBetween(Date value1, Date value2) {
+            addCriterion("update_time between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("update_time not between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagIsNull() {
+            addCriterion("del_flag is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagIsNotNull() {
+            addCriterion("del_flag is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagEqualTo(Byte value) {
+            addCriterion("del_flag =", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagNotEqualTo(Byte value) {
+            addCriterion("del_flag <>", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagGreaterThan(Byte value) {
+            addCriterion("del_flag >", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagGreaterThanOrEqualTo(Byte value) {
+            addCriterion("del_flag >=", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagLessThan(Byte value) {
+            addCriterion("del_flag <", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagLessThanOrEqualTo(Byte value) {
+            addCriterion("del_flag <=", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagIn(List<Byte> values) {
+            addCriterion("del_flag in", values, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagNotIn(List<Byte> values) {
+            addCriterion("del_flag not in", values, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagBetween(Byte value1, Byte value2) {
+            addCriterion("del_flag between", value1, value2, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagNotBetween(Byte value1, Byte value2) {
+            addCriterion("del_flag not between", value1, value2, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andContactsIsNull() {
+            addCriterion("contacts is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andContactsIsNotNull() {
+            addCriterion("contacts is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andContactsEqualTo(String value) {
+            addCriterion("contacts =", value, "contacts");
+            return (Criteria) this;
+        }
+
+        public Criteria andContactsNotEqualTo(String value) {
+            addCriterion("contacts <>", value, "contacts");
+            return (Criteria) this;
+        }
+
+        public Criteria andContactsGreaterThan(String value) {
+            addCriterion("contacts >", value, "contacts");
+            return (Criteria) this;
+        }
+
+        public Criteria andContactsGreaterThanOrEqualTo(String value) {
+            addCriterion("contacts >=", value, "contacts");
+            return (Criteria) this;
+        }
+
+        public Criteria andContactsLessThan(String value) {
+            addCriterion("contacts <", value, "contacts");
+            return (Criteria) this;
+        }
+
+        public Criteria andContactsLessThanOrEqualTo(String value) {
+            addCriterion("contacts <=", value, "contacts");
+            return (Criteria) this;
+        }
+
+        public Criteria andContactsLike(String value) {
+            addCriterion("contacts like", value, "contacts");
+            return (Criteria) this;
+        }
+
+        public Criteria andContactsNotLike(String value) {
+            addCriterion("contacts not like", value, "contacts");
+            return (Criteria) this;
+        }
+
+        public Criteria andContactsIn(List<String> values) {
+            addCriterion("contacts in", values, "contacts");
+            return (Criteria) this;
+        }
+
+        public Criteria andContactsNotIn(List<String> values) {
+            addCriterion("contacts not in", values, "contacts");
+            return (Criteria) this;
+        }
+
+        public Criteria andContactsBetween(String value1, String value2) {
+            addCriterion("contacts between", value1, value2, "contacts");
+            return (Criteria) this;
+        }
+
+        public Criteria andContactsNotBetween(String value1, String value2) {
+            addCriterion("contacts not between", value1, value2, "contacts");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneIsNull() {
+            addCriterion("phone is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneIsNotNull() {
+            addCriterion("phone is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneEqualTo(String value) {
+            addCriterion("phone =", value, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneNotEqualTo(String value) {
+            addCriterion("phone <>", value, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneGreaterThan(String value) {
+            addCriterion("phone >", value, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneGreaterThanOrEqualTo(String value) {
+            addCriterion("phone >=", value, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneLessThan(String value) {
+            addCriterion("phone <", value, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneLessThanOrEqualTo(String value) {
+            addCriterion("phone <=", value, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneLike(String value) {
+            addCriterion("phone like", value, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneNotLike(String value) {
+            addCriterion("phone not like", value, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneIn(List<String> values) {
+            addCriterion("phone in", values, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneNotIn(List<String> values) {
+            addCriterion("phone not in", values, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneBetween(String value1, String value2) {
+            addCriterion("phone between", value1, value2, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneNotBetween(String value1, String value2) {
+            addCriterion("phone not between", value1, value2, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andAddressIsNull() {
+            addCriterion("address is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAddressIsNotNull() {
+            addCriterion("address is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAddressEqualTo(String value) {
+            addCriterion("address =", value, "address");
+            return (Criteria) this;
+        }
+
+        public Criteria andAddressNotEqualTo(String value) {
+            addCriterion("address <>", value, "address");
+            return (Criteria) this;
+        }
+
+        public Criteria andAddressGreaterThan(String value) {
+            addCriterion("address >", value, "address");
+            return (Criteria) this;
+        }
+
+        public Criteria andAddressGreaterThanOrEqualTo(String value) {
+            addCriterion("address >=", value, "address");
+            return (Criteria) this;
+        }
+
+        public Criteria andAddressLessThan(String value) {
+            addCriterion("address <", value, "address");
+            return (Criteria) this;
+        }
+
+        public Criteria andAddressLessThanOrEqualTo(String value) {
+            addCriterion("address <=", value, "address");
+            return (Criteria) this;
+        }
+
+        public Criteria andAddressLike(String value) {
+            addCriterion("address like", value, "address");
+            return (Criteria) this;
+        }
+
+        public Criteria andAddressNotLike(String value) {
+            addCriterion("address not like", value, "address");
+            return (Criteria) this;
+        }
+
+        public Criteria andAddressIn(List<String> values) {
+            addCriterion("address in", values, "address");
+            return (Criteria) this;
+        }
+
+        public Criteria andAddressNotIn(List<String> values) {
+            addCriterion("address not in", values, "address");
+            return (Criteria) this;
+        }
+
+        public Criteria andAddressBetween(String value1, String value2) {
+            addCriterion("address between", value1, value2, "address");
+            return (Criteria) this;
+        }
+
+        public Criteria andAddressNotBetween(String value1, String value2) {
+            addCriterion("address not between", value1, value2, "address");
+            return (Criteria) this;
+        }
+
+        public Criteria andCenterIdIsNull() {
+            addCriterion("center_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCenterIdIsNotNull() {
+            addCriterion("center_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCenterIdEqualTo(Long value) {
+            addCriterion("center_id =", value, "centerId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCenterIdNotEqualTo(Long value) {
+            addCriterion("center_id <>", value, "centerId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCenterIdGreaterThan(Long value) {
+            addCriterion("center_id >", value, "centerId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCenterIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("center_id >=", value, "centerId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCenterIdLessThan(Long value) {
+            addCriterion("center_id <", value, "centerId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCenterIdLessThanOrEqualTo(Long value) {
+            addCriterion("center_id <=", value, "centerId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCenterIdIn(List<Long> values) {
+            addCriterion("center_id in", values, "centerId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCenterIdNotIn(List<Long> values) {
+            addCriterion("center_id not in", values, "centerId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCenterIdBetween(Long value1, Long value2) {
+            addCriterion("center_id between", value1, value2, "centerId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCenterIdNotBetween(Long value1, Long value2) {
+            addCriterion("center_id not between", value1, value2, "centerId");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreening.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreening.java
new file mode 100644
index 00000000..36c7dccd
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreening.java
@@ -0,0 +1,139 @@
+package com.acupuncture.system.domain.po;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class ScrScreening implements Serializable {
+    private Long id;
+
+    private String questionnaireName;
+
+    private Long startTime;
+
+    private Long endTime;
+
+    private Byte type;
+
+    private Date createdAt;
+
+    private Date updatedAt;
+
+    private Byte recStatus;
+
+    private Long writeStartTime;
+
+    private Long writeEndTime;
+
+    private String dataScope;
+
+    private static final long serialVersionUID = 1L;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getQuestionnaireName() {
+        return questionnaireName;
+    }
+
+    public void setQuestionnaireName(String questionnaireName) {
+        this.questionnaireName = questionnaireName == null ? null : questionnaireName.trim();
+    }
+
+    public Long getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Long startTime) {
+        this.startTime = startTime;
+    }
+
+    public Long getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Long endTime) {
+        this.endTime = endTime;
+    }
+
+    public Byte getType() {
+        return type;
+    }
+
+    public void setType(Byte type) {
+        this.type = type;
+    }
+
+    public Date getCreatedAt() {
+        return createdAt;
+    }
+
+    public void setCreatedAt(Date createdAt) {
+        this.createdAt = createdAt;
+    }
+
+    public Date getUpdatedAt() {
+        return updatedAt;
+    }
+
+    public void setUpdatedAt(Date updatedAt) {
+        this.updatedAt = updatedAt;
+    }
+
+    public Byte getRecStatus() {
+        return recStatus;
+    }
+
+    public void setRecStatus(Byte recStatus) {
+        this.recStatus = recStatus;
+    }
+
+    public Long getWriteStartTime() {
+        return writeStartTime;
+    }
+
+    public void setWriteStartTime(Long writeStartTime) {
+        this.writeStartTime = writeStartTime;
+    }
+
+    public Long getWriteEndTime() {
+        return writeEndTime;
+    }
+
+    public void setWriteEndTime(Long writeEndTime) {
+        this.writeEndTime = writeEndTime;
+    }
+
+    public String getDataScope() {
+        return dataScope;
+    }
+
+    public void setDataScope(String dataScope) {
+        this.dataScope = dataScope == null ? null : dataScope.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", questionnaireName=").append(questionnaireName);
+        sb.append(", startTime=").append(startTime);
+        sb.append(", endTime=").append(endTime);
+        sb.append(", type=").append(type);
+        sb.append(", createdAt=").append(createdAt);
+        sb.append(", updatedAt=").append(updatedAt);
+        sb.append(", recStatus=").append(recStatus);
+        sb.append(", writeStartTime=").append(writeStartTime);
+        sb.append(", writeEndTime=").append(writeEndTime);
+        sb.append(", dataScope=").append(dataScope);
+        sb.append("]");
+        return sb.toString();
+    }
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningDetail.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningDetail.java
new file mode 100644
index 00000000..89fa390b
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningDetail.java
@@ -0,0 +1,95 @@
+package com.acupuncture.system.domain.po;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class ScrScreeningDetail implements Serializable {
+    private Long id;
+
+    private Long recordId;
+
+    private String questionCode;
+
+    private String answer;
+
+    private Date createdAt;
+
+    private Date updatedAt;
+
+    private Byte delFlag;
+
+    private static final long serialVersionUID = 1L;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getRecordId() {
+        return recordId;
+    }
+
+    public void setRecordId(Long recordId) {
+        this.recordId = recordId;
+    }
+
+    public String getQuestionCode() {
+        return questionCode;
+    }
+
+    public void setQuestionCode(String questionCode) {
+        this.questionCode = questionCode == null ? null : questionCode.trim();
+    }
+
+    public String getAnswer() {
+        return answer;
+    }
+
+    public void setAnswer(String answer) {
+        this.answer = answer == null ? null : answer.trim();
+    }
+
+    public Date getCreatedAt() {
+        return createdAt;
+    }
+
+    public void setCreatedAt(Date createdAt) {
+        this.createdAt = createdAt;
+    }
+
+    public Date getUpdatedAt() {
+        return updatedAt;
+    }
+
+    public void setUpdatedAt(Date updatedAt) {
+        this.updatedAt = updatedAt;
+    }
+
+    public Byte getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(Byte delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", recordId=").append(recordId);
+        sb.append(", questionCode=").append(questionCode);
+        sb.append(", answer=").append(answer);
+        sb.append(", createdAt=").append(createdAt);
+        sb.append(", updatedAt=").append(updatedAt);
+        sb.append(", delFlag=").append(delFlag);
+        sb.append("]");
+        return sb.toString();
+    }
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningDetailExample.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningDetailExample.java
new file mode 100644
index 00000000..7bbaf2a2
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningDetailExample.java
@@ -0,0 +1,641 @@
+package com.acupuncture.system.domain.po;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class ScrScreeningDetailExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public ScrScreeningDetailExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(Long value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Long value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Long value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Long value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Long value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<Long> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<Long> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(Long value1, Long value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(Long value1, Long value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdIsNull() {
+            addCriterion("record_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdIsNotNull() {
+            addCriterion("record_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdEqualTo(Long value) {
+            addCriterion("record_id =", value, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdNotEqualTo(Long value) {
+            addCriterion("record_id <>", value, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdGreaterThan(Long value) {
+            addCriterion("record_id >", value, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("record_id >=", value, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdLessThan(Long value) {
+            addCriterion("record_id <", value, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdLessThanOrEqualTo(Long value) {
+            addCriterion("record_id <=", value, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdIn(List<Long> values) {
+            addCriterion("record_id in", values, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdNotIn(List<Long> values) {
+            addCriterion("record_id not in", values, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdBetween(Long value1, Long value2) {
+            addCriterion("record_id between", value1, value2, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdNotBetween(Long value1, Long value2) {
+            addCriterion("record_id not between", value1, value2, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionCodeIsNull() {
+            addCriterion("question_code is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionCodeIsNotNull() {
+            addCriterion("question_code is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionCodeEqualTo(String value) {
+            addCriterion("question_code =", value, "questionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionCodeNotEqualTo(String value) {
+            addCriterion("question_code <>", value, "questionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionCodeGreaterThan(String value) {
+            addCriterion("question_code >", value, "questionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionCodeGreaterThanOrEqualTo(String value) {
+            addCriterion("question_code >=", value, "questionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionCodeLessThan(String value) {
+            addCriterion("question_code <", value, "questionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionCodeLessThanOrEqualTo(String value) {
+            addCriterion("question_code <=", value, "questionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionCodeLike(String value) {
+            addCriterion("question_code like", value, "questionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionCodeNotLike(String value) {
+            addCriterion("question_code not like", value, "questionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionCodeIn(List<String> values) {
+            addCriterion("question_code in", values, "questionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionCodeNotIn(List<String> values) {
+            addCriterion("question_code not in", values, "questionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionCodeBetween(String value1, String value2) {
+            addCriterion("question_code between", value1, value2, "questionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionCodeNotBetween(String value1, String value2) {
+            addCriterion("question_code not between", value1, value2, "questionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andAnswerIsNull() {
+            addCriterion("answer is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAnswerIsNotNull() {
+            addCriterion("answer is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAnswerEqualTo(String value) {
+            addCriterion("answer =", value, "answer");
+            return (Criteria) this;
+        }
+
+        public Criteria andAnswerNotEqualTo(String value) {
+            addCriterion("answer <>", value, "answer");
+            return (Criteria) this;
+        }
+
+        public Criteria andAnswerGreaterThan(String value) {
+            addCriterion("answer >", value, "answer");
+            return (Criteria) this;
+        }
+
+        public Criteria andAnswerGreaterThanOrEqualTo(String value) {
+            addCriterion("answer >=", value, "answer");
+            return (Criteria) this;
+        }
+
+        public Criteria andAnswerLessThan(String value) {
+            addCriterion("answer <", value, "answer");
+            return (Criteria) this;
+        }
+
+        public Criteria andAnswerLessThanOrEqualTo(String value) {
+            addCriterion("answer <=", value, "answer");
+            return (Criteria) this;
+        }
+
+        public Criteria andAnswerLike(String value) {
+            addCriterion("answer like", value, "answer");
+            return (Criteria) this;
+        }
+
+        public Criteria andAnswerNotLike(String value) {
+            addCriterion("answer not like", value, "answer");
+            return (Criteria) this;
+        }
+
+        public Criteria andAnswerIn(List<String> values) {
+            addCriterion("answer in", values, "answer");
+            return (Criteria) this;
+        }
+
+        public Criteria andAnswerNotIn(List<String> values) {
+            addCriterion("answer not in", values, "answer");
+            return (Criteria) this;
+        }
+
+        public Criteria andAnswerBetween(String value1, String value2) {
+            addCriterion("answer between", value1, value2, "answer");
+            return (Criteria) this;
+        }
+
+        public Criteria andAnswerNotBetween(String value1, String value2) {
+            addCriterion("answer not between", value1, value2, "answer");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtIsNull() {
+            addCriterion("created_at is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtIsNotNull() {
+            addCriterion("created_at is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtEqualTo(Date value) {
+            addCriterion("created_at =", value, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtNotEqualTo(Date value) {
+            addCriterion("created_at <>", value, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtGreaterThan(Date value) {
+            addCriterion("created_at >", value, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtGreaterThanOrEqualTo(Date value) {
+            addCriterion("created_at >=", value, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtLessThan(Date value) {
+            addCriterion("created_at <", value, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtLessThanOrEqualTo(Date value) {
+            addCriterion("created_at <=", value, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtIn(List<Date> values) {
+            addCriterion("created_at in", values, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtNotIn(List<Date> values) {
+            addCriterion("created_at not in", values, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtBetween(Date value1, Date value2) {
+            addCriterion("created_at between", value1, value2, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtNotBetween(Date value1, Date value2) {
+            addCriterion("created_at not between", value1, value2, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtIsNull() {
+            addCriterion("updated_at is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtIsNotNull() {
+            addCriterion("updated_at is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtEqualTo(Date value) {
+            addCriterion("updated_at =", value, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtNotEqualTo(Date value) {
+            addCriterion("updated_at <>", value, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtGreaterThan(Date value) {
+            addCriterion("updated_at >", value, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtGreaterThanOrEqualTo(Date value) {
+            addCriterion("updated_at >=", value, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtLessThan(Date value) {
+            addCriterion("updated_at <", value, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtLessThanOrEqualTo(Date value) {
+            addCriterion("updated_at <=", value, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtIn(List<Date> values) {
+            addCriterion("updated_at in", values, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtNotIn(List<Date> values) {
+            addCriterion("updated_at not in", values, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtBetween(Date value1, Date value2) {
+            addCriterion("updated_at between", value1, value2, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtNotBetween(Date value1, Date value2) {
+            addCriterion("updated_at not between", value1, value2, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagIsNull() {
+            addCriterion("del_flag is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagIsNotNull() {
+            addCriterion("del_flag is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagEqualTo(Byte value) {
+            addCriterion("del_flag =", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagNotEqualTo(Byte value) {
+            addCriterion("del_flag <>", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagGreaterThan(Byte value) {
+            addCriterion("del_flag >", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagGreaterThanOrEqualTo(Byte value) {
+            addCriterion("del_flag >=", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagLessThan(Byte value) {
+            addCriterion("del_flag <", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagLessThanOrEqualTo(Byte value) {
+            addCriterion("del_flag <=", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagIn(List<Byte> values) {
+            addCriterion("del_flag in", values, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagNotIn(List<Byte> values) {
+            addCriterion("del_flag not in", values, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagBetween(Byte value1, Byte value2) {
+            addCriterion("del_flag between", value1, value2, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagNotBetween(Byte value1, Byte value2) {
+            addCriterion("del_flag not between", value1, value2, "delFlag");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningDraw.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningDraw.java
new file mode 100644
index 00000000..e999b515
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningDraw.java
@@ -0,0 +1,128 @@
+package com.acupuncture.system.domain.po;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class ScrScreeningDraw implements Serializable {
+    private Long id;
+
+    private String recordId;
+
+    private String scaleId;
+
+    private Integer questionId;
+
+    private Integer url;
+
+    private String createBy;
+
+    private Date createTime;
+
+    private String updateBy;
+
+    private Date updateTime;
+
+    private String remark;
+
+    private static final long serialVersionUID = 1L;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getRecordId() {
+        return recordId;
+    }
+
+    public void setRecordId(String recordId) {
+        this.recordId = recordId == null ? null : recordId.trim();
+    }
+
+    public String getScaleId() {
+        return scaleId;
+    }
+
+    public void setScaleId(String scaleId) {
+        this.scaleId = scaleId == null ? null : scaleId.trim();
+    }
+
+    public Integer getQuestionId() {
+        return questionId;
+    }
+
+    public void setQuestionId(Integer questionId) {
+        this.questionId = questionId;
+    }
+
+    public Integer getUrl() {
+        return url;
+    }
+
+    public void setUrl(Integer url) {
+        this.url = url;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy == null ? null : createBy.trim();
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy == null ? null : updateBy.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark == null ? null : remark.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", recordId=").append(recordId);
+        sb.append(", scaleId=").append(scaleId);
+        sb.append(", questionId=").append(questionId);
+        sb.append(", url=").append(url);
+        sb.append(", createBy=").append(createBy);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", updateBy=").append(updateBy);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", remark=").append(remark);
+        sb.append("]");
+        return sb.toString();
+    }
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningDrawExample.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningDrawExample.java
new file mode 100644
index 00000000..ba1d123f
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningDrawExample.java
@@ -0,0 +1,851 @@
+package com.acupuncture.system.domain.po;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class ScrScreeningDrawExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public ScrScreeningDrawExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(Long value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Long value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Long value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Long value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Long value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<Long> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<Long> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(Long value1, Long value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(Long value1, Long value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdIsNull() {
+            addCriterion("record_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdIsNotNull() {
+            addCriterion("record_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdEqualTo(String value) {
+            addCriterion("record_id =", value, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdNotEqualTo(String value) {
+            addCriterion("record_id <>", value, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdGreaterThan(String value) {
+            addCriterion("record_id >", value, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdGreaterThanOrEqualTo(String value) {
+            addCriterion("record_id >=", value, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdLessThan(String value) {
+            addCriterion("record_id <", value, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdLessThanOrEqualTo(String value) {
+            addCriterion("record_id <=", value, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdLike(String value) {
+            addCriterion("record_id like", value, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdNotLike(String value) {
+            addCriterion("record_id not like", value, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdIn(List<String> values) {
+            addCriterion("record_id in", values, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdNotIn(List<String> values) {
+            addCriterion("record_id not in", values, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdBetween(String value1, String value2) {
+            addCriterion("record_id between", value1, value2, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecordIdNotBetween(String value1, String value2) {
+            addCriterion("record_id not between", value1, value2, "recordId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScaleIdIsNull() {
+            addCriterion("scale_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScaleIdIsNotNull() {
+            addCriterion("scale_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScaleIdEqualTo(String value) {
+            addCriterion("scale_id =", value, "scaleId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScaleIdNotEqualTo(String value) {
+            addCriterion("scale_id <>", value, "scaleId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScaleIdGreaterThan(String value) {
+            addCriterion("scale_id >", value, "scaleId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScaleIdGreaterThanOrEqualTo(String value) {
+            addCriterion("scale_id >=", value, "scaleId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScaleIdLessThan(String value) {
+            addCriterion("scale_id <", value, "scaleId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScaleIdLessThanOrEqualTo(String value) {
+            addCriterion("scale_id <=", value, "scaleId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScaleIdLike(String value) {
+            addCriterion("scale_id like", value, "scaleId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScaleIdNotLike(String value) {
+            addCriterion("scale_id not like", value, "scaleId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScaleIdIn(List<String> values) {
+            addCriterion("scale_id in", values, "scaleId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScaleIdNotIn(List<String> values) {
+            addCriterion("scale_id not in", values, "scaleId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScaleIdBetween(String value1, String value2) {
+            addCriterion("scale_id between", value1, value2, "scaleId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScaleIdNotBetween(String value1, String value2) {
+            addCriterion("scale_id not between", value1, value2, "scaleId");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionIdIsNull() {
+            addCriterion("question_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionIdIsNotNull() {
+            addCriterion("question_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionIdEqualTo(Integer value) {
+            addCriterion("question_id =", value, "questionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionIdNotEqualTo(Integer value) {
+            addCriterion("question_id <>", value, "questionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionIdGreaterThan(Integer value) {
+            addCriterion("question_id >", value, "questionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("question_id >=", value, "questionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionIdLessThan(Integer value) {
+            addCriterion("question_id <", value, "questionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionIdLessThanOrEqualTo(Integer value) {
+            addCriterion("question_id <=", value, "questionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionIdIn(List<Integer> values) {
+            addCriterion("question_id in", values, "questionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionIdNotIn(List<Integer> values) {
+            addCriterion("question_id not in", values, "questionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionIdBetween(Integer value1, Integer value2) {
+            addCriterion("question_id between", value1, value2, "questionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("question_id not between", value1, value2, "questionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIsNull() {
+            addCriterion("url is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIsNotNull() {
+            addCriterion("url is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlEqualTo(Integer value) {
+            addCriterion("url =", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotEqualTo(Integer value) {
+            addCriterion("url <>", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlGreaterThan(Integer value) {
+            addCriterion("url >", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlGreaterThanOrEqualTo(Integer value) {
+            addCriterion("url >=", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLessThan(Integer value) {
+            addCriterion("url <", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLessThanOrEqualTo(Integer value) {
+            addCriterion("url <=", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIn(List<Integer> values) {
+            addCriterion("url in", values, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotIn(List<Integer> values) {
+            addCriterion("url not in", values, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlBetween(Integer value1, Integer value2) {
+            addCriterion("url between", value1, value2, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotBetween(Integer value1, Integer value2) {
+            addCriterion("url not between", value1, value2, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByIsNull() {
+            addCriterion("create_by is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByIsNotNull() {
+            addCriterion("create_by is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByEqualTo(String value) {
+            addCriterion("create_by =", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotEqualTo(String value) {
+            addCriterion("create_by <>", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByGreaterThan(String value) {
+            addCriterion("create_by >", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByGreaterThanOrEqualTo(String value) {
+            addCriterion("create_by >=", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByLessThan(String value) {
+            addCriterion("create_by <", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByLessThanOrEqualTo(String value) {
+            addCriterion("create_by <=", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByLike(String value) {
+            addCriterion("create_by like", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotLike(String value) {
+            addCriterion("create_by not like", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByIn(List<String> values) {
+            addCriterion("create_by in", values, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotIn(List<String> values) {
+            addCriterion("create_by not in", values, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByBetween(String value1, String value2) {
+            addCriterion("create_by between", value1, value2, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotBetween(String value1, String value2) {
+            addCriterion("create_by not between", value1, value2, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNull() {
+            addCriterion("create_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNotNull() {
+            addCriterion("create_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeEqualTo(Date value) {
+            addCriterion("create_time =", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotEqualTo(Date value) {
+            addCriterion("create_time <>", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThan(Date value) {
+            addCriterion("create_time >", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("create_time >=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThan(Date value) {
+            addCriterion("create_time <", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("create_time <=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIn(List<Date> values) {
+            addCriterion("create_time in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotIn(List<Date> values) {
+            addCriterion("create_time not in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeBetween(Date value1, Date value2) {
+            addCriterion("create_time between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("create_time not between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByIsNull() {
+            addCriterion("update_by is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByIsNotNull() {
+            addCriterion("update_by is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByEqualTo(String value) {
+            addCriterion("update_by =", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotEqualTo(String value) {
+            addCriterion("update_by <>", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByGreaterThan(String value) {
+            addCriterion("update_by >", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByGreaterThanOrEqualTo(String value) {
+            addCriterion("update_by >=", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByLessThan(String value) {
+            addCriterion("update_by <", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByLessThanOrEqualTo(String value) {
+            addCriterion("update_by <=", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByLike(String value) {
+            addCriterion("update_by like", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotLike(String value) {
+            addCriterion("update_by not like", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByIn(List<String> values) {
+            addCriterion("update_by in", values, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotIn(List<String> values) {
+            addCriterion("update_by not in", values, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByBetween(String value1, String value2) {
+            addCriterion("update_by between", value1, value2, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotBetween(String value1, String value2) {
+            addCriterion("update_by not between", value1, value2, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNull() {
+            addCriterion("update_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNotNull() {
+            addCriterion("update_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeEqualTo(Date value) {
+            addCriterion("update_time =", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotEqualTo(Date value) {
+            addCriterion("update_time <>", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThan(Date value) {
+            addCriterion("update_time >", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("update_time >=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThan(Date value) {
+            addCriterion("update_time <", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("update_time <=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIn(List<Date> values) {
+            addCriterion("update_time in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotIn(List<Date> values) {
+            addCriterion("update_time not in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeBetween(Date value1, Date value2) {
+            addCriterion("update_time between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("update_time not between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIsNull() {
+            addCriterion("remark is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIsNotNull() {
+            addCriterion("remark is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkEqualTo(String value) {
+            addCriterion("remark =", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotEqualTo(String value) {
+            addCriterion("remark <>", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkGreaterThan(String value) {
+            addCriterion("remark >", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+            addCriterion("remark >=", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLessThan(String value) {
+            addCriterion("remark <", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLessThanOrEqualTo(String value) {
+            addCriterion("remark <=", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLike(String value) {
+            addCriterion("remark like", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotLike(String value) {
+            addCriterion("remark not like", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIn(List<String> values) {
+            addCriterion("remark in", values, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotIn(List<String> values) {
+            addCriterion("remark not in", values, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkBetween(String value1, String value2) {
+            addCriterion("remark between", value1, value2, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotBetween(String value1, String value2) {
+            addCriterion("remark not between", value1, value2, "remark");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningExample.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningExample.java
new file mode 100644
index 00000000..4f971bd4
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningExample.java
@@ -0,0 +1,881 @@
+package com.acupuncture.system.domain.po;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class ScrScreeningExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public ScrScreeningExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(Long value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Long value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Long value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Long value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Long value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<Long> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<Long> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(Long value1, Long value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(Long value1, Long value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionnaireNameIsNull() {
+            addCriterion("questionnaire_name is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionnaireNameIsNotNull() {
+            addCriterion("questionnaire_name is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionnaireNameEqualTo(String value) {
+            addCriterion("questionnaire_name =", value, "questionnaireName");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionnaireNameNotEqualTo(String value) {
+            addCriterion("questionnaire_name <>", value, "questionnaireName");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionnaireNameGreaterThan(String value) {
+            addCriterion("questionnaire_name >", value, "questionnaireName");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionnaireNameGreaterThanOrEqualTo(String value) {
+            addCriterion("questionnaire_name >=", value, "questionnaireName");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionnaireNameLessThan(String value) {
+            addCriterion("questionnaire_name <", value, "questionnaireName");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionnaireNameLessThanOrEqualTo(String value) {
+            addCriterion("questionnaire_name <=", value, "questionnaireName");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionnaireNameLike(String value) {
+            addCriterion("questionnaire_name like", value, "questionnaireName");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionnaireNameNotLike(String value) {
+            addCriterion("questionnaire_name not like", value, "questionnaireName");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionnaireNameIn(List<String> values) {
+            addCriterion("questionnaire_name in", values, "questionnaireName");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionnaireNameNotIn(List<String> values) {
+            addCriterion("questionnaire_name not in", values, "questionnaireName");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionnaireNameBetween(String value1, String value2) {
+            addCriterion("questionnaire_name between", value1, value2, "questionnaireName");
+            return (Criteria) this;
+        }
+
+        public Criteria andQuestionnaireNameNotBetween(String value1, String value2) {
+            addCriterion("questionnaire_name not between", value1, value2, "questionnaireName");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartTimeIsNull() {
+            addCriterion("start_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartTimeIsNotNull() {
+            addCriterion("start_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartTimeEqualTo(Long value) {
+            addCriterion("start_time =", value, "startTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartTimeNotEqualTo(Long value) {
+            addCriterion("start_time <>", value, "startTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartTimeGreaterThan(Long value) {
+            addCriterion("start_time >", value, "startTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartTimeGreaterThanOrEqualTo(Long value) {
+            addCriterion("start_time >=", value, "startTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartTimeLessThan(Long value) {
+            addCriterion("start_time <", value, "startTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartTimeLessThanOrEqualTo(Long value) {
+            addCriterion("start_time <=", value, "startTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartTimeIn(List<Long> values) {
+            addCriterion("start_time in", values, "startTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartTimeNotIn(List<Long> values) {
+            addCriterion("start_time not in", values, "startTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartTimeBetween(Long value1, Long value2) {
+            addCriterion("start_time between", value1, value2, "startTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andStartTimeNotBetween(Long value1, Long value2) {
+            addCriterion("start_time not between", value1, value2, "startTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andEndTimeIsNull() {
+            addCriterion("end_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andEndTimeIsNotNull() {
+            addCriterion("end_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andEndTimeEqualTo(Long value) {
+            addCriterion("end_time =", value, "endTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andEndTimeNotEqualTo(Long value) {
+            addCriterion("end_time <>", value, "endTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andEndTimeGreaterThan(Long value) {
+            addCriterion("end_time >", value, "endTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andEndTimeGreaterThanOrEqualTo(Long value) {
+            addCriterion("end_time >=", value, "endTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andEndTimeLessThan(Long value) {
+            addCriterion("end_time <", value, "endTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andEndTimeLessThanOrEqualTo(Long value) {
+            addCriterion("end_time <=", value, "endTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andEndTimeIn(List<Long> values) {
+            addCriterion("end_time in", values, "endTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andEndTimeNotIn(List<Long> values) {
+            addCriterion("end_time not in", values, "endTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andEndTimeBetween(Long value1, Long value2) {
+            addCriterion("end_time between", value1, value2, "endTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andEndTimeNotBetween(Long value1, Long value2) {
+            addCriterion("end_time not between", value1, value2, "endTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeIsNull() {
+            addCriterion("type is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeIsNotNull() {
+            addCriterion("type is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeEqualTo(Byte value) {
+            addCriterion("type =", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeNotEqualTo(Byte value) {
+            addCriterion("type <>", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeGreaterThan(Byte value) {
+            addCriterion("type >", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeGreaterThanOrEqualTo(Byte value) {
+            addCriterion("type >=", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeLessThan(Byte value) {
+            addCriterion("type <", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeLessThanOrEqualTo(Byte value) {
+            addCriterion("type <=", value, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeIn(List<Byte> values) {
+            addCriterion("type in", values, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeNotIn(List<Byte> values) {
+            addCriterion("type not in", values, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeBetween(Byte value1, Byte value2) {
+            addCriterion("type between", value1, value2, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andTypeNotBetween(Byte value1, Byte value2) {
+            addCriterion("type not between", value1, value2, "type");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtIsNull() {
+            addCriterion("created_at is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtIsNotNull() {
+            addCriterion("created_at is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtEqualTo(Date value) {
+            addCriterion("created_at =", value, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtNotEqualTo(Date value) {
+            addCriterion("created_at <>", value, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtGreaterThan(Date value) {
+            addCriterion("created_at >", value, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtGreaterThanOrEqualTo(Date value) {
+            addCriterion("created_at >=", value, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtLessThan(Date value) {
+            addCriterion("created_at <", value, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtLessThanOrEqualTo(Date value) {
+            addCriterion("created_at <=", value, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtIn(List<Date> values) {
+            addCriterion("created_at in", values, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtNotIn(List<Date> values) {
+            addCriterion("created_at not in", values, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtBetween(Date value1, Date value2) {
+            addCriterion("created_at between", value1, value2, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreatedAtNotBetween(Date value1, Date value2) {
+            addCriterion("created_at not between", value1, value2, "createdAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtIsNull() {
+            addCriterion("updated_at is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtIsNotNull() {
+            addCriterion("updated_at is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtEqualTo(Date value) {
+            addCriterion("updated_at =", value, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtNotEqualTo(Date value) {
+            addCriterion("updated_at <>", value, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtGreaterThan(Date value) {
+            addCriterion("updated_at >", value, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtGreaterThanOrEqualTo(Date value) {
+            addCriterion("updated_at >=", value, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtLessThan(Date value) {
+            addCriterion("updated_at <", value, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtLessThanOrEqualTo(Date value) {
+            addCriterion("updated_at <=", value, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtIn(List<Date> values) {
+            addCriterion("updated_at in", values, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtNotIn(List<Date> values) {
+            addCriterion("updated_at not in", values, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtBetween(Date value1, Date value2) {
+            addCriterion("updated_at between", value1, value2, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdatedAtNotBetween(Date value1, Date value2) {
+            addCriterion("updated_at not between", value1, value2, "updatedAt");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecStatusIsNull() {
+            addCriterion("rec_status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecStatusIsNotNull() {
+            addCriterion("rec_status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecStatusEqualTo(Byte value) {
+            addCriterion("rec_status =", value, "recStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecStatusNotEqualTo(Byte value) {
+            addCriterion("rec_status <>", value, "recStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecStatusGreaterThan(Byte value) {
+            addCriterion("rec_status >", value, "recStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecStatusGreaterThanOrEqualTo(Byte value) {
+            addCriterion("rec_status >=", value, "recStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecStatusLessThan(Byte value) {
+            addCriterion("rec_status <", value, "recStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecStatusLessThanOrEqualTo(Byte value) {
+            addCriterion("rec_status <=", value, "recStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecStatusIn(List<Byte> values) {
+            addCriterion("rec_status in", values, "recStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecStatusNotIn(List<Byte> values) {
+            addCriterion("rec_status not in", values, "recStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecStatusBetween(Byte value1, Byte value2) {
+            addCriterion("rec_status between", value1, value2, "recStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andRecStatusNotBetween(Byte value1, Byte value2) {
+            addCriterion("rec_status not between", value1, value2, "recStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteStartTimeIsNull() {
+            addCriterion("write_start_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteStartTimeIsNotNull() {
+            addCriterion("write_start_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteStartTimeEqualTo(Long value) {
+            addCriterion("write_start_time =", value, "writeStartTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteStartTimeNotEqualTo(Long value) {
+            addCriterion("write_start_time <>", value, "writeStartTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteStartTimeGreaterThan(Long value) {
+            addCriterion("write_start_time >", value, "writeStartTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteStartTimeGreaterThanOrEqualTo(Long value) {
+            addCriterion("write_start_time >=", value, "writeStartTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteStartTimeLessThan(Long value) {
+            addCriterion("write_start_time <", value, "writeStartTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteStartTimeLessThanOrEqualTo(Long value) {
+            addCriterion("write_start_time <=", value, "writeStartTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteStartTimeIn(List<Long> values) {
+            addCriterion("write_start_time in", values, "writeStartTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteStartTimeNotIn(List<Long> values) {
+            addCriterion("write_start_time not in", values, "writeStartTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteStartTimeBetween(Long value1, Long value2) {
+            addCriterion("write_start_time between", value1, value2, "writeStartTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteStartTimeNotBetween(Long value1, Long value2) {
+            addCriterion("write_start_time not between", value1, value2, "writeStartTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteEndTimeIsNull() {
+            addCriterion("write_end_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteEndTimeIsNotNull() {
+            addCriterion("write_end_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteEndTimeEqualTo(Long value) {
+            addCriterion("write_end_time =", value, "writeEndTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteEndTimeNotEqualTo(Long value) {
+            addCriterion("write_end_time <>", value, "writeEndTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteEndTimeGreaterThan(Long value) {
+            addCriterion("write_end_time >", value, "writeEndTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteEndTimeGreaterThanOrEqualTo(Long value) {
+            addCriterion("write_end_time >=", value, "writeEndTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteEndTimeLessThan(Long value) {
+            addCriterion("write_end_time <", value, "writeEndTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteEndTimeLessThanOrEqualTo(Long value) {
+            addCriterion("write_end_time <=", value, "writeEndTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteEndTimeIn(List<Long> values) {
+            addCriterion("write_end_time in", values, "writeEndTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteEndTimeNotIn(List<Long> values) {
+            addCriterion("write_end_time not in", values, "writeEndTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteEndTimeBetween(Long value1, Long value2) {
+            addCriterion("write_end_time between", value1, value2, "writeEndTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andWriteEndTimeNotBetween(Long value1, Long value2) {
+            addCriterion("write_end_time not between", value1, value2, "writeEndTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andDataScopeIsNull() {
+            addCriterion("data_scope is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDataScopeIsNotNull() {
+            addCriterion("data_scope is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDataScopeEqualTo(String value) {
+            addCriterion("data_scope =", value, "dataScope");
+            return (Criteria) this;
+        }
+
+        public Criteria andDataScopeNotEqualTo(String value) {
+            addCriterion("data_scope <>", value, "dataScope");
+            return (Criteria) this;
+        }
+
+        public Criteria andDataScopeGreaterThan(String value) {
+            addCriterion("data_scope >", value, "dataScope");
+            return (Criteria) this;
+        }
+
+        public Criteria andDataScopeGreaterThanOrEqualTo(String value) {
+            addCriterion("data_scope >=", value, "dataScope");
+            return (Criteria) this;
+        }
+
+        public Criteria andDataScopeLessThan(String value) {
+            addCriterion("data_scope <", value, "dataScope");
+            return (Criteria) this;
+        }
+
+        public Criteria andDataScopeLessThanOrEqualTo(String value) {
+            addCriterion("data_scope <=", value, "dataScope");
+            return (Criteria) this;
+        }
+
+        public Criteria andDataScopeLike(String value) {
+            addCriterion("data_scope like", value, "dataScope");
+            return (Criteria) this;
+        }
+
+        public Criteria andDataScopeNotLike(String value) {
+            addCriterion("data_scope not like", value, "dataScope");
+            return (Criteria) this;
+        }
+
+        public Criteria andDataScopeIn(List<String> values) {
+            addCriterion("data_scope in", values, "dataScope");
+            return (Criteria) this;
+        }
+
+        public Criteria andDataScopeNotIn(List<String> values) {
+            addCriterion("data_scope not in", values, "dataScope");
+            return (Criteria) this;
+        }
+
+        public Criteria andDataScopeBetween(String value1, String value2) {
+            addCriterion("data_scope between", value1, value2, "dataScope");
+            return (Criteria) this;
+        }
+
+        public Criteria andDataScopeNotBetween(String value1, String value2) {
+            addCriterion("data_scope not between", value1, value2, "dataScope");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningRecord.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningRecord.java
new file mode 100644
index 00000000..d1814369
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningRecord.java
@@ -0,0 +1,315 @@
+package com.acupuncture.system.domain.po;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class ScrScreeningRecord implements Serializable {
+    private Long id;
+
+    private String name;
+
+    private String idcard;
+
+    private Integer age;
+
+    private String phone;
+
+    private String city;
+
+    private String county;
+
+    private String province;
+
+    private Byte hospitalLevel;
+
+    private String hospitalName;
+
+    private String departments;
+
+    private Long userId;
+
+    private Long screenId;
+
+    private Byte submitStatus;
+
+    private Long positionId;
+
+    private Long tenantId;
+
+    private Integer rzscResult;
+
+    private Byte screenType;
+
+    private String screenResult;
+
+    private Byte delFlag;
+
+    private String createBy;
+
+    private Date createTime;
+
+    private String updateBy;
+
+    private Date updateTime;
+
+    private String remark;
+
+    private String pinyinFull;
+
+    private String pinyinSimple;
+
+    private static final long serialVersionUID = 1L;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name == null ? null : name.trim();
+    }
+
+    public String getIdcard() {
+        return idcard;
+    }
+
+    public void setIdcard(String idcard) {
+        this.idcard = idcard == null ? null : idcard.trim();
+    }
+
+    public Integer getAge() {
+        return age;
+    }
+
+    public void setAge(Integer age) {
+        this.age = age;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone == null ? null : phone.trim();
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city == null ? null : city.trim();
+    }
+
+    public String getCounty() {
+        return county;
+    }
+
+    public void setCounty(String county) {
+        this.county = county == null ? null : county.trim();
+    }
+
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province == null ? null : province.trim();
+    }
+
+    public Byte getHospitalLevel() {
+        return hospitalLevel;
+    }
+
+    public void setHospitalLevel(Byte hospitalLevel) {
+        this.hospitalLevel = hospitalLevel;
+    }
+
+    public String getHospitalName() {
+        return hospitalName;
+    }
+
+    public void setHospitalName(String hospitalName) {
+        this.hospitalName = hospitalName == null ? null : hospitalName.trim();
+    }
+
+    public String getDepartments() {
+        return departments;
+    }
+
+    public void setDepartments(String departments) {
+        this.departments = departments == null ? null : departments.trim();
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Long getScreenId() {
+        return screenId;
+    }
+
+    public void setScreenId(Long screenId) {
+        this.screenId = screenId;
+    }
+
+    public Byte getSubmitStatus() {
+        return submitStatus;
+    }
+
+    public void setSubmitStatus(Byte submitStatus) {
+        this.submitStatus = submitStatus;
+    }
+
+    public Long getPositionId() {
+        return positionId;
+    }
+
+    public void setPositionId(Long positionId) {
+        this.positionId = positionId;
+    }
+
+    public Long getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(Long tenantId) {
+        this.tenantId = tenantId;
+    }
+
+    public Integer getRzscResult() {
+        return rzscResult;
+    }
+
+    public void setRzscResult(Integer rzscResult) {
+        this.rzscResult = rzscResult;
+    }
+
+    public Byte getScreenType() {
+        return screenType;
+    }
+
+    public void setScreenType(Byte screenType) {
+        this.screenType = screenType;
+    }
+
+    public String getScreenResult() {
+        return screenResult;
+    }
+
+    public void setScreenResult(String screenResult) {
+        this.screenResult = screenResult == null ? null : screenResult.trim();
+    }
+
+    public Byte getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(Byte delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy == null ? null : createBy.trim();
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy == null ? null : updateBy.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark == null ? null : remark.trim();
+    }
+
+    public String getPinyinFull() {
+        return pinyinFull;
+    }
+
+    public void setPinyinFull(String pinyinFull) {
+        this.pinyinFull = pinyinFull == null ? null : pinyinFull.trim();
+    }
+
+    public String getPinyinSimple() {
+        return pinyinSimple;
+    }
+
+    public void setPinyinSimple(String pinyinSimple) {
+        this.pinyinSimple = pinyinSimple == null ? null : pinyinSimple.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", name=").append(name);
+        sb.append(", idcard=").append(idcard);
+        sb.append(", age=").append(age);
+        sb.append(", phone=").append(phone);
+        sb.append(", city=").append(city);
+        sb.append(", county=").append(county);
+        sb.append(", province=").append(province);
+        sb.append(", hospitalLevel=").append(hospitalLevel);
+        sb.append(", hospitalName=").append(hospitalName);
+        sb.append(", departments=").append(departments);
+        sb.append(", userId=").append(userId);
+        sb.append(", screenId=").append(screenId);
+        sb.append(", submitStatus=").append(submitStatus);
+        sb.append(", positionId=").append(positionId);
+        sb.append(", tenantId=").append(tenantId);
+        sb.append(", rzscResult=").append(rzscResult);
+        sb.append(", screenType=").append(screenType);
+        sb.append(", screenResult=").append(screenResult);
+        sb.append(", delFlag=").append(delFlag);
+        sb.append(", createBy=").append(createBy);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", updateBy=").append(updateBy);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", remark=").append(remark);
+        sb.append(", pinyinFull=").append(pinyinFull);
+        sb.append(", pinyinSimple=").append(pinyinSimple);
+        sb.append("]");
+        return sb.toString();
+    }
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningRecordExample.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningRecordExample.java
new file mode 100644
index 00000000..97db05dd
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/ScrScreeningRecordExample.java
@@ -0,0 +1,1961 @@
+package com.acupuncture.system.domain.po;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class ScrScreeningRecordExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public ScrScreeningRecordExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(Long value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Long value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Long value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Long value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Long value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<Long> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<Long> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(Long value1, Long value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(Long value1, Long value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameIsNull() {
+            addCriterion("name is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameIsNotNull() {
+            addCriterion("name is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameEqualTo(String value) {
+            addCriterion("name =", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotEqualTo(String value) {
+            addCriterion("name <>", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameGreaterThan(String value) {
+            addCriterion("name >", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameGreaterThanOrEqualTo(String value) {
+            addCriterion("name >=", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameLessThan(String value) {
+            addCriterion("name <", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameLessThanOrEqualTo(String value) {
+            addCriterion("name <=", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameLike(String value) {
+            addCriterion("name like", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotLike(String value) {
+            addCriterion("name not like", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameIn(List<String> values) {
+            addCriterion("name in", values, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotIn(List<String> values) {
+            addCriterion("name not in", values, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameBetween(String value1, String value2) {
+            addCriterion("name between", value1, value2, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotBetween(String value1, String value2) {
+            addCriterion("name not between", value1, value2, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdcardIsNull() {
+            addCriterion("idcard is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdcardIsNotNull() {
+            addCriterion("idcard is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdcardEqualTo(String value) {
+            addCriterion("idcard =", value, "idcard");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdcardNotEqualTo(String value) {
+            addCriterion("idcard <>", value, "idcard");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdcardGreaterThan(String value) {
+            addCriterion("idcard >", value, "idcard");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdcardGreaterThanOrEqualTo(String value) {
+            addCriterion("idcard >=", value, "idcard");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdcardLessThan(String value) {
+            addCriterion("idcard <", value, "idcard");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdcardLessThanOrEqualTo(String value) {
+            addCriterion("idcard <=", value, "idcard");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdcardLike(String value) {
+            addCriterion("idcard like", value, "idcard");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdcardNotLike(String value) {
+            addCriterion("idcard not like", value, "idcard");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdcardIn(List<String> values) {
+            addCriterion("idcard in", values, "idcard");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdcardNotIn(List<String> values) {
+            addCriterion("idcard not in", values, "idcard");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdcardBetween(String value1, String value2) {
+            addCriterion("idcard between", value1, value2, "idcard");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdcardNotBetween(String value1, String value2) {
+            addCriterion("idcard not between", value1, value2, "idcard");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgeIsNull() {
+            addCriterion("age is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgeIsNotNull() {
+            addCriterion("age is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgeEqualTo(Integer value) {
+            addCriterion("age =", value, "age");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgeNotEqualTo(Integer value) {
+            addCriterion("age <>", value, "age");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgeGreaterThan(Integer value) {
+            addCriterion("age >", value, "age");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("age >=", value, "age");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgeLessThan(Integer value) {
+            addCriterion("age <", value, "age");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgeLessThanOrEqualTo(Integer value) {
+            addCriterion("age <=", value, "age");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgeIn(List<Integer> values) {
+            addCriterion("age in", values, "age");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgeNotIn(List<Integer> values) {
+            addCriterion("age not in", values, "age");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgeBetween(Integer value1, Integer value2) {
+            addCriterion("age between", value1, value2, "age");
+            return (Criteria) this;
+        }
+
+        public Criteria andAgeNotBetween(Integer value1, Integer value2) {
+            addCriterion("age not between", value1, value2, "age");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneIsNull() {
+            addCriterion("phone is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneIsNotNull() {
+            addCriterion("phone is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneEqualTo(String value) {
+            addCriterion("phone =", value, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneNotEqualTo(String value) {
+            addCriterion("phone <>", value, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneGreaterThan(String value) {
+            addCriterion("phone >", value, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneGreaterThanOrEqualTo(String value) {
+            addCriterion("phone >=", value, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneLessThan(String value) {
+            addCriterion("phone <", value, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneLessThanOrEqualTo(String value) {
+            addCriterion("phone <=", value, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneLike(String value) {
+            addCriterion("phone like", value, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneNotLike(String value) {
+            addCriterion("phone not like", value, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneIn(List<String> values) {
+            addCriterion("phone in", values, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneNotIn(List<String> values) {
+            addCriterion("phone not in", values, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneBetween(String value1, String value2) {
+            addCriterion("phone between", value1, value2, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andPhoneNotBetween(String value1, String value2) {
+            addCriterion("phone not between", value1, value2, "phone");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityIsNull() {
+            addCriterion("city is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityIsNotNull() {
+            addCriterion("city is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityEqualTo(String value) {
+            addCriterion("city =", value, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityNotEqualTo(String value) {
+            addCriterion("city <>", value, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityGreaterThan(String value) {
+            addCriterion("city >", value, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityGreaterThanOrEqualTo(String value) {
+            addCriterion("city >=", value, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityLessThan(String value) {
+            addCriterion("city <", value, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityLessThanOrEqualTo(String value) {
+            addCriterion("city <=", value, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityLike(String value) {
+            addCriterion("city like", value, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityNotLike(String value) {
+            addCriterion("city not like", value, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityIn(List<String> values) {
+            addCriterion("city in", values, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityNotIn(List<String> values) {
+            addCriterion("city not in", values, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityBetween(String value1, String value2) {
+            addCriterion("city between", value1, value2, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCityNotBetween(String value1, String value2) {
+            addCriterion("city not between", value1, value2, "city");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountyIsNull() {
+            addCriterion("county is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountyIsNotNull() {
+            addCriterion("county is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountyEqualTo(String value) {
+            addCriterion("county =", value, "county");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountyNotEqualTo(String value) {
+            addCriterion("county <>", value, "county");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountyGreaterThan(String value) {
+            addCriterion("county >", value, "county");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountyGreaterThanOrEqualTo(String value) {
+            addCriterion("county >=", value, "county");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountyLessThan(String value) {
+            addCriterion("county <", value, "county");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountyLessThanOrEqualTo(String value) {
+            addCriterion("county <=", value, "county");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountyLike(String value) {
+            addCriterion("county like", value, "county");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountyNotLike(String value) {
+            addCriterion("county not like", value, "county");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountyIn(List<String> values) {
+            addCriterion("county in", values, "county");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountyNotIn(List<String> values) {
+            addCriterion("county not in", values, "county");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountyBetween(String value1, String value2) {
+            addCriterion("county between", value1, value2, "county");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountyNotBetween(String value1, String value2) {
+            addCriterion("county not between", value1, value2, "county");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceIsNull() {
+            addCriterion("province is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceIsNotNull() {
+            addCriterion("province is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceEqualTo(String value) {
+            addCriterion("province =", value, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceNotEqualTo(String value) {
+            addCriterion("province <>", value, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceGreaterThan(String value) {
+            addCriterion("province >", value, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceGreaterThanOrEqualTo(String value) {
+            addCriterion("province >=", value, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceLessThan(String value) {
+            addCriterion("province <", value, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceLessThanOrEqualTo(String value) {
+            addCriterion("province <=", value, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceLike(String value) {
+            addCriterion("province like", value, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceNotLike(String value) {
+            addCriterion("province not like", value, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceIn(List<String> values) {
+            addCriterion("province in", values, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceNotIn(List<String> values) {
+            addCriterion("province not in", values, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceBetween(String value1, String value2) {
+            addCriterion("province between", value1, value2, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andProvinceNotBetween(String value1, String value2) {
+            addCriterion("province not between", value1, value2, "province");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalLevelIsNull() {
+            addCriterion("hospital_level is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalLevelIsNotNull() {
+            addCriterion("hospital_level is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalLevelEqualTo(Byte value) {
+            addCriterion("hospital_level =", value, "hospitalLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalLevelNotEqualTo(Byte value) {
+            addCriterion("hospital_level <>", value, "hospitalLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalLevelGreaterThan(Byte value) {
+            addCriterion("hospital_level >", value, "hospitalLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalLevelGreaterThanOrEqualTo(Byte value) {
+            addCriterion("hospital_level >=", value, "hospitalLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalLevelLessThan(Byte value) {
+            addCriterion("hospital_level <", value, "hospitalLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalLevelLessThanOrEqualTo(Byte value) {
+            addCriterion("hospital_level <=", value, "hospitalLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalLevelIn(List<Byte> values) {
+            addCriterion("hospital_level in", values, "hospitalLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalLevelNotIn(List<Byte> values) {
+            addCriterion("hospital_level not in", values, "hospitalLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalLevelBetween(Byte value1, Byte value2) {
+            addCriterion("hospital_level between", value1, value2, "hospitalLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalLevelNotBetween(Byte value1, Byte value2) {
+            addCriterion("hospital_level not between", value1, value2, "hospitalLevel");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalNameIsNull() {
+            addCriterion("hospital_name is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalNameIsNotNull() {
+            addCriterion("hospital_name is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalNameEqualTo(String value) {
+            addCriterion("hospital_name =", value, "hospitalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalNameNotEqualTo(String value) {
+            addCriterion("hospital_name <>", value, "hospitalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalNameGreaterThan(String value) {
+            addCriterion("hospital_name >", value, "hospitalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalNameGreaterThanOrEqualTo(String value) {
+            addCriterion("hospital_name >=", value, "hospitalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalNameLessThan(String value) {
+            addCriterion("hospital_name <", value, "hospitalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalNameLessThanOrEqualTo(String value) {
+            addCriterion("hospital_name <=", value, "hospitalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalNameLike(String value) {
+            addCriterion("hospital_name like", value, "hospitalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalNameNotLike(String value) {
+            addCriterion("hospital_name not like", value, "hospitalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalNameIn(List<String> values) {
+            addCriterion("hospital_name in", values, "hospitalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalNameNotIn(List<String> values) {
+            addCriterion("hospital_name not in", values, "hospitalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalNameBetween(String value1, String value2) {
+            addCriterion("hospital_name between", value1, value2, "hospitalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andHospitalNameNotBetween(String value1, String value2) {
+            addCriterion("hospital_name not between", value1, value2, "hospitalName");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepartmentsIsNull() {
+            addCriterion("departments is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepartmentsIsNotNull() {
+            addCriterion("departments is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepartmentsEqualTo(String value) {
+            addCriterion("departments =", value, "departments");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepartmentsNotEqualTo(String value) {
+            addCriterion("departments <>", value, "departments");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepartmentsGreaterThan(String value) {
+            addCriterion("departments >", value, "departments");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepartmentsGreaterThanOrEqualTo(String value) {
+            addCriterion("departments >=", value, "departments");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepartmentsLessThan(String value) {
+            addCriterion("departments <", value, "departments");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepartmentsLessThanOrEqualTo(String value) {
+            addCriterion("departments <=", value, "departments");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepartmentsLike(String value) {
+            addCriterion("departments like", value, "departments");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepartmentsNotLike(String value) {
+            addCriterion("departments not like", value, "departments");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepartmentsIn(List<String> values) {
+            addCriterion("departments in", values, "departments");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepartmentsNotIn(List<String> values) {
+            addCriterion("departments not in", values, "departments");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepartmentsBetween(String value1, String value2) {
+            addCriterion("departments between", value1, value2, "departments");
+            return (Criteria) this;
+        }
+
+        public Criteria andDepartmentsNotBetween(String value1, String value2) {
+            addCriterion("departments not between", value1, value2, "departments");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdIsNull() {
+            addCriterion("user_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdIsNotNull() {
+            addCriterion("user_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdEqualTo(Long value) {
+            addCriterion("user_id =", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdNotEqualTo(Long value) {
+            addCriterion("user_id <>", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdGreaterThan(Long value) {
+            addCriterion("user_id >", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("user_id >=", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdLessThan(Long value) {
+            addCriterion("user_id <", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdLessThanOrEqualTo(Long value) {
+            addCriterion("user_id <=", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdIn(List<Long> values) {
+            addCriterion("user_id in", values, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdNotIn(List<Long> values) {
+            addCriterion("user_id not in", values, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdBetween(Long value1, Long value2) {
+            addCriterion("user_id between", value1, value2, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdNotBetween(Long value1, Long value2) {
+            addCriterion("user_id not between", value1, value2, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenIdIsNull() {
+            addCriterion("screen_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenIdIsNotNull() {
+            addCriterion("screen_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenIdEqualTo(Long value) {
+            addCriterion("screen_id =", value, "screenId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenIdNotEqualTo(Long value) {
+            addCriterion("screen_id <>", value, "screenId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenIdGreaterThan(Long value) {
+            addCriterion("screen_id >", value, "screenId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("screen_id >=", value, "screenId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenIdLessThan(Long value) {
+            addCriterion("screen_id <", value, "screenId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenIdLessThanOrEqualTo(Long value) {
+            addCriterion("screen_id <=", value, "screenId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenIdIn(List<Long> values) {
+            addCriterion("screen_id in", values, "screenId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenIdNotIn(List<Long> values) {
+            addCriterion("screen_id not in", values, "screenId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenIdBetween(Long value1, Long value2) {
+            addCriterion("screen_id between", value1, value2, "screenId");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenIdNotBetween(Long value1, Long value2) {
+            addCriterion("screen_id not between", value1, value2, "screenId");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubmitStatusIsNull() {
+            addCriterion("submit_status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubmitStatusIsNotNull() {
+            addCriterion("submit_status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubmitStatusEqualTo(Byte value) {
+            addCriterion("submit_status =", value, "submitStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubmitStatusNotEqualTo(Byte value) {
+            addCriterion("submit_status <>", value, "submitStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubmitStatusGreaterThan(Byte value) {
+            addCriterion("submit_status >", value, "submitStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubmitStatusGreaterThanOrEqualTo(Byte value) {
+            addCriterion("submit_status >=", value, "submitStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubmitStatusLessThan(Byte value) {
+            addCriterion("submit_status <", value, "submitStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubmitStatusLessThanOrEqualTo(Byte value) {
+            addCriterion("submit_status <=", value, "submitStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubmitStatusIn(List<Byte> values) {
+            addCriterion("submit_status in", values, "submitStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubmitStatusNotIn(List<Byte> values) {
+            addCriterion("submit_status not in", values, "submitStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubmitStatusBetween(Byte value1, Byte value2) {
+            addCriterion("submit_status between", value1, value2, "submitStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSubmitStatusNotBetween(Byte value1, Byte value2) {
+            addCriterion("submit_status not between", value1, value2, "submitStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionIdIsNull() {
+            addCriterion("position_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionIdIsNotNull() {
+            addCriterion("position_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionIdEqualTo(Long value) {
+            addCriterion("position_id =", value, "positionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionIdNotEqualTo(Long value) {
+            addCriterion("position_id <>", value, "positionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionIdGreaterThan(Long value) {
+            addCriterion("position_id >", value, "positionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("position_id >=", value, "positionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionIdLessThan(Long value) {
+            addCriterion("position_id <", value, "positionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionIdLessThanOrEqualTo(Long value) {
+            addCriterion("position_id <=", value, "positionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionIdIn(List<Long> values) {
+            addCriterion("position_id in", values, "positionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionIdNotIn(List<Long> values) {
+            addCriterion("position_id not in", values, "positionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionIdBetween(Long value1, Long value2) {
+            addCriterion("position_id between", value1, value2, "positionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPositionIdNotBetween(Long value1, Long value2) {
+            addCriterion("position_id not between", value1, value2, "positionId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdIsNull() {
+            addCriterion("tenant_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdIsNotNull() {
+            addCriterion("tenant_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdEqualTo(Long value) {
+            addCriterion("tenant_id =", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdNotEqualTo(Long value) {
+            addCriterion("tenant_id <>", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdGreaterThan(Long value) {
+            addCriterion("tenant_id >", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("tenant_id >=", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdLessThan(Long value) {
+            addCriterion("tenant_id <", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdLessThanOrEqualTo(Long value) {
+            addCriterion("tenant_id <=", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdIn(List<Long> values) {
+            addCriterion("tenant_id in", values, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdNotIn(List<Long> values) {
+            addCriterion("tenant_id not in", values, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdBetween(Long value1, Long value2) {
+            addCriterion("tenant_id between", value1, value2, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdNotBetween(Long value1, Long value2) {
+            addCriterion("tenant_id not between", value1, value2, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRzscResultIsNull() {
+            addCriterion("rzsc_result is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRzscResultIsNotNull() {
+            addCriterion("rzsc_result is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRzscResultEqualTo(Integer value) {
+            addCriterion("rzsc_result =", value, "rzscResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andRzscResultNotEqualTo(Integer value) {
+            addCriterion("rzsc_result <>", value, "rzscResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andRzscResultGreaterThan(Integer value) {
+            addCriterion("rzsc_result >", value, "rzscResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andRzscResultGreaterThanOrEqualTo(Integer value) {
+            addCriterion("rzsc_result >=", value, "rzscResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andRzscResultLessThan(Integer value) {
+            addCriterion("rzsc_result <", value, "rzscResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andRzscResultLessThanOrEqualTo(Integer value) {
+            addCriterion("rzsc_result <=", value, "rzscResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andRzscResultIn(List<Integer> values) {
+            addCriterion("rzsc_result in", values, "rzscResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andRzscResultNotIn(List<Integer> values) {
+            addCriterion("rzsc_result not in", values, "rzscResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andRzscResultBetween(Integer value1, Integer value2) {
+            addCriterion("rzsc_result between", value1, value2, "rzscResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andRzscResultNotBetween(Integer value1, Integer value2) {
+            addCriterion("rzsc_result not between", value1, value2, "rzscResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenTypeIsNull() {
+            addCriterion("screen_type is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenTypeIsNotNull() {
+            addCriterion("screen_type is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenTypeEqualTo(Byte value) {
+            addCriterion("screen_type =", value, "screenType");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenTypeNotEqualTo(Byte value) {
+            addCriterion("screen_type <>", value, "screenType");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenTypeGreaterThan(Byte value) {
+            addCriterion("screen_type >", value, "screenType");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenTypeGreaterThanOrEqualTo(Byte value) {
+            addCriterion("screen_type >=", value, "screenType");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenTypeLessThan(Byte value) {
+            addCriterion("screen_type <", value, "screenType");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenTypeLessThanOrEqualTo(Byte value) {
+            addCriterion("screen_type <=", value, "screenType");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenTypeIn(List<Byte> values) {
+            addCriterion("screen_type in", values, "screenType");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenTypeNotIn(List<Byte> values) {
+            addCriterion("screen_type not in", values, "screenType");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenTypeBetween(Byte value1, Byte value2) {
+            addCriterion("screen_type between", value1, value2, "screenType");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenTypeNotBetween(Byte value1, Byte value2) {
+            addCriterion("screen_type not between", value1, value2, "screenType");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenResultIsNull() {
+            addCriterion("screen_result is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenResultIsNotNull() {
+            addCriterion("screen_result is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenResultEqualTo(String value) {
+            addCriterion("screen_result =", value, "screenResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenResultNotEqualTo(String value) {
+            addCriterion("screen_result <>", value, "screenResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenResultGreaterThan(String value) {
+            addCriterion("screen_result >", value, "screenResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenResultGreaterThanOrEqualTo(String value) {
+            addCriterion("screen_result >=", value, "screenResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenResultLessThan(String value) {
+            addCriterion("screen_result <", value, "screenResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenResultLessThanOrEqualTo(String value) {
+            addCriterion("screen_result <=", value, "screenResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenResultLike(String value) {
+            addCriterion("screen_result like", value, "screenResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenResultNotLike(String value) {
+            addCriterion("screen_result not like", value, "screenResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenResultIn(List<String> values) {
+            addCriterion("screen_result in", values, "screenResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenResultNotIn(List<String> values) {
+            addCriterion("screen_result not in", values, "screenResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenResultBetween(String value1, String value2) {
+            addCriterion("screen_result between", value1, value2, "screenResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andScreenResultNotBetween(String value1, String value2) {
+            addCriterion("screen_result not between", value1, value2, "screenResult");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagIsNull() {
+            addCriterion("del_flag is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagIsNotNull() {
+            addCriterion("del_flag is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagEqualTo(Byte value) {
+            addCriterion("del_flag =", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagNotEqualTo(Byte value) {
+            addCriterion("del_flag <>", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagGreaterThan(Byte value) {
+            addCriterion("del_flag >", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagGreaterThanOrEqualTo(Byte value) {
+            addCriterion("del_flag >=", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagLessThan(Byte value) {
+            addCriterion("del_flag <", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagLessThanOrEqualTo(Byte value) {
+            addCriterion("del_flag <=", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagIn(List<Byte> values) {
+            addCriterion("del_flag in", values, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagNotIn(List<Byte> values) {
+            addCriterion("del_flag not in", values, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagBetween(Byte value1, Byte value2) {
+            addCriterion("del_flag between", value1, value2, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagNotBetween(Byte value1, Byte value2) {
+            addCriterion("del_flag not between", value1, value2, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByIsNull() {
+            addCriterion("create_by is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByIsNotNull() {
+            addCriterion("create_by is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByEqualTo(String value) {
+            addCriterion("create_by =", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotEqualTo(String value) {
+            addCriterion("create_by <>", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByGreaterThan(String value) {
+            addCriterion("create_by >", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByGreaterThanOrEqualTo(String value) {
+            addCriterion("create_by >=", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByLessThan(String value) {
+            addCriterion("create_by <", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByLessThanOrEqualTo(String value) {
+            addCriterion("create_by <=", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByLike(String value) {
+            addCriterion("create_by like", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotLike(String value) {
+            addCriterion("create_by not like", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByIn(List<String> values) {
+            addCriterion("create_by in", values, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotIn(List<String> values) {
+            addCriterion("create_by not in", values, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByBetween(String value1, String value2) {
+            addCriterion("create_by between", value1, value2, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotBetween(String value1, String value2) {
+            addCriterion("create_by not between", value1, value2, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNull() {
+            addCriterion("create_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNotNull() {
+            addCriterion("create_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeEqualTo(Date value) {
+            addCriterion("create_time =", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotEqualTo(Date value) {
+            addCriterion("create_time <>", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThan(Date value) {
+            addCriterion("create_time >", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("create_time >=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThan(Date value) {
+            addCriterion("create_time <", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("create_time <=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIn(List<Date> values) {
+            addCriterion("create_time in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotIn(List<Date> values) {
+            addCriterion("create_time not in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeBetween(Date value1, Date value2) {
+            addCriterion("create_time between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("create_time not between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByIsNull() {
+            addCriterion("update_by is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByIsNotNull() {
+            addCriterion("update_by is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByEqualTo(String value) {
+            addCriterion("update_by =", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotEqualTo(String value) {
+            addCriterion("update_by <>", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByGreaterThan(String value) {
+            addCriterion("update_by >", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByGreaterThanOrEqualTo(String value) {
+            addCriterion("update_by >=", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByLessThan(String value) {
+            addCriterion("update_by <", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByLessThanOrEqualTo(String value) {
+            addCriterion("update_by <=", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByLike(String value) {
+            addCriterion("update_by like", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotLike(String value) {
+            addCriterion("update_by not like", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByIn(List<String> values) {
+            addCriterion("update_by in", values, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotIn(List<String> values) {
+            addCriterion("update_by not in", values, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByBetween(String value1, String value2) {
+            addCriterion("update_by between", value1, value2, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotBetween(String value1, String value2) {
+            addCriterion("update_by not between", value1, value2, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNull() {
+            addCriterion("update_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNotNull() {
+            addCriterion("update_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeEqualTo(Date value) {
+            addCriterion("update_time =", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotEqualTo(Date value) {
+            addCriterion("update_time <>", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThan(Date value) {
+            addCriterion("update_time >", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("update_time >=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThan(Date value) {
+            addCriterion("update_time <", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("update_time <=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIn(List<Date> values) {
+            addCriterion("update_time in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotIn(List<Date> values) {
+            addCriterion("update_time not in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeBetween(Date value1, Date value2) {
+            addCriterion("update_time between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("update_time not between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIsNull() {
+            addCriterion("remark is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIsNotNull() {
+            addCriterion("remark is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkEqualTo(String value) {
+            addCriterion("remark =", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotEqualTo(String value) {
+            addCriterion("remark <>", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkGreaterThan(String value) {
+            addCriterion("remark >", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+            addCriterion("remark >=", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLessThan(String value) {
+            addCriterion("remark <", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLessThanOrEqualTo(String value) {
+            addCriterion("remark <=", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLike(String value) {
+            addCriterion("remark like", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotLike(String value) {
+            addCriterion("remark not like", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIn(List<String> values) {
+            addCriterion("remark in", values, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotIn(List<String> values) {
+            addCriterion("remark not in", values, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkBetween(String value1, String value2) {
+            addCriterion("remark between", value1, value2, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotBetween(String value1, String value2) {
+            addCriterion("remark not between", value1, value2, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinFullIsNull() {
+            addCriterion("pinyin_full is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinFullIsNotNull() {
+            addCriterion("pinyin_full is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinFullEqualTo(String value) {
+            addCriterion("pinyin_full =", value, "pinyinFull");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinFullNotEqualTo(String value) {
+            addCriterion("pinyin_full <>", value, "pinyinFull");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinFullGreaterThan(String value) {
+            addCriterion("pinyin_full >", value, "pinyinFull");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinFullGreaterThanOrEqualTo(String value) {
+            addCriterion("pinyin_full >=", value, "pinyinFull");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinFullLessThan(String value) {
+            addCriterion("pinyin_full <", value, "pinyinFull");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinFullLessThanOrEqualTo(String value) {
+            addCriterion("pinyin_full <=", value, "pinyinFull");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinFullLike(String value) {
+            addCriterion("pinyin_full like", value, "pinyinFull");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinFullNotLike(String value) {
+            addCriterion("pinyin_full not like", value, "pinyinFull");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinFullIn(List<String> values) {
+            addCriterion("pinyin_full in", values, "pinyinFull");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinFullNotIn(List<String> values) {
+            addCriterion("pinyin_full not in", values, "pinyinFull");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinFullBetween(String value1, String value2) {
+            addCriterion("pinyin_full between", value1, value2, "pinyinFull");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinFullNotBetween(String value1, String value2) {
+            addCriterion("pinyin_full not between", value1, value2, "pinyinFull");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinSimpleIsNull() {
+            addCriterion("pinyin_simple is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinSimpleIsNotNull() {
+            addCriterion("pinyin_simple is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinSimpleEqualTo(String value) {
+            addCriterion("pinyin_simple =", value, "pinyinSimple");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinSimpleNotEqualTo(String value) {
+            addCriterion("pinyin_simple <>", value, "pinyinSimple");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinSimpleGreaterThan(String value) {
+            addCriterion("pinyin_simple >", value, "pinyinSimple");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinSimpleGreaterThanOrEqualTo(String value) {
+            addCriterion("pinyin_simple >=", value, "pinyinSimple");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinSimpleLessThan(String value) {
+            addCriterion("pinyin_simple <", value, "pinyinSimple");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinSimpleLessThanOrEqualTo(String value) {
+            addCriterion("pinyin_simple <=", value, "pinyinSimple");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinSimpleLike(String value) {
+            addCriterion("pinyin_simple like", value, "pinyinSimple");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinSimpleNotLike(String value) {
+            addCriterion("pinyin_simple not like", value, "pinyinSimple");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinSimpleIn(List<String> values) {
+            addCriterion("pinyin_simple in", values, "pinyinSimple");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinSimpleNotIn(List<String> values) {
+            addCriterion("pinyin_simple not in", values, "pinyinSimple");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinSimpleBetween(String value1, String value2) {
+            addCriterion("pinyin_simple between", value1, value2, "pinyinSimple");
+            return (Criteria) this;
+        }
+
+        public Criteria andPinyinSimpleNotBetween(String value1, String value2) {
+            addCriterion("pinyin_simple not between", value1, value2, "pinyinSimple");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/UplReportImage.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/UplReportImage.java
new file mode 100644
index 00000000..dcbfd5d4
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/UplReportImage.java
@@ -0,0 +1,139 @@
+package com.acupuncture.system.domain.po;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class UplReportImage implements Serializable {
+    private Long id;
+
+    private String patientId;
+
+    private String fileName;
+
+    private String filePath;
+
+    private Byte delFlag;
+
+    private Long tenantId;
+
+    private String createBy;
+
+    private Date createTime;
+
+    private String updateBy;
+
+    private Date updateTime;
+
+    private String remark;
+
+    private static final long serialVersionUID = 1L;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getPatientId() {
+        return patientId;
+    }
+
+    public void setPatientId(String patientId) {
+        this.patientId = patientId == null ? null : patientId.trim();
+    }
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public void setFileName(String fileName) {
+        this.fileName = fileName == null ? null : fileName.trim();
+    }
+
+    public String getFilePath() {
+        return filePath;
+    }
+
+    public void setFilePath(String filePath) {
+        this.filePath = filePath == null ? null : filePath.trim();
+    }
+
+    public Byte getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(Byte delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Long getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(Long tenantId) {
+        this.tenantId = tenantId;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy == null ? null : createBy.trim();
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy == null ? null : updateBy.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark == null ? null : remark.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", patientId=").append(patientId);
+        sb.append(", fileName=").append(fileName);
+        sb.append(", filePath=").append(filePath);
+        sb.append(", delFlag=").append(delFlag);
+        sb.append(", tenantId=").append(tenantId);
+        sb.append(", createBy=").append(createBy);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", updateBy=").append(updateBy);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", remark=").append(remark);
+        sb.append("]");
+        return sb.toString();
+    }
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/UplReportImageExample.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/UplReportImageExample.java
new file mode 100644
index 00000000..4fa8ab2e
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/UplReportImageExample.java
@@ -0,0 +1,921 @@
+package com.acupuncture.system.domain.po;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class UplReportImageExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public UplReportImageExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(Long value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Long value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Long value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Long value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Long value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<Long> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<Long> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(Long value1, Long value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(Long value1, Long value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andPatientIdIsNull() {
+            addCriterion("patient_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPatientIdIsNotNull() {
+            addCriterion("patient_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPatientIdEqualTo(String value) {
+            addCriterion("patient_id =", value, "patientId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPatientIdNotEqualTo(String value) {
+            addCriterion("patient_id <>", value, "patientId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPatientIdGreaterThan(String value) {
+            addCriterion("patient_id >", value, "patientId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPatientIdGreaterThanOrEqualTo(String value) {
+            addCriterion("patient_id >=", value, "patientId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPatientIdLessThan(String value) {
+            addCriterion("patient_id <", value, "patientId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPatientIdLessThanOrEqualTo(String value) {
+            addCriterion("patient_id <=", value, "patientId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPatientIdLike(String value) {
+            addCriterion("patient_id like", value, "patientId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPatientIdNotLike(String value) {
+            addCriterion("patient_id not like", value, "patientId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPatientIdIn(List<String> values) {
+            addCriterion("patient_id in", values, "patientId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPatientIdNotIn(List<String> values) {
+            addCriterion("patient_id not in", values, "patientId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPatientIdBetween(String value1, String value2) {
+            addCriterion("patient_id between", value1, value2, "patientId");
+            return (Criteria) this;
+        }
+
+        public Criteria andPatientIdNotBetween(String value1, String value2) {
+            addCriterion("patient_id not between", value1, value2, "patientId");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameIsNull() {
+            addCriterion("file_name is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameIsNotNull() {
+            addCriterion("file_name is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameEqualTo(String value) {
+            addCriterion("file_name =", value, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameNotEqualTo(String value) {
+            addCriterion("file_name <>", value, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameGreaterThan(String value) {
+            addCriterion("file_name >", value, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameGreaterThanOrEqualTo(String value) {
+            addCriterion("file_name >=", value, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameLessThan(String value) {
+            addCriterion("file_name <", value, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameLessThanOrEqualTo(String value) {
+            addCriterion("file_name <=", value, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameLike(String value) {
+            addCriterion("file_name like", value, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameNotLike(String value) {
+            addCriterion("file_name not like", value, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameIn(List<String> values) {
+            addCriterion("file_name in", values, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameNotIn(List<String> values) {
+            addCriterion("file_name not in", values, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameBetween(String value1, String value2) {
+            addCriterion("file_name between", value1, value2, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameNotBetween(String value1, String value2) {
+            addCriterion("file_name not between", value1, value2, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFilePathIsNull() {
+            addCriterion("file_path is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFilePathIsNotNull() {
+            addCriterion("file_path is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFilePathEqualTo(String value) {
+            addCriterion("file_path =", value, "filePath");
+            return (Criteria) this;
+        }
+
+        public Criteria andFilePathNotEqualTo(String value) {
+            addCriterion("file_path <>", value, "filePath");
+            return (Criteria) this;
+        }
+
+        public Criteria andFilePathGreaterThan(String value) {
+            addCriterion("file_path >", value, "filePath");
+            return (Criteria) this;
+        }
+
+        public Criteria andFilePathGreaterThanOrEqualTo(String value) {
+            addCriterion("file_path >=", value, "filePath");
+            return (Criteria) this;
+        }
+
+        public Criteria andFilePathLessThan(String value) {
+            addCriterion("file_path <", value, "filePath");
+            return (Criteria) this;
+        }
+
+        public Criteria andFilePathLessThanOrEqualTo(String value) {
+            addCriterion("file_path <=", value, "filePath");
+            return (Criteria) this;
+        }
+
+        public Criteria andFilePathLike(String value) {
+            addCriterion("file_path like", value, "filePath");
+            return (Criteria) this;
+        }
+
+        public Criteria andFilePathNotLike(String value) {
+            addCriterion("file_path not like", value, "filePath");
+            return (Criteria) this;
+        }
+
+        public Criteria andFilePathIn(List<String> values) {
+            addCriterion("file_path in", values, "filePath");
+            return (Criteria) this;
+        }
+
+        public Criteria andFilePathNotIn(List<String> values) {
+            addCriterion("file_path not in", values, "filePath");
+            return (Criteria) this;
+        }
+
+        public Criteria andFilePathBetween(String value1, String value2) {
+            addCriterion("file_path between", value1, value2, "filePath");
+            return (Criteria) this;
+        }
+
+        public Criteria andFilePathNotBetween(String value1, String value2) {
+            addCriterion("file_path not between", value1, value2, "filePath");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagIsNull() {
+            addCriterion("del_flag is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagIsNotNull() {
+            addCriterion("del_flag is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagEqualTo(Byte value) {
+            addCriterion("del_flag =", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagNotEqualTo(Byte value) {
+            addCriterion("del_flag <>", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagGreaterThan(Byte value) {
+            addCriterion("del_flag >", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagGreaterThanOrEqualTo(Byte value) {
+            addCriterion("del_flag >=", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagLessThan(Byte value) {
+            addCriterion("del_flag <", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagLessThanOrEqualTo(Byte value) {
+            addCriterion("del_flag <=", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagIn(List<Byte> values) {
+            addCriterion("del_flag in", values, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagNotIn(List<Byte> values) {
+            addCriterion("del_flag not in", values, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagBetween(Byte value1, Byte value2) {
+            addCriterion("del_flag between", value1, value2, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagNotBetween(Byte value1, Byte value2) {
+            addCriterion("del_flag not between", value1, value2, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdIsNull() {
+            addCriterion("tenant_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdIsNotNull() {
+            addCriterion("tenant_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdEqualTo(Long value) {
+            addCriterion("tenant_id =", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdNotEqualTo(Long value) {
+            addCriterion("tenant_id <>", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdGreaterThan(Long value) {
+            addCriterion("tenant_id >", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("tenant_id >=", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdLessThan(Long value) {
+            addCriterion("tenant_id <", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdLessThanOrEqualTo(Long value) {
+            addCriterion("tenant_id <=", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdIn(List<Long> values) {
+            addCriterion("tenant_id in", values, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdNotIn(List<Long> values) {
+            addCriterion("tenant_id not in", values, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdBetween(Long value1, Long value2) {
+            addCriterion("tenant_id between", value1, value2, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdNotBetween(Long value1, Long value2) {
+            addCriterion("tenant_id not between", value1, value2, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByIsNull() {
+            addCriterion("create_by is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByIsNotNull() {
+            addCriterion("create_by is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByEqualTo(String value) {
+            addCriterion("create_by =", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotEqualTo(String value) {
+            addCriterion("create_by <>", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByGreaterThan(String value) {
+            addCriterion("create_by >", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByGreaterThanOrEqualTo(String value) {
+            addCriterion("create_by >=", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByLessThan(String value) {
+            addCriterion("create_by <", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByLessThanOrEqualTo(String value) {
+            addCriterion("create_by <=", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByLike(String value) {
+            addCriterion("create_by like", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotLike(String value) {
+            addCriterion("create_by not like", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByIn(List<String> values) {
+            addCriterion("create_by in", values, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotIn(List<String> values) {
+            addCriterion("create_by not in", values, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByBetween(String value1, String value2) {
+            addCriterion("create_by between", value1, value2, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotBetween(String value1, String value2) {
+            addCriterion("create_by not between", value1, value2, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNull() {
+            addCriterion("create_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNotNull() {
+            addCriterion("create_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeEqualTo(Date value) {
+            addCriterion("create_time =", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotEqualTo(Date value) {
+            addCriterion("create_time <>", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThan(Date value) {
+            addCriterion("create_time >", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("create_time >=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThan(Date value) {
+            addCriterion("create_time <", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("create_time <=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIn(List<Date> values) {
+            addCriterion("create_time in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotIn(List<Date> values) {
+            addCriterion("create_time not in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeBetween(Date value1, Date value2) {
+            addCriterion("create_time between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("create_time not between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByIsNull() {
+            addCriterion("update_by is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByIsNotNull() {
+            addCriterion("update_by is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByEqualTo(String value) {
+            addCriterion("update_by =", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotEqualTo(String value) {
+            addCriterion("update_by <>", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByGreaterThan(String value) {
+            addCriterion("update_by >", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByGreaterThanOrEqualTo(String value) {
+            addCriterion("update_by >=", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByLessThan(String value) {
+            addCriterion("update_by <", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByLessThanOrEqualTo(String value) {
+            addCriterion("update_by <=", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByLike(String value) {
+            addCriterion("update_by like", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotLike(String value) {
+            addCriterion("update_by not like", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByIn(List<String> values) {
+            addCriterion("update_by in", values, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotIn(List<String> values) {
+            addCriterion("update_by not in", values, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByBetween(String value1, String value2) {
+            addCriterion("update_by between", value1, value2, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotBetween(String value1, String value2) {
+            addCriterion("update_by not between", value1, value2, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNull() {
+            addCriterion("update_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNotNull() {
+            addCriterion("update_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeEqualTo(Date value) {
+            addCriterion("update_time =", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotEqualTo(Date value) {
+            addCriterion("update_time <>", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThan(Date value) {
+            addCriterion("update_time >", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("update_time >=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThan(Date value) {
+            addCriterion("update_time <", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("update_time <=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIn(List<Date> values) {
+            addCriterion("update_time in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotIn(List<Date> values) {
+            addCriterion("update_time not in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeBetween(Date value1, Date value2) {
+            addCriterion("update_time between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("update_time not between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIsNull() {
+            addCriterion("remark is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIsNotNull() {
+            addCriterion("remark is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkEqualTo(String value) {
+            addCriterion("remark =", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotEqualTo(String value) {
+            addCriterion("remark <>", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkGreaterThan(String value) {
+            addCriterion("remark >", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+            addCriterion("remark >=", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLessThan(String value) {
+            addCriterion("remark <", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLessThanOrEqualTo(String value) {
+            addCriterion("remark <=", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLike(String value) {
+            addCriterion("remark like", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotLike(String value) {
+            addCriterion("remark not like", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIn(List<String> values) {
+            addCriterion("remark in", values, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotIn(List<String> values) {
+            addCriterion("remark not in", values, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkBetween(String value1, String value2) {
+            addCriterion("remark between", value1, value2, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotBetween(String value1, String value2) {
+            addCriterion("remark not between", value1, value2, "remark");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/UplRtcfInfo.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/UplRtcfInfo.java
new file mode 100644
index 00000000..b6b9c360
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/UplRtcfInfo.java
@@ -0,0 +1,1008 @@
+package com.acupuncture.system.domain.po;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class UplRtcfInfo implements Serializable {
+    private Long id;
+
+    private String message;
+
+    private String uuid;
+
+    private String deviceId;
+
+    private String deviceType;
+
+    private String memberid;
+
+    private String testId;
+
+    private String testDate;
+
+    private String name;
+
+    private String sex;
+
+    private String height;
+
+    private String birthYear;
+
+    private String weight;
+
+    private String fat;
+
+    private String bone;
+
+    private String protein;
+
+    private String water;
+
+    private String muscle;
+
+    private String smm;
+
+    private String pbf;
+
+    private String bmi;
+
+    private String bmr;
+
+    private String whr;
+
+    private String edema;
+
+    private String vfi;
+
+    private String bodyAge;
+
+    private String score;
+
+    private String bodyType;
+
+    private String lbm;
+
+    private String icw;
+
+    private String ecw;
+
+    private String standardWeight;
+
+    private String weightControl;
+
+    private String fatControl;
+
+    private String muscleControl;
+
+    private String liverRisk;
+
+    private String asmi;
+
+    private String trFat;
+
+    private String laFat;
+
+    private String raFat;
+
+    private String llFat;
+
+    private String rlFat;
+
+    private String trWater;
+
+    private String laWater;
+
+    private String raWater;
+
+    private String llWater;
+
+    private String rlWater;
+
+    private String trMuscle;
+
+    private String laMuscle;
+
+    private String raMuscle;
+
+    private String llMuscle;
+
+    private String rlMuscle;
+
+    private String trBone;
+
+    private String laBone;
+
+    private String raBone;
+
+    private String llBone;
+
+    private String rlBone;
+
+    private String weightMax;
+
+    private String weightMin;
+
+    private String fatMax;
+
+    private String fatMin;
+
+    private String boneMax;
+
+    private String boneMin;
+
+    private String proteinMax;
+
+    private String proteinMin;
+
+    private String waterMax;
+
+    private String waterMin;
+
+    private String muscleMax;
+
+    private String muscleMin;
+
+    private String smmMax;
+
+    private String smmMin;
+
+    private String pbfMax;
+
+    private String pbfMin;
+
+    private String bmiMax;
+
+    private String bmiMin;
+
+    private String whrMax;
+
+    private String whrMin;
+
+    private String edemaMax;
+
+    private String edemaMin;
+
+    private String vfiMax;
+
+    private String vfiMin;
+
+    private String diagnosis;
+
+    private Byte status;
+
+    private Byte delFlag;
+
+    private Long tenantId;
+
+    private String createBy;
+
+    private Date createTime;
+
+    private String updateBy;
+
+    private Date updateTime;
+
+    private String remark;
+
+    private static final long serialVersionUID = 1L;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message == null ? null : message.trim();
+    }
+
+    public String getUuid() {
+        return uuid;
+    }
+
+    public void setUuid(String uuid) {
+        this.uuid = uuid == null ? null : uuid.trim();
+    }
+
+    public String getDeviceId() {
+        return deviceId;
+    }
+
+    public void setDeviceId(String deviceId) {
+        this.deviceId = deviceId == null ? null : deviceId.trim();
+    }
+
+    public String getDeviceType() {
+        return deviceType;
+    }
+
+    public void setDeviceType(String deviceType) {
+        this.deviceType = deviceType == null ? null : deviceType.trim();
+    }
+
+    public String getMemberid() {
+        return memberid;
+    }
+
+    public void setMemberid(String memberid) {
+        this.memberid = memberid == null ? null : memberid.trim();
+    }
+
+    public String getTestId() {
+        return testId;
+    }
+
+    public void setTestId(String testId) {
+        this.testId = testId == null ? null : testId.trim();
+    }
+
+    public String getTestDate() {
+        return testDate;
+    }
+
+    public void setTestDate(String testDate) {
+        this.testDate = testDate == null ? null : testDate.trim();
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name == null ? null : name.trim();
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex == null ? null : sex.trim();
+    }
+
+    public String getHeight() {
+        return height;
+    }
+
+    public void setHeight(String height) {
+        this.height = height == null ? null : height.trim();
+    }
+
+    public String getBirthYear() {
+        return birthYear;
+    }
+
+    public void setBirthYear(String birthYear) {
+        this.birthYear = birthYear == null ? null : birthYear.trim();
+    }
+
+    public String getWeight() {
+        return weight;
+    }
+
+    public void setWeight(String weight) {
+        this.weight = weight == null ? null : weight.trim();
+    }
+
+    public String getFat() {
+        return fat;
+    }
+
+    public void setFat(String fat) {
+        this.fat = fat == null ? null : fat.trim();
+    }
+
+    public String getBone() {
+        return bone;
+    }
+
+    public void setBone(String bone) {
+        this.bone = bone == null ? null : bone.trim();
+    }
+
+    public String getProtein() {
+        return protein;
+    }
+
+    public void setProtein(String protein) {
+        this.protein = protein == null ? null : protein.trim();
+    }
+
+    public String getWater() {
+        return water;
+    }
+
+    public void setWater(String water) {
+        this.water = water == null ? null : water.trim();
+    }
+
+    public String getMuscle() {
+        return muscle;
+    }
+
+    public void setMuscle(String muscle) {
+        this.muscle = muscle == null ? null : muscle.trim();
+    }
+
+    public String getSmm() {
+        return smm;
+    }
+
+    public void setSmm(String smm) {
+        this.smm = smm == null ? null : smm.trim();
+    }
+
+    public String getPbf() {
+        return pbf;
+    }
+
+    public void setPbf(String pbf) {
+        this.pbf = pbf == null ? null : pbf.trim();
+    }
+
+    public String getBmi() {
+        return bmi;
+    }
+
+    public void setBmi(String bmi) {
+        this.bmi = bmi == null ? null : bmi.trim();
+    }
+
+    public String getBmr() {
+        return bmr;
+    }
+
+    public void setBmr(String bmr) {
+        this.bmr = bmr == null ? null : bmr.trim();
+    }
+
+    public String getWhr() {
+        return whr;
+    }
+
+    public void setWhr(String whr) {
+        this.whr = whr == null ? null : whr.trim();
+    }
+
+    public String getEdema() {
+        return edema;
+    }
+
+    public void setEdema(String edema) {
+        this.edema = edema == null ? null : edema.trim();
+    }
+
+    public String getVfi() {
+        return vfi;
+    }
+
+    public void setVfi(String vfi) {
+        this.vfi = vfi == null ? null : vfi.trim();
+    }
+
+    public String getBodyAge() {
+        return bodyAge;
+    }
+
+    public void setBodyAge(String bodyAge) {
+        this.bodyAge = bodyAge == null ? null : bodyAge.trim();
+    }
+
+    public String getScore() {
+        return score;
+    }
+
+    public void setScore(String score) {
+        this.score = score == null ? null : score.trim();
+    }
+
+    public String getBodyType() {
+        return bodyType;
+    }
+
+    public void setBodyType(String bodyType) {
+        this.bodyType = bodyType == null ? null : bodyType.trim();
+    }
+
+    public String getLbm() {
+        return lbm;
+    }
+
+    public void setLbm(String lbm) {
+        this.lbm = lbm == null ? null : lbm.trim();
+    }
+
+    public String getIcw() {
+        return icw;
+    }
+
+    public void setIcw(String icw) {
+        this.icw = icw == null ? null : icw.trim();
+    }
+
+    public String getEcw() {
+        return ecw;
+    }
+
+    public void setEcw(String ecw) {
+        this.ecw = ecw == null ? null : ecw.trim();
+    }
+
+    public String getStandardWeight() {
+        return standardWeight;
+    }
+
+    public void setStandardWeight(String standardWeight) {
+        this.standardWeight = standardWeight == null ? null : standardWeight.trim();
+    }
+
+    public String getWeightControl() {
+        return weightControl;
+    }
+
+    public void setWeightControl(String weightControl) {
+        this.weightControl = weightControl == null ? null : weightControl.trim();
+    }
+
+    public String getFatControl() {
+        return fatControl;
+    }
+
+    public void setFatControl(String fatControl) {
+        this.fatControl = fatControl == null ? null : fatControl.trim();
+    }
+
+    public String getMuscleControl() {
+        return muscleControl;
+    }
+
+    public void setMuscleControl(String muscleControl) {
+        this.muscleControl = muscleControl == null ? null : muscleControl.trim();
+    }
+
+    public String getLiverRisk() {
+        return liverRisk;
+    }
+
+    public void setLiverRisk(String liverRisk) {
+        this.liverRisk = liverRisk == null ? null : liverRisk.trim();
+    }
+
+    public String getAsmi() {
+        return asmi;
+    }
+
+    public void setAsmi(String asmi) {
+        this.asmi = asmi == null ? null : asmi.trim();
+    }
+
+    public String getTrFat() {
+        return trFat;
+    }
+
+    public void setTrFat(String trFat) {
+        this.trFat = trFat == null ? null : trFat.trim();
+    }
+
+    public String getLaFat() {
+        return laFat;
+    }
+
+    public void setLaFat(String laFat) {
+        this.laFat = laFat == null ? null : laFat.trim();
+    }
+
+    public String getRaFat() {
+        return raFat;
+    }
+
+    public void setRaFat(String raFat) {
+        this.raFat = raFat == null ? null : raFat.trim();
+    }
+
+    public String getLlFat() {
+        return llFat;
+    }
+
+    public void setLlFat(String llFat) {
+        this.llFat = llFat == null ? null : llFat.trim();
+    }
+
+    public String getRlFat() {
+        return rlFat;
+    }
+
+    public void setRlFat(String rlFat) {
+        this.rlFat = rlFat == null ? null : rlFat.trim();
+    }
+
+    public String getTrWater() {
+        return trWater;
+    }
+
+    public void setTrWater(String trWater) {
+        this.trWater = trWater == null ? null : trWater.trim();
+    }
+
+    public String getLaWater() {
+        return laWater;
+    }
+
+    public void setLaWater(String laWater) {
+        this.laWater = laWater == null ? null : laWater.trim();
+    }
+
+    public String getRaWater() {
+        return raWater;
+    }
+
+    public void setRaWater(String raWater) {
+        this.raWater = raWater == null ? null : raWater.trim();
+    }
+
+    public String getLlWater() {
+        return llWater;
+    }
+
+    public void setLlWater(String llWater) {
+        this.llWater = llWater == null ? null : llWater.trim();
+    }
+
+    public String getRlWater() {
+        return rlWater;
+    }
+
+    public void setRlWater(String rlWater) {
+        this.rlWater = rlWater == null ? null : rlWater.trim();
+    }
+
+    public String getTrMuscle() {
+        return trMuscle;
+    }
+
+    public void setTrMuscle(String trMuscle) {
+        this.trMuscle = trMuscle == null ? null : trMuscle.trim();
+    }
+
+    public String getLaMuscle() {
+        return laMuscle;
+    }
+
+    public void setLaMuscle(String laMuscle) {
+        this.laMuscle = laMuscle == null ? null : laMuscle.trim();
+    }
+
+    public String getRaMuscle() {
+        return raMuscle;
+    }
+
+    public void setRaMuscle(String raMuscle) {
+        this.raMuscle = raMuscle == null ? null : raMuscle.trim();
+    }
+
+    public String getLlMuscle() {
+        return llMuscle;
+    }
+
+    public void setLlMuscle(String llMuscle) {
+        this.llMuscle = llMuscle == null ? null : llMuscle.trim();
+    }
+
+    public String getRlMuscle() {
+        return rlMuscle;
+    }
+
+    public void setRlMuscle(String rlMuscle) {
+        this.rlMuscle = rlMuscle == null ? null : rlMuscle.trim();
+    }
+
+    public String getTrBone() {
+        return trBone;
+    }
+
+    public void setTrBone(String trBone) {
+        this.trBone = trBone == null ? null : trBone.trim();
+    }
+
+    public String getLaBone() {
+        return laBone;
+    }
+
+    public void setLaBone(String laBone) {
+        this.laBone = laBone == null ? null : laBone.trim();
+    }
+
+    public String getRaBone() {
+        return raBone;
+    }
+
+    public void setRaBone(String raBone) {
+        this.raBone = raBone == null ? null : raBone.trim();
+    }
+
+    public String getLlBone() {
+        return llBone;
+    }
+
+    public void setLlBone(String llBone) {
+        this.llBone = llBone == null ? null : llBone.trim();
+    }
+
+    public String getRlBone() {
+        return rlBone;
+    }
+
+    public void setRlBone(String rlBone) {
+        this.rlBone = rlBone == null ? null : rlBone.trim();
+    }
+
+    public String getWeightMax() {
+        return weightMax;
+    }
+
+    public void setWeightMax(String weightMax) {
+        this.weightMax = weightMax == null ? null : weightMax.trim();
+    }
+
+    public String getWeightMin() {
+        return weightMin;
+    }
+
+    public void setWeightMin(String weightMin) {
+        this.weightMin = weightMin == null ? null : weightMin.trim();
+    }
+
+    public String getFatMax() {
+        return fatMax;
+    }
+
+    public void setFatMax(String fatMax) {
+        this.fatMax = fatMax == null ? null : fatMax.trim();
+    }
+
+    public String getFatMin() {
+        return fatMin;
+    }
+
+    public void setFatMin(String fatMin) {
+        this.fatMin = fatMin == null ? null : fatMin.trim();
+    }
+
+    public String getBoneMax() {
+        return boneMax;
+    }
+
+    public void setBoneMax(String boneMax) {
+        this.boneMax = boneMax == null ? null : boneMax.trim();
+    }
+
+    public String getBoneMin() {
+        return boneMin;
+    }
+
+    public void setBoneMin(String boneMin) {
+        this.boneMin = boneMin == null ? null : boneMin.trim();
+    }
+
+    public String getProteinMax() {
+        return proteinMax;
+    }
+
+    public void setProteinMax(String proteinMax) {
+        this.proteinMax = proteinMax == null ? null : proteinMax.trim();
+    }
+
+    public String getProteinMin() {
+        return proteinMin;
+    }
+
+    public void setProteinMin(String proteinMin) {
+        this.proteinMin = proteinMin == null ? null : proteinMin.trim();
+    }
+
+    public String getWaterMax() {
+        return waterMax;
+    }
+
+    public void setWaterMax(String waterMax) {
+        this.waterMax = waterMax == null ? null : waterMax.trim();
+    }
+
+    public String getWaterMin() {
+        return waterMin;
+    }
+
+    public void setWaterMin(String waterMin) {
+        this.waterMin = waterMin == null ? null : waterMin.trim();
+    }
+
+    public String getMuscleMax() {
+        return muscleMax;
+    }
+
+    public void setMuscleMax(String muscleMax) {
+        this.muscleMax = muscleMax == null ? null : muscleMax.trim();
+    }
+
+    public String getMuscleMin() {
+        return muscleMin;
+    }
+
+    public void setMuscleMin(String muscleMin) {
+        this.muscleMin = muscleMin == null ? null : muscleMin.trim();
+    }
+
+    public String getSmmMax() {
+        return smmMax;
+    }
+
+    public void setSmmMax(String smmMax) {
+        this.smmMax = smmMax == null ? null : smmMax.trim();
+    }
+
+    public String getSmmMin() {
+        return smmMin;
+    }
+
+    public void setSmmMin(String smmMin) {
+        this.smmMin = smmMin == null ? null : smmMin.trim();
+    }
+
+    public String getPbfMax() {
+        return pbfMax;
+    }
+
+    public void setPbfMax(String pbfMax) {
+        this.pbfMax = pbfMax == null ? null : pbfMax.trim();
+    }
+
+    public String getPbfMin() {
+        return pbfMin;
+    }
+
+    public void setPbfMin(String pbfMin) {
+        this.pbfMin = pbfMin == null ? null : pbfMin.trim();
+    }
+
+    public String getBmiMax() {
+        return bmiMax;
+    }
+
+    public void setBmiMax(String bmiMax) {
+        this.bmiMax = bmiMax == null ? null : bmiMax.trim();
+    }
+
+    public String getBmiMin() {
+        return bmiMin;
+    }
+
+    public void setBmiMin(String bmiMin) {
+        this.bmiMin = bmiMin == null ? null : bmiMin.trim();
+    }
+
+    public String getWhrMax() {
+        return whrMax;
+    }
+
+    public void setWhrMax(String whrMax) {
+        this.whrMax = whrMax == null ? null : whrMax.trim();
+    }
+
+    public String getWhrMin() {
+        return whrMin;
+    }
+
+    public void setWhrMin(String whrMin) {
+        this.whrMin = whrMin == null ? null : whrMin.trim();
+    }
+
+    public String getEdemaMax() {
+        return edemaMax;
+    }
+
+    public void setEdemaMax(String edemaMax) {
+        this.edemaMax = edemaMax == null ? null : edemaMax.trim();
+    }
+
+    public String getEdemaMin() {
+        return edemaMin;
+    }
+
+    public void setEdemaMin(String edemaMin) {
+        this.edemaMin = edemaMin == null ? null : edemaMin.trim();
+    }
+
+    public String getVfiMax() {
+        return vfiMax;
+    }
+
+    public void setVfiMax(String vfiMax) {
+        this.vfiMax = vfiMax == null ? null : vfiMax.trim();
+    }
+
+    public String getVfiMin() {
+        return vfiMin;
+    }
+
+    public void setVfiMin(String vfiMin) {
+        this.vfiMin = vfiMin == null ? null : vfiMin.trim();
+    }
+
+    public String getDiagnosis() {
+        return diagnosis;
+    }
+
+    public void setDiagnosis(String diagnosis) {
+        this.diagnosis = diagnosis == null ? null : diagnosis.trim();
+    }
+
+    public Byte getStatus() {
+        return status;
+    }
+
+    public void setStatus(Byte status) {
+        this.status = status;
+    }
+
+    public Byte getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(Byte delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Long getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(Long tenantId) {
+        this.tenantId = tenantId;
+    }
+
+    public String getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy) {
+        this.createBy = createBy == null ? null : createBy.trim();
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(String updateBy) {
+        this.updateBy = updateBy == null ? null : updateBy.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark == null ? null : remark.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", message=").append(message);
+        sb.append(", uuid=").append(uuid);
+        sb.append(", deviceId=").append(deviceId);
+        sb.append(", deviceType=").append(deviceType);
+        sb.append(", memberid=").append(memberid);
+        sb.append(", testId=").append(testId);
+        sb.append(", testDate=").append(testDate);
+        sb.append(", name=").append(name);
+        sb.append(", sex=").append(sex);
+        sb.append(", height=").append(height);
+        sb.append(", birthYear=").append(birthYear);
+        sb.append(", weight=").append(weight);
+        sb.append(", fat=").append(fat);
+        sb.append(", bone=").append(bone);
+        sb.append(", protein=").append(protein);
+        sb.append(", water=").append(water);
+        sb.append(", muscle=").append(muscle);
+        sb.append(", smm=").append(smm);
+        sb.append(", pbf=").append(pbf);
+        sb.append(", bmi=").append(bmi);
+        sb.append(", bmr=").append(bmr);
+        sb.append(", whr=").append(whr);
+        sb.append(", edema=").append(edema);
+        sb.append(", vfi=").append(vfi);
+        sb.append(", bodyAge=").append(bodyAge);
+        sb.append(", score=").append(score);
+        sb.append(", bodyType=").append(bodyType);
+        sb.append(", lbm=").append(lbm);
+        sb.append(", icw=").append(icw);
+        sb.append(", ecw=").append(ecw);
+        sb.append(", standardWeight=").append(standardWeight);
+        sb.append(", weightControl=").append(weightControl);
+        sb.append(", fatControl=").append(fatControl);
+        sb.append(", muscleControl=").append(muscleControl);
+        sb.append(", liverRisk=").append(liverRisk);
+        sb.append(", asmi=").append(asmi);
+        sb.append(", trFat=").append(trFat);
+        sb.append(", laFat=").append(laFat);
+        sb.append(", raFat=").append(raFat);
+        sb.append(", llFat=").append(llFat);
+        sb.append(", rlFat=").append(rlFat);
+        sb.append(", trWater=").append(trWater);
+        sb.append(", laWater=").append(laWater);
+        sb.append(", raWater=").append(raWater);
+        sb.append(", llWater=").append(llWater);
+        sb.append(", rlWater=").append(rlWater);
+        sb.append(", trMuscle=").append(trMuscle);
+        sb.append(", laMuscle=").append(laMuscle);
+        sb.append(", raMuscle=").append(raMuscle);
+        sb.append(", llMuscle=").append(llMuscle);
+        sb.append(", rlMuscle=").append(rlMuscle);
+        sb.append(", trBone=").append(trBone);
+        sb.append(", laBone=").append(laBone);
+        sb.append(", raBone=").append(raBone);
+        sb.append(", llBone=").append(llBone);
+        sb.append(", rlBone=").append(rlBone);
+        sb.append(", weightMax=").append(weightMax);
+        sb.append(", weightMin=").append(weightMin);
+        sb.append(", fatMax=").append(fatMax);
+        sb.append(", fatMin=").append(fatMin);
+        sb.append(", boneMax=").append(boneMax);
+        sb.append(", boneMin=").append(boneMin);
+        sb.append(", proteinMax=").append(proteinMax);
+        sb.append(", proteinMin=").append(proteinMin);
+        sb.append(", waterMax=").append(waterMax);
+        sb.append(", waterMin=").append(waterMin);
+        sb.append(", muscleMax=").append(muscleMax);
+        sb.append(", muscleMin=").append(muscleMin);
+        sb.append(", smmMax=").append(smmMax);
+        sb.append(", smmMin=").append(smmMin);
+        sb.append(", pbfMax=").append(pbfMax);
+        sb.append(", pbfMin=").append(pbfMin);
+        sb.append(", bmiMax=").append(bmiMax);
+        sb.append(", bmiMin=").append(bmiMin);
+        sb.append(", whrMax=").append(whrMax);
+        sb.append(", whrMin=").append(whrMin);
+        sb.append(", edemaMax=").append(edemaMax);
+        sb.append(", edemaMin=").append(edemaMin);
+        sb.append(", vfiMax=").append(vfiMax);
+        sb.append(", vfiMin=").append(vfiMin);
+        sb.append(", diagnosis=").append(diagnosis);
+        sb.append(", status=").append(status);
+        sb.append(", delFlag=").append(delFlag);
+        sb.append(", tenantId=").append(tenantId);
+        sb.append(", createBy=").append(createBy);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", updateBy=").append(updateBy);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", remark=").append(remark);
+        sb.append("]");
+        return sb.toString();
+    }
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/UplRtcfInfoExample.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/UplRtcfInfoExample.java
new file mode 100644
index 00000000..5daad1aa
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/po/UplRtcfInfoExample.java
@@ -0,0 +1,6441 @@
+package com.acupuncture.system.domain.po;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class UplRtcfInfoExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public UplRtcfInfoExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(Long value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Long value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Long value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Long value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Long value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<Long> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<Long> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(Long value1, Long value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(Long value1, Long value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageIsNull() {
+            addCriterion("message is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageIsNotNull() {
+            addCriterion("message is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageEqualTo(String value) {
+            addCriterion("message =", value, "message");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageNotEqualTo(String value) {
+            addCriterion("message <>", value, "message");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageGreaterThan(String value) {
+            addCriterion("message >", value, "message");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageGreaterThanOrEqualTo(String value) {
+            addCriterion("message >=", value, "message");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageLessThan(String value) {
+            addCriterion("message <", value, "message");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageLessThanOrEqualTo(String value) {
+            addCriterion("message <=", value, "message");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageLike(String value) {
+            addCriterion("message like", value, "message");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageNotLike(String value) {
+            addCriterion("message not like", value, "message");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageIn(List<String> values) {
+            addCriterion("message in", values, "message");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageNotIn(List<String> values) {
+            addCriterion("message not in", values, "message");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageBetween(String value1, String value2) {
+            addCriterion("message between", value1, value2, "message");
+            return (Criteria) this;
+        }
+
+        public Criteria andMessageNotBetween(String value1, String value2) {
+            addCriterion("message not between", value1, value2, "message");
+            return (Criteria) this;
+        }
+
+        public Criteria andUuidIsNull() {
+            addCriterion("uuid is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUuidIsNotNull() {
+            addCriterion("uuid is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUuidEqualTo(String value) {
+            addCriterion("uuid =", value, "uuid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUuidNotEqualTo(String value) {
+            addCriterion("uuid <>", value, "uuid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUuidGreaterThan(String value) {
+            addCriterion("uuid >", value, "uuid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUuidGreaterThanOrEqualTo(String value) {
+            addCriterion("uuid >=", value, "uuid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUuidLessThan(String value) {
+            addCriterion("uuid <", value, "uuid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUuidLessThanOrEqualTo(String value) {
+            addCriterion("uuid <=", value, "uuid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUuidLike(String value) {
+            addCriterion("uuid like", value, "uuid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUuidNotLike(String value) {
+            addCriterion("uuid not like", value, "uuid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUuidIn(List<String> values) {
+            addCriterion("uuid in", values, "uuid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUuidNotIn(List<String> values) {
+            addCriterion("uuid not in", values, "uuid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUuidBetween(String value1, String value2) {
+            addCriterion("uuid between", value1, value2, "uuid");
+            return (Criteria) this;
+        }
+
+        public Criteria andUuidNotBetween(String value1, String value2) {
+            addCriterion("uuid not between", value1, value2, "uuid");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceIdIsNull() {
+            addCriterion("device_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceIdIsNotNull() {
+            addCriterion("device_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceIdEqualTo(String value) {
+            addCriterion("device_id =", value, "deviceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceIdNotEqualTo(String value) {
+            addCriterion("device_id <>", value, "deviceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceIdGreaterThan(String value) {
+            addCriterion("device_id >", value, "deviceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceIdGreaterThanOrEqualTo(String value) {
+            addCriterion("device_id >=", value, "deviceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceIdLessThan(String value) {
+            addCriterion("device_id <", value, "deviceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceIdLessThanOrEqualTo(String value) {
+            addCriterion("device_id <=", value, "deviceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceIdLike(String value) {
+            addCriterion("device_id like", value, "deviceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceIdNotLike(String value) {
+            addCriterion("device_id not like", value, "deviceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceIdIn(List<String> values) {
+            addCriterion("device_id in", values, "deviceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceIdNotIn(List<String> values) {
+            addCriterion("device_id not in", values, "deviceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceIdBetween(String value1, String value2) {
+            addCriterion("device_id between", value1, value2, "deviceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceIdNotBetween(String value1, String value2) {
+            addCriterion("device_id not between", value1, value2, "deviceId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceTypeIsNull() {
+            addCriterion("device_type is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceTypeIsNotNull() {
+            addCriterion("device_type is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceTypeEqualTo(String value) {
+            addCriterion("device_type =", value, "deviceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceTypeNotEqualTo(String value) {
+            addCriterion("device_type <>", value, "deviceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceTypeGreaterThan(String value) {
+            addCriterion("device_type >", value, "deviceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceTypeGreaterThanOrEqualTo(String value) {
+            addCriterion("device_type >=", value, "deviceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceTypeLessThan(String value) {
+            addCriterion("device_type <", value, "deviceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceTypeLessThanOrEqualTo(String value) {
+            addCriterion("device_type <=", value, "deviceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceTypeLike(String value) {
+            addCriterion("device_type like", value, "deviceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceTypeNotLike(String value) {
+            addCriterion("device_type not like", value, "deviceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceTypeIn(List<String> values) {
+            addCriterion("device_type in", values, "deviceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceTypeNotIn(List<String> values) {
+            addCriterion("device_type not in", values, "deviceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceTypeBetween(String value1, String value2) {
+            addCriterion("device_type between", value1, value2, "deviceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeviceTypeNotBetween(String value1, String value2) {
+            addCriterion("device_type not between", value1, value2, "deviceType");
+            return (Criteria) this;
+        }
+
+        public Criteria andMemberidIsNull() {
+            addCriterion("memberid is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMemberidIsNotNull() {
+            addCriterion("memberid is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMemberidEqualTo(String value) {
+            addCriterion("memberid =", value, "memberid");
+            return (Criteria) this;
+        }
+
+        public Criteria andMemberidNotEqualTo(String value) {
+            addCriterion("memberid <>", value, "memberid");
+            return (Criteria) this;
+        }
+
+        public Criteria andMemberidGreaterThan(String value) {
+            addCriterion("memberid >", value, "memberid");
+            return (Criteria) this;
+        }
+
+        public Criteria andMemberidGreaterThanOrEqualTo(String value) {
+            addCriterion("memberid >=", value, "memberid");
+            return (Criteria) this;
+        }
+
+        public Criteria andMemberidLessThan(String value) {
+            addCriterion("memberid <", value, "memberid");
+            return (Criteria) this;
+        }
+
+        public Criteria andMemberidLessThanOrEqualTo(String value) {
+            addCriterion("memberid <=", value, "memberid");
+            return (Criteria) this;
+        }
+
+        public Criteria andMemberidLike(String value) {
+            addCriterion("memberid like", value, "memberid");
+            return (Criteria) this;
+        }
+
+        public Criteria andMemberidNotLike(String value) {
+            addCriterion("memberid not like", value, "memberid");
+            return (Criteria) this;
+        }
+
+        public Criteria andMemberidIn(List<String> values) {
+            addCriterion("memberid in", values, "memberid");
+            return (Criteria) this;
+        }
+
+        public Criteria andMemberidNotIn(List<String> values) {
+            addCriterion("memberid not in", values, "memberid");
+            return (Criteria) this;
+        }
+
+        public Criteria andMemberidBetween(String value1, String value2) {
+            addCriterion("memberid between", value1, value2, "memberid");
+            return (Criteria) this;
+        }
+
+        public Criteria andMemberidNotBetween(String value1, String value2) {
+            addCriterion("memberid not between", value1, value2, "memberid");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestIdIsNull() {
+            addCriterion("test_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestIdIsNotNull() {
+            addCriterion("test_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestIdEqualTo(String value) {
+            addCriterion("test_id =", value, "testId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestIdNotEqualTo(String value) {
+            addCriterion("test_id <>", value, "testId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestIdGreaterThan(String value) {
+            addCriterion("test_id >", value, "testId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestIdGreaterThanOrEqualTo(String value) {
+            addCriterion("test_id >=", value, "testId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestIdLessThan(String value) {
+            addCriterion("test_id <", value, "testId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestIdLessThanOrEqualTo(String value) {
+            addCriterion("test_id <=", value, "testId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestIdLike(String value) {
+            addCriterion("test_id like", value, "testId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestIdNotLike(String value) {
+            addCriterion("test_id not like", value, "testId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestIdIn(List<String> values) {
+            addCriterion("test_id in", values, "testId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestIdNotIn(List<String> values) {
+            addCriterion("test_id not in", values, "testId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestIdBetween(String value1, String value2) {
+            addCriterion("test_id between", value1, value2, "testId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestIdNotBetween(String value1, String value2) {
+            addCriterion("test_id not between", value1, value2, "testId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestDateIsNull() {
+            addCriterion("test_date is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestDateIsNotNull() {
+            addCriterion("test_date is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestDateEqualTo(String value) {
+            addCriterion("test_date =", value, "testDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestDateNotEqualTo(String value) {
+            addCriterion("test_date <>", value, "testDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestDateGreaterThan(String value) {
+            addCriterion("test_date >", value, "testDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestDateGreaterThanOrEqualTo(String value) {
+            addCriterion("test_date >=", value, "testDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestDateLessThan(String value) {
+            addCriterion("test_date <", value, "testDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestDateLessThanOrEqualTo(String value) {
+            addCriterion("test_date <=", value, "testDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestDateLike(String value) {
+            addCriterion("test_date like", value, "testDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestDateNotLike(String value) {
+            addCriterion("test_date not like", value, "testDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestDateIn(List<String> values) {
+            addCriterion("test_date in", values, "testDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestDateNotIn(List<String> values) {
+            addCriterion("test_date not in", values, "testDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestDateBetween(String value1, String value2) {
+            addCriterion("test_date between", value1, value2, "testDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andTestDateNotBetween(String value1, String value2) {
+            addCriterion("test_date not between", value1, value2, "testDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameIsNull() {
+            addCriterion("name is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameIsNotNull() {
+            addCriterion("name is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameEqualTo(String value) {
+            addCriterion("name =", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotEqualTo(String value) {
+            addCriterion("name <>", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameGreaterThan(String value) {
+            addCriterion("name >", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameGreaterThanOrEqualTo(String value) {
+            addCriterion("name >=", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameLessThan(String value) {
+            addCriterion("name <", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameLessThanOrEqualTo(String value) {
+            addCriterion("name <=", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameLike(String value) {
+            addCriterion("name like", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotLike(String value) {
+            addCriterion("name not like", value, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameIn(List<String> values) {
+            addCriterion("name in", values, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotIn(List<String> values) {
+            addCriterion("name not in", values, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameBetween(String value1, String value2) {
+            addCriterion("name between", value1, value2, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andNameNotBetween(String value1, String value2) {
+            addCriterion("name not between", value1, value2, "name");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexIsNull() {
+            addCriterion("sex is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexIsNotNull() {
+            addCriterion("sex is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexEqualTo(String value) {
+            addCriterion("sex =", value, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexNotEqualTo(String value) {
+            addCriterion("sex <>", value, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexGreaterThan(String value) {
+            addCriterion("sex >", value, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexGreaterThanOrEqualTo(String value) {
+            addCriterion("sex >=", value, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexLessThan(String value) {
+            addCriterion("sex <", value, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexLessThanOrEqualTo(String value) {
+            addCriterion("sex <=", value, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexLike(String value) {
+            addCriterion("sex like", value, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexNotLike(String value) {
+            addCriterion("sex not like", value, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexIn(List<String> values) {
+            addCriterion("sex in", values, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexNotIn(List<String> values) {
+            addCriterion("sex not in", values, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexBetween(String value1, String value2) {
+            addCriterion("sex between", value1, value2, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andSexNotBetween(String value1, String value2) {
+            addCriterion("sex not between", value1, value2, "sex");
+            return (Criteria) this;
+        }
+
+        public Criteria andHeightIsNull() {
+            addCriterion("height is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andHeightIsNotNull() {
+            addCriterion("height is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andHeightEqualTo(String value) {
+            addCriterion("height =", value, "height");
+            return (Criteria) this;
+        }
+
+        public Criteria andHeightNotEqualTo(String value) {
+            addCriterion("height <>", value, "height");
+            return (Criteria) this;
+        }
+
+        public Criteria andHeightGreaterThan(String value) {
+            addCriterion("height >", value, "height");
+            return (Criteria) this;
+        }
+
+        public Criteria andHeightGreaterThanOrEqualTo(String value) {
+            addCriterion("height >=", value, "height");
+            return (Criteria) this;
+        }
+
+        public Criteria andHeightLessThan(String value) {
+            addCriterion("height <", value, "height");
+            return (Criteria) this;
+        }
+
+        public Criteria andHeightLessThanOrEqualTo(String value) {
+            addCriterion("height <=", value, "height");
+            return (Criteria) this;
+        }
+
+        public Criteria andHeightLike(String value) {
+            addCriterion("height like", value, "height");
+            return (Criteria) this;
+        }
+
+        public Criteria andHeightNotLike(String value) {
+            addCriterion("height not like", value, "height");
+            return (Criteria) this;
+        }
+
+        public Criteria andHeightIn(List<String> values) {
+            addCriterion("height in", values, "height");
+            return (Criteria) this;
+        }
+
+        public Criteria andHeightNotIn(List<String> values) {
+            addCriterion("height not in", values, "height");
+            return (Criteria) this;
+        }
+
+        public Criteria andHeightBetween(String value1, String value2) {
+            addCriterion("height between", value1, value2, "height");
+            return (Criteria) this;
+        }
+
+        public Criteria andHeightNotBetween(String value1, String value2) {
+            addCriterion("height not between", value1, value2, "height");
+            return (Criteria) this;
+        }
+
+        public Criteria andBirthYearIsNull() {
+            addCriterion("birth_year is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBirthYearIsNotNull() {
+            addCriterion("birth_year is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBirthYearEqualTo(String value) {
+            addCriterion("birth_year =", value, "birthYear");
+            return (Criteria) this;
+        }
+
+        public Criteria andBirthYearNotEqualTo(String value) {
+            addCriterion("birth_year <>", value, "birthYear");
+            return (Criteria) this;
+        }
+
+        public Criteria andBirthYearGreaterThan(String value) {
+            addCriterion("birth_year >", value, "birthYear");
+            return (Criteria) this;
+        }
+
+        public Criteria andBirthYearGreaterThanOrEqualTo(String value) {
+            addCriterion("birth_year >=", value, "birthYear");
+            return (Criteria) this;
+        }
+
+        public Criteria andBirthYearLessThan(String value) {
+            addCriterion("birth_year <", value, "birthYear");
+            return (Criteria) this;
+        }
+
+        public Criteria andBirthYearLessThanOrEqualTo(String value) {
+            addCriterion("birth_year <=", value, "birthYear");
+            return (Criteria) this;
+        }
+
+        public Criteria andBirthYearLike(String value) {
+            addCriterion("birth_year like", value, "birthYear");
+            return (Criteria) this;
+        }
+
+        public Criteria andBirthYearNotLike(String value) {
+            addCriterion("birth_year not like", value, "birthYear");
+            return (Criteria) this;
+        }
+
+        public Criteria andBirthYearIn(List<String> values) {
+            addCriterion("birth_year in", values, "birthYear");
+            return (Criteria) this;
+        }
+
+        public Criteria andBirthYearNotIn(List<String> values) {
+            addCriterion("birth_year not in", values, "birthYear");
+            return (Criteria) this;
+        }
+
+        public Criteria andBirthYearBetween(String value1, String value2) {
+            addCriterion("birth_year between", value1, value2, "birthYear");
+            return (Criteria) this;
+        }
+
+        public Criteria andBirthYearNotBetween(String value1, String value2) {
+            addCriterion("birth_year not between", value1, value2, "birthYear");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightIsNull() {
+            addCriterion("weight is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightIsNotNull() {
+            addCriterion("weight is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightEqualTo(String value) {
+            addCriterion("weight =", value, "weight");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightNotEqualTo(String value) {
+            addCriterion("weight <>", value, "weight");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightGreaterThan(String value) {
+            addCriterion("weight >", value, "weight");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightGreaterThanOrEqualTo(String value) {
+            addCriterion("weight >=", value, "weight");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightLessThan(String value) {
+            addCriterion("weight <", value, "weight");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightLessThanOrEqualTo(String value) {
+            addCriterion("weight <=", value, "weight");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightLike(String value) {
+            addCriterion("weight like", value, "weight");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightNotLike(String value) {
+            addCriterion("weight not like", value, "weight");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightIn(List<String> values) {
+            addCriterion("weight in", values, "weight");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightNotIn(List<String> values) {
+            addCriterion("weight not in", values, "weight");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightBetween(String value1, String value2) {
+            addCriterion("weight between", value1, value2, "weight");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightNotBetween(String value1, String value2) {
+            addCriterion("weight not between", value1, value2, "weight");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatIsNull() {
+            addCriterion("fat is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatIsNotNull() {
+            addCriterion("fat is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatEqualTo(String value) {
+            addCriterion("fat =", value, "fat");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatNotEqualTo(String value) {
+            addCriterion("fat <>", value, "fat");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatGreaterThan(String value) {
+            addCriterion("fat >", value, "fat");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatGreaterThanOrEqualTo(String value) {
+            addCriterion("fat >=", value, "fat");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatLessThan(String value) {
+            addCriterion("fat <", value, "fat");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatLessThanOrEqualTo(String value) {
+            addCriterion("fat <=", value, "fat");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatLike(String value) {
+            addCriterion("fat like", value, "fat");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatNotLike(String value) {
+            addCriterion("fat not like", value, "fat");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatIn(List<String> values) {
+            addCriterion("fat in", values, "fat");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatNotIn(List<String> values) {
+            addCriterion("fat not in", values, "fat");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatBetween(String value1, String value2) {
+            addCriterion("fat between", value1, value2, "fat");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatNotBetween(String value1, String value2) {
+            addCriterion("fat not between", value1, value2, "fat");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneIsNull() {
+            addCriterion("bone is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneIsNotNull() {
+            addCriterion("bone is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneEqualTo(String value) {
+            addCriterion("bone =", value, "bone");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneNotEqualTo(String value) {
+            addCriterion("bone <>", value, "bone");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneGreaterThan(String value) {
+            addCriterion("bone >", value, "bone");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneGreaterThanOrEqualTo(String value) {
+            addCriterion("bone >=", value, "bone");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneLessThan(String value) {
+            addCriterion("bone <", value, "bone");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneLessThanOrEqualTo(String value) {
+            addCriterion("bone <=", value, "bone");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneLike(String value) {
+            addCriterion("bone like", value, "bone");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneNotLike(String value) {
+            addCriterion("bone not like", value, "bone");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneIn(List<String> values) {
+            addCriterion("bone in", values, "bone");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneNotIn(List<String> values) {
+            addCriterion("bone not in", values, "bone");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneBetween(String value1, String value2) {
+            addCriterion("bone between", value1, value2, "bone");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneNotBetween(String value1, String value2) {
+            addCriterion("bone not between", value1, value2, "bone");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinIsNull() {
+            addCriterion("protein is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinIsNotNull() {
+            addCriterion("protein is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinEqualTo(String value) {
+            addCriterion("protein =", value, "protein");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinNotEqualTo(String value) {
+            addCriterion("protein <>", value, "protein");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinGreaterThan(String value) {
+            addCriterion("protein >", value, "protein");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinGreaterThanOrEqualTo(String value) {
+            addCriterion("protein >=", value, "protein");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinLessThan(String value) {
+            addCriterion("protein <", value, "protein");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinLessThanOrEqualTo(String value) {
+            addCriterion("protein <=", value, "protein");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinLike(String value) {
+            addCriterion("protein like", value, "protein");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinNotLike(String value) {
+            addCriterion("protein not like", value, "protein");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinIn(List<String> values) {
+            addCriterion("protein in", values, "protein");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinNotIn(List<String> values) {
+            addCriterion("protein not in", values, "protein");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinBetween(String value1, String value2) {
+            addCriterion("protein between", value1, value2, "protein");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinNotBetween(String value1, String value2) {
+            addCriterion("protein not between", value1, value2, "protein");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterIsNull() {
+            addCriterion("water is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterIsNotNull() {
+            addCriterion("water is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterEqualTo(String value) {
+            addCriterion("water =", value, "water");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterNotEqualTo(String value) {
+            addCriterion("water <>", value, "water");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterGreaterThan(String value) {
+            addCriterion("water >", value, "water");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterGreaterThanOrEqualTo(String value) {
+            addCriterion("water >=", value, "water");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterLessThan(String value) {
+            addCriterion("water <", value, "water");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterLessThanOrEqualTo(String value) {
+            addCriterion("water <=", value, "water");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterLike(String value) {
+            addCriterion("water like", value, "water");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterNotLike(String value) {
+            addCriterion("water not like", value, "water");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterIn(List<String> values) {
+            addCriterion("water in", values, "water");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterNotIn(List<String> values) {
+            addCriterion("water not in", values, "water");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterBetween(String value1, String value2) {
+            addCriterion("water between", value1, value2, "water");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterNotBetween(String value1, String value2) {
+            addCriterion("water not between", value1, value2, "water");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleIsNull() {
+            addCriterion("muscle is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleIsNotNull() {
+            addCriterion("muscle is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleEqualTo(String value) {
+            addCriterion("muscle =", value, "muscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleNotEqualTo(String value) {
+            addCriterion("muscle <>", value, "muscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleGreaterThan(String value) {
+            addCriterion("muscle >", value, "muscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleGreaterThanOrEqualTo(String value) {
+            addCriterion("muscle >=", value, "muscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleLessThan(String value) {
+            addCriterion("muscle <", value, "muscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleLessThanOrEqualTo(String value) {
+            addCriterion("muscle <=", value, "muscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleLike(String value) {
+            addCriterion("muscle like", value, "muscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleNotLike(String value) {
+            addCriterion("muscle not like", value, "muscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleIn(List<String> values) {
+            addCriterion("muscle in", values, "muscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleNotIn(List<String> values) {
+            addCriterion("muscle not in", values, "muscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleBetween(String value1, String value2) {
+            addCriterion("muscle between", value1, value2, "muscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleNotBetween(String value1, String value2) {
+            addCriterion("muscle not between", value1, value2, "muscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmIsNull() {
+            addCriterion("smm is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmIsNotNull() {
+            addCriterion("smm is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmEqualTo(String value) {
+            addCriterion("smm =", value, "smm");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmNotEqualTo(String value) {
+            addCriterion("smm <>", value, "smm");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmGreaterThan(String value) {
+            addCriterion("smm >", value, "smm");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmGreaterThanOrEqualTo(String value) {
+            addCriterion("smm >=", value, "smm");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmLessThan(String value) {
+            addCriterion("smm <", value, "smm");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmLessThanOrEqualTo(String value) {
+            addCriterion("smm <=", value, "smm");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmLike(String value) {
+            addCriterion("smm like", value, "smm");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmNotLike(String value) {
+            addCriterion("smm not like", value, "smm");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmIn(List<String> values) {
+            addCriterion("smm in", values, "smm");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmNotIn(List<String> values) {
+            addCriterion("smm not in", values, "smm");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmBetween(String value1, String value2) {
+            addCriterion("smm between", value1, value2, "smm");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmNotBetween(String value1, String value2) {
+            addCriterion("smm not between", value1, value2, "smm");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfIsNull() {
+            addCriterion("pbf is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfIsNotNull() {
+            addCriterion("pbf is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfEqualTo(String value) {
+            addCriterion("pbf =", value, "pbf");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfNotEqualTo(String value) {
+            addCriterion("pbf <>", value, "pbf");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfGreaterThan(String value) {
+            addCriterion("pbf >", value, "pbf");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfGreaterThanOrEqualTo(String value) {
+            addCriterion("pbf >=", value, "pbf");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfLessThan(String value) {
+            addCriterion("pbf <", value, "pbf");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfLessThanOrEqualTo(String value) {
+            addCriterion("pbf <=", value, "pbf");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfLike(String value) {
+            addCriterion("pbf like", value, "pbf");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfNotLike(String value) {
+            addCriterion("pbf not like", value, "pbf");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfIn(List<String> values) {
+            addCriterion("pbf in", values, "pbf");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfNotIn(List<String> values) {
+            addCriterion("pbf not in", values, "pbf");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfBetween(String value1, String value2) {
+            addCriterion("pbf between", value1, value2, "pbf");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfNotBetween(String value1, String value2) {
+            addCriterion("pbf not between", value1, value2, "pbf");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiIsNull() {
+            addCriterion("bmi is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiIsNotNull() {
+            addCriterion("bmi is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiEqualTo(String value) {
+            addCriterion("bmi =", value, "bmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiNotEqualTo(String value) {
+            addCriterion("bmi <>", value, "bmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiGreaterThan(String value) {
+            addCriterion("bmi >", value, "bmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiGreaterThanOrEqualTo(String value) {
+            addCriterion("bmi >=", value, "bmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiLessThan(String value) {
+            addCriterion("bmi <", value, "bmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiLessThanOrEqualTo(String value) {
+            addCriterion("bmi <=", value, "bmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiLike(String value) {
+            addCriterion("bmi like", value, "bmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiNotLike(String value) {
+            addCriterion("bmi not like", value, "bmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiIn(List<String> values) {
+            addCriterion("bmi in", values, "bmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiNotIn(List<String> values) {
+            addCriterion("bmi not in", values, "bmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiBetween(String value1, String value2) {
+            addCriterion("bmi between", value1, value2, "bmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiNotBetween(String value1, String value2) {
+            addCriterion("bmi not between", value1, value2, "bmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmrIsNull() {
+            addCriterion("bmr is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmrIsNotNull() {
+            addCriterion("bmr is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmrEqualTo(String value) {
+            addCriterion("bmr =", value, "bmr");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmrNotEqualTo(String value) {
+            addCriterion("bmr <>", value, "bmr");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmrGreaterThan(String value) {
+            addCriterion("bmr >", value, "bmr");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmrGreaterThanOrEqualTo(String value) {
+            addCriterion("bmr >=", value, "bmr");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmrLessThan(String value) {
+            addCriterion("bmr <", value, "bmr");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmrLessThanOrEqualTo(String value) {
+            addCriterion("bmr <=", value, "bmr");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmrLike(String value) {
+            addCriterion("bmr like", value, "bmr");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmrNotLike(String value) {
+            addCriterion("bmr not like", value, "bmr");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmrIn(List<String> values) {
+            addCriterion("bmr in", values, "bmr");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmrNotIn(List<String> values) {
+            addCriterion("bmr not in", values, "bmr");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmrBetween(String value1, String value2) {
+            addCriterion("bmr between", value1, value2, "bmr");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmrNotBetween(String value1, String value2) {
+            addCriterion("bmr not between", value1, value2, "bmr");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrIsNull() {
+            addCriterion("whr is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrIsNotNull() {
+            addCriterion("whr is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrEqualTo(String value) {
+            addCriterion("whr =", value, "whr");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrNotEqualTo(String value) {
+            addCriterion("whr <>", value, "whr");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrGreaterThan(String value) {
+            addCriterion("whr >", value, "whr");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrGreaterThanOrEqualTo(String value) {
+            addCriterion("whr >=", value, "whr");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrLessThan(String value) {
+            addCriterion("whr <", value, "whr");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrLessThanOrEqualTo(String value) {
+            addCriterion("whr <=", value, "whr");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrLike(String value) {
+            addCriterion("whr like", value, "whr");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrNotLike(String value) {
+            addCriterion("whr not like", value, "whr");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrIn(List<String> values) {
+            addCriterion("whr in", values, "whr");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrNotIn(List<String> values) {
+            addCriterion("whr not in", values, "whr");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrBetween(String value1, String value2) {
+            addCriterion("whr between", value1, value2, "whr");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrNotBetween(String value1, String value2) {
+            addCriterion("whr not between", value1, value2, "whr");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaIsNull() {
+            addCriterion("edema is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaIsNotNull() {
+            addCriterion("edema is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaEqualTo(String value) {
+            addCriterion("edema =", value, "edema");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaNotEqualTo(String value) {
+            addCriterion("edema <>", value, "edema");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaGreaterThan(String value) {
+            addCriterion("edema >", value, "edema");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaGreaterThanOrEqualTo(String value) {
+            addCriterion("edema >=", value, "edema");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaLessThan(String value) {
+            addCriterion("edema <", value, "edema");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaLessThanOrEqualTo(String value) {
+            addCriterion("edema <=", value, "edema");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaLike(String value) {
+            addCriterion("edema like", value, "edema");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaNotLike(String value) {
+            addCriterion("edema not like", value, "edema");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaIn(List<String> values) {
+            addCriterion("edema in", values, "edema");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaNotIn(List<String> values) {
+            addCriterion("edema not in", values, "edema");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaBetween(String value1, String value2) {
+            addCriterion("edema between", value1, value2, "edema");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaNotBetween(String value1, String value2) {
+            addCriterion("edema not between", value1, value2, "edema");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiIsNull() {
+            addCriterion("vfi is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiIsNotNull() {
+            addCriterion("vfi is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiEqualTo(String value) {
+            addCriterion("vfi =", value, "vfi");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiNotEqualTo(String value) {
+            addCriterion("vfi <>", value, "vfi");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiGreaterThan(String value) {
+            addCriterion("vfi >", value, "vfi");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiGreaterThanOrEqualTo(String value) {
+            addCriterion("vfi >=", value, "vfi");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiLessThan(String value) {
+            addCriterion("vfi <", value, "vfi");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiLessThanOrEqualTo(String value) {
+            addCriterion("vfi <=", value, "vfi");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiLike(String value) {
+            addCriterion("vfi like", value, "vfi");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiNotLike(String value) {
+            addCriterion("vfi not like", value, "vfi");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiIn(List<String> values) {
+            addCriterion("vfi in", values, "vfi");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiNotIn(List<String> values) {
+            addCriterion("vfi not in", values, "vfi");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiBetween(String value1, String value2) {
+            addCriterion("vfi between", value1, value2, "vfi");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiNotBetween(String value1, String value2) {
+            addCriterion("vfi not between", value1, value2, "vfi");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyAgeIsNull() {
+            addCriterion("body_age is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyAgeIsNotNull() {
+            addCriterion("body_age is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyAgeEqualTo(String value) {
+            addCriterion("body_age =", value, "bodyAge");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyAgeNotEqualTo(String value) {
+            addCriterion("body_age <>", value, "bodyAge");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyAgeGreaterThan(String value) {
+            addCriterion("body_age >", value, "bodyAge");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyAgeGreaterThanOrEqualTo(String value) {
+            addCriterion("body_age >=", value, "bodyAge");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyAgeLessThan(String value) {
+            addCriterion("body_age <", value, "bodyAge");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyAgeLessThanOrEqualTo(String value) {
+            addCriterion("body_age <=", value, "bodyAge");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyAgeLike(String value) {
+            addCriterion("body_age like", value, "bodyAge");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyAgeNotLike(String value) {
+            addCriterion("body_age not like", value, "bodyAge");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyAgeIn(List<String> values) {
+            addCriterion("body_age in", values, "bodyAge");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyAgeNotIn(List<String> values) {
+            addCriterion("body_age not in", values, "bodyAge");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyAgeBetween(String value1, String value2) {
+            addCriterion("body_age between", value1, value2, "bodyAge");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyAgeNotBetween(String value1, String value2) {
+            addCriterion("body_age not between", value1, value2, "bodyAge");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreIsNull() {
+            addCriterion("score is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreIsNotNull() {
+            addCriterion("score is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreEqualTo(String value) {
+            addCriterion("score =", value, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreNotEqualTo(String value) {
+            addCriterion("score <>", value, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreGreaterThan(String value) {
+            addCriterion("score >", value, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreGreaterThanOrEqualTo(String value) {
+            addCriterion("score >=", value, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreLessThan(String value) {
+            addCriterion("score <", value, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreLessThanOrEqualTo(String value) {
+            addCriterion("score <=", value, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreLike(String value) {
+            addCriterion("score like", value, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreNotLike(String value) {
+            addCriterion("score not like", value, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreIn(List<String> values) {
+            addCriterion("score in", values, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreNotIn(List<String> values) {
+            addCriterion("score not in", values, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreBetween(String value1, String value2) {
+            addCriterion("score between", value1, value2, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andScoreNotBetween(String value1, String value2) {
+            addCriterion("score not between", value1, value2, "score");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyTypeIsNull() {
+            addCriterion("body_type is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyTypeIsNotNull() {
+            addCriterion("body_type is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyTypeEqualTo(String value) {
+            addCriterion("body_type =", value, "bodyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyTypeNotEqualTo(String value) {
+            addCriterion("body_type <>", value, "bodyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyTypeGreaterThan(String value) {
+            addCriterion("body_type >", value, "bodyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyTypeGreaterThanOrEqualTo(String value) {
+            addCriterion("body_type >=", value, "bodyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyTypeLessThan(String value) {
+            addCriterion("body_type <", value, "bodyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyTypeLessThanOrEqualTo(String value) {
+            addCriterion("body_type <=", value, "bodyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyTypeLike(String value) {
+            addCriterion("body_type like", value, "bodyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyTypeNotLike(String value) {
+            addCriterion("body_type not like", value, "bodyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyTypeIn(List<String> values) {
+            addCriterion("body_type in", values, "bodyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyTypeNotIn(List<String> values) {
+            addCriterion("body_type not in", values, "bodyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyTypeBetween(String value1, String value2) {
+            addCriterion("body_type between", value1, value2, "bodyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andBodyTypeNotBetween(String value1, String value2) {
+            addCriterion("body_type not between", value1, value2, "bodyType");
+            return (Criteria) this;
+        }
+
+        public Criteria andLbmIsNull() {
+            addCriterion("lbm is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLbmIsNotNull() {
+            addCriterion("lbm is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLbmEqualTo(String value) {
+            addCriterion("lbm =", value, "lbm");
+            return (Criteria) this;
+        }
+
+        public Criteria andLbmNotEqualTo(String value) {
+            addCriterion("lbm <>", value, "lbm");
+            return (Criteria) this;
+        }
+
+        public Criteria andLbmGreaterThan(String value) {
+            addCriterion("lbm >", value, "lbm");
+            return (Criteria) this;
+        }
+
+        public Criteria andLbmGreaterThanOrEqualTo(String value) {
+            addCriterion("lbm >=", value, "lbm");
+            return (Criteria) this;
+        }
+
+        public Criteria andLbmLessThan(String value) {
+            addCriterion("lbm <", value, "lbm");
+            return (Criteria) this;
+        }
+
+        public Criteria andLbmLessThanOrEqualTo(String value) {
+            addCriterion("lbm <=", value, "lbm");
+            return (Criteria) this;
+        }
+
+        public Criteria andLbmLike(String value) {
+            addCriterion("lbm like", value, "lbm");
+            return (Criteria) this;
+        }
+
+        public Criteria andLbmNotLike(String value) {
+            addCriterion("lbm not like", value, "lbm");
+            return (Criteria) this;
+        }
+
+        public Criteria andLbmIn(List<String> values) {
+            addCriterion("lbm in", values, "lbm");
+            return (Criteria) this;
+        }
+
+        public Criteria andLbmNotIn(List<String> values) {
+            addCriterion("lbm not in", values, "lbm");
+            return (Criteria) this;
+        }
+
+        public Criteria andLbmBetween(String value1, String value2) {
+            addCriterion("lbm between", value1, value2, "lbm");
+            return (Criteria) this;
+        }
+
+        public Criteria andLbmNotBetween(String value1, String value2) {
+            addCriterion("lbm not between", value1, value2, "lbm");
+            return (Criteria) this;
+        }
+
+        public Criteria andIcwIsNull() {
+            addCriterion("icw is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIcwIsNotNull() {
+            addCriterion("icw is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIcwEqualTo(String value) {
+            addCriterion("icw =", value, "icw");
+            return (Criteria) this;
+        }
+
+        public Criteria andIcwNotEqualTo(String value) {
+            addCriterion("icw <>", value, "icw");
+            return (Criteria) this;
+        }
+
+        public Criteria andIcwGreaterThan(String value) {
+            addCriterion("icw >", value, "icw");
+            return (Criteria) this;
+        }
+
+        public Criteria andIcwGreaterThanOrEqualTo(String value) {
+            addCriterion("icw >=", value, "icw");
+            return (Criteria) this;
+        }
+
+        public Criteria andIcwLessThan(String value) {
+            addCriterion("icw <", value, "icw");
+            return (Criteria) this;
+        }
+
+        public Criteria andIcwLessThanOrEqualTo(String value) {
+            addCriterion("icw <=", value, "icw");
+            return (Criteria) this;
+        }
+
+        public Criteria andIcwLike(String value) {
+            addCriterion("icw like", value, "icw");
+            return (Criteria) this;
+        }
+
+        public Criteria andIcwNotLike(String value) {
+            addCriterion("icw not like", value, "icw");
+            return (Criteria) this;
+        }
+
+        public Criteria andIcwIn(List<String> values) {
+            addCriterion("icw in", values, "icw");
+            return (Criteria) this;
+        }
+
+        public Criteria andIcwNotIn(List<String> values) {
+            addCriterion("icw not in", values, "icw");
+            return (Criteria) this;
+        }
+
+        public Criteria andIcwBetween(String value1, String value2) {
+            addCriterion("icw between", value1, value2, "icw");
+            return (Criteria) this;
+        }
+
+        public Criteria andIcwNotBetween(String value1, String value2) {
+            addCriterion("icw not between", value1, value2, "icw");
+            return (Criteria) this;
+        }
+
+        public Criteria andEcwIsNull() {
+            addCriterion("ecw is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andEcwIsNotNull() {
+            addCriterion("ecw is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andEcwEqualTo(String value) {
+            addCriterion("ecw =", value, "ecw");
+            return (Criteria) this;
+        }
+
+        public Criteria andEcwNotEqualTo(String value) {
+            addCriterion("ecw <>", value, "ecw");
+            return (Criteria) this;
+        }
+
+        public Criteria andEcwGreaterThan(String value) {
+            addCriterion("ecw >", value, "ecw");
+            return (Criteria) this;
+        }
+
+        public Criteria andEcwGreaterThanOrEqualTo(String value) {
+            addCriterion("ecw >=", value, "ecw");
+            return (Criteria) this;
+        }
+
+        public Criteria andEcwLessThan(String value) {
+            addCriterion("ecw <", value, "ecw");
+            return (Criteria) this;
+        }
+
+        public Criteria andEcwLessThanOrEqualTo(String value) {
+            addCriterion("ecw <=", value, "ecw");
+            return (Criteria) this;
+        }
+
+        public Criteria andEcwLike(String value) {
+            addCriterion("ecw like", value, "ecw");
+            return (Criteria) this;
+        }
+
+        public Criteria andEcwNotLike(String value) {
+            addCriterion("ecw not like", value, "ecw");
+            return (Criteria) this;
+        }
+
+        public Criteria andEcwIn(List<String> values) {
+            addCriterion("ecw in", values, "ecw");
+            return (Criteria) this;
+        }
+
+        public Criteria andEcwNotIn(List<String> values) {
+            addCriterion("ecw not in", values, "ecw");
+            return (Criteria) this;
+        }
+
+        public Criteria andEcwBetween(String value1, String value2) {
+            addCriterion("ecw between", value1, value2, "ecw");
+            return (Criteria) this;
+        }
+
+        public Criteria andEcwNotBetween(String value1, String value2) {
+            addCriterion("ecw not between", value1, value2, "ecw");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardWeightIsNull() {
+            addCriterion("standard_weight is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardWeightIsNotNull() {
+            addCriterion("standard_weight is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardWeightEqualTo(String value) {
+            addCriterion("standard_weight =", value, "standardWeight");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardWeightNotEqualTo(String value) {
+            addCriterion("standard_weight <>", value, "standardWeight");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardWeightGreaterThan(String value) {
+            addCriterion("standard_weight >", value, "standardWeight");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardWeightGreaterThanOrEqualTo(String value) {
+            addCriterion("standard_weight >=", value, "standardWeight");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardWeightLessThan(String value) {
+            addCriterion("standard_weight <", value, "standardWeight");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardWeightLessThanOrEqualTo(String value) {
+            addCriterion("standard_weight <=", value, "standardWeight");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardWeightLike(String value) {
+            addCriterion("standard_weight like", value, "standardWeight");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardWeightNotLike(String value) {
+            addCriterion("standard_weight not like", value, "standardWeight");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardWeightIn(List<String> values) {
+            addCriterion("standard_weight in", values, "standardWeight");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardWeightNotIn(List<String> values) {
+            addCriterion("standard_weight not in", values, "standardWeight");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardWeightBetween(String value1, String value2) {
+            addCriterion("standard_weight between", value1, value2, "standardWeight");
+            return (Criteria) this;
+        }
+
+        public Criteria andStandardWeightNotBetween(String value1, String value2) {
+            addCriterion("standard_weight not between", value1, value2, "standardWeight");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightControlIsNull() {
+            addCriterion("weight_control is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightControlIsNotNull() {
+            addCriterion("weight_control is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightControlEqualTo(String value) {
+            addCriterion("weight_control =", value, "weightControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightControlNotEqualTo(String value) {
+            addCriterion("weight_control <>", value, "weightControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightControlGreaterThan(String value) {
+            addCriterion("weight_control >", value, "weightControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightControlGreaterThanOrEqualTo(String value) {
+            addCriterion("weight_control >=", value, "weightControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightControlLessThan(String value) {
+            addCriterion("weight_control <", value, "weightControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightControlLessThanOrEqualTo(String value) {
+            addCriterion("weight_control <=", value, "weightControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightControlLike(String value) {
+            addCriterion("weight_control like", value, "weightControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightControlNotLike(String value) {
+            addCriterion("weight_control not like", value, "weightControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightControlIn(List<String> values) {
+            addCriterion("weight_control in", values, "weightControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightControlNotIn(List<String> values) {
+            addCriterion("weight_control not in", values, "weightControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightControlBetween(String value1, String value2) {
+            addCriterion("weight_control between", value1, value2, "weightControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightControlNotBetween(String value1, String value2) {
+            addCriterion("weight_control not between", value1, value2, "weightControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatControlIsNull() {
+            addCriterion("fat_control is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatControlIsNotNull() {
+            addCriterion("fat_control is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatControlEqualTo(String value) {
+            addCriterion("fat_control =", value, "fatControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatControlNotEqualTo(String value) {
+            addCriterion("fat_control <>", value, "fatControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatControlGreaterThan(String value) {
+            addCriterion("fat_control >", value, "fatControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatControlGreaterThanOrEqualTo(String value) {
+            addCriterion("fat_control >=", value, "fatControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatControlLessThan(String value) {
+            addCriterion("fat_control <", value, "fatControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatControlLessThanOrEqualTo(String value) {
+            addCriterion("fat_control <=", value, "fatControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatControlLike(String value) {
+            addCriterion("fat_control like", value, "fatControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatControlNotLike(String value) {
+            addCriterion("fat_control not like", value, "fatControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatControlIn(List<String> values) {
+            addCriterion("fat_control in", values, "fatControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatControlNotIn(List<String> values) {
+            addCriterion("fat_control not in", values, "fatControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatControlBetween(String value1, String value2) {
+            addCriterion("fat_control between", value1, value2, "fatControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatControlNotBetween(String value1, String value2) {
+            addCriterion("fat_control not between", value1, value2, "fatControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleControlIsNull() {
+            addCriterion("muscle_control is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleControlIsNotNull() {
+            addCriterion("muscle_control is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleControlEqualTo(String value) {
+            addCriterion("muscle_control =", value, "muscleControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleControlNotEqualTo(String value) {
+            addCriterion("muscle_control <>", value, "muscleControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleControlGreaterThan(String value) {
+            addCriterion("muscle_control >", value, "muscleControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleControlGreaterThanOrEqualTo(String value) {
+            addCriterion("muscle_control >=", value, "muscleControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleControlLessThan(String value) {
+            addCriterion("muscle_control <", value, "muscleControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleControlLessThanOrEqualTo(String value) {
+            addCriterion("muscle_control <=", value, "muscleControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleControlLike(String value) {
+            addCriterion("muscle_control like", value, "muscleControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleControlNotLike(String value) {
+            addCriterion("muscle_control not like", value, "muscleControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleControlIn(List<String> values) {
+            addCriterion("muscle_control in", values, "muscleControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleControlNotIn(List<String> values) {
+            addCriterion("muscle_control not in", values, "muscleControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleControlBetween(String value1, String value2) {
+            addCriterion("muscle_control between", value1, value2, "muscleControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleControlNotBetween(String value1, String value2) {
+            addCriterion("muscle_control not between", value1, value2, "muscleControl");
+            return (Criteria) this;
+        }
+
+        public Criteria andLiverRiskIsNull() {
+            addCriterion("liver_risk is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLiverRiskIsNotNull() {
+            addCriterion("liver_risk is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLiverRiskEqualTo(String value) {
+            addCriterion("liver_risk =", value, "liverRisk");
+            return (Criteria) this;
+        }
+
+        public Criteria andLiverRiskNotEqualTo(String value) {
+            addCriterion("liver_risk <>", value, "liverRisk");
+            return (Criteria) this;
+        }
+
+        public Criteria andLiverRiskGreaterThan(String value) {
+            addCriterion("liver_risk >", value, "liverRisk");
+            return (Criteria) this;
+        }
+
+        public Criteria andLiverRiskGreaterThanOrEqualTo(String value) {
+            addCriterion("liver_risk >=", value, "liverRisk");
+            return (Criteria) this;
+        }
+
+        public Criteria andLiverRiskLessThan(String value) {
+            addCriterion("liver_risk <", value, "liverRisk");
+            return (Criteria) this;
+        }
+
+        public Criteria andLiverRiskLessThanOrEqualTo(String value) {
+            addCriterion("liver_risk <=", value, "liverRisk");
+            return (Criteria) this;
+        }
+
+        public Criteria andLiverRiskLike(String value) {
+            addCriterion("liver_risk like", value, "liverRisk");
+            return (Criteria) this;
+        }
+
+        public Criteria andLiverRiskNotLike(String value) {
+            addCriterion("liver_risk not like", value, "liverRisk");
+            return (Criteria) this;
+        }
+
+        public Criteria andLiverRiskIn(List<String> values) {
+            addCriterion("liver_risk in", values, "liverRisk");
+            return (Criteria) this;
+        }
+
+        public Criteria andLiverRiskNotIn(List<String> values) {
+            addCriterion("liver_risk not in", values, "liverRisk");
+            return (Criteria) this;
+        }
+
+        public Criteria andLiverRiskBetween(String value1, String value2) {
+            addCriterion("liver_risk between", value1, value2, "liverRisk");
+            return (Criteria) this;
+        }
+
+        public Criteria andLiverRiskNotBetween(String value1, String value2) {
+            addCriterion("liver_risk not between", value1, value2, "liverRisk");
+            return (Criteria) this;
+        }
+
+        public Criteria andAsmiIsNull() {
+            addCriterion("asmi is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAsmiIsNotNull() {
+            addCriterion("asmi is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andAsmiEqualTo(String value) {
+            addCriterion("asmi =", value, "asmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andAsmiNotEqualTo(String value) {
+            addCriterion("asmi <>", value, "asmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andAsmiGreaterThan(String value) {
+            addCriterion("asmi >", value, "asmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andAsmiGreaterThanOrEqualTo(String value) {
+            addCriterion("asmi >=", value, "asmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andAsmiLessThan(String value) {
+            addCriterion("asmi <", value, "asmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andAsmiLessThanOrEqualTo(String value) {
+            addCriterion("asmi <=", value, "asmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andAsmiLike(String value) {
+            addCriterion("asmi like", value, "asmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andAsmiNotLike(String value) {
+            addCriterion("asmi not like", value, "asmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andAsmiIn(List<String> values) {
+            addCriterion("asmi in", values, "asmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andAsmiNotIn(List<String> values) {
+            addCriterion("asmi not in", values, "asmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andAsmiBetween(String value1, String value2) {
+            addCriterion("asmi between", value1, value2, "asmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andAsmiNotBetween(String value1, String value2) {
+            addCriterion("asmi not between", value1, value2, "asmi");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrFatIsNull() {
+            addCriterion("tr_fat is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrFatIsNotNull() {
+            addCriterion("tr_fat is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrFatEqualTo(String value) {
+            addCriterion("tr_fat =", value, "trFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrFatNotEqualTo(String value) {
+            addCriterion("tr_fat <>", value, "trFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrFatGreaterThan(String value) {
+            addCriterion("tr_fat >", value, "trFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrFatGreaterThanOrEqualTo(String value) {
+            addCriterion("tr_fat >=", value, "trFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrFatLessThan(String value) {
+            addCriterion("tr_fat <", value, "trFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrFatLessThanOrEqualTo(String value) {
+            addCriterion("tr_fat <=", value, "trFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrFatLike(String value) {
+            addCriterion("tr_fat like", value, "trFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrFatNotLike(String value) {
+            addCriterion("tr_fat not like", value, "trFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrFatIn(List<String> values) {
+            addCriterion("tr_fat in", values, "trFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrFatNotIn(List<String> values) {
+            addCriterion("tr_fat not in", values, "trFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrFatBetween(String value1, String value2) {
+            addCriterion("tr_fat between", value1, value2, "trFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrFatNotBetween(String value1, String value2) {
+            addCriterion("tr_fat not between", value1, value2, "trFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaFatIsNull() {
+            addCriterion("la_fat is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaFatIsNotNull() {
+            addCriterion("la_fat is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaFatEqualTo(String value) {
+            addCriterion("la_fat =", value, "laFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaFatNotEqualTo(String value) {
+            addCriterion("la_fat <>", value, "laFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaFatGreaterThan(String value) {
+            addCriterion("la_fat >", value, "laFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaFatGreaterThanOrEqualTo(String value) {
+            addCriterion("la_fat >=", value, "laFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaFatLessThan(String value) {
+            addCriterion("la_fat <", value, "laFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaFatLessThanOrEqualTo(String value) {
+            addCriterion("la_fat <=", value, "laFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaFatLike(String value) {
+            addCriterion("la_fat like", value, "laFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaFatNotLike(String value) {
+            addCriterion("la_fat not like", value, "laFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaFatIn(List<String> values) {
+            addCriterion("la_fat in", values, "laFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaFatNotIn(List<String> values) {
+            addCriterion("la_fat not in", values, "laFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaFatBetween(String value1, String value2) {
+            addCriterion("la_fat between", value1, value2, "laFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaFatNotBetween(String value1, String value2) {
+            addCriterion("la_fat not between", value1, value2, "laFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaFatIsNull() {
+            addCriterion("ra_fat is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaFatIsNotNull() {
+            addCriterion("ra_fat is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaFatEqualTo(String value) {
+            addCriterion("ra_fat =", value, "raFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaFatNotEqualTo(String value) {
+            addCriterion("ra_fat <>", value, "raFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaFatGreaterThan(String value) {
+            addCriterion("ra_fat >", value, "raFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaFatGreaterThanOrEqualTo(String value) {
+            addCriterion("ra_fat >=", value, "raFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaFatLessThan(String value) {
+            addCriterion("ra_fat <", value, "raFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaFatLessThanOrEqualTo(String value) {
+            addCriterion("ra_fat <=", value, "raFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaFatLike(String value) {
+            addCriterion("ra_fat like", value, "raFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaFatNotLike(String value) {
+            addCriterion("ra_fat not like", value, "raFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaFatIn(List<String> values) {
+            addCriterion("ra_fat in", values, "raFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaFatNotIn(List<String> values) {
+            addCriterion("ra_fat not in", values, "raFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaFatBetween(String value1, String value2) {
+            addCriterion("ra_fat between", value1, value2, "raFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaFatNotBetween(String value1, String value2) {
+            addCriterion("ra_fat not between", value1, value2, "raFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlFatIsNull() {
+            addCriterion("ll_fat is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlFatIsNotNull() {
+            addCriterion("ll_fat is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlFatEqualTo(String value) {
+            addCriterion("ll_fat =", value, "llFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlFatNotEqualTo(String value) {
+            addCriterion("ll_fat <>", value, "llFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlFatGreaterThan(String value) {
+            addCriterion("ll_fat >", value, "llFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlFatGreaterThanOrEqualTo(String value) {
+            addCriterion("ll_fat >=", value, "llFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlFatLessThan(String value) {
+            addCriterion("ll_fat <", value, "llFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlFatLessThanOrEqualTo(String value) {
+            addCriterion("ll_fat <=", value, "llFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlFatLike(String value) {
+            addCriterion("ll_fat like", value, "llFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlFatNotLike(String value) {
+            addCriterion("ll_fat not like", value, "llFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlFatIn(List<String> values) {
+            addCriterion("ll_fat in", values, "llFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlFatNotIn(List<String> values) {
+            addCriterion("ll_fat not in", values, "llFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlFatBetween(String value1, String value2) {
+            addCriterion("ll_fat between", value1, value2, "llFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlFatNotBetween(String value1, String value2) {
+            addCriterion("ll_fat not between", value1, value2, "llFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlFatIsNull() {
+            addCriterion("rl_fat is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlFatIsNotNull() {
+            addCriterion("rl_fat is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlFatEqualTo(String value) {
+            addCriterion("rl_fat =", value, "rlFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlFatNotEqualTo(String value) {
+            addCriterion("rl_fat <>", value, "rlFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlFatGreaterThan(String value) {
+            addCriterion("rl_fat >", value, "rlFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlFatGreaterThanOrEqualTo(String value) {
+            addCriterion("rl_fat >=", value, "rlFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlFatLessThan(String value) {
+            addCriterion("rl_fat <", value, "rlFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlFatLessThanOrEqualTo(String value) {
+            addCriterion("rl_fat <=", value, "rlFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlFatLike(String value) {
+            addCriterion("rl_fat like", value, "rlFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlFatNotLike(String value) {
+            addCriterion("rl_fat not like", value, "rlFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlFatIn(List<String> values) {
+            addCriterion("rl_fat in", values, "rlFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlFatNotIn(List<String> values) {
+            addCriterion("rl_fat not in", values, "rlFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlFatBetween(String value1, String value2) {
+            addCriterion("rl_fat between", value1, value2, "rlFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlFatNotBetween(String value1, String value2) {
+            addCriterion("rl_fat not between", value1, value2, "rlFat");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrWaterIsNull() {
+            addCriterion("tr_water is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrWaterIsNotNull() {
+            addCriterion("tr_water is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrWaterEqualTo(String value) {
+            addCriterion("tr_water =", value, "trWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrWaterNotEqualTo(String value) {
+            addCriterion("tr_water <>", value, "trWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrWaterGreaterThan(String value) {
+            addCriterion("tr_water >", value, "trWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrWaterGreaterThanOrEqualTo(String value) {
+            addCriterion("tr_water >=", value, "trWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrWaterLessThan(String value) {
+            addCriterion("tr_water <", value, "trWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrWaterLessThanOrEqualTo(String value) {
+            addCriterion("tr_water <=", value, "trWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrWaterLike(String value) {
+            addCriterion("tr_water like", value, "trWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrWaterNotLike(String value) {
+            addCriterion("tr_water not like", value, "trWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrWaterIn(List<String> values) {
+            addCriterion("tr_water in", values, "trWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrWaterNotIn(List<String> values) {
+            addCriterion("tr_water not in", values, "trWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrWaterBetween(String value1, String value2) {
+            addCriterion("tr_water between", value1, value2, "trWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrWaterNotBetween(String value1, String value2) {
+            addCriterion("tr_water not between", value1, value2, "trWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaWaterIsNull() {
+            addCriterion("la_water is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaWaterIsNotNull() {
+            addCriterion("la_water is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaWaterEqualTo(String value) {
+            addCriterion("la_water =", value, "laWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaWaterNotEqualTo(String value) {
+            addCriterion("la_water <>", value, "laWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaWaterGreaterThan(String value) {
+            addCriterion("la_water >", value, "laWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaWaterGreaterThanOrEqualTo(String value) {
+            addCriterion("la_water >=", value, "laWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaWaterLessThan(String value) {
+            addCriterion("la_water <", value, "laWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaWaterLessThanOrEqualTo(String value) {
+            addCriterion("la_water <=", value, "laWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaWaterLike(String value) {
+            addCriterion("la_water like", value, "laWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaWaterNotLike(String value) {
+            addCriterion("la_water not like", value, "laWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaWaterIn(List<String> values) {
+            addCriterion("la_water in", values, "laWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaWaterNotIn(List<String> values) {
+            addCriterion("la_water not in", values, "laWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaWaterBetween(String value1, String value2) {
+            addCriterion("la_water between", value1, value2, "laWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaWaterNotBetween(String value1, String value2) {
+            addCriterion("la_water not between", value1, value2, "laWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaWaterIsNull() {
+            addCriterion("ra_water is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaWaterIsNotNull() {
+            addCriterion("ra_water is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaWaterEqualTo(String value) {
+            addCriterion("ra_water =", value, "raWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaWaterNotEqualTo(String value) {
+            addCriterion("ra_water <>", value, "raWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaWaterGreaterThan(String value) {
+            addCriterion("ra_water >", value, "raWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaWaterGreaterThanOrEqualTo(String value) {
+            addCriterion("ra_water >=", value, "raWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaWaterLessThan(String value) {
+            addCriterion("ra_water <", value, "raWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaWaterLessThanOrEqualTo(String value) {
+            addCriterion("ra_water <=", value, "raWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaWaterLike(String value) {
+            addCriterion("ra_water like", value, "raWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaWaterNotLike(String value) {
+            addCriterion("ra_water not like", value, "raWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaWaterIn(List<String> values) {
+            addCriterion("ra_water in", values, "raWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaWaterNotIn(List<String> values) {
+            addCriterion("ra_water not in", values, "raWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaWaterBetween(String value1, String value2) {
+            addCriterion("ra_water between", value1, value2, "raWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaWaterNotBetween(String value1, String value2) {
+            addCriterion("ra_water not between", value1, value2, "raWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlWaterIsNull() {
+            addCriterion("ll_water is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlWaterIsNotNull() {
+            addCriterion("ll_water is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlWaterEqualTo(String value) {
+            addCriterion("ll_water =", value, "llWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlWaterNotEqualTo(String value) {
+            addCriterion("ll_water <>", value, "llWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlWaterGreaterThan(String value) {
+            addCriterion("ll_water >", value, "llWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlWaterGreaterThanOrEqualTo(String value) {
+            addCriterion("ll_water >=", value, "llWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlWaterLessThan(String value) {
+            addCriterion("ll_water <", value, "llWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlWaterLessThanOrEqualTo(String value) {
+            addCriterion("ll_water <=", value, "llWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlWaterLike(String value) {
+            addCriterion("ll_water like", value, "llWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlWaterNotLike(String value) {
+            addCriterion("ll_water not like", value, "llWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlWaterIn(List<String> values) {
+            addCriterion("ll_water in", values, "llWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlWaterNotIn(List<String> values) {
+            addCriterion("ll_water not in", values, "llWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlWaterBetween(String value1, String value2) {
+            addCriterion("ll_water between", value1, value2, "llWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlWaterNotBetween(String value1, String value2) {
+            addCriterion("ll_water not between", value1, value2, "llWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlWaterIsNull() {
+            addCriterion("rl_water is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlWaterIsNotNull() {
+            addCriterion("rl_water is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlWaterEqualTo(String value) {
+            addCriterion("rl_water =", value, "rlWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlWaterNotEqualTo(String value) {
+            addCriterion("rl_water <>", value, "rlWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlWaterGreaterThan(String value) {
+            addCriterion("rl_water >", value, "rlWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlWaterGreaterThanOrEqualTo(String value) {
+            addCriterion("rl_water >=", value, "rlWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlWaterLessThan(String value) {
+            addCriterion("rl_water <", value, "rlWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlWaterLessThanOrEqualTo(String value) {
+            addCriterion("rl_water <=", value, "rlWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlWaterLike(String value) {
+            addCriterion("rl_water like", value, "rlWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlWaterNotLike(String value) {
+            addCriterion("rl_water not like", value, "rlWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlWaterIn(List<String> values) {
+            addCriterion("rl_water in", values, "rlWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlWaterNotIn(List<String> values) {
+            addCriterion("rl_water not in", values, "rlWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlWaterBetween(String value1, String value2) {
+            addCriterion("rl_water between", value1, value2, "rlWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlWaterNotBetween(String value1, String value2) {
+            addCriterion("rl_water not between", value1, value2, "rlWater");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrMuscleIsNull() {
+            addCriterion("tr_muscle is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrMuscleIsNotNull() {
+            addCriterion("tr_muscle is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrMuscleEqualTo(String value) {
+            addCriterion("tr_muscle =", value, "trMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrMuscleNotEqualTo(String value) {
+            addCriterion("tr_muscle <>", value, "trMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrMuscleGreaterThan(String value) {
+            addCriterion("tr_muscle >", value, "trMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrMuscleGreaterThanOrEqualTo(String value) {
+            addCriterion("tr_muscle >=", value, "trMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrMuscleLessThan(String value) {
+            addCriterion("tr_muscle <", value, "trMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrMuscleLessThanOrEqualTo(String value) {
+            addCriterion("tr_muscle <=", value, "trMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrMuscleLike(String value) {
+            addCriterion("tr_muscle like", value, "trMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrMuscleNotLike(String value) {
+            addCriterion("tr_muscle not like", value, "trMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrMuscleIn(List<String> values) {
+            addCriterion("tr_muscle in", values, "trMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrMuscleNotIn(List<String> values) {
+            addCriterion("tr_muscle not in", values, "trMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrMuscleBetween(String value1, String value2) {
+            addCriterion("tr_muscle between", value1, value2, "trMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrMuscleNotBetween(String value1, String value2) {
+            addCriterion("tr_muscle not between", value1, value2, "trMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaMuscleIsNull() {
+            addCriterion("la_muscle is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaMuscleIsNotNull() {
+            addCriterion("la_muscle is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaMuscleEqualTo(String value) {
+            addCriterion("la_muscle =", value, "laMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaMuscleNotEqualTo(String value) {
+            addCriterion("la_muscle <>", value, "laMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaMuscleGreaterThan(String value) {
+            addCriterion("la_muscle >", value, "laMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaMuscleGreaterThanOrEqualTo(String value) {
+            addCriterion("la_muscle >=", value, "laMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaMuscleLessThan(String value) {
+            addCriterion("la_muscle <", value, "laMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaMuscleLessThanOrEqualTo(String value) {
+            addCriterion("la_muscle <=", value, "laMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaMuscleLike(String value) {
+            addCriterion("la_muscle like", value, "laMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaMuscleNotLike(String value) {
+            addCriterion("la_muscle not like", value, "laMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaMuscleIn(List<String> values) {
+            addCriterion("la_muscle in", values, "laMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaMuscleNotIn(List<String> values) {
+            addCriterion("la_muscle not in", values, "laMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaMuscleBetween(String value1, String value2) {
+            addCriterion("la_muscle between", value1, value2, "laMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaMuscleNotBetween(String value1, String value2) {
+            addCriterion("la_muscle not between", value1, value2, "laMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaMuscleIsNull() {
+            addCriterion("ra_muscle is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaMuscleIsNotNull() {
+            addCriterion("ra_muscle is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaMuscleEqualTo(String value) {
+            addCriterion("ra_muscle =", value, "raMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaMuscleNotEqualTo(String value) {
+            addCriterion("ra_muscle <>", value, "raMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaMuscleGreaterThan(String value) {
+            addCriterion("ra_muscle >", value, "raMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaMuscleGreaterThanOrEqualTo(String value) {
+            addCriterion("ra_muscle >=", value, "raMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaMuscleLessThan(String value) {
+            addCriterion("ra_muscle <", value, "raMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaMuscleLessThanOrEqualTo(String value) {
+            addCriterion("ra_muscle <=", value, "raMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaMuscleLike(String value) {
+            addCriterion("ra_muscle like", value, "raMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaMuscleNotLike(String value) {
+            addCriterion("ra_muscle not like", value, "raMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaMuscleIn(List<String> values) {
+            addCriterion("ra_muscle in", values, "raMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaMuscleNotIn(List<String> values) {
+            addCriterion("ra_muscle not in", values, "raMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaMuscleBetween(String value1, String value2) {
+            addCriterion("ra_muscle between", value1, value2, "raMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaMuscleNotBetween(String value1, String value2) {
+            addCriterion("ra_muscle not between", value1, value2, "raMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlMuscleIsNull() {
+            addCriterion("ll_muscle is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlMuscleIsNotNull() {
+            addCriterion("ll_muscle is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlMuscleEqualTo(String value) {
+            addCriterion("ll_muscle =", value, "llMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlMuscleNotEqualTo(String value) {
+            addCriterion("ll_muscle <>", value, "llMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlMuscleGreaterThan(String value) {
+            addCriterion("ll_muscle >", value, "llMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlMuscleGreaterThanOrEqualTo(String value) {
+            addCriterion("ll_muscle >=", value, "llMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlMuscleLessThan(String value) {
+            addCriterion("ll_muscle <", value, "llMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlMuscleLessThanOrEqualTo(String value) {
+            addCriterion("ll_muscle <=", value, "llMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlMuscleLike(String value) {
+            addCriterion("ll_muscle like", value, "llMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlMuscleNotLike(String value) {
+            addCriterion("ll_muscle not like", value, "llMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlMuscleIn(List<String> values) {
+            addCriterion("ll_muscle in", values, "llMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlMuscleNotIn(List<String> values) {
+            addCriterion("ll_muscle not in", values, "llMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlMuscleBetween(String value1, String value2) {
+            addCriterion("ll_muscle between", value1, value2, "llMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlMuscleNotBetween(String value1, String value2) {
+            addCriterion("ll_muscle not between", value1, value2, "llMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlMuscleIsNull() {
+            addCriterion("rl_muscle is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlMuscleIsNotNull() {
+            addCriterion("rl_muscle is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlMuscleEqualTo(String value) {
+            addCriterion("rl_muscle =", value, "rlMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlMuscleNotEqualTo(String value) {
+            addCriterion("rl_muscle <>", value, "rlMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlMuscleGreaterThan(String value) {
+            addCriterion("rl_muscle >", value, "rlMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlMuscleGreaterThanOrEqualTo(String value) {
+            addCriterion("rl_muscle >=", value, "rlMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlMuscleLessThan(String value) {
+            addCriterion("rl_muscle <", value, "rlMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlMuscleLessThanOrEqualTo(String value) {
+            addCriterion("rl_muscle <=", value, "rlMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlMuscleLike(String value) {
+            addCriterion("rl_muscle like", value, "rlMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlMuscleNotLike(String value) {
+            addCriterion("rl_muscle not like", value, "rlMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlMuscleIn(List<String> values) {
+            addCriterion("rl_muscle in", values, "rlMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlMuscleNotIn(List<String> values) {
+            addCriterion("rl_muscle not in", values, "rlMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlMuscleBetween(String value1, String value2) {
+            addCriterion("rl_muscle between", value1, value2, "rlMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlMuscleNotBetween(String value1, String value2) {
+            addCriterion("rl_muscle not between", value1, value2, "rlMuscle");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrBoneIsNull() {
+            addCriterion("tr_bone is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrBoneIsNotNull() {
+            addCriterion("tr_bone is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrBoneEqualTo(String value) {
+            addCriterion("tr_bone =", value, "trBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrBoneNotEqualTo(String value) {
+            addCriterion("tr_bone <>", value, "trBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrBoneGreaterThan(String value) {
+            addCriterion("tr_bone >", value, "trBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrBoneGreaterThanOrEqualTo(String value) {
+            addCriterion("tr_bone >=", value, "trBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrBoneLessThan(String value) {
+            addCriterion("tr_bone <", value, "trBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrBoneLessThanOrEqualTo(String value) {
+            addCriterion("tr_bone <=", value, "trBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrBoneLike(String value) {
+            addCriterion("tr_bone like", value, "trBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrBoneNotLike(String value) {
+            addCriterion("tr_bone not like", value, "trBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrBoneIn(List<String> values) {
+            addCriterion("tr_bone in", values, "trBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrBoneNotIn(List<String> values) {
+            addCriterion("tr_bone not in", values, "trBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrBoneBetween(String value1, String value2) {
+            addCriterion("tr_bone between", value1, value2, "trBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andTrBoneNotBetween(String value1, String value2) {
+            addCriterion("tr_bone not between", value1, value2, "trBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaBoneIsNull() {
+            addCriterion("la_bone is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaBoneIsNotNull() {
+            addCriterion("la_bone is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaBoneEqualTo(String value) {
+            addCriterion("la_bone =", value, "laBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaBoneNotEqualTo(String value) {
+            addCriterion("la_bone <>", value, "laBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaBoneGreaterThan(String value) {
+            addCriterion("la_bone >", value, "laBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaBoneGreaterThanOrEqualTo(String value) {
+            addCriterion("la_bone >=", value, "laBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaBoneLessThan(String value) {
+            addCriterion("la_bone <", value, "laBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaBoneLessThanOrEqualTo(String value) {
+            addCriterion("la_bone <=", value, "laBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaBoneLike(String value) {
+            addCriterion("la_bone like", value, "laBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaBoneNotLike(String value) {
+            addCriterion("la_bone not like", value, "laBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaBoneIn(List<String> values) {
+            addCriterion("la_bone in", values, "laBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaBoneNotIn(List<String> values) {
+            addCriterion("la_bone not in", values, "laBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaBoneBetween(String value1, String value2) {
+            addCriterion("la_bone between", value1, value2, "laBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLaBoneNotBetween(String value1, String value2) {
+            addCriterion("la_bone not between", value1, value2, "laBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaBoneIsNull() {
+            addCriterion("ra_bone is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaBoneIsNotNull() {
+            addCriterion("ra_bone is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaBoneEqualTo(String value) {
+            addCriterion("ra_bone =", value, "raBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaBoneNotEqualTo(String value) {
+            addCriterion("ra_bone <>", value, "raBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaBoneGreaterThan(String value) {
+            addCriterion("ra_bone >", value, "raBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaBoneGreaterThanOrEqualTo(String value) {
+            addCriterion("ra_bone >=", value, "raBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaBoneLessThan(String value) {
+            addCriterion("ra_bone <", value, "raBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaBoneLessThanOrEqualTo(String value) {
+            addCriterion("ra_bone <=", value, "raBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaBoneLike(String value) {
+            addCriterion("ra_bone like", value, "raBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaBoneNotLike(String value) {
+            addCriterion("ra_bone not like", value, "raBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaBoneIn(List<String> values) {
+            addCriterion("ra_bone in", values, "raBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaBoneNotIn(List<String> values) {
+            addCriterion("ra_bone not in", values, "raBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaBoneBetween(String value1, String value2) {
+            addCriterion("ra_bone between", value1, value2, "raBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRaBoneNotBetween(String value1, String value2) {
+            addCriterion("ra_bone not between", value1, value2, "raBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlBoneIsNull() {
+            addCriterion("ll_bone is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlBoneIsNotNull() {
+            addCriterion("ll_bone is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlBoneEqualTo(String value) {
+            addCriterion("ll_bone =", value, "llBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlBoneNotEqualTo(String value) {
+            addCriterion("ll_bone <>", value, "llBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlBoneGreaterThan(String value) {
+            addCriterion("ll_bone >", value, "llBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlBoneGreaterThanOrEqualTo(String value) {
+            addCriterion("ll_bone >=", value, "llBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlBoneLessThan(String value) {
+            addCriterion("ll_bone <", value, "llBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlBoneLessThanOrEqualTo(String value) {
+            addCriterion("ll_bone <=", value, "llBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlBoneLike(String value) {
+            addCriterion("ll_bone like", value, "llBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlBoneNotLike(String value) {
+            addCriterion("ll_bone not like", value, "llBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlBoneIn(List<String> values) {
+            addCriterion("ll_bone in", values, "llBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlBoneNotIn(List<String> values) {
+            addCriterion("ll_bone not in", values, "llBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlBoneBetween(String value1, String value2) {
+            addCriterion("ll_bone between", value1, value2, "llBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andLlBoneNotBetween(String value1, String value2) {
+            addCriterion("ll_bone not between", value1, value2, "llBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlBoneIsNull() {
+            addCriterion("rl_bone is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlBoneIsNotNull() {
+            addCriterion("rl_bone is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlBoneEqualTo(String value) {
+            addCriterion("rl_bone =", value, "rlBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlBoneNotEqualTo(String value) {
+            addCriterion("rl_bone <>", value, "rlBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlBoneGreaterThan(String value) {
+            addCriterion("rl_bone >", value, "rlBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlBoneGreaterThanOrEqualTo(String value) {
+            addCriterion("rl_bone >=", value, "rlBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlBoneLessThan(String value) {
+            addCriterion("rl_bone <", value, "rlBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlBoneLessThanOrEqualTo(String value) {
+            addCriterion("rl_bone <=", value, "rlBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlBoneLike(String value) {
+            addCriterion("rl_bone like", value, "rlBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlBoneNotLike(String value) {
+            addCriterion("rl_bone not like", value, "rlBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlBoneIn(List<String> values) {
+            addCriterion("rl_bone in", values, "rlBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlBoneNotIn(List<String> values) {
+            addCriterion("rl_bone not in", values, "rlBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlBoneBetween(String value1, String value2) {
+            addCriterion("rl_bone between", value1, value2, "rlBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andRlBoneNotBetween(String value1, String value2) {
+            addCriterion("rl_bone not between", value1, value2, "rlBone");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMaxIsNull() {
+            addCriterion("weight_max is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMaxIsNotNull() {
+            addCriterion("weight_max is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMaxEqualTo(String value) {
+            addCriterion("weight_max =", value, "weightMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMaxNotEqualTo(String value) {
+            addCriterion("weight_max <>", value, "weightMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMaxGreaterThan(String value) {
+            addCriterion("weight_max >", value, "weightMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMaxGreaterThanOrEqualTo(String value) {
+            addCriterion("weight_max >=", value, "weightMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMaxLessThan(String value) {
+            addCriterion("weight_max <", value, "weightMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMaxLessThanOrEqualTo(String value) {
+            addCriterion("weight_max <=", value, "weightMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMaxLike(String value) {
+            addCriterion("weight_max like", value, "weightMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMaxNotLike(String value) {
+            addCriterion("weight_max not like", value, "weightMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMaxIn(List<String> values) {
+            addCriterion("weight_max in", values, "weightMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMaxNotIn(List<String> values) {
+            addCriterion("weight_max not in", values, "weightMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMaxBetween(String value1, String value2) {
+            addCriterion("weight_max between", value1, value2, "weightMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMaxNotBetween(String value1, String value2) {
+            addCriterion("weight_max not between", value1, value2, "weightMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMinIsNull() {
+            addCriterion("weight_min is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMinIsNotNull() {
+            addCriterion("weight_min is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMinEqualTo(String value) {
+            addCriterion("weight_min =", value, "weightMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMinNotEqualTo(String value) {
+            addCriterion("weight_min <>", value, "weightMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMinGreaterThan(String value) {
+            addCriterion("weight_min >", value, "weightMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMinGreaterThanOrEqualTo(String value) {
+            addCriterion("weight_min >=", value, "weightMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMinLessThan(String value) {
+            addCriterion("weight_min <", value, "weightMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMinLessThanOrEqualTo(String value) {
+            addCriterion("weight_min <=", value, "weightMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMinLike(String value) {
+            addCriterion("weight_min like", value, "weightMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMinNotLike(String value) {
+            addCriterion("weight_min not like", value, "weightMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMinIn(List<String> values) {
+            addCriterion("weight_min in", values, "weightMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMinNotIn(List<String> values) {
+            addCriterion("weight_min not in", values, "weightMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMinBetween(String value1, String value2) {
+            addCriterion("weight_min between", value1, value2, "weightMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWeightMinNotBetween(String value1, String value2) {
+            addCriterion("weight_min not between", value1, value2, "weightMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMaxIsNull() {
+            addCriterion("fat_max is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMaxIsNotNull() {
+            addCriterion("fat_max is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMaxEqualTo(String value) {
+            addCriterion("fat_max =", value, "fatMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMaxNotEqualTo(String value) {
+            addCriterion("fat_max <>", value, "fatMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMaxGreaterThan(String value) {
+            addCriterion("fat_max >", value, "fatMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMaxGreaterThanOrEqualTo(String value) {
+            addCriterion("fat_max >=", value, "fatMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMaxLessThan(String value) {
+            addCriterion("fat_max <", value, "fatMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMaxLessThanOrEqualTo(String value) {
+            addCriterion("fat_max <=", value, "fatMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMaxLike(String value) {
+            addCriterion("fat_max like", value, "fatMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMaxNotLike(String value) {
+            addCriterion("fat_max not like", value, "fatMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMaxIn(List<String> values) {
+            addCriterion("fat_max in", values, "fatMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMaxNotIn(List<String> values) {
+            addCriterion("fat_max not in", values, "fatMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMaxBetween(String value1, String value2) {
+            addCriterion("fat_max between", value1, value2, "fatMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMaxNotBetween(String value1, String value2) {
+            addCriterion("fat_max not between", value1, value2, "fatMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMinIsNull() {
+            addCriterion("fat_min is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMinIsNotNull() {
+            addCriterion("fat_min is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMinEqualTo(String value) {
+            addCriterion("fat_min =", value, "fatMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMinNotEqualTo(String value) {
+            addCriterion("fat_min <>", value, "fatMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMinGreaterThan(String value) {
+            addCriterion("fat_min >", value, "fatMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMinGreaterThanOrEqualTo(String value) {
+            addCriterion("fat_min >=", value, "fatMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMinLessThan(String value) {
+            addCriterion("fat_min <", value, "fatMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMinLessThanOrEqualTo(String value) {
+            addCriterion("fat_min <=", value, "fatMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMinLike(String value) {
+            addCriterion("fat_min like", value, "fatMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMinNotLike(String value) {
+            addCriterion("fat_min not like", value, "fatMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMinIn(List<String> values) {
+            addCriterion("fat_min in", values, "fatMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMinNotIn(List<String> values) {
+            addCriterion("fat_min not in", values, "fatMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMinBetween(String value1, String value2) {
+            addCriterion("fat_min between", value1, value2, "fatMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andFatMinNotBetween(String value1, String value2) {
+            addCriterion("fat_min not between", value1, value2, "fatMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMaxIsNull() {
+            addCriterion("bone_max is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMaxIsNotNull() {
+            addCriterion("bone_max is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMaxEqualTo(String value) {
+            addCriterion("bone_max =", value, "boneMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMaxNotEqualTo(String value) {
+            addCriterion("bone_max <>", value, "boneMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMaxGreaterThan(String value) {
+            addCriterion("bone_max >", value, "boneMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMaxGreaterThanOrEqualTo(String value) {
+            addCriterion("bone_max >=", value, "boneMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMaxLessThan(String value) {
+            addCriterion("bone_max <", value, "boneMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMaxLessThanOrEqualTo(String value) {
+            addCriterion("bone_max <=", value, "boneMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMaxLike(String value) {
+            addCriterion("bone_max like", value, "boneMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMaxNotLike(String value) {
+            addCriterion("bone_max not like", value, "boneMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMaxIn(List<String> values) {
+            addCriterion("bone_max in", values, "boneMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMaxNotIn(List<String> values) {
+            addCriterion("bone_max not in", values, "boneMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMaxBetween(String value1, String value2) {
+            addCriterion("bone_max between", value1, value2, "boneMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMaxNotBetween(String value1, String value2) {
+            addCriterion("bone_max not between", value1, value2, "boneMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMinIsNull() {
+            addCriterion("bone_min is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMinIsNotNull() {
+            addCriterion("bone_min is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMinEqualTo(String value) {
+            addCriterion("bone_min =", value, "boneMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMinNotEqualTo(String value) {
+            addCriterion("bone_min <>", value, "boneMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMinGreaterThan(String value) {
+            addCriterion("bone_min >", value, "boneMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMinGreaterThanOrEqualTo(String value) {
+            addCriterion("bone_min >=", value, "boneMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMinLessThan(String value) {
+            addCriterion("bone_min <", value, "boneMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMinLessThanOrEqualTo(String value) {
+            addCriterion("bone_min <=", value, "boneMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMinLike(String value) {
+            addCriterion("bone_min like", value, "boneMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMinNotLike(String value) {
+            addCriterion("bone_min not like", value, "boneMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMinIn(List<String> values) {
+            addCriterion("bone_min in", values, "boneMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMinNotIn(List<String> values) {
+            addCriterion("bone_min not in", values, "boneMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMinBetween(String value1, String value2) {
+            addCriterion("bone_min between", value1, value2, "boneMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBoneMinNotBetween(String value1, String value2) {
+            addCriterion("bone_min not between", value1, value2, "boneMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMaxIsNull() {
+            addCriterion("protein_max is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMaxIsNotNull() {
+            addCriterion("protein_max is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMaxEqualTo(String value) {
+            addCriterion("protein_max =", value, "proteinMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMaxNotEqualTo(String value) {
+            addCriterion("protein_max <>", value, "proteinMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMaxGreaterThan(String value) {
+            addCriterion("protein_max >", value, "proteinMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMaxGreaterThanOrEqualTo(String value) {
+            addCriterion("protein_max >=", value, "proteinMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMaxLessThan(String value) {
+            addCriterion("protein_max <", value, "proteinMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMaxLessThanOrEqualTo(String value) {
+            addCriterion("protein_max <=", value, "proteinMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMaxLike(String value) {
+            addCriterion("protein_max like", value, "proteinMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMaxNotLike(String value) {
+            addCriterion("protein_max not like", value, "proteinMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMaxIn(List<String> values) {
+            addCriterion("protein_max in", values, "proteinMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMaxNotIn(List<String> values) {
+            addCriterion("protein_max not in", values, "proteinMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMaxBetween(String value1, String value2) {
+            addCriterion("protein_max between", value1, value2, "proteinMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMaxNotBetween(String value1, String value2) {
+            addCriterion("protein_max not between", value1, value2, "proteinMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMinIsNull() {
+            addCriterion("protein_min is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMinIsNotNull() {
+            addCriterion("protein_min is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMinEqualTo(String value) {
+            addCriterion("protein_min =", value, "proteinMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMinNotEqualTo(String value) {
+            addCriterion("protein_min <>", value, "proteinMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMinGreaterThan(String value) {
+            addCriterion("protein_min >", value, "proteinMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMinGreaterThanOrEqualTo(String value) {
+            addCriterion("protein_min >=", value, "proteinMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMinLessThan(String value) {
+            addCriterion("protein_min <", value, "proteinMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMinLessThanOrEqualTo(String value) {
+            addCriterion("protein_min <=", value, "proteinMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMinLike(String value) {
+            addCriterion("protein_min like", value, "proteinMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMinNotLike(String value) {
+            addCriterion("protein_min not like", value, "proteinMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMinIn(List<String> values) {
+            addCriterion("protein_min in", values, "proteinMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMinNotIn(List<String> values) {
+            addCriterion("protein_min not in", values, "proteinMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMinBetween(String value1, String value2) {
+            addCriterion("protein_min between", value1, value2, "proteinMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andProteinMinNotBetween(String value1, String value2) {
+            addCriterion("protein_min not between", value1, value2, "proteinMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMaxIsNull() {
+            addCriterion("water_max is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMaxIsNotNull() {
+            addCriterion("water_max is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMaxEqualTo(String value) {
+            addCriterion("water_max =", value, "waterMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMaxNotEqualTo(String value) {
+            addCriterion("water_max <>", value, "waterMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMaxGreaterThan(String value) {
+            addCriterion("water_max >", value, "waterMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMaxGreaterThanOrEqualTo(String value) {
+            addCriterion("water_max >=", value, "waterMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMaxLessThan(String value) {
+            addCriterion("water_max <", value, "waterMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMaxLessThanOrEqualTo(String value) {
+            addCriterion("water_max <=", value, "waterMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMaxLike(String value) {
+            addCriterion("water_max like", value, "waterMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMaxNotLike(String value) {
+            addCriterion("water_max not like", value, "waterMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMaxIn(List<String> values) {
+            addCriterion("water_max in", values, "waterMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMaxNotIn(List<String> values) {
+            addCriterion("water_max not in", values, "waterMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMaxBetween(String value1, String value2) {
+            addCriterion("water_max between", value1, value2, "waterMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMaxNotBetween(String value1, String value2) {
+            addCriterion("water_max not between", value1, value2, "waterMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMinIsNull() {
+            addCriterion("water_min is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMinIsNotNull() {
+            addCriterion("water_min is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMinEqualTo(String value) {
+            addCriterion("water_min =", value, "waterMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMinNotEqualTo(String value) {
+            addCriterion("water_min <>", value, "waterMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMinGreaterThan(String value) {
+            addCriterion("water_min >", value, "waterMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMinGreaterThanOrEqualTo(String value) {
+            addCriterion("water_min >=", value, "waterMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMinLessThan(String value) {
+            addCriterion("water_min <", value, "waterMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMinLessThanOrEqualTo(String value) {
+            addCriterion("water_min <=", value, "waterMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMinLike(String value) {
+            addCriterion("water_min like", value, "waterMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMinNotLike(String value) {
+            addCriterion("water_min not like", value, "waterMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMinIn(List<String> values) {
+            addCriterion("water_min in", values, "waterMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMinNotIn(List<String> values) {
+            addCriterion("water_min not in", values, "waterMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMinBetween(String value1, String value2) {
+            addCriterion("water_min between", value1, value2, "waterMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWaterMinNotBetween(String value1, String value2) {
+            addCriterion("water_min not between", value1, value2, "waterMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMaxIsNull() {
+            addCriterion("muscle_max is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMaxIsNotNull() {
+            addCriterion("muscle_max is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMaxEqualTo(String value) {
+            addCriterion("muscle_max =", value, "muscleMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMaxNotEqualTo(String value) {
+            addCriterion("muscle_max <>", value, "muscleMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMaxGreaterThan(String value) {
+            addCriterion("muscle_max >", value, "muscleMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMaxGreaterThanOrEqualTo(String value) {
+            addCriterion("muscle_max >=", value, "muscleMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMaxLessThan(String value) {
+            addCriterion("muscle_max <", value, "muscleMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMaxLessThanOrEqualTo(String value) {
+            addCriterion("muscle_max <=", value, "muscleMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMaxLike(String value) {
+            addCriterion("muscle_max like", value, "muscleMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMaxNotLike(String value) {
+            addCriterion("muscle_max not like", value, "muscleMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMaxIn(List<String> values) {
+            addCriterion("muscle_max in", values, "muscleMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMaxNotIn(List<String> values) {
+            addCriterion("muscle_max not in", values, "muscleMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMaxBetween(String value1, String value2) {
+            addCriterion("muscle_max between", value1, value2, "muscleMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMaxNotBetween(String value1, String value2) {
+            addCriterion("muscle_max not between", value1, value2, "muscleMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMinIsNull() {
+            addCriterion("muscle_min is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMinIsNotNull() {
+            addCriterion("muscle_min is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMinEqualTo(String value) {
+            addCriterion("muscle_min =", value, "muscleMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMinNotEqualTo(String value) {
+            addCriterion("muscle_min <>", value, "muscleMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMinGreaterThan(String value) {
+            addCriterion("muscle_min >", value, "muscleMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMinGreaterThanOrEqualTo(String value) {
+            addCriterion("muscle_min >=", value, "muscleMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMinLessThan(String value) {
+            addCriterion("muscle_min <", value, "muscleMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMinLessThanOrEqualTo(String value) {
+            addCriterion("muscle_min <=", value, "muscleMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMinLike(String value) {
+            addCriterion("muscle_min like", value, "muscleMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMinNotLike(String value) {
+            addCriterion("muscle_min not like", value, "muscleMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMinIn(List<String> values) {
+            addCriterion("muscle_min in", values, "muscleMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMinNotIn(List<String> values) {
+            addCriterion("muscle_min not in", values, "muscleMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMinBetween(String value1, String value2) {
+            addCriterion("muscle_min between", value1, value2, "muscleMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andMuscleMinNotBetween(String value1, String value2) {
+            addCriterion("muscle_min not between", value1, value2, "muscleMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMaxIsNull() {
+            addCriterion("smm_max is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMaxIsNotNull() {
+            addCriterion("smm_max is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMaxEqualTo(String value) {
+            addCriterion("smm_max =", value, "smmMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMaxNotEqualTo(String value) {
+            addCriterion("smm_max <>", value, "smmMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMaxGreaterThan(String value) {
+            addCriterion("smm_max >", value, "smmMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMaxGreaterThanOrEqualTo(String value) {
+            addCriterion("smm_max >=", value, "smmMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMaxLessThan(String value) {
+            addCriterion("smm_max <", value, "smmMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMaxLessThanOrEqualTo(String value) {
+            addCriterion("smm_max <=", value, "smmMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMaxLike(String value) {
+            addCriterion("smm_max like", value, "smmMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMaxNotLike(String value) {
+            addCriterion("smm_max not like", value, "smmMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMaxIn(List<String> values) {
+            addCriterion("smm_max in", values, "smmMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMaxNotIn(List<String> values) {
+            addCriterion("smm_max not in", values, "smmMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMaxBetween(String value1, String value2) {
+            addCriterion("smm_max between", value1, value2, "smmMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMaxNotBetween(String value1, String value2) {
+            addCriterion("smm_max not between", value1, value2, "smmMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMinIsNull() {
+            addCriterion("smm_min is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMinIsNotNull() {
+            addCriterion("smm_min is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMinEqualTo(String value) {
+            addCriterion("smm_min =", value, "smmMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMinNotEqualTo(String value) {
+            addCriterion("smm_min <>", value, "smmMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMinGreaterThan(String value) {
+            addCriterion("smm_min >", value, "smmMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMinGreaterThanOrEqualTo(String value) {
+            addCriterion("smm_min >=", value, "smmMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMinLessThan(String value) {
+            addCriterion("smm_min <", value, "smmMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMinLessThanOrEqualTo(String value) {
+            addCriterion("smm_min <=", value, "smmMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMinLike(String value) {
+            addCriterion("smm_min like", value, "smmMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMinNotLike(String value) {
+            addCriterion("smm_min not like", value, "smmMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMinIn(List<String> values) {
+            addCriterion("smm_min in", values, "smmMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMinNotIn(List<String> values) {
+            addCriterion("smm_min not in", values, "smmMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMinBetween(String value1, String value2) {
+            addCriterion("smm_min between", value1, value2, "smmMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andSmmMinNotBetween(String value1, String value2) {
+            addCriterion("smm_min not between", value1, value2, "smmMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMaxIsNull() {
+            addCriterion("pbf_max is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMaxIsNotNull() {
+            addCriterion("pbf_max is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMaxEqualTo(String value) {
+            addCriterion("pbf_max =", value, "pbfMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMaxNotEqualTo(String value) {
+            addCriterion("pbf_max <>", value, "pbfMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMaxGreaterThan(String value) {
+            addCriterion("pbf_max >", value, "pbfMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMaxGreaterThanOrEqualTo(String value) {
+            addCriterion("pbf_max >=", value, "pbfMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMaxLessThan(String value) {
+            addCriterion("pbf_max <", value, "pbfMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMaxLessThanOrEqualTo(String value) {
+            addCriterion("pbf_max <=", value, "pbfMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMaxLike(String value) {
+            addCriterion("pbf_max like", value, "pbfMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMaxNotLike(String value) {
+            addCriterion("pbf_max not like", value, "pbfMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMaxIn(List<String> values) {
+            addCriterion("pbf_max in", values, "pbfMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMaxNotIn(List<String> values) {
+            addCriterion("pbf_max not in", values, "pbfMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMaxBetween(String value1, String value2) {
+            addCriterion("pbf_max between", value1, value2, "pbfMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMaxNotBetween(String value1, String value2) {
+            addCriterion("pbf_max not between", value1, value2, "pbfMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMinIsNull() {
+            addCriterion("pbf_min is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMinIsNotNull() {
+            addCriterion("pbf_min is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMinEqualTo(String value) {
+            addCriterion("pbf_min =", value, "pbfMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMinNotEqualTo(String value) {
+            addCriterion("pbf_min <>", value, "pbfMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMinGreaterThan(String value) {
+            addCriterion("pbf_min >", value, "pbfMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMinGreaterThanOrEqualTo(String value) {
+            addCriterion("pbf_min >=", value, "pbfMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMinLessThan(String value) {
+            addCriterion("pbf_min <", value, "pbfMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMinLessThanOrEqualTo(String value) {
+            addCriterion("pbf_min <=", value, "pbfMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMinLike(String value) {
+            addCriterion("pbf_min like", value, "pbfMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMinNotLike(String value) {
+            addCriterion("pbf_min not like", value, "pbfMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMinIn(List<String> values) {
+            addCriterion("pbf_min in", values, "pbfMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMinNotIn(List<String> values) {
+            addCriterion("pbf_min not in", values, "pbfMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMinBetween(String value1, String value2) {
+            addCriterion("pbf_min between", value1, value2, "pbfMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andPbfMinNotBetween(String value1, String value2) {
+            addCriterion("pbf_min not between", value1, value2, "pbfMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMaxIsNull() {
+            addCriterion("bmi_max is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMaxIsNotNull() {
+            addCriterion("bmi_max is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMaxEqualTo(String value) {
+            addCriterion("bmi_max =", value, "bmiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMaxNotEqualTo(String value) {
+            addCriterion("bmi_max <>", value, "bmiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMaxGreaterThan(String value) {
+            addCriterion("bmi_max >", value, "bmiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMaxGreaterThanOrEqualTo(String value) {
+            addCriterion("bmi_max >=", value, "bmiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMaxLessThan(String value) {
+            addCriterion("bmi_max <", value, "bmiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMaxLessThanOrEqualTo(String value) {
+            addCriterion("bmi_max <=", value, "bmiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMaxLike(String value) {
+            addCriterion("bmi_max like", value, "bmiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMaxNotLike(String value) {
+            addCriterion("bmi_max not like", value, "bmiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMaxIn(List<String> values) {
+            addCriterion("bmi_max in", values, "bmiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMaxNotIn(List<String> values) {
+            addCriterion("bmi_max not in", values, "bmiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMaxBetween(String value1, String value2) {
+            addCriterion("bmi_max between", value1, value2, "bmiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMaxNotBetween(String value1, String value2) {
+            addCriterion("bmi_max not between", value1, value2, "bmiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMinIsNull() {
+            addCriterion("bmi_min is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMinIsNotNull() {
+            addCriterion("bmi_min is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMinEqualTo(String value) {
+            addCriterion("bmi_min =", value, "bmiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMinNotEqualTo(String value) {
+            addCriterion("bmi_min <>", value, "bmiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMinGreaterThan(String value) {
+            addCriterion("bmi_min >", value, "bmiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMinGreaterThanOrEqualTo(String value) {
+            addCriterion("bmi_min >=", value, "bmiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMinLessThan(String value) {
+            addCriterion("bmi_min <", value, "bmiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMinLessThanOrEqualTo(String value) {
+            addCriterion("bmi_min <=", value, "bmiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMinLike(String value) {
+            addCriterion("bmi_min like", value, "bmiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMinNotLike(String value) {
+            addCriterion("bmi_min not like", value, "bmiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMinIn(List<String> values) {
+            addCriterion("bmi_min in", values, "bmiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMinNotIn(List<String> values) {
+            addCriterion("bmi_min not in", values, "bmiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMinBetween(String value1, String value2) {
+            addCriterion("bmi_min between", value1, value2, "bmiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andBmiMinNotBetween(String value1, String value2) {
+            addCriterion("bmi_min not between", value1, value2, "bmiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMaxIsNull() {
+            addCriterion("whr_max is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMaxIsNotNull() {
+            addCriterion("whr_max is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMaxEqualTo(String value) {
+            addCriterion("whr_max =", value, "whrMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMaxNotEqualTo(String value) {
+            addCriterion("whr_max <>", value, "whrMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMaxGreaterThan(String value) {
+            addCriterion("whr_max >", value, "whrMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMaxGreaterThanOrEqualTo(String value) {
+            addCriterion("whr_max >=", value, "whrMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMaxLessThan(String value) {
+            addCriterion("whr_max <", value, "whrMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMaxLessThanOrEqualTo(String value) {
+            addCriterion("whr_max <=", value, "whrMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMaxLike(String value) {
+            addCriterion("whr_max like", value, "whrMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMaxNotLike(String value) {
+            addCriterion("whr_max not like", value, "whrMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMaxIn(List<String> values) {
+            addCriterion("whr_max in", values, "whrMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMaxNotIn(List<String> values) {
+            addCriterion("whr_max not in", values, "whrMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMaxBetween(String value1, String value2) {
+            addCriterion("whr_max between", value1, value2, "whrMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMaxNotBetween(String value1, String value2) {
+            addCriterion("whr_max not between", value1, value2, "whrMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMinIsNull() {
+            addCriterion("whr_min is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMinIsNotNull() {
+            addCriterion("whr_min is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMinEqualTo(String value) {
+            addCriterion("whr_min =", value, "whrMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMinNotEqualTo(String value) {
+            addCriterion("whr_min <>", value, "whrMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMinGreaterThan(String value) {
+            addCriterion("whr_min >", value, "whrMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMinGreaterThanOrEqualTo(String value) {
+            addCriterion("whr_min >=", value, "whrMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMinLessThan(String value) {
+            addCriterion("whr_min <", value, "whrMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMinLessThanOrEqualTo(String value) {
+            addCriterion("whr_min <=", value, "whrMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMinLike(String value) {
+            addCriterion("whr_min like", value, "whrMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMinNotLike(String value) {
+            addCriterion("whr_min not like", value, "whrMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMinIn(List<String> values) {
+            addCriterion("whr_min in", values, "whrMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMinNotIn(List<String> values) {
+            addCriterion("whr_min not in", values, "whrMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMinBetween(String value1, String value2) {
+            addCriterion("whr_min between", value1, value2, "whrMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andWhrMinNotBetween(String value1, String value2) {
+            addCriterion("whr_min not between", value1, value2, "whrMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMaxIsNull() {
+            addCriterion("edema_max is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMaxIsNotNull() {
+            addCriterion("edema_max is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMaxEqualTo(String value) {
+            addCriterion("edema_max =", value, "edemaMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMaxNotEqualTo(String value) {
+            addCriterion("edema_max <>", value, "edemaMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMaxGreaterThan(String value) {
+            addCriterion("edema_max >", value, "edemaMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMaxGreaterThanOrEqualTo(String value) {
+            addCriterion("edema_max >=", value, "edemaMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMaxLessThan(String value) {
+            addCriterion("edema_max <", value, "edemaMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMaxLessThanOrEqualTo(String value) {
+            addCriterion("edema_max <=", value, "edemaMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMaxLike(String value) {
+            addCriterion("edema_max like", value, "edemaMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMaxNotLike(String value) {
+            addCriterion("edema_max not like", value, "edemaMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMaxIn(List<String> values) {
+            addCriterion("edema_max in", values, "edemaMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMaxNotIn(List<String> values) {
+            addCriterion("edema_max not in", values, "edemaMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMaxBetween(String value1, String value2) {
+            addCriterion("edema_max between", value1, value2, "edemaMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMaxNotBetween(String value1, String value2) {
+            addCriterion("edema_max not between", value1, value2, "edemaMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMinIsNull() {
+            addCriterion("edema_min is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMinIsNotNull() {
+            addCriterion("edema_min is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMinEqualTo(String value) {
+            addCriterion("edema_min =", value, "edemaMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMinNotEqualTo(String value) {
+            addCriterion("edema_min <>", value, "edemaMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMinGreaterThan(String value) {
+            addCriterion("edema_min >", value, "edemaMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMinGreaterThanOrEqualTo(String value) {
+            addCriterion("edema_min >=", value, "edemaMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMinLessThan(String value) {
+            addCriterion("edema_min <", value, "edemaMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMinLessThanOrEqualTo(String value) {
+            addCriterion("edema_min <=", value, "edemaMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMinLike(String value) {
+            addCriterion("edema_min like", value, "edemaMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMinNotLike(String value) {
+            addCriterion("edema_min not like", value, "edemaMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMinIn(List<String> values) {
+            addCriterion("edema_min in", values, "edemaMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMinNotIn(List<String> values) {
+            addCriterion("edema_min not in", values, "edemaMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMinBetween(String value1, String value2) {
+            addCriterion("edema_min between", value1, value2, "edemaMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andEdemaMinNotBetween(String value1, String value2) {
+            addCriterion("edema_min not between", value1, value2, "edemaMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMaxIsNull() {
+            addCriterion("vfi_max is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMaxIsNotNull() {
+            addCriterion("vfi_max is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMaxEqualTo(String value) {
+            addCriterion("vfi_max =", value, "vfiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMaxNotEqualTo(String value) {
+            addCriterion("vfi_max <>", value, "vfiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMaxGreaterThan(String value) {
+            addCriterion("vfi_max >", value, "vfiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMaxGreaterThanOrEqualTo(String value) {
+            addCriterion("vfi_max >=", value, "vfiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMaxLessThan(String value) {
+            addCriterion("vfi_max <", value, "vfiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMaxLessThanOrEqualTo(String value) {
+            addCriterion("vfi_max <=", value, "vfiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMaxLike(String value) {
+            addCriterion("vfi_max like", value, "vfiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMaxNotLike(String value) {
+            addCriterion("vfi_max not like", value, "vfiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMaxIn(List<String> values) {
+            addCriterion("vfi_max in", values, "vfiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMaxNotIn(List<String> values) {
+            addCriterion("vfi_max not in", values, "vfiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMaxBetween(String value1, String value2) {
+            addCriterion("vfi_max between", value1, value2, "vfiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMaxNotBetween(String value1, String value2) {
+            addCriterion("vfi_max not between", value1, value2, "vfiMax");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMinIsNull() {
+            addCriterion("vfi_min is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMinIsNotNull() {
+            addCriterion("vfi_min is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMinEqualTo(String value) {
+            addCriterion("vfi_min =", value, "vfiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMinNotEqualTo(String value) {
+            addCriterion("vfi_min <>", value, "vfiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMinGreaterThan(String value) {
+            addCriterion("vfi_min >", value, "vfiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMinGreaterThanOrEqualTo(String value) {
+            addCriterion("vfi_min >=", value, "vfiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMinLessThan(String value) {
+            addCriterion("vfi_min <", value, "vfiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMinLessThanOrEqualTo(String value) {
+            addCriterion("vfi_min <=", value, "vfiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMinLike(String value) {
+            addCriterion("vfi_min like", value, "vfiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMinNotLike(String value) {
+            addCriterion("vfi_min not like", value, "vfiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMinIn(List<String> values) {
+            addCriterion("vfi_min in", values, "vfiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMinNotIn(List<String> values) {
+            addCriterion("vfi_min not in", values, "vfiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMinBetween(String value1, String value2) {
+            addCriterion("vfi_min between", value1, value2, "vfiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andVfiMinNotBetween(String value1, String value2) {
+            addCriterion("vfi_min not between", value1, value2, "vfiMin");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiagnosisIsNull() {
+            addCriterion("diagnosis is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiagnosisIsNotNull() {
+            addCriterion("diagnosis is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiagnosisEqualTo(String value) {
+            addCriterion("diagnosis =", value, "diagnosis");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiagnosisNotEqualTo(String value) {
+            addCriterion("diagnosis <>", value, "diagnosis");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiagnosisGreaterThan(String value) {
+            addCriterion("diagnosis >", value, "diagnosis");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiagnosisGreaterThanOrEqualTo(String value) {
+            addCriterion("diagnosis >=", value, "diagnosis");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiagnosisLessThan(String value) {
+            addCriterion("diagnosis <", value, "diagnosis");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiagnosisLessThanOrEqualTo(String value) {
+            addCriterion("diagnosis <=", value, "diagnosis");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiagnosisLike(String value) {
+            addCriterion("diagnosis like", value, "diagnosis");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiagnosisNotLike(String value) {
+            addCriterion("diagnosis not like", value, "diagnosis");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiagnosisIn(List<String> values) {
+            addCriterion("diagnosis in", values, "diagnosis");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiagnosisNotIn(List<String> values) {
+            addCriterion("diagnosis not in", values, "diagnosis");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiagnosisBetween(String value1, String value2) {
+            addCriterion("diagnosis between", value1, value2, "diagnosis");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiagnosisNotBetween(String value1, String value2) {
+            addCriterion("diagnosis not between", value1, value2, "diagnosis");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIsNull() {
+            addCriterion("status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIsNotNull() {
+            addCriterion("status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusEqualTo(Byte value) {
+            addCriterion("status =", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotEqualTo(Byte value) {
+            addCriterion("status <>", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThan(Byte value) {
+            addCriterion("status >", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusGreaterThanOrEqualTo(Byte value) {
+            addCriterion("status >=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThan(Byte value) {
+            addCriterion("status <", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusLessThanOrEqualTo(Byte value) {
+            addCriterion("status <=", value, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusIn(List<Byte> values) {
+            addCriterion("status in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotIn(List<Byte> values) {
+            addCriterion("status not in", values, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusBetween(Byte value1, Byte value2) {
+            addCriterion("status between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andStatusNotBetween(Byte value1, Byte value2) {
+            addCriterion("status not between", value1, value2, "status");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagIsNull() {
+            addCriterion("del_flag is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagIsNotNull() {
+            addCriterion("del_flag is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagEqualTo(Byte value) {
+            addCriterion("del_flag =", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagNotEqualTo(Byte value) {
+            addCriterion("del_flag <>", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagGreaterThan(Byte value) {
+            addCriterion("del_flag >", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagGreaterThanOrEqualTo(Byte value) {
+            addCriterion("del_flag >=", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagLessThan(Byte value) {
+            addCriterion("del_flag <", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagLessThanOrEqualTo(Byte value) {
+            addCriterion("del_flag <=", value, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagIn(List<Byte> values) {
+            addCriterion("del_flag in", values, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagNotIn(List<Byte> values) {
+            addCriterion("del_flag not in", values, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagBetween(Byte value1, Byte value2) {
+            addCriterion("del_flag between", value1, value2, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andDelFlagNotBetween(Byte value1, Byte value2) {
+            addCriterion("del_flag not between", value1, value2, "delFlag");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdIsNull() {
+            addCriterion("tenant_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdIsNotNull() {
+            addCriterion("tenant_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdEqualTo(Long value) {
+            addCriterion("tenant_id =", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdNotEqualTo(Long value) {
+            addCriterion("tenant_id <>", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdGreaterThan(Long value) {
+            addCriterion("tenant_id >", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdGreaterThanOrEqualTo(Long value) {
+            addCriterion("tenant_id >=", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdLessThan(Long value) {
+            addCriterion("tenant_id <", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdLessThanOrEqualTo(Long value) {
+            addCriterion("tenant_id <=", value, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdIn(List<Long> values) {
+            addCriterion("tenant_id in", values, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdNotIn(List<Long> values) {
+            addCriterion("tenant_id not in", values, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdBetween(Long value1, Long value2) {
+            addCriterion("tenant_id between", value1, value2, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andTenantIdNotBetween(Long value1, Long value2) {
+            addCriterion("tenant_id not between", value1, value2, "tenantId");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByIsNull() {
+            addCriterion("create_by is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByIsNotNull() {
+            addCriterion("create_by is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByEqualTo(String value) {
+            addCriterion("create_by =", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotEqualTo(String value) {
+            addCriterion("create_by <>", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByGreaterThan(String value) {
+            addCriterion("create_by >", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByGreaterThanOrEqualTo(String value) {
+            addCriterion("create_by >=", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByLessThan(String value) {
+            addCriterion("create_by <", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByLessThanOrEqualTo(String value) {
+            addCriterion("create_by <=", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByLike(String value) {
+            addCriterion("create_by like", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotLike(String value) {
+            addCriterion("create_by not like", value, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByIn(List<String> values) {
+            addCriterion("create_by in", values, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotIn(List<String> values) {
+            addCriterion("create_by not in", values, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByBetween(String value1, String value2) {
+            addCriterion("create_by between", value1, value2, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateByNotBetween(String value1, String value2) {
+            addCriterion("create_by not between", value1, value2, "createBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNull() {
+            addCriterion("create_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNotNull() {
+            addCriterion("create_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeEqualTo(Date value) {
+            addCriterion("create_time =", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotEqualTo(Date value) {
+            addCriterion("create_time <>", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThan(Date value) {
+            addCriterion("create_time >", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("create_time >=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThan(Date value) {
+            addCriterion("create_time <", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("create_time <=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIn(List<Date> values) {
+            addCriterion("create_time in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotIn(List<Date> values) {
+            addCriterion("create_time not in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeBetween(Date value1, Date value2) {
+            addCriterion("create_time between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("create_time not between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByIsNull() {
+            addCriterion("update_by is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByIsNotNull() {
+            addCriterion("update_by is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByEqualTo(String value) {
+            addCriterion("update_by =", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotEqualTo(String value) {
+            addCriterion("update_by <>", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByGreaterThan(String value) {
+            addCriterion("update_by >", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByGreaterThanOrEqualTo(String value) {
+            addCriterion("update_by >=", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByLessThan(String value) {
+            addCriterion("update_by <", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByLessThanOrEqualTo(String value) {
+            addCriterion("update_by <=", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByLike(String value) {
+            addCriterion("update_by like", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotLike(String value) {
+            addCriterion("update_by not like", value, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByIn(List<String> values) {
+            addCriterion("update_by in", values, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotIn(List<String> values) {
+            addCriterion("update_by not in", values, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByBetween(String value1, String value2) {
+            addCriterion("update_by between", value1, value2, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateByNotBetween(String value1, String value2) {
+            addCriterion("update_by not between", value1, value2, "updateBy");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNull() {
+            addCriterion("update_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNotNull() {
+            addCriterion("update_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeEqualTo(Date value) {
+            addCriterion("update_time =", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotEqualTo(Date value) {
+            addCriterion("update_time <>", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThan(Date value) {
+            addCriterion("update_time >", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("update_time >=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThan(Date value) {
+            addCriterion("update_time <", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("update_time <=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIn(List<Date> values) {
+            addCriterion("update_time in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotIn(List<Date> values) {
+            addCriterion("update_time not in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeBetween(Date value1, Date value2) {
+            addCriterion("update_time between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("update_time not between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIsNull() {
+            addCriterion("remark is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIsNotNull() {
+            addCriterion("remark is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkEqualTo(String value) {
+            addCriterion("remark =", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotEqualTo(String value) {
+            addCriterion("remark <>", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkGreaterThan(String value) {
+            addCriterion("remark >", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+            addCriterion("remark >=", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLessThan(String value) {
+            addCriterion("remark <", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLessThanOrEqualTo(String value) {
+            addCriterion("remark <=", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLike(String value) {
+            addCriterion("remark like", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotLike(String value) {
+            addCriterion("remark not like", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIn(List<String> values) {
+            addCriterion("remark in", values, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotIn(List<String> values) {
+            addCriterion("remark not in", values, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkBetween(String value1, String value2) {
+            addCriterion("remark between", value1, value2, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotBetween(String value1, String value2) {
+            addCriterion("remark not between", value1, value2, "remark");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/AmsWxQrCodeVo.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/AmsWxQrCodeVo.java
new file mode 100644
index 00000000..ff78861a
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/AmsWxQrCodeVo.java
@@ -0,0 +1,84 @@
+package com.acupuncture.system.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+public class AmsWxQrCodeVo {
+
+    @Data
+    public static class Result {
+        @ApiModelProperty("")
+        private Long id;
+        @ApiModelProperty("图片地址")
+        private String url;
+        @ApiModelProperty("小程序页面路径")
+        private String path;
+        @ApiModelProperty("部门ID")
+        private Long deptId;
+        @ApiModelProperty("病区ID")
+        private Long diseaseId;
+        @ApiModelProperty("账户ID")
+        private String userName;
+        @ApiModelProperty("")
+        private String remark;
+        @ApiModelProperty("")
+        private String createBy;
+        @ApiModelProperty("")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private Date createTime;
+        @ApiModelProperty("")
+        private String updateBy;
+        @ApiModelProperty("")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private Date updateTime;
+        @ApiModelProperty("科室名")
+        private String deptName;
+        @ApiModelProperty("病区名")
+        private String areaName;
+
+    }
+
+    @Data
+    public static class ScreenResult {
+        @ApiModelProperty("")
+        private Long id;
+        @ApiModelProperty("图片地址")
+        private String url;
+        @ApiModelProperty("小程序页面路径")
+        private String path;
+        @ApiModelProperty("医院ID")
+        private Long tenantId;
+        @ApiModelProperty("")
+        private String remark;
+        @ApiModelProperty("")
+        private String createBy;
+        @ApiModelProperty("")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private Date createTime;
+        @ApiModelProperty("")
+        private String updateBy;
+        @ApiModelProperty("")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private Date updateTime;
+        @ApiModelProperty("科室名")
+        private String deptName;
+        @ApiModelProperty("病区名")
+        private String areaName;
+
+        private String tenantName;
+
+        @ApiModelProperty("联系人")
+        private String contacts;
+        @ApiModelProperty("联系电话")
+        private String phone;
+        @ApiModelProperty("联系地址")
+        private String address;
+
+        private String centerName;
+
+    }
+
+}
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/DmsLoginUserVo.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/DmsLoginUserVo.java
index b5f80a16..afe90674 100644
--- a/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/DmsLoginUserVo.java
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/DmsLoginUserVo.java
@@ -16,6 +16,10 @@ import java.util.Date;
 
 public class DmsLoginUserVo {
 
+    @Data
+    public static class Query {
+        private Long id;
+    }
     @Data
     public static class DmsUserVo {
         private Integer id;
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/ExternalVo.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/ExternalVo.java
new file mode 100644
index 00000000..67116276
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/ExternalVo.java
@@ -0,0 +1,218 @@
+package com.acupuncture.system.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * @Author zzc
+ * @Package com.acupuncture.system.domain.dto
+ * @Date 2025/3/15 10:30
+ * @description:
+ */
+public class ExternalVo {
+
+    @Data
+    public static class Result{
+        private String message;
+
+        private String gid;
+
+        private String memberid;
+
+        private String testId;
+
+        private String testDate;
+
+        private String name;
+
+        private String sex;
+
+        private String height;
+
+        private String birthYear;
+
+        private String weight;
+        private String phone;
+    }
+
+    @Data
+    @ApiModel("人体成分数据上传")
+    public static class RtcfInfoVo{
+        private Long id;
+
+        private String message;
+
+        private String uuid;
+
+        private String deviceId;
+
+        private String deviceType;
+
+        private String memberid;
+
+        private String testId;
+
+        private String testDate;
+
+        private String name;
+
+        private String sex;
+
+        private String height;
+
+        private String birthYear;
+
+        private String weight;
+
+        private String fat;
+
+        private String bone;
+
+        private String protein;
+
+        private String water;
+
+        private String muscle;
+
+        private String smm;
+
+        private String pbf;
+
+        private String bmi;
+
+        private String bmr;
+
+        private String whr;
+
+        private String edema;
+
+        private String vfi;
+
+        private String bodyAge;
+
+        private String score;
+
+        private String bodyType;
+
+        private String lbm;
+
+        private String icw;
+
+        private String ecw;
+
+        private String standardWeight;
+
+        private String weightControl;
+
+        private String fatControl;
+
+        private String muscleControl;
+
+        private String liverRisk;
+
+        private String asmi;
+
+        private String trFat;
+
+        private String laFat;
+
+        private String raFat;
+
+        private String llFat;
+
+        private String rlFat;
+
+        private String trWater;
+
+        private String laWater;
+
+        private String raWater;
+
+        private String llWater;
+
+        private String rlWater;
+
+        private String trMuscle;
+
+        private String laMuscle;
+
+        private String raMuscle;
+
+        private String llMuscle;
+
+        private String rlMuscle;
+
+        private String trBone;
+
+        private String laBone;
+
+        private String raBone;
+
+        private String llBone;
+
+        private String rlBone;
+
+        private String weightMax;
+
+        private String weightMin;
+
+        private String fatMax;
+
+        private String fatMin;
+
+        private String boneMax;
+
+        private String boneMin;
+
+        private String proteinMax;
+
+        private String proteinMin;
+
+        private String waterMax;
+
+        private String waterMin;
+
+        private String muscleMax;
+
+        private String muscleMin;
+
+        private String smmMax;
+
+        private String smmMin;
+
+        private String pbfMax;
+
+        private String pbfMin;
+
+        private String bmiMax;
+
+        private String bmiMin;
+
+        private String whrMax;
+
+        private String whrMin;
+
+        private String edemaMax;
+
+        private String edemaMin;
+
+        private String vfiMax;
+
+        private String vfiMin;
+
+        private String diagnosis;
+
+    }
+
+    @Data
+    @ApiModel("报告图片")
+    public static class ReportImagVo{
+        private Long id;
+
+        private String patientId;
+
+        private String fileName;
+
+        private String filePath;
+    }
+}
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/QuestionnaireVo.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/QuestionnaireVo.java
new file mode 100644
index 00000000..e9634874
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/QuestionnaireVo.java
@@ -0,0 +1,549 @@
+package com.acupuncture.system.domain.vo;
+
+import cn.hutool.core.util.DesensitizedUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.PhoneUtil;
+import cn.hutool.core.util.StrUtil;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class QuestionnaireVo {
+    @Data
+    @ApiModel("地区信息")
+    public static class AreaInfo{
+        @ApiModelProperty("地区id")
+        private Long id;
+        @ApiModelProperty("地区名称")
+        private String name;
+        @ApiModelProperty("子地区")
+        private List<AreaInfo> child;
+        private List<HospitalDto> hospitalList;
+    }
+
+    @Data
+    @ApiModel("地区信息")
+    public static class AreaBasic{
+        @ApiModelProperty("地区id")
+        private Long id;
+        @ApiModelProperty("地区名称")
+        private String name;
+    }
+
+    @Data
+    @ApiModel("医院信息")
+    public static class HospitalDto{
+        @ApiModelProperty("地区id")
+        private Long id;
+        @ApiModelProperty("地区名称")
+        private String name;
+    }
+
+    @Data
+    @ApiModel("问卷信息")
+    public static class QuestionnaireInfo {
+        @ApiModelProperty("code")
+        private String code;
+        @ApiModelProperty("答案")
+        private String answer;
+    }
+
+    @Data
+    @ApiModel("填写问卷状态")
+    public static class WriteStatus {
+        @ApiModelProperty("问卷id")
+        private Long id;
+        @ApiModelProperty("问卷名称")
+        private String questionnaireName;
+        @ApiModelProperty("问卷类型(0-卒中)")
+        private Byte type;
+        @ApiModelProperty("填写状态(-1-未填写,0-保存,1-修改)")
+        private Integer isWrite;
+        @JsonIgnore
+        @ApiModelProperty("记录id")
+        private Long recordId;
+        @ApiModelProperty("问卷开始时间")
+        private Long start;
+        @ApiModelProperty("问卷结束时间")
+        private Long end;
+        @ApiModelProperty("填写开始时间")
+        private Long writeStartTime;
+        @ApiModelProperty("填写结束时间")
+        private Long writeEndTime;
+
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private Date createdAt;
+
+        private Byte recStatus;
+
+        private String dataScope;
+
+        private String remark;
+        /**
+         * 0 可以上报  1不可以上报
+         * @return
+         */
+        public int getFlag() {
+            long l = System.currentTimeMillis();
+            if (start != null && end != null) {
+                if (l > start && l < end) {
+                    return 0;
+                }
+            }
+            return 1;
+        }
+    }
+
+    @Data
+    public static class Record{
+        private Long detailId;
+        private String code;
+        private String answer;
+
+    }
+
+    @Data
+    public static class DetailVo{
+        private Long id;
+
+        private String name;
+
+        private String idcard;
+
+        private Integer age;
+
+        private String phone;
+
+        private String city;
+
+        private String county;
+
+        private String province;
+
+        private Byte hospitalLevel;
+
+        private String tenantName;
+
+        private String departments;
+
+        private Long userId;
+
+        private Long screenId;
+
+        private Byte submitStatus;
+
+        private Long positionId;
+
+        private Long hospitailId;
+
+        private Integer rzscResult;
+
+        private Byte screenType;
+
+        private String screenResult;
+
+        private Byte delFlag;
+
+        private String createBy;
+
+        private Date createTime;
+        private List<Record> recordList;
+
+        public String getPhone(){
+            if (StrUtil.isNotBlank(phone)) {
+                return PhoneUtil.hideBetween(phone).toString();
+            }
+            return null;
+        }
+
+    }
+
+    @Data
+    @ApiModel("职位信息")
+    public static class PositionInfo {
+        @ApiModelProperty("职位id")
+        private Long id;
+        @ApiModelProperty("职位名称")
+        private String name;
+    }
+
+    @Data
+    @ApiModel("问卷详情信息")
+    public static class DetailInfo {
+        @ApiModelProperty("问卷详情id")
+        private Long detailId;
+        @ApiModelProperty("问卷id")
+        private Long id;
+
+        private String text;
+
+        private String remark;
+    }
+
+    @Data
+    @ApiModel("是否提交问卷-返回")
+    public static class Submit {
+        @ApiModelProperty("问卷详情id 0:未提交 1:已提交")
+        private Byte submit;
+        @ApiModelProperty("机构信息")
+        private Organization organization;
+    }
+
+    @ApiModel("医院-返回")
+    @Data
+    public static class Organization{
+        @ApiModelProperty("医院ID")
+        private Long id;
+        @ApiModelProperty("医院名字")
+        private String name;
+        @ApiModelProperty("项目ID")
+        private Long projectId;
+    }
+
+    @Data
+    @ApiModel("提交后的提示信息")
+    public static class SubmitInfo {
+        @ApiModelProperty("项目id")
+        private Long projectId;
+        @ApiModelProperty("类型(0-创建,1-加入)")
+        private Byte type;
+        @ApiModelProperty("姓名")
+        private String name;
+        @ApiModelProperty("科室")
+        private String department;
+        @ApiModelProperty("职务")
+        private String position;
+    }
+
+    @Data
+    @ApiModel("医院名称回显-返参")
+    public static class tenantName {
+        @ApiModelProperty("医院名称")
+        private String name;
+    }
+
+    @Data
+    @ApiModel("返回-分享问卷信息")
+    public static class ShareQuestionnaire {
+        @ApiModelProperty("医院名称")
+        private String tenantName;
+        @ApiModelProperty("医生名称")
+        private String doctorName;
+        @ApiModelProperty("二维码路径")
+        private String qrCode;
+        @JsonIgnore
+        private String positionCode;
+    }
+
+    @Data
+    @ApiModel("返回-村医查看工作量")
+    public static class VillageWorkload {
+        @ApiModelProperty("总数")
+        private int totalNum;
+        @ApiModelProperty("高危数量")
+        private int highNum;
+        @ApiModelProperty("中危数量")
+        private int middleNum;
+        @ApiModelProperty("中危数量")
+        private int lowNum;
+        @ApiModelProperty("患者列表")
+        private List<WorkloadList> workloadLists;
+    }
+
+    @Data
+    @ApiModel("返回-村医查看工作量-患者列表")
+    public static class WorkloadList {
+        @ApiModelProperty("问卷详情id")
+        private Long detailId;
+        @ApiModelProperty("姓名")
+        private String name;
+        @ApiModelProperty("手机号(脱敏)")
+        private String phone;
+        @ApiModelProperty("状态 0正常 1高危 2中危 3低危")
+        private Byte type;
+        @ApiModelProperty("提交时间")
+        private Long submitTime;
+        @JsonIgnore
+        private String illnessType;
+
+        public String getPhone() {
+            String p = phone;
+            if(ObjectUtil.isNotNull(phone)){
+                p = DesensitizedUtil.mobilePhone(phone);
+            }
+            return p;
+        }
+
+        public Byte getType() {
+            byte b = 0;
+            if(StrUtil.isNotBlank(illnessType)){
+                if(illnessType.split(",").length >= 3){
+                    b = 1;
+                }else if(illnessType.contains("09") || illnessType.contains("10")){
+                    b = 1;
+                }else if(illnessType.contains("01") || illnessType.contains("03") || illnessType.contains("04")){
+                    b = 2;
+                }else if(illnessType.contains("02") || illnessType.contains("05")
+                        || illnessType.contains("06") || illnessType.contains("07") || illnessType.contains("08")){
+                    b = 3;
+                }
+            }
+            return b;
+        }
+    }
+
+    @Data
+    @ApiModel("返回-卫生院查看工作量")
+    public static class CenterWorkload {
+        @ApiModelProperty("医生id")
+        private Long doctorId;
+        @ApiModelProperty("医生名")
+        private String doctorName;
+        @ApiModelProperty("总数")
+        private int totalNum;
+        @ApiModelProperty("高危数量")
+        private int highNum;
+    }
+
+    @Data
+    @ApiModel("后台分页查看高危筛查信息--返回")
+    public static class BackQueryScreening {
+        @ApiModelProperty("问卷详情id")
+        private Long id;
+        @ApiModelProperty("姓名")
+        private String name;
+        @ApiModelProperty("身份证号")
+        private String idCard;
+        @ApiModelProperty("性别 0女 1男")
+        private String sex;
+        @ApiModelProperty("出生日期")
+        private String birthday;
+        @ApiModelProperty("年龄")
+        private String age;
+        @ApiModelProperty("手机号")
+        private String phone;
+        @ApiModelProperty("备注")
+        private String remark;
+        @ApiModelProperty("病情")
+        private String illness;
+
+        @ApiModelProperty("高血压 0没有 1有")
+        private String hypertension;
+        @ApiModelProperty("血脂 0没有 1有")
+        private String bloodFat;
+        @ApiModelProperty("糖尿病 0没有 1有")
+        private String diabetes;
+        @ApiModelProperty("心房颤动 0没有 1有")
+        private String fibrillation;
+        @ApiModelProperty("吸烟 0没有 1有")
+        private String smoke;
+        @ApiModelProperty("体重 0正常 1超重")
+        private String weight;
+        @ApiModelProperty("运动 0正常 1缺乏")
+        private String sports;
+        @ApiModelProperty("卒中家族史 0没有 1有")
+        private String acupunctureFamily;
+        @ApiModelProperty("脑卒中病史 0没有 1有")
+        private String cerebralStroke;
+        @ApiModelProperty("脑缺血病史 0没有 1有")
+        private String cerebralIschemia;
+        @ApiModelProperty("危险等级 0正常 1高危 2中危 3低危")
+        private Byte type;
+        @ApiModelProperty("健康跟踪 0待处理 1已联系 2已就诊")
+        private Byte healthTracking;
+
+        public byte getType() {
+            byte b = 0;
+            if(StrUtil.isNotBlank(illness)){
+                if(illness.split(",").length >= 3){
+                    b = 1;
+                }else if(illness.contains("09") || illness.contains("10")){
+                    b = 1;
+                }else if(illness.contains("01") || illness.contains("03") || illness.contains("04")){
+                    b = 2;
+                }else if(illness.contains("02") || illness.contains("05")
+                        || illness.contains("06") || illness.contains("07") || illness.contains("08")){
+                    b = 3;
+                }
+            }
+            return b;
+        }
+        public String getTypeString() {
+            String s = "正常";
+            if(ObjectUtil.isNotNull(getType())){
+                switch (getType()){
+                    case 1:
+                        s = "高危";
+                        break;
+                    case 2:
+                        s = "中危";
+                        break;
+                    case 3:
+                        s = "低危";
+                        break;
+                    default:
+                }
+            }
+            return s;
+        }
+        public String getHealthTrackingString() {
+            String s = "待处理";
+            switch (healthTracking){
+                case 1:
+                    s = "已联系";
+                    break;
+                case 2:
+                    s = "已就诊";
+                    break;
+                default:
+            }
+            return s;
+        }
+
+        public static String idCardNum(String id) {
+            if (StringUtils.isBlank(id)) {
+                return "";
+            } else {
+                String num = StringUtils.right(id, 4);
+                return StringUtils.leftPad(num, StringUtils.length(id), "*");
+            }
+        }
+
+        public String getIdCard() {
+            String s = idCard;
+            if(ObjectUtil.isNotNull(idCard)){
+                s = idCardNum(idCard);
+            }
+            return s;
+        }
+
+        public static String mobilePhone(String num) {
+            return StringUtils.isBlank(num) ? "" : StringUtils.left(num, 3).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(num, 4), StringUtils.length(num), "*"), "***"));
+        }
+
+        public String getPhone() {
+            String p = phone;
+            if(ObjectUtil.isNotNull(phone)){
+                p = mobilePhone(phone);
+            }
+            return p;
+        }
+
+        public String getHypertension() {
+            String s = "无";
+            if(StrUtil.isNotBlank(illness)){
+                if(illness.contains("01")){
+                    s = "有";
+                }
+            }
+            return s;
+        }
+
+        public String getBloodFat() {
+            String s = "正常";
+            if(StrUtil.isNotBlank(illness)){
+                if(illness.contains("02")){
+                    s = "异常";
+                }
+            }
+            return s;
+        }
+
+        public String getDiabetes() {
+            String s = "无";
+            if(StrUtil.isNotBlank(illness)){
+                if(illness.contains("03")){
+                    s = "有";
+                }
+            }
+            return s;
+        }
+
+        public String getFibrillation() {
+            String s = "无";
+            if(StrUtil.isNotBlank(illness)){
+                if(illness.contains("04")){
+                    s = "有";
+                }
+            }
+            return s;
+        }
+
+        public String getSmoke() {
+            String s = "无";
+            if(StrUtil.isNotBlank(illness)){
+                if(illness.contains("05")){
+                    s = "有";
+                }
+            }
+            return s;
+        }
+
+        public String getWeight() {
+            String s = "正常";
+            if(StrUtil.isNotBlank(illness)){
+                if(illness.contains("06")){
+                    s = "超重";
+                }
+            }
+            return s;
+        }
+
+        public String getSports() {
+            String s = "正常";
+            if(StrUtil.isNotBlank(illness)){
+                if(illness.contains("07")){
+                    s = "缺乏";
+                }
+            }
+            return s;
+        }
+
+        public String getacupunctureFamily() {
+            String s = "无";
+            if(StrUtil.isNotBlank(illness)){
+                if(illness.contains("08")){
+                    s = "有";
+                }
+            }
+            return s;
+        }
+
+        public String getCerebralStroke() {
+            String s = "无";
+            if(StrUtil.isNotBlank(illness)){
+                if(illness.contains("09")){
+                    s = "有";
+                }
+            }
+            return s;
+        }
+
+        public String getCerebralIschemia() {
+            String s = "无";
+            if(StrUtil.isNotBlank(illness)){
+                if(illness.contains("10")){
+                    s = "有";
+                }
+            }
+            return s;
+        }
+
+    }
+
+    @Data
+    @ApiModel("根据type查找问卷-请求")
+    public static class QuestionnaireByType {
+        @ApiModelProperty("问卷id")
+        private Long id;
+        @ApiModelProperty("问卷名称")
+        private String questionnaireName;
+    }
+}
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/ScrScreenVo.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/ScrScreenVo.java
new file mode 100644
index 00000000..04e839a5
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/ScrScreenVo.java
@@ -0,0 +1,75 @@
+package com.acupuncture.system.domain.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author zzc
+ * @Package com.neuro.system.domain.vo
+ * @Date 2025/3/4 17:54
+ * @description:
+ */
+public class ScrScreenVo {
+
+    @Data
+    public static class Result{
+        private Long id;
+
+        private String name;
+
+        private String idcard;
+
+        private Integer age;
+
+        private String phone;
+
+        private String city;
+
+        private String county;
+
+        private String province;
+
+        private Byte hospitalLevel;
+
+        private String tenantName;
+
+        private String departments;
+
+        private Long userId;
+
+        private Long screenId;
+
+        private Byte submitStatus;
+
+        private Long positionId;
+
+        private Long tenantId;
+
+        private Integer rzscResult;
+
+        private Byte screenType;
+
+        private String screenResult;
+
+        private Byte delFlag;
+
+        private String createBy;
+
+        private Date createTime;
+
+        private List<ScreeningDetailVo> detailList;
+    }
+
+    @Data
+    public static class ScreeningDetailVo{
+        private Long detailId;
+
+        private Long recordId;
+
+        private String questionCode;
+
+        private String answer;
+    }
+}
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/ExternalDao.java b/acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/ExternalDao.java
new file mode 100644
index 00000000..772e2dc7
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/ExternalDao.java
@@ -0,0 +1,17 @@
+package com.acupuncture.system.persist.dao;
+
+import com.acupuncture.system.domain.dto.ExternalDto;
+import com.acupuncture.system.domain.vo.DmsLoginUserVo;
+import com.acupuncture.system.domain.vo.ExternalVo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Author zzc
+ * @Package com.acupuncture.system.persist.dao
+ * @Date 2025/2/10 9:48
+ * @description:
+ */
+public interface ExternalDao {
+
+    ExternalVo.Result select(@Param("query") ExternalDto.Query query);
+}
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/ScreeningDao.java b/acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/ScreeningDao.java
new file mode 100644
index 00000000..5ed92684
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/ScreeningDao.java
@@ -0,0 +1,20 @@
+package com.acupuncture.system.persist.dao;
+
+import com.acupuncture.system.domain.vo.QuestionnaireVo;
+import com.acupuncture.system.persist.mapper.ScrScreeningMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface ScreeningDao  extends ScrScreeningMapper {
+
+    /**
+     * 查询需要填写的问卷列表
+     * @param time 当前事件
+     * @return 问卷列表
+     */
+    List<QuestionnaireVo.WriteStatus> queryByTime(@Param("time") Long time);
+
+}
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/ScreeningDetailDao.java b/acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/ScreeningDetailDao.java
new file mode 100644
index 00000000..dd503144
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/ScreeningDetailDao.java
@@ -0,0 +1,44 @@
+package com.acupuncture.system.persist.dao;
+
+import com.acupuncture.system.domain.dto.ScreeningDto;
+import com.acupuncture.system.domain.vo.QuestionnaireVo;
+import com.acupuncture.system.domain.vo.ScrScreenVo;
+import com.acupuncture.system.persist.mapper.ScrScreeningDetailMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface ScreeningDetailDao extends ScrScreeningDetailMapper {
+    /**
+     * 查询用户是否填写
+     * @param userId 用户id
+     * @param qid 问卷id
+     * @return 填写状态
+     */
+    Integer querySubmitStatus(@Param("userId") Long userId,@Param("qid") Long qid);
+
+    /**
+     * 查询用户是否有此问卷的详情
+     * @param type 问卷类型
+     * @param userId 用户id
+     * @param time 当前时间
+     * @return 问卷详情id
+     */
+    QuestionnaireVo.DetailInfo queryIsExist(@Param("type") Byte type, @Param("userId") Long userId, @Param("time") Long time);
+
+    /**
+     * 查询是否已经填写code
+     * @param detailId 问卷详情id
+     * @param code 试题code
+     * @return 记录id
+     */
+    Long queryDetailIsExist(@Param("detailId") Long detailId,@Param("code") String code);
+
+    List<ScrScreenVo.Result> queryResult(@Param("detailId") Long detailId,
+                                         @Param("type") Byte type,
+                                         @Param("param") ScreeningDto.Query param);
+
+    List<ScrScreenVo.ScreeningDetailVo> queryDetailList(@Param("detailIdList") List<Long> detailIdList);
+}
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/WxQrCodeDao.java b/acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/WxQrCodeDao.java
new file mode 100644
index 00000000..272d97ab
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/persist/dao/WxQrCodeDao.java
@@ -0,0 +1,23 @@
+package com.acupuncture.system.persist.dao;
+
+import com.acupuncture.system.domain.vo.AmsWxQrCodeVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface WxQrCodeDao {
+
+    /**
+     * 查询
+     * @return
+     */
+    List<AmsWxQrCodeVo.Result> select(@Param("diseaseId") Long diseaseId,
+                                      @Param("deptId")Long deptId);
+    /**
+     * 查询
+     * @return
+     */
+    List<AmsWxQrCodeVo.ScreenResult> selectScreen(@Param("hospitalId") Long hospitalId);
+
+    List<AmsWxQrCodeVo.ScreenResult> selectScreenList(@Param("hospitalIdList") List<Long> hospitalIdList);
+}
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/AmsScreenWxQrCodeMapper.java b/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/AmsScreenWxQrCodeMapper.java
new file mode 100644
index 00000000..2d8eeb82
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/AmsScreenWxQrCodeMapper.java
@@ -0,0 +1,28 @@
+package com.acupuncture.system.persist.mapper;
+
+import com.acupuncture.system.domain.po.AmsScreenWxQrCode;
+import com.acupuncture.system.domain.po.AmsScreenWxQrCodeExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface AmsScreenWxQrCodeMapper {
+    long countByExample(AmsScreenWxQrCodeExample example);
+
+    int deleteByPrimaryKey(Long id);
+
+    int insert(AmsScreenWxQrCode record);
+
+    int insertSelective(AmsScreenWxQrCode record);
+
+    List<AmsScreenWxQrCode> selectByExample(AmsScreenWxQrCodeExample example);
+
+    AmsScreenWxQrCode selectByPrimaryKey(Long id);
+
+    int updateByExampleSelective(@Param("record") AmsScreenWxQrCode record, @Param("example") AmsScreenWxQrCodeExample example);
+
+    int updateByExample(@Param("record") AmsScreenWxQrCode record, @Param("example") AmsScreenWxQrCodeExample example);
+
+    int updateByPrimaryKeySelective(AmsScreenWxQrCode record);
+
+    int updateByPrimaryKey(AmsScreenWxQrCode record);
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/ScrScreeningDetailMapper.java b/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/ScrScreeningDetailMapper.java
new file mode 100644
index 00000000..e1187cb0
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/ScrScreeningDetailMapper.java
@@ -0,0 +1,28 @@
+package com.acupuncture.system.persist.mapper;
+
+import com.acupuncture.system.domain.po.ScrScreeningDetail;
+import com.acupuncture.system.domain.po.ScrScreeningDetailExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface ScrScreeningDetailMapper {
+    long countByExample(ScrScreeningDetailExample example);
+
+    int deleteByPrimaryKey(Long id);
+
+    int insert(ScrScreeningDetail record);
+
+    int insertSelective(ScrScreeningDetail record);
+
+    List<ScrScreeningDetail> selectByExample(ScrScreeningDetailExample example);
+
+    ScrScreeningDetail selectByPrimaryKey(Long id);
+
+    int updateByExampleSelective(@Param("record") ScrScreeningDetail record, @Param("example") ScrScreeningDetailExample example);
+
+    int updateByExample(@Param("record") ScrScreeningDetail record, @Param("example") ScrScreeningDetailExample example);
+
+    int updateByPrimaryKeySelective(ScrScreeningDetail record);
+
+    int updateByPrimaryKey(ScrScreeningDetail record);
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/ScrScreeningDrawMapper.java b/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/ScrScreeningDrawMapper.java
new file mode 100644
index 00000000..601191cd
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/ScrScreeningDrawMapper.java
@@ -0,0 +1,28 @@
+package com.acupuncture.system.persist.mapper;
+
+import com.acupuncture.system.domain.po.ScrScreeningDraw;
+import com.acupuncture.system.domain.po.ScrScreeningDrawExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface ScrScreeningDrawMapper {
+    long countByExample(ScrScreeningDrawExample example);
+
+    int deleteByPrimaryKey(Long id);
+
+    int insert(ScrScreeningDraw record);
+
+    int insertSelective(ScrScreeningDraw record);
+
+    List<ScrScreeningDraw> selectByExample(ScrScreeningDrawExample example);
+
+    ScrScreeningDraw selectByPrimaryKey(Long id);
+
+    int updateByExampleSelective(@Param("record") ScrScreeningDraw record, @Param("example") ScrScreeningDrawExample example);
+
+    int updateByExample(@Param("record") ScrScreeningDraw record, @Param("example") ScrScreeningDrawExample example);
+
+    int updateByPrimaryKeySelective(ScrScreeningDraw record);
+
+    int updateByPrimaryKey(ScrScreeningDraw record);
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/ScrScreeningMapper.java b/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/ScrScreeningMapper.java
new file mode 100644
index 00000000..bd9815f0
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/ScrScreeningMapper.java
@@ -0,0 +1,28 @@
+package com.acupuncture.system.persist.mapper;
+
+import com.acupuncture.system.domain.po.ScrScreening;
+import com.acupuncture.system.domain.po.ScrScreeningExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface ScrScreeningMapper {
+    long countByExample(ScrScreeningExample example);
+
+    int deleteByPrimaryKey(Long id);
+
+    int insert(ScrScreening record);
+
+    int insertSelective(ScrScreening record);
+
+    List<ScrScreening> selectByExample(ScrScreeningExample example);
+
+    ScrScreening selectByPrimaryKey(Long id);
+
+    int updateByExampleSelective(@Param("record") ScrScreening record, @Param("example") ScrScreeningExample example);
+
+    int updateByExample(@Param("record") ScrScreening record, @Param("example") ScrScreeningExample example);
+
+    int updateByPrimaryKeySelective(ScrScreening record);
+
+    int updateByPrimaryKey(ScrScreening record);
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/ScrScreeningRecordMapper.java b/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/ScrScreeningRecordMapper.java
new file mode 100644
index 00000000..28f1ab59
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/ScrScreeningRecordMapper.java
@@ -0,0 +1,28 @@
+package com.acupuncture.system.persist.mapper;
+
+import com.acupuncture.system.domain.po.ScrScreeningRecord;
+import com.acupuncture.system.domain.po.ScrScreeningRecordExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface ScrScreeningRecordMapper {
+    long countByExample(ScrScreeningRecordExample example);
+
+    int deleteByPrimaryKey(Long id);
+
+    int insert(ScrScreeningRecord record);
+
+    int insertSelective(ScrScreeningRecord record);
+
+    List<ScrScreeningRecord> selectByExample(ScrScreeningRecordExample example);
+
+    ScrScreeningRecord selectByPrimaryKey(Long id);
+
+    int updateByExampleSelective(@Param("record") ScrScreeningRecord record, @Param("example") ScrScreeningRecordExample example);
+
+    int updateByExample(@Param("record") ScrScreeningRecord record, @Param("example") ScrScreeningRecordExample example);
+
+    int updateByPrimaryKeySelective(ScrScreeningRecord record);
+
+    int updateByPrimaryKey(ScrScreeningRecord record);
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/UplReportImageMapper.java b/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/UplReportImageMapper.java
new file mode 100644
index 00000000..1b920e68
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/UplReportImageMapper.java
@@ -0,0 +1,28 @@
+package com.acupuncture.system.persist.mapper;
+
+import com.acupuncture.system.domain.po.UplReportImage;
+import com.acupuncture.system.domain.po.UplReportImageExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface UplReportImageMapper {
+    long countByExample(UplReportImageExample example);
+
+    int deleteByPrimaryKey(Long id);
+
+    int insert(UplReportImage record);
+
+    int insertSelective(UplReportImage record);
+
+    List<UplReportImage> selectByExample(UplReportImageExample example);
+
+    UplReportImage selectByPrimaryKey(Long id);
+
+    int updateByExampleSelective(@Param("record") UplReportImage record, @Param("example") UplReportImageExample example);
+
+    int updateByExample(@Param("record") UplReportImage record, @Param("example") UplReportImageExample example);
+
+    int updateByPrimaryKeySelective(UplReportImage record);
+
+    int updateByPrimaryKey(UplReportImage record);
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/UplRtcfInfoMapper.java b/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/UplRtcfInfoMapper.java
new file mode 100644
index 00000000..21f86e2c
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/persist/mapper/UplRtcfInfoMapper.java
@@ -0,0 +1,28 @@
+package com.acupuncture.system.persist.mapper;
+
+import com.acupuncture.system.domain.po.UplRtcfInfo;
+import com.acupuncture.system.domain.po.UplRtcfInfoExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface UplRtcfInfoMapper {
+    long countByExample(UplRtcfInfoExample example);
+
+    int deleteByPrimaryKey(Long id);
+
+    int insert(UplRtcfInfo record);
+
+    int insertSelective(UplRtcfInfo record);
+
+    List<UplRtcfInfo> selectByExample(UplRtcfInfoExample example);
+
+    UplRtcfInfo selectByPrimaryKey(Long id);
+
+    int updateByExampleSelective(@Param("record") UplRtcfInfo record, @Param("example") UplRtcfInfoExample example);
+
+    int updateByExample(@Param("record") UplRtcfInfo record, @Param("example") UplRtcfInfoExample example);
+
+    int updateByPrimaryKeySelective(UplRtcfInfo record);
+
+    int updateByPrimaryKey(UplRtcfInfo record);
+}
\ No newline at end of file
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/service/DmsLoginService.java b/acupuncture-system/src/main/java/com/acupuncture/system/service/DmsLoginService.java
index 53e4f1d5..c54160fc 100644
--- a/acupuncture-system/src/main/java/com/acupuncture/system/service/DmsLoginService.java
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/service/DmsLoginService.java
@@ -2,6 +2,7 @@ package com.acupuncture.system.service;
 
 import com.acupuncture.common.core.domain.entity.SysUser;
 import com.acupuncture.system.domain.dto.AdminTenantUserDto;
+import com.acupuncture.system.domain.po.DmsTenant;
 import com.acupuncture.system.domain.po.DmsUser;
 import com.acupuncture.system.domain.po.UmsDataSource;
 import com.acupuncture.system.domain.vo.DmsLoginUserVo;
@@ -46,4 +47,6 @@ public interface DmsLoginService {
     UmsDataSource getDataSourceByTenantId(Long tenantId);
 
     boolean checkPhoneUnique(AdminTenantUserDto.AddDto dto);
+
+    DmsTenant queryById(Long id);
 }
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/service/ExternalService.java b/acupuncture-system/src/main/java/com/acupuncture/system/service/ExternalService.java
new file mode 100644
index 00000000..a0688d9e
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/service/ExternalService.java
@@ -0,0 +1,38 @@
+package com.acupuncture.system.service;
+
+import com.acupuncture.system.domain.dto.ExternalDto;
+import com.acupuncture.system.domain.vo.ExternalVo;
+
+import java.util.List;
+
+/**
+ * @Author zzc
+ * @Package com.acupuncture.system.service
+ * @Date 2025/3/15 10:29
+ * @description:
+ */
+public interface ExternalService {
+
+    /**
+     * 获取人员信息
+     * @param from 所属社区id
+     * @param memberid 门诊号/住院号
+     * @return
+     */
+    ExternalVo.Result query(String from, String memberid);
+
+    /**
+     * 上传数据
+     * @param rtcfInfoDtoList
+     * @return
+     */
+    int add(List<ExternalDto.RtcfInfoDto> rtcfInfoDtoList);
+
+    /**
+     * 上传测试报告
+     * @param reportImageVo
+     * @return
+     */
+    int addReportImage(ExternalDto.ReportImageDto reportImageVo);
+
+}
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/service/IScreeningService.java b/acupuncture-system/src/main/java/com/acupuncture/system/service/IScreeningService.java
new file mode 100644
index 00000000..5cdfd3e2
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/service/IScreeningService.java
@@ -0,0 +1,72 @@
+package com.acupuncture.system.service;
+
+import com.acupuncture.system.domain.dto.ScreeningDto;
+import com.acupuncture.system.domain.vo.QuestionnaireVo;
+import com.acupuncture.system.domain.vo.ScrScreenVo;
+import com.github.pagehelper.PageInfo;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+
+public interface IScreeningService {
+
+    /**
+     * 查询当前医院问卷是否填写
+     * @param param 项目id/当前时间
+     * @return 问卷状态列表
+     */
+    List<QuestionnaireVo.WriteStatus> queryNotWrite(ScreeningDto.QueryNotWrite param);
+
+    void export(HttpServletResponse response, ScreeningDto.Query param);
+
+    void exportRzScreen(HttpServletResponse response, ScreeningDto.Query param);
+
+    PageInfo<ScrScreenVo.Result> queryDetailByPage(ScreeningDto.Query param, Integer pageNum, Integer pageSize);
+
+    /**
+     *
+     *  保存问卷调查信息
+     * @param param  参数
+     * @param userId 用户id
+     * @throws Exception 异常
+     */
+    void saveQuestionnaire(ScreeningDto.SaveQuestionnaire param, Long userId) throws Exception;
+
+    /**
+     * 提交问卷(修改问卷详情状态)
+     * @param param 问卷详情id
+     * @param userId 用户id
+     */
+    void submitQuestionnaire(ScreeningDto.SubmitScreeningQuestionnaire param, Long userId) throws Exception;
+
+    /**
+     * 随访
+     * @param patientId 患者ID
+     * @param status 状态(0未随访 1已随访)
+     */
+    void follow(Long patientId, Byte status);
+
+    /**
+     * 为用户创建问卷详情
+     * @param param 问卷id
+     * @param userId 用户id
+     * @return 问卷id与问卷详情id
+     */
+    QuestionnaireVo.DetailInfo createDetail(ScreeningDto.CreateDetail param, Long userId, Long hospitailId) throws Exception;
+
+//    /**
+//     * 导出问卷调查数据
+//     * @param export 导出条件
+//     * @return 问卷
+//     */
+//    Workbook export(ScreeningDto.Export export) throws IOException;
+//
+//    /**
+//     * 导出问卷调查数据
+//     * @param export 导出条件
+//     * @return 问卷
+//     */
+//    Workbook exportByArea(ScreeningDto.ExportByArea export) throws IOException;
+
+}
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/service/WxQrCodeService.java b/acupuncture-system/src/main/java/com/acupuncture/system/service/WxQrCodeService.java
new file mode 100644
index 00000000..cca6f9b1
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/service/WxQrCodeService.java
@@ -0,0 +1,32 @@
+package com.acupuncture.system.service;
+
+import com.acupuncture.system.domain.dto.AmsWxQrCodeDto;
+import com.acupuncture.system.domain.po.AmsScreenWxQrCode;
+import com.acupuncture.system.domain.po.AmsScreenWxQrCode;
+import com.acupuncture.system.domain.vo.AmsWxQrCodeVo;
+
+import java.io.IOException;
+import java.util.List;
+
+public interface WxQrCodeService {
+
+    List<AmsWxQrCodeVo.Result> queryList(Long diseaseId, Long deptId);
+
+    void add(AmsScreenWxQrCode amsWxQrCode) throws Exception;
+
+    void delete(List<Long> idList);
+
+    String export(String url, String bq) throws IOException;
+
+    List<AmsWxQrCodeVo.ScreenResult> queryList(Long hospitalId);
+
+    List<AmsWxQrCodeVo.ScreenResult> queryScreenList();
+
+    AmsScreenWxQrCode add(AmsWxQrCodeDto.ScreenInsert amsScreenWxQrCode) throws Exception;
+
+    void deleteScreen(List<Long> idList);
+
+    String exportScreen(String url, Long hostpitalId) throws Exception;
+
+    String exportHbScreen(String url, Long hostpitalId) throws Exception;
+}
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/DmsLoginServiceImpl.java b/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/DmsLoginServiceImpl.java
index 68827b3a..e7989974 100644
--- a/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/DmsLoginServiceImpl.java
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/DmsLoginServiceImpl.java
@@ -92,5 +92,10 @@ public class DmsLoginServiceImpl implements DmsLoginService {
         return UserConstants.UNIQUE;
     }
 
+    @Override
+    public DmsTenant queryById(Long id) {
+        return dmsTenantMapper.selectByPrimaryKey(id);
+    }
+
 
 }
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/ExternalServiceImpl.java b/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/ExternalServiceImpl.java
new file mode 100644
index 00000000..9407d10e
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/ExternalServiceImpl.java
@@ -0,0 +1,62 @@
+package com.acupuncture.system.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.IdUtil;
+import com.acupuncture.system.domain.dto.ExternalDto;
+import com.acupuncture.system.domain.po.UplReportImage;
+import com.acupuncture.system.domain.po.UplRtcfInfo;
+import com.acupuncture.system.domain.vo.ExternalVo;
+import com.acupuncture.system.persist.dao.ExternalDao;
+import com.acupuncture.system.persist.mapper.UplReportImageMapper;
+import com.acupuncture.system.persist.mapper.UplRtcfInfoMapper;
+import com.acupuncture.system.service.ExternalService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author zzc
+ * @Package com.acupuncture.system.service.impl
+ * @Date 2025/3/15 10:29
+ * @description:
+ */
+@Service
+public class ExternalServiceImpl implements ExternalService {
+
+    @Resource
+    private UplReportImageMapper uplReportImageMapper;
+    @Resource
+    private UplRtcfInfoMapper uplRtcfInfoMapper;
+    @Resource
+    private ExternalDao externalDao;
+
+    @Override
+    public ExternalVo.Result query(String from, String memberid) {
+        ExternalDto.Query query = new ExternalDto.Query();
+        query.setFrom(from);
+        query.setMemberid(memberid);
+        return externalDao.select(query);
+    }
+
+    @Override
+    public int add(List<ExternalDto.RtcfInfoDto> rtcfInfoDtoList) {
+        List<UplRtcfInfo> uplRtcfInfos = BeanUtil.copyToList(rtcfInfoDtoList, UplRtcfInfo.class);
+        int i = 0;
+        for (UplRtcfInfo uplRtcfInfo : uplRtcfInfos) {
+            uplRtcfInfo.setId(IdUtil.getSnowflakeNextId());
+            uplRtcfInfo.setCreateTime(new Date());
+            i += uplRtcfInfoMapper.insert(uplRtcfInfo);
+        }
+        return i;
+    }
+
+    @Override
+    public int addReportImage(ExternalDto.ReportImageDto reportImageVo) {
+        UplReportImage uplReportImage = BeanUtil.copyProperties(reportImageVo, UplReportImage.class);
+        uplReportImage.setId(IdUtil.getSnowflakeNextId());
+        uplReportImage.setCreateTime(new Date());
+        return uplReportImageMapper.insertSelective(uplReportImage);
+    }
+}
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/ScreeningServiceImpl.java b/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/ScreeningServiceImpl.java
new file mode 100644
index 00000000..080047bd
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/ScreeningServiceImpl.java
@@ -0,0 +1,351 @@
+package com.acupuncture.system.service.impl;
+
+import cn.hutool.Hutool;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.pinyin.PinyinUtil;
+import cn.hutool.poi.excel.ExcelUtil;
+import cn.hutool.poi.excel.ExcelWriter;
+import com.acupuncture.common.constant.ErrorConstant;
+import com.acupuncture.common.constant.UserConstants;
+import com.acupuncture.common.core.redis.RedisCache;
+import com.acupuncture.common.exception.base.BaseException;
+import com.acupuncture.common.utils.SecurityUtils;
+import com.acupuncture.system.domain.dto.ScreeningDto;
+import com.acupuncture.system.domain.po.ScrScreening;
+import com.acupuncture.system.domain.po.ScrScreeningDetail;
+import com.acupuncture.system.domain.po.ScrScreeningExample;
+import com.acupuncture.system.domain.po.ScrScreeningRecord;
+import com.acupuncture.system.domain.vo.QuestionnaireVo;
+import com.acupuncture.system.domain.vo.ScrScreenVo;
+import com.acupuncture.system.persist.dao.ScreeningDao;
+import com.acupuncture.system.persist.dao.ScreeningDetailDao;
+import com.acupuncture.system.persist.mapper.ScrScreeningRecordMapper;
+import com.acupuncture.system.service.IScreeningService;
+import com.github.pagehelper.PageInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * @Author zzc
+ * @Package com.neuro.system.service.impl
+ * @Date 2025/3/4 9:38
+ * @description:
+ */
+@Service
+@Slf4j
+public class ScreeningServiceImpl implements IScreeningService {
+
+    @Resource
+    private ScreeningDetailDao screeningDetailDao;
+    @Resource
+    private ScreeningDao screeningDao;
+    @Resource
+    private ScrScreeningRecordMapper scrScreeningRecordMapper;
+    @Resource
+    private RedisCache redisCache;
+
+    /**
+     * 提交高危筛查问卷的时间
+     */
+    public static final String SCWJ_SUBMIT_TIME = "SCWJ-SUBMIT";
+
+    @Override
+    public List<QuestionnaireVo.WriteStatus> queryNotWrite(ScreeningDto.QueryNotWrite param) {
+        //查询问卷列表
+        List<QuestionnaireVo.WriteStatus> questionnaireList = screeningDao.queryByTime(param.getTime());
+        if (CollectionUtil.isNotEmpty(questionnaireList)) {
+            for (QuestionnaireVo.WriteStatus questionnaire : questionnaireList) {
+                //查询填写状态
+                Integer submitStatus = screeningDetailDao.querySubmitStatus(SecurityUtils.getUserId(), questionnaire.getId());
+                if (ObjectUtil.isNull(submitStatus)) {
+                    questionnaire.setIsWrite(-1);
+                } else {
+                    questionnaire.setIsWrite(submitStatus);
+                }
+            }
+            return questionnaireList;
+        }
+        return new ArrayList<>();
+    }
+
+    @Override
+    public void export(HttpServletResponse response, ScreeningDto.Query param) {
+        ExcelWriter excelWriter = ExcelUtil.getWriter();
+        List<String> headerList = CollectionUtil.newArrayList(
+                "姓名",
+                "性别",
+                "年龄",
+                "身份证",
+                "出生日期",
+                "手机号",
+                "有高血压,>=140/90mmHg",
+                "血脂异常,或不清楚",
+                "有糖尿病",
+                "心跳不规则",
+                "吸烟",
+                "明显超重或肥胖",
+                "缺乏运动",
+                "有卒中家族史",
+                "有既往脑卒中病史",
+                "有既往短暂脑缺血病史",
+                "筛查结果",
+                "数据来源",
+                "科室名称");
+        excelWriter.writeHeadRow(headerList);
+
+        PageInfo<ScrScreenVo.Result> page = queryDetailByPage(param, -1, -1);
+        if (page != null) {
+            List<ScrScreenVo.Result> detailVos = page.getList();
+            if (CollectionUtil.isNotEmpty(detailVos)) {
+                int row = 0;
+                for (int i = 0; i < detailVos.size(); i++) {
+                    List<ScrScreenVo.ScreeningDetailVo> recordList = detailVos.get(i).getDetailList();
+                    Map<String, ScrScreenVo.ScreeningDetailVo> map = new HashMap<>();
+                    if (CollectionUtil.isNotEmpty(recordList)) {
+                        map = recordList.stream().collect(Collectors.toMap(ScrScreenVo.ScreeningDetailVo::getQuestionCode, Function.identity()));
+                    }
+                    //筛查信息
+                    ScrScreenVo.ScreeningDetailVo record = map.get("SCWJ-ILLNESS");
+                    //筛查结果
+                    ScrScreenVo.ScreeningDetailVo result = map.get("SCWJ-RESULT");
+                    row += 1;
+                    excelWriter.writeCellValue(0, row, detailVos.get(i).getName() + "");
+                    excelWriter.writeCellValue(1, row, map.get("SCWJ-SEX") == null ? "未知" : map.get("SCWJ-SEX").getAnswer());
+                    excelWriter.writeCellValue(2, row, map.get("SCWJ-AGE") == null ? "" : map.get("SCWJ-AGE").getAnswer());
+                    excelWriter.writeCellValue(3, row, map.get("SCWJ-idCard") == null ? "" : map.get("SCWJ-idCard").getAnswer());
+                    excelWriter.writeCellValue(4, row, map.get("SCWJ-BIRTH") == null ? "" : map.get("SCWJ-BIRTH").getAnswer());
+                    excelWriter.writeCellValue(5, row, map.get("SCWJ-PHONE") == null ? "" : map.get("SCWJ-PHONE").getAnswer());
+
+                    if (record == null || StrUtil.isEmpty(record.getAnswer())) {
+                        excelWriter.writeCellValue(6, row, "否");
+                        excelWriter.writeCellValue(7, row, "否");
+                        excelWriter.writeCellValue(8, row, "否");
+                        excelWriter.writeCellValue(9, row, "否");
+                        excelWriter.writeCellValue(10, row, "否");
+                        excelWriter.writeCellValue(11, row, "否");
+                        excelWriter.writeCellValue(12, row, "否");
+                        excelWriter.writeCellValue(13, row, "否");
+                        excelWriter.writeCellValue(14, row, "否");
+                        excelWriter.writeCellValue(15, row, "否");
+                    } else {
+                        String answer = record.getAnswer();
+                        String[] split = answer.split(",");
+                        excelWriter.writeCellValue(6, row, Arrays.asList(split).contains("01") ? "是" : "否");
+                        excelWriter.writeCellValue(7, row, Arrays.asList(split).contains("02") ? "是" : "否");
+                        excelWriter.writeCellValue(8, row, Arrays.asList(split).contains("03") ? "是" : "否");
+                        excelWriter.writeCellValue(9, row, Arrays.asList(split).contains("04") ? "是" : "否");
+                        excelWriter.writeCellValue(10, row, Arrays.asList(split).contains("05") ? "是" : "否");
+                        excelWriter.writeCellValue(11, row, Arrays.asList(split).contains("06") ? "是" : "否");
+                        excelWriter.writeCellValue(12, row, Arrays.asList(split).contains("07") ? "是" : "否");
+                        excelWriter.writeCellValue(13, row, Arrays.asList(split).contains("08") ? "是" : "否");
+                        excelWriter.writeCellValue(14, row, Arrays.asList(split).contains("09") ? "是" : "否");
+                        excelWriter.writeCellValue(15, row, Arrays.asList(split).contains("10") ? "是" : "否");
+                    }
+                    String str = "";
+                    if (map.get("SCWJ-RESULT") != null && StrUtil.isNotEmpty(map.get("SCWJ-RESULT").getAnswer())) {
+                        String answer1 = map.get("SCWJ-RESULT").getAnswer();
+                        if ("0".equals(answer1)) {
+                            str = "正常";
+                        }
+                        if ("1".equals(answer1)) {
+                            str = "低危";
+                        }
+                        if ("2".equals(answer1)) {
+                            str = "中危";
+                        }
+                        if ("3".equals(answer1)) {
+                            str = "高危";
+                        }
+                    }
+                    excelWriter.writeCellValue(16, row, str);
+                    excelWriter.writeCellValue(17, row, map.get("SCWJ-SQMC") == null ? "" : map.get("SCWJ-SQMC").getAnswer());
+                    excelWriter.writeCellValue(18, row, map.get("SCWJ-DEPT") == null ? "" : map.get("SCWJ-DEPT").getAnswer());
+                }
+            }
+        }
+
+        String filename = StrUtil.format("筛查-{}.xlsx", DateUtil.date().toString("yyyyMMdd"));
+
+        //response为HttpServletResponse对象
+        response.setContentType("application/vnd.ms-excel;charset=utf-8");
+        //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
+        response.setHeader("Content-Disposition", "attachment;filename=" + filename);
+        ServletOutputStream out = null;
+        try {
+            out = response.getOutputStream();
+            excelWriter.flush(out);
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            // 关闭writer,释放内存
+            excelWriter.close();
+            //此处记得关闭输出Servlet流
+            IoUtil.close(out);
+        }
+    }
+
+    @Override
+    public void exportRzScreen(HttpServletResponse response, ScreeningDto.Query param) {
+
+    }
+    @Override
+    public PageInfo<ScrScreenVo.Result> queryDetailByPage(ScreeningDto.Query param, Integer pageNum, Integer pageSize) {
+        List<ScrScreenVo.Result> results = screeningDetailDao.queryResult(null, null, param);
+        if (CollectionUtil.isNotEmpty(results)) {
+            List<ScrScreenVo.ScreeningDetailVo> screeningDetailVos = screeningDetailDao.queryDetailList(results.stream().map(ScrScreenVo.Result::getId).collect(Collectors.toList()));
+            if (CollectionUtil.isNotEmpty(screeningDetailVos)) {
+                Map<Long, List<ScrScreenVo.ScreeningDetailVo>> map = screeningDetailVos.stream().collect(Collectors.groupingBy(ScrScreenVo.ScreeningDetailVo::getRecordId));
+                results.forEach(result -> {
+                    result.setDetailList(map.get(result.getId()));
+                });
+            }
+        }
+        return new PageInfo<>(results);
+    }
+    @Override
+    public void saveQuestionnaire(ScreeningDto.SaveQuestionnaire param, Long userId) throws Exception {
+        //redis判断是否已有
+        Object o = redisCache.get(param.getDetailId() + "" + param.getCode() + param.getCode());
+        log.info("redis保存问卷用户{},{}", param.getDetailId() + "" + userId, o);
+        if (ObjectUtil.isNull(o)) {
+            redisCache.set(param.getDetailId() + "" + userId + param.getCode(), userId, 600);
+            //查询是否已经提交,已提交不能保存修改
+            ScrScreeningRecord questionnaireDetail = scrScreeningRecordMapper.selectByPrimaryKey(param.getDetailId());
+            if (UserConstants.SubmitStatus.submit.status == questionnaireDetail.getSubmitStatus()) {
+                redisCache.deleteObject(param.getDetailId() + "" + userId + param.getCode());
+                throw new BaseException(ErrorConstant.HOSPITAL_REPEAT_SUBMIT);
+            }
+
+            log.info("param.getCode():{}", param.getCode());
+            if (param.getCode().equals("SCWJ-NAME")) {
+                questionnaireDetail.setName(param.getAnswer());
+                questionnaireDetail.setPinyinFull(PinyinUtil.getPinyin(param.getAnswer()));
+                questionnaireDetail.setPinyinSimple(PinyinUtil.getFirstLetter(param.getAnswer(), ""));
+            }
+            if (param.getCode().equals("SCWJ-PHONE")) {
+                questionnaireDetail.setPhone(param.getAnswer());
+            }
+//            if (param.getCode().equals("SCWJ-RESULT")) {
+//                questionnaireDetail.setDangeStatus(Byte.parseByte(param.getAnswer()));
+//            }
+            if (param.getCode().equals("SCWJ-idCard")) {
+                questionnaireDetail.setIdcard((param.getAnswer()));
+            }
+            if (param.getCode().equals("RZSC-RESULT")) {
+                questionnaireDetail.setRzscResult(Integer.valueOf(param.getAnswer()));
+            }
+            if (param.getCode().equals("SCWJ-BIRTH")) {
+                questionnaireDetail.setAge(DateUtil.ageOfNow(param.getAnswer()));
+            }
+            log.info("questionnaireDetail:{}", questionnaireDetail.getId());
+            log.info("questionnaireDetail:{}", questionnaireDetail.getName());
+            scrScreeningRecordMapper.updateByPrimaryKeySelective(questionnaireDetail);
+
+            Long recordId = screeningDetailDao.queryDetailIsExist(param.getDetailId(), param.getCode());
+            if (ObjectUtil.isNotNull(recordId)) {
+                ScrScreeningDetail record = new ScrScreeningDetail();
+                record.setId(recordId);
+                record.setQuestionCode(param.getCode());
+                record.setAnswer(param.getAnswer());
+                screeningDetailDao.updateByPrimaryKeySelective(record);
+            } else {
+                ScrScreeningDetail record = new ScrScreeningDetail();
+                record.setId(IdUtil.getSnowflakeNextId());
+                record.setRecordId(param.getDetailId());
+                record.setQuestionCode(param.getCode());
+                record.setAnswer(param.getAnswer());
+                screeningDetailDao.insertSelective(record);
+            }
+            redisCache.deleteObject(param.getDetailId() + "" + userId + param.getCode());
+        }
+    }
+
+    private Integer getAgeByBirthday(String answer) {
+        return DateUtil.ageOfNow(answer);
+    }
+
+    @Override
+    public void submitQuestionnaire(ScreeningDto.SubmitScreeningQuestionnaire param, Long userId) throws Exception {
+        //根据问卷详情id查询问卷
+        ScrScreeningRecord detail = scrScreeningRecordMapper.selectByPrimaryKey(param.getDetailId());
+        if (ObjectUtil.isNull(detail)) {
+            throw new BaseException(ErrorConstant.QUESTIONNAIRE_DETAIL_ERROR);
+        }
+        //添加提交时间
+        ScrScreeningDetail screeningRecord = new ScrScreeningDetail();
+        screeningRecord.setId(IdUtil.getSnowflakeNextId());
+        screeningRecord.setRecordId(param.getDetailId());
+        screeningRecord.setQuestionCode(SCWJ_SUBMIT_TIME);
+        screeningRecord.setAnswer(System.currentTimeMillis() + "");
+        screeningDetailDao.insert(screeningRecord);
+        //修改提交状态
+        ScrScreeningRecord screeningDetail = new ScrScreeningRecord();
+        screeningDetail.setId(param.getDetailId());
+        screeningDetail.setSubmitStatus((byte) 1);
+        scrScreeningRecordMapper.updateByPrimaryKeySelective(screeningDetail);
+    }
+
+    @Override
+    public void follow(Long patientId, Byte status) {
+
+    }
+
+    @Override
+    public QuestionnaireVo.DetailInfo createDetail(ScreeningDto.CreateDetail param, Long userId, Long hospitailId) throws Exception {
+        long currentTime = System.currentTimeMillis();
+        QuestionnaireVo.DetailInfo detailInfo = new QuestionnaireVo.DetailInfo();
+        if (param.getType() == 0) {
+            detailInfo = screeningDetailDao.queryIsExist(param.getType(), userId, currentTime);
+            if (ObjectUtil.isNull(detailInfo)) {
+                throw new BaseException(ErrorConstant.QUESTIONNAIRE_DETAIL_ERROR);
+            }
+            if (ObjectUtil.isNull(detailInfo.getId())) {
+                throw new BaseException(ErrorConstant.QUESTIONNAIRE_DETAIL_ERROR);
+            }
+        } else {
+            //根据查找问卷类型
+            ScrScreeningExample questionnaireExample = new ScrScreeningExample();
+            questionnaireExample.createCriteria().andTypeEqualTo(param.getType())
+                    .andWriteStartTimeLessThan(currentTime).andWriteEndTimeGreaterThan(currentTime);
+            List<ScrScreening> questionnaires = screeningDao.selectByExample(questionnaireExample);
+            if (CollectionUtil.isNotEmpty(questionnaires)) {
+                detailInfo.setId(questionnaires.get(0).getId());
+            }
+        }
+        if (ObjectUtil.isNull(detailInfo.getDetailId())) {
+            ScrScreeningRecord detail = new ScrScreeningRecord();
+            detail.setId(IdUtil.getSnowflakeNextId());
+            detail.setUserId(userId);
+            detail.setScreenId(detailInfo.getId());
+            detail.setTenantId(hospitailId);
+            detail.setSubmitStatus(UserConstants.SubmitStatus.save.status);
+            detail.setDelFlag((byte) 0);
+            scrScreeningRecordMapper.insertSelective(detail);
+            detailInfo.setDetailId(detail.getId());
+        }
+        return detailInfo;
+    }
+
+//    @Override
+//    public Workbook export(ScreeningDto.Export export) throws IOException {
+//        return null;
+//    }
+//
+//    @Override
+//    public Workbook exportByArea(ScreeningDto.ExportByArea export) throws IOException {
+//        return null;
+//    }
+}
diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/WxQrCodeServiceImpl.java b/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/WxQrCodeServiceImpl.java
new file mode 100644
index 00000000..2fd76477
--- /dev/null
+++ b/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/WxQrCodeServiceImpl.java
@@ -0,0 +1,330 @@
+package com.acupuncture.system.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.IdUtil;
+import com.acupuncture.system.domain.dto.AmsWxQrCodeDto;
+import com.acupuncture.system.persist.dao.WxQrCodeDao;
+import com.acupuncture.system.persist.mapper.AmsScreenWxQrCodeMapper;
+import com.acupuncture.common.utils.*;
+import com.acupuncture.system.domain.po.*;
+import com.acupuncture.system.domain.vo.AmsWxQrCodeVo;
+import com.acupuncture.system.persist.mapper.DmsTenantMapper;
+import com.acupuncture.system.service.WxQrCodeService;
+import com.alibaba.fastjson2.JSONObject;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.data.PictureRenderData;
+import com.deepoove.poi.data.Pictures;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.*;
+
+@Service
+@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+public class WxQrCodeServiceImpl implements WxQrCodeService {
+    private static final String WXTOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&";
+    //微信二维码生成路径
+    private static final String WXACODE_URL = "https://api.weixin.qq.com/wxa/getwxacode?access_token=";
+    @Resource
+    private AmsScreenWxQrCodeMapper wxQrCodeMapper;
+    @Resource
+    private WxQrCodeDao wxQrCodeDao;
+
+    @Value("${file.wxQrCodeTemplate}")
+    public String wxQrCodeTemplate;
+
+    @Value("${file.screenQrCodeTemplate}")
+    public String screenQrCodeTemplate;
+
+    @Value("${file.hbTemplate}")
+    public String hbTemplate;
+
+    @Value("${file.screenPath}")
+    public String screenPath;
+
+    @Value("${file.jmrsUrl}")
+    public String jmrsUrl;
+
+    @Resource
+    private DmsTenantMapper dmsTenantMapper;
+
+
+    @Override
+    public List<AmsWxQrCodeVo.Result> queryList(Long diseaseId, Long deptId) {
+        return wxQrCodeDao.select(diseaseId, deptId);
+    }
+
+    @Override
+    public void add(AmsScreenWxQrCode amsWxQrCode) throws Exception {
+        if (amsWxQrCode.getId() == null) {
+            amsWxQrCode.setUrl(QRCode(amsWxQrCode.getPath()));
+            amsWxQrCode.setCreateTime(new Date());
+            amsWxQrCode.setCreateBy(SecurityUtils.getUsername());
+            amsWxQrCode.setDelFlag((byte) 0);
+            amsWxQrCode.setId(IdUtil.getSnowflakeNextId());
+            wxQrCodeMapper.insertSelective(amsWxQrCode);
+        } else {
+            amsWxQrCode.setUrl(QRCode(amsWxQrCode.getPath()));
+            amsWxQrCode.setUpdateTime(new Date());
+            amsWxQrCode.setUpdateBy(SecurityUtils.getUsername());
+            amsWxQrCode.setDelFlag((byte) 0);
+            wxQrCodeMapper.updateByPrimaryKeySelective(amsWxQrCode);
+        }
+    }
+
+    /**
+     * 微信getAccessToken
+     */
+    public static String getAccessToken() throws IOException {
+        HttpPost httpPost = new HttpPost(WXTOKEN_URL + "appid=wx3190e3f68dd4d068" + "&secret=71d797c1f81f9f0caadab3289ee7367c");
+        CloseableHttpClient client = HttpClients.createDefault();
+        CloseableHttpResponse execute = client.execute(httpPost);
+        HttpEntity httpEntity = execute.getEntity();
+        String result = EntityUtils.toString(httpEntity, "utf-8");
+
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        return jsonObject.get("access_token").toString();
+    }
+
+    /**
+     * 微信小程序码生成
+     *
+     * @param path 跳转页面路径(前端路径)
+     * @return
+     * @throws IOException
+     */
+    public static String QRCode(String path) throws Exception {
+        String accessToken = getAccessToken();
+        HttpPost httpPost = new HttpPost(WXACODE_URL + accessToken);
+        httpPost.addHeader("Accept", "application/json");
+        httpPost.addHeader("Content-type", "application/json; charset=utf-8");
+
+        JSONObject param = new JSONObject();
+        param.put("path", path);
+        StringEntity stringEntity = new StringEntity(param.toJSONString());
+        stringEntity.setContentType("image/png");
+        httpPost.setEntity(stringEntity);
+        CloseableHttpClient client = HttpClients.createDefault();
+        CloseableHttpResponse execute = client.execute(httpPost);
+        InputStream content = execute.getEntity().getContent();
+        String name = "WX_QRCODE" + "_" + System.currentTimeMillis() + ".png";
+        int i = saveToImgByInputStream(content, "/home/acupuncture/server/profile/upload/", name);
+        if (i == 1) {
+            return "/profile/upload/" + name;
+        } else {
+            throw new Exception("生成二维码失败");
+        }
+    }
+
+    /**
+     * 将二进制转换成文件保存
+     *
+     * @param instreams 二进制流
+     * @param imgPath   图片的保存路径
+     * @param imgName   图片的名称
+     * @return 1:保存正常
+     * 0:保存失败
+     */
+    public static int saveToImgByInputStream(InputStream instreams, String imgPath, String imgName) {
+        int stateInt = 1;
+        if (instreams != null) {
+            try {
+                File file = new File(imgPath);
+                if (!file.exists() || !file.isDirectory()) {
+                    file.mkdirs();
+                }
+                file = new File(imgPath, imgName);//可以是任何图片格式.jpg,.png等
+                FileOutputStream fos = new FileOutputStream(file);
+                byte[] b = new byte[1024];
+                int nRead = 0;
+                while ((nRead = instreams.read(b)) != -1) {
+                    fos.write(b, 0, nRead);
+                }
+                fos.flush();
+                fos.close();
+            } catch (Exception e) {
+                stateInt = 0;
+                e.printStackTrace();
+            } finally {
+            }
+        }
+        return stateInt;
+    }
+
+    @Override
+    public void delete(List<Long> idList) {
+        for (Long aLong : idList) {
+            AmsScreenWxQrCode amsWxQrCode = wxQrCodeMapper.selectByPrimaryKey(aLong);
+            if (amsWxQrCode != null) {
+                amsWxQrCode.setDelFlag((byte) 1);
+                wxQrCodeMapper.updateByPrimaryKeySelective(amsWxQrCode);
+            }
+        }
+    }
+
+    @Override
+    public String export(String url, String bq) throws IOException {
+        File file = new File(wxQrCodeTemplate);
+        XWPFTemplate template = XWPFTemplate.compile(file.getAbsolutePath());
+        HashMap<String, Object> params = new HashMap<>();
+        PictureRenderData pictureRenderData = Pictures.ofLocal("/home/acupuncture/server" + url).size(430, 430).create();
+        params.put("pic", pictureRenderData);
+        params.put("bq", bq);
+        Long l = System.currentTimeMillis();
+        //成图
+        template.render(params);
+        //word转pdf
+        String filePath = "/home/acupuncture/server/profile/upload/WxQrCode" + l + ".docx";
+        template.writeAndClose(Files.newOutputStream(Paths.get(filePath)));
+        return "/profile/upload/WxQrCode" + l + ".docx";
+
+    }
+
+
+    @Override
+    public List<AmsWxQrCodeVo.ScreenResult> queryList(Long hospitalId) {
+        return wxQrCodeDao.selectScreenList(hospitalId == null ? null : CollectionUtil.newArrayList(hospitalId));
+    }
+
+//    @Override
+//    public List<AmsWxQrCodeVo.ScreenResult> queryList(Long hospitalId) {
+//        if (SecurityUtils.getUserId() == 1) {
+//            return wxQrCodeDao.selectScreen(hospitalId);
+//        } else {
+//            Long deptId = SecurityUtils.getDeptId();
+//            if (deptId == null) {
+//                return null;
+//            }
+//            SysDept sysDept = deptService.selectDeptById(deptId);
+//            if (sysDept == null) {
+//                return null;
+//            }
+//            AmsHospitalExample amsHospitalExample = new AmsHospitalExample();
+//            amsHospitalExample.createCriteria().andDeptIdEqualTo(sysDept.getParentId()).andDelFlagEqualTo((byte) 0);
+//            List<AmsHospital> amsHospitals = hospitalMapper.selectByExample(amsHospitalExample);
+//            if (CollectionUtil.isEmpty(amsHospitals)) {
+//                return null;
+//            }
+//            hospitalId = amsHospitals.get(0).getId();
+//        }
+//        return wxQrCodeDao.selectScreen(hospitalId);
+//    }
+
+    @Override
+    public List<AmsWxQrCodeVo.ScreenResult> queryScreenList() {
+        return wxQrCodeDao.selectScreen(null);
+    }
+
+    @Override
+    public AmsScreenWxQrCode add(AmsWxQrCodeDto.ScreenInsert screenInsert) throws Exception {
+
+        AmsScreenWxQrCodeExample amsScreenWxQrCodeExample = new AmsScreenWxQrCodeExample();
+        amsScreenWxQrCodeExample.createCriteria().andTenantIdEqualTo(screenInsert.getTenantId());
+        AmsScreenWxQrCode amsScreenWxQrCode1 = new AmsScreenWxQrCode();
+        amsScreenWxQrCode1.setDelFlag((byte) 1);
+        wxQrCodeMapper.updateByExampleSelective(amsScreenWxQrCode1, amsScreenWxQrCodeExample);
+
+        AmsScreenWxQrCode amsScreenWxQrCode = BeanUtil.copyProperties(screenInsert, AmsScreenWxQrCode.class);
+        String fileName = System.currentTimeMillis() + ".jpg";
+        String url = "/home/acupuncture/server/profile/upload/qrCode" + fileName;
+        File file = FileUtil.file(url);
+        cn.hutool.extra.qrcode.QrCodeUtil.generate(amsScreenWxQrCode.getPath(), 450, 450, file);
+//        amsScreenWxQrCode.setHospitalId();
+        if (amsScreenWxQrCode.getId() == null) {
+            amsScreenWxQrCode.setId(IdUtil.getSnowflakeNextId());
+            amsScreenWxQrCode.setUrl("/profile/upload/qrCode" + fileName);
+            amsScreenWxQrCode.setCreateBy(SecurityUtils.getUsername());
+            amsScreenWxQrCode.setDelFlag((byte) 0);
+            amsScreenWxQrCode.setCreateTime(new Date());
+            wxQrCodeMapper.insertSelective(amsScreenWxQrCode);
+        } else {
+            amsScreenWxQrCode.setUpdateTime(new Date());
+            amsScreenWxQrCode.setUrl("/profile/upload/" + QrCodeUtil.urlToQRCode(amsScreenWxQrCode.getPath(), "/home/acupuncture/server/profile/upload"));
+            amsScreenWxQrCode.setDelFlag((byte) 0);
+            wxQrCodeMapper.updateByPrimaryKeySelective(amsScreenWxQrCode);
+        }
+        return amsScreenWxQrCode;
+    }
+
+    @Override
+    public void deleteScreen(List<Long> idList) {
+        for (Long aLong : idList) {
+            AmsScreenWxQrCode amsWxQrCode = wxQrCodeMapper.selectByPrimaryKey(aLong);
+            if (amsWxQrCode != null) {
+                amsWxQrCode.setDelFlag((byte) 1);
+                wxQrCodeMapper.updateByPrimaryKeySelective(amsWxQrCode);
+            }
+        }
+    }
+
+    @Override
+    public String exportScreen(String url, Long hostpitalId) throws IOException {
+
+        DmsTenant amsHospital = dmsTenantMapper.selectByPrimaryKey(hostpitalId);
+
+        File file = new File(screenQrCodeTemplate);
+        XWPFTemplate template = XWPFTemplate.compile(file.getAbsolutePath());
+        HashMap<String, Object> params = new HashMap<>();
+        PictureRenderData pictureRenderData = Pictures.ofLocal("/home/acupuncture/server" + url).size(200, 200).create();
+        params.put("pic", pictureRenderData);
+        String hospitalName = "";
+        if (amsHospital != null) {
+            hospitalName = amsHospital.getName();
+        }
+        params.put("hospitalName", hospitalName);
+        Long l = System.currentTimeMillis();
+        //成图
+        template.render(params);
+        //word转pdf
+        String filePath = "/home/acupuncture/server/profile/upload/" + hospitalName + "卒中筛查二维码.docx";
+        template.writeAndClose(Files.newOutputStream(Paths.get(filePath)));
+        String pdfPath = "/home/acupuncture/server/profile/upload/" + hospitalName + "卒中筛查二维码.pdf";
+        AsposeUtils.doc2pdf(filePath, pdfPath);
+
+        return "/profile/upload/" + hospitalName + "卒中筛查二维码.pdf";
+
+    }
+
+    @Override
+    public String exportHbScreen(String url, Long hostpitalId) throws IOException {
+
+        DmsTenant amsHospital = dmsTenantMapper.selectByPrimaryKey(hostpitalId);
+
+        File file = new File(hbTemplate);
+        XWPFTemplate template = XWPFTemplate.compile(file.getAbsolutePath());
+        HashMap<String, Object> params = new HashMap<>();
+        PictureRenderData pictureRenderData = Pictures.ofLocal("/home/acupuncture/server" + url).size(113, 113).create();
+        params.put("pic", pictureRenderData);
+        String hospitalName = "";
+        if (amsHospital != null) {
+            hospitalName = amsHospital.getName();
+        }
+        params.put("hospitalName", hospitalName);
+        Long l = System.currentTimeMillis();
+        //成图
+        template.render(params);
+        //word转pdf
+        String filePath = "/home/acupuncture/server/profile/upload/" + hospitalName + "卒中筛查海报二维码.docx";
+        template.writeAndClose(Files.newOutputStream(Paths.get(filePath)));
+        String pdfPath = "/home/acupuncture/server/profile/upload/" + hospitalName + "卒中筛查海报二维码.pdf";
+        AsposeUtils.doc2pdf(filePath, pdfPath);
+
+        return "/profile/upload/" + hospitalName + "卒中筛查海报二维码.pdf";
+
+    }
+}
diff --git a/acupuncture-system/src/main/resources/mapper/dao/ExternalDao.xml b/acupuncture-system/src/main/resources/mapper/dao/ExternalDao.xml
new file mode 100644
index 00000000..86e72dc7
--- /dev/null
+++ b/acupuncture-system/src/main/resources/mapper/dao/ExternalDao.xml
@@ -0,0 +1,28 @@
+<?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.acupuncture.system.persist.dao.ExternalDao">
+   <select id="select" resultType="com.acupuncture.system.domain.vo.ExternalVo$Result"
+    parameterType="com.acupuncture.system.domain.dto.ExternalDto$Query">
+       select
+       t.visit_number as memberid,
+       t.name as name,
+       t.gender as sex,
+       t.birth_date as birthYear,
+       t.phone as phone,
+       t.tenant_id as gid
+       from
+       pms_treatment t
+       left join
+       pms_patient p on t.patient_id = p.id
+       <where>
+           t.delete_flag = 0
+           <if test="query.memberid != null and query.memberid != ''">
+               and t.visit_number = #{query.memberid}
+           </if>
+           <if test="query.from != null and query.from != ''">
+               and t.tenant_id = #{query.from}
+           </if>
+       </where>
+   </select>
+
+</mapper>
diff --git a/acupuncture-system/src/main/resources/mapper/dao/ScreeningDao.xml b/acupuncture-system/src/main/resources/mapper/dao/ScreeningDao.xml
new file mode 100644
index 00000000..e12178cb
--- /dev/null
+++ b/acupuncture-system/src/main/resources/mapper/dao/ScreeningDao.xml
@@ -0,0 +1,38 @@
+<?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.acupuncture.system.persist.dao.ScreeningDao">
+
+    <select id="queryByTime" resultType="com.acupuncture.system.domain.vo.QuestionnaireVo$WriteStatus">
+        SELECT
+            id,
+            questionnaire_name as questionnaireName,
+            `type`,
+            start_time AS `start`,
+            end_time AS `end`,
+            write_start_time as writeStartTime,
+            write_end_time as writeEndTime,
+            created_at as createdAt,
+            rec_status as recStatus,
+            data_scope as dataScope
+        FROM
+        scr_screening AS q
+        WHERE
+        rec_status = 0
+    </select>
+    <select id="countSubmit" resultType="Long">
+        SELECT
+        count(*)
+        FROM
+        scr_screening q,
+        scr_screening_detail d
+        WHERE
+        q.id = d.questionnaire_id
+        AND q.type = #{type}
+        AND q.write_start_time &lt;= #{time}
+        AND q.write_end_time &gt;= #{time}
+        AND d.user_id = #{userId}
+        AND d.submit_status = 1
+        AND q.rec_status = 0
+        AND d.rec_status = 0
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/acupuncture-system/src/main/resources/mapper/dao/ScreeningDetailDao.xml b/acupuncture-system/src/main/resources/mapper/dao/ScreeningDetailDao.xml
new file mode 100644
index 00000000..22c6c9bf
--- /dev/null
+++ b/acupuncture-system/src/main/resources/mapper/dao/ScreeningDetailDao.xml
@@ -0,0 +1,116 @@
+<?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.acupuncture.system.persist.dao.ScreeningDetailDao">
+
+
+    <select id="querySubmitStatus" resultType="java.lang.Integer">
+        SELECT submit_status
+        FROM scr_questionnaire_detail AS qd
+        WHERE qd.user_id = #{userId}
+          AND questionnaire_id = #{qid}
+          AND qd.rec_status = 0
+    </select>
+
+    <select id="queryIsExist" resultType="com.acupuncture.system.domain.vo.QuestionnaireVo$DetailInfo">
+        SELECT q.id,
+               qd.id AS detailId
+        FROM scr_questionnaire AS q
+                 LEFT JOIN scr_questionnaire_detail AS qd ON q.id = qd.questionnaire_id
+            AND qd.rec_status = 0
+            AND qd.user_id = #{userId}
+        WHERE q.write_start_time &lt; #{time}
+          AND q.write_end_time &gt; #{time}
+          AND q.type = #{type}
+          AND q.rec_status = 0
+    </select>
+
+    <select id="queryDetailIsExist" resultType="java.lang.Long">
+        SELECT id
+        FROM scr_screening_detail
+        WHERE del_flag = 0
+          AND question_code = #{code}
+          AND record_id = #{detailId}
+    </select>
+
+    <resultMap id="BaseResultMap" type="com.acupuncture.system.domain.vo.ScrScreenVo$Result">
+        <id column="id" jdbcType="BIGINT" property="id"/>
+        <result column="name" jdbcType="VARCHAR" property="name"/>
+        <result column="idcard" jdbcType="VARCHAR" property="idcard"/>
+        <result column="age" jdbcType="INTEGER" property="age"/>
+        <result column="phone" jdbcType="VARCHAR" property="phone"/>
+        <result column="city" jdbcType="VARCHAR" property="city"/>
+        <result column="county" jdbcType="VARCHAR" property="county"/>
+        <result column="province" jdbcType="VARCHAR" property="province"/>
+        <result column="hospital_level" jdbcType="TINYINT" property="hospitalLevel"/>
+        <result column="tenantName" jdbcType="VARCHAR" property="tenantName"/>
+        <result column="departments" jdbcType="VARCHAR" property="departments"/>
+        <result column="user_id" jdbcType="BIGINT" property="userId"/>
+        <result column="screen_id" jdbcType="BIGINT" property="screenId"/>
+        <result column="submit_status" jdbcType="TINYINT" property="submitStatus"/>
+        <result column="position_id" jdbcType="BIGINT" property="positionId"/>
+        <result column="tenant_id" jdbcType="BIGINT" property="tenantId"/>
+        <result column="rzsc_result" jdbcType="INTEGER" property="rzscResult"/>
+        <result column="screen_type" jdbcType="TINYINT" property="screenType"/>
+        <result column="screen_result" jdbcType="VARCHAR" property="screenResult"/>
+        <result column="del_flag" jdbcType="TINYINT" property="delFlag"/>
+        <result column="create_by" jdbcType="VARCHAR" property="createBy"/>
+        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
+<!--        <collection property="detailList"-->
+<!--                    ofType="com.acupuncture.system.domain.vo.ScrScreenVo$ScreeningDetailVo">-->
+<!--            <id column="detailId" property="detailId"/>-->
+<!--            <result column="question_code" property="questionCode"/>-->
+<!--            <result column="answer" property="answer"/>-->
+<!--            <result column="record_id" property="recordId"/>-->
+<!--        </collection>-->
+    </resultMap>
+
+    <select id="queryResult" resultMap="BaseResultMap" parameterType="com.acupuncture.system.domain.dto.ScreeningDto$Query">
+        select r.*,
+        t.name as tenantName
+        from
+        scr_screening_record r
+        left join
+            dms_tenant t on r.tenant_id = t.id
+        <where>
+            r.del_flag = 0
+            <if test="type != null">
+                and r.screen_type = #{type}
+            </if>
+            <if test="param.keywords != null and param.keywords != ''">
+                <if test="param.keywords.length() &gt; 0">
+                    and (
+                     r.name like concat('%', #{param.keywords}, '%')
+                    or r.pinyin_full like concat('%', #{param.keywords}, '%')
+                    or r.pinyin_simple like concat('%', #{param.keywords}, '%')
+                    or r.idcard like concat('%', #{param.keywords}, '%')
+                    or r.phone like concat('%', #{param.keywords}, '%')
+                    )
+                </if>
+            </if>
+            <if test="param.startTime != null and param.startTime != ''">
+                and r.create_time &gt;= #{param.startTime}
+            </if>
+            <if test="param.endTime != null and param.endTime != ''">
+                and r.create_time &lt;= #{param.endTime}
+            </if>
+            <if test="param.startAge != null and param.endAge != ''">
+                and r.age between #{param.startAge} and #{param.endAge}
+            </if>
+        </where>
+--         group by r.id
+        order by r.create_time desc
+    </select>
+
+    <select id="queryDetailList" resultType="com.acupuncture.system.domain.vo.ScrScreenVo$ScreeningDetailVo">
+        select id as detailId,
+               question_code as questionCode,
+               answer,
+               record_id as recordId
+        from scr_screening_detail
+        where del_flag = 0
+          and record_id in
+        <foreach collection="detailIdList" item="item" index="index" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
+</mapper>
diff --git a/acupuncture-system/src/main/resources/mapper/dao/WxQrCodeDao.xml b/acupuncture-system/src/main/resources/mapper/dao/WxQrCodeDao.xml
new file mode 100644
index 00000000..825fdfad
--- /dev/null
+++ b/acupuncture-system/src/main/resources/mapper/dao/WxQrCodeDao.xml
@@ -0,0 +1,89 @@
+<?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.acupuncture.system.persist.dao.WxQrCodeDao">
+
+    <select id="select" resultType="com.acupuncture.system.domain.vo.AmsWxQrCodeVo$Result">
+        SELECT
+            c.id,
+            c.url,
+            c.path,
+            c.dept_id as deptId,
+            c.disease_id as diseaseId,
+            c.user_name as userName,
+            c.remark,
+            c.create_time as createTime,
+            c.create_by as createBy,
+            a.`name` as areaName,
+            d.`name` as deptName
+        FROM
+            ams_wx_qr_code c
+                LEFT JOIN yzc_disease_area a ON c.disease_id = a.id
+                LEFT JOIN yzc_department d ON d.id = c.dept_id
+        <where>
+            c.del_flag = 0
+            <if test="diseaseId != null">
+                AND c.disease_id = #{diseaseId}
+            </if>
+            <if test="deptId != null">
+                AND c.dept_id = #{deptId}
+            </if>
+        </where>
+        order by c.create_time desc
+    </select>
+    <select id="selectScreen" resultType="com.acupuncture.system.domain.vo.AmsWxQrCodeVo$ScreenResult">
+        SELECT
+        c.id,
+        c.url,
+        c.path,
+        c.tenant_id as tenantId,
+        c.remark,
+        c.create_time as createTime,
+        c.create_by as createBy,
+        c.contacts,
+        c.phone,
+        c.address,
+        h.name as tenantName
+        FROM
+        ams_screen_wx_qr_code c
+        left join dms_tenant h on c.tenant_id = h.id
+        <where>
+            c.del_flag = 0
+            and c.center_id is null
+            <if test="hospitalId != null">
+                AND c.hospital_id = #{hospitalId}
+            </if>
+        </where>
+        GROUP BY c.id
+        order by c.create_time desc
+    </select>
+
+    <select id="selectScreenList" resultType="com.acupuncture.system.domain.vo.AmsWxQrCodeVo$ScreenResult">
+        SELECT
+        c.id,
+        c.url,
+        c.path,
+        c.tenant_id as tenantId,
+        c.remark,
+        c.create_time as createTime,
+        c.create_by as createBy,
+        c.contacts,
+        c.phone,
+        c.address,
+        h.name as tenantName
+        FROM
+        ams_screen_wx_qr_code c
+        left join dms_tenant h on c.tenant_id = h.id
+        <where>
+            c.del_flag = 0
+            and c.center_id is null
+            <if test="hospitalIdList != null and hospitalIdList.size() > 0">
+                AND c.tenant_id in
+                <foreach collection="hospitalIdList" item="id" open="(" close=")" separator=",">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY c.id
+        order by c.create_time desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/acupuncture-system/src/main/resources/mapper/system/AmsScreenWxQrCodeMapper.xml b/acupuncture-system/src/main/resources/mapper/system/AmsScreenWxQrCodeMapper.xml
new file mode 100644
index 00000000..6fcf4fba
--- /dev/null
+++ b/acupuncture-system/src/main/resources/mapper/system/AmsScreenWxQrCodeMapper.xml
@@ -0,0 +1,347 @@
+<?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.acupuncture.system.persist.mapper.AmsScreenWxQrCodeMapper">
+  <resultMap id="BaseResultMap" type="com.acupuncture.system.domain.po.AmsScreenWxQrCode">
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="url" jdbcType="VARCHAR" property="url" />
+    <result column="path" jdbcType="VARCHAR" property="path" />
+    <result column="tenant_id" jdbcType="BIGINT" property="tenantId" />
+    <result column="remark" jdbcType="VARCHAR" property="remark" />
+    <result column="create_by" jdbcType="VARCHAR" property="createBy" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="update_by" jdbcType="VARCHAR" property="updateBy" />
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="del_flag" jdbcType="TINYINT" property="delFlag" />
+    <result column="contacts" jdbcType="VARCHAR" property="contacts" />
+    <result column="phone" jdbcType="VARCHAR" property="phone" />
+    <result column="address" jdbcType="VARCHAR" property="address" />
+    <result column="center_id" jdbcType="BIGINT" property="centerId" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    id, url, path, tenant_id, remark, create_by, create_time, update_by, update_time, 
+    del_flag, contacts, phone, address, center_id
+  </sql>
+  <select id="selectByExample" parameterType="com.acupuncture.system.domain.po.AmsScreenWxQrCodeExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from ams_screen_wx_qr_code
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from ams_screen_wx_qr_code
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    delete from ams_screen_wx_qr_code
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.acupuncture.system.domain.po.AmsScreenWxQrCode">
+    insert into ams_screen_wx_qr_code (id, url, path, 
+      tenant_id, remark, create_by, 
+      create_time, update_by, update_time, 
+      del_flag, contacts, phone, 
+      address, center_id)
+    values (#{id,jdbcType=BIGINT}, #{url,jdbcType=VARCHAR}, #{path,jdbcType=VARCHAR}, 
+      #{tenantId,jdbcType=BIGINT}, #{remark,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR}, 
+      #{createTime,jdbcType=TIMESTAMP}, #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, 
+      #{delFlag,jdbcType=TINYINT}, #{contacts,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, 
+      #{address,jdbcType=VARCHAR}, #{centerId,jdbcType=BIGINT})
+  </insert>
+  <insert id="insertSelective" parameterType="com.acupuncture.system.domain.po.AmsScreenWxQrCode">
+    insert into ams_screen_wx_qr_code
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="url != null">
+        url,
+      </if>
+      <if test="path != null">
+        path,
+      </if>
+      <if test="tenantId != null">
+        tenant_id,
+      </if>
+      <if test="remark != null">
+        remark,
+      </if>
+      <if test="createBy != null">
+        create_by,
+      </if>
+      <if test="createTime != null">
+        create_time,
+      </if>
+      <if test="updateBy != null">
+        update_by,
+      </if>
+      <if test="updateTime != null">
+        update_time,
+      </if>
+      <if test="delFlag != null">
+        del_flag,
+      </if>
+      <if test="contacts != null">
+        contacts,
+      </if>
+      <if test="phone != null">
+        phone,
+      </if>
+      <if test="address != null">
+        address,
+      </if>
+      <if test="centerId != null">
+        center_id,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="url != null">
+        #{url,jdbcType=VARCHAR},
+      </if>
+      <if test="path != null">
+        #{path,jdbcType=VARCHAR},
+      </if>
+      <if test="tenantId != null">
+        #{tenantId,jdbcType=BIGINT},
+      </if>
+      <if test="remark != null">
+        #{remark,jdbcType=VARCHAR},
+      </if>
+      <if test="createBy != null">
+        #{createBy,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateBy != null">
+        #{updateBy,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null">
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="delFlag != null">
+        #{delFlag,jdbcType=TINYINT},
+      </if>
+      <if test="contacts != null">
+        #{contacts,jdbcType=VARCHAR},
+      </if>
+      <if test="phone != null">
+        #{phone,jdbcType=VARCHAR},
+      </if>
+      <if test="address != null">
+        #{address,jdbcType=VARCHAR},
+      </if>
+      <if test="centerId != null">
+        #{centerId,jdbcType=BIGINT},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.acupuncture.system.domain.po.AmsScreenWxQrCodeExample" resultType="java.lang.Long">
+    select count(*) from ams_screen_wx_qr_code
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update ams_screen_wx_qr_code
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=BIGINT},
+      </if>
+      <if test="record.url != null">
+        url = #{record.url,jdbcType=VARCHAR},
+      </if>
+      <if test="record.path != null">
+        path = #{record.path,jdbcType=VARCHAR},
+      </if>
+      <if test="record.tenantId != null">
+        tenant_id = #{record.tenantId,jdbcType=BIGINT},
+      </if>
+      <if test="record.remark != null">
+        remark = #{record.remark,jdbcType=VARCHAR},
+      </if>
+      <if test="record.createBy != null">
+        create_by = #{record.createBy,jdbcType=VARCHAR},
+      </if>
+      <if test="record.createTime != null">
+        create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.updateBy != null">
+        update_by = #{record.updateBy,jdbcType=VARCHAR},
+      </if>
+      <if test="record.updateTime != null">
+        update_time = #{record.updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.delFlag != null">
+        del_flag = #{record.delFlag,jdbcType=TINYINT},
+      </if>
+      <if test="record.contacts != null">
+        contacts = #{record.contacts,jdbcType=VARCHAR},
+      </if>
+      <if test="record.phone != null">
+        phone = #{record.phone,jdbcType=VARCHAR},
+      </if>
+      <if test="record.address != null">
+        address = #{record.address,jdbcType=VARCHAR},
+      </if>
+      <if test="record.centerId != null">
+        center_id = #{record.centerId,jdbcType=BIGINT},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update ams_screen_wx_qr_code
+    set id = #{record.id,jdbcType=BIGINT},
+      url = #{record.url,jdbcType=VARCHAR},
+      path = #{record.path,jdbcType=VARCHAR},
+      tenant_id = #{record.tenantId,jdbcType=BIGINT},
+      remark = #{record.remark,jdbcType=VARCHAR},
+      create_by = #{record.createBy,jdbcType=VARCHAR},
+      create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      update_by = #{record.updateBy,jdbcType=VARCHAR},
+      update_time = #{record.updateTime,jdbcType=TIMESTAMP},
+      del_flag = #{record.delFlag,jdbcType=TINYINT},
+      contacts = #{record.contacts,jdbcType=VARCHAR},
+      phone = #{record.phone,jdbcType=VARCHAR},
+      address = #{record.address,jdbcType=VARCHAR},
+      center_id = #{record.centerId,jdbcType=BIGINT}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.acupuncture.system.domain.po.AmsScreenWxQrCode">
+    update ams_screen_wx_qr_code
+    <set>
+      <if test="url != null">
+        url = #{url,jdbcType=VARCHAR},
+      </if>
+      <if test="path != null">
+        path = #{path,jdbcType=VARCHAR},
+      </if>
+      <if test="tenantId != null">
+        tenant_id = #{tenantId,jdbcType=BIGINT},
+      </if>
+      <if test="remark != null">
+        remark = #{remark,jdbcType=VARCHAR},
+      </if>
+      <if test="createBy != null">
+        create_by = #{createBy,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        create_time = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateBy != null">
+        update_by = #{updateBy,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null">
+        update_time = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="delFlag != null">
+        del_flag = #{delFlag,jdbcType=TINYINT},
+      </if>
+      <if test="contacts != null">
+        contacts = #{contacts,jdbcType=VARCHAR},
+      </if>
+      <if test="phone != null">
+        phone = #{phone,jdbcType=VARCHAR},
+      </if>
+      <if test="address != null">
+        address = #{address,jdbcType=VARCHAR},
+      </if>
+      <if test="centerId != null">
+        center_id = #{centerId,jdbcType=BIGINT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.acupuncture.system.domain.po.AmsScreenWxQrCode">
+    update ams_screen_wx_qr_code
+    set url = #{url,jdbcType=VARCHAR},
+      path = #{path,jdbcType=VARCHAR},
+      tenant_id = #{tenantId,jdbcType=BIGINT},
+      remark = #{remark,jdbcType=VARCHAR},
+      create_by = #{createBy,jdbcType=VARCHAR},
+      create_time = #{createTime,jdbcType=TIMESTAMP},
+      update_by = #{updateBy,jdbcType=VARCHAR},
+      update_time = #{updateTime,jdbcType=TIMESTAMP},
+      del_flag = #{delFlag,jdbcType=TINYINT},
+      contacts = #{contacts,jdbcType=VARCHAR},
+      phone = #{phone,jdbcType=VARCHAR},
+      address = #{address,jdbcType=VARCHAR},
+      center_id = #{centerId,jdbcType=BIGINT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/acupuncture-system/src/main/resources/mapper/system/ScrScreeningDetailMapper.xml b/acupuncture-system/src/main/resources/mapper/system/ScrScreeningDetailMapper.xml
new file mode 100644
index 00000000..c5d3dc36
--- /dev/null
+++ b/acupuncture-system/src/main/resources/mapper/system/ScrScreeningDetailMapper.xml
@@ -0,0 +1,237 @@
+<?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.acupuncture.system.persist.mapper.ScrScreeningDetailMapper">
+  <resultMap id="BaseResultMap" type="com.acupuncture.system.domain.po.ScrScreeningDetail">
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="record_id" jdbcType="BIGINT" property="recordId" />
+    <result column="question_code" jdbcType="VARCHAR" property="questionCode" />
+    <result column="answer" jdbcType="VARCHAR" property="answer" />
+    <result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
+    <result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
+    <result column="del_flag" jdbcType="TINYINT" property="delFlag" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    id, record_id, question_code, answer, created_at, updated_at, del_flag
+  </sql>
+  <select id="selectByExample" parameterType="com.acupuncture.system.domain.po.ScrScreeningDetailExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from scr_screening_detail
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from scr_screening_detail
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    delete from scr_screening_detail
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.acupuncture.system.domain.po.ScrScreeningDetail">
+    insert into scr_screening_detail (id, record_id, question_code, 
+      answer, created_at, updated_at, 
+      del_flag)
+    values (#{id,jdbcType=BIGINT}, #{recordId,jdbcType=BIGINT}, #{questionCode,jdbcType=VARCHAR}, 
+      #{answer,jdbcType=VARCHAR}, #{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, 
+      #{delFlag,jdbcType=TINYINT})
+  </insert>
+  <insert id="insertSelective" parameterType="com.acupuncture.system.domain.po.ScrScreeningDetail">
+    insert into scr_screening_detail
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="recordId != null">
+        record_id,
+      </if>
+      <if test="questionCode != null">
+        question_code,
+      </if>
+      <if test="answer != null">
+        answer,
+      </if>
+      <if test="createdAt != null">
+        created_at,
+      </if>
+      <if test="updatedAt != null">
+        updated_at,
+      </if>
+      <if test="delFlag != null">
+        del_flag,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="recordId != null">
+        #{recordId,jdbcType=BIGINT},
+      </if>
+      <if test="questionCode != null">
+        #{questionCode,jdbcType=VARCHAR},
+      </if>
+      <if test="answer != null">
+        #{answer,jdbcType=VARCHAR},
+      </if>
+      <if test="createdAt != null">
+        #{createdAt,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updatedAt != null">
+        #{updatedAt,jdbcType=TIMESTAMP},
+      </if>
+      <if test="delFlag != null">
+        #{delFlag,jdbcType=TINYINT},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.acupuncture.system.domain.po.ScrScreeningDetailExample" resultType="java.lang.Long">
+    select count(*) from scr_screening_detail
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update scr_screening_detail
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=BIGINT},
+      </if>
+      <if test="record.recordId != null">
+        record_id = #{record.recordId,jdbcType=BIGINT},
+      </if>
+      <if test="record.questionCode != null">
+        question_code = #{record.questionCode,jdbcType=VARCHAR},
+      </if>
+      <if test="record.answer != null">
+        answer = #{record.answer,jdbcType=VARCHAR},
+      </if>
+      <if test="record.createdAt != null">
+        created_at = #{record.createdAt,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.updatedAt != null">
+        updated_at = #{record.updatedAt,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.delFlag != null">
+        del_flag = #{record.delFlag,jdbcType=TINYINT},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update scr_screening_detail
+    set id = #{record.id,jdbcType=BIGINT},
+      record_id = #{record.recordId,jdbcType=BIGINT},
+      question_code = #{record.questionCode,jdbcType=VARCHAR},
+      answer = #{record.answer,jdbcType=VARCHAR},
+      created_at = #{record.createdAt,jdbcType=TIMESTAMP},
+      updated_at = #{record.updatedAt,jdbcType=TIMESTAMP},
+      del_flag = #{record.delFlag,jdbcType=TINYINT}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.acupuncture.system.domain.po.ScrScreeningDetail">
+    update scr_screening_detail
+    <set>
+      <if test="recordId != null">
+        record_id = #{recordId,jdbcType=BIGINT},
+      </if>
+      <if test="questionCode != null">
+        question_code = #{questionCode,jdbcType=VARCHAR},
+      </if>
+      <if test="answer != null">
+        answer = #{answer,jdbcType=VARCHAR},
+      </if>
+      <if test="createdAt != null">
+        created_at = #{createdAt,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updatedAt != null">
+        updated_at = #{updatedAt,jdbcType=TIMESTAMP},
+      </if>
+      <if test="delFlag != null">
+        del_flag = #{delFlag,jdbcType=TINYINT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.acupuncture.system.domain.po.ScrScreeningDetail">
+    update scr_screening_detail
+    set record_id = #{recordId,jdbcType=BIGINT},
+      question_code = #{questionCode,jdbcType=VARCHAR},
+      answer = #{answer,jdbcType=VARCHAR},
+      created_at = #{createdAt,jdbcType=TIMESTAMP},
+      updated_at = #{updatedAt,jdbcType=TIMESTAMP},
+      del_flag = #{delFlag,jdbcType=TINYINT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/acupuncture-system/src/main/resources/mapper/system/ScrScreeningDrawMapper.xml b/acupuncture-system/src/main/resources/mapper/system/ScrScreeningDrawMapper.xml
new file mode 100644
index 00000000..a4f7f97d
--- /dev/null
+++ b/acupuncture-system/src/main/resources/mapper/system/ScrScreeningDrawMapper.xml
@@ -0,0 +1,285 @@
+<?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.acupuncture.system.persist.mapper.ScrScreeningDrawMapper">
+  <resultMap id="BaseResultMap" type="com.acupuncture.system.domain.po.ScrScreeningDraw">
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="record_id" jdbcType="VARCHAR" property="recordId" />
+    <result column="scale_id" jdbcType="VARCHAR" property="scaleId" />
+    <result column="question_id" jdbcType="INTEGER" property="questionId" />
+    <result column="url" jdbcType="INTEGER" property="url" />
+    <result column="create_by" jdbcType="VARCHAR" property="createBy" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="update_by" jdbcType="VARCHAR" property="updateBy" />
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="remark" jdbcType="VARCHAR" property="remark" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    id, record_id, scale_id, question_id, url, create_by, create_time, update_by, update_time, 
+    remark
+  </sql>
+  <select id="selectByExample" parameterType="com.acupuncture.system.domain.po.ScrScreeningDrawExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from scr_screening_draw
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from scr_screening_draw
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    delete from scr_screening_draw
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.acupuncture.system.domain.po.ScrScreeningDraw">
+    insert into scr_screening_draw (id, record_id, scale_id, 
+      question_id, url, create_by, 
+      create_time, update_by, update_time, 
+      remark)
+    values (#{id,jdbcType=BIGINT}, #{recordId,jdbcType=VARCHAR}, #{scaleId,jdbcType=VARCHAR}, 
+      #{questionId,jdbcType=INTEGER}, #{url,jdbcType=INTEGER}, #{createBy,jdbcType=VARCHAR}, 
+      #{createTime,jdbcType=TIMESTAMP}, #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, 
+      #{remark,jdbcType=VARCHAR})
+  </insert>
+  <insert id="insertSelective" parameterType="com.acupuncture.system.domain.po.ScrScreeningDraw">
+    insert into scr_screening_draw
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="recordId != null">
+        record_id,
+      </if>
+      <if test="scaleId != null">
+        scale_id,
+      </if>
+      <if test="questionId != null">
+        question_id,
+      </if>
+      <if test="url != null">
+        url,
+      </if>
+      <if test="createBy != null">
+        create_by,
+      </if>
+      <if test="createTime != null">
+        create_time,
+      </if>
+      <if test="updateBy != null">
+        update_by,
+      </if>
+      <if test="updateTime != null">
+        update_time,
+      </if>
+      <if test="remark != null">
+        remark,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="recordId != null">
+        #{recordId,jdbcType=VARCHAR},
+      </if>
+      <if test="scaleId != null">
+        #{scaleId,jdbcType=VARCHAR},
+      </if>
+      <if test="questionId != null">
+        #{questionId,jdbcType=INTEGER},
+      </if>
+      <if test="url != null">
+        #{url,jdbcType=INTEGER},
+      </if>
+      <if test="createBy != null">
+        #{createBy,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateBy != null">
+        #{updateBy,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null">
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="remark != null">
+        #{remark,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.acupuncture.system.domain.po.ScrScreeningDrawExample" resultType="java.lang.Long">
+    select count(*) from scr_screening_draw
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update scr_screening_draw
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=BIGINT},
+      </if>
+      <if test="record.recordId != null">
+        record_id = #{record.recordId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.scaleId != null">
+        scale_id = #{record.scaleId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.questionId != null">
+        question_id = #{record.questionId,jdbcType=INTEGER},
+      </if>
+      <if test="record.url != null">
+        url = #{record.url,jdbcType=INTEGER},
+      </if>
+      <if test="record.createBy != null">
+        create_by = #{record.createBy,jdbcType=VARCHAR},
+      </if>
+      <if test="record.createTime != null">
+        create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.updateBy != null">
+        update_by = #{record.updateBy,jdbcType=VARCHAR},
+      </if>
+      <if test="record.updateTime != null">
+        update_time = #{record.updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.remark != null">
+        remark = #{record.remark,jdbcType=VARCHAR},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update scr_screening_draw
+    set id = #{record.id,jdbcType=BIGINT},
+      record_id = #{record.recordId,jdbcType=VARCHAR},
+      scale_id = #{record.scaleId,jdbcType=VARCHAR},
+      question_id = #{record.questionId,jdbcType=INTEGER},
+      url = #{record.url,jdbcType=INTEGER},
+      create_by = #{record.createBy,jdbcType=VARCHAR},
+      create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      update_by = #{record.updateBy,jdbcType=VARCHAR},
+      update_time = #{record.updateTime,jdbcType=TIMESTAMP},
+      remark = #{record.remark,jdbcType=VARCHAR}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.acupuncture.system.domain.po.ScrScreeningDraw">
+    update scr_screening_draw
+    <set>
+      <if test="recordId != null">
+        record_id = #{recordId,jdbcType=VARCHAR},
+      </if>
+      <if test="scaleId != null">
+        scale_id = #{scaleId,jdbcType=VARCHAR},
+      </if>
+      <if test="questionId != null">
+        question_id = #{questionId,jdbcType=INTEGER},
+      </if>
+      <if test="url != null">
+        url = #{url,jdbcType=INTEGER},
+      </if>
+      <if test="createBy != null">
+        create_by = #{createBy,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        create_time = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateBy != null">
+        update_by = #{updateBy,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null">
+        update_time = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="remark != null">
+        remark = #{remark,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.acupuncture.system.domain.po.ScrScreeningDraw">
+    update scr_screening_draw
+    set record_id = #{recordId,jdbcType=VARCHAR},
+      scale_id = #{scaleId,jdbcType=VARCHAR},
+      question_id = #{questionId,jdbcType=INTEGER},
+      url = #{url,jdbcType=INTEGER},
+      create_by = #{createBy,jdbcType=VARCHAR},
+      create_time = #{createTime,jdbcType=TIMESTAMP},
+      update_by = #{updateBy,jdbcType=VARCHAR},
+      update_time = #{updateTime,jdbcType=TIMESTAMP},
+      remark = #{remark,jdbcType=VARCHAR}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/acupuncture-system/src/main/resources/mapper/system/ScrScreeningMapper.xml b/acupuncture-system/src/main/resources/mapper/system/ScrScreeningMapper.xml
new file mode 100644
index 00000000..ad2ee9a4
--- /dev/null
+++ b/acupuncture-system/src/main/resources/mapper/system/ScrScreeningMapper.xml
@@ -0,0 +1,300 @@
+<?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.acupuncture.system.persist.mapper.ScrScreeningMapper">
+  <resultMap id="BaseResultMap" type="com.acupuncture.system.domain.po.ScrScreening">
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="questionnaire_name" jdbcType="VARCHAR" property="questionnaireName" />
+    <result column="start_time" jdbcType="BIGINT" property="startTime" />
+    <result column="end_time" jdbcType="BIGINT" property="endTime" />
+    <result column="type" jdbcType="TINYINT" property="type" />
+    <result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
+    <result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
+    <result column="rec_status" jdbcType="TINYINT" property="recStatus" />
+    <result column="write_start_time" jdbcType="BIGINT" property="writeStartTime" />
+    <result column="write_end_time" jdbcType="BIGINT" property="writeEndTime" />
+    <result column="data_scope" jdbcType="VARCHAR" property="dataScope" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    id, questionnaire_name, start_time, end_time, type, created_at, updated_at, rec_status, 
+    write_start_time, write_end_time, data_scope
+  </sql>
+  <select id="selectByExample" parameterType="com.acupuncture.system.domain.po.ScrScreeningExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from scr_screening
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from scr_screening
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    delete from scr_screening
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.acupuncture.system.domain.po.ScrScreening">
+    insert into scr_screening (id, questionnaire_name, start_time, 
+      end_time, type, created_at, 
+      updated_at, rec_status, write_start_time, 
+      write_end_time, data_scope)
+    values (#{id,jdbcType=BIGINT}, #{questionnaireName,jdbcType=VARCHAR}, #{startTime,jdbcType=BIGINT}, 
+      #{endTime,jdbcType=BIGINT}, #{type,jdbcType=TINYINT}, #{createdAt,jdbcType=TIMESTAMP}, 
+      #{updatedAt,jdbcType=TIMESTAMP}, #{recStatus,jdbcType=TINYINT}, #{writeStartTime,jdbcType=BIGINT}, 
+      #{writeEndTime,jdbcType=BIGINT}, #{dataScope,jdbcType=VARCHAR})
+  </insert>
+  <insert id="insertSelective" parameterType="com.acupuncture.system.domain.po.ScrScreening">
+    insert into scr_screening
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="questionnaireName != null">
+        questionnaire_name,
+      </if>
+      <if test="startTime != null">
+        start_time,
+      </if>
+      <if test="endTime != null">
+        end_time,
+      </if>
+      <if test="type != null">
+        type,
+      </if>
+      <if test="createdAt != null">
+        created_at,
+      </if>
+      <if test="updatedAt != null">
+        updated_at,
+      </if>
+      <if test="recStatus != null">
+        rec_status,
+      </if>
+      <if test="writeStartTime != null">
+        write_start_time,
+      </if>
+      <if test="writeEndTime != null">
+        write_end_time,
+      </if>
+      <if test="dataScope != null">
+        data_scope,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="questionnaireName != null">
+        #{questionnaireName,jdbcType=VARCHAR},
+      </if>
+      <if test="startTime != null">
+        #{startTime,jdbcType=BIGINT},
+      </if>
+      <if test="endTime != null">
+        #{endTime,jdbcType=BIGINT},
+      </if>
+      <if test="type != null">
+        #{type,jdbcType=TINYINT},
+      </if>
+      <if test="createdAt != null">
+        #{createdAt,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updatedAt != null">
+        #{updatedAt,jdbcType=TIMESTAMP},
+      </if>
+      <if test="recStatus != null">
+        #{recStatus,jdbcType=TINYINT},
+      </if>
+      <if test="writeStartTime != null">
+        #{writeStartTime,jdbcType=BIGINT},
+      </if>
+      <if test="writeEndTime != null">
+        #{writeEndTime,jdbcType=BIGINT},
+      </if>
+      <if test="dataScope != null">
+        #{dataScope,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.acupuncture.system.domain.po.ScrScreeningExample" resultType="java.lang.Long">
+    select count(*) from scr_screening
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update scr_screening
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=BIGINT},
+      </if>
+      <if test="record.questionnaireName != null">
+        questionnaire_name = #{record.questionnaireName,jdbcType=VARCHAR},
+      </if>
+      <if test="record.startTime != null">
+        start_time = #{record.startTime,jdbcType=BIGINT},
+      </if>
+      <if test="record.endTime != null">
+        end_time = #{record.endTime,jdbcType=BIGINT},
+      </if>
+      <if test="record.type != null">
+        type = #{record.type,jdbcType=TINYINT},
+      </if>
+      <if test="record.createdAt != null">
+        created_at = #{record.createdAt,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.updatedAt != null">
+        updated_at = #{record.updatedAt,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.recStatus != null">
+        rec_status = #{record.recStatus,jdbcType=TINYINT},
+      </if>
+      <if test="record.writeStartTime != null">
+        write_start_time = #{record.writeStartTime,jdbcType=BIGINT},
+      </if>
+      <if test="record.writeEndTime != null">
+        write_end_time = #{record.writeEndTime,jdbcType=BIGINT},
+      </if>
+      <if test="record.dataScope != null">
+        data_scope = #{record.dataScope,jdbcType=VARCHAR},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update scr_screening
+    set id = #{record.id,jdbcType=BIGINT},
+      questionnaire_name = #{record.questionnaireName,jdbcType=VARCHAR},
+      start_time = #{record.startTime,jdbcType=BIGINT},
+      end_time = #{record.endTime,jdbcType=BIGINT},
+      type = #{record.type,jdbcType=TINYINT},
+      created_at = #{record.createdAt,jdbcType=TIMESTAMP},
+      updated_at = #{record.updatedAt,jdbcType=TIMESTAMP},
+      rec_status = #{record.recStatus,jdbcType=TINYINT},
+      write_start_time = #{record.writeStartTime,jdbcType=BIGINT},
+      write_end_time = #{record.writeEndTime,jdbcType=BIGINT},
+      data_scope = #{record.dataScope,jdbcType=VARCHAR}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.acupuncture.system.domain.po.ScrScreening">
+    update scr_screening
+    <set>
+      <if test="questionnaireName != null">
+        questionnaire_name = #{questionnaireName,jdbcType=VARCHAR},
+      </if>
+      <if test="startTime != null">
+        start_time = #{startTime,jdbcType=BIGINT},
+      </if>
+      <if test="endTime != null">
+        end_time = #{endTime,jdbcType=BIGINT},
+      </if>
+      <if test="type != null">
+        type = #{type,jdbcType=TINYINT},
+      </if>
+      <if test="createdAt != null">
+        created_at = #{createdAt,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updatedAt != null">
+        updated_at = #{updatedAt,jdbcType=TIMESTAMP},
+      </if>
+      <if test="recStatus != null">
+        rec_status = #{recStatus,jdbcType=TINYINT},
+      </if>
+      <if test="writeStartTime != null">
+        write_start_time = #{writeStartTime,jdbcType=BIGINT},
+      </if>
+      <if test="writeEndTime != null">
+        write_end_time = #{writeEndTime,jdbcType=BIGINT},
+      </if>
+      <if test="dataScope != null">
+        data_scope = #{dataScope,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.acupuncture.system.domain.po.ScrScreening">
+    update scr_screening
+    set questionnaire_name = #{questionnaireName,jdbcType=VARCHAR},
+      start_time = #{startTime,jdbcType=BIGINT},
+      end_time = #{endTime,jdbcType=BIGINT},
+      type = #{type,jdbcType=TINYINT},
+      created_at = #{createdAt,jdbcType=TIMESTAMP},
+      updated_at = #{updatedAt,jdbcType=TIMESTAMP},
+      rec_status = #{recStatus,jdbcType=TINYINT},
+      write_start_time = #{writeStartTime,jdbcType=BIGINT},
+      write_end_time = #{writeEndTime,jdbcType=BIGINT},
+      data_scope = #{dataScope,jdbcType=VARCHAR}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/acupuncture-system/src/main/resources/mapper/system/ScrScreeningRecordMapper.xml b/acupuncture-system/src/main/resources/mapper/system/ScrScreeningRecordMapper.xml
new file mode 100644
index 00000000..26053a7d
--- /dev/null
+++ b/acupuncture-system/src/main/resources/mapper/system/ScrScreeningRecordMapper.xml
@@ -0,0 +1,552 @@
+<?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.acupuncture.system.persist.mapper.ScrScreeningRecordMapper">
+  <resultMap id="BaseResultMap" type="com.acupuncture.system.domain.po.ScrScreeningRecord">
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+    <result column="idcard" jdbcType="VARCHAR" property="idcard" />
+    <result column="age" jdbcType="INTEGER" property="age" />
+    <result column="phone" jdbcType="VARCHAR" property="phone" />
+    <result column="city" jdbcType="VARCHAR" property="city" />
+    <result column="county" jdbcType="VARCHAR" property="county" />
+    <result column="province" jdbcType="VARCHAR" property="province" />
+    <result column="hospital_level" jdbcType="TINYINT" property="hospitalLevel" />
+    <result column="hospital_name" jdbcType="VARCHAR" property="hospitalName" />
+    <result column="departments" jdbcType="VARCHAR" property="departments" />
+    <result column="user_id" jdbcType="BIGINT" property="userId" />
+    <result column="screen_id" jdbcType="BIGINT" property="screenId" />
+    <result column="submit_status" jdbcType="TINYINT" property="submitStatus" />
+    <result column="position_id" jdbcType="BIGINT" property="positionId" />
+    <result column="tenant_id" jdbcType="BIGINT" property="tenantId" />
+    <result column="rzsc_result" jdbcType="INTEGER" property="rzscResult" />
+    <result column="screen_type" jdbcType="TINYINT" property="screenType" />
+    <result column="screen_result" jdbcType="VARCHAR" property="screenResult" />
+    <result column="del_flag" jdbcType="TINYINT" property="delFlag" />
+    <result column="create_by" jdbcType="VARCHAR" property="createBy" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="update_by" jdbcType="VARCHAR" property="updateBy" />
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="remark" jdbcType="VARCHAR" property="remark" />
+    <result column="pinyin_full" jdbcType="VARCHAR" property="pinyinFull" />
+    <result column="pinyin_simple" jdbcType="VARCHAR" property="pinyinSimple" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    id, name, idcard, age, phone, city, county, province, hospital_level, hospital_name, 
+    departments, user_id, screen_id, submit_status, position_id, tenant_id, rzsc_result, 
+    screen_type, screen_result, del_flag, create_by, create_time, update_by, update_time, 
+    remark, pinyin_full, pinyin_simple
+  </sql>
+  <select id="selectByExample" parameterType="com.acupuncture.system.domain.po.ScrScreeningRecordExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from scr_screening_record
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from scr_screening_record
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    delete from scr_screening_record
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.acupuncture.system.domain.po.ScrScreeningRecord">
+    insert into scr_screening_record (id, name, idcard, 
+      age, phone, city, county, 
+      province, hospital_level, hospital_name, 
+      departments, user_id, screen_id, 
+      submit_status, position_id, tenant_id, 
+      rzsc_result, screen_type, screen_result, 
+      del_flag, create_by, create_time, 
+      update_by, update_time, remark, 
+      pinyin_full, pinyin_simple)
+    values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{idcard,jdbcType=VARCHAR}, 
+      #{age,jdbcType=INTEGER}, #{phone,jdbcType=VARCHAR}, #{city,jdbcType=VARCHAR}, #{county,jdbcType=VARCHAR}, 
+      #{province,jdbcType=VARCHAR}, #{hospitalLevel,jdbcType=TINYINT}, #{hospitalName,jdbcType=VARCHAR}, 
+      #{departments,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT}, #{screenId,jdbcType=BIGINT}, 
+      #{submitStatus,jdbcType=TINYINT}, #{positionId,jdbcType=BIGINT}, #{tenantId,jdbcType=BIGINT}, 
+      #{rzscResult,jdbcType=INTEGER}, #{screenType,jdbcType=TINYINT}, #{screenResult,jdbcType=VARCHAR}, 
+      #{delFlag,jdbcType=TINYINT}, #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, 
+      #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR}, 
+      #{pinyinFull,jdbcType=VARCHAR}, #{pinyinSimple,jdbcType=VARCHAR})
+  </insert>
+  <insert id="insertSelective" parameterType="com.acupuncture.system.domain.po.ScrScreeningRecord">
+    insert into scr_screening_record
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="name != null">
+        name,
+      </if>
+      <if test="idcard != null">
+        idcard,
+      </if>
+      <if test="age != null">
+        age,
+      </if>
+      <if test="phone != null">
+        phone,
+      </if>
+      <if test="city != null">
+        city,
+      </if>
+      <if test="county != null">
+        county,
+      </if>
+      <if test="province != null">
+        province,
+      </if>
+      <if test="hospitalLevel != null">
+        hospital_level,
+      </if>
+      <if test="hospitalName != null">
+        hospital_name,
+      </if>
+      <if test="departments != null">
+        departments,
+      </if>
+      <if test="userId != null">
+        user_id,
+      </if>
+      <if test="screenId != null">
+        screen_id,
+      </if>
+      <if test="submitStatus != null">
+        submit_status,
+      </if>
+      <if test="positionId != null">
+        position_id,
+      </if>
+      <if test="tenantId != null">
+        tenant_id,
+      </if>
+      <if test="rzscResult != null">
+        rzsc_result,
+      </if>
+      <if test="screenType != null">
+        screen_type,
+      </if>
+      <if test="screenResult != null">
+        screen_result,
+      </if>
+      <if test="delFlag != null">
+        del_flag,
+      </if>
+      <if test="createBy != null">
+        create_by,
+      </if>
+      <if test="createTime != null">
+        create_time,
+      </if>
+      <if test="updateBy != null">
+        update_by,
+      </if>
+      <if test="updateTime != null">
+        update_time,
+      </if>
+      <if test="remark != null">
+        remark,
+      </if>
+      <if test="pinyinFull != null">
+        pinyin_full,
+      </if>
+      <if test="pinyinSimple != null">
+        pinyin_simple,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="name != null">
+        #{name,jdbcType=VARCHAR},
+      </if>
+      <if test="idcard != null">
+        #{idcard,jdbcType=VARCHAR},
+      </if>
+      <if test="age != null">
+        #{age,jdbcType=INTEGER},
+      </if>
+      <if test="phone != null">
+        #{phone,jdbcType=VARCHAR},
+      </if>
+      <if test="city != null">
+        #{city,jdbcType=VARCHAR},
+      </if>
+      <if test="county != null">
+        #{county,jdbcType=VARCHAR},
+      </if>
+      <if test="province != null">
+        #{province,jdbcType=VARCHAR},
+      </if>
+      <if test="hospitalLevel != null">
+        #{hospitalLevel,jdbcType=TINYINT},
+      </if>
+      <if test="hospitalName != null">
+        #{hospitalName,jdbcType=VARCHAR},
+      </if>
+      <if test="departments != null">
+        #{departments,jdbcType=VARCHAR},
+      </if>
+      <if test="userId != null">
+        #{userId,jdbcType=BIGINT},
+      </if>
+      <if test="screenId != null">
+        #{screenId,jdbcType=BIGINT},
+      </if>
+      <if test="submitStatus != null">
+        #{submitStatus,jdbcType=TINYINT},
+      </if>
+      <if test="positionId != null">
+        #{positionId,jdbcType=BIGINT},
+      </if>
+      <if test="tenantId != null">
+        #{tenantId,jdbcType=BIGINT},
+      </if>
+      <if test="rzscResult != null">
+        #{rzscResult,jdbcType=INTEGER},
+      </if>
+      <if test="screenType != null">
+        #{screenType,jdbcType=TINYINT},
+      </if>
+      <if test="screenResult != null">
+        #{screenResult,jdbcType=VARCHAR},
+      </if>
+      <if test="delFlag != null">
+        #{delFlag,jdbcType=TINYINT},
+      </if>
+      <if test="createBy != null">
+        #{createBy,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateBy != null">
+        #{updateBy,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null">
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="remark != null">
+        #{remark,jdbcType=VARCHAR},
+      </if>
+      <if test="pinyinFull != null">
+        #{pinyinFull,jdbcType=VARCHAR},
+      </if>
+      <if test="pinyinSimple != null">
+        #{pinyinSimple,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.acupuncture.system.domain.po.ScrScreeningRecordExample" resultType="java.lang.Long">
+    select count(*) from scr_screening_record
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update scr_screening_record
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=BIGINT},
+      </if>
+      <if test="record.name != null">
+        name = #{record.name,jdbcType=VARCHAR},
+      </if>
+      <if test="record.idcard != null">
+        idcard = #{record.idcard,jdbcType=VARCHAR},
+      </if>
+      <if test="record.age != null">
+        age = #{record.age,jdbcType=INTEGER},
+      </if>
+      <if test="record.phone != null">
+        phone = #{record.phone,jdbcType=VARCHAR},
+      </if>
+      <if test="record.city != null">
+        city = #{record.city,jdbcType=VARCHAR},
+      </if>
+      <if test="record.county != null">
+        county = #{record.county,jdbcType=VARCHAR},
+      </if>
+      <if test="record.province != null">
+        province = #{record.province,jdbcType=VARCHAR},
+      </if>
+      <if test="record.hospitalLevel != null">
+        hospital_level = #{record.hospitalLevel,jdbcType=TINYINT},
+      </if>
+      <if test="record.hospitalName != null">
+        hospital_name = #{record.hospitalName,jdbcType=VARCHAR},
+      </if>
+      <if test="record.departments != null">
+        departments = #{record.departments,jdbcType=VARCHAR},
+      </if>
+      <if test="record.userId != null">
+        user_id = #{record.userId,jdbcType=BIGINT},
+      </if>
+      <if test="record.screenId != null">
+        screen_id = #{record.screenId,jdbcType=BIGINT},
+      </if>
+      <if test="record.submitStatus != null">
+        submit_status = #{record.submitStatus,jdbcType=TINYINT},
+      </if>
+      <if test="record.positionId != null">
+        position_id = #{record.positionId,jdbcType=BIGINT},
+      </if>
+      <if test="record.tenantId != null">
+        tenant_id = #{record.tenantId,jdbcType=BIGINT},
+      </if>
+      <if test="record.rzscResult != null">
+        rzsc_result = #{record.rzscResult,jdbcType=INTEGER},
+      </if>
+      <if test="record.screenType != null">
+        screen_type = #{record.screenType,jdbcType=TINYINT},
+      </if>
+      <if test="record.screenResult != null">
+        screen_result = #{record.screenResult,jdbcType=VARCHAR},
+      </if>
+      <if test="record.delFlag != null">
+        del_flag = #{record.delFlag,jdbcType=TINYINT},
+      </if>
+      <if test="record.createBy != null">
+        create_by = #{record.createBy,jdbcType=VARCHAR},
+      </if>
+      <if test="record.createTime != null">
+        create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.updateBy != null">
+        update_by = #{record.updateBy,jdbcType=VARCHAR},
+      </if>
+      <if test="record.updateTime != null">
+        update_time = #{record.updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.remark != null">
+        remark = #{record.remark,jdbcType=VARCHAR},
+      </if>
+      <if test="record.pinyinFull != null">
+        pinyin_full = #{record.pinyinFull,jdbcType=VARCHAR},
+      </if>
+      <if test="record.pinyinSimple != null">
+        pinyin_simple = #{record.pinyinSimple,jdbcType=VARCHAR},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update scr_screening_record
+    set id = #{record.id,jdbcType=BIGINT},
+      name = #{record.name,jdbcType=VARCHAR},
+      idcard = #{record.idcard,jdbcType=VARCHAR},
+      age = #{record.age,jdbcType=INTEGER},
+      phone = #{record.phone,jdbcType=VARCHAR},
+      city = #{record.city,jdbcType=VARCHAR},
+      county = #{record.county,jdbcType=VARCHAR},
+      province = #{record.province,jdbcType=VARCHAR},
+      hospital_level = #{record.hospitalLevel,jdbcType=TINYINT},
+      hospital_name = #{record.hospitalName,jdbcType=VARCHAR},
+      departments = #{record.departments,jdbcType=VARCHAR},
+      user_id = #{record.userId,jdbcType=BIGINT},
+      screen_id = #{record.screenId,jdbcType=BIGINT},
+      submit_status = #{record.submitStatus,jdbcType=TINYINT},
+      position_id = #{record.positionId,jdbcType=BIGINT},
+      tenant_id = #{record.tenantId,jdbcType=BIGINT},
+      rzsc_result = #{record.rzscResult,jdbcType=INTEGER},
+      screen_type = #{record.screenType,jdbcType=TINYINT},
+      screen_result = #{record.screenResult,jdbcType=VARCHAR},
+      del_flag = #{record.delFlag,jdbcType=TINYINT},
+      create_by = #{record.createBy,jdbcType=VARCHAR},
+      create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      update_by = #{record.updateBy,jdbcType=VARCHAR},
+      update_time = #{record.updateTime,jdbcType=TIMESTAMP},
+      remark = #{record.remark,jdbcType=VARCHAR},
+      pinyin_full = #{record.pinyinFull,jdbcType=VARCHAR},
+      pinyin_simple = #{record.pinyinSimple,jdbcType=VARCHAR}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.acupuncture.system.domain.po.ScrScreeningRecord">
+    update scr_screening_record
+    <set>
+      <if test="name != null">
+        name = #{name,jdbcType=VARCHAR},
+      </if>
+      <if test="idcard != null">
+        idcard = #{idcard,jdbcType=VARCHAR},
+      </if>
+      <if test="age != null">
+        age = #{age,jdbcType=INTEGER},
+      </if>
+      <if test="phone != null">
+        phone = #{phone,jdbcType=VARCHAR},
+      </if>
+      <if test="city != null">
+        city = #{city,jdbcType=VARCHAR},
+      </if>
+      <if test="county != null">
+        county = #{county,jdbcType=VARCHAR},
+      </if>
+      <if test="province != null">
+        province = #{province,jdbcType=VARCHAR},
+      </if>
+      <if test="hospitalLevel != null">
+        hospital_level = #{hospitalLevel,jdbcType=TINYINT},
+      </if>
+      <if test="hospitalName != null">
+        hospital_name = #{hospitalName,jdbcType=VARCHAR},
+      </if>
+      <if test="departments != null">
+        departments = #{departments,jdbcType=VARCHAR},
+      </if>
+      <if test="userId != null">
+        user_id = #{userId,jdbcType=BIGINT},
+      </if>
+      <if test="screenId != null">
+        screen_id = #{screenId,jdbcType=BIGINT},
+      </if>
+      <if test="submitStatus != null">
+        submit_status = #{submitStatus,jdbcType=TINYINT},
+      </if>
+      <if test="positionId != null">
+        position_id = #{positionId,jdbcType=BIGINT},
+      </if>
+      <if test="tenantId != null">
+        tenant_id = #{tenantId,jdbcType=BIGINT},
+      </if>
+      <if test="rzscResult != null">
+        rzsc_result = #{rzscResult,jdbcType=INTEGER},
+      </if>
+      <if test="screenType != null">
+        screen_type = #{screenType,jdbcType=TINYINT},
+      </if>
+      <if test="screenResult != null">
+        screen_result = #{screenResult,jdbcType=VARCHAR},
+      </if>
+      <if test="delFlag != null">
+        del_flag = #{delFlag,jdbcType=TINYINT},
+      </if>
+      <if test="createBy != null">
+        create_by = #{createBy,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        create_time = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateBy != null">
+        update_by = #{updateBy,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null">
+        update_time = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="remark != null">
+        remark = #{remark,jdbcType=VARCHAR},
+      </if>
+      <if test="pinyinFull != null">
+        pinyin_full = #{pinyinFull,jdbcType=VARCHAR},
+      </if>
+      <if test="pinyinSimple != null">
+        pinyin_simple = #{pinyinSimple,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.acupuncture.system.domain.po.ScrScreeningRecord">
+    update scr_screening_record
+    set name = #{name,jdbcType=VARCHAR},
+      idcard = #{idcard,jdbcType=VARCHAR},
+      age = #{age,jdbcType=INTEGER},
+      phone = #{phone,jdbcType=VARCHAR},
+      city = #{city,jdbcType=VARCHAR},
+      county = #{county,jdbcType=VARCHAR},
+      province = #{province,jdbcType=VARCHAR},
+      hospital_level = #{hospitalLevel,jdbcType=TINYINT},
+      hospital_name = #{hospitalName,jdbcType=VARCHAR},
+      departments = #{departments,jdbcType=VARCHAR},
+      user_id = #{userId,jdbcType=BIGINT},
+      screen_id = #{screenId,jdbcType=BIGINT},
+      submit_status = #{submitStatus,jdbcType=TINYINT},
+      position_id = #{positionId,jdbcType=BIGINT},
+      tenant_id = #{tenantId,jdbcType=BIGINT},
+      rzsc_result = #{rzscResult,jdbcType=INTEGER},
+      screen_type = #{screenType,jdbcType=TINYINT},
+      screen_result = #{screenResult,jdbcType=VARCHAR},
+      del_flag = #{delFlag,jdbcType=TINYINT},
+      create_by = #{createBy,jdbcType=VARCHAR},
+      create_time = #{createTime,jdbcType=TIMESTAMP},
+      update_by = #{updateBy,jdbcType=VARCHAR},
+      update_time = #{updateTime,jdbcType=TIMESTAMP},
+      remark = #{remark,jdbcType=VARCHAR},
+      pinyin_full = #{pinyinFull,jdbcType=VARCHAR},
+      pinyin_simple = #{pinyinSimple,jdbcType=VARCHAR}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/acupuncture-system/src/main/resources/mapper/system/UplReportImageMapper.xml b/acupuncture-system/src/main/resources/mapper/system/UplReportImageMapper.xml
new file mode 100644
index 00000000..1c5f4061
--- /dev/null
+++ b/acupuncture-system/src/main/resources/mapper/system/UplReportImageMapper.xml
@@ -0,0 +1,300 @@
+<?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.acupuncture.system.persist.mapper.UplReportImageMapper">
+  <resultMap id="BaseResultMap" type="com.acupuncture.system.domain.po.UplReportImage">
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="patient_id" jdbcType="VARCHAR" property="patientId" />
+    <result column="file_name" jdbcType="VARCHAR" property="fileName" />
+    <result column="file_path" jdbcType="VARCHAR" property="filePath" />
+    <result column="del_flag" jdbcType="TINYINT" property="delFlag" />
+    <result column="tenant_id" jdbcType="BIGINT" property="tenantId" />
+    <result column="create_by" jdbcType="VARCHAR" property="createBy" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="update_by" jdbcType="VARCHAR" property="updateBy" />
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="remark" jdbcType="VARCHAR" property="remark" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    id, patient_id, file_name, file_path, del_flag, tenant_id, create_by, create_time, 
+    update_by, update_time, remark
+  </sql>
+  <select id="selectByExample" parameterType="com.acupuncture.system.domain.po.UplReportImageExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from upl_report_image
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from upl_report_image
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    delete from upl_report_image
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.acupuncture.system.domain.po.UplReportImage">
+    insert into upl_report_image (id, patient_id, file_name, 
+      file_path, del_flag, tenant_id, 
+      create_by, create_time, update_by, 
+      update_time, remark)
+    values (#{id,jdbcType=BIGINT}, #{patientId,jdbcType=VARCHAR}, #{fileName,jdbcType=VARCHAR}, 
+      #{filePath,jdbcType=VARCHAR}, #{delFlag,jdbcType=TINYINT}, #{tenantId,jdbcType=BIGINT}, 
+      #{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{updateBy,jdbcType=VARCHAR}, 
+      #{updateTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR})
+  </insert>
+  <insert id="insertSelective" parameterType="com.acupuncture.system.domain.po.UplReportImage">
+    insert into upl_report_image
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="patientId != null">
+        patient_id,
+      </if>
+      <if test="fileName != null">
+        file_name,
+      </if>
+      <if test="filePath != null">
+        file_path,
+      </if>
+      <if test="delFlag != null">
+        del_flag,
+      </if>
+      <if test="tenantId != null">
+        tenant_id,
+      </if>
+      <if test="createBy != null">
+        create_by,
+      </if>
+      <if test="createTime != null">
+        create_time,
+      </if>
+      <if test="updateBy != null">
+        update_by,
+      </if>
+      <if test="updateTime != null">
+        update_time,
+      </if>
+      <if test="remark != null">
+        remark,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="patientId != null">
+        #{patientId,jdbcType=VARCHAR},
+      </if>
+      <if test="fileName != null">
+        #{fileName,jdbcType=VARCHAR},
+      </if>
+      <if test="filePath != null">
+        #{filePath,jdbcType=VARCHAR},
+      </if>
+      <if test="delFlag != null">
+        #{delFlag,jdbcType=TINYINT},
+      </if>
+      <if test="tenantId != null">
+        #{tenantId,jdbcType=BIGINT},
+      </if>
+      <if test="createBy != null">
+        #{createBy,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateBy != null">
+        #{updateBy,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null">
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="remark != null">
+        #{remark,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.acupuncture.system.domain.po.UplReportImageExample" resultType="java.lang.Long">
+    select count(*) from upl_report_image
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update upl_report_image
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=BIGINT},
+      </if>
+      <if test="record.patientId != null">
+        patient_id = #{record.patientId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.fileName != null">
+        file_name = #{record.fileName,jdbcType=VARCHAR},
+      </if>
+      <if test="record.filePath != null">
+        file_path = #{record.filePath,jdbcType=VARCHAR},
+      </if>
+      <if test="record.delFlag != null">
+        del_flag = #{record.delFlag,jdbcType=TINYINT},
+      </if>
+      <if test="record.tenantId != null">
+        tenant_id = #{record.tenantId,jdbcType=BIGINT},
+      </if>
+      <if test="record.createBy != null">
+        create_by = #{record.createBy,jdbcType=VARCHAR},
+      </if>
+      <if test="record.createTime != null">
+        create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.updateBy != null">
+        update_by = #{record.updateBy,jdbcType=VARCHAR},
+      </if>
+      <if test="record.updateTime != null">
+        update_time = #{record.updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.remark != null">
+        remark = #{record.remark,jdbcType=VARCHAR},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update upl_report_image
+    set id = #{record.id,jdbcType=BIGINT},
+      patient_id = #{record.patientId,jdbcType=VARCHAR},
+      file_name = #{record.fileName,jdbcType=VARCHAR},
+      file_path = #{record.filePath,jdbcType=VARCHAR},
+      del_flag = #{record.delFlag,jdbcType=TINYINT},
+      tenant_id = #{record.tenantId,jdbcType=BIGINT},
+      create_by = #{record.createBy,jdbcType=VARCHAR},
+      create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      update_by = #{record.updateBy,jdbcType=VARCHAR},
+      update_time = #{record.updateTime,jdbcType=TIMESTAMP},
+      remark = #{record.remark,jdbcType=VARCHAR}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.acupuncture.system.domain.po.UplReportImage">
+    update upl_report_image
+    <set>
+      <if test="patientId != null">
+        patient_id = #{patientId,jdbcType=VARCHAR},
+      </if>
+      <if test="fileName != null">
+        file_name = #{fileName,jdbcType=VARCHAR},
+      </if>
+      <if test="filePath != null">
+        file_path = #{filePath,jdbcType=VARCHAR},
+      </if>
+      <if test="delFlag != null">
+        del_flag = #{delFlag,jdbcType=TINYINT},
+      </if>
+      <if test="tenantId != null">
+        tenant_id = #{tenantId,jdbcType=BIGINT},
+      </if>
+      <if test="createBy != null">
+        create_by = #{createBy,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        create_time = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateBy != null">
+        update_by = #{updateBy,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null">
+        update_time = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="remark != null">
+        remark = #{remark,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.acupuncture.system.domain.po.UplReportImage">
+    update upl_report_image
+    set patient_id = #{patientId,jdbcType=VARCHAR},
+      file_name = #{fileName,jdbcType=VARCHAR},
+      file_path = #{filePath,jdbcType=VARCHAR},
+      del_flag = #{delFlag,jdbcType=TINYINT},
+      tenant_id = #{tenantId,jdbcType=BIGINT},
+      create_by = #{createBy,jdbcType=VARCHAR},
+      create_time = #{createTime,jdbcType=TIMESTAMP},
+      update_by = #{updateBy,jdbcType=VARCHAR},
+      update_time = #{updateTime,jdbcType=TIMESTAMP},
+      remark = #{remark,jdbcType=VARCHAR}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/acupuncture-system/src/main/resources/mapper/system/UplRtcfInfoMapper.xml b/acupuncture-system/src/main/resources/mapper/system/UplRtcfInfoMapper.xml
new file mode 100644
index 00000000..ce935f36
--- /dev/null
+++ b/acupuncture-system/src/main/resources/mapper/system/UplRtcfInfoMapper.xml
@@ -0,0 +1,1545 @@
+<?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.acupuncture.system.persist.mapper.UplRtcfInfoMapper">
+  <resultMap id="BaseResultMap" type="com.acupuncture.system.domain.po.UplRtcfInfo">
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="message" jdbcType="VARCHAR" property="message" />
+    <result column="uuid" jdbcType="VARCHAR" property="uuid" />
+    <result column="device_id" jdbcType="VARCHAR" property="deviceId" />
+    <result column="device_type" jdbcType="VARCHAR" property="deviceType" />
+    <result column="memberid" jdbcType="VARCHAR" property="memberid" />
+    <result column="test_id" jdbcType="VARCHAR" property="testId" />
+    <result column="test_date" jdbcType="VARCHAR" property="testDate" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+    <result column="sex" jdbcType="VARCHAR" property="sex" />
+    <result column="height" jdbcType="VARCHAR" property="height" />
+    <result column="birth_year" jdbcType="VARCHAR" property="birthYear" />
+    <result column="weight" jdbcType="VARCHAR" property="weight" />
+    <result column="fat" jdbcType="VARCHAR" property="fat" />
+    <result column="bone" jdbcType="VARCHAR" property="bone" />
+    <result column="protein" jdbcType="VARCHAR" property="protein" />
+    <result column="water" jdbcType="VARCHAR" property="water" />
+    <result column="muscle" jdbcType="VARCHAR" property="muscle" />
+    <result column="smm" jdbcType="VARCHAR" property="smm" />
+    <result column="pbf" jdbcType="VARCHAR" property="pbf" />
+    <result column="bmi" jdbcType="VARCHAR" property="bmi" />
+    <result column="bmr" jdbcType="VARCHAR" property="bmr" />
+    <result column="whr" jdbcType="VARCHAR" property="whr" />
+    <result column="edema" jdbcType="VARCHAR" property="edema" />
+    <result column="vfi" jdbcType="VARCHAR" property="vfi" />
+    <result column="body_age" jdbcType="VARCHAR" property="bodyAge" />
+    <result column="score" jdbcType="VARCHAR" property="score" />
+    <result column="body_type" jdbcType="VARCHAR" property="bodyType" />
+    <result column="lbm" jdbcType="VARCHAR" property="lbm" />
+    <result column="icw" jdbcType="VARCHAR" property="icw" />
+    <result column="ecw" jdbcType="VARCHAR" property="ecw" />
+    <result column="standard_weight" jdbcType="VARCHAR" property="standardWeight" />
+    <result column="weight_control" jdbcType="VARCHAR" property="weightControl" />
+    <result column="fat_control" jdbcType="VARCHAR" property="fatControl" />
+    <result column="muscle_control" jdbcType="VARCHAR" property="muscleControl" />
+    <result column="liver_risk" jdbcType="VARCHAR" property="liverRisk" />
+    <result column="asmi" jdbcType="VARCHAR" property="asmi" />
+    <result column="tr_fat" jdbcType="VARCHAR" property="trFat" />
+    <result column="la_fat" jdbcType="VARCHAR" property="laFat" />
+    <result column="ra_fat" jdbcType="VARCHAR" property="raFat" />
+    <result column="ll_fat" jdbcType="VARCHAR" property="llFat" />
+    <result column="rl_fat" jdbcType="VARCHAR" property="rlFat" />
+    <result column="tr_water" jdbcType="VARCHAR" property="trWater" />
+    <result column="la_water" jdbcType="VARCHAR" property="laWater" />
+    <result column="ra_water" jdbcType="VARCHAR" property="raWater" />
+    <result column="ll_water" jdbcType="VARCHAR" property="llWater" />
+    <result column="rl_water" jdbcType="VARCHAR" property="rlWater" />
+    <result column="tr_muscle" jdbcType="VARCHAR" property="trMuscle" />
+    <result column="la_muscle" jdbcType="VARCHAR" property="laMuscle" />
+    <result column="ra_muscle" jdbcType="VARCHAR" property="raMuscle" />
+    <result column="ll_muscle" jdbcType="VARCHAR" property="llMuscle" />
+    <result column="rl_muscle" jdbcType="VARCHAR" property="rlMuscle" />
+    <result column="tr_bone" jdbcType="VARCHAR" property="trBone" />
+    <result column="la_bone" jdbcType="VARCHAR" property="laBone" />
+    <result column="ra_bone" jdbcType="VARCHAR" property="raBone" />
+    <result column="ll_bone" jdbcType="VARCHAR" property="llBone" />
+    <result column="rl_bone" jdbcType="VARCHAR" property="rlBone" />
+    <result column="weight_max" jdbcType="VARCHAR" property="weightMax" />
+    <result column="weight_min" jdbcType="VARCHAR" property="weightMin" />
+    <result column="fat_max" jdbcType="VARCHAR" property="fatMax" />
+    <result column="fat_min" jdbcType="VARCHAR" property="fatMin" />
+    <result column="bone_max" jdbcType="VARCHAR" property="boneMax" />
+    <result column="bone_min" jdbcType="VARCHAR" property="boneMin" />
+    <result column="protein_max" jdbcType="VARCHAR" property="proteinMax" />
+    <result column="protein_min" jdbcType="VARCHAR" property="proteinMin" />
+    <result column="water_max" jdbcType="VARCHAR" property="waterMax" />
+    <result column="water_min" jdbcType="VARCHAR" property="waterMin" />
+    <result column="muscle_max" jdbcType="VARCHAR" property="muscleMax" />
+    <result column="muscle_min" jdbcType="VARCHAR" property="muscleMin" />
+    <result column="smm_max" jdbcType="VARCHAR" property="smmMax" />
+    <result column="smm_min" jdbcType="VARCHAR" property="smmMin" />
+    <result column="pbf_max" jdbcType="VARCHAR" property="pbfMax" />
+    <result column="pbf_min" jdbcType="VARCHAR" property="pbfMin" />
+    <result column="bmi_max" jdbcType="VARCHAR" property="bmiMax" />
+    <result column="bmi_min" jdbcType="VARCHAR" property="bmiMin" />
+    <result column="whr_max" jdbcType="VARCHAR" property="whrMax" />
+    <result column="whr_min" jdbcType="VARCHAR" property="whrMin" />
+    <result column="edema_max" jdbcType="VARCHAR" property="edemaMax" />
+    <result column="edema_min" jdbcType="VARCHAR" property="edemaMin" />
+    <result column="vfi_max" jdbcType="VARCHAR" property="vfiMax" />
+    <result column="vfi_min" jdbcType="VARCHAR" property="vfiMin" />
+    <result column="diagnosis" jdbcType="VARCHAR" property="diagnosis" />
+    <result column="status" jdbcType="TINYINT" property="status" />
+    <result column="del_flag" jdbcType="TINYINT" property="delFlag" />
+    <result column="tenant_id" jdbcType="BIGINT" property="tenantId" />
+    <result column="create_by" jdbcType="VARCHAR" property="createBy" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="update_by" jdbcType="VARCHAR" property="updateBy" />
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="remark" jdbcType="VARCHAR" property="remark" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    id, message, uuid, device_id, device_type, memberid, test_id, test_date, name, sex, 
+    height, birth_year, weight, fat, bone, protein, water, muscle, smm, pbf, bmi, bmr, 
+    whr, edema, vfi, body_age, score, body_type, lbm, icw, ecw, standard_weight, weight_control, 
+    fat_control, muscle_control, liver_risk, asmi, tr_fat, la_fat, ra_fat, ll_fat, rl_fat, 
+    tr_water, la_water, ra_water, ll_water, rl_water, tr_muscle, la_muscle, ra_muscle, 
+    ll_muscle, rl_muscle, tr_bone, la_bone, ra_bone, ll_bone, rl_bone, weight_max, weight_min, 
+    fat_max, fat_min, bone_max, bone_min, protein_max, protein_min, water_max, water_min, 
+    muscle_max, muscle_min, smm_max, smm_min, pbf_max, pbf_min, bmi_max, bmi_min, whr_max, 
+    whr_min, edema_max, edema_min, vfi_max, vfi_min, diagnosis, status, del_flag, tenant_id, 
+    create_by, create_time, update_by, update_time, remark
+  </sql>
+  <select id="selectByExample" parameterType="com.acupuncture.system.domain.po.UplRtcfInfoExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from upl_rtcf_info
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from upl_rtcf_info
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    delete from upl_rtcf_info
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.acupuncture.system.domain.po.UplRtcfInfo">
+    insert into upl_rtcf_info (id, message, uuid, 
+      device_id, device_type, memberid, 
+      test_id, test_date, name, 
+      sex, height, birth_year, 
+      weight, fat, bone, 
+      protein, water, muscle, 
+      smm, pbf, bmi, bmr, 
+      whr, edema, vfi, body_age, 
+      score, body_type, lbm, 
+      icw, ecw, standard_weight, 
+      weight_control, fat_control, muscle_control, 
+      liver_risk, asmi, tr_fat, 
+      la_fat, ra_fat, ll_fat, 
+      rl_fat, tr_water, la_water, 
+      ra_water, ll_water, rl_water, 
+      tr_muscle, la_muscle, ra_muscle, 
+      ll_muscle, rl_muscle, tr_bone, 
+      la_bone, ra_bone, ll_bone, 
+      rl_bone, weight_max, weight_min, 
+      fat_max, fat_min, bone_max, 
+      bone_min, protein_max, protein_min, 
+      water_max, water_min, muscle_max, 
+      muscle_min, smm_max, smm_min, 
+      pbf_max, pbf_min, bmi_max, 
+      bmi_min, whr_max, whr_min, 
+      edema_max, edema_min, vfi_max, 
+      vfi_min, diagnosis, status, 
+      del_flag, tenant_id, create_by, 
+      create_time, update_by, update_time, 
+      remark)
+    values (#{id,jdbcType=BIGINT}, #{message,jdbcType=VARCHAR}, #{uuid,jdbcType=VARCHAR}, 
+      #{deviceId,jdbcType=VARCHAR}, #{deviceType,jdbcType=VARCHAR}, #{memberid,jdbcType=VARCHAR}, 
+      #{testId,jdbcType=VARCHAR}, #{testDate,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, 
+      #{sex,jdbcType=VARCHAR}, #{height,jdbcType=VARCHAR}, #{birthYear,jdbcType=VARCHAR}, 
+      #{weight,jdbcType=VARCHAR}, #{fat,jdbcType=VARCHAR}, #{bone,jdbcType=VARCHAR}, 
+      #{protein,jdbcType=VARCHAR}, #{water,jdbcType=VARCHAR}, #{muscle,jdbcType=VARCHAR}, 
+      #{smm,jdbcType=VARCHAR}, #{pbf,jdbcType=VARCHAR}, #{bmi,jdbcType=VARCHAR}, #{bmr,jdbcType=VARCHAR}, 
+      #{whr,jdbcType=VARCHAR}, #{edema,jdbcType=VARCHAR}, #{vfi,jdbcType=VARCHAR}, #{bodyAge,jdbcType=VARCHAR}, 
+      #{score,jdbcType=VARCHAR}, #{bodyType,jdbcType=VARCHAR}, #{lbm,jdbcType=VARCHAR}, 
+      #{icw,jdbcType=VARCHAR}, #{ecw,jdbcType=VARCHAR}, #{standardWeight,jdbcType=VARCHAR}, 
+      #{weightControl,jdbcType=VARCHAR}, #{fatControl,jdbcType=VARCHAR}, #{muscleControl,jdbcType=VARCHAR}, 
+      #{liverRisk,jdbcType=VARCHAR}, #{asmi,jdbcType=VARCHAR}, #{trFat,jdbcType=VARCHAR}, 
+      #{laFat,jdbcType=VARCHAR}, #{raFat,jdbcType=VARCHAR}, #{llFat,jdbcType=VARCHAR}, 
+      #{rlFat,jdbcType=VARCHAR}, #{trWater,jdbcType=VARCHAR}, #{laWater,jdbcType=VARCHAR}, 
+      #{raWater,jdbcType=VARCHAR}, #{llWater,jdbcType=VARCHAR}, #{rlWater,jdbcType=VARCHAR}, 
+      #{trMuscle,jdbcType=VARCHAR}, #{laMuscle,jdbcType=VARCHAR}, #{raMuscle,jdbcType=VARCHAR}, 
+      #{llMuscle,jdbcType=VARCHAR}, #{rlMuscle,jdbcType=VARCHAR}, #{trBone,jdbcType=VARCHAR}, 
+      #{laBone,jdbcType=VARCHAR}, #{raBone,jdbcType=VARCHAR}, #{llBone,jdbcType=VARCHAR}, 
+      #{rlBone,jdbcType=VARCHAR}, #{weightMax,jdbcType=VARCHAR}, #{weightMin,jdbcType=VARCHAR}, 
+      #{fatMax,jdbcType=VARCHAR}, #{fatMin,jdbcType=VARCHAR}, #{boneMax,jdbcType=VARCHAR}, 
+      #{boneMin,jdbcType=VARCHAR}, #{proteinMax,jdbcType=VARCHAR}, #{proteinMin,jdbcType=VARCHAR}, 
+      #{waterMax,jdbcType=VARCHAR}, #{waterMin,jdbcType=VARCHAR}, #{muscleMax,jdbcType=VARCHAR}, 
+      #{muscleMin,jdbcType=VARCHAR}, #{smmMax,jdbcType=VARCHAR}, #{smmMin,jdbcType=VARCHAR}, 
+      #{pbfMax,jdbcType=VARCHAR}, #{pbfMin,jdbcType=VARCHAR}, #{bmiMax,jdbcType=VARCHAR}, 
+      #{bmiMin,jdbcType=VARCHAR}, #{whrMax,jdbcType=VARCHAR}, #{whrMin,jdbcType=VARCHAR}, 
+      #{edemaMax,jdbcType=VARCHAR}, #{edemaMin,jdbcType=VARCHAR}, #{vfiMax,jdbcType=VARCHAR}, 
+      #{vfiMin,jdbcType=VARCHAR}, #{diagnosis,jdbcType=VARCHAR}, #{status,jdbcType=TINYINT}, 
+      #{delFlag,jdbcType=TINYINT}, #{tenantId,jdbcType=BIGINT}, #{createBy,jdbcType=VARCHAR}, 
+      #{createTime,jdbcType=TIMESTAMP}, #{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, 
+      #{remark,jdbcType=VARCHAR})
+  </insert>
+  <insert id="insertSelective" parameterType="com.acupuncture.system.domain.po.UplRtcfInfo">
+    insert into upl_rtcf_info
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="message != null">
+        message,
+      </if>
+      <if test="uuid != null">
+        uuid,
+      </if>
+      <if test="deviceId != null">
+        device_id,
+      </if>
+      <if test="deviceType != null">
+        device_type,
+      </if>
+      <if test="memberid != null">
+        memberid,
+      </if>
+      <if test="testId != null">
+        test_id,
+      </if>
+      <if test="testDate != null">
+        test_date,
+      </if>
+      <if test="name != null">
+        name,
+      </if>
+      <if test="sex != null">
+        sex,
+      </if>
+      <if test="height != null">
+        height,
+      </if>
+      <if test="birthYear != null">
+        birth_year,
+      </if>
+      <if test="weight != null">
+        weight,
+      </if>
+      <if test="fat != null">
+        fat,
+      </if>
+      <if test="bone != null">
+        bone,
+      </if>
+      <if test="protein != null">
+        protein,
+      </if>
+      <if test="water != null">
+        water,
+      </if>
+      <if test="muscle != null">
+        muscle,
+      </if>
+      <if test="smm != null">
+        smm,
+      </if>
+      <if test="pbf != null">
+        pbf,
+      </if>
+      <if test="bmi != null">
+        bmi,
+      </if>
+      <if test="bmr != null">
+        bmr,
+      </if>
+      <if test="whr != null">
+        whr,
+      </if>
+      <if test="edema != null">
+        edema,
+      </if>
+      <if test="vfi != null">
+        vfi,
+      </if>
+      <if test="bodyAge != null">
+        body_age,
+      </if>
+      <if test="score != null">
+        score,
+      </if>
+      <if test="bodyType != null">
+        body_type,
+      </if>
+      <if test="lbm != null">
+        lbm,
+      </if>
+      <if test="icw != null">
+        icw,
+      </if>
+      <if test="ecw != null">
+        ecw,
+      </if>
+      <if test="standardWeight != null">
+        standard_weight,
+      </if>
+      <if test="weightControl != null">
+        weight_control,
+      </if>
+      <if test="fatControl != null">
+        fat_control,
+      </if>
+      <if test="muscleControl != null">
+        muscle_control,
+      </if>
+      <if test="liverRisk != null">
+        liver_risk,
+      </if>
+      <if test="asmi != null">
+        asmi,
+      </if>
+      <if test="trFat != null">
+        tr_fat,
+      </if>
+      <if test="laFat != null">
+        la_fat,
+      </if>
+      <if test="raFat != null">
+        ra_fat,
+      </if>
+      <if test="llFat != null">
+        ll_fat,
+      </if>
+      <if test="rlFat != null">
+        rl_fat,
+      </if>
+      <if test="trWater != null">
+        tr_water,
+      </if>
+      <if test="laWater != null">
+        la_water,
+      </if>
+      <if test="raWater != null">
+        ra_water,
+      </if>
+      <if test="llWater != null">
+        ll_water,
+      </if>
+      <if test="rlWater != null">
+        rl_water,
+      </if>
+      <if test="trMuscle != null">
+        tr_muscle,
+      </if>
+      <if test="laMuscle != null">
+        la_muscle,
+      </if>
+      <if test="raMuscle != null">
+        ra_muscle,
+      </if>
+      <if test="llMuscle != null">
+        ll_muscle,
+      </if>
+      <if test="rlMuscle != null">
+        rl_muscle,
+      </if>
+      <if test="trBone != null">
+        tr_bone,
+      </if>
+      <if test="laBone != null">
+        la_bone,
+      </if>
+      <if test="raBone != null">
+        ra_bone,
+      </if>
+      <if test="llBone != null">
+        ll_bone,
+      </if>
+      <if test="rlBone != null">
+        rl_bone,
+      </if>
+      <if test="weightMax != null">
+        weight_max,
+      </if>
+      <if test="weightMin != null">
+        weight_min,
+      </if>
+      <if test="fatMax != null">
+        fat_max,
+      </if>
+      <if test="fatMin != null">
+        fat_min,
+      </if>
+      <if test="boneMax != null">
+        bone_max,
+      </if>
+      <if test="boneMin != null">
+        bone_min,
+      </if>
+      <if test="proteinMax != null">
+        protein_max,
+      </if>
+      <if test="proteinMin != null">
+        protein_min,
+      </if>
+      <if test="waterMax != null">
+        water_max,
+      </if>
+      <if test="waterMin != null">
+        water_min,
+      </if>
+      <if test="muscleMax != null">
+        muscle_max,
+      </if>
+      <if test="muscleMin != null">
+        muscle_min,
+      </if>
+      <if test="smmMax != null">
+        smm_max,
+      </if>
+      <if test="smmMin != null">
+        smm_min,
+      </if>
+      <if test="pbfMax != null">
+        pbf_max,
+      </if>
+      <if test="pbfMin != null">
+        pbf_min,
+      </if>
+      <if test="bmiMax != null">
+        bmi_max,
+      </if>
+      <if test="bmiMin != null">
+        bmi_min,
+      </if>
+      <if test="whrMax != null">
+        whr_max,
+      </if>
+      <if test="whrMin != null">
+        whr_min,
+      </if>
+      <if test="edemaMax != null">
+        edema_max,
+      </if>
+      <if test="edemaMin != null">
+        edema_min,
+      </if>
+      <if test="vfiMax != null">
+        vfi_max,
+      </if>
+      <if test="vfiMin != null">
+        vfi_min,
+      </if>
+      <if test="diagnosis != null">
+        diagnosis,
+      </if>
+      <if test="status != null">
+        status,
+      </if>
+      <if test="delFlag != null">
+        del_flag,
+      </if>
+      <if test="tenantId != null">
+        tenant_id,
+      </if>
+      <if test="createBy != null">
+        create_by,
+      </if>
+      <if test="createTime != null">
+        create_time,
+      </if>
+      <if test="updateBy != null">
+        update_by,
+      </if>
+      <if test="updateTime != null">
+        update_time,
+      </if>
+      <if test="remark != null">
+        remark,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="message != null">
+        #{message,jdbcType=VARCHAR},
+      </if>
+      <if test="uuid != null">
+        #{uuid,jdbcType=VARCHAR},
+      </if>
+      <if test="deviceId != null">
+        #{deviceId,jdbcType=VARCHAR},
+      </if>
+      <if test="deviceType != null">
+        #{deviceType,jdbcType=VARCHAR},
+      </if>
+      <if test="memberid != null">
+        #{memberid,jdbcType=VARCHAR},
+      </if>
+      <if test="testId != null">
+        #{testId,jdbcType=VARCHAR},
+      </if>
+      <if test="testDate != null">
+        #{testDate,jdbcType=VARCHAR},
+      </if>
+      <if test="name != null">
+        #{name,jdbcType=VARCHAR},
+      </if>
+      <if test="sex != null">
+        #{sex,jdbcType=VARCHAR},
+      </if>
+      <if test="height != null">
+        #{height,jdbcType=VARCHAR},
+      </if>
+      <if test="birthYear != null">
+        #{birthYear,jdbcType=VARCHAR},
+      </if>
+      <if test="weight != null">
+        #{weight,jdbcType=VARCHAR},
+      </if>
+      <if test="fat != null">
+        #{fat,jdbcType=VARCHAR},
+      </if>
+      <if test="bone != null">
+        #{bone,jdbcType=VARCHAR},
+      </if>
+      <if test="protein != null">
+        #{protein,jdbcType=VARCHAR},
+      </if>
+      <if test="water != null">
+        #{water,jdbcType=VARCHAR},
+      </if>
+      <if test="muscle != null">
+        #{muscle,jdbcType=VARCHAR},
+      </if>
+      <if test="smm != null">
+        #{smm,jdbcType=VARCHAR},
+      </if>
+      <if test="pbf != null">
+        #{pbf,jdbcType=VARCHAR},
+      </if>
+      <if test="bmi != null">
+        #{bmi,jdbcType=VARCHAR},
+      </if>
+      <if test="bmr != null">
+        #{bmr,jdbcType=VARCHAR},
+      </if>
+      <if test="whr != null">
+        #{whr,jdbcType=VARCHAR},
+      </if>
+      <if test="edema != null">
+        #{edema,jdbcType=VARCHAR},
+      </if>
+      <if test="vfi != null">
+        #{vfi,jdbcType=VARCHAR},
+      </if>
+      <if test="bodyAge != null">
+        #{bodyAge,jdbcType=VARCHAR},
+      </if>
+      <if test="score != null">
+        #{score,jdbcType=VARCHAR},
+      </if>
+      <if test="bodyType != null">
+        #{bodyType,jdbcType=VARCHAR},
+      </if>
+      <if test="lbm != null">
+        #{lbm,jdbcType=VARCHAR},
+      </if>
+      <if test="icw != null">
+        #{icw,jdbcType=VARCHAR},
+      </if>
+      <if test="ecw != null">
+        #{ecw,jdbcType=VARCHAR},
+      </if>
+      <if test="standardWeight != null">
+        #{standardWeight,jdbcType=VARCHAR},
+      </if>
+      <if test="weightControl != null">
+        #{weightControl,jdbcType=VARCHAR},
+      </if>
+      <if test="fatControl != null">
+        #{fatControl,jdbcType=VARCHAR},
+      </if>
+      <if test="muscleControl != null">
+        #{muscleControl,jdbcType=VARCHAR},
+      </if>
+      <if test="liverRisk != null">
+        #{liverRisk,jdbcType=VARCHAR},
+      </if>
+      <if test="asmi != null">
+        #{asmi,jdbcType=VARCHAR},
+      </if>
+      <if test="trFat != null">
+        #{trFat,jdbcType=VARCHAR},
+      </if>
+      <if test="laFat != null">
+        #{laFat,jdbcType=VARCHAR},
+      </if>
+      <if test="raFat != null">
+        #{raFat,jdbcType=VARCHAR},
+      </if>
+      <if test="llFat != null">
+        #{llFat,jdbcType=VARCHAR},
+      </if>
+      <if test="rlFat != null">
+        #{rlFat,jdbcType=VARCHAR},
+      </if>
+      <if test="trWater != null">
+        #{trWater,jdbcType=VARCHAR},
+      </if>
+      <if test="laWater != null">
+        #{laWater,jdbcType=VARCHAR},
+      </if>
+      <if test="raWater != null">
+        #{raWater,jdbcType=VARCHAR},
+      </if>
+      <if test="llWater != null">
+        #{llWater,jdbcType=VARCHAR},
+      </if>
+      <if test="rlWater != null">
+        #{rlWater,jdbcType=VARCHAR},
+      </if>
+      <if test="trMuscle != null">
+        #{trMuscle,jdbcType=VARCHAR},
+      </if>
+      <if test="laMuscle != null">
+        #{laMuscle,jdbcType=VARCHAR},
+      </if>
+      <if test="raMuscle != null">
+        #{raMuscle,jdbcType=VARCHAR},
+      </if>
+      <if test="llMuscle != null">
+        #{llMuscle,jdbcType=VARCHAR},
+      </if>
+      <if test="rlMuscle != null">
+        #{rlMuscle,jdbcType=VARCHAR},
+      </if>
+      <if test="trBone != null">
+        #{trBone,jdbcType=VARCHAR},
+      </if>
+      <if test="laBone != null">
+        #{laBone,jdbcType=VARCHAR},
+      </if>
+      <if test="raBone != null">
+        #{raBone,jdbcType=VARCHAR},
+      </if>
+      <if test="llBone != null">
+        #{llBone,jdbcType=VARCHAR},
+      </if>
+      <if test="rlBone != null">
+        #{rlBone,jdbcType=VARCHAR},
+      </if>
+      <if test="weightMax != null">
+        #{weightMax,jdbcType=VARCHAR},
+      </if>
+      <if test="weightMin != null">
+        #{weightMin,jdbcType=VARCHAR},
+      </if>
+      <if test="fatMax != null">
+        #{fatMax,jdbcType=VARCHAR},
+      </if>
+      <if test="fatMin != null">
+        #{fatMin,jdbcType=VARCHAR},
+      </if>
+      <if test="boneMax != null">
+        #{boneMax,jdbcType=VARCHAR},
+      </if>
+      <if test="boneMin != null">
+        #{boneMin,jdbcType=VARCHAR},
+      </if>
+      <if test="proteinMax != null">
+        #{proteinMax,jdbcType=VARCHAR},
+      </if>
+      <if test="proteinMin != null">
+        #{proteinMin,jdbcType=VARCHAR},
+      </if>
+      <if test="waterMax != null">
+        #{waterMax,jdbcType=VARCHAR},
+      </if>
+      <if test="waterMin != null">
+        #{waterMin,jdbcType=VARCHAR},
+      </if>
+      <if test="muscleMax != null">
+        #{muscleMax,jdbcType=VARCHAR},
+      </if>
+      <if test="muscleMin != null">
+        #{muscleMin,jdbcType=VARCHAR},
+      </if>
+      <if test="smmMax != null">
+        #{smmMax,jdbcType=VARCHAR},
+      </if>
+      <if test="smmMin != null">
+        #{smmMin,jdbcType=VARCHAR},
+      </if>
+      <if test="pbfMax != null">
+        #{pbfMax,jdbcType=VARCHAR},
+      </if>
+      <if test="pbfMin != null">
+        #{pbfMin,jdbcType=VARCHAR},
+      </if>
+      <if test="bmiMax != null">
+        #{bmiMax,jdbcType=VARCHAR},
+      </if>
+      <if test="bmiMin != null">
+        #{bmiMin,jdbcType=VARCHAR},
+      </if>
+      <if test="whrMax != null">
+        #{whrMax,jdbcType=VARCHAR},
+      </if>
+      <if test="whrMin != null">
+        #{whrMin,jdbcType=VARCHAR},
+      </if>
+      <if test="edemaMax != null">
+        #{edemaMax,jdbcType=VARCHAR},
+      </if>
+      <if test="edemaMin != null">
+        #{edemaMin,jdbcType=VARCHAR},
+      </if>
+      <if test="vfiMax != null">
+        #{vfiMax,jdbcType=VARCHAR},
+      </if>
+      <if test="vfiMin != null">
+        #{vfiMin,jdbcType=VARCHAR},
+      </if>
+      <if test="diagnosis != null">
+        #{diagnosis,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        #{status,jdbcType=TINYINT},
+      </if>
+      <if test="delFlag != null">
+        #{delFlag,jdbcType=TINYINT},
+      </if>
+      <if test="tenantId != null">
+        #{tenantId,jdbcType=BIGINT},
+      </if>
+      <if test="createBy != null">
+        #{createBy,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateBy != null">
+        #{updateBy,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null">
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="remark != null">
+        #{remark,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.acupuncture.system.domain.po.UplRtcfInfoExample" resultType="java.lang.Long">
+    select count(*) from upl_rtcf_info
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update upl_rtcf_info
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=BIGINT},
+      </if>
+      <if test="record.message != null">
+        message = #{record.message,jdbcType=VARCHAR},
+      </if>
+      <if test="record.uuid != null">
+        uuid = #{record.uuid,jdbcType=VARCHAR},
+      </if>
+      <if test="record.deviceId != null">
+        device_id = #{record.deviceId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.deviceType != null">
+        device_type = #{record.deviceType,jdbcType=VARCHAR},
+      </if>
+      <if test="record.memberid != null">
+        memberid = #{record.memberid,jdbcType=VARCHAR},
+      </if>
+      <if test="record.testId != null">
+        test_id = #{record.testId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.testDate != null">
+        test_date = #{record.testDate,jdbcType=VARCHAR},
+      </if>
+      <if test="record.name != null">
+        name = #{record.name,jdbcType=VARCHAR},
+      </if>
+      <if test="record.sex != null">
+        sex = #{record.sex,jdbcType=VARCHAR},
+      </if>
+      <if test="record.height != null">
+        height = #{record.height,jdbcType=VARCHAR},
+      </if>
+      <if test="record.birthYear != null">
+        birth_year = #{record.birthYear,jdbcType=VARCHAR},
+      </if>
+      <if test="record.weight != null">
+        weight = #{record.weight,jdbcType=VARCHAR},
+      </if>
+      <if test="record.fat != null">
+        fat = #{record.fat,jdbcType=VARCHAR},
+      </if>
+      <if test="record.bone != null">
+        bone = #{record.bone,jdbcType=VARCHAR},
+      </if>
+      <if test="record.protein != null">
+        protein = #{record.protein,jdbcType=VARCHAR},
+      </if>
+      <if test="record.water != null">
+        water = #{record.water,jdbcType=VARCHAR},
+      </if>
+      <if test="record.muscle != null">
+        muscle = #{record.muscle,jdbcType=VARCHAR},
+      </if>
+      <if test="record.smm != null">
+        smm = #{record.smm,jdbcType=VARCHAR},
+      </if>
+      <if test="record.pbf != null">
+        pbf = #{record.pbf,jdbcType=VARCHAR},
+      </if>
+      <if test="record.bmi != null">
+        bmi = #{record.bmi,jdbcType=VARCHAR},
+      </if>
+      <if test="record.bmr != null">
+        bmr = #{record.bmr,jdbcType=VARCHAR},
+      </if>
+      <if test="record.whr != null">
+        whr = #{record.whr,jdbcType=VARCHAR},
+      </if>
+      <if test="record.edema != null">
+        edema = #{record.edema,jdbcType=VARCHAR},
+      </if>
+      <if test="record.vfi != null">
+        vfi = #{record.vfi,jdbcType=VARCHAR},
+      </if>
+      <if test="record.bodyAge != null">
+        body_age = #{record.bodyAge,jdbcType=VARCHAR},
+      </if>
+      <if test="record.score != null">
+        score = #{record.score,jdbcType=VARCHAR},
+      </if>
+      <if test="record.bodyType != null">
+        body_type = #{record.bodyType,jdbcType=VARCHAR},
+      </if>
+      <if test="record.lbm != null">
+        lbm = #{record.lbm,jdbcType=VARCHAR},
+      </if>
+      <if test="record.icw != null">
+        icw = #{record.icw,jdbcType=VARCHAR},
+      </if>
+      <if test="record.ecw != null">
+        ecw = #{record.ecw,jdbcType=VARCHAR},
+      </if>
+      <if test="record.standardWeight != null">
+        standard_weight = #{record.standardWeight,jdbcType=VARCHAR},
+      </if>
+      <if test="record.weightControl != null">
+        weight_control = #{record.weightControl,jdbcType=VARCHAR},
+      </if>
+      <if test="record.fatControl != null">
+        fat_control = #{record.fatControl,jdbcType=VARCHAR},
+      </if>
+      <if test="record.muscleControl != null">
+        muscle_control = #{record.muscleControl,jdbcType=VARCHAR},
+      </if>
+      <if test="record.liverRisk != null">
+        liver_risk = #{record.liverRisk,jdbcType=VARCHAR},
+      </if>
+      <if test="record.asmi != null">
+        asmi = #{record.asmi,jdbcType=VARCHAR},
+      </if>
+      <if test="record.trFat != null">
+        tr_fat = #{record.trFat,jdbcType=VARCHAR},
+      </if>
+      <if test="record.laFat != null">
+        la_fat = #{record.laFat,jdbcType=VARCHAR},
+      </if>
+      <if test="record.raFat != null">
+        ra_fat = #{record.raFat,jdbcType=VARCHAR},
+      </if>
+      <if test="record.llFat != null">
+        ll_fat = #{record.llFat,jdbcType=VARCHAR},
+      </if>
+      <if test="record.rlFat != null">
+        rl_fat = #{record.rlFat,jdbcType=VARCHAR},
+      </if>
+      <if test="record.trWater != null">
+        tr_water = #{record.trWater,jdbcType=VARCHAR},
+      </if>
+      <if test="record.laWater != null">
+        la_water = #{record.laWater,jdbcType=VARCHAR},
+      </if>
+      <if test="record.raWater != null">
+        ra_water = #{record.raWater,jdbcType=VARCHAR},
+      </if>
+      <if test="record.llWater != null">
+        ll_water = #{record.llWater,jdbcType=VARCHAR},
+      </if>
+      <if test="record.rlWater != null">
+        rl_water = #{record.rlWater,jdbcType=VARCHAR},
+      </if>
+      <if test="record.trMuscle != null">
+        tr_muscle = #{record.trMuscle,jdbcType=VARCHAR},
+      </if>
+      <if test="record.laMuscle != null">
+        la_muscle = #{record.laMuscle,jdbcType=VARCHAR},
+      </if>
+      <if test="record.raMuscle != null">
+        ra_muscle = #{record.raMuscle,jdbcType=VARCHAR},
+      </if>
+      <if test="record.llMuscle != null">
+        ll_muscle = #{record.llMuscle,jdbcType=VARCHAR},
+      </if>
+      <if test="record.rlMuscle != null">
+        rl_muscle = #{record.rlMuscle,jdbcType=VARCHAR},
+      </if>
+      <if test="record.trBone != null">
+        tr_bone = #{record.trBone,jdbcType=VARCHAR},
+      </if>
+      <if test="record.laBone != null">
+        la_bone = #{record.laBone,jdbcType=VARCHAR},
+      </if>
+      <if test="record.raBone != null">
+        ra_bone = #{record.raBone,jdbcType=VARCHAR},
+      </if>
+      <if test="record.llBone != null">
+        ll_bone = #{record.llBone,jdbcType=VARCHAR},
+      </if>
+      <if test="record.rlBone != null">
+        rl_bone = #{record.rlBone,jdbcType=VARCHAR},
+      </if>
+      <if test="record.weightMax != null">
+        weight_max = #{record.weightMax,jdbcType=VARCHAR},
+      </if>
+      <if test="record.weightMin != null">
+        weight_min = #{record.weightMin,jdbcType=VARCHAR},
+      </if>
+      <if test="record.fatMax != null">
+        fat_max = #{record.fatMax,jdbcType=VARCHAR},
+      </if>
+      <if test="record.fatMin != null">
+        fat_min = #{record.fatMin,jdbcType=VARCHAR},
+      </if>
+      <if test="record.boneMax != null">
+        bone_max = #{record.boneMax,jdbcType=VARCHAR},
+      </if>
+      <if test="record.boneMin != null">
+        bone_min = #{record.boneMin,jdbcType=VARCHAR},
+      </if>
+      <if test="record.proteinMax != null">
+        protein_max = #{record.proteinMax,jdbcType=VARCHAR},
+      </if>
+      <if test="record.proteinMin != null">
+        protein_min = #{record.proteinMin,jdbcType=VARCHAR},
+      </if>
+      <if test="record.waterMax != null">
+        water_max = #{record.waterMax,jdbcType=VARCHAR},
+      </if>
+      <if test="record.waterMin != null">
+        water_min = #{record.waterMin,jdbcType=VARCHAR},
+      </if>
+      <if test="record.muscleMax != null">
+        muscle_max = #{record.muscleMax,jdbcType=VARCHAR},
+      </if>
+      <if test="record.muscleMin != null">
+        muscle_min = #{record.muscleMin,jdbcType=VARCHAR},
+      </if>
+      <if test="record.smmMax != null">
+        smm_max = #{record.smmMax,jdbcType=VARCHAR},
+      </if>
+      <if test="record.smmMin != null">
+        smm_min = #{record.smmMin,jdbcType=VARCHAR},
+      </if>
+      <if test="record.pbfMax != null">
+        pbf_max = #{record.pbfMax,jdbcType=VARCHAR},
+      </if>
+      <if test="record.pbfMin != null">
+        pbf_min = #{record.pbfMin,jdbcType=VARCHAR},
+      </if>
+      <if test="record.bmiMax != null">
+        bmi_max = #{record.bmiMax,jdbcType=VARCHAR},
+      </if>
+      <if test="record.bmiMin != null">
+        bmi_min = #{record.bmiMin,jdbcType=VARCHAR},
+      </if>
+      <if test="record.whrMax != null">
+        whr_max = #{record.whrMax,jdbcType=VARCHAR},
+      </if>
+      <if test="record.whrMin != null">
+        whr_min = #{record.whrMin,jdbcType=VARCHAR},
+      </if>
+      <if test="record.edemaMax != null">
+        edema_max = #{record.edemaMax,jdbcType=VARCHAR},
+      </if>
+      <if test="record.edemaMin != null">
+        edema_min = #{record.edemaMin,jdbcType=VARCHAR},
+      </if>
+      <if test="record.vfiMax != null">
+        vfi_max = #{record.vfiMax,jdbcType=VARCHAR},
+      </if>
+      <if test="record.vfiMin != null">
+        vfi_min = #{record.vfiMin,jdbcType=VARCHAR},
+      </if>
+      <if test="record.diagnosis != null">
+        diagnosis = #{record.diagnosis,jdbcType=VARCHAR},
+      </if>
+      <if test="record.status != null">
+        status = #{record.status,jdbcType=TINYINT},
+      </if>
+      <if test="record.delFlag != null">
+        del_flag = #{record.delFlag,jdbcType=TINYINT},
+      </if>
+      <if test="record.tenantId != null">
+        tenant_id = #{record.tenantId,jdbcType=BIGINT},
+      </if>
+      <if test="record.createBy != null">
+        create_by = #{record.createBy,jdbcType=VARCHAR},
+      </if>
+      <if test="record.createTime != null">
+        create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.updateBy != null">
+        update_by = #{record.updateBy,jdbcType=VARCHAR},
+      </if>
+      <if test="record.updateTime != null">
+        update_time = #{record.updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.remark != null">
+        remark = #{record.remark,jdbcType=VARCHAR},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update upl_rtcf_info
+    set id = #{record.id,jdbcType=BIGINT},
+      message = #{record.message,jdbcType=VARCHAR},
+      uuid = #{record.uuid,jdbcType=VARCHAR},
+      device_id = #{record.deviceId,jdbcType=VARCHAR},
+      device_type = #{record.deviceType,jdbcType=VARCHAR},
+      memberid = #{record.memberid,jdbcType=VARCHAR},
+      test_id = #{record.testId,jdbcType=VARCHAR},
+      test_date = #{record.testDate,jdbcType=VARCHAR},
+      name = #{record.name,jdbcType=VARCHAR},
+      sex = #{record.sex,jdbcType=VARCHAR},
+      height = #{record.height,jdbcType=VARCHAR},
+      birth_year = #{record.birthYear,jdbcType=VARCHAR},
+      weight = #{record.weight,jdbcType=VARCHAR},
+      fat = #{record.fat,jdbcType=VARCHAR},
+      bone = #{record.bone,jdbcType=VARCHAR},
+      protein = #{record.protein,jdbcType=VARCHAR},
+      water = #{record.water,jdbcType=VARCHAR},
+      muscle = #{record.muscle,jdbcType=VARCHAR},
+      smm = #{record.smm,jdbcType=VARCHAR},
+      pbf = #{record.pbf,jdbcType=VARCHAR},
+      bmi = #{record.bmi,jdbcType=VARCHAR},
+      bmr = #{record.bmr,jdbcType=VARCHAR},
+      whr = #{record.whr,jdbcType=VARCHAR},
+      edema = #{record.edema,jdbcType=VARCHAR},
+      vfi = #{record.vfi,jdbcType=VARCHAR},
+      body_age = #{record.bodyAge,jdbcType=VARCHAR},
+      score = #{record.score,jdbcType=VARCHAR},
+      body_type = #{record.bodyType,jdbcType=VARCHAR},
+      lbm = #{record.lbm,jdbcType=VARCHAR},
+      icw = #{record.icw,jdbcType=VARCHAR},
+      ecw = #{record.ecw,jdbcType=VARCHAR},
+      standard_weight = #{record.standardWeight,jdbcType=VARCHAR},
+      weight_control = #{record.weightControl,jdbcType=VARCHAR},
+      fat_control = #{record.fatControl,jdbcType=VARCHAR},
+      muscle_control = #{record.muscleControl,jdbcType=VARCHAR},
+      liver_risk = #{record.liverRisk,jdbcType=VARCHAR},
+      asmi = #{record.asmi,jdbcType=VARCHAR},
+      tr_fat = #{record.trFat,jdbcType=VARCHAR},
+      la_fat = #{record.laFat,jdbcType=VARCHAR},
+      ra_fat = #{record.raFat,jdbcType=VARCHAR},
+      ll_fat = #{record.llFat,jdbcType=VARCHAR},
+      rl_fat = #{record.rlFat,jdbcType=VARCHAR},
+      tr_water = #{record.trWater,jdbcType=VARCHAR},
+      la_water = #{record.laWater,jdbcType=VARCHAR},
+      ra_water = #{record.raWater,jdbcType=VARCHAR},
+      ll_water = #{record.llWater,jdbcType=VARCHAR},
+      rl_water = #{record.rlWater,jdbcType=VARCHAR},
+      tr_muscle = #{record.trMuscle,jdbcType=VARCHAR},
+      la_muscle = #{record.laMuscle,jdbcType=VARCHAR},
+      ra_muscle = #{record.raMuscle,jdbcType=VARCHAR},
+      ll_muscle = #{record.llMuscle,jdbcType=VARCHAR},
+      rl_muscle = #{record.rlMuscle,jdbcType=VARCHAR},
+      tr_bone = #{record.trBone,jdbcType=VARCHAR},
+      la_bone = #{record.laBone,jdbcType=VARCHAR},
+      ra_bone = #{record.raBone,jdbcType=VARCHAR},
+      ll_bone = #{record.llBone,jdbcType=VARCHAR},
+      rl_bone = #{record.rlBone,jdbcType=VARCHAR},
+      weight_max = #{record.weightMax,jdbcType=VARCHAR},
+      weight_min = #{record.weightMin,jdbcType=VARCHAR},
+      fat_max = #{record.fatMax,jdbcType=VARCHAR},
+      fat_min = #{record.fatMin,jdbcType=VARCHAR},
+      bone_max = #{record.boneMax,jdbcType=VARCHAR},
+      bone_min = #{record.boneMin,jdbcType=VARCHAR},
+      protein_max = #{record.proteinMax,jdbcType=VARCHAR},
+      protein_min = #{record.proteinMin,jdbcType=VARCHAR},
+      water_max = #{record.waterMax,jdbcType=VARCHAR},
+      water_min = #{record.waterMin,jdbcType=VARCHAR},
+      muscle_max = #{record.muscleMax,jdbcType=VARCHAR},
+      muscle_min = #{record.muscleMin,jdbcType=VARCHAR},
+      smm_max = #{record.smmMax,jdbcType=VARCHAR},
+      smm_min = #{record.smmMin,jdbcType=VARCHAR},
+      pbf_max = #{record.pbfMax,jdbcType=VARCHAR},
+      pbf_min = #{record.pbfMin,jdbcType=VARCHAR},
+      bmi_max = #{record.bmiMax,jdbcType=VARCHAR},
+      bmi_min = #{record.bmiMin,jdbcType=VARCHAR},
+      whr_max = #{record.whrMax,jdbcType=VARCHAR},
+      whr_min = #{record.whrMin,jdbcType=VARCHAR},
+      edema_max = #{record.edemaMax,jdbcType=VARCHAR},
+      edema_min = #{record.edemaMin,jdbcType=VARCHAR},
+      vfi_max = #{record.vfiMax,jdbcType=VARCHAR},
+      vfi_min = #{record.vfiMin,jdbcType=VARCHAR},
+      diagnosis = #{record.diagnosis,jdbcType=VARCHAR},
+      status = #{record.status,jdbcType=TINYINT},
+      del_flag = #{record.delFlag,jdbcType=TINYINT},
+      tenant_id = #{record.tenantId,jdbcType=BIGINT},
+      create_by = #{record.createBy,jdbcType=VARCHAR},
+      create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      update_by = #{record.updateBy,jdbcType=VARCHAR},
+      update_time = #{record.updateTime,jdbcType=TIMESTAMP},
+      remark = #{record.remark,jdbcType=VARCHAR}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.acupuncture.system.domain.po.UplRtcfInfo">
+    update upl_rtcf_info
+    <set>
+      <if test="message != null">
+        message = #{message,jdbcType=VARCHAR},
+      </if>
+      <if test="uuid != null">
+        uuid = #{uuid,jdbcType=VARCHAR},
+      </if>
+      <if test="deviceId != null">
+        device_id = #{deviceId,jdbcType=VARCHAR},
+      </if>
+      <if test="deviceType != null">
+        device_type = #{deviceType,jdbcType=VARCHAR},
+      </if>
+      <if test="memberid != null">
+        memberid = #{memberid,jdbcType=VARCHAR},
+      </if>
+      <if test="testId != null">
+        test_id = #{testId,jdbcType=VARCHAR},
+      </if>
+      <if test="testDate != null">
+        test_date = #{testDate,jdbcType=VARCHAR},
+      </if>
+      <if test="name != null">
+        name = #{name,jdbcType=VARCHAR},
+      </if>
+      <if test="sex != null">
+        sex = #{sex,jdbcType=VARCHAR},
+      </if>
+      <if test="height != null">
+        height = #{height,jdbcType=VARCHAR},
+      </if>
+      <if test="birthYear != null">
+        birth_year = #{birthYear,jdbcType=VARCHAR},
+      </if>
+      <if test="weight != null">
+        weight = #{weight,jdbcType=VARCHAR},
+      </if>
+      <if test="fat != null">
+        fat = #{fat,jdbcType=VARCHAR},
+      </if>
+      <if test="bone != null">
+        bone = #{bone,jdbcType=VARCHAR},
+      </if>
+      <if test="protein != null">
+        protein = #{protein,jdbcType=VARCHAR},
+      </if>
+      <if test="water != null">
+        water = #{water,jdbcType=VARCHAR},
+      </if>
+      <if test="muscle != null">
+        muscle = #{muscle,jdbcType=VARCHAR},
+      </if>
+      <if test="smm != null">
+        smm = #{smm,jdbcType=VARCHAR},
+      </if>
+      <if test="pbf != null">
+        pbf = #{pbf,jdbcType=VARCHAR},
+      </if>
+      <if test="bmi != null">
+        bmi = #{bmi,jdbcType=VARCHAR},
+      </if>
+      <if test="bmr != null">
+        bmr = #{bmr,jdbcType=VARCHAR},
+      </if>
+      <if test="whr != null">
+        whr = #{whr,jdbcType=VARCHAR},
+      </if>
+      <if test="edema != null">
+        edema = #{edema,jdbcType=VARCHAR},
+      </if>
+      <if test="vfi != null">
+        vfi = #{vfi,jdbcType=VARCHAR},
+      </if>
+      <if test="bodyAge != null">
+        body_age = #{bodyAge,jdbcType=VARCHAR},
+      </if>
+      <if test="score != null">
+        score = #{score,jdbcType=VARCHAR},
+      </if>
+      <if test="bodyType != null">
+        body_type = #{bodyType,jdbcType=VARCHAR},
+      </if>
+      <if test="lbm != null">
+        lbm = #{lbm,jdbcType=VARCHAR},
+      </if>
+      <if test="icw != null">
+        icw = #{icw,jdbcType=VARCHAR},
+      </if>
+      <if test="ecw != null">
+        ecw = #{ecw,jdbcType=VARCHAR},
+      </if>
+      <if test="standardWeight != null">
+        standard_weight = #{standardWeight,jdbcType=VARCHAR},
+      </if>
+      <if test="weightControl != null">
+        weight_control = #{weightControl,jdbcType=VARCHAR},
+      </if>
+      <if test="fatControl != null">
+        fat_control = #{fatControl,jdbcType=VARCHAR},
+      </if>
+      <if test="muscleControl != null">
+        muscle_control = #{muscleControl,jdbcType=VARCHAR},
+      </if>
+      <if test="liverRisk != null">
+        liver_risk = #{liverRisk,jdbcType=VARCHAR},
+      </if>
+      <if test="asmi != null">
+        asmi = #{asmi,jdbcType=VARCHAR},
+      </if>
+      <if test="trFat != null">
+        tr_fat = #{trFat,jdbcType=VARCHAR},
+      </if>
+      <if test="laFat != null">
+        la_fat = #{laFat,jdbcType=VARCHAR},
+      </if>
+      <if test="raFat != null">
+        ra_fat = #{raFat,jdbcType=VARCHAR},
+      </if>
+      <if test="llFat != null">
+        ll_fat = #{llFat,jdbcType=VARCHAR},
+      </if>
+      <if test="rlFat != null">
+        rl_fat = #{rlFat,jdbcType=VARCHAR},
+      </if>
+      <if test="trWater != null">
+        tr_water = #{trWater,jdbcType=VARCHAR},
+      </if>
+      <if test="laWater != null">
+        la_water = #{laWater,jdbcType=VARCHAR},
+      </if>
+      <if test="raWater != null">
+        ra_water = #{raWater,jdbcType=VARCHAR},
+      </if>
+      <if test="llWater != null">
+        ll_water = #{llWater,jdbcType=VARCHAR},
+      </if>
+      <if test="rlWater != null">
+        rl_water = #{rlWater,jdbcType=VARCHAR},
+      </if>
+      <if test="trMuscle != null">
+        tr_muscle = #{trMuscle,jdbcType=VARCHAR},
+      </if>
+      <if test="laMuscle != null">
+        la_muscle = #{laMuscle,jdbcType=VARCHAR},
+      </if>
+      <if test="raMuscle != null">
+        ra_muscle = #{raMuscle,jdbcType=VARCHAR},
+      </if>
+      <if test="llMuscle != null">
+        ll_muscle = #{llMuscle,jdbcType=VARCHAR},
+      </if>
+      <if test="rlMuscle != null">
+        rl_muscle = #{rlMuscle,jdbcType=VARCHAR},
+      </if>
+      <if test="trBone != null">
+        tr_bone = #{trBone,jdbcType=VARCHAR},
+      </if>
+      <if test="laBone != null">
+        la_bone = #{laBone,jdbcType=VARCHAR},
+      </if>
+      <if test="raBone != null">
+        ra_bone = #{raBone,jdbcType=VARCHAR},
+      </if>
+      <if test="llBone != null">
+        ll_bone = #{llBone,jdbcType=VARCHAR},
+      </if>
+      <if test="rlBone != null">
+        rl_bone = #{rlBone,jdbcType=VARCHAR},
+      </if>
+      <if test="weightMax != null">
+        weight_max = #{weightMax,jdbcType=VARCHAR},
+      </if>
+      <if test="weightMin != null">
+        weight_min = #{weightMin,jdbcType=VARCHAR},
+      </if>
+      <if test="fatMax != null">
+        fat_max = #{fatMax,jdbcType=VARCHAR},
+      </if>
+      <if test="fatMin != null">
+        fat_min = #{fatMin,jdbcType=VARCHAR},
+      </if>
+      <if test="boneMax != null">
+        bone_max = #{boneMax,jdbcType=VARCHAR},
+      </if>
+      <if test="boneMin != null">
+        bone_min = #{boneMin,jdbcType=VARCHAR},
+      </if>
+      <if test="proteinMax != null">
+        protein_max = #{proteinMax,jdbcType=VARCHAR},
+      </if>
+      <if test="proteinMin != null">
+        protein_min = #{proteinMin,jdbcType=VARCHAR},
+      </if>
+      <if test="waterMax != null">
+        water_max = #{waterMax,jdbcType=VARCHAR},
+      </if>
+      <if test="waterMin != null">
+        water_min = #{waterMin,jdbcType=VARCHAR},
+      </if>
+      <if test="muscleMax != null">
+        muscle_max = #{muscleMax,jdbcType=VARCHAR},
+      </if>
+      <if test="muscleMin != null">
+        muscle_min = #{muscleMin,jdbcType=VARCHAR},
+      </if>
+      <if test="smmMax != null">
+        smm_max = #{smmMax,jdbcType=VARCHAR},
+      </if>
+      <if test="smmMin != null">
+        smm_min = #{smmMin,jdbcType=VARCHAR},
+      </if>
+      <if test="pbfMax != null">
+        pbf_max = #{pbfMax,jdbcType=VARCHAR},
+      </if>
+      <if test="pbfMin != null">
+        pbf_min = #{pbfMin,jdbcType=VARCHAR},
+      </if>
+      <if test="bmiMax != null">
+        bmi_max = #{bmiMax,jdbcType=VARCHAR},
+      </if>
+      <if test="bmiMin != null">
+        bmi_min = #{bmiMin,jdbcType=VARCHAR},
+      </if>
+      <if test="whrMax != null">
+        whr_max = #{whrMax,jdbcType=VARCHAR},
+      </if>
+      <if test="whrMin != null">
+        whr_min = #{whrMin,jdbcType=VARCHAR},
+      </if>
+      <if test="edemaMax != null">
+        edema_max = #{edemaMax,jdbcType=VARCHAR},
+      </if>
+      <if test="edemaMin != null">
+        edema_min = #{edemaMin,jdbcType=VARCHAR},
+      </if>
+      <if test="vfiMax != null">
+        vfi_max = #{vfiMax,jdbcType=VARCHAR},
+      </if>
+      <if test="vfiMin != null">
+        vfi_min = #{vfiMin,jdbcType=VARCHAR},
+      </if>
+      <if test="diagnosis != null">
+        diagnosis = #{diagnosis,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        status = #{status,jdbcType=TINYINT},
+      </if>
+      <if test="delFlag != null">
+        del_flag = #{delFlag,jdbcType=TINYINT},
+      </if>
+      <if test="tenantId != null">
+        tenant_id = #{tenantId,jdbcType=BIGINT},
+      </if>
+      <if test="createBy != null">
+        create_by = #{createBy,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null">
+        create_time = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateBy != null">
+        update_by = #{updateBy,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null">
+        update_time = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="remark != null">
+        remark = #{remark,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.acupuncture.system.domain.po.UplRtcfInfo">
+    update upl_rtcf_info
+    set message = #{message,jdbcType=VARCHAR},
+      uuid = #{uuid,jdbcType=VARCHAR},
+      device_id = #{deviceId,jdbcType=VARCHAR},
+      device_type = #{deviceType,jdbcType=VARCHAR},
+      memberid = #{memberid,jdbcType=VARCHAR},
+      test_id = #{testId,jdbcType=VARCHAR},
+      test_date = #{testDate,jdbcType=VARCHAR},
+      name = #{name,jdbcType=VARCHAR},
+      sex = #{sex,jdbcType=VARCHAR},
+      height = #{height,jdbcType=VARCHAR},
+      birth_year = #{birthYear,jdbcType=VARCHAR},
+      weight = #{weight,jdbcType=VARCHAR},
+      fat = #{fat,jdbcType=VARCHAR},
+      bone = #{bone,jdbcType=VARCHAR},
+      protein = #{protein,jdbcType=VARCHAR},
+      water = #{water,jdbcType=VARCHAR},
+      muscle = #{muscle,jdbcType=VARCHAR},
+      smm = #{smm,jdbcType=VARCHAR},
+      pbf = #{pbf,jdbcType=VARCHAR},
+      bmi = #{bmi,jdbcType=VARCHAR},
+      bmr = #{bmr,jdbcType=VARCHAR},
+      whr = #{whr,jdbcType=VARCHAR},
+      edema = #{edema,jdbcType=VARCHAR},
+      vfi = #{vfi,jdbcType=VARCHAR},
+      body_age = #{bodyAge,jdbcType=VARCHAR},
+      score = #{score,jdbcType=VARCHAR},
+      body_type = #{bodyType,jdbcType=VARCHAR},
+      lbm = #{lbm,jdbcType=VARCHAR},
+      icw = #{icw,jdbcType=VARCHAR},
+      ecw = #{ecw,jdbcType=VARCHAR},
+      standard_weight = #{standardWeight,jdbcType=VARCHAR},
+      weight_control = #{weightControl,jdbcType=VARCHAR},
+      fat_control = #{fatControl,jdbcType=VARCHAR},
+      muscle_control = #{muscleControl,jdbcType=VARCHAR},
+      liver_risk = #{liverRisk,jdbcType=VARCHAR},
+      asmi = #{asmi,jdbcType=VARCHAR},
+      tr_fat = #{trFat,jdbcType=VARCHAR},
+      la_fat = #{laFat,jdbcType=VARCHAR},
+      ra_fat = #{raFat,jdbcType=VARCHAR},
+      ll_fat = #{llFat,jdbcType=VARCHAR},
+      rl_fat = #{rlFat,jdbcType=VARCHAR},
+      tr_water = #{trWater,jdbcType=VARCHAR},
+      la_water = #{laWater,jdbcType=VARCHAR},
+      ra_water = #{raWater,jdbcType=VARCHAR},
+      ll_water = #{llWater,jdbcType=VARCHAR},
+      rl_water = #{rlWater,jdbcType=VARCHAR},
+      tr_muscle = #{trMuscle,jdbcType=VARCHAR},
+      la_muscle = #{laMuscle,jdbcType=VARCHAR},
+      ra_muscle = #{raMuscle,jdbcType=VARCHAR},
+      ll_muscle = #{llMuscle,jdbcType=VARCHAR},
+      rl_muscle = #{rlMuscle,jdbcType=VARCHAR},
+      tr_bone = #{trBone,jdbcType=VARCHAR},
+      la_bone = #{laBone,jdbcType=VARCHAR},
+      ra_bone = #{raBone,jdbcType=VARCHAR},
+      ll_bone = #{llBone,jdbcType=VARCHAR},
+      rl_bone = #{rlBone,jdbcType=VARCHAR},
+      weight_max = #{weightMax,jdbcType=VARCHAR},
+      weight_min = #{weightMin,jdbcType=VARCHAR},
+      fat_max = #{fatMax,jdbcType=VARCHAR},
+      fat_min = #{fatMin,jdbcType=VARCHAR},
+      bone_max = #{boneMax,jdbcType=VARCHAR},
+      bone_min = #{boneMin,jdbcType=VARCHAR},
+      protein_max = #{proteinMax,jdbcType=VARCHAR},
+      protein_min = #{proteinMin,jdbcType=VARCHAR},
+      water_max = #{waterMax,jdbcType=VARCHAR},
+      water_min = #{waterMin,jdbcType=VARCHAR},
+      muscle_max = #{muscleMax,jdbcType=VARCHAR},
+      muscle_min = #{muscleMin,jdbcType=VARCHAR},
+      smm_max = #{smmMax,jdbcType=VARCHAR},
+      smm_min = #{smmMin,jdbcType=VARCHAR},
+      pbf_max = #{pbfMax,jdbcType=VARCHAR},
+      pbf_min = #{pbfMin,jdbcType=VARCHAR},
+      bmi_max = #{bmiMax,jdbcType=VARCHAR},
+      bmi_min = #{bmiMin,jdbcType=VARCHAR},
+      whr_max = #{whrMax,jdbcType=VARCHAR},
+      whr_min = #{whrMin,jdbcType=VARCHAR},
+      edema_max = #{edemaMax,jdbcType=VARCHAR},
+      edema_min = #{edemaMin,jdbcType=VARCHAR},
+      vfi_max = #{vfiMax,jdbcType=VARCHAR},
+      vfi_min = #{vfiMin,jdbcType=VARCHAR},
+      diagnosis = #{diagnosis,jdbcType=VARCHAR},
+      status = #{status,jdbcType=TINYINT},
+      del_flag = #{delFlag,jdbcType=TINYINT},
+      tenant_id = #{tenantId,jdbcType=BIGINT},
+      create_by = #{createBy,jdbcType=VARCHAR},
+      create_time = #{createTime,jdbcType=TIMESTAMP},
+      update_by = #{updateBy,jdbcType=VARCHAR},
+      update_time = #{updateTime,jdbcType=TIMESTAMP},
+      remark = #{remark,jdbcType=VARCHAR}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index b250a25c..a9cd8482 100644
--- a/pom.xml
+++ b/pom.xml
@@ -152,7 +152,7 @@
             <dependency>
                 <groupId>org.apache.poi</groupId>
                 <artifactId>poi-ooxml</artifactId>
-                <version>${poi.version}</version>
+                <version>4.1.2</version>
             </dependency>
 
             <!-- velocity代码生成使用模板 -->