diff --git a/dlp-drugtesting-api/src/main/java/digital/laboratory/platform/inspetion/api/feign/RemoteTestToIdentifyService.java b/dlp-drugtesting-api/src/main/java/digital/laboratory/platform/inspetion/api/feign/RemoteTestToIdentifyService.java index d4c69e7..415ee68 100644 --- a/dlp-drugtesting-api/src/main/java/digital/laboratory/platform/inspetion/api/feign/RemoteTestToIdentifyService.java +++ b/dlp-drugtesting-api/src/main/java/digital/laboratory/platform/inspetion/api/feign/RemoteTestToIdentifyService.java @@ -1,5 +1,6 @@ package digital.laboratory.platform.inspetion.api.feign; +import cn.hutool.json.JSONObject; import digital.laboratory.platform.inspetion.api.entity.IdentificationBookDTO; import digital.laboratory.platform.inspetion.api.feign.factory.RemoteTestToIdentifyServiceFallbackFactory; import digital.laboratory.platform.common.core.constant.SecurityConstants; @@ -28,13 +29,25 @@ public interface RemoteTestToIdentifyService { * @return */ @GetMapping(value="/identifyBookData/getIdentifyBookDataByBusinessId", headers = SecurityConstants.HEADER_FROM_IN) - public R getIdentifyBookDataByBusinessId(@RequestParam("businessId") String businessId); + R getIdentifyBookDataByBusinessId(@RequestParam("businessId") String businessId); @PostMapping(value="/identifyBookData/getTestFinishBusinessData", headers = SecurityConstants.HEADER_FROM_IN) - public R getTestFinishBusinessData(@RequestBody List synedIdList); + R getTestFinishBusinessData(@RequestBody List synedIdList); - @PostMapping("/testRecord/queryTestRecordInfoByBusinessId") - @ApiOperation("根据业务id获取实验信息") - public R> queryTestRecordInfoByBusinessId(@RequestBody List businessIds); + /** + * 根据业务id获取实验信息 + * @param businessIds 业务id列表 + * @return + */ + @PostMapping(value = "/testRecord/queryTestRecordInfoByBusinessId", headers = SecurityConstants.HEADER_FROM_IN) + R> queryTestRecordInfoByBusinessId(@RequestBody List businessIds); + + /** + * 获取推送检验记录的数据 + * @param entrustId 委托id + * @return + */ + @PostMapping(value = "/pushDataToLabsCare/inspectRecord", headers = SecurityConstants.HEADER_FROM_IN) + R inspectRecord(@RequestParam("entrustId") String entrustId); } diff --git a/dlp-drugtesting-api/src/main/java/digital/laboratory/platform/inspetion/api/feign/fallback/RemoteTestToIdentifyServiceFallbackImpl.java b/dlp-drugtesting-api/src/main/java/digital/laboratory/platform/inspetion/api/feign/fallback/RemoteTestToIdentifyServiceFallbackImpl.java index 1f2728f..7d58188 100644 --- a/dlp-drugtesting-api/src/main/java/digital/laboratory/platform/inspetion/api/feign/fallback/RemoteTestToIdentifyServiceFallbackImpl.java +++ b/dlp-drugtesting-api/src/main/java/digital/laboratory/platform/inspetion/api/feign/fallback/RemoteTestToIdentifyServiceFallbackImpl.java @@ -1,5 +1,6 @@ package digital.laboratory.platform.inspetion.api.feign.fallback; +import cn.hutool.json.JSONObject; import digital.laboratory.platform.inspetion.api.entity.IdentificationBookDTO; import digital.laboratory.platform.inspetion.api.feign.RemoteTestToIdentifyService; import digital.laboratory.platform.common.core.util.R; @@ -37,6 +38,13 @@ public class RemoteTestToIdentifyServiceFallbackImpl implements RemoteTestToIden @Override public R> queryTestRecordInfoByBusinessId(List businessIds) { - return null; + log.error("feign 查询实验记录信息失败, businessIds: {}, 异常: {}", businessIds, cause != null ? cause.getMessage() : "未知错误"); + return R.failed("查询实验记录信息失败"); + } + + @Override + public R inspectRecord(String entrustId) { + log.error("feign 获取检验记录失败, entrustId: {}, 异常: {}", entrustId, cause != null ? cause.getMessage() : "未知错误"); + return R.failed("获取检验记录失败"); } } diff --git a/dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/controller/PushDataToLabsCareController.java b/dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/controller/PushDataToLabsCareController.java new file mode 100644 index 0000000..afbba0f --- /dev/null +++ b/dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/controller/PushDataToLabsCareController.java @@ -0,0 +1,39 @@ +package digital.laboratory.platform.inspection.controller; + +import cn.hutool.json.JSONObject; +import digital.laboratory.platform.common.core.util.R; +import digital.laboratory.platform.inspection.service.PushDataToLabsCareService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @author ChenJiangBao + * @version 1.0 + * @description: 推送数据到LabsCare平台接口管理 + * @date 2025/4/3 10:48 + */ +@RestController +@RequestMapping("/pushDataToLabsCare") +@Api(tags = "19-推送数据到LabsCare平台接口管理", description = "推送数据到LabsCare平台接口管理") +public class PushDataToLabsCareController { + + + + @Resource + private PushDataToLabsCareService pushDataToLabsCareService; + + @ApiOperation("获取推送检验记录的数据") + @PostMapping("/inspectRecord") + public R inspectRecord(@RequestParam("entrustId") String entrustId) { + + try { + return R.ok(pushDataToLabsCareService.fetchInspectRecordData(entrustId)); + } catch (Exception e) { + return R.failed(e.getMessage()); + } + } + +} diff --git a/dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/PushDataToLabsCareService.java b/dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/PushDataToLabsCareService.java index 17d9491..49c8747 100644 --- a/dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/PushDataToLabsCareService.java +++ b/dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/PushDataToLabsCareService.java @@ -1,5 +1,7 @@ package digital.laboratory.platform.inspection.service; +import cn.hutool.json.JSONObject; + /** * @author ChenJiangBao * @version 1.0 @@ -20,4 +22,10 @@ public interface PushDataToLabsCareService { */ void pushBiologyQualitativeRecordData(String testId); + /** + * 根据委托id获取检验记录数据 + * @param entrustId 委托id + * @return + */ + JSONObject fetchInspectRecordData(String entrustId); } diff --git a/dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/PushDataToLabsCareServiceImpl.java b/dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/PushDataToLabsCareServiceImpl.java index a0045fd..92d03c2 100644 --- a/dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/PushDataToLabsCareServiceImpl.java +++ b/dlp-drugtesting-biz/src/main/java/digital/laboratory/platform/inspection/service/impl/PushDataToLabsCareServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import digital.laboratory.platform.common.core.exception.CheckedException; import digital.laboratory.platform.inspection.config.ApiPathProperties; import digital.laboratory.platform.inspection.constant.TestRecordSampleDataConstant; import digital.laboratory.platform.inspection.convert.TestRecordSampleDataConverter; @@ -26,6 +27,7 @@ import digital.laboratory.platform.othersys.utils.HttpsUtils; import digital.laboratory.platform.sys.entity.Drug; import digital.laboratory.platform.sys.entity.SysUser; import lombok.extern.slf4j.Slf4j; +import org.aspectj.weaver.ast.Test; import org.springframework.http.*; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; @@ -222,6 +224,30 @@ public class PushDataToLabsCareServiceImpl implements PushDataToLabsCareService } } + /** + * 根据委托id获取检验记录数据 + * @param entrustId 委托id + * @return + */ + @Override + public JSONObject fetchInspectRecordData(String entrustId) { + EntrustInfo entrustInfo = entrustInfoService.getById(entrustId); + if (entrustInfo == null) { + log.error("委托id为 {} 的委托信息不存在", entrustId); + throw new CheckedException(String.format("委托id为 %s 的委托信息查询不到", entrustId)); + } + // 根据委托id查询对应的实验信息 + TestRecord testRecord = testRecordService.getOne(Wrappers.lambdaQuery().eq(TestRecord::getBusinessId, entrustId).last("LIMIT 1")); + if (testRecord == null) { + log.error("委托id为 {} 对应的实验信息不存在", entrustId); + throw new CheckedException(String.format("委托id为 %s 对应的实验信息查询不到", entrustId)); + } + if (entrustInfo.getBusinessType().equals(BusinessType.BOINT_CASE.getBusinessType())) { + return buildBiologyQualitativeRecordJsonPayload(entrustInfo, testRecord); + } + return buildNonInfraredGeneralQualitativeRecordJsonPayload(entrustInfo, testRecord); + } + /** * 构建生物检材定性记录Json数据 *