package com.ltkj.web.controller.app; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ltkj.common.core.controller.BaseController; import com.ltkj.common.core.domain.AjaxResult; import com.ltkj.common.core.page.TableDataInfo; import com.ltkj.common.utils.StringUtils; import com.ltkj.framework.config.UserHoder; import com.ltkj.hosp.domain.*; import com.ltkj.hosp.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.annotations.One; import org.openxmlformats.schemas.wordprocessingml.x2006.main.impl.CTJcImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.server.session.InMemoryWebSessionStore; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; /** * @Author: 西安路泰科技有限公司/lige * @Date: 2023/1/10 15:42 */ @RestController @RequestMapping("/cus/getReport") @Api(tags = "小程序查看体检报告") @Slf4j public class ReportController extends BaseController { @Resource private ITjReportService reportService; @Resource private ITjCustomerService customerService; @Autowired private ITjOrderService orderService; @Autowired private ITjOrderDetailService detailService; @Resource private ITjProjectService projectService; @Resource private ITjOrderRemarkService remarkService; @Resource private ITjStandardService standardService; @Resource private ITjAdviceService adviceService; @Resource private IDictCompService compService; @Resource private ITjReportTemplateService reportTemplateService; @Value("${path.filePath}") private String value; /** * 小程序查询体检报告列表 */ @GetMapping("/getReportList") @ApiOperation(value = "小程序-体检报告列表") public AjaxResult getReportList(@RequestParam(required = false) @ApiParam(value = "手机号") String cusPhone) { Wxuser wxuser = UserHoder.getWxuser(); List result = new ArrayList<>(); QueryWrapper wq1 = new QueryWrapper<>(); wq1.eq("cus_phone", wxuser.getPhone()); List list1 = customerService.list(wq1); if (list1.size() != 0) { for (TjCustomer tjCustomer : list1) { Map map = new HashMap<>(); QueryWrapper wq2 = new QueryWrapper<>(); wq2.eq("user_id", tjCustomer.getCusId()); wq2.eq("check_status", 1); wq2.isNotNull("finish_time"); wq2.orderByDesc("finish_time"); List list = orderService.list(wq2); if (null != list && list.size() > 0) { TjOrder tjOrder = orderService.list(wq2).get(0); map.put("report", tjOrder); map.put("customer", tjCustomer); result.add(map); } } return AjaxResult.success(result); } return AjaxResult.error("您还没有体检记录!"); } /** * 小程序查询体检报告列表 */ @GetMapping("/getRelativeReportList") @ApiOperation(value = "小程序-查询亲友最新报告") public AjaxResult getRelativeReportList(@RequestParam @ApiParam(value = "姓名") String cusName, @RequestParam @ApiParam(value = "身份证号") String cusIdcard) { LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjCustomer::getCusName, cusName); wq1.eq(TjCustomer::getCusIdcard, cusIdcard); TjCustomer customer = customerService.getOne(wq1); if (null != customer) { Map map = new HashMap<>(); QueryWrapper wq2 = new QueryWrapper<>(); wq2.eq("user_id", customer.getCusId()); wq2.eq("check_status", 1); wq2.isNotNull("finish_time"); wq2.orderByDesc("finish_time"); List list = orderService.list(wq2); if (null != list && list.size() > 0) { TjOrder tjOrder = orderService.list(wq2).get(0); map.put("report", tjOrder); map.put("customer", customer); return AjaxResult.success(map); } return AjaxResult.success("体检报告暂未生成"); } return AjaxResult.success("暂时没有体检记录!"); } /** * 小程序点击体检报告查询详情 */ @GetMapping("/getReportByTjNumber") @ApiOperation(value = "小程序-体检报告查询详情") public AjaxResult getReportByTjNumber(@RequestParam @ApiParam(value = "体检号") String tjNumber) { Map objectMap = new HashMap<>(); List> list = new ArrayList<>(); LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjOrder::getTjNumber, tjNumber); wq1.eq(TjOrder::getCheckStatus, 1); TjOrder one = orderService.getOne(wq1); if (one == null) { return AjaxResult.success("体检暂未完成!!"); } LambdaQueryWrapper wq22 = new LambdaQueryWrapper<>(); wq22.eq(TjCustomer::getCusId, one.getUserId()); TjCustomer customer = customerService.getOne(wq22); LambdaQueryWrapper wqm = new LambdaQueryWrapper<>(); wqm.eq(TjOrderRemark::getTjNumber, tjNumber); List remarkList = remarkService.list(wqm); List> abnormalList = new ArrayList<>(); if (null != remarkList && remarkList.size() > 0) { for (TjOrderRemark remark : remarkList) { Map parent = new HashMap<>(); Map parent1 = new HashMap<>(); TjProject tjProject = projectService.getById(remark.getProId()); if (null != tjProject) { parent.put("parent", tjProject.getProName()); parent1.put("parent", tjProject.getProName()); } else { parent.put("parent", null); parent1.put("parent", null); } LambdaQueryWrapper wq2 = new LambdaQueryWrapper<>(); wq2.eq(TjProject::getProParentId, remark.getProId()); List sonsTjProjectList = null; if (null != projectService.list(wq2) && projectService.list(wq2).size() > 0) { sonsTjProjectList = projectService.list(wq2).stream().map(TjProject::getProId).collect(Collectors.toList()); } if (sonsTjProjectList == null) { log.info("我报空指针了::::::::::::" + remark.toString()); continue; } LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjOrderDetail::getOrderId, one.getOrderId()); wq.in(TjOrderDetail::getProId, sonsTjProjectList); List tjOrderDetails = detailService.list(wq); if (null != tjOrderDetails && tjOrderDetails.size() > 0) { List abnormals = new ArrayList<>(); for (TjOrderDetail tjOrderDetail : tjOrderDetails) { if (tjOrderDetail.getExceptionDesc() == 1) { abnormals.add(tjOrderDetail); parent1.put("abnormalList", abnormals); abnormalList.add(parent1); } LambdaQueryWrapper wqqqq = new LambdaQueryWrapper<>(); wqqqq.eq(TjProject::getProId, tjOrderDetail.getProId()); tjOrderDetail.setProject(projectService.getOne(wqqqq)); LambdaQueryWrapper wq6 = new LambdaQueryWrapper<>(); wq6.eq(TjStandard::getProId, tjOrderDetail.getProId()); List list2 = standardService.list(wq6); if (list2.size() == 0) { tjOrderDetail.setStandard(null); } else if (list2.size() == 1) { tjOrderDetail.setStandard(list2.get(0)); } else { for (TjStandard tjStandard : list2) { LambdaQueryWrapper wq8 = new LambdaQueryWrapper<>(); if (tjStandard.getTjSex() != null) { wq8.eq(TjStandard::getTjSex, customer.getCusSex()); } if (tjStandard.getTjType() != null) { wq8.eq(TjStandard::getTjType, StringUtils.getAgeType(DateUtil.ageOfNow(customer.getCusBrithday()))); } tjOrderDetail.setStandard(standardService.getOne(wq8)); } } } LambdaQueryWrapper wq3 = new LambdaQueryWrapper<>(); wq3.eq(TjAdvice::getProId, remark.getProId()); parent.put("sons", tjOrderDetails); parent.put("parentAdvice", adviceService.list(wq3)); parent.put("advice", remark.getSummary()); list.add(parent); } else { return AjaxResult.success("该客户在没有体检项目数据"); } } objectMap.put("list", list); objectMap.put("inspectionAdvice", one.getCheckAdvice()); objectMap.put("tjAbnormal", abnormalList); objectMap.put("customter", customer); return AjaxResult.success(objectMap); } return AjaxResult.success("该客户在没有体检项目数据!"); } /** * 小程序点击体检报告查询详情,显示身高体重体重指数收缩压舒张压 */ @GetMapping("/getShenGaoTiZhong") @ApiOperation(value = "小程序-体检报告查询详情") public AjaxResult getShenGaoTiZhong(@RequestParam @ApiParam(value = "体检号") String tjNumber) { Map objectMap = new HashMap<>(); List> list = new ArrayList<>(); LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjOrder::getTjNumber, tjNumber); wq1.eq(TjOrder::getCheckStatus, 1); TjOrder one = orderService.getOne(wq1); if (one == null) { return AjaxResult.success("体检暂未完成!!"); } LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjOrderDetail::getOrderId, one.getOrderId()); wq.in(TjOrderDetail::getProId, "1633660948860522524"); final TjOrderDetail one1 = detailService.getOne(wq); if (one1== null){ objectMap.put("shenggao", "无"); }else { objectMap.put("shenggao", one1.getProResult()); } LambdaQueryWrapper wq2 = new LambdaQueryWrapper<>(); wq2.eq(TjOrderDetail::getOrderId, one.getOrderId()); wq2.in(TjOrderDetail::getProId, "1633660948860522525"); final TjOrderDetail one2 = detailService.getOne(wq2); if (one2==null){ objectMap.put("tizhong", "无"); }else { objectMap.put("tizhong", one2.getProResult()); } LambdaQueryWrapper wq3 = new LambdaQueryWrapper<>(); wq3.eq(TjOrderDetail::getOrderId, one.getOrderId()); wq3.in(TjOrderDetail::getProId, "1633660948860522526"); final TjOrderDetail one3 = detailService.getOne(wq3); if (one3==null){ objectMap.put("tizhongzhishu", "无"); }else { objectMap.put("tizhongzhishu", one3.getProResult()); } LambdaQueryWrapper wq4 = new LambdaQueryWrapper<>(); wq4.eq(TjOrderDetail::getOrderId, one.getOrderId()); wq4.in(TjOrderDetail::getProId, "1633660948860522527"); final TjOrderDetail one4 = detailService.getOne(wq4); if (one4==null){ objectMap.put("shousuoya", "无"); }else { objectMap.put("shousuoya", one4.getProResult()); } LambdaQueryWrapper wq5 = new LambdaQueryWrapper<>(); wq5.eq(TjOrderDetail::getOrderId, one.getOrderId()); wq5.in(TjOrderDetail::getProId, "1633660948860522528"); final TjOrderDetail one5 = detailService.getOne(wq5); if (one5==null){ objectMap.put("shuzhangya","无"); }else { objectMap.put("shuzhangya", one5.getProResult()); } return AjaxResult.success(objectMap); } /** * 小程序点击下载报告 */ @GetMapping("/downloadReport") @ApiOperation(value = "小程序-下载报告") public AjaxResult downloadReport(@RequestParam @ApiParam(value = "体检号") String tjNumber) { Map map = new HashMap<>(); return AjaxResult.success(map); } /** * 小程序查询体检历史报告列表 */ @GetMapping("/getHistryReportList") @ApiOperation(value = "小程序-体检历史报告列表") public AjaxResult getHistryReportList(@RequestParam @ApiParam(value = "手机号") String cusPhone) { List result = new ArrayList<>(); QueryWrapper wq1 = new QueryWrapper<>(); wq1.eq("cus_phone", cusPhone); List list1 = customerService.list(wq1); if (list1.size() != 0) { for (TjCustomer tjCustomer : list1) { Map map = new HashMap<>(); QueryWrapper wq2 = new QueryWrapper<>(); wq2.eq("user_id", tjCustomer.getCusId()); wq2.eq("check_status", 1); wq2.isNotNull("finish_time"); wq2.orderByDesc("finish_time"); List list = orderService.list(wq2); if (null != list && list.size() > 0) { map.put("report", list); map.put("customer", tjCustomer); result.add(map); } } return AjaxResult.success(result); } return AjaxResult.success("您还没有体检记录!"); } }