package com.ltkj.web.controller.system; import java.io.*; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.List; import java.util.concurrent.*; import java.util.concurrent.locks.ReentrantLock; import java.util.stream.Collectors; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import cn.hutool.core.codec.Base64; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; 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.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.ltkj.common.annotation.RepeatSubmit; import com.ltkj.common.core.domain.entity.SysDept; import com.ltkj.common.core.domain.entity.SysUser; import com.ltkj.common.core.redis.RedisCache; import com.ltkj.common.enums.DataSourceType; import com.ltkj.common.utils.*; import com.ltkj.framework.config.MatchUtils; import com.ltkj.framework.config.ThreadPoolConfig; import com.ltkj.framework.config.UserHoder; import com.ltkj.framework.datasource.DynamicDataSourceContextHolder; import com.ltkj.hosp.domain.*; import com.ltkj.hosp.dto.QianDaoDto; import com.ltkj.hosp.dto.TjProBlDto; import com.ltkj.hosp.dto.UpdateTransitionnewPriceDto; import com.ltkj.hosp.hisDto.OutpinmedicapplyDto; import com.ltkj.hosp.mapper.TbTransitionMapper; import com.ltkj.hosp.mapper.TestMapper; import com.ltkj.hosp.mapper.TjSamplingMapper; import com.ltkj.hosp.service.*; import com.ltkj.hosp.sqlDomain.LtkjMiddleDetail; import com.ltkj.hosp.sqlDomain.LtkjMiddleHead; import com.ltkj.hosp.sqlDomain.LtkjTjPat; import com.ltkj.hosp.vodomain.BingZhongVO; import com.ltkj.hosp.vodomain.HistoryTjOrder; import com.ltkj.hosp.vodomain.QjDomainVo; import com.ltkj.mall.domain.MallCheckLog; import com.ltkj.mall.domain.MallOrder; import com.ltkj.mall.mallOrderUtils.OrderHandleOption; import com.ltkj.mall.mallOrderUtils.OrderUtil; import com.ltkj.mall.mallOrderUtils.TjConstants; import com.ltkj.mall.service.IMallCheckLogService; import com.ltkj.mall.service.IMallOrderService; import com.ltkj.system.domain.TjDjdDyjl; import com.ltkj.system.service.*; import com.ltkj.hosp.idutil.IdUtils; import com.ltkj.web.controller.his.*; import com.ltkj.web.controller.lis.LisApiMethod; import com.ltkj.web.controller.pacs.PacsApiMethodService; 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.beans.factory.annotation.Value; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 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.util.DigestUtils; 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; import static com.ltkj.web.config.pdfutils.PDFBinaryUtil.getPDFBinary; /** * 体检记录Controller * * @author ltkj * @date 2022-11-21 */ @RestController @RequestMapping("/hosp/order") @Api(tags = "PC端 ----体检记录接口 OrderController") @Slf4j public class TjOrderController extends BaseController { @Resource private ITjOrderService tjOrderService; @Resource private ITjOrderDetailService tjOrderDetailService; @Resource private ITjFlowingWaterService tjFlowingWaterService; @Resource private ITjCustomerService tjCustomerService; @Resource private ITjPackageProjectService tjPackageProjectService; @Resource private IDictCompService iDictCompService; @Resource private ITjReservationService tjReservationService; @Resource private ITjPackageService tjPackageService; @Resource private ITjProjectService projectService; @Resource private ITbTransitionService transitionService; @Resource private ISysConfigService configService; @Value("${path.filePath}") private String value; @Resource private ITjOrderRemarkService remarkService; @Resource private TjAsyncService asyncService; @Resource private ISysUserService userService; @Resource private RedisCache redisCache; @Autowired private ITjReportPrintService tjReportPrintService; @Resource private ITjPrintOrderService printOrderService; @Resource private IJimuOnlineReportService reportService; @Resource private ITjSurveyRecordService surveyRecordService; @Autowired private IMallOrderService mallOrderService; @Autowired private IMallCheckLogService mallCheckLogService; @Resource private ITjDwDeptService dwDeptService; @Resource private ITjDwGroupingService dwGroupingService; @Resource private ITjOrderDetailRulesService orderDetailRulesService; @Resource private ITjRulesService rulesService; @Autowired private ITjAskMedicalHistoryService tjAskMedicalHistoryService; @Autowired private ITjReportGetAddressService tjReportGetAddressService; @Resource private TestMapper testMapper; @Resource private LtkjMiddleDetailService middleDetailService; @Resource private LtkjMiddleHeadService headService; @Resource private TjvLtkjvtjpatService tjvLtkjvtjpatService; @Autowired private ThreadPoolConfig threadPoolConfig; @Autowired private HisApiMethod hisApiMethod; @Autowired private HisApiGetMethodService hisApiGetMethodService; @Autowired private ISysDeptService sysDeptService; @Autowired private HisApiMethodService controller; @Autowired private TjProBlService blService; @Resource private ITjReportTemplateService reportTemplateService; @Autowired private LtkjJianchajianyanTreeService ltkjJianchajianyanTreeService; @Autowired private PacsApiMethodService pacsApiMethodService; @Autowired private ITbTransitionService tbTransitionService; @Autowired private LisApiMethod lisApiMethod; @Autowired private TjCfService cfService; @Autowired private TjReportController reportController; @Resource private ITjReportService tjReportService; @Autowired private HisPDFUtil hisPDFUtil; @Value("${path.reportServer}") private String urlValue; @Autowired private ITjSamplingService samplingService; @Autowired private TjSamplingMapper tjSamplingMapper; @Autowired private ITjGroupingProService groupingProService; @Autowired private ITjDjdDyjlService djdDyjlService; @Autowired private IdUtils idUtils; @Autowired private LtkjJybbzdService jybbzdService; @Autowired private LisJyflhbService lisJyflhbService; @Autowired private ISysDictDataService sysDictDataService; @Autowired private TjFlowingWaterHisService tjFlowingWaterHisService; @Resource private ITjXdPictureService xdPictureService; @Autowired private TjOrderYcxmService ycxmService; @Autowired private TbTransitionMapper tbTransitionMapper; private static final String TJH = "tjhs:tjh"; //将方法返回值解析成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(); } /** * 查询体检记录列表 */ // @PreAuthorize("@ss.hasPermi('hosp:order:list')") @GetMapping("/list") @ApiOperation(value = "查询体检记录列表(默认)") public TableDataInfo list(TjOrder tjOrder) { startPage(); startOrderBy(); List list = tjOrderService.selectTjOrderList(tjOrder); if (list != null) { for (TjOrder order : list) { TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId()); if (null != tjCustomer) { order.setTjCustomerName(MatchUtils.hideCusName(tjCustomer.getCusName())); order.setTjCustomerSex(tjCustomer.getCusSex()); order.setTjCustomerAge(DateUtil.ageOfNow(tjCustomer.getCusBrithday())); order.setTjCustomerPhone(MatchUtils.hidePhoneNum(tjCustomer.getCusPhone())); order.setTjCusIdCard(MatchUtils.hideIdCardNum(tjCustomer.getCusIdcard())); } String firmId = order.getFirmId(); if (firmId != null && null != iDictCompService.getById(String.valueOf(order.getFirmId()))) { order.setDictCompName(iDictCompService.getById(String.valueOf(order.getFirmId())).getCnName()); } if (null != order.getPacId()) { if (null != tjPackageService.getById(order.getPacId())) { order.setPacName(tjPackageService.getById(order.getPacId()).getPacName()); } if (null != dwDeptService.getById(order.getPacId())) { order.setPacName(dwDeptService.getById(order.getPacId()).getDwDeptName()); } } } } return getDataTable(list); } @GetMapping("/getWenJuanList") @ApiOperation(value = "查询体检记录列表") public AjaxResult getWenJuanList(@ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer pageNum, @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize, @ApiParam(value = "体检号") @RequestParam(required = false) String tjNum, @ApiParam(value = "姓名") @RequestParam(required = false) String name, @ApiParam(value = "登记开始时间") @RequestParam(required = false) Date djbeginTime, @ApiParam(value = "登记结束时间") @RequestParam(required = false) Date djendTime, @ApiParam(value = "报告开始时间") @RequestParam(required = false) Date bgbeginTime, @ApiParam(value = "报告结束时间") @RequestParam(required = false) Date bgendTime) { Map map = new HashMap<>(); if (null != name) { LambdaQueryWrapper wqq = new LambdaQueryWrapper<>(); wqq.like(TjCustomer::getCusName, name); List customerList = tjCustomerService.list(wqq); List list2 = new ArrayList<>(); if (null != customerList && !customerList.isEmpty()) { List list = new ArrayList<>(); for (TjCustomer customer : customerList) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); if (null != djbeginTime && null != djendTime) { wq.between(TjOrder::getCreateTime, DateUtil.beginOfDay(djbeginTime), DateUtil.endOfDay(djendTime)); } wq.eq(TjOrder::getUserId, customer.getCusId()); list.addAll(tjOrderService.list(wq)); } List collect = null; if (!list.isEmpty()) { for (TjOrder order : list) { //筛选有调查问卷的 LambdaQueryWrapper wqq1 = new LambdaQueryWrapper<>(); wqq1.eq(TjSurveyRecord::getTjnumber, order.getTjNumber()); List one = surveyRecordService.list(wqq1); if (one.isEmpty()) { TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId()); if (null != tjCustomer) { order.setTjCustomerName(MatchUtils.hideCusName(tjCustomer.getCusName())); order.setTjCustomerSex(tjCustomer.getCusSex()); order.setTjCustomerAge(DateUtil.ageOfNow(tjCustomer.getCusBrithday())); order.setTjCustomerPhone(MatchUtils.hidePhoneNum(tjCustomer.getCusPhone())); order.setTjCusIdCard(MatchUtils.hideIdCardNum(tjCustomer.getCusIdcard())); order.setCareer(tjCustomer.getCareer()); order.setIdType(tjCustomer.getIdType()); order.setAgeUnit(tjCustomer.getAgeUnit()); order.setTjCount(String.valueOf(tjCustomer.getCusNumber())); } String firmId = order.getFirmId(); if (firmId != null && null != iDictCompService.getById(String.valueOf(order.getFirmId()))) { order.setDictCompName(iDictCompService.getById(String.valueOf(order.getFirmId())).getCnName()); } if (null != order.getPacId()) { if (null != tjPackageService.getById(order.getPacId())) { order.setPacName(tjPackageService.getById(order.getPacId()).getPacName()); } if (null != dwDeptService.getById(order.getPacId())) { order.setPacName(dwDeptService.getById(order.getPacId()).getDwDeptName()); } } list2.add(order); } } collect = list2.stream().skip((long) (pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); } if (null != collect) { map.put("total", collect.size()); } else { map.put("total", 0); } map.put("list", collect); return AjaxResult.success(map); } } Page page1 = new Page<>(pageNum, pageSize); LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); if (null != djbeginTime && null != djendTime) { wq.between(TjOrder::getCreateTime, DateUtil.beginOfDay(djbeginTime), DateUtil.endOfDay(djendTime)); } if (null != bgbeginTime && null != bgendTime) { wq.between(TjOrder::getCreateTime, DateUtil.beginOfDay(bgbeginTime), DateUtil.endOfDay(bgendTime)); } if (null != tjNum) { wq.eq(TjOrder::getTjNumber, tjNum); } wq.orderByDesc(TjOrder::getCreateTime); Page page2 = tjOrderService.page(page1, wq); List list = page2.getRecords(); List list1 = new ArrayList<>(); if (list != null) { for (TjOrder order : list) { //筛选有调查问卷的 LambdaQueryWrapper wqq = new LambdaQueryWrapper<>(); wqq.eq(TjSurveyRecord::getTjnumber, order.getTjNumber()); List one = surveyRecordService.list(wqq); if (one.isEmpty()) { TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId()); if (null != tjCustomer) { order.setTjCustomerName(MatchUtils.hideCusName(tjCustomer.getCusName())); order.setTjCustomerSex(tjCustomer.getCusSex()); order.setTjCustomerAge(DateUtil.ageOfNow(tjCustomer.getCusBrithday())); order.setTjCustomerPhone(MatchUtils.hidePhoneNum(tjCustomer.getCusPhone())); order.setTjCusIdCard(MatchUtils.hideIdCardNum(tjCustomer.getCusIdcard())); order.setCareer(tjCustomer.getCareer()); order.setIdType(tjCustomer.getIdType()); order.setAgeUnit(tjCustomer.getAgeUnit()); order.setTjCount(String.valueOf(tjCustomer.getCusNumber())); } String firmId = order.getFirmId(); if (firmId != null && null != iDictCompService.getById(String.valueOf(order.getFirmId()))) { order.setDictCompName(iDictCompService.getById(String.valueOf(order.getFirmId())).getCnName()); } if (null != order.getPacId()) { if (null != tjPackageService.getById(order.getPacId())) { order.setPacName(tjPackageService.getById(order.getPacId()).getPacName()); } if (null != dwDeptService.getById(order.getPacId())) { order.setPacName(dwDeptService.getById(order.getPacId()).getDwDeptName()); } } list1.add(order); } } } map.put("list", list1); map.put("total", list1.size()); return AjaxResult.success(map); } @GetMapping("/getOrderList") @ApiOperation(value = "查询体检记录列表") public AjaxResult getOrderList(@ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer pageNum, @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize, @ApiParam(value = "状态") @RequestParam(required = false) Integer zt, @ApiParam(value = "体检号)") @RequestParam(required = false) String tjNum, @ApiParam(value = "姓名)") @RequestParam(required = false) String name, @ApiParam(value = "项目名)") @RequestParam(required = false) String xmmc, @ApiParam(value = "登记开始时间") @RequestParam(required = false) Date djbeginTime, @ApiParam(value = "登记结束时间") @RequestParam(required = false) Date djendTime, @ApiParam(value = "报告开始时间") @RequestParam(required = false) Date bgbeginTime, @ApiParam(value = "报告结束时间") @RequestParam(required = false) Date bgendTime, @ApiParam(value = "单位") @RequestParam(required = false) String dw) { Map map = new HashMap<>(); List cusIds = null; if (null != name) { LambdaQueryWrapper wqq = new LambdaQueryWrapper<>(); wqq.like(TjCustomer::getCusName, name); cusIds = tjCustomerService.list(wqq).stream().map(TjCustomer::getCusId).collect(Collectors.toList()); } Page page1 = new Page<>(pageNum, pageSize); LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); if (null != djbeginTime && null != djendTime) { wq.between(TjOrder::getCreateTime, DateUtil.beginOfDay(djbeginTime), DateUtil.endOfDay(djendTime)); } if (null != bgbeginTime && null != bgendTime) { wq.between(TjOrder::getCreateTime, DateUtil.beginOfDay(bgbeginTime), DateUtil.endOfDay(bgendTime)); } if (null != tjNum) { wq.eq(TjOrder::getTjNumber, tjNum); } if (null != xmmc) { wq.in(TjOrder::getTjNumber, projectService.getTjNumLIstByXmmx(xmmc)); } if (StrUtil.isNotBlank(dw)) { wq.like(TjOrder::getFirmName, dw); } if (null != cusIds && !cusIds.isEmpty()) { wq.in(TjOrder::getUserId, cusIds); } if (null != zt && (zt == 0 || zt == 1 || zt == 2)) { List orders = new ArrayList<>(); List tjOrders = null; List orderList = tjOrderService.list(wq); if (null != orderList && !orderList.isEmpty()) { for (TjOrder order : orderList) { int czwj = remarkService.panduaniscunzaiweijian(order.getTjNumber()); int sfwc = remarkService.panduaniswancheng(order.getTjNumber()); if (zt == 0 && czwj == 0) { //未检0 order.setZt("未检"); orders.add(order); } if (zt == 1 && czwj > 0) { //在检1 order.setZt("在检"); orders.add(order); } if (zt == 2 && sfwc == 0 && order.getCheckStatus() == 0 && order.getCheckTime() == null && order.getHeshouStatus() == 0 && order.getPrintLastTime() == null) { //已完成2 order.setZt("已完成"); orders.add(order); } } if (!orders.isEmpty()) { tjOrders = orders.stream().sorted(Comparator.comparing(TjOrder::getCreateTime).reversed()) .skip((long) (pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); for (TjOrder order : tjOrders) { TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId()); if (null != tjCustomer) { order.setTjCustomerSex(tjCustomer.getCusSex()); order.setTjCustomerAge(DateUtil.ageOfNow(tjCustomer.getCusBrithday())); order.setTjCustomerName(tjCustomer.getCusName()); order.setTjCustomerPhone(tjCustomer.getCusPhone()); order.setTjCusIdCard(tjCustomer.getCusIdcard()); order.setCareer(tjCustomer.getCareer()); order.setIdType(tjCustomer.getIdType()); order.setAgeUnit(tjCustomer.getAgeUnit()); order.setTjCount(String.valueOf(tjCustomer.getCusNumber())); String firmName = order.getFirmName(); if (StringUtil.isNotBlank(firmName)) { order.setDictCompName(firmName); } if (null != order.getPacId()) { if (null != tjPackageService.getById(order.getPacId())) { order.setPacName(tjPackageService.getById(order.getPacId()).getPacName()); } else if (null != dwDeptService.getById(order.getPacId())) { order.setPacName(dwDeptService.getById(order.getPacId()).getDwDeptName()); } } TjDjdDyjl dycs = djdDyjlService.getDjdDyCsByTjNum(order.getTjNumber()); if (null != dycs) order.setDycs(Math.toIntExact(dycs.getDycs())); } } } } map.put("list", tjOrders); map.put("total", orders.size()); return AjaxResult.success(map); } if (null != zt) { if (zt == 3) { //已审核 wq.isNotNull(TjOrder::getCheckTime); wq.eq(TjOrder::getCheckStatus, 1); wq.isNull(TjOrder::getHeshouTime); wq.isNull(TjOrder::getPrintLastTime); wq.eq(TjOrder::getHeshouStatus, 0); } if (zt == 4) { //生成报告 wq.isNotNull(TjOrder::getReportTime); wq.isNull(TjOrder::getHeshouTime); wq.isNull(TjOrder::getPrintLastTime); wq.eq(TjOrder::getHeshouStatus, 0); } if (zt == 5) { //报告核收 wq.eq(TjOrder::getHeshouStatus, 1); wq.isNull(TjOrder::getPrintLastTime); } if (zt == 6) { //已打印 wq.isNotNull(TjOrder::getPrintLastTime); wq.eq(TjOrder::getHeshouStatus, 1); wq.isNotNull(TjOrder::getPrintLastTime); } } wq.orderByDesc(TjOrder::getCreateTime); Page page2 = tjOrderService.page(page1, wq); List list = page2.getRecords(); if (list != null) { for (TjOrder order : list) { TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId()); if (null != tjCustomer) { order.setTjCustomerSex(tjCustomer.getCusSex()); order.setTjCustomerAge(DateUtil.ageOfNow(tjCustomer.getCusBrithday())); order.setTjCustomerName(tjCustomer.getCusName()); order.setTjCustomerPhone(tjCustomer.getCusPhone()); order.setTjCusIdCard(tjCustomer.getCusIdcard()); order.setCareer(tjCustomer.getCareer()); order.setIdType(tjCustomer.getIdType()); order.setAgeUnit(tjCustomer.getAgeUnit()); order.setTjCount(String.valueOf(tjCustomer.getCusNumber())); if (null != tjCustomer.getCompName()) { order.setDictCompName(tjCustomer.getCompName()); } else { String firmId = order.getFirmId(); if (firmId != null && null != iDictCompService.getById(String.valueOf(order.getFirmId()))) { order.setDictCompName(iDictCompService.getById(String.valueOf(order.getFirmId())).getCnName()); } } if (null != order.getPacId()) { if (null != tjPackageService.getById(order.getPacId())) { order.setPacName(tjPackageService.getById(order.getPacId()).getPacName()); } else if (null != dwDeptService.getById(order.getPacId())) { order.setPacName(dwDeptService.getById(order.getPacId()).getDwDeptName()); } } TjDjdDyjl dycs = djdDyjlService.getDjdDyCsByTjNum(order.getTjNumber()); if (null != dycs) order.setDycs(Math.toIntExact(dycs.getDycs())); } int czwj = remarkService.panduaniscunzaiweijian(order.getTjNumber()); int sfwc = remarkService.panduaniswancheng(order.getTjNumber()); Date checkTime = order.getCheckTime(); Date reportTime = order.getReportTime(); Integer heshouStatus = order.getHeshouStatus(); Date lastTime = order.getPrintLastTime(); if (null != zt) { if (zt == 3) { order.setZt("已审核"); } if (zt == 4) { order.setZt("生成报告"); } if (zt == 5) { order.setZt("报告核收"); } if (zt == 6) { order.setZt("已打印"); } } else { if (czwj == 0) { //未检0 order.setZt("未检"); } if (czwj > 0) { //在检1 order.setZt("在检"); } if (sfwc == 0) { //已完成2 order.setZt("已完成"); } if (null != checkTime) { //已审核3 order.setZt("已审核"); } if (null != reportTime) { //生成报告4 order.setZt("生成报告"); } if (1 == heshouStatus) { //报告核收5 order.setZt("报告核收"); } if (null != lastTime) { //已打印6 order.setZt("已打印"); } } } } map.put("list", list); map.put("total", page2.getTotal()); return AjaxResult.success(map); } @GetMapping("/getOrderListOO") @ApiOperation(value = "体检报告页面——体检记录列表") public AjaxResult getOrderListOO(@ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer pageNum, @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize, @ApiParam(value = "打印未打印状态 0未打印 1已打印") @RequestParam(required = false) Integer dyzt, @ApiParam(value = "体检号)") @RequestParam(required = false) String tjNum, @ApiParam(value = "姓名)") @RequestParam(required = false) String name, @ApiParam(value = "单位") @RequestParam(required = false) String dw, @ApiParam(value = "报告开始时间") @RequestParam(required = false) String djbeginTime, @ApiParam(value = "报告结束时间") @RequestParam(required = false) String djendTime) { /* Map map = new HashMap<>(); List cusIds = null; if (StringUtil.isNotBlank(name)) { LambdaQueryWrapper wqq = new LambdaQueryWrapper<>(); wqq.like(TjCustomer::getCusName, name); cusIds = tjCustomerService.list(wqq).stream().map(TjCustomer::getCusId).collect(Collectors.toList()); } Page page1 = new Page<>(pageNum, pageSize); LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); if (dyzt == 0) { wq.isNull(TjOrder::getPrintLastTime); wq.eq(TjOrder::getHeshouStatus, 1); //核收状态为1才能打印 } else { wq.isNotNull(TjOrder::getPrintLastTime); } if (null != djbeginTime && null != djendTime) { wq.between(TjOrder::getCreateTime, DateUtil.beginOfDay(DateUtil.parseDate(djbeginTime)), DateUtil.endOfDay(DateUtil.parseDate(djendTime))); } if (null != tjNum) { wq.like(TjOrder::getTjNumber, tjNum); } if (StringUtil.isNotBlank(dw)) { wq.like(TjOrder::getFirmName, dw); } if (null != cusIds && !cusIds.isEmpty()) { wq.in(TjOrder::getUserId, cusIds); } wq.orderByDesc(TjOrder::getCreateTime); Page page2 = tjOrderService.page(page1, wq); List list = page2.getRecords(); if (list != null) { for (int i = 0; i < list.size(); i++) { TjCustomer tjCustomer = tjCustomerService.getById(list.get(i).getUserId()); if (null == tjCustomer) { list.remove(list.get(i)); continue; } list.get(i).setTjCustomerSex(tjCustomer.getCusSex()); list.get(i).setTjCustomerAge(DateUtil.ageOfNow(tjCustomer.getCusBrithday())); list.get(i).setTjCustomerName(tjCustomer.getCusName()); list.get(i).setTjCustomerPhone(tjCustomer.getCusPhone()); if (tjCustomer.getCusIdcard() != null) { list.get(i).setTjCusIdCard(tjCustomer.getCusIdcard()); } if (null != tjCustomer.getCompName()) { list.get(i).setDictCompName(tjCustomer.getCompName()); } else { String firmId = list.get(i).getFirmId(); if (firmId != null && null != iDictCompService.getById(String.valueOf(list.get(i).getFirmId()))) { list.get(i).setDictCompName(iDictCompService.getById(String.valueOf(list.get(i).getFirmId())).getCnName()); } } if (null != list.get(i).getPacId()) { if (null != tjPackageService.getById(list.get(i).getPacId())) { list.get(i).setPacName(tjPackageService.getById(list.get(i).getPacId()).getPacName()); } if (null != dwDeptService.getById(list.get(i).getPacId())) { list.get(i).setPacName(dwDeptService.getById(list.get(i).getPacId()).getDwDeptName()); } } //从打印记录查出最新打印时间 // LambdaQueryWrapper wqqq = new LambdaQueryWrapper<>(); // wqqq.eq(TjReportPrint::getTjNumber, list.get(i).getTjNumber()); // wqqq.orderByDesc(TjReportPrint::getPrintTime); // wqqq.last("limit 1"); // TjReportPrint one = tjReportPrintService.getOne(wqqq); // if (one != null) { // list.get(i).setPrintLastTime(one.getPrintTime()); // } } } map.put("list", list); map.put("total", page2.getTotal());*/ if (djbeginTime == null) djbeginTime = ""; if (djendTime == null) djendTime = ""; Map map = tjOrderService.getTjBgdyList(pageNum, pageSize, dyzt, tjNum, name, dw, djbeginTime, djendTime); return AjaxResult.success(map); } @GetMapping("/getPrintOrderList") @ApiOperation(value = "体检发票打印接口") public AjaxResult getPrintOrderList(@ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer pageNum, @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize, @ApiParam(value = "体检号)") @RequestParam(required = false) String tjNum, @ApiParam(value = "已打印未打印0未打印1已打印)") @RequestParam(required = false) Integer type, @ApiParam(value = "姓名") @RequestParam(required = false) String name, @ApiParam(value = "报告开始时间") @RequestParam(required = false) Date bgbeginTime, @ApiParam(value = "报告结束时间") @RequestParam(required = false) Date bgendTime) { Map map = new HashMap<>(); List collect = null; if (null != name) { LambdaQueryWrapper wqq = new LambdaQueryWrapper<>(); wqq.like(TjCustomer::getCusName, name); List customerList = tjCustomerService.list(wqq); if (null != customerList && customerList.size() > 0) { List list = new ArrayList<>(); for (TjCustomer customer : customerList) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.isNotNull(TjOrder::getReportTime); wq.eq(TjOrder::getUserId, customer.getCusId()); list.addAll(tjOrderService.list(wq)); } if (list.size() > 0) { for (TjOrder order : list) { TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId()); if (null != tjCustomer) { order.setTjCustomerSex(tjCustomer.getCusSex()); order.setTjCustomerAge(DateUtil.ageOfNow(tjCustomer.getCusBrithday())); order.setGrMoBanId(reportService.getGrMoBanIds()); order.setTjCustomerName(MatchUtils.hideCusName(tjCustomer.getCusName())); if (null != tjCustomer.getCusPhone()) order.setTjCustomerPhone(MatchUtils.hidePhoneNum(tjCustomer.getCusPhone())); if (null != tjCustomer.getCusIdcard()) order.setTjCusIdCard(MatchUtils.hideIdCardNum(tjCustomer.getCusIdcard())); } String firmId = order.getFirmId(); if (firmId != null && null != iDictCompService.getById(String.valueOf(order.getFirmId()))) { order.setDictCompName(iDictCompService.getById(String.valueOf(order.getFirmId())).getCnName()); } if (null != order.getPacId()) { if (null != tjPackageService.getById(order.getPacId())) { order.setPacName(tjPackageService.getById(order.getPacId()).getPacName()); } if (null != dwDeptService.getById(order.getPacId())) { order.setPacName(dwDeptService.getById(order.getPacId()).getDwDeptName()); } } //从打印记录查出最新打印时间 TjPrintOrder one = printOrderService.getTjPrintOrderByTjNum(order.getTjNumber()); if (one != null) { order.setPrintTime(one.getCreateTime()); order.setPrintName(one.getCreateBy()); order.setType(1); } else { order.setType(0); } } collect = list.stream().skip((long) (pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); } if (null != collect) { map.put("total", collect.size()); } else { map.put("total", 0); } map.put("list", collect); return AjaxResult.success(map); } } LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.isNotNull(TjOrder::getReportTime); if (null != tjNum) { wq.eq(TjOrder::getTjNumber, tjNum); List orderList = Optional.ofNullable(tjOrderService.list(wq)).get(); if (orderList.size() > 0) { for (TjOrder order : orderList) { TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId()); if (null != tjCustomer) { order.setTjCustomerSex(tjCustomer.getCusSex()); order.setTjCustomerAge(DateUtil.ageOfNow(tjCustomer.getCusBrithday())); order.setGrMoBanId(reportService.getGrMoBanIds()); order.setTjCustomerName(MatchUtils.hideCusName(tjCustomer.getCusName())); if (null != tjCustomer.getCusPhone()) order.setTjCustomerPhone(MatchUtils.hidePhoneNum(tjCustomer.getCusPhone())); if (null != tjCustomer.getCusIdcard()) order.setTjCusIdCard(MatchUtils.hideIdCardNum(tjCustomer.getCusIdcard())); } String firmId = order.getFirmId(); if (firmId != null && null != iDictCompService.getById(String.valueOf(order.getFirmId()))) { order.setDictCompName(iDictCompService.getById(String.valueOf(order.getFirmId())).getCnName()); } if (null != order.getPacId()) { if (null != tjPackageService.getById(order.getPacId())) { order.setPacName(tjPackageService.getById(order.getPacId()).getPacName()); } if (null != dwDeptService.getById(order.getPacId())) { order.setPacName(dwDeptService.getById(order.getPacId()).getDwDeptName()); } } //从打印记录查出最新打印时间 TjPrintOrder one = printOrderService.getTjPrintOrderByTjNum(order.getTjNumber()); if (one != null) { order.setPrintTime(one.getCreateTime()); order.setPrintName(one.getCreateBy()); order.setType(1); } else { order.setType(0); } } collect = orderList.stream().skip((long) (pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); } if (null != collect) { map.put("total", collect.size()); } else { map.put("total", 0); } map.put("list", collect); return AjaxResult.success(map); } if (null != bgbeginTime && null != bgendTime) { wq.between(TjOrder::getCreateTime, DateUtil.beginOfDay(bgbeginTime), DateUtil.endOfDay(bgendTime)); } List list = Optional.ofNullable(tjOrderService.list(wq)).get(); if (list.size() > 0) { asyncService.getPrintOrderList(list); if (redisCache.hasKey("getPrintOrderList")) { if (null != type && type == 0) { List list1 = redisCache.getCacheMapValue("getPrintOrderList", "0"); collect = list1.stream().skip((long) (pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); } if (null != type && type == 1) { List list1 = redisCache.getCacheMapValue("getPrintOrderList", "1"); collect = list1.stream().skip((long) (pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); } } else { List list1 = new ArrayList<>(); extracted(type, list, list1); collect = list1.stream().skip((long) (pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); } } if (null != collect) { map.put("total", collect.size()); } else { map.put("total", 0); } map.put("list", collect); return AjaxResult.success(map); } private void extracted(Integer type, List list, List list1) { for (TjOrder order : list) { TjCustomer tjCustomer = tjCustomerService.selectTjCustomerByCusId(order.getUserId()); if (null != tjCustomer) { order.setTjCustomerSex(tjCustomer.getCusSex()); order.setTjCustomerAge(DateUtil.ageOfNow(tjCustomer.getCusBrithday())); order.setGrMoBanId(reportService.getGrMoBanIds()); order.setTjCustomerName(MatchUtils.hideCusName(tjCustomer.getCusName())); if (null != tjCustomer.getCusPhone()) order.setTjCustomerPhone(MatchUtils.hidePhoneNum(tjCustomer.getCusPhone())); if (null != tjCustomer.getCusIdcard()) order.setTjCusIdCard(MatchUtils.hideIdCardNum(tjCustomer.getCusIdcard())); } String firmId = order.getFirmId(); if (firmId != null && null != iDictCompService.selectDictCompByDrugManufacturerId(String.valueOf(order.getFirmId()))) { order.setDictCompName(iDictCompService.selectDictCompByDrugManufacturerId(String.valueOf(order.getFirmId())).getCnName()); } if (null != order.getPacId()) { if (null != tjPackageService.getById(order.getPacId())) { order.setPacName(tjPackageService.getById(order.getPacId()).getPacName()); } if (null != dwDeptService.getById(order.getPacId())) { order.setPacName(dwDeptService.getById(order.getPacId()).getDwDeptName()); } } //从打印记录查出最新打印时间 TjPrintOrder one = printOrderService.getTjPrintOrderByTjNum(order.getTjNumber()); if (null != type && type == 1 && one != null) { order.setPrintTime(one.getCreateTime()); order.setPrintName(one.getCreateBy()); order.setType(1); list1.add(order); } if (null != type && type == 0 && one == null) { order.setType(0); list1.add(order); } } } /** * 导出体检记录列表 */ // @PreAuthorize("@ss.hasPermi('hosp:order:export')") @Log(title = "体检记录", businessType = BusinessType.EXPORT) @PostMapping("/export") @ApiOperation(value = "导出体检记录列表") public void export(HttpServletResponse response, TjOrder tjOrder) { //List list = tjOrderService.selectTjOrderList(tjOrder); List list = tjOrderService.selectExportOrderList(tjOrder); ExcelUtil util = new ExcelUtil(TjOrder.class); util.exportExcel(response, list, "体检记录数据"); } /** * 获取体检记录详细信息 */ // @PreAuthorize("@ss.hasPermi('hosp:order:query')") @GetMapping(value = "/{orderId}") @ApiOperation(value = "获取体检记录详细信息") public AjaxResult getInfo(@PathVariable("orderId") Long orderId) { return success(tjOrderService.selectTjOrderByOrderId(orderId)); } @GetMapping("/getIsRequired") @ApiOperation(value = "根据参数配置获取是否必填项(身份证、性别、电话、照片、是否直接下单)") public AjaxResult getIsRequired() { Map res = new HashMap<>(); res.put("has_idcard", configService.selectConfigByKey("has_idcard")); res.put("has_sex", configService.selectConfigByKey("has_sex")); res.put("is_phone", configService.selectConfigByKey("is_phone")); res.put("mall_hasPhoto", configService.selectConfigByKey("mall_hasPhoto")); res.put("has_charge", configService.selectConfigByKey("has_charge")); return AjaxResult.success(res); } /** * 体检签到登记接口 */ ReentrantLock lock = new ReentrantLock(); @PostMapping @ApiOperation(value = "体检签到登记接口") // @Transactional //(切换数据库出错,所以注释) @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("该客户未登记"); // LambdaQueryWrapper wqq = new LambdaQueryWrapper<>(); // wqq.eq(TjOrder::getUserId, tjOrder.getUserId()); // wqq.eq(TjOrder::getCheckStatus, 0); // wqq.isNull(TjOrder::getFinishTime); //// if (!tjCustomer.getCardId().equals("0")) { // wqq.eq(TjOrder::getCardId, tjCustomer.getCardId()); //// } // TjOrder order = tjOrderService.getOne(wqq); // if (null != order) { // transitionService.deletedTbTransitionListByCusIdAndTjNum(tjCustomer.getCusIdcard(), tjCustomer.getCardId()); // 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(new Date()).before(tjReservation.getReservationTime())) { // return AjaxResult.error("未到预约时间"); // } 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.getGroupingId()) { tjOrder.setGroupId(tjReservation.getGroupingId()); tjOrder.setFirmDeptId(tjReservation.getPacId()); } tjReservation.setIsExpire(1); tjReservationService.updateById(tjReservation); if (null != tjReservation.getTeamNo()) { 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){ log.error(String.valueOf(e)); } finally { lock.unlock(); } return AjaxResult.error(); } @Transactional(propagation = Propagation.REQUIRES_NEW, isolation = Isolation.READ_COMMITTED) public AjaxResult processOrderWithTransaction(TjOrder tjOrder, TjCustomer tjCustomer, TjReservation tjReservation, TjFlowingWater tjFlowingWater, MallOrder mallOrder, SysUser sysUser) { //获取拼接前缀 String sfkqtjhqz = configService.selectConfigByKey("sfkqtjhqz"); String makeLisTmhPrefix = ""; if(sfkqtjhqz.equalsIgnoreCase("Y")){ makeLisTmhPrefix = configService.selectConfigByKey("make_lis_tmh_prefix"); } //生成体检号 // String tjNumber = (SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmss").format(new Date())); // if(StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber=makeLisTmhPrefix+tjNumber; // String tjNumber = (SecurityUtils.getUsername() + idUtils.getTjNumber()); // String tjNumber = idUtils.getTjNumber(); 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()); }finally { a++; } } if(StringUtil.isBlank(tjNumber)) return AjaxResult.error("登记失败 重新操作"); 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.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), discount, tjOrder.getTjNumber()); //修改临时表体检号 transitionService.updateTbTransitionTjNumByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber()); //补差价 /* if(subtract.compareTo(BigDecimal.ZERO)>0){ tjFlowingWater.setPaidIn(paidIn.add(subtract)); TbTransition onwTbTransition = transitionService.getOnwTbTransition(tjCustomer.getCusIdcard(),tjOrder.getTjNumber()); if(null !=onwTbTransition){ log.info("签到登记体检人: "+tjOrder.getTjNumber()+"给: "+onwTbTransition.getParentProName()+" "+onwTbTransition.getNowPrice() +" 补差价 "+subtract+" 最终得 "+onwTbTransition.getNowPrice().add(subtract)); onwTbTransition.setNowPrice(onwTbTransition.getNowPrice().add(subtract)); transitionService.updateById(onwTbTransition); } }*/ 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 = 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()); } log.info("该登记人的his就诊号是: " + tjOrder.getCardId()); //团体 /* if ("1".equals(tjOrder.getTjType())) { // asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater); ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater); }*/ //个人 /* if ("2".equals(tjOrder.getTjType())) { //asyncService.newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater); newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater); }*/ // 查询 对接Lis、Pacs申请如果类型包含在配置内则使用对接lis、pacs if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) { log.info("调用his开启 进入不收费方法 该体检人员不收费:"+tjOrder.getTjNumber()); // 这是上面个人方法引入数据 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); List detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId()); addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null); log.info("调用his开启 进入不收费方法 该方法执行完毕"); } else { log.info("调用his开启 进入收费方法 该体检人员不收费:"+tjOrder.getTjNumber()); newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater); List detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId()); addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null); String isUseMx = configService.selectConfigByKey("jcxhis_is_use_mx"); if (isUseMx.equalsIgnoreCase("Y")) hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId()); else hisApiMethod.tijianshenqingJinchuanNew(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId()); } return AjaxResult.success(tjNumber); } else { tjCustomer.setCardId(tjOrder.getTjNumber()); tjCustomerService.updateById(tjCustomer); transitionService.updateCardIdByTjNumAndIdCard(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), tjOrder.getTjNumber()); tjOrder.setCardId(tjOrder.getTjNumber()); tjOrderService.updateById(tjOrder); } //团体 // if ("1".equals(tjOrder.getTjType())) { // ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater); //// asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater); // List detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId()); // addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null); // return AjaxResult.success(tjNumber); // } //个人 // if ("2".equals(tjOrder.getTjType())) { // //asyncService.newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater); // newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater); // List detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId()); // addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null); // // 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::getOrdPrice); // wrapper.gt(TbTransition::getOrdPrice, 0); // // List list = tbTransitionService.list(wrapper); // 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(); // BigDecimal danjia = transition.getOrdPrice(); // 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()); // //// obj.putOpt("zhiXingKs","7805"); //// obj.putOpt("zhiXingKsMc","体检科"); //// obj.putOpt("shouFeiXmId","4735346"); //// obj.putOpt("shouFeiXmMc","体检费"); // array.add(obj); // } // map.put("feiYongInfoList", array); // // 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 AjaxResult.success(tjNumber); // } // 查询 对接Lis、Pacs申请如果类型包含在配置内则使用对接lis、pacs log.info("签到登记接口该人员: "+tjOrder.getTjNumber()+" 的体检类型是:"+tjOrder.getTjType()); if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) { log.info(tjOrder.getTjNumber()+"签到登记进入未收费方法"); // 这是上面个人方法引入数据 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(tjOrder.getTjNumber()+"签到登记:采样数据查询个数"+detailList.size()); addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null); return AjaxResult.success(tjNumber); } else { log.info(tjOrder.getTjNumber()+"else签到登记进入收费方法"); newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater); AjaxResult error = isRequestCommonHisApi(tjOrder, tjCustomer, tjFlowingWater); if (error != null) return error; // List detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId()); // addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null); } return AjaxResult.success(tjNumber); // pacsApiMethodService.OrderAdd(tjCustomer,tjOrder); // return AjaxResult.success(tjNumber); } TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error(); } 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; } public void addCaiYangDengJi(List detailList, boolean detailList1, TjOrder order, SysUser sysUser, String jxbz) { try { 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())); } } catch (Exception e) { log.error(e.getMessage()); } } @GetMapping("/addCaiYangDengJi") @ApiOperation(value = "手动添加采样记录接口") public AjaxResult addCaiYangDengJi(@RequestParam("tjNum") String tjNum){ try { TjOrder order = tjOrderService.getOrderByTjNum(tjNum); if(null !=order){ Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId()); SysUser sysUser = userService.getById(userId); List detailList = tjOrderDetailService.getCaiYangDengJi(order.getOrderId()); log.info("签到登记:采样数据查询个数"+detailList.size()); addCaiYangDengJi(detailList, !detailList.isEmpty(), order, sysUser, null); } } catch (NumberFormatException e) { log.error(String.valueOf(e)); } return AjaxResult.success(); } @PostMapping("/addPlOrderAndDetail") @ApiOperation(value = "体检批量签到登记接口") // @Transactional //(切换数据库出错,所以注释) public AjaxResult addPlOrderAndDetail(@RequestBody QianDaoDto daoDto, HttpServletResponse response) { SysUser sysUser = UserHoder.getLoginUser().getUser(); List cusIds = daoDto.getCusIds(); ArrayList tjNumbers = new ArrayList<>(); ArrayList errTjh = new ArrayList<>(); if (null != cusIds && !cusIds.isEmpty()) { ExecutorService threadPools = Executors.newFixedThreadPool(cusIds.size()); for (String cusId : cusIds) { threadPools.execute(new Runnable() { @Override public void run() { getAjaxResults(cusId); } }); } LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.in(TjCustomer::getCusIdcard, cusIds); List list = tjCustomerService.list(wq).stream().map(TjCustomer::getCusId).collect(Collectors.toList()); if (!list.isEmpty()) { // ExecutorService threadPool = Executors.newFixedThreadPool(list.size()); ThreadPoolTaskExecutor executor = threadPoolConfig.threadPoolTaskExecutor(); for (Long aLong : list) { // threadPool.execute(new Runnable() { // @Override // public void run() { // try { // AjaxResult result = getAjaxResult(aLong, sysUser, daoDto.getTjCategory()); // threadPool.shutdown(); // } catch (IOException e) { // e.printStackTrace(); // } // } // }); Future future = executor.submit(new Callable() { @Override public AjaxResult call() throws Exception { return getAjaxResult(aLong, sysUser, daoDto.getTjCategory()); } }); try { AjaxResult result = future.get(); String code = result.get("code").toString(); if (code.equals("200")) { String tjNumber = result.get("tjNumber").toString(); tjNumbers.add(tjNumber); }else { String userId = result.get("userId").toString(); errTjh.add(userId); } } catch (InterruptedException | ExecutionException e) { // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); e.printStackTrace(); } } threadPools.shutdown(); } // TODO 因为有体检号会查出空数据 先使用死数据 打印导诊单 if (!tjNumbers.isEmpty()) { /* Map map = null; try { map = PDFDocumentUtil.getDocument(); Document document = (Document) map.get("document"); // for (int i = 0; i < tjNumbers.size(); i++) { int i = 0; for (String tjNumber : tjNumbers) { try { List> djdInfos = tjOrderService.selectDjdInfo(tjNumber); Map userInfo = tjOrderService.selectDjdUserInfo(tjNumber); if(null !=userInfo && null !=djdInfos && !djdInfos.isEmpty()){ LocalDateTime tjsj = (LocalDateTime) userInfo.get("tjsj"); DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); String time = null; if (tjsj != null) { time = dateFormat.format(tjsj); } PDFDocumentUtil.makeUserInfoTable(document, (String) userInfo.get("tjname"), (String) userInfo.get("sex") , (String) userInfo.get("tjh"), (String) userInfo.get("lxdh"), (String) userInfo.get("tjname"), time); PDFDocumentUtil.makeTjInfo(document, djdInfos); // 多条则换页 if (i + 1 < tjNumbers.size()) { document.newPage(); } } } catch (DocumentException | IOException e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //这里删除的是这个人所有项目包括补录项目 TjOrder order = tjOrderService.getOrderByTjNum(tjNumber); tjOrderService.deleteTjOrderByOrderId(order.getOrderId()); tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId())); remarkService.deletedOrderRemarkByTjNum(tjNumber); tjFlowingWaterService.deleteTjFlowingWaterByOrderId(String.valueOf(order.getOrderId())); // transitionService.deletedTbTransitionByTjNum(tjNum); tjSamplingMapper.deleteByTjNumAndCusId(order.getTjNumber(), order.getUserId()); TjReservation reservation = tjReservationService.getById(order.getReservationId()); if(null !=reservation){ reservation.setIsExpire(2); tjReservationService.updateById(reservation); transitionService.updateTbTransitionByTjNum(tjNumber); } e.printStackTrace(); } } // } document.close(); ByteArrayOutputStream outputStream = (ByteArrayOutputStream) map.get("stream"); String encodeToString = java.util.Base64.getEncoder().encodeToString(outputStream.toByteArray()); return AjaxResult.success().put("file", encodeToString); } catch (IOException | DocumentException e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); e.printStackTrace(); }*/ Map map=new HashMap<>(); map.put("tjh",tjNumbers); return AjaxResult.success("操作成功",map); } if (!errTjh.isEmpty()){ Map map=new HashMap<>(); map.put("errtjh",errTjh); return AjaxResult.success("以上人员签到失败",map); } return AjaxResult.success(); } // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error(); } @GetMapping("/signOrderInfo") public AjaxResult signOrderInfo(@RequestParam("tjNum") String tjNum){ List> djdInfos = tjOrderService.selectDjdInfo(tjNum); Map userInfo = tjOrderService.selectDjdUserInfo(tjNum); HashMap hashMap = new HashMap<>(); hashMap.put("djd",djdInfos); hashMap.put("user",userInfo); return AjaxResult.success(hashMap); } @Transactional public void getAjaxResults(String cusIdcard) { if (!"".equals(cusIdcard) && cusIdcard != null) { //根据配置调取存储过程 将临时表数据存入预约表2023.12.12 final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData"); if ("Y".equals(getInfoFromSqlData)) { //根据身份证号从his查信息 LtkjTjPat tjPatByIdCard = testMapper.getTjPatByIdCard(cusIdcard); if (null != tjPatByIdCard) { String fcardNo = tjPatByIdCard.getFcardNo(); if (null != fcardNo && !fcardNo.equals("")) { fcardNo = fcardNo.trim(); tjPatByIdCard.setFcardNo(fcardNo); } else { fcardNo = cusIdcard.trim(); tjPatByIdCard.setFcardNo(fcardNo); } //根据身份证号从数据库拿信息 没有的话保存 LtkjTjPat ltkjTjPat = tjvLtkjvtjpatService.getLtkjTjPatByCusIdCard(cusIdcard); if (null == ltkjTjPat) { tjvLtkjvtjpatService.save(tjPatByIdCard); } DynamicDataSourceContextHolder.clearDataSourceType(); //再根据身份证号写customer表 TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(tjPatByIdCard.getFcardNo()); if (null == tjCustomer) { //为空的话掉存储过程保存到客户表 testMapper.getTjPatByCusId(cusIdcard); LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); qw.eq(TjCustomer::getCusIdcard, tjPatByIdCard.getFcardNo()); TjCustomer customer = tjCustomerService.getOne(qw); customer.setReservationId(customer.getCardId()); extracteds(customer); } else { String cardId = tjPatByIdCard.getFcardId(); if (null != cardId && !cardId.equals("0")) { int i = tjOrderService.selectTjOrderByCardId(cardId); if (i > 0) { // return AjaxResult.error("不可重复签到"); } } tjCustomer.setReservationId(tjCustomer.getCardId()); tjCustomer.setCardId(tjPatByIdCard.getFcardId()); tjCustomerService.updateById(tjCustomer); extracteds(tjCustomer); } } } //end====2023.12.12 LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjReservation::getIdCard, cusIdcard); wq.eq(TjReservation::getIsExpire, 2); TjReservation tjReservation = tjReservationService.getOne(wq); if (tjReservation != null) { /* if (DateUtil.endOfDay(new Date()).before(tjReservation.getReservationTime())) { // return AjaxResult.error("未到预约时间"); } if (null != tjReservation.getReservationTime() && DateUtil.endOfDay(tjReservation.getReservationTime()).before(new Date())) { tjReservation.setIsExpire(1); tjReservationService.updateById(tjReservation); // return AjaxResult.error("对不起您的预约已超时请重新预约"); }*/ LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); qw.eq(TjCustomer::getCusIdcard, cusIdcard); TjCustomer tjCustomer1 = tjCustomerService.getOne(qw); if (tjCustomer1 != null) { tjCustomer1.setTjType(tjReservation.getTjType()); tjCustomer1.setCusName(tjReservation.getName()); tjCustomer1.setCusSex(Long.valueOf(tjReservation.getSex())); tjCustomer1.setCusBrithday(tjReservation.getBirthday()); tjCustomer1.setCusPhone(tjReservation.getPhoe()); tjCustomer1.setCusEmail(tjReservation.getEmail()); tjCustomer1.setCusAddr(tjReservation.getAddress()); tjCustomer1.setCusMarryStatus(String.valueOf(tjReservation.getMarriage())); tjCustomer1.setCusNational(String.valueOf(tjReservation.getNation())); tjCustomer1.setIdType(tjReservation.getIdType()); tjCustomer1.setAge(tjReservation.getAge()); tjCustomer1.setAgeUnit(tjReservation.getAgeUnit()); tjCustomer1.setCareer(tjReservation.getCareer()); tjCustomerService.updateById(tjCustomer1); } else { TjCustomer tjCustomer = new TjCustomer(); tjCustomer.setCusIdcard(tjReservation.getIdCard()); tjCustomer.setCusName(tjReservation.getName()); tjCustomer.setCusSex(Long.valueOf(tjReservation.getSex())); tjCustomer.setCusBrithday(tjReservation.getBirthday()); tjCustomer.setCusPhone(tjReservation.getPhoe()); tjCustomer.setCusEmail(tjReservation.getEmail()); tjCustomer.setCusAddr(tjReservation.getAddress()); tjCustomer.setCusMarryStatus(String.valueOf(tjReservation.getMarriage())); tjCustomer.setCusNational(String.valueOf(tjReservation.getNation())); tjCustomer.setIdType(tjReservation.getIdType()); tjCustomer.setAge(tjReservation.getAge()); tjCustomer.setAgeUnit(tjReservation.getAgeUnit()); tjCustomer.setCareer(tjReservation.getCareer()); tjCustomer.setDwPhone(tjReservation.getDwPhone()); tjCustomer.setCardId(tjReservation.getCardId()); tjCustomer.setIndexCard(tjReservation.getIndexCard()); //截取密码自动生成set进去 String substring = cusIdcard.substring(cusIdcard.length() - 6); substring = DigestUtils.md5DigestAsHex(substring.getBytes()); tjCustomer.setCusPassword(substring); tjCustomer.setTjType(tjReservation.getTjType()); tjCustomerService.save(tjCustomer); } } } } private void extracteds(TjCustomer customer) { //从his表抓数据 LtkjMiddleHead pat = testMapper.getMiddleHeadByPartId(customer.getCardId()); if (null != pat) { LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(LtkjMiddleHead::getFeadId, customer.getCardId()); headService.remove(wq1); LambdaQueryWrapper wq0 = new LambdaQueryWrapper<>(); wq0.eq(LtkjMiddleDetail::getFheadId, pat.getFeadId()); middleDetailService.remove(wq0); List list = testMapper.getMiddleDetailByFeadId(pat.getFeadId()); DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name()); LtkjMiddleHead o = headService.getMiddleHeadByPartId(customer.getCardId()); if (o == null) { headService.save(pat); for (LtkjMiddleDetail ltkjMiddleDetail : list) { middleDetailService.save(ltkjMiddleDetail); } } testMapper.saveTjProByCusId(customer.getCardId(), customer.getCusIdcard()); } DynamicDataSourceContextHolder.clearDataSourceType(); } @Transactional public AjaxResult getAjaxResult(Long userId, SysUser sysUser, String tjCategory) throws IOException { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjCustomer::getCusId, userId); TjCustomer tjCustomer = tjCustomerService.getOne(wq); if (tjCustomer == null) return AjaxResult.error("该客户未登记或不存在"); TjOrder tjOrder = new TjOrder(); Date date = new Date(); tjOrder.setCreateTime(date); tjOrder.setUpdateTime(date); tjOrder.setCreateBy(sysUser.getNickName()); tjOrder.setUpdateBy(sysUser.getNickName()); tjOrder.setUserId(userId); tjOrder.setTjCategory(tjCategory); LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjReservation::getIdCard, tjCustomer.getCusIdcard()); wq1.eq(TjReservation::getIsExpire, 2); TjReservation tjReservation = tjReservationService.getOne(wq1); MallOrder mallOrder = null; if (tjReservation != null) { tjOrder.setReservationId(tjReservation.getId()); mallOrder = mallOrderService.getOne(new LambdaQueryWrapper().eq(MallOrder::getReservationId, tjReservation.getId())); // if (DateUtil.endOfDay(new Date()).before(tjReservation.getReservationTime())) { // return AjaxResult.error("未到预约时间"); // } // if (DateUtil.endOfDay(tjReservation.getReservationTime()).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.getGroupingId()) { tjOrder.setGroupId(tjReservation.getGroupingId()); tjOrder.setFirmDeptId(tjReservation.getPacId()); } tjReservation.setIsExpire(1); tjReservationService.updateById(tjReservation); if (null != tjReservation.getTeamNo()) { tjOrder.setTjType("1"); } else{ tjOrder.setTjType("2"); } if (StringUtil.isBlank(tjOrder.getFirmId())) { tjOrder.setFirmId("0"); } // // tjReservation.setIsExpire(1); // tjReservationService.updateById(tjReservation); //生成体检号 // String tjNumber = (sysUser.getUserName() + new SimpleDateFormat("yyMMddHHmmss").format(new Date())); // tjNumber = tjNumber.replaceAll(".{6}$", userId.toString().substring(userId.toString().length() - 6)); //获取拼接前缀 String makeLisTmhPrefix = configService.selectConfigByKey("make_lis_tmh_prefix"); // String tjNumber = (sysUser.getUserName() + idUtils.getTjNumber()); // String tjNumber = idUtils.getTjNumber(); String tjNumber = idUtils.getNewTjNumberRedisLockAndMysql(); if (StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber = makeLisTmhPrefix + tjNumber; // if (redisCache.hasKey(TJH)) { // while (true){ // List tjh = redisCache.getCacheList(TJH); // if(tjh.contains(tjNumber)){ // tjNumber =(sysUser.getUserName() + IdUtils.getTjNumber()); // if (StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber = makeLisTmhPrefix + tjNumber; // }else { // tjh.add(tjNumber); // } // } // }else { // List stringList = tjOrderService. // list(new LambdaQueryWrapper().select(TjOrder::getTjNumber)).stream().map(TjOrder::getTjNumber).collect(Collectors.toList()); // stringList.add(tjNumber); // redisCache.setCacheList(TJH,stringList); // } tjOrder.setTjNumber(tjNumber); 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 (tjOrder.getFirmId() == null) { tjOrder.setFirmId("0"); } 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()); tjOrder.setTjType("1"); 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); // BigDecimal discount = BigDecimal.valueOf(Double.parseDouble(tjOrder.getTjFlowingWater().getDiscount())).divide(BigDecimal.valueOf(10)); TjFlowingWater tjFlowingWater = new TjFlowingWater(); tjFlowingWater.setCreateTime(date); tjFlowingWater.setCreateTime(date); tjFlowingWater.setUpdateTime(date); tjFlowingWater.setCreateBy(sysUser.getNickName()); tjFlowingWater.setUpdateBy(sysUser.getNickName()); // BigDecimal bigDecimal = tbTransitionMapper.sumTbTransitionOrdPriceByTjNum(tjOrder.getTjNumber()); BigDecimal bigDecimal = tbTransitionMapper.sumTbTransitionOrdPriceByTjNumIsNull(tjCustomer.getCusIdcard()); tjFlowingWater.setCopeWith(bigDecimal); // BigDecimal bigDecimal1 = tbTransitionMapper.sumTbTransitionNowPriceByTjNum(tjOrder.getTjNumber()); BigDecimal bigDecimal1 = tbTransitionMapper.sumTbTransitionNowPriceByTjNumIsNull(tjCustomer.getCusIdcard()); tjFlowingWater.setPaidIn(bigDecimal1); tjFlowingWater.setDiscount(String.valueOf(10)); tjFlowingWater.setPayStasus(1L); tjFlowingWater.setPayType(3L); tjFlowingWater.setPayStasus(0L); if ("1".equals(tjOrder.getTjType())) { if (tjReservation.getPayType() == 1) { tjFlowingWater.setPayStasus(3L); } } //调用SQL server拿取收费情况 //根据配置调取存储过程 将临时表数据存入预约表2023.12.12 String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData"); 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 = sysUser.getUserName() + new SimpleDateFormat("yyMMddHHmmssSSS").format(date1); tjFlowingWater.setWaterId(PinyinUtil.getFirstLetter(tjCustomer.getCusName(), "").toUpperCase() + s1); 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); } } } if (tjFlowingWaterService.save(tjFlowingWater)) { tjOrder.setTjSerialNumber(String.valueOf(tjFlowingWater.getTjSerialNumber())); tjOrderService.updateById(tjOrder); } transitionService.updateTbTransitionTjNumByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber()); tjCustomer.setCardId(tjOrder.getTjNumber()); tjCustomerService.updateById(tjCustomer); transitionService.updateCardIdByTjNumAndIdCard(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), tjOrder.getTjNumber()); tjOrder.setCardId(tjOrder.getTjNumber()); tjOrderService.updateById(tjOrder); // asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater); if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) { // 这是上面个人方法引入数据 tjFlowingWater.setPayStasus(1L); tjOrder.setTjFlowingWater(tjFlowingWater); newSaveextracted(tjOrder, tjCustomer, BigDecimal.valueOf(10), 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()); addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null); // return AjaxResult.success(tjNumber); } tjCustomer.setCardId("0"); tjCustomerService.updateById(tjCustomer); return AjaxResult.success().put("tjNumber", tjNumber); } } TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error().put("userId",userId); } /** * 修改体检记录 */ // @PreAuthorize("@ss.hasPermi('hosp:order:edit')") @Log(title = "体检记录", businessType = BusinessType.UPDATE) @PutMapping @ApiOperation(value = "修改体检记录") public AjaxResult edit(@RequestBody TjOrder tjOrder) { return toAjax(tjOrderService.updateTjOrder(tjOrder)); } /** * 删除体检记录 */ // @PreAuthorize("@ss.hasPermi('hosp:order:remove')") @Log(title = "体检记录", businessType = BusinessType.DELETE) @DeleteMapping("/{orderIds}") @ApiOperation(value = "删除体检记录") public AjaxResult remove(@PathVariable Long[] orderIds) { return toAjax(tjOrderService.deleteTjOrderByOrderIds(orderIds)); } @GetMapping("/getOrderDetailByTjNumber") @ApiOperation(value = "根据体检号获取体检详情") public AjaxResult getOrderDetailByTjNumber(@RequestParam @ApiParam(value = "体检号") String tjNumber) { LambdaQueryWrapper wq0 = new LambdaQueryWrapper<>(); wq0.eq(TjOrder::getTjNumber, tjNumber); TjOrder tjOrder = tjOrderService.getOne(wq0); if (null != tjOrder) { LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjOrderDetail::getOrderId, tjOrder.getOrderId()); List detailList = tjOrderDetailService.list(wq1); if (null != detailList && detailList.size() > 0) { for (TjOrderDetail detail : detailList) { if (projectService.getById(detail.getProId()).getProParentId() != 0) { detail.setProject(projectService.getById(detail.getProId())); } } } return AjaxResult.success(detailList); } return AjaxResult.success("暂无数据"); } @PostMapping("/addtTransition") @ApiOperation(value = "添加过渡表数据") @Transactional public AjaxResult addtTransition(@RequestBody Map map) { Object packId = map.get("pacId"); if (null == map.get("cusId")) return AjaxResult.error("请选择体检人"); String cusId = map.get("cusId").toString(); Object proIds1 = map.get("proIds"); List proIds = null; if (null != proIds1 && !proIds1.equals("")) { proIds = JSON.parseArray(proIds1.toString(), Long.class); } TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(cusId); String cardId = "0"; if (null != tjCustomer) { cardId = tjCustomer.getCardId(); } if ((null == proIds || proIds.isEmpty()) && (null == packId || packId.equals(""))) { transitionService.deletedTbTransitionByCusId(cusId); if (redisCache.hasKey(cardId + cusId)) { redisCache.deleteObject(cardId + cusId); } if (redisCache.hasKey(cardId + cusId + "cusId")) { redisCache.deleteCacheMapValue(cardId + cusId + "cusId", cardId + cusId); } } /*套餐*/ if (null != packId && !packId.equals("")) { Long pacId = Long.valueOf(packId.toString()); List list = transitionService.getTbTransitionListByCusIdAndPac(cusId, String.valueOf(pacId)); if (null == list || list.isEmpty()) { transitionService.deletedTbTransitionListByCusIdAndPac(cusId, cardId); List ppList = tjPackageProjectService.getTjPackageProjectListByPacId(String.valueOf(pacId)); if (null != ppList && !ppList.isEmpty()) { String string = transitionService.panduantaocanshifouchongfu(cusId, pacId); if (!StringUtils.isBlank(string)) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error("操作失败! 以下项目已存在: " + string); } transitionService.saveRedisTransitionByPacId(cusId, cardId, pacId); //补差价 List> cjMaps = transitionService.addTbhuoquxiangmuchajia(pacId.toString(), cusId); if (null != cjMaps && !cjMaps.isEmpty()) { log.info("该套餐"+pacId+"中有差价:"+cjMaps.size()+"个"); for (Map cjMap : cjMaps) { log.info("添加临时表套餐数据时所选的差价为:"+ cjMap.get("cj").toString()); transitionService.buxiangmuchajia(cusId, pacId.toString(), cjMap.get("xmid").toString(), new BigDecimal(cjMap.get("cj").toString())); } } } } } //单项 if (null != proIds && !proIds.isEmpty()) { //异步保存数据库表 for (Long proId : proIds) { TjProject project = projectService.selectTjProjectByProId(proId); if (null != project) { List transitionList = transitionService.getTbTransitionListByCusIdAndPacIdAndProId(cusId, String.valueOf(proId)); if (null == transitionList || transitionList.isEmpty()) { transitionService.saveRedisTransitionByProId(cusId, cardId, proId); } } } } return AjaxResult.success(); } @GetMapping("/getTransitionList") @ApiOperation(value = "查询过渡表数据") public AjaxResult getTransitionList(@RequestParam @ApiParam(value = "客户id") String cusId) { if (redisCache.hasKey(cusId + "cusId")) { List> list = redisCache.getCacheMapValue(cusId + "cusId", cusId); return AjaxResult.success(list); } TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(cusId); String cardId = "0"; if (null != tjCustomer) { cardId = tjCustomer.getCardId(); } List> list = getMaps(cusId, cardId); return AjaxResult.success(list); } @GetMapping("/getQianLiList") @ApiOperation(value = "查询体检记录列表") public AjaxResult getQianLiList(@ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer pageNum, @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize, @ApiParam(value = "体检号") @RequestParam(required = false) String tjNum, @ApiParam(value = "姓名") @RequestParam(required = false) String name, @ApiParam(value = "登记开始时间") @RequestParam(required = false) Date djbeginTime, @ApiParam(value = "登记结束时间") @RequestParam(required = false) Date djendTime, @ApiParam(value = "报告开始时间") @RequestParam(required = false) Date bgbeginTime, @ApiParam(value = "报告结束时间") @RequestParam(required = false) Date bgendTime) { Map map = new HashMap<>(); if (null != name) { LambdaQueryWrapper wqq = new LambdaQueryWrapper<>(); wqq.like(TjCustomer::getCusName, name); List customerList = tjCustomerService.list(wqq); if (null != customerList && customerList.size() > 0) { List list = new ArrayList<>(); for (TjCustomer customer : customerList) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); if (null != djbeginTime && null != djendTime) { wq.between(TjOrder::getCreateTime, DateUtil.beginOfDay(djbeginTime), DateUtil.endOfDay(djendTime)); } wq.eq(TjOrder::getUserId, customer.getCusId()); wq.isNull(TjOrder::getFinishTime); list.addAll(tjOrderService.list(wq)); } List collect = null; if (list.size() > 0) { for (TjOrder order : list) { TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId()); if (null != tjCustomer) { order.setTjCustomerName(tjCustomer.getCusName()); order.setTjCustomerSex(tjCustomer.getCusSex()); order.setTjCustomerAge(DateUtil.ageOfNow(tjCustomer.getCusBrithday())); order.setTjCustomerPhone(MatchUtils.hidePhoneNum(tjCustomer.getCusPhone())); order.setTjCusIdCard(MatchUtils.hideIdCardNum(tjCustomer.getCusIdcard())); order.setCareer(tjCustomer.getCareer()); order.setIdType(tjCustomer.getIdType()); order.setAgeUnit(tjCustomer.getAgeUnit()); order.setTjCount(String.valueOf(tjCustomer.getCusNumber())); } String firmId = order.getFirmId(); if (firmId != null && null != iDictCompService.getById(String.valueOf(order.getFirmId()))) { order.setDictCompName(iDictCompService.getById(String.valueOf(order.getFirmId())).getCnName()); } if (null != order.getPacId()) { if (null != tjPackageService.getById(order.getPacId())) { order.setPacName(tjPackageService.getById(order.getPacId()).getPacName()); } if (null != dwDeptService.getById(order.getPacId())) { order.setPacName(dwDeptService.getById(order.getPacId()).getDwDeptName()); } } } collect = list.stream().skip((long) (pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); } if (null != collect) { map.put("total", collect.size()); } else { map.put("total", 0); } map.put("list", collect); return AjaxResult.success(map); } } Page page1 = new Page<>(pageNum, pageSize); LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); if (null != djbeginTime && null != djendTime) { wq.between(TjOrder::getCreateTime, DateUtil.beginOfDay(djbeginTime), DateUtil.endOfDay(djendTime)); } if (null != bgbeginTime && null != bgendTime) { wq.between(TjOrder::getCreateTime, DateUtil.beginOfDay(bgbeginTime), DateUtil.endOfDay(bgendTime)); } if (null != tjNum) { wq.eq(TjOrder::getTjNumber, tjNum); } wq.orderByDesc(TjOrder::getCreateTime); wq.isNull(TjOrder::getFinishTime); Page page2 = tjOrderService.page(page1, wq); List list = page2.getRecords(); if (list != null) { for (TjOrder order : list) { TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId()); if (null != tjCustomer) { order.setTjCustomerName(tjCustomer.getCusName()); order.setTjCustomerSex(tjCustomer.getCusSex()); order.setTjCustomerAge(DateUtil.ageOfNow(tjCustomer.getCusBrithday())); order.setTjCustomerPhone(MatchUtils.hidePhoneNum(tjCustomer.getCusPhone())); order.setTjCusIdCard(MatchUtils.hideIdCardNum(tjCustomer.getCusIdcard())); order.setCareer(tjCustomer.getCareer()); order.setIdType(tjCustomer.getIdType()); order.setAgeUnit(tjCustomer.getAgeUnit()); order.setTjCount(String.valueOf(tjCustomer.getCusNumber())); } String firmId = order.getFirmId(); if (firmId != null && null != iDictCompService.getById(String.valueOf(order.getFirmId()))) { order.setDictCompName(iDictCompService.getById(String.valueOf(order.getFirmId())).getCnName()); } if (null != order.getPacId()) { if (null != tjPackageService.getById(order.getPacId())) { order.setPacName(tjPackageService.getById(order.getPacId()).getPacName()); } if (null != dwDeptService.getById(order.getPacId())) { order.setPacName(dwDeptService.getById(order.getPacId()).getDwDeptName()); } } } } map.put("list", list); map.put("total", page2.getTotal()); return AjaxResult.success(map); } /** * 签离弃检确认返回数据 */ @GetMapping("/abandon") @ApiOperation(value = "签离弃检确认返回数据") public AjaxResult abandon(@RequestParam @ApiParam(value = "体检号") String tjNumber) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjOrderRemark::getTjNumber, tjNumber); List remarkList = remarkService.list(wq); if (null != remarkList && remarkList.size() > 0) { for (TjOrderRemark remark : remarkList) { TjProject project = projectService.getTjProjectById(String.valueOf(remark.getProId())); if (null != project) { // if ("N".equals(project.getNeedReport())) { // continue; // } remark.setProCheckType(project.getProCheckType()); remark.setProName(project.getProName()); } } } return AjaxResult.success(remarkList); } /** * 签离 * * @ApiParam(value = "体检号") String tjNumber */ @PostMapping("/tjGoOut") @ApiOperation(value = "体检签离") @Transactional public AjaxResult tjGoOut(@RequestBody Map map) { Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId()); SysUser sysUser = userService.getById(userId); List domainVos1 = (List) map.get("domainVos"); String jsonString = com.alibaba.fastjson.JSON.toJSONString(domainVos1); List domainVos = com.alibaba.fastjson.JSON.parseArray(jsonString, QjDomainVo.class); String tjNumber = map.get("tjNumber").toString(); TjOrder tjOrder = tjOrderService.getOrderByTjNum(tjNumber); if (null != domainVos && domainVos.size() > 0) { Set list = new HashSet<>(); for (QjDomainVo domainVo : domainVos) { TjOrderRemark remark = remarkService.getById(domainVo.getRemarkId()); if (null != remark) { remark.setType(domainVo.getType()); if (null != remark.getYqDeadline()) remark.setYqDeadline(DateUtil.offsetDay(remark.getCreateTime(), domainVo.getDay())); if (null != remark.getRemark()) remark.setRemark(domainVo.getRemark()); remarkService.updateById(remark); if (domainVo.getType() == 3) { list.add(String.valueOf(domainVo.getTjNumber())); } else { if (null != tjOrder) { tjOrder.setFinishTime(new Date()); tjOrder.setStatus(TjConstants.TJ_CONFIRM); tjOrderService.updateById(tjOrder); } } } } remarkService.updateRemark(tjNumber); asyncService.tjGoutAsync(domainVos, sysUser, list); TjCustomer customer = tjCustomerService.selectTjCustomerByCusId(tjOrder.getUserId()); customer.setCardId("0"); tjCustomerService.updateById(customer); /* String config = configService.selectConfigByKey("sfkqdyhis"); if(null !=config && config.equals("Y")){ final String date = DateUtil.format(tjOrder.getCreateTime(), "yyyy-MM-dd HH:mm:ss"); OutpinimpapplyDto dto=new OutpinimpapplyDto(); dto.setHisRegistrationId(tjOrder.getCardId()); dto.setMzzdid(1); dto.setSqysbm("00029"); dto.setMzksbm("0101"); dto.setFbrq(date); dto.setZdrq(date); dto.setCzybm("00029"); dto.setCzyksbm("0101"); dto.setZs("健康查体"); dto.setBs("不详"); dto.setClyz(""); dto.setJws(""); dto.setTgjc(""); dto.setGms(""); dto.setJbbm("Z00.001"); dto.setJbbm1(""); dto.setJbbm2(""); dto.setFzbz("1"); dto.setHzqx("6"); dto.setSfqc("0"); dto.setQchs(""); dto.setSfqj("0"); dto.setJzqk(9); controller.Outpinimpapply(dto); }*/ return AjaxResult.success("签离成功!"); } else { remarkService.updateRemark(tjNumber); return getAjaxResult(tjNumber); } } /** * 签离 */ @GetMapping("/goOut") @ApiOperation(value = "签离") @Transactional public AjaxResult goOut(@RequestParam @ApiParam(value = "体检号") String tjNumber) { return getAjaxResult(tjNumber); } /** * 核销订单接口 */ @GetMapping("/orderShip") @ApiOperation(value = "PC端手动核销订单接口") public AjaxResult orderShip(@RequestParam @ApiParam(value = "体检号") String tjNum) { if (tjNum == null) { return AjaxResult.error(); } TjOrder tjOrder = tjOrderService.getOrderByTjNum(tjNum); MallOrder order = mallOrderService.getById(tjOrder.getMallOrderId()); if (order == null) { return AjaxResult.error(); } OrderHandleOption handleOption = OrderUtil.build(order); if (!handleOption.isCanship()) { return AjaxResult.error("订单不能核销"); } Date date = new Date(); order.setOrderStatus(OrderUtil.STATUS_SHIP.longValue()); order.setShipTime(date); order.setConfirmTime(date); MallCheckLog checkLog = new MallCheckLog(); String s1 = SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmssSSS").format(date); checkLog.setCheckBy(String.valueOf(SecurityUtils.getUserId())); checkLog.setUserId(order.getUserId()); checkLog.setConsignee(order.getConsignee()); checkLog.setIdCard(order.getIdCard()); checkLog.setOrderId(String.valueOf(order.getId())); checkLog.setOrderSn(order.getOrderSn()); checkLog.setCheckTime(date); checkLog.setShipSn("HX" + s1); mallCheckLogService.save(checkLog); mallOrderService.updateById(order); return AjaxResult.success(); } private List> getMaps(String cusId, String cardId) { List transitionList = null; transitionList = transitionService.getTbTransitionListByCusId(cusId, cardId); if (null == transitionList) return null; Map> collect = transitionList.stream().collect(Collectors.groupingBy(TbTransition::getParentProId)); List> list = new ArrayList<>(); for (Map.Entry> entry : collect.entrySet()) { Map map = new HashMap<>(); Long pacId = entry.getValue().get(0).getPacId(); map.put("proPrantId", entry.getKey().toString()); if (null != pacId) { TjPackage aPackage = tjPackageService.getById(entry.getValue().get(0).getPacId()); if (null != aPackage) { map.put("tjCategory", aPackage.getTjCategory()); map.put("pacName", aPackage.getPacName()); TjProject tjProject = projectService.getById(entry.getKey()); map.put("ordPrice", tjProject.getProPrice()); map.put("nowPrice", transitionService.getTbTransitionDxPriceByPac(cusId, entry.getKey(), cardId, pacId)); } else { TjDwGrouping grouping = dwGroupingService.getById(pacId); map.put("tjCategory", null); map.put("pacName", grouping.getGroupingName()); TjProject tjProject = projectService.getById(entry.getKey()); map.put("ordPrice", tjProject.getProPrice()); map.put("nowPrice", transitionService.getTbTransitionDxPriceByPac(cusId, entry.getKey(), cardId, pacId)); } } else { map.put("tjCategory", null); map.put("pacName", "单项"); List tbTransitionList = entry.getValue(); if (null != tbTransitionList && !tbTransitionList.isEmpty()) { BigDecimal money1 = new BigDecimal("0.00"); BigDecimal money2 = new BigDecimal("0.00"); for (TbTransition tbTransition : tbTransitionList) { money1 = money1.add(tbTransition.getOrdPrice()); money2 = money2.add(tbTransition.getNowPrice()); } map.put("ordPrice", money1); map.put("nowPrice", money2); } } map.put("parentName", projectService.getById(entry.getKey()).getProName()); map.put("list", entry.getValue()); list.add(map); } return list; } private List> getMap(String cusId, String cardId, List transitionList) { // List transitionList = null; // if (redisCache.hasKey(cardId + cusId)) { // transitionList = redisCache.getCacheList(cardId + cusId); // } else { // transitionList = transitionService.getTbTransitionListByCusId(cusId, cardId); // } if (null == transitionList) return null; Map> collect = transitionList.stream().collect(Collectors.groupingBy(TbTransition::getParentProId)); List> list = new ArrayList<>(); for (Map.Entry> entry : collect.entrySet()) { Map map = new HashMap<>(); Long pacId = entry.getValue().get(0).getPacId(); map.put("proPrantId", entry.getKey().toString()); if (null != pacId) { TjPackage aPackage = tjPackageService.getById(entry.getValue().get(0).getPacId()); map.put("tjCategory", aPackage.getTjCategory()); map.put("pacName", aPackage.getPacName()); TjProject tjProject = projectService.getById(entry.getKey()); // TjPackageProject project = tjPackageProjectService.getOne(new LambdaQueryWrapper().eq(TjPackageProject::getPacId, pacId) // .eq(TjPackageProject::getProId, entry.getKey())); map.put("ordPrice", tjProject.getProPrice()); // if (null != project) { // map.put("nowPrice", project.getPriceNow()); // } else { // map.put("nowPrice", tjProject.getProPrice()); // } map.put("nowPrice", tjProject.getProPrice()); } else { map.put("tjCategory", null); map.put("pacName", "单项"); List tbTransitionList = entry.getValue(); if (null != tbTransitionList && tbTransitionList.size() > 0) { BigDecimal money1 = new BigDecimal("0.00"); BigDecimal money2 = new BigDecimal("0.00"); for (TbTransition tbTransition : tbTransitionList) { money1 = money1.add(tbTransition.getOrdPrice()); money2 = money2.add(tbTransition.getNowPrice()); } map.put("ordPrice", money1); map.put("nowPrice", money2); } } map.put("parentName", projectService.getById(entry.getKey()).getProName()); map.put("list", entry.getValue()); list.add(map); } return list; } private AjaxResult getAjaxResult(String tjNumber) { LambdaQueryWrapper wq0 = new LambdaQueryWrapper<>(); wq0.eq(TjOrder::getTjNumber, tjNumber); TjOrder tjOrder = tjOrderService.getOne(wq0); if (null != tjOrder) { TjCustomer customer = tjCustomerService.selectTjCustomerByCusId(tjOrder.getUserId()); customer.setCardId("0"); tjCustomerService.updateById(customer); LambdaQueryWrapper wq11 = new LambdaQueryWrapper<>(); wq11.eq(TjOrderDetail::getOrderId, tjOrder.getOrderId()); wq11.eq(TjOrderDetail::getTjStatus, 0); wq11.isNotNull(TjOrderDetail::getFlowingWaterId); List list = tjOrderDetailService.list(wq11); if (list != null) { Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId()); SysUser sysUser = userService.getById(userId); asyncService.abandonCheck(tjNumber, tjOrder, list, sysUser); tjOrder.setFinishTime(new DateTime()); tjOrder.setStatus(TjConstants.TJ_CONFIRM); tjOrderService.updateById(tjOrder); return AjaxResult.success("签离成功!"); } return AjaxResult.success("签离成功!"); } return AjaxResult.error("该体检号无记录!"); } @GetMapping("/tuanTiListById") @ApiOperation(value = "查询团体体检状态") public AjaxResult tuanTiListById(@ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer pageNum, @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize, @ApiParam(value = "单位") @RequestParam String firmId, @ApiParam(value = "部门") @RequestParam(required = false) String dwDeptId, @ApiParam(value = "分组") @RequestParam(required = false) String groupId, @ApiParam(value = "登记开始时间") @RequestParam Date beginTime, @ApiParam(value = "登记结束时间") @RequestParam Date endTime) { Map map = new HashMap<>(); int a = 0; int b = 0; int c = 0; Page page1 = new Page<>(pageNum, pageSize); if (null != firmId) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjReservation::getTjType, "1"); wq.eq(TjReservation::getCompanyId, firmId); if (null != beginTime && null != endTime) { wq.between(TjReservation::getCreateTime, DateUtil.beginOfDay(beginTime), DateUtil.endOfDay(endTime)); } if (null != groupId) { wq.eq(TjReservation::getGroupingId, groupId); } Page page2 = tjReservationService.page(page1, wq); List list = page2.getRecords(); for (TjReservation tjReservation : list) { final TjDwGrouping byId = dwGroupingService.getById(tjReservation.getGroupingId()); if (byId != null) { tjReservation.setGroupingName(byId.getGroupingName()); } if (tjReservation.getIsExpire() == 1) { LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjCustomer::getCusIdcard, tjReservation.getIdCard()); final TjCustomer one1 = tjCustomerService.getOne(wq1); LambdaQueryWrapper wq2 = new LambdaQueryWrapper<>(); wq2.eq(TjOrder::getUserId, one1.getCusId()); wq2.eq(TjOrder::getTeamNo, tjReservation.getTeamNo()); final TjOrder one = tjOrderService.getOne(wq2); if (one != null) { tjReservation.setTjNumber(one.getTjNumber()); tjReservation.setTjStatus(one.getStatus()); if (one.getStatus() == 201) { b += 1; } else if (one.getStatus() == 401 || one.getStatus() == 402) { c += 1; } } } else if (tjReservation.getIsExpire() == 2) { tjReservation.setTjStatus(0); tjReservation.setTjNumber("无"); a += 1; } } map.put("list", list); map.put("all", list.size()); map.put("weijian", a); map.put("jianzhong", b); map.put("yijian", c); return AjaxResult.success(map); } LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); Page page22 = tjReservationService.page(page1, wq1); List list1 = page22.getRecords(); return AjaxResult.success(list1); } @GetMapping("/tuanTiBingById") @ApiOperation(value = "查询团体体检病种详细信息") public AjaxResult tuanTiBingById(@ApiParam(value = "单位") @RequestParam String firmId, @ApiParam(value = "部门") @RequestParam String firmDeptId, @ApiParam(value = "病种") @RequestParam(required = false) String bingZhong) { List res1 = new ArrayList<>(); List res = new ArrayList<>(); LambdaQueryWrapper wqqq = new LambdaQueryWrapper<>(); wqqq.eq(TjDwGrouping::getDwDeptId, firmDeptId); final List list2 = dwGroupingService.list(wqqq); for (TjDwGrouping tjDwGrouping : list2) { LambdaQueryWrapper wq2 = new LambdaQueryWrapper<>(); wq2.eq(TjOrder::getFirmId, firmId); wq2.eq(TjOrder::getGroupId, tjDwGrouping.getId()); final List list = tjOrderService.list(wq2); for (TjOrder tjOrder : list) { LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjOrderDetailRules::getTjNumber, tjOrder.getTjNumber()); if (bingZhong != null) { wq1.like(TjOrderDetailRules::getBingzhong, bingZhong); } final List list1 = orderDetailRulesService.list(wq1); //放进集合 res1.addAll(list1); } } //对集合进行去重 拿到病种id // Stream personStream = res1.stream(); // Stream idStream = personStream.map(TjOrderDetailRules::getAid).distinct(); // List distinctIds = idStream.collect(Collectors.toList()); Map columnCountMap = res1.stream().collect(Collectors.groupingBy(TjOrderDetailRules::getAid, Collectors.counting())); for (Map.Entry entry : columnCountMap.entrySet()) { BingZhongVO bingZhongVO = new BingZhongVO(); bingZhongVO.setRules(rulesService.getById(entry.getKey())); bingZhongVO.setNum(entry.getValue()); List aa = new ArrayList<>(); for (TjOrderDetailRules orderDetailRules : res1) { if (orderDetailRules.getAid().equals(entry.getKey())) { orderDetailRules.setDwName(dwDeptService.getById(firmDeptId).getDwName()); orderDetailRules.setDwDeptName(dwDeptService.getById(firmDeptId).getDwDeptName()); LambdaQueryWrapper wq22 = new LambdaQueryWrapper<>(); wq22.eq(TjOrder::getFirmId, firmId); wq22.eq(TjOrder::getTjNumber, orderDetailRules.getTjNumber()); final TjOrder one = tjOrderService.getOne(wq22); orderDetailRules.setGroupName(dwGroupingService.getById(one.getGroupId()).getGroupingName()); aa.add(orderDetailRules); } } bingZhongVO.setOrderList(aa); res.add(bingZhongVO); } return AjaxResult.success(res); } @PostMapping("/tuanTiBingChart") @ApiOperation(value = "查询团体体检病种统计图") public AjaxResult tuanTiBingChart(@RequestBody BingZhongVO bingZhongVO) { List res1 = new ArrayList<>(); LambdaQueryWrapper wqqq = new LambdaQueryWrapper<>(); wqqq.eq(TjDwGrouping::getDwDeptId, bingZhongVO.getFirmDeptId()); final List list2 = dwGroupingService.list(wqqq); for (TjDwGrouping tjDwGrouping : list2) { LambdaQueryWrapper wq2 = new LambdaQueryWrapper<>(); wq2.eq(TjOrder::getFirmId, bingZhongVO.getFirmId()); wq2.eq(TjOrder::getGroupId, tjDwGrouping.getId()); final List list = tjOrderService.list(wq2); for (TjOrder tjOrder : list) { LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjOrderDetailRules::getTjNumber, tjOrder.getTjNumber()); wq1.in(TjOrderDetailRules::getAid, bingZhongVO.getAidList()); final List list1 = orderDetailRulesService.list(wq1); //放进集合 res1.addAll(list1); } } Map columnCountMap = res1.stream().collect(Collectors.groupingBy(TjOrderDetailRules::getAid, Collectors.counting())); List> aaa = new ArrayList<>(); if (columnCountMap != null) { for (Map.Entry entry : columnCountMap.entrySet()) { Map resMap = new HashMap<>(); final TjRules byId = rulesService.getById(entry.getKey()); if (byId != null) { resMap.put("name", byId.getBingzhong()); resMap.put("value", String.valueOf(entry.getValue())); aaa.add(resMap); } } } return AjaxResult.success(aaa); } @PostMapping("/deletedTbTransitionByCusId") @ApiOperation(value = "根据身份证号删除临时表数据") public AjaxResult deletedTbTransitionByCusId(@RequestParam @ApiParam(value = "身份证号") String cusId) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.between(TbTransition::getCreateTime, transitionService.getTbTransitionCreateTimeByCusId(cusId), new Date()); wq.eq(TbTransition::getCusId, cusId); return AjaxResult.success(transitionService.remove(wq)); } @GetMapping("/getTransitionInfo") @ApiOperation(value = "根据体检号获取汇总和明细的数据") public AjaxResult getTransitionInfo(@RequestParam("tjNumber") String tjNumber) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select("parent_pro_id", "parent_pro_name", "sum(now_price) as ord_price") .eq("tj_num", tjNumber) .groupBy("parent_pro_id"); List list = transitionService.list(wrapper); List parentProIds = list.stream().map(item -> item.getParentProId()).collect(Collectors.toList()); LambdaQueryWrapper projectQueryWrapper = new LambdaQueryWrapper<>(); projectQueryWrapper.in(TjProject::getProId, parentProIds); List projects = projectService.list(projectQueryWrapper); JSONArray huiZong = JSONUtil.createArray(); int index = 1; for (TjProject project : projects) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysDept::getDeptId, project.getDeptId()); SysDept dept = sysDeptService.getOne(queryWrapper); for (TbTransition tbTransition : list) { if (tbTransition.getParentProId().toString().equals(project.getProId().toString())) { JSONObject obj = JSONUtil.createObj(); obj.putOpt("index", index++); obj.putOpt("parent_pro_name", tbTransition.getParentProName()); obj.putOpt("price", tbTransition.getOrdPrice()); obj.putOpt("ks", dept.getDeptName()); huiZong.add(obj); } } } wrapper = new QueryWrapper<>(); wrapper.eq("tj_num", tjNumber); list = transitionService.list(wrapper); JSONArray info = JSONUtil.createArray(); index = 1; for (TbTransition tbTransition : list) { JSONObject obj = JSONUtil.createObj(); obj.putOpt("index", index++); obj.putOpt("parent_pro_name", tbTransition.getParentProName()); obj.putOpt("pro_name", tbTransition.getProName()); BigDecimal ordPrice = tbTransition.getOrdPrice(); obj.putOpt("zongjia", ordPrice); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("pro_id", tbTransition.getProId()); TjProject tjProject = projectService.getOne(queryWrapper); Integer num = tjProject.getSl(); obj.putOpt("num", num); BigDecimal price = ordPrice.divide(new BigDecimal(num)); obj.putOpt("danjia", price); Date createTime = tbTransition.getCreateTime(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); obj.putOpt("time", dateFormat.format(createTime)); info.put(obj); } HashMap map = new HashMap<>(); map.put("huizong", huiZong); map.put("info", info); return AjaxResult.success().put("data", map); } public void newSaveextracted(TjOrder tjOrder, TjCustomer tjCustomer, BigDecimal discount, SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) { 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); } } public void ttextracted(TjOrder tjOrder, TjCustomer tjCustomer, SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) { tjAskMedicalHistoryService.updateTjAskMedicalHistoryByCusId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjCustomer.getCusId())); boolean b = tjOrderDetailService.saveTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId()); // if (!b) { // List proList = groupingProService.list(new LambdaQueryWrapper().eq(TjGroupingPro::getGroupingId, tjOrder.getGroupId())); // if (null != proList && !proList.isEmpty()) { // for (TjGroupingPro groupingPro : proList) { // TjOrderDetail detail = new TjOrderDetail(); // TjProject tjProject = projectService.selectTjProjectByProId(Long.valueOf(groupingPro.getProId())); // detail.setIsSampling(String.valueOf(tjProject.getIsSampling())); // detail.setOrderId(tjOrder.getOrderId()); // detail.setProId(Long.valueOf(groupingPro.getProId())); // detail.setTjStatus(0L); // detail.setCreateBy(sysUser.getNickName()); // detail.setCreateTime(new Date()); // detail.setUpdateBy(sysUser.getNickName()); // detail.setUpdateTime(new Date()); // detail.setCreateId(String.valueOf(sysUser.getUserId())); // detail.setUpdateId(String.valueOf(sysUser.getUserId())); // tjOrderDetailService.save(detail); // } // List list = proList.stream().map(TjGroupingPro::getProId).collect(Collectors.toList()); // List projectList = projectService.list(new LambdaQueryWrapper().in(TjProject::getProParentId, list)); // for (TjProject project : projectList) { // TjOrderDetail detail = new TjOrderDetail(); // detail.setOrderId(tjOrder.getOrderId()); // detail.setProId(project.getProId()); // detail.setTjStatus(0L); // detail.setCreateBy(sysUser.getNickName()); // detail.setCreateTime(new Date()); // detail.setUpdateBy(sysUser.getNickName()); // detail.setUpdateTime(new Date()); // detail.setCreateId(String.valueOf(sysUser.getUserId())); // detail.setUpdateId(String.valueOf(sysUser.getUserId())); // //获取该项目的默认值赋值给结果 // if (null != project.getProDefault()) { // detail.setProResult(project.getProDefault()); // } else { // detail.setProResult(null); // } // detail.setIsSampling(String.valueOf(project.getIsSampling())); // // tjOrderDetailService.save(detail); // } // } // } //添加remark表数据 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()); } } if (tjFlowingWater.getPayStasus() == 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()); } if (tjFlowingWater.getDiscount() == null) { transitionService.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), new BigDecimal(10), tjOrder.getTjNumber()); } else { transitionService.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), BigDecimal.valueOf(Long.parseLong(tjFlowingWater.getDiscount())), tjOrder.getTjNumber()); } tjOrderDetailService.saveTjPureToneTesByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId()); // List list = tjOrderDetailService.getTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId())); // if (list != null) { // for (TjOrderDetail tjOrderDetail : list) { // TjProject tjProject = projectService.getById(tjOrderDetail.getProId()); // if(tjProject==null){ // continue; // } // tjOrderDetail.setProject(tjProject); // if (tjProject.getProParentId() == 0) { // TjOrderRemark tjOrderRemark = new TjOrderRemark(); // tjOrderRemark.setProId(tjProject.getProId()); // tjOrderRemark.setProName(tjProject.getProName()); // tjOrderRemark.setDeptId(tjProject.getDeptId()); // tjOrderRemark.setTjNumber(tjOrder.getTjNumber()); // tjOrderRemark.setCreateBy(sysUser.getNickName()); // tjOrderRemark.setCreateTime(new Date()); // tjOrderRemark.setUpdateBy(sysUser.getNickName()); // tjOrderRemark.setUpdateTime(new Date()); // tjOrderRemark.setCreateId(String.valueOf(sysUser.getUserId())); // tjOrderRemark.setUpdateId(String.valueOf(sysUser.getUserId())); // orderRemarkService.save(tjOrderRemark); // } // if ("1".equals(tjOrder.getTjType())) { // if (null != tjReservation && tjReservation.getPayType() == 1) { // tjOrderDetail.setFlowingWaterId(String.valueOf(tjFlowingWater.getTjSerialNumber())); // } // } // if(tjFlowingWater.getPayStasus()==1){ // tjOrderDetail.setFlowingWaterId(String.valueOf(tjFlowingWater.getTjSerialNumber())); // } // tjOrderDetailService.updateById(tjOrderDetail); // } // } } @PostMapping("/heXiaoByIds") @ApiOperation(value = "核收报告——————总检审核通过后可以核销,核收后才能打印") @Transactional @RepeatSubmit public AjaxResult heXiaoByIds(@RequestBody List orderIds) { if (null != orderIds && !orderIds.isEmpty()) { Date date = new Date(); for (String orderId : orderIds) { TjOrder byId = tjOrderService.getById(orderId); if (null != byId) { /*if (byId.getReportTime() == null) { LambdaQueryWrapper tjReportTemplateLambdaQueryWrapper = new LambdaQueryWrapper<>(); tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1); tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0); TjReportTemplate reportTemplate = reportTemplateService.getOne(tjReportTemplateLambdaQueryWrapper); if ("报表".equals(reportTemplate.getPrint())) { TjReport tjReport = new TjReport(); tjReport.setTjNumber(String.valueOf(byId.getTjNumber())); tjReport.setPath(reportTemplate.getUrl() + "?tjNum=" + byId.getTjNumber()); tjReport.setType("体检报告"); tjReport.setPrint("报表"); tjReportService.save(tjReport); //修改order表中的打印报告时间为当前时间 LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(TjOrder::getTjNumber, byId.getTjNumber()); updateWrapper.set(TjOrder::getStatus, TjConstants.TJ_END); tjOrderService.update(updateWrapper); } LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjCustomer::getCusId, byId.getUserId()); TjCustomer tjCustomer = tjCustomerService.getOne(wq1); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TjReportTemplate::getFlag, "4"); wrapper.eq(TjReportTemplate::getOpen, "1"); TjReportTemplate zongJianYiShiQianMing = reportTemplateService.getOne(wrapper); try { shengchengbgmoban(byId.getTjNumber(), byId, tjCustomer, reportTemplate, zongJianYiShiQianMing); byId.setStatus(TjConstants.TJ_END); } catch (Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); e.printStackTrace(); // 调用撤销 logger.error("生成报告异常"); return AjaxResult.error("生成报告异常,核收失败"); } }*/ byId.setHeshouStatus(1); byId.setHeshouDoctor(UserHoder.getLoginUser().getUserId()); byId.setHeshouTime(date); final boolean b = tjOrderService.updateById(byId); if (!b) { return AjaxResult.error("核收失败"); } } } } return AjaxResult.success("核收成功"); } public AjaxResult shengchengbgmoban(String tjNumber, TjOrder tjOrder, TjCustomer tjCustomer, TjReportTemplate reportTemplate, TjReportTemplate zongJianYiShiQianMing) throws Exception { AjaxResult ajaxResult = hisPDFUtil.hisPDFNew2(tjOrder, tjCustomer, reportTemplate, zongJianYiShiQianMing); if (!ajaxResult.get("code").toString().equals("200")) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } else { Long userId = tjCustomer.getCusId(); String outputFileName1 = userId + tjNumber + tjCustomer.getCusName() + "_报告.pdf"; TjReport tjReport = new TjReport(); tjReport.setTjNumber(String.valueOf(tjNumber)); tjReport.setPath(urlValue + outputFileName1); String outputPath1 = value + File.separator; String pdfBinary = getPDFBinary(outputPath1 + outputFileName1); tjReport.setReport(pdfBinary); tjReport.setType("体检报告"); tjReport.setPrint("pdf"); tjReportService.save(tjReport); } return ajaxResult; } @GetMapping("/getHistryTjOrderByCusIdCard") @ApiOperation(value = "根据身份证号查看历史体检记录") @Transactional public AjaxResult getHistryTjOrderByCusIdCard(@RequestParam String cusIdCard) { TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(cusIdCard); List list = new ArrayList<>(); if (null != tjCustomer) { List orderList = tjOrderService.getTjOrderListByCusId(tjCustomer.getCusId()); for (TjOrder order : orderList) { HistoryTjOrder historyTjOrder = new HistoryTjOrder(); historyTjOrder.setUserName(tjCustomer.getCusName()); historyTjOrder.setTjNum(order.getTjNumber()); historyTjOrder.setTjTime(order.getCreateTime()); historyTjOrder.setTjProName(tjOrderService.getHistoryTjOrderProByTjNum(order.getTjNumber())); list.add(historyTjOrder); } } return AjaxResult.success(list); } @GetMapping("/getHistryTjOrderProByCusIdCard") @ApiOperation(value = "根据身份证号查看历史体检项目记录") @Transactional public AjaxResult getHistryTjOrderProByCusIdCard(@RequestParam String cusIdCard) { TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(cusIdCard); if (null != tjCustomer) { TjOrder order = tjOrderService.getLastTjOrderListByCusId(tjCustomer.getCusId()); if (null != order) { List> list = new ArrayList<>(); if (order.getPacId().equals("o")) { List longList = remarkService.getTjProIdsByTjNum(order.getTjNumber()); for (Long aLong : longList) { Map map = new HashMap<>(); map.put("pacName", "单项"); map.put("proId", aLong); map.put("pacId", null); map.put("parentName", projectService.getById(aLong).getProName()); map.put("list", projectService.getTjProjectListBySoneId(String.valueOf(aLong))); BigDecimal proPrice = projectService.getById(aLong).getProPrice(); map.put("ordPrice", proPrice); map.put("nowPrice", proPrice); list.add(map); } } if (!order.getPacId().equals("o")) { List longList = remarkService.getTjProIdsByTjNumAndPacIc(order.getTjNumber(), order.getPacId()); TjPackage aPackage = tjPackageService.getById(order.getPacId()); for (Long aLong : longList) { Map map = new HashMap<>(); map.put("pacName", aPackage.getPacName()); map.put("pacId", String.valueOf(aPackage.getPacId())); map.put("parentName", projectService.getById(aLong).getProName()); map.put("list", projectService.getTjProjectListBySoneId(String.valueOf(aLong))); BigDecimal proPrice = projectService.getById(aLong).getProPrice(); map.put("ordPrice", proPrice); map.put("nowPrice", tjPackageProjectService.getPacProPriceByPacIdAndPro(aLong, order.getPacId())); list.add(map); } List longList1 = remarkService.getTjProIdsByTjNumAndPacIc(order.getTjNumber(), order.getPacId()); for (Long aLong : longList1) { Map map = new HashMap<>(); map.put("pacName", "单项"); map.put("proId", aLong); map.put("pacId", null); map.put("parentName", projectService.getById(aLong).getProName()); map.put("list", projectService.getTjProjectListBySoneId(String.valueOf(aLong))); BigDecimal proPrice = projectService.getById(aLong).getProPrice(); map.put("ordPrice", proPrice); map.put("nowPrice", proPrice); list.add(map); } } return AjaxResult.success(list); } } return AjaxResult.success("暂无历史记录"); } @GetMapping("/getHistryTjOrderByCusId") @ApiOperation(value = "根据客户id查看历史体检记录") @Transactional public AjaxResult getHistryTjOrderByCusId(@RequestParam String cusId) { TjCustomer tjCustomer = tjCustomerService.getById(cusId); List list = new ArrayList<>(); if (null != tjCustomer) { List orderList = tjOrderService.getTjOrderListByCusId(tjCustomer.getCusId()); for (TjOrder order : orderList) { HistoryTjOrder historyTjOrder = new HistoryTjOrder(); historyTjOrder.setUserName(tjCustomer.getCusName()); historyTjOrder.setTjNum(order.getTjNumber()); historyTjOrder.setTjTime(order.getCreateTime()); historyTjOrder.setTjProName(tjOrderService.getHistoryTjOrderProByTjNum(order.getTjNumber())); //查流水 BigDecimal res = new BigDecimal(0); LambdaQueryWrapper wqq = new LambdaQueryWrapper<>(); wqq.eq(TjFlowingWater::getOrderId, order.getOrderId()); final List list1 = tjFlowingWaterService.list(wqq); if (list1 != null) { for (TjFlowingWater tjFlowingWater : list1) { if (tjFlowingWater != null && tjFlowingWater.getPaidIn() != null) { res.add(tjFlowingWater.getPaidIn()); } } } historyTjOrder.setPaidIn(res); list.add(historyTjOrder); } } return AjaxResult.success(list); } @GetMapping("/revokeTjOrderByTjNum") @ApiOperation(value = "根据客户体检号撤销体检记录") @Transactional public AjaxResult revokeTjOrderByTjNum(@RequestParam @ApiParam(value = "体检号") String tjNum) { TjOrder order = tjOrderService.getOrderByTjNum(tjNum); if (null != order) { // String payByTjNum = tjOrderService.isPayByTjNum(String.valueOf(order.getOrderId())); // if (null != payByTjNum) { // return AjaxResult.error("该用户已收费不可撤销签到!"); // } if (null != order.getFinishTime()) return AjaxResult.error("该人员已签离,不可撤销!!!"); Boolean useLisAndPacsRegister = lisApiMethod.isUseLisAndPacsRegister(order); String s = configService.selectConfigByKey("is_request_common_his_api"); // if (null != s && s.equals("Y") && "2".equals(order.getTjType())) { if (null != s && s.equals("Y") && !useLisAndPacsRegister) { String apiUrl = configService.selectConfigByKey("common_api_url"); String hospbm = configService.selectConfigByKey("common_api_service_hospbm"); ArrayList weizhifu = new ArrayList<>(); ArrayList yizhifu = new ArrayList<>(); LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); wrapper1.eq(TjFlowingWater::getOrderId, order.getOrderId()); wrapper1.orderByDesc(TjFlowingWater::getJxbz); List list = tjFlowingWaterService.list(wrapper1); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TjCustomer::getCusId, order.getUserId()); TjCustomer tjCustomer = tjCustomerService.getOne(wrapper); for (TjFlowingWater water : list) { if (water.getPayStasus() == 0L) { weizhifu.add(water); } else { yizhifu.add(water); } } AjaxResult error = zuofeiWeiZhifu(weizhifu, tjCustomer, apiUrl, hospbm, order, true, tjNum); if (error != null && !error.get("code").toString().equals("200")) return error; AjaxResult error1 = zuofeiYiZhifu(yizhifu, tjCustomer, order, apiUrl, hospbm, false, tjNum); if (error1 != null && !error.get("code").toString().equals("200")) return error1; } else { tjOrderService.deleteTjOrderByOrderId(order.getOrderId()); tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId())); remarkService.deletedOrderRemarkByTjNum(tjNum); tjFlowingWaterService.deleteTjFlowingWaterByOrderId(String.valueOf(order.getOrderId())); transitionService.deletedTbTransitionByTjNum(tjNum); ycxmService.delOrderYcXmJyByTjh(tjNum); TjCustomer customer = tjCustomerService.getById(order.getUserId()); customer.setCardId("0"); tjCustomerService.updateById(customer); xdPictureService.deleteTjXdPictureBytjNum(tjNum); tjSamplingMapper.deleteByTjNumAndCusId(tjNum, order.getUserId()); } String configByKey = configService.selectConfigByKey("sfkqdyhis"); if (configByKey.equals("Y")) { HashMap hisRequestParams = new HashMap<>(); hisRequestParams.put("patientId", order.getCardId()); AjaxResult queryPay = hisApiGetMethodService.getHISDataNew("QueryPay", hisRequestParams); if (Integer.parseInt(queryPay.get("code").toString()) == 200) { List> data = (List>) queryPay.get("data"); BigDecimal cateFeeAll = BigDecimal.ZERO; for (Map datum : data) { BigDecimal cateFee = new BigDecimal(datum.get("CateFee")); cateFeeAll = cateFeeAll.add(cateFee); } if (cateFeeAll.compareTo(BigDecimal.ZERO) != 0) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error("撤销失败,该人员已缴费,请先退费!"); } } boolean zfHisApiMethods = hisApiMethod.ZfHisApiMethods(null, order, lisApiMethod.isUseLisAndPacsRegister(order)); if (zfHisApiMethods) { return AjaxResult.success("撤销成功"); } else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error("撤销失败,调用作废出现失败"); } } } return AjaxResult.success("签到记录不存在!"); } @GetMapping("/getCusTomterListByCompId") @ApiOperation(value = "获取单位id体检人信息接口") public AjaxResult getCusTomterListByCompId(@RequestParam(required = false) @ApiParam(value = "单位id") String compId, @RequestParam(required = false) @ApiParam(value = "名字") String name, @RequestParam(required = false) @ApiParam(value = "部门id") String deptId, @RequestParam(required = false) @ApiParam(value = "预约时间") Date reservationTime, @RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer pageSize) { Page pages = new Page<>(page, pageSize); LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); if (null != compId) wq.eq(TjReservation::getCompanyId, compId); if (null != name) wq.eq(TjReservation::getName, name); if (null != deptId) wq.eq(TjReservation::getDepartment, deptId); if (null != reservationTime) wq.between(TjReservation::getReservationTime, DateUtil.beginOfDay(reservationTime), DateUtil.endOfDay(reservationTime)); List reservationList = tjReservationService.list(wq); if (null != reservationList && !reservationList.isEmpty()) { LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.in(TjOrder::getReservationId, reservationList.stream().map(TjReservation::getId).collect(Collectors.toList())); List orderList = tjOrderService.list(wq1); if (null != orderList && !orderList.isEmpty()) { LambdaQueryWrapper wq3 = new LambdaQueryWrapper<>(); wq3.in(TjReservation::getId, orderList.stream().map(TjOrder::getReservationId).collect(Collectors.toList())); // wq3.eq(TjReservation::getTeamNo,reservationList.get(0).getTeamNo()); Page page1 = tjReservationService.page(pages, wq3); return AjaxResult.success(page1); } } return AjaxResult.success("暂无信息"); } @PostMapping("/plRevokeTjOrderByTjNum") @ApiOperation(value = "根据客户体检号批量撤销体检记录") @Transactional public AjaxResult plRevokeTjOrderByTjNum(@RequestBody @ApiParam(value = "预约主键id集合") List reservationIds) { if (null != reservationIds && !reservationIds.isEmpty()) { LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.in(TjOrder::getReservationId, reservationIds); List orderList = tjOrderService.list(wq1); if (null != orderList && !orderList.isEmpty()) { for (TjOrder order : orderList) { // TjOrder order = tjOrderService.getOrderByTjNum(tjNum); if (null != order) { // String payByTjNum = tjOrderService.isPayByTjNum(String.valueOf(order.getOrderId())); // if (null != payByTjNum) { // return AjaxResult.success("该用户已收费不可撤销签到!"); // } tjOrderService.deleteTjOrderByOrderId(order.getOrderId()); tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId())); remarkService.deletedOrderRemarkByTjNum(order.getTjNumber()); tjFlowingWaterService.deleteTjFlowingWaterByOrderId(String.valueOf(order.getOrderId())); transitionService.deletedTbTransitionByTjNum(order.getTjNumber()); // transitionService.updateTbTransitionByTjNum(order.getTjNumber()); } } for (String id : reservationIds) { TjReservation reservation = tjReservationService.getById(id); if (null != reservation) { reservation.setIsExpire(2); tjReservationService.updateById(reservation); } } } return AjaxResult.success("撤销成功!!!"); } return AjaxResult.error("请选择要撤销的人员!"); } @PostMapping("makeTjPDF") @ApiOperation(value = "批量生成PDF") public AjaxResult makeTjPDF(@RequestBody List reservations) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("reservation_id", reservations); List tjNumbers = tjOrderService.list(queryWrapper); Map map = null; try { map = PDFDocumentUtil.getDocument(); Document document = (Document) map.get("document"); for (int i = 0; i < tjNumbers.size(); i++) { String tjNumber = tjNumbers.get(i).getTjNumber(); try { List> djdInfos = tjOrderService.selectDjdInfo(tjNumber); Map userInfo = tjOrderService.selectDjdUserInfo(tjNumber); LocalDateTime tjsj = (LocalDateTime) userInfo.get("tjsj"); DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); String time = null; if (tjsj != null) { time = dateFormat.format(tjsj); } PDFDocumentUtil.makeUserInfoTable(document, (String) userInfo.get("tjname"), (String) userInfo.get("sex") , (String) userInfo.get("tjh"), (String) userInfo.get("lxdh"), (String) userInfo.get("tjname"), time); PDFDocumentUtil.makeTjInfo(document, djdInfos); // 多条则换页 if (i + 1 < tjNumbers.size()) { document.newPage(); } } catch (DocumentException | IOException e) { e.printStackTrace(); } } document.close(); ByteArrayOutputStream outputStream = (ByteArrayOutputStream) map.get("stream"); String encodeToString = java.util.Base64.getEncoder().encodeToString(outputStream.toByteArray()); return AjaxResult.success().put("file", encodeToString); } catch (IOException | DocumentException e) { e.printStackTrace(); return AjaxResult.error(e.getMessage()); } } @GetMapping("/delTbBycusCardIdAndProId") @ApiOperation(value = "根据客户身份证号和项目父项id删除临时表数据") @Transactional public AjaxResult delTbBycusCardIdAndProId(@RequestParam @ApiParam(value = "身份证号") String cusCardId, @RequestParam @ApiParam(value = "父项id") String proId) { if (transitionService.delTbBycusCardIdAndProId(cusCardId, proId)) { return AjaxResult.success(); } return AjaxResult.error("记录不存在!"); } @GetMapping("/revokeTjOrderByTjCardId") @ApiOperation(value = "根据就诊号撤销申请记录") @Transactional public AjaxResult revokeTjOrderByTjCardId(@RequestParam @ApiParam(value = "就诊号") String cardId) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(TjOrder::getCardId, cardId); TjOrder order = tjOrderService.getOne(queryWrapper); order.setCardId(cardId); String configByKey = configService.selectConfigByKey("sfkqdyhis"); if (configByKey.equals("Y")) { HashMap map = new HashMap<>(); map.put("cardtype", "4"); map.put("input", order.getCardId()); LocalDate currentDate = LocalDate.now(); LocalDateTime startOfDay = currentDate.atStartOfDay(); LocalDateTime nineteenOClock = currentDate.atTime(LocalTime.of(19, 0)); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String ksrq = startOfDay.format(formatter); String jsrq = nineteenOClock.format(formatter); map.put("ksrq", ksrq); map.put("jsrq", jsrq); AjaxResult result = hisApiGetMethodService.getHISDataNew("Getoutpatientcostinfo", map); if (Integer.parseInt(String.valueOf(result.get("code"))) == 200) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error("撤销失败,门诊患者费用清单信息不为空"); } else { boolean zfHisApiMethods = hisApiMethod.ZfHisApiMethods(null, order, lisApiMethod.isUseLisAndPacsRegister(order)); if (zfHisApiMethods) { return AjaxResult.success("撤销成功", map); } else { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error("撤销失败,调用作废出现失败"); } } } return AjaxResult.success(); } @GetMapping("/revokeTjOrderByTjh") @ApiOperation(value = "强制撤销接口根据就体检号删除记录") @Transactional public AjaxResult revokeTjOrderByTjh(@RequestParam @ApiParam(value = "体检号") String tjNum) { TjOrder order = tjOrderService.getOrderByTjNum(tjNum); if (null != order) { // String payByTjNum = tjOrderService.isPayByTjNum(String.valueOf(order.getOrderId())); // if (null != payByTjNum) { // return AjaxResult.error("该用户已收费不可撤销签到!"); // } //这里删除的是这个人所有项目包括补录项目 tjOrderService.deleteTjOrderByOrderId(order.getOrderId()); tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId())); remarkService.deletedOrderRemarkByTjNum(tjNum); tjFlowingWaterService.deleteTjFlowingWaterByOrderId(String.valueOf(order.getOrderId())); transitionService.deletedTbTransitionByTjNum(tjNum); tjSamplingMapper.deleteByTjNumAndCusId(order.getTjNumber(), order.getUserId()); } return AjaxResult.success(); } @GetMapping("/getBlproByTjh") @ApiOperation(value = "根据体检号获取补录项目记录") @Transactional public AjaxResult getBlproByTjh(@RequestParam @ApiParam(value = "体检号") String tjNum) { TjOrder order = tjOrderService.getOrderByTjNum(tjNum); if (null != order) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjProBl::getTjh, tjNum); List blList = blService.list(wq); if (null != blList && !blList.isEmpty()) { for (TjProBl bl : blList) { LambdaQueryWrapper wqr = new LambdaQueryWrapper<>(); wqr.eq(TjOrderRemark::getJxbz, bl.getBldh()); List remarkList = remarkService.list(wqr); if (null != remarkList && !remarkList.isEmpty()) { List collect = remarkList.stream().map(TjOrderRemark::getProId).collect(Collectors.toList()); LambdaQueryWrapper wqp = new LambdaQueryWrapper<>(); wqp.in(TjProject::getProId, collect); List projectList = projectService.list(wqp); for (TjProject project : projectList) { project.setChildren(projectService.getTjProjectListBySoneId(String.valueOf(project.getProId()))); } bl.setProjectList(projectList); } } return AjaxResult.success(blList); } return AjaxResult.success(null); } return AjaxResult.error("暂无体检记录"); } @PostMapping("/revokeBlProByBldhAndTjh") @ApiOperation(value = "根据补录单号和体检号删除记录") // @Transactional public AjaxResult revokeBlProByBldhAndTjh(@RequestBody TjProBlDto dto) { if (null == dto.getBldhs() || dto.getBldhs().isEmpty()) { log.info("请选择要撤销的补录项目"); return AjaxResult.error("请选择要撤销的补录项目"); } TjOrder order = tjOrderService.getOrderByTjNum(dto.getTjh()); if (null != order) { String configByKey = configService.selectConfigByKey("sfkqdyhis"); if (null != configByKey && configByKey.equals("Y")) { log.info("dto的数据是" + JSONUtil.toJsonStr(dto)); HashMap hisRequestParams = new HashMap<>(); hisRequestParams.put("patientId", order.getCardId()); AjaxResult queryPay = hisApiGetMethodService.getHISDataNew("QueryPay", hisRequestParams); log.info("queryPay ->{}", JSONUtil.toJsonStr(queryPay)); if (Integer.parseInt(queryPay.get("code").toString()) == 200) { List> data = (List>) queryPay.get("data"); log.info("data的数据是" + JSONUtil.toJsonStr(data)); // BigDecimal cateFeeAll = BigDecimal.ZERO; // List advIds = new ArrayList<>(); List buLuXmXinXi = tjOrderService.getBuLuXmXinXi(dto.getBldhs(), order.getCardId()); log.info("buLuXmXinXi的值为:==========" + buLuXmXinXi); if (null != buLuXmXinXi && !buLuXmXinXi.isEmpty()) { for (Map datum : data) { for (LtkjJianchajianyanTree tree : buLuXmXinXi) { String advId = datum.get("Adv_Id").split("_")[1]; log.info("advid的值为:==========" + advId); log.info("tree的值为:==========" + advId); BigDecimal cateFee = new BigDecimal(datum.get("CateFee")); log.info("cateFee的值为:==========" + cateFee); log.info("tree.getFyhj()的值为:==========" + tree.getFyhj()); if (tree.getSqdh().equals(advId) && cateFee.compareTo(new BigDecimal(tree.getFyhj())) == 0) { log.info("该项目已缴费不可撤销"); return AjaxResult.error("该项目已缴费不可撤销!!!"); } } } } } boolean b = hisApiMethod.ZfBlXm(dto.getBldhs(), order); if (!b) { // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); log.info("撤销失败,调用作废出现失败"); return AjaxResult.error("撤销失败,调用作废出现失败"); } } String s = configService.selectConfigByKey("is_request_common_his_api"); Boolean useLisAndPacsRegister = lisApiMethod.isUseLisAndPacsRegister(order); // if (null != s && s.equals("Y") && "2".equals(order.getTjType())) { if (null != s && s.equals("Y") && !useLisAndPacsRegister) { ArrayList weizhifu = new ArrayList<>(); ArrayList yizhifu = new ArrayList<>(); for (String bldh : dto.getBldhs()) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TjFlowingWater::getJxbz, bldh); TjFlowingWater water = tjFlowingWaterService.getOne(wrapper); if (water.getPayStasus() == 0L) { weizhifu.add(water); } else { yizhifu.add(water); } } String apiUrl = configService.selectConfigByKey("common_api_url"); String hospbm = configService.selectConfigByKey("common_api_service_hospbm"); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TjCustomer::getCusId, order.getUserId()); TjCustomer tjCustomer = tjCustomerService.getOne(wrapper); AjaxResult error = zuofeiWeiZhifu(weizhifu, tjCustomer, apiUrl, hospbm, order, true, dto.getTjh()); if (error != null && !error.get("code").toString().equals("200")) return error; AjaxResult error1 = zuofeiYiZhifu(yizhifu, tjCustomer, order, apiUrl, hospbm, false, dto.getTjh()); if (error1 != null && !error.get("code").toString().equals("200")) return error1; return AjaxResult.success(); } else { try { extracted(dto, order); } catch (Exception e) { log.info("撤销失败,删除表失败"); return AjaxResult.error("撤销失败,删除表失败!"); } return AjaxResult.success(); } } return AjaxResult.error(); } private AjaxResult zuofeiYiZhifu(ArrayList yizhifu, TjCustomer tjCustomer, TjOrder order, String apiUrl, String hospbm, Boolean isDelete, String tjNum) { if (!yizhifu.isEmpty()) { for (TjFlowingWater water : yizhifu) { HashMap map = new HashMap<>(); map.put("pationId", tjCustomer.getPationId()); map.put("cardId", tjCustomer.getHisJzkh()); map.put("tjNum", water.getTjSerialNumber()); map.put("kaiDanKs", "7805"); // 收费标志 1待收费 2待退费 map.put("shouTuiStatus", "2"); JSONArray array = JSONUtil.createArray(); String bldh = water.getJxbz(); List list; if (bldh != null) { LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); wrapper1.eq(TbTransition::getJxbz, bldh); wrapper1.gt(TbTransition::getOrdPrice, 0); list = tbTransitionService.list(wrapper1); } else { LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); wrapper1.isNull(TbTransition::getJxbz); wrapper1.eq(TbTransition::getTjNum, tjNum); wrapper1.gt(TbTransition::getOrdPrice, 0); list = tbTransitionService.list(wrapper1); } for (TbTransition transition : list) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(TjProject::getProId, transition.getProId()); TjProject project = projectService.getOne(queryWrapper); LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); wrapper2.eq(TjFlowingWaterHis::getParentId, water.getHisWaterId()); wrapper2.eq(TjFlowingWaterHis::getXmId, project.getHisXmbm()); List list1 = tjFlowingWaterHisService.list(wrapper2); for (TjFlowingWaterHis waterHis : list1) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SysDept::getDeptId, project.getDeptId()); SysDept dept = sysDeptService.getOne(wrapper); JSONObject obj = JSONUtil.createObj(); BigDecimal danjia = transition.getOrdPrice(); Integer sl = project.getSl(); BigDecimal allPrice = danjia.multiply(new BigDecimal(sl)); obj.putOpt("danJia", danjia); obj.putOpt("jieSuanJe", allPrice.negate()); obj.putOpt("shuliang", Math.negateExact(sl)); obj.putOpt("feiYongMxId", waterHis.getCurrentId()); obj.putOpt("feiYongId", water.getHisWaterId()); obj.putOpt("zhiXingKs", dept.getDeptId()); obj.putOpt("zhiXingKsMc", dept.getDeptName()); obj.putOpt("shouFeiXmId", project.getHisXmbm()); obj.putOpt("shouFeiXmMc", project.getHisXmmc()); // obj.putOpt("zhiXingKs","7805"); // obj.putOpt("zhiXingKsMc","体检科"); // obj.putOpt("shouFeiXmId","4735346"); // obj.putOpt("shouFeiXmMc","体检费"); array.add(obj); } } map.put("feiYongInfoList", array); log.info("退费申请 入参 -> {}", JSONUtil.toJsonStr(map)); String post = HttpClientUtils.sendPost(apiUrl + "/api/his/" + hospbm + "/creatCostInfo", map); log.info("退费申请 返回 -> {}", JSONUtil.toJsonStr(post)); if (null != post) { JSONObject jsonObject = JSONUtil.parseObj(post); if (jsonObject.getStr("code").equals("200")) { // hisTfWaterId String tfid = jsonObject.getJSONObject("data").getStr("feiYongId"); water.setHisTfWaterId(tfid); tjFlowingWaterService.updateById(water); if (isDelete) { for (TjFlowingWater water1 : yizhifu) { String bldh1 = water1.getJxbz(); remarkService.deleteTjOrderDetailByjxbz(bldh1); tjOrderDetailService.deleteTjOrderDetailByjxbz(bldh1); tjFlowingWaterService.deleteTjOrderDetailByjxbz(bldh1); transitionService.deleteTjOrderDetailByjxbz(bldh1); blService.remove(new LambdaQueryWrapper().eq(TjProBl::getTjh, tjNum).eq(TjProBl::getBldh, bldh1)); tjSamplingMapper.deleteByTjNumAndCusIdAndJxbzo(tjNum, order.getUserId(), bldh1); } } } else return AjaxResult.error(); } } } return null; } private AjaxResult zuofeiWeiZhifu(ArrayList weizhifu, TjCustomer tjCustomer, String apiUrl, String hospbm, TjOrder order, Boolean isDelete, String tjNum) { if (!weizhifu.isEmpty()) { HashMap chexiaoMap = new HashMap<>(); chexiaoMap.put("pationId", tjCustomer.getPationId()); chexiaoMap.put("cardId", tjCustomer.getHisJzkh()); String feiyongList = weizhifu.stream().map(TjFlowingWater::getHisWaterId).collect(Collectors.joining(",")); chexiaoMap.put("feiYongIdList", feiyongList.trim().replaceAll(" ", "")); String post = HttpClientUtils.sendPost(apiUrl + "/api/his/" + hospbm + "/revokeCost", chexiaoMap); if (JSONUtil.parseObj(post).getStr("code").equals("200")) { if (isDelete) { for (TjFlowingWater water : weizhifu) { String bldh = water.getJxbz(); if (StrUtil.isNotBlank(bldh)) { remarkService.deleteTjOrderDetailByjxbz(bldh); tjOrderDetailService.deleteTjOrderDetailByjxbz(bldh); tjFlowingWaterService.deleteTjOrderDetailByjxbz(bldh); transitionService.deleteTjOrderDetailByjxbz(bldh); blService.remove(new LambdaQueryWrapper().eq(TjProBl::getTjh, tjNum).eq(TjProBl::getBldh, bldh)); tjSamplingMapper.deleteByTjNumAndCusIdAndJxbzo(tjNum, order.getUserId(), bldh); } else { //这里删除的是这个人所有项目包括补录项目 tjOrderService.deleteTjOrderByOrderId(order.getOrderId()); tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId())); remarkService.deletedOrderRemarkByTjNum(tjNum); tjFlowingWaterService.deleteTjFlowingWaterByOrderId(String.valueOf(order.getOrderId())); transitionService.deletedTbTransitionByTjNum(tjNum); tjSamplingMapper.deleteByTjNumAndCusId(order.getTjNumber(), order.getUserId()); } } } } else return AjaxResult.error(); } return null; } // @Transactional(propagation =Propagation.REQUIRES_NEW) public void extracted(TjProBlDto dto, TjOrder order) { for (String bldh : dto.getBldhs()) { remarkService.deleteTjOrderDetailByjxbz(bldh); tjOrderDetailService.deleteTjOrderDetailByjxbz(bldh); tjFlowingWaterService.deleteTjOrderDetailByjxbz(bldh); transitionService.deleteTjOrderDetailByjxbz(bldh); blService.remove(new LambdaQueryWrapper().eq(TjProBl::getTjh, dto.getTjh()).eq(TjProBl::getBldh, bldh)); } tjSamplingMapper.deleteByTjNumAndCusIdAndJxbz(dto.getTjh(), order.getUserId(), dto.getBldhs()); } @PostMapping("/addYaoPinShenQing") @ApiOperation(value = "药品信息申请") @Transactional public AjaxResult addYaoPinShenQing(@RequestBody OutpinmedicapplyDto dto) { AjaxResult result = controller.Outpinmedicapply(dto); String result1 = getAjaxResult(result); JSONObject object = getJSONObject(result1); String code = object.getStr("ResultCode"); if (null != code && code.equals("0")) { } return AjaxResult.success(); } @GetMapping("/chushenyemianqijianjiekou") @ApiOperation(value = "初审页面弃检接口") @Transactional public AjaxResult chushenyemianqijianjiekou(@RequestParam String tjNUm, @RequestParam String proId) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjOrderRemark::getTjNumber, tjNUm); wq.eq(TjOrderRemark::getProId, proId); TjOrderRemark remark = remarkService.getOne(wq); remark.setType(2); remarkService.updateById(remark); return AjaxResult.success("操作成功!"); } @GetMapping("/chushenyemianyijianjiekou") @ApiOperation(value = "初审页面弃检接口") @Transactional public AjaxResult chushenyemianyijianjiekou(@RequestParam String tjNUm, @RequestParam String proId) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjOrderRemark::getTjNumber, tjNUm); wq.eq(TjOrderRemark::getProId, proId); TjOrderRemark remark = remarkService.getOne(wq); remark.setType(1); remarkService.updateById(remark); return AjaxResult.success("操作成功!"); } @PostMapping("/zongjanyemianshjianzhou") @ApiOperation(value = "总检获取时间轴接口") @Transactional public AjaxResult zongjanyemianshjianzhou(@RequestBody List tjNUms) { if (null != tjNUms && !tjNUms.isEmpty()) { List> list = new ArrayList<>(); for (String tjNUm : tjNUms) { Map map = new HashMap<>(); TjOrder order = tjOrderService.getOrderByTjNum(tjNUm); if (null != order) { int czwj = remarkService.panduaniscunzaiweijian(tjNUm); int sfwc = remarkService.panduaniswancheng(tjNUm); Date checkTime = order.getCheckTime(); Date reportTime = order.getReportTime(); Integer heshouStatus = order.getHeshouStatus(); Date lastTime = order.getPrintLastTime(); int a = 0; if (czwj == 0) { //未检 a = 0; } if (czwj > 0) { //在检 a = 1; } if (sfwc == 0) { //已完成 a = 2; } if (null != checkTime) { //已审核 a = 3; } if (null != reportTime) { //生成报告 a = 4; } if (heshouStatus == 1) { //报告核收 a = 5; } if (null != lastTime) { //已打印 a = 6; } map.put("tjNUm", tjNUm); map.put("sjz", a); list.add(map); } } return AjaxResult.success(list); } return AjaxResult.error(); } @PostMapping("/heshouchexiao") @ApiOperation(value = "撤销报告接口") @Transactional public AjaxResult heshouchexiao(@RequestBody List tjNUms) { if (null != tjNUms && !tjNUms.isEmpty()) { // 不在使用逻辑删除 逻辑删除导致打印报告生成 查询sql缓慢 //逻辑删除数据库里的报告 LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.select(TjReport::getReId); wq1.in(TjReport::getTjNumber, tjNUms); wq1.eq(TjReport::getPrint, "pdf"); List list = tjReportService.list(wq1).stream().map(TjReport::getReId).collect(Collectors.toList()); for (String tjNUm : tjNUms) { TjOrder order = tjOrderService.getOrderByTjNum(tjNUm); if (null != order) { order.setHeshouStatus(0); order.setHeshouTime(null); order.setHeshouDoctor(null); order.setPrintLastTime(null); order.setReportTime(null); order.setStatus(TjConstants.TJ_WAIT); if (!tjOrderService.updateById(order)) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error("操作失败"); } } } if (!list.isEmpty()) { int i = tjReportService.deleteTjReportByReIds(list.toArray(new Long[]{})); if (i == 0) { return AjaxResult.error("撤回失败!"); } } return AjaxResult.success("操作成功"); } return AjaxResult.error(); } @GetMapping("/qiandaodengjitianjiaxiangmubydanweifenzu") @ApiOperation(value = "签到登记根据单位分组获取体检项目") @Transactional public AjaxResult qiandaodengjitianjiaxiangmubydanweifenzu(@RequestParam String cusIdcard, @RequestParam String groupingId) { try { transitionService.saveTemoTransitionByGroupingId(cusIdcard, groupingId); return AjaxResult.success("操作成功!"); } catch (Exception e) { e.printStackTrace(); return AjaxResult.error(); } } @PostMapping("/ttaddtTransition") @ApiOperation(value = "团体添加过渡表数据") @Transactional public AjaxResult ttaddtTransition(@RequestBody Map map) { Object packId = map.get("pacId"); if (null == map.get("cusId")) return AjaxResult.error("请选择体检人"); String cusId = map.get("cusId").toString(); Object proIds1 = map.get("proIds"); List proIds = null; if (null != proIds1 && !proIds1.equals("")) { proIds = JSON.parseArray(proIds1.toString(), Long.class); } TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(cusId); String cardId = "0"; if (null != tjCustomer) { cardId = tjCustomer.getCardId(); } if ((null == proIds || proIds.isEmpty()) && (null == packId || packId.equals(""))) { transitionService.deletedTbTransitionByCusId(cusId); } /*套餐*/ if (null != packId && !packId.equals("")) { Long pacId = Long.valueOf(packId.toString()); List list = transitionService.getTbTransitionListByCusIdAndPac(cusId, String.valueOf(pacId)); if (null == list || list.isEmpty()) { transitionService.deletedTbTransitionListByCusIdAndPac(cusId, cardId); String string = transitionService.ttpanduantaocanshifouchongfu(cusId, pacId); if (!StringUtils.isBlank(string)) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error("操作失败! 以下项目已存在: " + string); } transitionService.ttsaveTemoTransitionByGroupingId(cusId, cardId, pacId.toString()); //补差价 List> cjMaps = groupingProService.huoquxiangmuchajia(pacId.toString(), cusId); if (null != cjMaps && !cjMaps.isEmpty()) { for (Map cjMap : cjMaps) { transitionService.buxiangmuchajia(cusId, pacId.toString(), cjMap.get("xmid").toString(), new BigDecimal(cjMap.get("cj").toString())); } } } } //单项 if (null != proIds && !proIds.isEmpty()) { //异步保存数据库表 for (Long proId : proIds) { TjProject project = projectService.selectTjProjectByProId(proId); if (null != project) { List transitionList = transitionService.getTbTransitionListByCusIdAndPacIdAndProId(cusId, String.valueOf(proId)); if (null == transitionList || transitionList.isEmpty()) { transitionService.saveRedisTransitionByProId(cusId, cardId, proId); } } } } return AjaxResult.success(); } @GetMapping(value = "newgetTransitionList") @ApiOperation(value = "最新查询过渡表数据") public AjaxResult newgetTransitionList(@RequestParam @ApiParam(value = "客户id") String cusId) { // String pacId = transitionService.getTbTransitionPacId(cusId); // if(StringUtil.isNotBlank(pacId)){ // //补差价 // List> cjMaps = groupingProService.huoquxiangmuchajia(pacId, cusId); // if(null !=cjMaps && !cjMaps.isEmpty()){ // for (Map cjMap : cjMaps) { // transitionService.buxiangmuchajia(cusId,pacId,cjMap.get("xmid").toString(),new BigDecimal(cjMap.get("cj").toString())); // } // } // } List list = transitionService.newgetTransitionList(cusId); return AjaxResult.success(list); } @PostMapping(value = "updateTransitionnewPrice") @ApiOperation(value = "签到登记页面根据折扣修改项目现价") @Transactional public AjaxResult updateTransitionnewPrice(@RequestBody List dtos) { if (null != dtos && !dtos.isEmpty()) { int index = 0; boolean flag = false; for (UpdateTransitionnewPriceDto dto : dtos) { index++; LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TbTransition::getCusId, dto.getCusIdCard()); wq.eq(TbTransition::getParentProId, dto.getParentProId()); wq.isNull(TbTransition::getTjNum); List list = transitionService.list(wq); log.info("修改的客户身份证号为: " + dto.getCusIdCard()); log.info("父项目id为: " + dto.getParentProId()); log.info("折扣为: " + new BigDecimal(dto.getDiscount())); if (null != list && !list.isEmpty()) { for (TbTransition transition : list) { BigDecimal ordPrice = transition.getOrdPrice(); BigDecimal multiply = ordPrice.multiply((new BigDecimal(dto.getDiscount()).divide(BigDecimal.valueOf(10)))); log.info("后端计算的金额: " + multiply.toString()); transition.setNowPrice(multiply); transition.setDiscount(new BigDecimal(dto.getDiscount())); transitionService.updateById(transition); } BigDecimal dxzj = transitionService.getTbTransitionPriceAndOrdPrice(dto.getCusIdCard(), dto.getParentProId()); BigDecimal yhj = dto.getYhj(); log.info("前端传递的价格:{}",yhj.toString()); BigDecimal cj = yhj.subtract(dxzj); log.info("计算的差价:{}",cj.toString()); for (TbTransition transition : list) { BigDecimal result = transition.getNowPrice().add(cj); log.info("补上差价前的价格为:{}",transition.getNowPrice().toString()); if (result.compareTo(BigDecimal.ZERO)>0 && !flag && cj.compareTo(BigDecimal.ZERO) != 0){ transition.setNowPrice(result); transitionService.updateById(transition); log.info("修改 补上差价后的价格为:{}",result.toString()); flag = true; break; } } } } } return AjaxResult.success(); } @PostMapping("/huifuyuyuejilu") @ApiOperation(value = "体检记录页面恢复预约记录接口") @Transactional public AjaxResult huifuyuyuejilu(@RequestBody List tjNUms) { if (null != tjNUms && !tjNUms.isEmpty()) { for (String tjNUm : tjNUms) { TjOrder order = tjOrderService.getOrderByTjNum(tjNUm); if(null !=order && StringUtil.isNotBlank(order.getReservationId())){ //这里删除的是这个人所有项目包括补录项目 tjOrderService.deleteTjOrderByOrderId(order.getOrderId()); tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId())); remarkService.deletedOrderRemarkByTjNum(tjNUm); tjFlowingWaterService.deleteTjFlowingWaterByOrderId(String.valueOf(order.getOrderId())); // transitionService.deletedTbTransitionByTjNum(tjNum); tjSamplingMapper.deleteByTjNumAndCusId(order.getTjNumber(), order.getUserId()); TjReservation reservation = tjReservationService.getById(order.getReservationId()); if(null !=reservation){ reservation.setIsExpire(2); tjReservationService.updateById(reservation); transitionService.updateTbTransitionByTjNum(tjNUm); } } } return AjaxResult.success(); } return AjaxResult.error(); } @PostMapping("/addBlTransition") @ApiOperation(value = "补录添加过渡表数据") @Transactional public AjaxResult addBlTransition(@RequestBody Map map) { Object packId = map.get("pacId"); if (null == map.get("cusId")) return AjaxResult.error("请选择体检人"); String cusId = map.get("cusId").toString(); Object proIds1 = map.get("proIds"); List proIds = null; if (null != proIds1 && !proIds1.equals("")) { proIds = JSON.parseArray(proIds1.toString(), Long.class); } TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(cusId); String cardId = "0"; if (null != tjCustomer) { cardId = tjCustomer.getCardId(); } if ((null == proIds || proIds.isEmpty()) && (null == packId || packId.equals(""))) { transitionService.deletedTbTransitionByCusId(cusId); } //单项 if (null != proIds && !proIds.isEmpty()) { //异步保存数据库表 for (Long proId : proIds) { TjProject project = projectService.selectTjProjectByProId(proId); if (null != project) { List transitionList = transitionService.getTbTransitionListByCusIdAndPacIdAndProId(cusId, String.valueOf(proId)); if (null == transitionList || transitionList.isEmpty()) { transitionService.saveRedisTransitionByProId(cusId, cardId, proId); } } } } return AjaxResult.success(); } }