package com.glxp.api.controller.basic; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.thread.ThreadUtil; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.CusRedissonAnnotation; import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.RedissonCacheKey; import com.glxp.api.controller.BaseController; import com.glxp.api.entity.basic.BasicSkPrescribeEntity; import com.glxp.api.entity.basic.BasicSkSickerEntity; import com.glxp.api.http.ErpBasicClient; import com.glxp.api.req.basic.BasicSkSickerRequest; import com.glxp.api.req.basic.GetSickPrescribeRequest; import com.glxp.api.req.basic.GetSickRequest; import com.glxp.api.req.basic.SickerPrescribeSaveRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.BasicSkSickerResponse; import com.glxp.api.service.basic.BasicSkSickerService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @Slf4j @RestController public class BasicSickerController extends BaseController { @Resource BasicSkSickerService basicSkSickerService; @Resource ErpBasicClient erpBasicClient; @GetMapping("/udiwms/basic/sk/sicker/filter") public BaseResponse filterSicker(BasicSkSickerRequest basicSkSickerRequest) { List basicSkSickerResponses = basicSkSickerService.filterList(basicSkSickerRequest); PageInfo pageInfo = new PageInfo<>(basicSkSickerResponses); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(basicSkSickerResponses); return ResultVOUtils.success(pageSimpleResponse); } @GetMapping("/udiwms/basic/sk/sicker/filter/noPage") public BaseResponse filterSickerNoPage(BasicSkSickerRequest basicSkSickerRequest) { List basicSkSickerResponses = basicSkSickerService.filterNoList(basicSkSickerRequest); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setList(basicSkSickerResponses); return ResultVOUtils.success(pageSimpleResponse); } /** * 远程查询并下载患者信息 * * @return */ @GetMapping("/udiwms/basic/sk/sicker/filter/remote") public BaseResponse filterSickerRemote(BasicSkSickerRequest basicSkSickerRequest) { List basicSkSickerResponses = basicSkSickerService.filterNoList(basicSkSickerRequest); if (CollUtil.isEmpty(basicSkSickerResponses)) { GetSickRequest getSickRequest = new GetSickRequest(); BeanUtils.copyProperties(basicSkSickerRequest, getSickRequest); BaseResponse> baseResponse = erpBasicClient.getSicker(getSickRequest); if (CollUtil.isNotEmpty(baseResponse.getData().getList())) { List list = baseResponse.getData().getList(); // List basicSkSickerEntities = new ArrayList<>(); // list.forEach(item -> { // BasicSkSickerEntity basicSkSickerEntity = new BasicSkSickerEntity(); // BeanUtil.copyProperties(item, basicSkSickerEntity); // basicSkSickerEntities.add(basicSkSickerEntity); // }); basicSkSickerService.replaceBatchs(list); } return baseResponse; } else { PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setList(basicSkSickerResponses); return ResultVOUtils.success(pageSimpleResponse); } } /** * 在线实时获取患者信息 * * @return */ @GetMapping("/udiwms/basic/sk/sicker/filter/onLine") public BaseResponse filterSickerOnLine(GetSickRequest getSickRequest) { return erpBasicClient.getSicker(getSickRequest); } /** * 在线实时获取处方信息 * * @return */ @GetMapping("/udiwms/basic/sk/sicker/prescribe/filter/onLine") public BaseResponse filterSickerPrescribeOnLine(GetSickPrescribeRequest getSickRequest) { return erpBasicClient.getSickPrescribe(getSickRequest); } @CusRedissonAnnotation(cacheName = RedissonCacheKey.DL_SICKER, key = {"#getSickRequest.thirdSys"}, waitTime = 3, timeOutMsg = "后台正在下载,请勿重复提交") @PostMapping("/udiwms/basic/sk/sicker/download") public BaseResponse sickerDl(@RequestBody GetSickRequest getSickRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } if (CollUtil.isNotEmpty(getSickRequest.getSelectSickers())) { basicSkSickerService.replaceBatchs(getSickRequest.getSelectSickers()); } else { ThreadUtil.execAsync(() -> { basicSkSickerService.downloadSicker(getSickRequest, 1); }); } return ResultVOUtils.success("后台已开始下载,请稍后刷新查看!"); } }