package com.ltkj.web.controller.system; import java.util.List; import java.util.stream.Collectors; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import cn.hutool.core.bean.BeanUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ltkj.framework.config.MatchUtils; import com.ltkj.hosp.domain.*; import com.ltkj.hosp.service.*; import com.ltkj.web.controller.dto.PutAskMedicalHistoryDto; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.val; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import com.ltkj.common.annotation.Log; import com.ltkj.common.core.controller.BaseController; import com.ltkj.common.core.domain.AjaxResult; import com.ltkj.common.enums.BusinessType; import com.ltkj.common.utils.poi.ExcelUtil; import com.ltkj.common.core.page.TableDataInfo; /** * 问诊Controller * * @author ltkj_赵佳豪&李格 * @date 2023-04-11 */ @RestController @RequestMapping("/hosp/history") @Api(tags = "问诊接口") public class TjAskMedicalHistoryController extends BaseController { @Autowired private ITjAskMedicalHistoryService tjAskMedicalHistoryService; @Autowired private ITjAskHistorysService historysService; @Autowired private ITjCustomerService customerService; @Resource private ITjCustomerService tjCustomerService; @Autowired private ITjAskWorkLogService tjAskWorkLogService; @Autowired private ITjHarmTypeLogService tjHarmTypeLogService; @Autowired private ITjHarmTypeService tjHarmTypeService; @Resource private ITjOrderService tjOrderService; /** * 查询问诊列表 */ @GetMapping("/getZhengZhuang") @ApiOperation(value = "获取症状接口集") public AjaxResult getZhengZhuang() { List zhengZhuang = tjAskMedicalHistoryService.getZhengZhuang(); return AjaxResult.success(zhengZhuang); } /** * 查询问诊列表 */ @GetMapping("/list") public TableDataInfo list(TjAskMedicalHistory tjAskMedicalHistory) { startPage(); List list = tjAskMedicalHistoryService.selectTjAskMedicalHistoryList(tjAskMedicalHistory); return getDataTable(list); } /** * 导出问诊列表 */ @Log(title = "问诊", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, TjAskMedicalHistory tjAskMedicalHistory) { List list = tjAskMedicalHistoryService.selectTjAskMedicalHistoryList(tjAskMedicalHistory); ExcelUtil util = new ExcelUtil(TjAskMedicalHistory.class); util.exportExcel(response, list, "问诊数据"); } /** * 获取问诊详细信息 */ @GetMapping(value = "/{askId}") public AjaxResult getInfo(@PathVariable("askId") Long askId) { return success(tjAskMedicalHistoryService.selectTjAskMedicalHistoryByAskId(askId)); } /** * 根据客户id获取问诊详细信息 */ @GetMapping(value = "/getInfoById") @ApiOperation(value = "根据客户id获取问诊详细信息") public AjaxResult getInfoById(@RequestParam String tjNumber) { if (null != tjNumber && !tjNumber.isEmpty()) { // LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); // wq.eq(TjAskMedicalHistory::getTjNum, tjNumber); // TjAskMedicalHistory one = tjAskMedicalHistoryService.getOne(wq); TjAskMedicalHistory one = tjAskMedicalHistoryService.selectTjAskMedicalHistoryByTjNum(tjNumber); if (one != null) { LambdaQueryWrapper wqq = new LambdaQueryWrapper<>(); wqq.eq(TjAskWorkLog::getTjNumber, tjNumber); final List list = tjAskWorkLogService.list(wqq); one.setWorkLogs(list); for (TjAskWorkLog askWorkLog : list) { LambdaQueryWrapper wqq1 = new LambdaQueryWrapper<>(); wqq1.eq(TjHarmTypeLog::getWorkId, askWorkLog.getId()); final List list1 = tjHarmTypeLogService.list(wqq1); List skuNos = list1.stream() .map(TjHarmTypeLog::getAid) .collect(Collectors.toList()); askWorkLog.setHarmTypeLogs(skuNos); } TjOrder order = tjOrderService.getOrderByTjNum(tjNumber); one.setTjLx(order.getTjCategory()); LambdaQueryWrapper wqq111 = new LambdaQueryWrapper<>(); wqq111.eq(TjAskHistorys::getAskId, one.getAskId()); wqq111.eq(TjAskHistorys::getDataType,1); List list11 = historysService.list(wqq111); one.setTjAskHistorysList(list11); wqq111 = new LambdaQueryWrapper<>(); wqq111.eq(TjAskHistorys::getAskId, one.getAskId()); wqq111.eq(TjAskHistorys::getDataType,2); list11 = historysService.list(wqq111); one.setZhiyezzList(list11); return AjaxResult.success(one); }else { TjAskMedicalHistory a = new TjAskMedicalHistory(); LambdaQueryWrapper wqqq = new LambdaQueryWrapper<>(); wqqq.eq(TjOrder::getTjNumber, tjNumber); final TjOrder order = tjOrderService.getOne(wqqq); a.setCusId(order.getUserId()); a.setTjNum(order.getTjNumber()); a.setTjLx(order.getTjCategory()); TjCustomer customer = customerService.getById(a.getCusId()); if (customer != null) { a.setCusName(customer.getCusName()); a.setCusIdCard(customer.getCusIdcard()); a.setCusSex(String.valueOf(customer.getCusSex())); } return AjaxResult.success(a); } } return AjaxResult.error("查无此人"); } /** * 新增问诊 */ @Transactional @Log(title = "问诊", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody TjAskMedicalHistory tjAskMedicalHistory) { tjAskMedicalHistoryService.insertTjAskMedicalHistory(tjAskMedicalHistory); final List workLogs = tjAskMedicalHistory.getWorkLogs(); if (workLogs != null) { for (TjAskWorkLog workLog : workLogs) { workLog.setCusId(tjAskMedicalHistory.getCusId()); workLog.setCusName(tjAskMedicalHistory.getCusName()); workLog.setTjNumber(tjAskMedicalHistory.getTjNum()); final boolean save = tjAskWorkLogService.save(workLog); if (!save) { return AjaxResult.error(); } List harmTypeLogs = workLog.getHarmTypeLogs(); if (harmTypeLogs != null) { for (String harmTypeLog : harmTypeLogs) { final TjHarmType byId = tjHarmTypeService.getById(harmTypeLog); if (byId != null) { TjHarmTypeLog log = new TjHarmTypeLog(); log.setAid(byId.getAid()); log.setCusId(tjAskMedicalHistory.getCusId()); log.setCusName(tjAskMedicalHistory.getCusName()); log.setTjNumber(tjAskMedicalHistory.getTjNum()); log.setWorkId(workLog.getId()); tjHarmTypeLogService.saveOrUpdate(log); } } } } } return AjaxResult.success(); } /** * pc端修改问诊 */ // @ApiOperation(value = "pc端修改问诊") // @Log(title = "问诊", businessType = BusinessType.UPDATE) // @PutMapping // @Transactional // public AjaxResult edit(@RequestBody TjAskMedicalHistory tjAskMedicalHistory) { // LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); // wq.eq(TjAskWorkLog::getTjNumber, tjAskMedicalHistory.getTjNum()); // tjAskWorkLogService.remove(wq); // LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); // wq1.eq(TjHarmTypeLog::getTjNumber, tjAskMedicalHistory.getTjNum()); // tjHarmTypeLogService.remove(wq1); // // // boolean b = false; // tjAskMedicalHistory.setFromBy("PC端"); // if (tjAskMedicalHistory.getAskId() != null) { // b = tjAskMedicalHistoryService.updateById(tjAskMedicalHistory); // } else { // b = tjAskMedicalHistoryService.save(tjAskMedicalHistory); // } // if (b) { // List tjAskHistorysList = tjAskMedicalHistory.getTjAskHistorysList(); // if (tjAskHistorysList != null && tjAskHistorysList.size() > 0) { // for (TjAskHistorys tjAskHistorys : tjAskMedicalHistory.getTjAskHistorysList()) { // tjAskHistorys.setAskId(tjAskMedicalHistory.getAskId()); // boolean b1 = historysService.saveOrUpdate(tjAskHistorys); // if (!b1) { // return AjaxResult.error(); // } // } // } // // List askWorkLogs = tjAskMedicalHistory.getWorkLogs(); // if (askWorkLogs != null && askWorkLogs.size() > 0) { // for (TjAskWorkLog askWorkLog : askWorkLogs) { // askWorkLog.setCusId(tjAskMedicalHistory.getCusId()); // askWorkLog.setCusName(tjAskMedicalHistory.getCusName()); // askWorkLog.setTjNumber(tjAskMedicalHistory.getTjNum()); // askWorkLog.setAskId(tjAskMedicalHistory.getAskId()); // boolean b1 = tjAskWorkLogService.saveOrUpdate(askWorkLog); // List harmTypeLogs = askWorkLog.getHarmTypeLogs(); // if (harmTypeLogs != null) { // for (String harmTypeLog : harmTypeLogs) { // final TjHarmType byId = tjHarmTypeService.getById(harmTypeLog); // if (byId != null) { // TjHarmTypeLog log = new TjHarmTypeLog(); // log.setAid(byId.getAid()); // log.setCusId(tjAskMedicalHistory.getCusId()); // log.setCusName(tjAskMedicalHistory.getCusName()); // log.setTjNumber(tjAskMedicalHistory.getTjNum()); // log.setWorkId(askWorkLog.getId()); // tjHarmTypeLogService.save(log); // } // } // } // if (!b1) { // return AjaxResult.error(); // } // } // } // return AjaxResult.success(tjAskMedicalHistory); // } // return AjaxResult.error(); // //return toAjax(tjAskMedicalHistoryService.updateTjAskMedicalHistory(tjAskMedicalHistory)); // } /** * pc端修改问诊 */ @ApiOperation(value = "pc端修改问诊") @Log(title = "问诊", businessType = BusinessType.UPDATE) @PutMapping @Transactional public AjaxResult edit(@RequestBody PutAskMedicalHistoryDto askMedicalHistoryDto) { TjAskMedicalHistory tjAskMedicalHistory = new TjAskMedicalHistory(); BeanUtil.copyProperties(askMedicalHistoryDto,tjAskMedicalHistory,true); LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjAskWorkLog::getTjNumber, tjAskMedicalHistory.getTjNum()); tjAskWorkLogService.remove(wq); LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjHarmTypeLog::getTjNumber, tjAskMedicalHistory.getTjNum()); tjHarmTypeLogService.remove(wq1); boolean b = false; tjAskMedicalHistory.setFromBy("PC端"); JSONArray medicalHistory = askMedicalHistoryDto.getMedicalHistory(); String medicalHistoryTxt = medicalHistory.stream().map(item -> { JSONObject entries = (JSONObject) item; return entries.getStr("icdname"); }).collect(Collectors.joining(",")); String medicalHistoryIds = medicalHistory.stream().map(item -> { JSONObject entries = (JSONObject) item; return entries.getStr("id"); }).collect(Collectors.joining(",")); tjAskMedicalHistory.setMedicalHistoryIds(medicalHistoryIds); tjAskMedicalHistory.setMedicalHistory(medicalHistoryTxt); if (tjAskMedicalHistory.getAskId() != null) { b = tjAskMedicalHistoryService.updateById(tjAskMedicalHistory); } else { b = tjAskMedicalHistoryService.save(tjAskMedicalHistory); } if (b) { List tjAskHistorysList = tjAskMedicalHistory.getTjAskHistorysList(); if (tjAskHistorysList != null && !tjAskHistorysList.isEmpty()) { for (TjAskHistorys tjAskHistorys : tjAskMedicalHistory.getTjAskHistorysList()) { tjAskHistorys.setAskId(tjAskMedicalHistory.getAskId()); tjAskHistorys.setDataType(1); boolean b1 = historysService.saveOrUpdate(tjAskHistorys); if (!b1) { return AjaxResult.error(); } } } List zhiyezzList = askMedicalHistoryDto.getZhiyezzList(); if (zhiyezzList != null && !zhiyezzList.isEmpty()) { for (TjAskHistorys tjAskHistorys : zhiyezzList) { tjAskHistorys.setAskId(tjAskMedicalHistory.getAskId()); tjAskHistorys.setDataType(2); boolean b1 = historysService.saveOrUpdate(tjAskHistorys); if (!b1) { return AjaxResult.error(); } } } List askWorkLogs = tjAskMedicalHistory.getWorkLogs(); if (askWorkLogs != null && !askWorkLogs.isEmpty()) { for (TjAskWorkLog askWorkLog : askWorkLogs) { askWorkLog.setCusId(tjAskMedicalHistory.getCusId()); askWorkLog.setCusName(tjAskMedicalHistory.getCusName()); askWorkLog.setTjNumber(tjAskMedicalHistory.getTjNum()); askWorkLog.setAskId(tjAskMedicalHistory.getAskId()); boolean b1 = tjAskWorkLogService.saveOrUpdate(askWorkLog); List harmTypeLogs = askWorkLog.getHarmTypeLogs(); if (harmTypeLogs != null) { for (String harmTypeLog : harmTypeLogs) { final TjHarmType byId = tjHarmTypeService.getById(harmTypeLog); if (byId != null) { TjHarmTypeLog log = new TjHarmTypeLog(); log.setAid(byId.getAid()); log.setCusId(tjAskMedicalHistory.getCusId()); log.setCusName(tjAskMedicalHistory.getCusName()); log.setTjNumber(tjAskMedicalHistory.getTjNum()); log.setWorkId(askWorkLog.getId()); tjHarmTypeLogService.save(log); } } } if (!b1) { return AjaxResult.error(); } } } return AjaxResult.success(tjAskMedicalHistory); } return AjaxResult.error(); } /** * 删除病史或症状 * @param historyId * @return */ @PostMapping("/removeAskHistorys") public AjaxResult removeAskHistorys(@RequestBody List historyId){ return toAjax(historysService.removeByIds(historyId)); } /** * 小程序根据客户身份证号获取问诊详细信息 */ @GetMapping(value = "/appGetInfoById") @ApiOperation(value = "小程序根据体检号获取问诊详细信息") public AjaxResult appGetInfoById(@RequestParam("tjNumber") String tjNumber) { if (null != tjNumber && !"".equals(tjNumber)) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjAskMedicalHistory::getTjNum, tjNumber); TjAskMedicalHistory one = tjAskMedicalHistoryService.getOne(wq); if (one != null) { LambdaQueryWrapper wqq = new LambdaQueryWrapper<>(); wqq.eq(TjAskWorkLog::getTjNumber, tjNumber); final List list = tjAskWorkLogService.list(wqq); one.setWorkLogs(list); for (TjAskWorkLog askWorkLog : list) { LambdaQueryWrapper wqq1 = new LambdaQueryWrapper<>(); wqq1.eq(TjHarmTypeLog::getWorkId, askWorkLog.getId()); final List list1 = tjHarmTypeLogService.list(wqq1); List skuNos = list1.stream() .map(TjHarmTypeLog::getAid) .collect(Collectors.toList()); askWorkLog.setHarmTypeLogs(skuNos); } LambdaQueryWrapper wqq111 = new LambdaQueryWrapper<>(); wqq111.eq(TjAskHistorys::getAskId, one.getAskId()); wqq111.eq(TjAskHistorys::getDataType,1); List list11 = historysService.list(wqq111); one.setTjAskHistorysList(list11); wqq111 = new LambdaQueryWrapper<>(); wqq111.eq(TjAskHistorys::getAskId, one.getAskId()); wqq111.eq(TjAskHistorys::getDataType,2); list11 = historysService.list(wqq111); one.setZhiyezzList(list11); TjOrder order = tjOrderService.getOrderByTjNum(tjNumber); one.setTjLx(order.getTjCategory()); return AjaxResult.success(one); }else { TjAskMedicalHistory a = new TjAskMedicalHistory(); LambdaQueryWrapper wqqq = new LambdaQueryWrapper<>(); wqqq.eq(TjOrder::getTjNumber, tjNumber); final TjOrder one1 = tjOrderService.getOne(wqqq); a.setCusId(one1.getUserId()); TjCustomer byId11 = customerService.getById(a.getCusId()); if (byId11 != null) { a.setCusName(MatchUtils.hideCusName(byId11.getCusName())); } return AjaxResult.success(a); } } return AjaxResult.error("查无此人"); } /** * 小程序修改问诊 */ @ApiOperation(value = "小程序修改问诊") @PostMapping("/appEdit") public AjaxResult appEdit(@RequestBody TjAskMedicalHistory tjAskMedicalHistory) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjAskWorkLog::getTjNumber, tjAskMedicalHistory.getTjNum()); tjAskWorkLogService.remove(wq); LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjHarmTypeLog::getTjNumber, tjAskMedicalHistory.getTjNum()); tjHarmTypeLogService.remove(wq1); boolean b = false; tjAskMedicalHistory.setFromBy("PC端"); if (tjAskMedicalHistory.getAskId() != null) { b = tjAskMedicalHistoryService.updateById(tjAskMedicalHistory); } else { b = tjAskMedicalHistoryService.save(tjAskMedicalHistory); } //boolean b = tjAskMedicalHistoryService.saveOrUpdate(tjAskMedicalHistory); if (b) { List tjAskHistorysList = tjAskMedicalHistory.getTjAskHistorysList(); if (tjAskHistorysList != null && tjAskHistorysList.size() > 0) { for (TjAskHistorys tjAskHistorys : tjAskMedicalHistory.getTjAskHistorysList()) { tjAskHistorys.setAskId(tjAskMedicalHistory.getAskId()); boolean b1 = historysService.saveOrUpdate(tjAskHistorys); if (!b1) { return AjaxResult.error(); } } } List askWorkLogs = tjAskMedicalHistory.getWorkLogs(); if (askWorkLogs != null && askWorkLogs.size() > 0) { for (TjAskWorkLog askWorkLog : askWorkLogs) { askWorkLog.setCusId(tjAskMedicalHistory.getCusId()); askWorkLog.setCusName(tjAskMedicalHistory.getCusName()); askWorkLog.setTjNumber(tjAskMedicalHistory.getTjNum()); askWorkLog.setAskId(tjAskMedicalHistory.getAskId()); boolean b1 = tjAskWorkLogService.saveOrUpdate(askWorkLog); List harmTypeLogs = askWorkLog.getHarmTypeLogs(); if (harmTypeLogs != null) { for (String harmTypeLog : harmTypeLogs) { final TjHarmType byId = tjHarmTypeService.getById(harmTypeLog); if (byId != null) { TjHarmTypeLog log = new TjHarmTypeLog(); log.setAid(byId.getAid()); log.setCusId(tjAskMedicalHistory.getCusId()); log.setCusName(tjAskMedicalHistory.getCusName()); log.setTjNumber(tjAskMedicalHistory.getTjNum()); log.setWorkId(askWorkLog.getId()); tjHarmTypeLogService.saveOrUpdate(log); } } } if (!b1) { return AjaxResult.error(); } } } return AjaxResult.success("修改成功"); } return AjaxResult.error("修改失败"); } /** * 删除问诊 */ @Log(title = "问诊", businessType = BusinessType.DELETE) @DeleteMapping("/{askIds}") public AjaxResult remove(@PathVariable Long[] askIds) { return toAjax(tjAskMedicalHistoryService.deleteTjAskMedicalHistoryByAskIds(askIds)); } }