package com.ltkj.web.controller.api;
|
|
import cn.hutool.core.util.StrUtil;
|
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.itextpdf.text.Element;
|
import com.itextpdf.text.Paragraph;
|
import com.ltkj.common.core.domain.AjaxResult;
|
import com.ltkj.hosp.domain.TjCustomer;
|
import com.ltkj.hosp.domain.TjOrder;
|
import com.ltkj.hosp.domain.TjOrderYcxm;
|
import com.ltkj.hosp.mapper.TjCustomerMapper;
|
import com.ltkj.hosp.service.ITjOrderDetailService;
|
import com.ltkj.hosp.service.ITjOrderService;
|
import com.ltkj.hosp.service.TjOrderYcxmService;
|
import com.ltkj.hosp.vodomain.ShenGaoTiZhongVo;
|
import com.ltkj.system.service.ISysConfigService;
|
import com.ltkj.web.config.pdfutils.PdfUtils;
|
import com.ltkj.web.controller.system.TjCheckController;
|
import com.ltkj.web.controller.system.TjReportController;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.File;
|
import java.io.IOException;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
import static com.ltkj.framework.datasource.DynamicDataSourceContextHolder.log;
|
|
/**
|
* @Company: 西安路泰科技有限公司
|
* @Author: zhaowenxuan
|
* @Date: 2025/2/18 10:59
|
*/
|
@RequestMapping("/api")
|
@RestController
|
public class DefaultController {
|
|
@Autowired
|
private TjReportController tjReportController;
|
@Autowired
|
private TjCheckController tjCheckController;
|
@Autowired
|
private TjCustomerMapper tjCustomerMapper;
|
@Autowired
|
private ITjOrderService tjOrderService;
|
@Autowired
|
private ITjOrderDetailService detailService;
|
@Autowired
|
private ISysConfigService sysConfigService;
|
@Autowired
|
private TjOrderYcxmService tjOrderYcxmService;
|
|
/**
|
* 提供给三方调用的报告查看接口
|
* @param response
|
* @param json
|
*/
|
@PostMapping("/viewReport")
|
public void viewReport(HttpServletResponse response, @RequestBody String json) throws IOException {
|
JSONObject entries = JSONUtil.parseObj(json);
|
String tjNum = entries.getStr("tjNum");
|
LambdaQueryWrapper<TjOrder> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(TjOrder::getHeshouStatus,1);
|
wrapper.eq(TjOrder::getTjNumber,tjNum);
|
List<TjOrder> list = tjOrderService.list(wrapper);
|
if (list.isEmpty()){
|
return;
|
}
|
tjReportController.preview(response,true,tjNum);
|
}
|
|
@PostMapping("/viewReportUrl")
|
public AjaxResult viewReportUrl(@RequestBody String json){
|
JSONObject entries = JSONUtil.parseObj(json);
|
String tjNum = entries.getStr("tjNum");
|
LambdaQueryWrapper<TjOrder> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(TjOrder::getHeshouStatus,1);
|
wrapper.eq(TjOrder::getTjNumber,tjNum);
|
List<TjOrder> list = tjOrderService.list(wrapper);
|
if (list.isEmpty()){
|
return AjaxResult.error();
|
}
|
TjOrder tjOrder = tjOrderService.getOrderByTjNum(tjNum);
|
TjCustomer tjCustomer = tjCustomerMapper.selectById( tjOrder.getUserId());
|
String filePath = tjCustomer.getCusId() + tjNum + tjCustomer.getCusName() + "_报告.pdf";
|
return AjaxResult.success(filePath);
|
}
|
|
/**
|
* 提供给三方调用的报告数据接口
|
* @param json
|
* @return
|
*/
|
@PostMapping("/reportData")
|
public AjaxResult reportData(@RequestBody String json){
|
String tjNum = JSONUtil.parseObj(json).getStr("tjNum");
|
LambdaQueryWrapper<TjOrder> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(TjOrder::getHeshouStatus,1);
|
wrapper.eq(TjOrder::getTjNumber,tjNum);
|
List<TjOrder> list = tjOrderService.list(wrapper);
|
if (list.isEmpty()){
|
return AjaxResult.error("暂无数据!!");
|
}
|
JSONObject entries = JSONUtil.parseObj(tjCheckController.updateCheckType(tjNum));
|
|
LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjOrderYcxm::getTjh, tjNum);
|
List<TjOrderYcxm> ycxms = tjOrderYcxmService.list(wq);
|
Map<String, List<TjOrderYcxm>> stringListMap = ycxms.stream().collect(Collectors.groupingBy(TjOrderYcxm::getParentName));
|
int xmXh = 1;
|
JSONArray jczs = JSONUtil.createArray();
|
for (Map.Entry<String, List<TjOrderYcxm>> entry : stringListMap.entrySet()) {
|
List<TjOrderYcxm> details = entry.getValue();
|
String xmmc = entry.getKey();
|
boolean isXmWrite = false;
|
int index = 1;
|
JSONObject object = JSONUtil.createObj();
|
for (TjOrderYcxm detail : details) {
|
if (!isXmWrite) {
|
object.putOpt("xh",xmXh);
|
object.putOpt("xmmc",xmmc);
|
xmXh++;
|
}
|
String result = detail.getJcjg();
|
if (StrUtil.isNotBlank(result)) {
|
result = result.replaceAll("本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查", "");
|
StringBuilder builder = new StringBuilder();
|
if (StrUtil.isBlank(result.replaceAll("\n", "").trim())) continue;
|
builder.append(" (").append(index).append(")").append(detail.getJcxm()).append(": ").append(result).append("\n");
|
index++;
|
result = builder.toString();
|
}
|
object.putOpt("result",result);
|
}
|
jczs.add(object);
|
}
|
entries.putOpt("jczs",jczs);
|
|
xmXh = 1;
|
JSONArray ysjy = JSONUtil.createArray();
|
for (Map.Entry<String, List<TjOrderYcxm>> entry : stringListMap.entrySet()) {
|
List<TjOrderYcxm> details = entry.getValue();
|
if(null !=details && !details.isEmpty()){
|
details= details.stream()
|
.sorted(Comparator.comparing(TjOrderYcxm::getJcxm))
|
.collect(Collectors.toList());
|
boolean isXmWrite = false;
|
int index1 = 1;
|
for (TjOrderYcxm detail : details) {
|
JSONObject obj = JSONUtil.createObj();
|
String xmmc = entry.getKey().toString();
|
if (!isXmWrite) {
|
isXmWrite = true;
|
obj.putOpt("xh",xmXh);
|
obj.putOpt("xmmc",xmmc);
|
xmXh++;
|
}
|
String result = detail.getJcjg();
|
if (StrUtil.isNotBlank(result)) {
|
StringBuilder builder = new StringBuilder();
|
if (StrUtil.isBlank(result.replaceAll("\n", "").trim())) continue;
|
builder.append(" (").append(index1).append(")").append(detail.getJcxm()).append(": ").append(result).append("\n");
|
index1++;
|
result = builder.toString();
|
}
|
if (StrUtil.isNotBlank(result)) {
|
obj.putOpt("result",result);
|
} else {
|
obj.putOpt("result","建议定期复查");
|
}
|
String str = " ";
|
List<Map<String, Object>> maps = new ArrayList<>();
|
|
String jynr = detail.getJynr();
|
JSONArray array = JSONUtil.parseArray(jynr);
|
for (Object object : array) {
|
Map<String,Object> objectMap=new HashMap<>();
|
JSONObject jsonObject = (JSONObject) object;
|
String bt = jsonObject.getStr("bt");
|
String nr = jsonObject.getStr("nr");
|
objectMap.put("bt",bt);
|
objectMap.put("nr",nr);
|
if(null !=bt || null !=nr) maps.add(objectMap);
|
}
|
ArrayList<String> strings = new ArrayList<>();
|
List<Map<String, Object>> collect1 = maps.stream().distinct().collect(Collectors.toList());
|
for (Map<String, Object> objectMap : collect1) {
|
String content = str + objectMap.get("bt").toString() + objectMap.get("nr").toString();
|
if (StrUtil.isBlank(content)) content = " ";
|
strings.add(content);
|
}
|
obj.putOpt("contents",strings);
|
ysjy.add(obj);
|
}
|
}
|
}
|
|
entries.putOpt("ysjy",ysjy);
|
|
removeNullFields(entries);
|
return JSONUtil.toBean(entries, AjaxResult.class);
|
}
|
|
/**
|
* 对于HIS提供
|
* 根据身份证号查询返回体检记录:包含姓名、身份证号、性别、出生日期、年龄、体检号、联系电话,体检日期,报告状态
|
* @param json
|
* @return
|
*/
|
@PostMapping("/getInfo")
|
public AjaxResult getInfo(@RequestBody String json){
|
JSONObject entries = JSONUtil.parseObj(json);
|
String card = entries.getStr("card");
|
// TjCustomer customer = tjCustomerMapper.getCusInfo(card);
|
String key = sysConfigService.selectConfigByKey("h5OrXcxQueryDate");
|
if (StrUtil.isBlank(key)){
|
key = "2025-05-01";
|
}
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
try {
|
Date date = sdf.parse(key);
|
List<Map<String ,Object>> customer = tjCustomerMapper.getCusInfoList(card,date);
|
return AjaxResult.success(customer);
|
} catch (ParseException e) {
|
return AjaxResult.error();
|
}
|
}
|
|
/**
|
* 对于小程序提供
|
* 根据身份证号查询返回体检记录:包含姓名、身份证号、性别、出生日期、年龄、体检号、联系电话,体检日期,报告状态
|
* @param json
|
* @return
|
*/
|
@PostMapping("/getCusInfo")
|
public AjaxResult getInfoCus(@RequestBody String json){
|
JSONObject entries = JSONUtil.parseObj(json);
|
String card = entries.getStr("card");
|
String name = entries.getStr("name");
|
if (StrUtil.isBlank(name)){
|
LambdaQueryWrapper<TjCustomer> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(TjCustomer::getCusIdcard,card);
|
wrapper.orderByDesc(TjCustomer::getCusId);
|
wrapper.last("LIMIT 1");
|
TjCustomer customer = tjCustomerMapper.selectOne(wrapper);
|
if (customer == null) return AjaxResult.error();
|
name = customer.getCusName();
|
}
|
List<Map<String ,Object>> customer = tjCustomerMapper.getCusInfoListByCardAndName(card,name);
|
return AjaxResult.success(customer);
|
}
|
|
public static void removeNullFields(JSONObject jsonObject) {
|
ArrayList<String> strings = new ArrayList<>();
|
strings.add("orderId");
|
strings.add("updateTime");
|
strings.add("orderDetailId");
|
strings.add("flowingWaterId");
|
strings.add("createBy");
|
strings.add("deleted");
|
strings.add("createTime");
|
strings.add("updateBy");
|
strings.add("createId");
|
strings.add("prosId");
|
strings.add("params");
|
|
List<String> keysToRemove = new ArrayList<>();
|
jsonObject.forEach((key, value) -> {
|
if (strings.contains(key)) {
|
keysToRemove.add(key);
|
} else if (value == null) {
|
keysToRemove.add(key);
|
} else if (value instanceof JSONObject) {
|
removeNullFields((JSONObject) value);
|
} else if (value instanceof JSONArray) {
|
JSONArray jsonArray = (JSONArray) value;
|
for (Object arrayItem : jsonArray) {
|
if (arrayItem instanceof JSONObject) {
|
removeNullFields((JSONObject) arrayItem);
|
}
|
}
|
}
|
});
|
for (String key : keysToRemove) {
|
jsonObject.remove(key);
|
}
|
}
|
|
|
|
/**
|
* 小程序点击体检报告查询详情,显示身高体重体重指数收缩压舒张压
|
*/
|
@GetMapping("/getShenGaoTiZhong")
|
@ApiOperation(value = "小程序-体检报告查询详情")
|
public AjaxResult getShenGaoTiZhong(@RequestParam @ApiParam(value = "体检号") String tjNumber) {
|
// Map<String, Object> objectMap = new HashMap<>();
|
LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
|
wq1.eq(TjOrder::getTjNumber, tjNumber);
|
wq1.eq(TjOrder::getCheckStatus, 1);
|
TjOrder one = tjOrderService.getOne(wq1);
|
if (one == null) {
|
return AjaxResult.success("体检暂未完成!!");
|
}
|
|
List<ShenGaoTiZhongVo> maps = detailService.getShenGaoTiZhongList(one.getTjNumber());
|
|
log.info("ltkj {}的体检报告查询详情"+maps,tjNumber);
|
return AjaxResult.success(maps);
|
|
}
|
|
}
|