From bb770aabf9c2a814a4256a304de9a1c0523b2cd1 Mon Sep 17 00:00:00 2001 From: zzc Date: Mon, 17 Mar 2025 23:15:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=87=E6=8D=A2=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E5=88=87=E9=9D=A2=E4=BF=AE=E6=94=B9=EF=BC=8Cheader=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=BB=84=E7=BB=87ID=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/web/ScreeningController.java | 40 ++++++++++++++----- .../common/constant/UserConstants.java | 2 + .../aspectj/AdminGlobalDataSourceAspect.java | 23 ++++++----- .../system/domain/dto/ScreeningDto.java | 2 + .../service/impl/ScreeningServiceImpl.java | 2 +- 5 files changed, 50 insertions(+), 19 deletions(-) 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 index a8afca11..8f0e268f 100644 --- 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 @@ -7,9 +7,14 @@ 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.framework.datasource.DynamicDataSourceContextHolder; import com.acupuncture.system.domain.dto.ScreeningDto; +import com.acupuncture.system.domain.po.DmsTenant; +import com.acupuncture.system.domain.po.UmsDataSource; import com.acupuncture.system.domain.vo.QuestionnaireVo; import com.acupuncture.system.domain.vo.ScrScreenVo; +import com.acupuncture.system.persist.mapper.DmsTenantMapper; +import com.acupuncture.system.persist.mapper.UmsDataSourceMapper; import com.acupuncture.system.service.IScreeningService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -36,10 +41,15 @@ import java.util.List; public class ScreeningController { @Resource private IScreeningService screeningService; + @Resource + private DmsTenantMapper dmsTenantMapper; + + @Resource + private UmsDataSourceMapper umsDataSourceMapper; @ApiOperation(value = "查询筛查列表", notes = "原:查询医院是否填写了调查筛查") @RequestMapping(value = "/queryDetail", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) - public JsonResponse> queryDetail(@ApiParam @Validated @RequestBody BaseDto param){ + public JsonResponse> queryDetail(@ApiParam @Validated @RequestBody BaseDto param) { log.info("查询筛查列表"); if (param.getPageNum() > 0) { PageHelper.startPage(param.getPageNum(), param.getPageSize()); @@ -49,7 +59,7 @@ public class ScreeningController { @ApiOperation(value = "后台查询筛查列表", notes = "原:查询医院是否填写了调查筛查") @RequestMapping(value = "/admin/queryDetail", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) - public JsonResponse> adminQueryDetail(@ApiParam @Validated @RequestBody BaseDto param){ + public JsonResponse> adminQueryDetail(@ApiParam @Validated @RequestBody BaseDto param) { log.info("查询筛查列表"); if (param.getPageNum() > 0) { PageHelper.startPage(param.getPageNum(), param.getPageSize()); @@ -72,11 +82,22 @@ public class ScreeningController { @RequestMapping(value = "/createNoToken", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public JsonResponse createNoToken(@ApiParam @Validated @RequestBody BaseDto params) throws Exception { log.info("创建筛查详情{}", params); - QuestionnaireVo.DetailInfo detailInfo = screeningService.createDetail(params.getParam(), params.getParam().getUserId(), params.getParam().getTenantId()); +// changeDataSource(params.getParam().getTenantId()); + QuestionnaireVo.DetailInfo detailInfo = screeningService.createDetail(params.getParam(), params.getParam().getUserId(), params.getParam().getTenantId()); log.info("创建筛查详情结束"); return JsonResponse.ok(detailInfo); } + private void changeDataSource(Long tenantId) { + DmsTenant dmsTenant = dmsTenantMapper.selectByPrimaryKey(tenantId); + if (dmsTenant != null) { + UmsDataSource umsDataSource = umsDataSourceMapper.selectByPrimaryKey(dmsTenant.getDataSourceId()); + if (umsDataSource != null) { + DynamicDataSourceContextHolder.setDataSourceType(umsDataSource.getDataSourceKey()); + } + } + } + @ApiOperation(value = "提交筛查", notes = "") @RequestMapping(value = "/submit", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public JsonResponse submitQuestionnaire(@ApiParam @Validated @RequestBody BaseDto params) throws Exception { @@ -90,16 +111,17 @@ public class ScreeningController { @RequestMapping(value = "/submitNoToken", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public JsonResponse submitNoToken(@ApiParam @Validated @RequestBody BaseDto params) throws Exception { log.info("提交筛查开始{}", params); - screeningService.submitQuestionnaire(params.getParam(), 0L); +// changeDataSource(params.getParam().getTenantId()); + 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 params) throws Exception { log.info("保存调查筛查开始{}", params); +// changeDataSource(params.getParam().getTenantId()); screeningService.saveQuestionnaire(params.getParam(), params.getParam().getUserId()); log.info("保存调查筛查结束"); return JsonResponse.ok(); @@ -107,7 +129,7 @@ public class ScreeningController { @ApiOperation(value = "筛查随访", notes = "") @RequestMapping(value = "/follow", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) - public JsonResponse follow(@Validated @RequestBody BaseDto screenFollow){ + public JsonResponse follow(@Validated @RequestBody BaseDto screenFollow) { screeningService.follow(screenFollow.getParam().getPatientId(), screenFollow.getParam().getStatus()); return JsonResponse.ok(); } @@ -123,19 +145,19 @@ public class ScreeningController { @ApiOperation(value = "导出筛查列表", notes = "") @RequestMapping(value = "/exportScreen", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) - public void export(HttpServletResponse response, @RequestBody @Validated BaseDto param) { + public void export(HttpServletResponse response, @RequestBody @Validated BaseDto param) { screeningService.export(response, param.getParam()); } @ApiOperation(value = "导出筛查列表", notes = "") @RequestMapping(value = "/admin/exportScreen", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) - public void adminExport(HttpServletResponse response, @RequestBody @Validated BaseDto param) { + public void adminExport(HttpServletResponse response, @RequestBody @Validated BaseDto param) { screeningService.adminExport(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 param) { + public void exportRzScreen(HttpServletResponse response, @RequestBody @Validated BaseDto param) { screeningService.exportRzScreen(response, param.getParam()); } 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 3a0a5c41..aec15c82 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 @@ -81,6 +81,8 @@ public class UserConstants public static final String HEADER_KEY_TOKEN = "Authorization"; + public static final String DEPT = "TENANT_ID"; + /** * QuestionAnswer分隔符 */ diff --git a/acupuncture-framework/src/main/java/com/acupuncture/framework/aspectj/AdminGlobalDataSourceAspect.java b/acupuncture-framework/src/main/java/com/acupuncture/framework/aspectj/AdminGlobalDataSourceAspect.java index ec5ab7d6..dbe8ad4c 100644 --- a/acupuncture-framework/src/main/java/com/acupuncture/framework/aspectj/AdminGlobalDataSourceAspect.java +++ b/acupuncture-framework/src/main/java/com/acupuncture/framework/aspectj/AdminGlobalDataSourceAspect.java @@ -70,16 +70,21 @@ public class AdminGlobalDataSourceAspect { // 获取请求携带的令牌 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - - String authHeader = request.getHeader(UserConstants.HEADER_KEY_TOKEN); //token为空 - if(StrUtil.isEmpty(authHeader)){ - return null; - } + Long tenantId; + String header = request.getHeader(UserConstants.DEPT); + if(StrUtil.isNotEmpty(header)){ + tenantId = Long.parseLong(header); + }else { // String deptId = request.getHeader(WebConstant.HEADER_KEY_DEPT_ID); - Long tenantId = SecurityUtils.getTenantId(); - if (tenantId == null) { - return null; + String authHeader = request.getHeader(UserConstants.HEADER_KEY_TOKEN); + if (StrUtil.isEmpty(authHeader)) { + return null; + } + tenantId = SecurityUtils.getTenantId(); + if (tenantId == null) { + return null; + } } //设置所属医院和数据源 @@ -90,7 +95,7 @@ public class AdminGlobalDataSourceAspect { // if(ObjectUtil.isNull(loginUser) || loginUser.getUser().isAdmin()){ // return null; // } - //根据部门ID查询数据源 + //根据组织ID查询数据源 UmsDataSource dataSource = dmsLoginService.getDataSourceByTenantId(tenantId); if (dataSource == null) { throw new BaseException(DATASOURCE_NOT_FOUND); 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 index de67d923..ad37fee1 100644 --- 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 @@ -183,6 +183,7 @@ public class ScreeningDto { @NotNull(message = "问卷详情id不能为空") @ApiModelProperty("问卷详情id") private Long detailId; + private Long tenantId; } @Data @@ -229,6 +230,7 @@ public class ScreeningDto { @ApiModelProperty("答案") private String answer; private Long userId; + private Long tenantId; } @Data 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 index 69f2bb52..7fd645ea 100644 --- 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 @@ -391,7 +391,7 @@ public class ScreeningServiceImpl implements IScreeningService { } if (param.getCode().equals("SCWJ-BIRTH")) { questionnaireDetail.setAge(DateUtil.ageOfNow(param.getAnswer())); - param.setAnswer(DateUtil.format(DateUtil.parse(param.getAnswer()), "yyyy-MM-dd")); +// param.setAnswer(DateUtil.format(DateUtil.parse(param.getAnswer()), "yyyy-MM-dd")); } log.info("questionnaireDetail:{}", questionnaireDetail.getId()); log.info("questionnaireDetail:{}", questionnaireDetail.getName());