package com.glxp.api.controller.basic; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.StrUtil; 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.BasicSkPrescribeItemEntity; import com.glxp.api.entity.basic.BasicSkSickerEntity; import com.glxp.api.req.basic.BasicProductTypeRequest; import com.glxp.api.req.basic.BasicSkPrescribeRequest; import com.glxp.api.req.basic.GetSickPrescribeRequest; import com.glxp.api.req.basic.GetSickRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.BasicSkPrescribeResponse; import com.glxp.api.res.basic.BasicSkSickerResponse; import com.glxp.api.service.BasicSkPrescribeItemService; import com.glxp.api.service.basic.BasicSkPrescribeService; import com.glxp.api.service.basic.BasicSkSickerService; import com.glxp.api.vo.basic.BasicSkPrescribeDetailVo; 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.List; /** * 病人处方 */ @RestController public class BasicSkPrescribeController extends BaseController { @Resource BasicSkSickerService basicSkSickerService; @Resource BasicSkPrescribeService basicSkPrescribeService; @Resource BasicSkPrescribeItemService basicSkPrescribeItemService; @GetMapping("/udiwms/basic/sk/prescribe/filter") public BaseResponse filterSicker(BasicSkPrescribeRequest basicSkPrescribeRequest) { List basicSkPrescribeResponses = basicSkPrescribeService.filterList(basicSkPrescribeRequest); PageInfo pageInfo = new PageInfo<>(basicSkPrescribeResponses); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(basicSkPrescribeResponses); return ResultVOUtils.success(pageSimpleResponse); } @GetMapping("/udiwms/basic/sk/prescribe/detail") public BaseResponse detail(String prescribeCode) { if (StrUtil.isBlank(prescribeCode)) { return ResultVOUtils.error(500, "缺少请求标识"); } BasicSkPrescribeEntity prescribe = basicSkPrescribeService.getById(prescribeCode); if (prescribe == null) { return ResultVOUtils.error(500, "未找到处方"); } BasicSkSickerEntity sicker = basicSkSickerService.getById(prescribe.getSickerCode()); if (sicker == null) { return ResultVOUtils.error(500, "未找到患者"); } List list = basicSkPrescribeItemService.listByPrescribeCode(prescribeCode); BasicSkPrescribeDetailVo basicSkPrescribeDetailVo = BeanUtil.copyProperties(prescribe, BasicSkPrescribeDetailVo.class); basicSkPrescribeDetailVo.setItems(list); basicSkPrescribeDetailVo.setSicker(BeanUtil.copyProperties(sicker, BasicSkSickerResponse.class)); return ResultVOUtils.success(basicSkPrescribeDetailVo); } @CusRedissonAnnotation(cacheName = RedissonCacheKey.DL_SICKER_PRECRIBE, key = {"#getSickPrescribeRequest.sickCode"}, waitTime = 3, timeOutMsg = "后台正在下载,请勿重复提交") @PostMapping("/udiwms/basic/sk/prescribe/download") public BaseResponse sickerPrescribeDl(@RequestBody GetSickPrescribeRequest getSickPrescribeRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } ThreadUtil.execAsync(() -> { basicSkPrescribeService.downloadSickerPrescribe(getSickPrescribeRequest); }); return ResultVOUtils.success("后台已开始下载,请稍后刷新查看!"); } }