package com.ltkj.web.controller.his; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; 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.common.core.domain.AjaxResult; import com.ltkj.common.utils.SecurityUtils; import com.ltkj.hosp.domain.*; import com.ltkj.hosp.hisDto.*; import com.ltkj.hosp.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /* @Authot:zjh * @Date: 2024-05-30 * */ @Component public class HisApiMethod { @Autowired private HisApiMethodService controller; @Resource private ITjOrderService orderService; @Autowired private ITjCustomerService customerService; @Resource private ITjOrderDetailService detailService; @Resource private ITjProjectService projectService; @Resource private ITbTransitionService tbTransitionService; @Autowired private HisApiConfigService hisApiConfigService; @Autowired private HisApiGetMethodService hisApiGetMethodService; //将方法返回值解析成json格式 public JSONObject getJSONObject(String builder) { String Response = JSONUtil.parseObj(builder).getStr("Response"); return JSONUtil.parseObj(Response); } //获取方法返回值信息 public String getAjaxResult(AjaxResult result) { return result.get("data").toString(); } //对接his总接口 注册挂号接诊申请单操作 @Transactional public void HisApiMethods(TjCustomer customer, Long orderId) { // HisApiGetMethodService hisApiGetMethodService = new HisApiGetMethodService(); Date dates = new Date(); final String date = DateUtil.format(dates, "yyyy-MM-dd HH:mm:ss"); AjaxResult result = controller.Outpincreateapply(customer); String result1 = getAjaxResult(result); JSONObject object = getJSONObject(result1); String code = object.getStr("ResultCode"); if (code.equals("0")) { JSONArray resultDatass = object.getJSONArray("ResultData"); Map resultData = (Map) resultDatass.get(0); if (null != resultData && resultData.size() > 0) { String pationid = resultData.get("PationId").toString(); if (null != pationid) { customer.setPationId(pationid); customerService.updateById(customer); // OutpinregapplyDto outpinregapplyDto = new OutpinregapplyDto(); // outpinregapplyDto.setPationid(pationid); //// outpinregapplyDto.setHisRegistrationId(pationid); // outpinregapplyDto.setSqysbm(SecurityUtils.getUsername()); // outpinregapplyDto.setMzksbm("0101"); // outpinregapplyDto.setCzybm("00029"); // outpinregapplyDto.setSfjz("0"); // outpinregapplyDto.setGhzlbm("01"); // outpinregapplyDto.setYwckbm("0001"); // outpinregapplyDto.setSflstd("0"); // outpinregapplyDto.setGhrq(date); // //门诊挂号 // AjaxResult ajaxResult = controller.Outpinregapply(outpinregapplyDto); // String result2 = getAjaxResult(ajaxResult); // JSONObject object1 = getJSONObject(result2); // String code1 = object1.getStr("ResultCode"); // if (code1.equals("0")) { // JSONArray resultDatas = object1.getJSONArray("ResultData"); // if (null != resultDatas && resultDatas.size() > 0) { // Map resultDatasss = (Map) resultDatas.get(0); // String hisRegistrationId = resultDatasss.get("his_registration_id").toString(); // if (null != hisRegistrationId) { // //门诊医生接诊 // AjaxResult result3 = controller.Outpinconapply(hisRegistrationId, date, SecurityUtils.getUsername()); // String result4 = getAjaxResult(result3); // JSONObject object2 = getJSONObject(result4); // String code2 = object2.getStr("ResultCode"); // if (code2.equals("0")) { // Map data = object2.getJSONObject("ResultData"); // String toString = data.get("his_registration_id").toString(); // if (null != toString) { //检验申请 OutpintestapplyDto dto = new OutpintestapplyDto(); dto.setHisRegistrationId(customer.getCardId()); dto.setSfjz(customer.getCusIdcard()); dto.setSqysbm(SecurityUtils.getUsername()); dto.setMzksbm("0101"); dto.setSjrq(date); dto.setCzybm("00029"); dto.setCzyksbm("0101"); dto.setSfjz("1"); List detailList = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(), customer.getCardId()); List detailsDtos = new ArrayList<>(); if (null != detailList && detailList.size() > 0) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList())); wq.groupBy(TjProject::getHisXmbm); wq.in(TjProject::getDeptId, "241"); List projects = projectService.list(wq); if (null != projects && projects.size() > 0) { for (TjProject project : projects) { OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto(); if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) { if (null != project.getHisXmbm()) { detailsDto.setMxfyxmbm(project.getHisXmbm()); // if(project.getHisXmbm().toLowerCase().contains("z".toLowerCase())){ detailsDto.setSfzhfy("1"); // }else { // detailsDto.setSfzhfy("0"); // } } else { detailsDto.setMxfyxmbm(""); detailsDto.setSfzhfy("0"); } detailsDto.setSfzhfy("1"); detailsDto.setSl(1); detailsDtos.add(detailsDto); } } } } dto.setDetails(detailsDtos); AjaxResult ajaxResult1 = controller.Outpintestapply(dto); String result5 = getAjaxResult(ajaxResult1); JSONObject object3 = getJSONObject(result5); String code3 = object3.getStr("ResultCode"); if (code3.equals("0")) { Map datas = object3.getJSONObject("ResultData"); datas.put("cardId", customer.getCardId()); JSONObject object4 = JSONUtil.parseObj(datas); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, "Outpintestapply"); HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper); hisApiGetMethodService.save(object4, "Outpintestapply",hisApiConfig); } //门诊检查申请 OutpinexamapplyDto outpinexamapplyDto = new OutpinexamapplyDto(); outpinexamapplyDto.setHisRegistrationId(customer.getCardId()); outpinexamapplyDto.setSfzh(customer.getCusIdcard()); outpinexamapplyDto.setSqysbm(SecurityUtils.getUsername()); outpinexamapplyDto.setMzksbm("0101"); outpinexamapplyDto.setCzybm("00029"); outpinexamapplyDto.setCzyksbm("0101"); List detailLists = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(), customer.getCardId()); List detailsDtoss = new ArrayList<>(); if (null != detailLists && detailLists.size() > 0) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.in(TjProject::getProId, detailLists.stream().map(TbTransition::getParentProId).collect(Collectors.toList())); wq.groupBy(TjProject::getHisXmbm); wq.in(TjProject::getDeptId, "247", "248", "249", "250", "251", "252", "271", "273", "274", "275"); List projects = projectService.list(wq); if (null != projects && projects.size() > 0) { for (TjProject project : projects) { OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto(); if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) { if (null != project.getHisXmbm()) { detailsDto.setMxfyxmbm(project.getHisXmbm()); // if(project.getHisXmbm().toLowerCase().contains("z".toLowerCase())){ detailsDto.setSfzhfy("1"); // }else { // detailsDto.setSfzhfy("0"); // } } else { detailsDto.setMxfyxmbm(""); detailsDto.setSfzhfy("0"); } detailsDto.setSl(1); detailsDtoss.add(detailsDto); } } } } outpinexamapplyDto.setDetails(detailsDtoss); AjaxResult ajaxResult2 = controller.Outpinexamapply(outpinexamapplyDto); String result6 = getAjaxResult(ajaxResult2); JSONObject object5 = getJSONObject(result6); String code4 = object5.getStr("ResultCode"); if (code4.equals("0")) { Map map = object5.getJSONObject("ResultData"); map.put("cardId", customer.getCardId()); JSONObject jsonObject = JSONUtil.parseObj(map); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, "Outpinexamapply"); HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper); hisApiGetMethodService.save(jsonObject, "Outpinexamapply",hisApiConfig); } //门诊治疗处置申请 OutpintreatapplyDto dao = new OutpintreatapplyDto(); dao.setHisRegistrationId(customer.getCardId()); dao.setSfzh(customer.getCusIdcard()); dao.setSqysbm(SecurityUtils.getUsername()); dao.setMzksbm("0101"); dao.setSjrq(date); dao.setCzybm("00029"); dao.setCzyksbm("0101"); List details = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(), customer.getCardId()); List detailDtos = new ArrayList<>(); if (null != details && details.size() > 0) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.in(TjProject::getProId, details.stream().map(TbTransition::getParentProId).collect(Collectors.toList())); wq.groupBy(TjProject::getHisXmbm); wq.in(TjProject::getDeptId, "100", "240", "253", "254", "255", "257", "258", "259", "269", "270"); List projects = projectService.list(wq); if (null != projects && projects.size() > 0) { for (TjProject project : projects) { OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto(); if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) { if (null != project.getHisXmbm()) { detailsDto.setMxfyxmbm(project.getHisXmbm()); if(project.getHisXmbm().toLowerCase().contains("z".toLowerCase())){ detailsDto.setSfzhfy("1"); }else { detailsDto.setSfzhfy("0"); } } else { detailsDto.setMxfyxmbm(""); detailsDto.setSfzhfy("0"); } detailsDto.setSl(1); detailDtos.add(detailsDto); } } } } dao.setDetails(detailDtos); AjaxResult mzylyzsq1 = controller.Outpintreatapply(dao); String mzylyzsq2 = getAjaxResult(mzylyzsq1); JSONObject mzylyzsq3 = getJSONObject(mzylyzsq2); String code5 = mzylyzsq3.getStr("ResultCode"); if (code5.equals("0")) { Map map = mzylyzsq3.getJSONObject("ResultData"); map.put("cardId", customer.getCardId()); JSONObject jsonObject = JSONUtil.parseObj(map); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, "Outpinmedapply"); HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper); hisApiGetMethodService.save(jsonObject, "Outpinmedapply",hisApiConfig); } // } } } } // } } // } //} // } // } //退费后取消接诊作废申请单等操作 @Transactional public void ZfHisApiMethods(TjCustomer customer, TjOrder order) { Date dates = new Date(); final String date = DateUtil.format(dates, "yyyy-MM-dd HH:mm:ss"); String jcsqdh = orderService.getHuoQuJcsqdh(order.getCardId()); String jysqdh = orderService.getHuoQuJysqdh(order.getCardId()); String zlsqdh = orderService.getHuoQuZlsqdh(order.getCardId()); //作废门诊检查申请 AjaxResult result = controller.Outpindelexamapply(order.getCardId(), "00029", jcsqdh); String result1 = getAjaxResult(result); JSONObject object = getJSONObject(result1); String code = object.getStr("ResultCode"); if (code.equals("0")) { orderService.delHuoQuJcsqdh(order.getCardId()); } //作废门诊申请 AjaxResult ajaxResult = controller.Outpindeltestapply(order.getCardId(), "00029", jysqdh); String result2 = getAjaxResult(ajaxResult); JSONObject object1 = getJSONObject(result2); String code1 = object1.getStr("ResultCode"); if (code1.equals("0")) { orderService.delHuoQuJysqdh(order.getCardId()); } controller.Outpinunconapply(order.getCardId(), date, "00029"); controller.Outpindelmedapply(order.getCardId(), "00029", zlsqdh); } //获取门诊结算记录 @Transactional public void getHisMzJsJl(TjOrder order) { Date dates = new Date(); final String date = DateUtil.format(dates, "yyyy-MM-dd HH:mm:ss"); } }