package com.ltkj.web.controller.system; import cn.hutool.core.codec.Base64; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.pinyin.PinyinUtil; 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.google.common.base.Joiner; import com.ltkj.common.annotation.RepeatSubmit; import com.ltkj.common.core.domain.AjaxResult; import com.ltkj.common.core.domain.entity.SysDept; import com.ltkj.common.core.domain.entity.SysDictData; import com.ltkj.common.core.domain.entity.SysUser; import com.ltkj.common.excelConfig.ExcelUtils; import com.ltkj.common.task.TaskService; import com.ltkj.common.utils.SecurityUtils; import com.ltkj.common.utils.StringUtils; import com.ltkj.framework.config.MatchUtils; import com.ltkj.hosp.domain.*; import com.ltkj.hosp.dto.ConfirmDto; import com.ltkj.hosp.idutil.IdUtils; import com.ltkj.hosp.mapper.TjSamplingMapper; import com.ltkj.hosp.service.*; import com.ltkj.hosp.sqlDomain.LtkjMiddleHead; import com.ltkj.mall.domain.MallCheckLog; import com.ltkj.mall.domain.MallOrder; import com.ltkj.mall.mallOrderUtils.TjConstants; import com.ltkj.mall.service.IMallCheckLogService; import com.ltkj.mall.service.IMallOrderService; import com.ltkj.system.service.ISysConfigService; import com.ltkj.system.service.ISysDeptService; import com.ltkj.system.service.ISysDictDataService; import com.ltkj.system.service.ISysUserService; import com.ltkj.web.config.pdfutils.PDFBinaryUtil; import com.ltkj.web.config.task.TjReservationTask; import com.ltkj.web.controller.his.HisApiMethod; import com.ltkj.web.controller.his.HisApiMethodService; import com.ltkj.web.controller.lis.LisApiMethod; import com.ltkj.web.wxUtils.HttpClientUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import jodd.util.StringUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.NoTransactionException; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.math.BigDecimal; import java.net.URL; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantLock; import java.util.stream.Collectors; /** * @Company: 西安路泰科技有限公司 * @Author: zhaowenxuan * @Date: 2025/5/12 14:37 */ @Slf4j @RestController @RequestMapping("/zhiye/order") @Api(tags = "职业病相关接口") public class ZhiYeController { @Autowired private ISysUserService userService; @Autowired private ITjCustomerService tjCustomerService; @Autowired private ITjReservationService tjReservationService; @Resource private ITjDwGroupingService dwGroupingService; @Resource private ITjGroupingProService groupingProService; @Autowired private IMallOrderService mallOrderService; @Autowired private ITbTransitionService transitionService; @Autowired private ITjOrderService tjOrderService; @Autowired private ISysConfigService configService; @Resource private IDictCompService compService; @Resource private ITjDwDeptService dwDeptService; @Resource private TjAsyncService asyncService; @Resource private ITjCompPayService compPayService; @Resource private ITjTeamSelectRecordService selectRecordService; @Autowired private IdUtils idUtils; @Autowired private ITjReportGetAddressService tjReportGetAddressService; @Autowired private LtkjMiddleHeadService headService; @Autowired private IMallCheckLogService mallCheckLogService; @Autowired private ITjFlowingWaterService tjFlowingWaterService; @Autowired private HisApiMethodService controller; @Autowired private HisApiMethod hisApiMethod; @Autowired private LisApiMethod lisApiMethod; @Autowired private ITjAskMedicalHistoryService tjAskMedicalHistoryService; @Autowired private ITjOrderDetailService tjOrderDetailService; @Autowired private ITjOrderRemarkService remarkService; @Autowired private ITjXdPictureService xdPictureService; @Autowired private ITjSamplingService samplingService; @Autowired private ITjProjectService projectService; @Autowired private ISysDictDataService sysDictDataService; @Autowired private LisJyflhbService lisJyflhbService; @Autowired private TjSamplingMapper tjSamplingMapper; @Autowired private ITbTransitionService tbTransitionService; @Autowired private ISysDeptService sysDeptService; @Autowired private TjFlowingWaterHisService tjFlowingWaterHisService; @Autowired private ISysDictDataService dictDataService; @Autowired private TaskService taskService; ReentrantLock lock = new ReentrantLock(); @PostMapping @ApiOperation(value = "体检签到登记接口") @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) public AjaxResult addOrderAndDetail(@RequestBody TjOrder tjOrder) throws Exception { Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId()); SysUser sysUser = userService.getById(userId); LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjCustomer::getCusId, tjOrder.getUserId()); TjCustomer tjCustomer = tjCustomerService.getOne(wq); if (tjCustomer == null) return AjaxResult.error("该客户未登记"); TjFlowingWater tjFlowingWater = new TjFlowingWater(); LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjReservation::getIdCard, tjCustomer.getCusIdcard()); wq1.eq(TjReservation::getIsExpire, 2); TjReservation tjReservation = tjReservationService.getOne(wq1); MallOrder mallOrder = null; if (null != tjReservation) { tjOrder.setReservationId(tjReservation.getId()); mallOrder = mallOrderService.getOne(new LambdaQueryWrapper().eq(MallOrder::getReservationId, tjReservation.getId())); if (DateUtil.endOfDay(DateUtil.offsetDay(tjReservation.getReservationTime(), tjReservation.getYxts())).before(new Date())) { tjReservation.setIsExpire(1); tjReservationService.updateById(tjReservation); return AjaxResult.error("对不起您的预约已超时请重新预约"); } if (null != tjReservation.getTeamNo()) tjOrder.setTeamNo(tjReservation.getTeamNo()); if (null != tjReservation.getCompanyId()) tjOrder.setFirmId(tjReservation.getCompanyId()); if (null != tjReservation.getCompany()) tjOrder.setFirmName(tjReservation.getCompany()); if (null != tjReservation.getDepartment()) tjOrder.setFirmDeptName(tjReservation.getDepartment()); if (null != tjReservation.getJobNo()) tjOrder.setFirmWorkId(tjReservation.getJobNo()); if (null != tjReservation.getPacId()) tjOrder.setPacId(tjReservation.getPacId()); if (null != tjReservation.getTjCategory()) tjOrder.setTjCategory(tjReservation.getTjCategory()); if (null != tjReservation.getZhiyeJhgln()) tjOrder.setZhiyeJhgln(tjReservation.getZhiyeJhgln()); if (null != tjReservation.getZhiyeJhgly()) tjOrder.setZhiyeJhgly(tjReservation.getZhiyeJhgly()); if (null != tjReservation.getZhiyeKsjhrq()) tjOrder.setZhiyeKsjhrq(tjReservation.getZhiyeKsjhrq()); if (null != tjReservation.getZhiyeGh()) tjOrder.setZhiyeGh(tjReservation.getZhiyeGh()); if (null != tjReservation.getZhiyeGz()) tjOrder.setZhiyeGz(tjReservation.getZhiyeGz()); if (null != tjReservation.getZhiyeZgln()) tjOrder.setZhiyeZgln(tjReservation.getZhiyeZgln()); if (null != tjReservation.getZhiyeZgly()) tjOrder.setZhiyeZgly(tjReservation.getZhiyeZgly()); if (null != tjReservation.getZhiyeJhys()) tjOrder.setZhiyeJhys(tjReservation.getZhiyeJhys()); if (null != tjReservation.getZhiyeRzsj()) tjOrder.setZhiyeRzsj(tjReservation.getZhiyeRzsj()); if (null != tjReservation.getZhiyeScdw()) tjOrder.setZhiyeScdw(tjReservation.getZhiyeScdw()); if (null != tjReservation.getZhiyeZysksrq()) tjOrder.setZhiyeZysksrq(tjReservation.getZhiyeZysksrq()); if (null != tjReservation.getZhiyeZysjsrq()) tjOrder.setZhiyeZysjsrq(tjReservation.getZhiyeZysjsrq()); if (null != tjReservation.getZhiyeZysszdw()) tjOrder.setZhiyeZysszdw(tjReservation.getZhiyeZysszdw()); if (null != tjReservation.getGroupingId()) { TjDwGrouping dwGrouping = dwGroupingService.getById(tjReservation.getGroupingId()); tjOrder.setGroupId(tjReservation.getGroupingId()); tjOrder.setFirmDeptId(dwGrouping.getDwDeptId()); } tjReservation.setIsExpire(1); tjReservationService.updateById(tjReservation); if (null != tjReservation.getTeamNo() && tjOrder.getTjType().equals("1")) { tjOrder.setTjType("1"); } else if (tjOrder.getTjType().equals("2")) { tjOrder.setTjType("2"); } } if (StringUtil.isBlank(tjOrder.getFirmId())) { tjOrder.setFirmId("0"); } if (null != tjOrder.getPhoto()) { File file = new File(tjOrder.getPhoto()); if (file.isFile()) { FileInputStream fileInputStream = new FileInputStream(file); byte[] bytes = new byte[fileInputStream.available()]; fileInputStream.read(bytes); // 读取到 byte 里面 fileInputStream.close(); // 得到文件 之后转成beye 然后使用base64转码 String encode = Base64.encode(bytes); tjOrder.setPhoto(encode); } } if (null == tjOrder.getPacId() && null != transitionService.getTbTransitionPacIdByCusIdAndPac(String.valueOf(tjOrder.getUserId()))) { tjOrder.setPacId(transitionService.getTbTransitionPacIdByCusIdAndPac(String.valueOf(tjOrder.getUserId()))); } //判断小程序上预约是否付钱 if (null != mallOrder) tjOrder.setMallOrderId(String.valueOf(mallOrder.getId())); tjOrder.setStatus(TjConstants.TJ_BEGIN); tjOrder.setCardId(tjCustomer.getCardId()); if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) { tjOrder.setFinishTime(new Date()); tjOrder.setCheckStatus(1); tjOrder.setStatus(TjConstants.TJ_WAIT); // tjFlowingWater.setPayStasus(1L); } tjFlowingWater.setPayStasus(0L); try { boolean b = lock.tryLock(3, TimeUnit.MINUTES); if (b) { AjaxResult result = processOrderWithTransaction(tjOrder, tjCustomer, tjReservation, tjFlowingWater, mallOrder, sysUser); if (!result.get("code").toString().equals("200")) TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); tjOrderService.tjQiandaodengji(tjOrder.getTjNumber()); return result; } }catch (Exception e){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); log.error(String.valueOf(e),e.getMessage()); e.printStackTrace(); } finally { lock.unlock(); } return AjaxResult.error(); } @Transactional(propagation = Propagation.REQUIRED) public AjaxResult processOrderWithTransaction(TjOrder tjOrder, TjCustomer tjCustomer, TjReservation tjReservation, TjFlowingWater tjFlowingWater, MallOrder mallOrder, SysUser sysUser) { //获取拼接前缀 String makeLisTmhPrefix = configService.selectConfigByKey("make_lis_tmh_prefix"); String tjNumber = null; int a =0; while (tjNumber ==null){ if(a>3){ throw new RuntimeException("前方拥挤,请稍等!!!"); } try { String newTjNumberRedisLockAndMysql = idUtils.getNewTjNumberRedisLockAndMysql(); if (StringUtil.isNotBlank(makeLisTmhPrefix)){ String tjh= makeLisTmhPrefix + newTjNumberRedisLockAndMysql; int countByTjNum = tjOrderService.getOrderCountByTjNum(tjh); if(countByTjNum==0){ tjNumber=tjh; } }else { int countByTjNum = tjOrderService.getOrderCountByTjNum(newTjNumberRedisLockAndMysql); if(countByTjNum==0){ tjNumber=newTjNumberRedisLockAndMysql; } } } catch (Exception e) { log.error(e.getMessage()); throw new IllegalStateException(); }finally { a++; } } tjOrder.setTjNumber(tjNumber); BigDecimal discount = BigDecimal.valueOf(Double.parseDouble(tjOrder.getTjFlowingWater().getDiscount())); tjOrder.setDiscount(discount.toString()); if (tjOrderService.save(tjOrder)) { //保存收货地址 if ("2".equals(tjOrder.getGetType())) { final TjReportGetAddress address = tjOrder.getAddAddress(); if (address != null) { address.setTjNumber(tjNumber); tjReportGetAddressService.save(address); } } Long cusNumber = tjCustomer.getCusNumber(); cusNumber += 1; tjCustomer.setCusNumber(cusNumber); if ("1".equals(tjOrder.getTjType())) { if (null != tjReservation && tjReservation.getPayType() == 1) { tjFlowingWater.setPayStasus(3L); } } //调用SQL server拿取收费情况 //根据配置调取存储过程 将临时表数据存入预约表2023.12.12 final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData"); final String isPay = configService.selectConfigByKey("isPay"); if ("Y".equals(getInfoFromSqlData)) { LtkjMiddleHead middleHead = headService.getMiddleHeadByPartId(tjCustomer.getCardId()); if (null != middleHead) { tjFlowingWater.setPayStasus(1L); } } tjFlowingWater.setOrderId(tjOrder.getOrderId()); Date date1 = new Date(System.currentTimeMillis()); String s1 = SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmssSSS").format(date1); tjFlowingWater.setWaterId(PinyinUtil.getFirstLetter(tjCustomer.getCusName(), "").toUpperCase() + s1); BigDecimal copeWith = tjOrder.getTjFlowingWater().getCopeWith(); BigDecimal paidIn = tjOrder.getTjFlowingWater().getPaidIn(); tjFlowingWater.setCopeWith(copeWith); tjFlowingWater.setPaidIn(paidIn); tjFlowingWater.setDiscount(discount.toString()); BigDecimal subtract = paidIn.subtract(copeWith.multiply(discount.divide(BigDecimal.valueOf(10)))); log.info("签到登记体检人: " + tjOrder.getTjNumber() + " 应付: " + copeWith); log.info("签到登记体检人: " + tjOrder.getTjNumber() + " 折扣: " + discount); log.info("签到登记体检人: " + tjOrder.getTjNumber() + " 实付: " + paidIn); log.info("签到登记体检人: " + tjOrder.getTjNumber() + " 相差: " + subtract); if (isPay.equals("true")) { if (null != mallOrder) { if (mallOrder.getOrderStatus().equals(201L)) { tjFlowingWater.setCopeWith(mallOrder.getActualPrice()); tjFlowingWater.setPaidIn(mallOrder.getActualPrice()); tjFlowingWater.setDiscount(String.valueOf(1)); tjFlowingWater.setPayStasus(1L); tjFlowingWater.setPayType(3L); MallCheckLog checkLog = new MallCheckLog(); checkLog.setCheckBy(sysUser.getNickName()); checkLog.setUserId(mallOrder.getUserId()); checkLog.setConsignee(mallOrder.getConsignee()); checkLog.setIdCard(mallOrder.getIdCard()); checkLog.setOrderId(String.valueOf(mallOrder.getId())); checkLog.setOrderSn(mallOrder.getOrderSn()); checkLog.setCheckTime(new Date()); checkLog.setShipSn("HX" + s1); mallCheckLogService.save(checkLog); mallOrder.setOrderStatus(301L); mallOrderService.updateById(mallOrder); } } else { tjFlowingWater.setCopeWith(tjOrder.getTjFlowingWater().getCopeWith()); tjFlowingWater.setPaidIn(tjOrder.getTjFlowingWater().getPaidIn()); tjFlowingWater.setDiscount(tjOrder.getTjFlowingWater().getDiscount()); // tjFlowingWater.setPayStasus(0L); } } //修改临时表体检号 transitionService.updateTbTransitionTjNumByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber()); if (tjFlowingWaterService.save(tjFlowingWater)) { tjOrder.setTjSerialNumber(String.valueOf(tjFlowingWater.getTjSerialNumber())); tjOrderService.updateById(tjOrder); } /*调用his接口*/ String config = configService.selectConfigByKey("sfkqdyhis"); if (null != config && config.equals("Y")) { AjaxResult result = null; try { result = hisApiMethod.HisApiMethods(tjCustomer, tjOrder); if (!result.get("code").toString().equals("200")) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); Object jzh = result.get("jzh"); if (null != jzh && null != jzh.toString()) { hisApiMethod.ZfHisApiMethod(jzh.toString()); } log.info("该登记人挂号失败, 就诊号为: " + tjOrder.getCardId()); return AjaxResult.error("挂号失败!" + result.get("msg").toString()); } } catch (NoTransactionException e) { log.error(e.getMessage()); throw new RuntimeException(e); } log.info("该登记人的his就诊号是: " + tjOrder.getCardId()); // 查询 对接Lis、Pacs申请如果类型包含在配置内则使用对接lis、pacs try { if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) { // 这是上面个人方法引入数据 tjFlowingWater.setPayStasus(1L); newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater); AjaxResult ajaxResult = hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder, sysUser, result); if (!ajaxResult.get("code").toString().equals("200")) return ajaxResult; tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber())); remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString()); List xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber()); xdPictureService.saveBatch(xdPictureList); } else { newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater); List detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId()); addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null); hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId()); } return AjaxResult.success(tjNumber); } catch (Exception e) { log.error(e.getMessage()); throw new RuntimeException(e); } } else { tjCustomer.setCardId(tjOrder.getTjNumber()); tjCustomerService.updateById(tjCustomer); transitionService.updateCardIdByTjNumAndIdCard(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), tjOrder.getTjNumber()); tjOrder.setCardId(tjOrder.getTjNumber()); tjOrderService.updateById(tjOrder); } String drrysfsf = configService.selectConfigByKey("drrysfsf"); try { if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) { if(StringUtil.isNotBlank(drrysfsf) && drrysfsf.equalsIgnoreCase("Y")){ if(null != tjReservation){ return isUseLisAndPacsRegister(tjOrder, tjCustomer, tjReservation, tjFlowingWater, sysUser, discount, tjNumber); }else { newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater); AjaxResult error = isRequestCommonHisApi(tjOrder, tjCustomer, tjFlowingWater); if (error != null) return error; return AjaxResult.success(tjNumber); } } return isUseLisAndPacsRegister(tjOrder, tjCustomer, tjReservation, tjFlowingWater, sysUser, discount, tjNumber); } else { newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater); AjaxResult error = isRequestCommonHisApi(tjOrder, tjCustomer, tjFlowingWater); if (error != null) return error; } } catch (Exception e) { log.error(e.getMessage()); throw new RuntimeException(e); } return AjaxResult.success(tjNumber); } TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error(); } public void newSaveextracted(TjOrder tjOrder, TjCustomer tjCustomer, BigDecimal discount, SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) { try { tjAskMedicalHistoryService.updateTjAskMedicalHistoryByCusId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjCustomer.getCusId())); if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) { tjOrderDetailService.saveJSYTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId(), String.valueOf(tjFlowingWater.getTjSerialNumber())); } else { tjOrderDetailService.saveTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId()); } tjOrderDetailService.saveTjPureToneTesByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId()); //添加remark表数据 if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) { remarkService.saveJSYTjOrderRemarkByOrderId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjOrder.getOrderId())); } else { remarkService.saveTjOrderRemarkByOrderId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjOrder.getOrderId())); } //判断是否交钱 if ("1".equals(tjOrder.getTjType())) { if (null != tjReservation && tjReservation.getPayType() == 1) { tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber())); remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString()); List xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber()); xdPictureService.saveBatch(xdPictureList); } } if (tjFlowingWater.getPayStasus() == 1L) { tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber())); tjFlowingWater.setPaidIn(tjOrder.getTjFlowingWater().getPaidIn()); tjFlowingWater.setCopeWith(tjOrder.getTjFlowingWater().getCopeWith()); tjFlowingWater.setPayType(4L); tjFlowingWaterService.updateById(tjFlowingWater); remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString()); // asyncService.addTjChargingStandard(tjOrder, transitionService.getTbTransitionListByCusId(tjCustomer.getCusIdcard(), tjOrder.getCardId()), sysUser); List xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber()); xdPictureService.saveBatch(xdPictureList); } } catch (Exception e) { log.error(e.getMessage()); throw new RuntimeException(e); } } public void addCaiYangDengJi(List detailList, boolean detailList1, TjOrder order, SysUser sysUser, String jxbz) { String lis_tmh_prefix = configService.selectConfigByKey("make_lis_tmh_prefix"); String config = configService.selectConfigByKey("sfkqdyhis"); Boolean lisAndPacsRegister = lisApiMethod.isUseLisAndPacsRegister(order); if (null != detailList && detailList1) { Date date = new Date(); String format = DateUtil.format(date, "yyMMddHHmmssSSS"); for (TjOrderDetail detail : detailList) { int i = samplingService.isExistProId(order.getTjNumber(), String.valueOf(detail.getProId())); if(i>0) continue; TjSampling sampling = new TjSampling(); if (null == projectService.getById(detail.getProId())) continue; TjProject project = projectService.getById(detail.getProId()); Long proParentId = project.getProParentId(); String dictLabel = sysDictDataService.selectDictLabel("sys_dict_specimen", project.getSpecimenType()); if (null != proParentId && proParentId == 0) { sampling.setJyxh(idUtils.generateLisID(lis_tmh_prefix)); sampling.setSpecimenTypeCode(project.getSpecimenType()); sampling.setSpecimenType(dictLabel); if (config.equals("Y") && lisAndPacsRegister) sampling.setJyxmdm(project.getLisXmbm()); else sampling.setJyxmdm(project.getProId().toString()); } else { TjProject project1 = projectService.getById(proParentId); sampling.setJyxh(idUtils.generateLisID(lis_tmh_prefix)); sampling.setSpecimenTypeCode(project1.getSpecimenType()); sampling.setSpecimenType(dictLabel); if (config.equals("Y") && lisAndPacsRegister) sampling.setJyxmdm(project1.getLisXmbm()); else sampling.setJyxmdm(project1.getProId().toString()); } sampling.setSamplingNumber(format); sampling.setTjNum(order.getTjNumber()); sampling.setCusId(String.valueOf(order.getUserId())); if (tjCustomerService.getById(String.valueOf(order.getUserId())) != null) { sampling.setCusName(tjCustomerService.getById(String.valueOf(order.getUserId())).getCusName()); } sampling.setApplicationTime(date); sampling.setTjTime(order.getCreateTime()); sampling.setProId(String.valueOf(detail.getProId())); sampling.setProName(projectService.getById(detail.getProId()).getProName()); sampling.setCreateBy(sysUser.getNickName()); sampling.setCreateTime(date); sampling.setUpdateBy(sysUser.getNickName()); sampling.setUpdateTime(date); sampling.setCreateId(String.valueOf(sysUser.getUserId())); sampling.setUpdateId(String.valueOf(sysUser.getUserId())); sampling.setJxbz(jxbz); samplingService.save(sampling); } } if (lisApiMethod.isUseLisAndPacsRegister(order) && (null != config && config.equals("Y"))) { AjaxResult ajaxResult = lisApiMethod.getJyFlHb(); if (ajaxResult.get("code").toString().equals("200")) { String str = ajaxResult.get("data").toString(); str = str.replace("=", ":"); JSONArray array = JSONUtil.parseArray(str); for (Object o : array) { JSONObject object = (JSONObject) o; LisJyflhb lisJyflhb = new LisJyflhb(); lisJyflhb.setHbhxm(object.getStr("hbhxm")); lisJyflhb.setFlmc(object.getStr("flmc")); lisJyflhb.setMc(object.getStr("mc")); lisJyflhb.setFlbm(object.getStr("flbm")); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(LisJyflhb::getFlbm, lisJyflhb.getFlbm()); LisJyflhb jyflhb = lisJyflhbService.getOne(wrapper); if (jyflhb == null) { lisJyflhb.setId(IdUtil.getSnowflake().nextId()); lisJyflhbService.save(lisJyflhb); } else { lisJyflhb.setId(jyflhb.getId()); lisJyflhbService.updateById(lisJyflhb); } } } } if (StrUtil.isNotBlank(jxbz)) { tjSamplingMapper.updateUserIdByTjNumAndJxbz(order.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), jxbz); } else { tjSamplingMapper.updateUserIdByTjNum(order.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId())); } } private AjaxResult isUseLisAndPacsRegister(TjOrder tjOrder, TjCustomer tjCustomer, TjReservation tjReservation, TjFlowingWater tjFlowingWater, SysUser sysUser, BigDecimal discount, String tjNumber) { try { log.info("签到登记进入未收费方法"); // 这是上面个人方法引入数据 tjFlowingWater.setPayStasus(1L); newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater); tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber())); remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString()); List xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber()); xdPictureService.saveBatch(xdPictureList); List detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId()); log.info("签到登记:采样数据查询个数"+detailList.size()); addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null); return AjaxResult.success(tjNumber); } catch (Exception e) { log.error(e.getMessage()); throw new RuntimeException(e); } } private AjaxResult isRequestCommonHisApi(TjOrder tjOrder, TjCustomer tjCustomer, TjFlowingWater tjFlowingWater) { String s = configService.selectConfigByKey("is_request_common_his_api"); if (null != s && s.equals("Y")) { String apiUrl = configService.selectConfigByKey("common_api_url"); String hospbm = configService.selectConfigByKey("common_api_service_hospbm"); HashMap map = new HashMap<>(); map.put("pationId", tjCustomer.getPationId()); map.put("cardId", tjCustomer.getHisJzkh()); map.put("tjNum", tjFlowingWater.getTjSerialNumber()); map.put("kaiDanKs", "7805"); // 收费标志 1待售费 2待退费 map.put("shouTuiStatus", "1"); JSONArray array = JSONUtil.createArray(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TbTransition::getTjNum, tjOrder.getTjNumber()); wrapper.eq(TbTransition::getCusId, tjCustomer.getCusIdcard()); wrapper.eq(TbTransition::getCardId, tjCustomer.getCardId()); wrapper.isNotNull(TbTransition::getNowPrice); wrapper.gt(TbTransition::getNowPrice, 0); List list = tbTransitionService.list(wrapper); BigDecimal zongjia = new BigDecimal("0.0"); for (TbTransition transition : list) { LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); wrapper1.eq(TjProject::getProId, transition.getProId()); TjProject project = projectService.getOne(wrapper1); LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); wrapper2.eq(SysDept::getDeptId, project.getDeptId()); SysDept dept = sysDeptService.getOne(wrapper2); JSONObject obj = JSONUtil.createObj(); // Integer sl = project.getSl(); int sl = 1; BigDecimal danjia = transition.getNowPrice(); BigDecimal allPrice = danjia.multiply(new BigDecimal(sl)); obj.putOpt("danJia", danjia); obj.putOpt("jieSuanJe", allPrice); obj.putOpt("shuliang", sl); obj.putOpt("zhiXingKs", dept.getDeptId()); obj.putOpt("zhiXingKsMc", dept.getDeptName()); obj.putOpt("shouFeiXmId", project.getHisXmbm()); obj.putOpt("shouFeiXmMc", project.getHisXmmc()); array.add(obj); zongjia = zongjia.add(allPrice); } map.put("feiYongInfoList", array); log.info("调用His接口前 收费总价:{}", zongjia.toString()); String post = HttpClientUtils.sendPost(apiUrl + "/api/his/" + hospbm + "/creatCostInfo", map); JSONObject object = JSONUtil.parseObj(post); if (object.getInt("code") == 200) { JSONObject data = object.getJSONObject("data"); tjFlowingWater.setHisWaterId(data.getStr("feiYongId")); JSONArray mxList = data.getJSONArray("mxList"); if (mxList != null && !mxList.isEmpty()) { List his = mxList.toList(TjFlowingWaterHis.class); tjFlowingWaterHisService.saveBatch(his); } tjFlowingWaterService.updateById(tjFlowingWater); } else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error(); } } return null; } @PostMapping("/importTemplate") @ApiOperation(value = "导出excel表模板") public void importTemplate(HttpServletResponse response) { String value = configService.selectConfigByKey("path_filePath"); //原来的下载模板调用接口 try { String base64String = PDFBinaryUtil.getPDFBinary(value + File.separator + "西安路泰机电科技有限公司.xls"); if (null != base64String) { PDFBinaryUtil.base64StringToPDF(base64String, FileUtil.mkdir(value).getPath() + File.separator + "团体预约Excel模版.xls"); String filePath = value + File.separator + "团体预约Excel模版.xls"; File f = new File(filePath); BufferedInputStream br = null; OutputStream out = null; FileInputStream fileInputStream = null; try { fileInputStream = new FileInputStream(f); br = new BufferedInputStream(fileInputStream); byte[] bs = new byte[1024]; int len = 0; response.reset(); // 非常重要 if (true) { // 在线打开方式 URL u = new URL("file:///" + filePath); //System.out.println(u); String contentType = u.openConnection().getContentType(); response.setContentType(contentType); response.setHeader("Content-Disposition", "inline;filename=团体预约Excel模版.xls"); } else { // 纯下载方式 response.setContentType("application/x-msdownload"); response.setContentType("application/pdf;charset=utf-8"); response.setHeader("Content-Disposition", "attachment;filename=团体预约Excel模版.xls"); } out = response.getOutputStream(); while ((len = br.read(bs)) > 0) { out.write(bs, 0, len); } out.flush(); out.close(); br.close(); fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); //System.out.println("pdf处理文件异常" + e); } finally { if (out != null) { try { out.close(); br.close(); fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } } catch (Exception e) { ExcelUtils.exportTemplate(response,"团体预约Excel模版",TjReservation.class); throw new RuntimeException(e); } } @PostMapping("/newExcelImportNotDwDeptId") @ApiOperation(value = "团体excel表导入 (新版本不传单位部门id)") @Transactional public AjaxResult newExcelImportNotDwDeptId(@RequestPart(value = "file") @ApiParam(value = "Excel文件") MultipartFile file, @RequestParam @ApiParam(value = "单位id") String dwId) { List tjReservations = null; try { tjReservations = ExcelUtils.readMultipartFile(file, TjReservation.class); } catch (Exception e) { return AjaxResult.error("导入文件有误请检查导入文件!"); } int grouping = dwGroupingService.selectTjDwGroupingByDwId(dwId); if (grouping == 0) { return AjaxResult.error("请检查该单位是否存否存在项目!"); } List wrongList = new ArrayList<>(); List rightList = new ArrayList<>(); List yyList = new ArrayList<>(); Map map = new HashMap<>(); List groupingMans = null;//男 List groupingWoMans = null;//女 List groupingWzs = null;//未知(不分性别) try { groupingMans = dwGroupingService.list(new LambdaQueryWrapper().eq(TjDwGrouping::getDwId, dwId) .eq(TjDwGrouping::getSex, 0)); groupingWoMans = dwGroupingService.list(new LambdaQueryWrapper().eq(TjDwGrouping::getDwId, dwId) .eq(TjDwGrouping::getSex, 1)); groupingWzs = dwGroupingService.list(new LambdaQueryWrapper().eq(TjDwGrouping::getDwId, dwId) .eq(TjDwGrouping::getSex, 2)); } catch (Exception e) { return AjaxResult.error("分组信息有误请重新分组!"); } try { String sfjysfzh = configService.selectConfigByKey("sfjysfzh"); String sfjysjh = configService.selectConfigByKey("sfjysjh"); //计算合计 BigDecimal hjMoney = new BigDecimal("0.00"); //男组金额 BigDecimal manMoney = new BigDecimal("0.00"); //女组金额 BigDecimal woManMoney = new BigDecimal("0.00"); int count = 0;//总计人数 int manCount = 0;//男组人数 int woManCount = 0;//女组人数 List ids = new ArrayList<>(); // String errMsg = ""; for (TjReservation tjReservation : tjReservations) { String name = tjReservation.getName(); String idCard = tjReservation.getIdCard(); String phoe = tjReservation.getPhoe(); name = name.replaceAll("[',,;.。 ‘“]", "").replaceAll(" ", ""); phoe = phoe.replaceAll("[',,;.。 ‘“]", "").replaceAll(" ", ""); idCard = idCard.replaceAll("[',,;.。 ‘“]", "").replaceAll(" ", ""); if (!StringUtils.isBlank(idCard) || !StringUtils.isBlank(phoe) || null != tjReservation.getDwxm()) { //将科学计数的手机号转换成文本形式 phoe = MatchUtils.translateToPlainStr(tjReservation.getPhoe()); if (!ids.isEmpty() && ids.contains(idCard)) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error("此身份证号: " + tjReservation.getIdCard() + " 重复,请核对后上传!"); } ids.add(idCard); if (!Objects.equals(tjReservation.getSex(), MatchUtils.getSexByIdCard(idCard))){ wrongList.add(tjReservation.getName() + " " + tjReservation.getIdCard()+"以下人员性别 不准确"); log.info(tjReservation.getName() + " " + idCard); } if ((sfjysfzh.equalsIgnoreCase("Y") && !MatchUtils.isIdCard(idCard)) || (sfjysjh.equalsIgnoreCase("Y") && !MatchUtils.isMobileNO(phoe))) { wrongList.add(tjReservation.getName() + " " + tjReservation.getIdCard()+"身份证号/手机号 格式不准确"); // errMsg = "身份证号/手机号 格式不准确"; log.info(tjReservation.getName() + " " + idCard + MatchUtils.isIdCard(idCard) + " " + phoe + " " + MatchUtils.isMobileNO(phoe)); } // else { tjReservation.setPhoe(phoe); tjReservation.setName(name); tjReservation.setIdCard(idCard); //年龄 tjReservation.setAge(String.valueOf(MatchUtils.getAgeByIdCard(tjReservation.getIdCard().replaceAll(" ", "")))); //出生日期 try { tjReservation.setBirthday(MatchUtils.getBirthDayByIdCard(tjReservation.getIdCard().replaceAll(" ", ""))); } catch (Exception e) { // return AjaxResult.error("身份证号不正确"); } TjDwDept dwDept = dwDeptService.getOne(new LambdaQueryWrapper(). eq(TjDwDept::getDwDeptName, tjReservation.getDwxm().trim()).eq(TjDwDept::getDwId,dwId)); if (null != dwDept) { for (TjDwGrouping groupingMan : groupingMans) { if (null != groupingMan && groupingMan.getSex().equals(String.valueOf(tjReservation.getSex())) && groupingMan.getDwDeptId().equals(dwDept.getId())) { tjReservation.setGroupingId(groupingMan.getId()); tjReservation.setGroupingName(groupingMan.getGroupingName()); tjReservation.setYsPrice(groupingMan.getYsPrice()); //合计 hjMoney = hjMoney.add(groupingMan.getYsPrice()); count += 1; //男组人数 manMoney = manMoney.add(groupingMan.getYsPrice()); manCount += 1; } } for (TjDwGrouping groupingWoMan : groupingWoMans) { if (null != groupingWoMan && groupingWoMan.getSex().equals(String.valueOf(tjReservation.getSex())) && groupingWoMan.getDwDeptId().equals(dwDept.getId())) { tjReservation.setGroupingId(groupingWoMan.getId()); tjReservation.setGroupingName(groupingWoMan.getGroupingName()); tjReservation.setYsPrice(groupingWoMan.getYsPrice()); //合计 hjMoney = hjMoney.add(groupingWoMan.getYsPrice()); count += 1; woManMoney = woManMoney.add(groupingWoMan.getYsPrice()); woManCount += 1; } } for (TjDwGrouping groupingWz : groupingWzs) { if (null != groupingWz && groupingWz.getDwDeptId().equals(dwDept.getId())) { tjReservation.setGroupingId(groupingWz.getId()); tjReservation.setGroupingName(groupingWz.getGroupingName()); tjReservation.setYsPrice(groupingWz.getYsPrice()); //合计 hjMoney = hjMoney.add(groupingWz.getYsPrice()); count += 1; if (tjReservation.getSex() == 0) { manMoney = manMoney.add(groupingWz.getYsPrice()); manCount += 1; } if (tjReservation.getSex() == 1) { woManMoney = woManMoney.add(groupingWz.getYsPrice()); woManCount += 1; } } } LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjReservation::getIdCard, tjReservation.getIdCard()); wq.eq(TjReservation::getIsExpire, 2); TjReservation one = tjReservationService.getOne(wq); if (null != one) { yyList.add(one.getName() + " " + tjReservation.getIdCard()); } else { rightList.add(tjReservation); } } else { wrongList.add(tjReservation.getName() + " " + tjReservation.getIdCard()+"所填写的套餐分类名 不正确"); } // } } else { wrongList.add(tjReservation.getName()+"身份证号/手机号/套餐分类名名为空"); } } if (!yyList.isEmpty()) { map.put("list", yyList); map.put("hjMoney", hjMoney); return AjaxResult.error("操作失败,以上人员已经预约无需导入!!!", map); } if (!wrongList.isEmpty()) { map.put("list", wrongList); map.put("hjMoney", hjMoney); return AjaxResult.error("操作失败, 请认真核对错误信息后重新导入!!!", map); } else { map.put("list", rightList); map.put("count", count); map.put("hjMoney", hjMoney); map.put("manCount", manCount); map.put("manMoney", manMoney); map.put("woManCount", woManCount); map.put("woManMoney", woManMoney); return AjaxResult.success("操作成功", map); } } catch (NoTransactionException e) { // throw new RuntimeException(e); log.error(String.valueOf(e), e.getMessage()); return AjaxResult.error(); } } @PostMapping("/newReservationConfirmxbb") @ApiOperation(value = "团体预约确认接口 (新版本)") @Transactional @RepeatSubmit public AjaxResult newReservationConfirmxbb(@RequestBody ConfirmDto dto) { //预约的所有人 List rightList = dto.getReservations(); //预约时间 String reservationTime = dto.getReservationTime(); if (null == reservationTime) { return AjaxResult.error("请选择预约时间!"); } Date date = new Date(); //异步数据 // asyncService.addNewReservationConfirm(rightList); asyncService.saveNewReservationConfirm(rightList); //体检单位部门 DictComp comp = compService.getById(dto.getDwId()); String teamNo = PinyinUtil.getFirstLetter(comp.getCnName(), "") + DateUtil.format(date, "yyMMddHHmmss"); //团体人数合计价格 BigDecimal compPay = new BigDecimal("0.00"); String payTypeGlTjType = configService.selectConfigByKey("reservation_pay_type_gl_tj_type"); JSONObject parseObj = JSONUtil.parseObj(payTypeGlTjType); if (null != rightList && !rightList.isEmpty()) { List ids=new ArrayList<>(); for (TjReservation reservation : rightList) { if(!ids.isEmpty() && ids.contains(reservation.getIdCard())){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error("此身份证号: "+reservation.getIdCard()+" 重复,请核对后上传!"); } reservation.setName(reservation.getName().replaceAll(" ","").replaceAll(" ","")); ids.add(reservation.getIdCard()); TjDwGrouping dwGrouping = dwGroupingService.getById(reservation.getGroupingId()); if(null !=dwGrouping){ TjDwDept dwDept = dwDeptService.getById(dwGrouping.getDwDeptId()); LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjReservation::getIdCard, reservation.getIdCard()); wq.eq(TjReservation::getIsExpire, 2); TjReservation one = tjReservationService.getOne(wq); if (null != one) { continue; } LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjGroupingPro::getGroupingId, reservation.getGroupingId()); List proIds = groupingProService.list(wq1).stream().map(TjGroupingPro::getProId).collect(Collectors.toList()); reservation.setProIds(Joiner.on(",").join(proIds)); reservation.setReservationTime(DateUtil.parse(reservationTime, "yyyy-MM-dd")); reservation.setCompanyId(dwGrouping.getDwId()); reservation.setCompany(dwGrouping.getDwName()); reservation.setPayType(Long.valueOf(dwGrouping.getPayType())); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SysDictData::getDictType, "reservation_pay_type"); wrapper.eq(SysDictData::getDictValue, reservation.getPayType()); SysDictData dictData = dictDataService.getOne(wrapper); for (Map.Entry entry : parseObj.entrySet()) { String[] split = entry.getValue().toString().split("-"); if (split[0].equals(String.valueOf(dictData.getDictCode()))) { reservation.setTjType(dictDataService.selectDictDataById(Long.valueOf(split[1])).getDictValue()); } } reservation.setPacId(dwDept.getId()); compPay = compPay.add(dwGrouping.getYsPrice()); // reservation.setTjType(String.valueOf(1)); reservation.setTeamNo(teamNo); reservation.setYxts(dto.getYxts()); tjReservationService.save(reservation); taskService.addTask(new TjReservationTask(reservation.getId(), DateUtil.between(date, DateUtil.endOfDay(DateUtil.offsetDay(reservation.getReservationTime(), dto.getYxts())), DateUnit.MS))); } } LambdaQueryWrapper wq0 = new LambdaQueryWrapper<>(); wq0.eq(TjCompPay::getCompId, dto.getDwId()); wq0.eq(TjCompPay::getTeamNo, teamNo); TjCompPay one = compPayService.getOne(wq0); if (null != one) { one.setCopeWith(compPay); one.setSerialNumber(SecurityUtils.getUsername() + DateUtil.format(date, "yyMMddHHmmssSSS")); one.setInvoiceNo("FP" + DateUtil.format(date, "yyMMddHHmmssSSS")); one.setPaidIn(new BigDecimal("0.00")); compPayService.updateById(one); } else { TjCompPay tjCompPay = new TjCompPay(); tjCompPay.setCompId(dto.getDwId()); tjCompPay.setTeamNo(teamNo); tjCompPay.setCopeWith(compPay); tjCompPay.setSerialNumber(SecurityUtils.getUsername() + DateUtil.format(date, "yyMMddHHmmssSSS")); tjCompPay.setInvoiceNo("FP" + DateUtil.format(date, "yyMMddHHmmssSSS")); tjCompPay.setPaidIn(new BigDecimal("0.00")); tjCompPay.setDifference(tjCompPay.getCopeWith().subtract(BigDecimal.valueOf(0.00))); compPayService.save(tjCompPay); } // .filter(a-> null != a.getPacId()) Map> collect = rightList.stream().collect(Collectors.groupingBy(TjReservation::getPacId)); if (!collect.isEmpty()) { for (Map.Entry> entry : collect.entrySet()) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjTeamSelectRecord::getTeamNo, teamNo); wq.eq(TjTeamSelectRecord::getCompId, dto.getDwId()); TjTeamSelectRecord recordServiceOne = selectRecordService.getOne(wq); if (null != recordServiceOne) { recordServiceOne.setPacId(entry.getKey()); recordServiceOne.setCompId(dto.getDwId()); recordServiceOne.setTeamNo(teamNo); recordServiceOne.setTransactionAmount(new BigDecimal("0.00")); recordServiceOne.setCount(entry.getValue().size()); recordServiceOne.setDifference(compPay); selectRecordService.updateById(recordServiceOne); } else { TjTeamSelectRecord selectRecord = new TjTeamSelectRecord(); selectRecord.setCompId(dto.getDwId()); selectRecord.setPacId(entry.getKey()); selectRecord.setTeamNo(teamNo); selectRecord.setTransactionAmount(new BigDecimal("0.00")); selectRecord.setCount(entry.getValue().size()); selectRecord.setDifference(compPay); selectRecordService.save(selectRecord); } } } return AjaxResult.success("预约成功"); } return AjaxResult.error("请选择预约对象"); } }