package com.ltkj.web.controller.system; 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.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.ltkj.common.core.domain.AjaxResult; import com.ltkj.hosp.domain.*; import com.ltkj.hosp.mapper.TjProjectMapper; import com.ltkj.hosp.service.ITbTransitionService; import com.ltkj.hosp.service.ITjCustomerService; import com.ltkj.hosp.service.ITjOrderService; import com.ltkj.hosp.service.ITjSamplingService; import com.ltkj.system.mapper.SysConfigMapper; import com.ltkj.system.service.ISysConfigService; import com.ltkj.web.controller.lis.LisApiMethod; import com.ltkj.web.wxUtils.HttpClientUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Slf4j @Service public class SamplingServiceApi { @Autowired private ITjSamplingService tjSamplingService; @Autowired private ITjOrderService orderService; @Autowired private ITjCustomerService customerService; @Autowired private LisApiMethod lisApiMethod; @Autowired private SysConfigMapper sysConfigMapper; @Autowired private ISysConfigService sysConfigService; @Autowired private TjProjectMapper tjProjectMapper; @Autowired private ITjCustomerService tjCustomerService; @Autowired private ITbTransitionService tbTransitionService; /** * 确认采样接口 */ public Boolean confirmSamplingApi(List ids, String sfkqdyhis, String mergeRequest) { AjaxResult confirm = confirm(ids, sfkqdyhis, mergeRequest); log.info("确认采样返回 ->{}",confirm); return confirm.get("code").toString().equals("200"); } public AjaxResult confirm(List ids,String config,String mergeRequest) { // sfkqdshitulianjie if (null == ids || ids.isEmpty()) { return AjaxResult.error("请选择要确认项"); } List tjSamplings = tjSamplingService.listByIds(ids); if (tjSamplings.isEmpty()) return AjaxResult.error("请选择要确认项"); String errorMsg = ""; for (TjSampling sampling : tjSamplings) { if (!sysConfigService.selectConfigByKey("sfkqdshitulianjie").toLowerCase().equals("y")) { if (sampling.getJyxmdm() == null) errorMsg+=sampling.getProName()+"在lis系统未找到对应编码无法发出申请"; } sampling.setIsSignFor("0"); // LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); // wq.eq(TjProject::getProParentId, sampling.getProId()); // List projectList = projectService.list(wq); // List collect = new ArrayList<>(); // for (TjProject project : projectList) { // Long proId = project.getProId(); // collect.add(String.valueOf(proId)); // } // LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); // wq1.eq(TjSampling::getTjNum, sampling.getTjNum()); // wq1.in(TjSampling::getProId, collect); // List samplingList = tjSamplingService.list(wq1); // if (null != samplingList && samplingList.size() > 0) { // for (TjSampling tjSampling : samplingList) { // tjSampling.setIsSignFor("0"); // tjSamplingService.updateById(tjSampling); // } // } TjOrder tjOrder = orderService.getOrderByTjNum(sampling.getTjNum()); if(null==tjOrder) return AjaxResult.error("体检记录不存在"); TjCustomer tjCustomer = customerService.getById(tjOrder.getUserId()); boolean updChild; Boolean save; String is_request_common_his_api = sysConfigService.selectConfigByKey("is_request_common_his_api"); if (null != config && config.equals("Y") && !mergeRequest.equals("Y")) { save = lisApiMethod.save(sampling, tjOrder, tjCustomer); } else if (is_request_common_his_api.equals("Y")){ // String apiUrl = sysConfigService.selectConfigByKey("common_api_url"); // String hospbm = sysConfigService.selectConfigByKey("common_api_service_hospbm"); // save = sendLis(sampling,tjOrder,apiUrl,hospbm); save = true; }else { save = true; } if (save) { if (sampling.getIsMerge() == 1) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TjSampling::getParentId, sampling.getId()); List list = tjSamplingService.list(wrapper); for (TjSampling tjSampling : list) { tjSampling.setIsSignFor("1"); } updChild = tjSamplingService.updateBatchById(list); } else { updChild = true; } if (!tjSamplingService.updateById(sampling) && !updChild) { // lisApiMethod.cancel(sampling.getJyxh(), tjOrder.getCardId(), PinyinUtil.getFirstLetter(tjCustomer.getCusName(), "")); // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error("操作失败请重试"); } } else { return AjaxResult.error("操作失败请重试"); } } if (StrUtil.isNotBlank(errorMsg)) return AjaxResult.error(errorMsg); return AjaxResult.success("操作成功"); } /** * 采样管理 确认采码按钮调用 * @param ids * @param config * @param mergeRequest * @return */ public AjaxResult confirmApi(List ids,String config,String mergeRequest) { // sfkqdshitulianjie if (null == ids || ids.isEmpty()) { return AjaxResult.error("请选择要确认项"); } List tjSamplings = tjSamplingService.listByIds(ids); if (tjSamplings.isEmpty()) return AjaxResult.error("请选择要确认项"); String errorMsg = ""; for (TjSampling sampling : tjSamplings) { if (!sysConfigService.selectConfigByKey("sfkqdshitulianjie").toLowerCase().equals("y")) { if (sampling.getJyxmdm() == null) errorMsg+=sampling.getProName()+"在lis系统未找到对应编码无法发出申请"; } sampling.setIsSignFor("0"); // LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); // wq.eq(TjProject::getProParentId, sampling.getProId()); // List projectList = projectService.list(wq); // List collect = new ArrayList<>(); // for (TjProject project : projectList) { // Long proId = project.getProId(); // collect.add(String.valueOf(proId)); // } // LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); // wq1.eq(TjSampling::getTjNum, sampling.getTjNum()); // wq1.in(TjSampling::getProId, collect); // List samplingList = tjSamplingService.list(wq1); // if (null != samplingList && samplingList.size() > 0) { // for (TjSampling tjSampling : samplingList) { // tjSampling.setIsSignFor("0"); // tjSamplingService.updateById(tjSampling); // } // } TjOrder tjOrder = orderService.getOrderByTjNum(sampling.getTjNum()); if(null==tjOrder) return AjaxResult.error("体检记录不存在"); TjCustomer tjCustomer = customerService.getById(tjOrder.getUserId()); boolean updChild; Boolean save; // String is_request_common_his_api = sysConfigService.selectConfigByKey("is_request_common_his_api"); // if (null != config && config.equals("Y") && !mergeRequest.equals("Y")) { // save = lisApiMethod.save(sampling, tjOrder, tjCustomer); // } else if (is_request_common_his_api.equals("Y")){ //// String apiUrl = sysConfigService.selectConfigByKey("common_api_url"); //// String hospbm = sysConfigService.selectConfigByKey("common_api_service_hospbm"); //// save = sendLis(sampling,tjOrder,apiUrl,hospbm); // save = true; // }else { // save = true; // } save = true; if (save) { if (sampling.getIsMerge() == 1) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TjSampling::getParentId, sampling.getId()); List list = tjSamplingService.list(wrapper); for (TjSampling tjSampling : list) { tjSampling.setIsSignFor("0"); } updChild = tjSamplingService.updateBatchById(list); } else { updChild = true; } if (!tjSamplingService.updateById(sampling) && !updChild) { // lisApiMethod.cancel(sampling.getJyxh(), tjOrder.getCardId(), PinyinUtil.getFirstLetter(tjCustomer.getCusName(), "")); // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error("操作失败请重试"); } } else { return AjaxResult.error("操作失败请重试"); } } if (StrUtil.isNotBlank(errorMsg)) return AjaxResult.error(errorMsg); return AjaxResult.success("操作成功"); } private void sendLisSqd(Long orderId, String jxbz) { String apiUrl = sysConfigService.selectConfigByKey("common_api_url"); String hospbm = sysConfigService.selectConfigByKey("common_api_service_hospbm"); TjOrder order = orderService.getById(orderId); if (StrUtil.isNotBlank(jxbz)){ LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); wrapper1.eq(TjSampling::getTjNum,order.getTjNumber()); wrapper1.eq(TjSampling::getJxbz,jxbz); getLisMxList(wrapper1, order,apiUrl,hospbm); }else { LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); wrapper1.eq(TjSampling::getTjNum,order.getTjNumber()); wrapper1.isNull(TjSampling::getJxbz); getLisMxList(wrapper1, order,apiUrl,hospbm); } } private void getLisMxList(LambdaQueryWrapper wrapper1, TjOrder order,String apiUrl,String hospbm) { List samplings = tjSamplingService.list(wrapper1); if (!samplings.isEmpty()){ List mergeList = samplings.stream().filter(i -> i.getIsMerge() == 1).collect(Collectors.toList()); List notMergeList = samplings.stream().filter(i -> i.getIsMerge() == 0).collect(Collectors.toList()); if (!mergeList.isEmpty()){ notMergeList = sendLis(order, apiUrl, hospbm, mergeList, notMergeList); } if (!notMergeList.isEmpty()){ sendLis(order,apiUrl,hospbm,notMergeList,notMergeList); } } } private List sendLis(TjOrder order, String apiUrl, String hospbm, List mergeList, List notMergeList) { for (TjSampling sampling : mergeList) { JSONArray xmList = JSONUtil.createArray(); String code = sampling.getSpecimenTypeCode(); String type = sampling.getSpecimenType(); String[] prodIds = sampling.getProId().split(","); for (String prodId : prodIds) { JSONObject entries = JSONUtil.createObj(); String id = notMergeList.stream().filter(i -> i.getProId().equals(prodId)).collect(Collectors.toList()).get(0).getId(); TjProject project = tjProjectMapper.selectById(prodId); entries.putOpt("sfxmid",project.getProId()); entries.putOpt("sfxmname",project.getProName()); // 取tb表 entries.putOpt("sfxmprice",project.getProPrice()); entries.putOpt("quality",project.getSl()); entries.putOpt("specimencode",code); entries.putOpt("specimendesc",type); entries.putOpt("primaryKey",id); xmList.add(entries); notMergeList = notMergeList.stream().filter(i -> !i.getProId().equals(prodId)).collect(Collectors.toList()); } JSONObject entries = JSONUtil.createObj(); TjCustomer customer = tjCustomerService.getById(order.getUserId()); entries.putOpt("patientno",customer.getHisJzkh()); entries.putOpt("gh_patientno", order.getTjNumber()); entries.putOpt("txm",sampling.getJyxh()); entries.putOpt("printno",customer.getHisJzkh()); entries.putOpt("cusName",customer.getCusName()); entries.putOpt("cusBrithday",customer.getCusBrithday()); entries.putOpt("cusIdCard",customer.getCusIdcard()); entries.putOpt("cusSex",customer.getCusSex()); entries.putOpt("cusAddr",customer.getCusAddr()); entries.putOpt("cusPhone",customer.getCusPhone()); entries.putOpt("compName",""); entries.putOpt("mxList",xmList); String post = HttpClientUtils.sendPost(apiUrl + "/api/lis/"+ hospbm +"/create", JSONUtil.toBean(entries, Map.class)); JSONObject result = JSONUtil.parseObj(post); if (result.getStr("code").equals("200")){ List list = Arrays.asList(prodIds); list.add(sampling.getId()); LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.in(TjSampling::getId,list); wrapper.set(TjSampling::getIsApply,1); tjSamplingService.update(wrapper); } } return notMergeList; } private Boolean sendLis(TjSampling sampling,TjOrder order,String apiUrl,String hospbm){ JSONArray xmList = JSONUtil.createArray(); String code = sampling.getSpecimenTypeCode(); String type = sampling.getSpecimenType(); String[] prodIds = sampling.getProId().split(","); for (String prodId : prodIds) { JSONObject entries = JSONUtil.createObj(); TjProject project = tjProjectMapper.selectById(prodId); entries.putOpt("sfxmid",project.getProId()); entries.putOpt("sfxmname",project.getProName()); QueryWrapper wrapper = new QueryWrapper<>(); wrapper .select("sum(now_price) as now_price") .eq("tj_num",order.getTjNumber()) .eq("parent_pro_id",prodId); TbTransition transition = tbTransitionService.getOne(wrapper); entries.putOpt("sfxmprice",transition.getNowPrice()); entries.putOpt("quality",project.getSl()); entries.putOpt("specimencode",code); entries.putOpt("specimendesc",type); entries.putOpt("primaryKey",prodId); xmList.add(entries); } JSONObject entries = JSONUtil.createObj(); TjCustomer customer = tjCustomerService.getById(order.getUserId()); entries.putOpt("patientno",customer.getHisJzkh()); entries.putOpt("gh_patientno", order.getTjNumber()); entries.putOpt("txm",sampling.getJyxh()); entries.putOpt("printno",customer.getHisJzkh()); entries.putOpt("cusName",customer.getCusName()); entries.putOpt("cusBrithday",customer.getCusBrithday()); entries.putOpt("cusIdCard",customer.getCusIdcard()); entries.putOpt("cusSex",customer.getCusSex()); entries.putOpt("cusAddr",customer.getCusAddr()); entries.putOpt("cusPhone",customer.getCusPhone()); entries.putOpt("compName",""); entries.putOpt("mxList",xmList); String post = HttpClientUtils.sendPost(apiUrl + "/api/lis/"+ hospbm +"/create", JSONUtil.toBean(entries, Map.class)); // JSONObject result = JSONUtil.parseObj(post); // if (result.getStr("code").equals("200")){ // List list = Arrays.asList(prodIds); // list.add(sampling.getId()); // LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); // wrapper.in(TjSampling::getId,list); // wrapper.set(TjSampling::getIsApply,1); // tjSamplingService.update(wrapper); // return true; // } // return false; return true; } }