zjh
2025-02-08 b5286f21559b057f4240ae1e903beaf1fa314a5d
zjh20250208
9个文件已修改
414 ■■■■■ 已修改文件
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiMethod.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java 327 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjSamplingController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-common/src/main/java/com/ltkj/common/utils/PDFDocumentUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TbTransitionMapper.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderMapper.java 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiMethod.java
@@ -1414,7 +1414,7 @@
                    if (samplings.size() >= 2) {
                        // 进行合并
                        List<String> stringList = samplings.stream().map(TjSampling::getId).collect(Collectors.toList());
                        log.info("提取id ->{}",stringList);
//                        log.info("提取id ->{}",stringList);
                        for (int i = 0; i < stringList.size(); i++) {
                            String s = stringList.get(i);
                            if (tjSamplingService.isMergeItem(s) != 0) {
ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java
@@ -1809,7 +1809,7 @@
                        if (samplings.size() >= 2){
                            // 进行合并
                            List<String> stringList = samplings.stream().map(TjSampling::getId).collect(Collectors.toList());
                            log.info("提取id ->{}",stringList);
//                            log.info("提取id ->{}",stringList);
                            for (int i = 0; i < stringList.size(); i++) {
                                String s = stringList.get(i);
                                if (tjSamplingService.isMergeItem(s) != 0) {
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
@@ -56,6 +56,7 @@
import com.ltkj.hosp.dto.UpdateTransitionnewPriceDto;
import com.ltkj.hosp.hisDto.OutpinimpapplyDto;
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.pacsDto.SavePacsApply;
@@ -236,6 +237,8 @@
    private ITjXdPictureService xdPictureService;
    @Autowired
    private TjOrderYcxmService ycxmService;
    @Autowired
    private TbTransitionMapper tbTransitionMapper;
    //将方法返回值解析成json格式
    public JSONObject getJSONObject(String builder) {
@@ -1037,7 +1040,7 @@
                tjOrder.setTjType("2");
            }
        }
        if(StringUtil.isBlank(tjOrder.getFirmId())){
        if (StringUtil.isBlank(tjOrder.getFirmId())) {
            tjOrder.setFirmId("0");
        }
@@ -1096,8 +1099,8 @@
//        if(StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber=makeLisTmhPrefix+tjNumber;
        String tjNumber = (SecurityUtils.getUsername()+IdUtils.getTjNumber());
        if(StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber=makeLisTmhPrefix+tjNumber;
        String tjNumber = (SecurityUtils.getUsername() + IdUtils.getTjNumber());
        if (StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber = makeLisTmhPrefix + tjNumber;
        tjOrder.setTjNumber(tjNumber);
@@ -1144,10 +1147,10 @@
            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);
            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) {
@@ -1181,7 +1184,7 @@
            //修改每项的原价现价
//            transitionService.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), discount, tjOrder.getTjNumber());
            //修改临时表体检号
            transitionService.updateTbTransitionTjNumByCusId(tjCustomer.getCusIdcard(),tjOrder.getTjNumber());
            transitionService.updateTbTransitionTjNumByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber());
            //补差价
    /*        if(subtract.compareTo(BigDecimal.ZERO)>0){
                tjFlowingWater.setPaidIn(paidIn.add(subtract));
@@ -1352,7 +1355,7 @@
                List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
                addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
                return AjaxResult.success(tjNumber);
            }else {
            } else {
                newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                AjaxResult error = isRequestCommonHisApi(tjOrder, tjCustomer, tjFlowingWater);
                if (error != null) return error;
@@ -1511,21 +1514,22 @@
            }
        }
        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()));
        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()));
        }
    }
    @PostMapping("/addPlOrderAndDetail")
    @ApiOperation(value = "体检批量签到登记接口")
    @Transactional  //(切换数据库出错,所以注释)
//    @Transactional  //(切换数据库出错,所以注释)
    public AjaxResult addPlOrderAndDetail(@RequestBody QianDaoDto daoDto, HttpServletResponse response) {
        SysUser sysUser = UserHoder.getLoginUser().getUser();
        List<String> cusIds = daoDto.getCusIds();
        ArrayList<String> tjNumbers = new ArrayList<>();
        ArrayList<String> errTjh = new ArrayList<>();
        if (null != cusIds && !cusIds.isEmpty()) {
            ExecutorService threadPools = Executors.newFixedThreadPool(cusIds.size());
            for (String cusId : cusIds) {
@@ -1554,69 +1558,105 @@
//                            }
//                        }
//                    });
                    String tjh = (sysUser.getUserName() + new SimpleDateFormat("yyMMddHHmmss").format(new Date()));
                    String finalTjh = tjh;
                    Future<AjaxResult> future = executor.submit(new Callable<AjaxResult>() {
                        @Override
                        public AjaxResult call() throws Exception {
                            return getAjaxResult(aLong, sysUser, daoDto.getTjCategory());
                            return getAjaxResult(aLong, sysUser, daoDto.getTjCategory(), finalTjh);
                        }
                    });
                    try {
                        AjaxResult result = future.get();
                        String tjNumber = result.get("tjNumber").toString();
                        tjNumbers.add(tjNumber);
                        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 因为有体检号会查出空数据 先使用死数据
        tjNumbers = new ArrayList<>();
        tjNumbers.add("02095240229171627");
        tjNumbers.add("02095240229173104");
        tjNumbers.add("10001240524172002");
        tjNumbers.add("10001240304124410");
        tjNumbers.add("00325240304160123");
        tjNumbers.add("02095240304162044");
        tjNumbers.add("02095240304162152");
        tjNumbers.add("10001240304163505");
        Map<String, Object> map = null;
        try {
            map = PDFDocumentUtil.getDocument();
            Document document = (Document) map.get("document");
            for (int i = 0; i < tjNumbers.size(); i++) {
            // TODO 因为有体检号会查出空数据 先使用死数据  打印导诊单
            if (!tjNumbers.isEmpty()) {
                Map<String, Object> map = null;
                try {
                    List<Map<String, String>> djdInfos = tjOrderService.selectDjdInfo(tjNumbers.get(i));
                    Map<String, Object> userInfo = tjOrderService.selectDjdUserInfo(tjNumbers.get(i));
                    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);
                    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<Map<String, Object>> djdInfos = tjOrderService.selectDjdInfo(tjNumber);
                            Map<String, Object> 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();
                        }
                    }
                    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) {
//                    }
                    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();
                }
                return AjaxResult.success("操作成功");
            }
            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();
            if (!errTjh.isEmpty()){
                return AjaxResult.success("以上人员签到失败",errTjh);
            }
            return AjaxResult.success();
        }
        return AjaxResult.success("操作成功");
        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        return AjaxResult.error();
    }
    private void getAjaxResults(String cusIdcard) {
//    @Transactional
    public void getAjaxResults(String cusIdcard) {
        if (!"".equals(cusIdcard) && cusIdcard != null) {
            //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
            final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
@@ -1750,25 +1790,13 @@
        DynamicDataSourceContextHolder.clearDataSourceType();
    }
    private AjaxResult getAjaxResult(Long userId, SysUser sysUser, String tjCategory) throws IOException {
//    @Transactional
    public AjaxResult getAjaxResult(Long userId, SysUser sysUser, String tjCategory,String tjh) throws IOException {
        LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>();
        wq.eq(TjCustomer::getCusId, userId);
        TjCustomer tjCustomer = tjCustomerService.getOne(wq);
        if (tjCustomer == null) return AjaxResult.error("该客户未登记或不存在");
//        LambdaQueryWrapper<TjOrder> wqq = new LambdaQueryWrapper<>();
//        wqq.eq(TjOrder::getUserId, userId);
//        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("不可重复登记");
//        }
        TjOrder tjOrder = new TjOrder();
        Date date = new Date();
        tjOrder.setCreateTime(date);
@@ -1785,16 +1813,17 @@
        if (tjReservation != null) {
            tjOrder.setReservationId(tjReservation.getId());
            mallOrder = mallOrderService.getOne(new LambdaQueryWrapper<MallOrder>().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 (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());
@@ -1805,13 +1834,28 @@
            }
            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(".{4}$", userId.toString().substring(userId.toString().length() - 4));
            tjOrder.setTjNumber(tjNumber);
            tjh = tjh.replaceAll(".{4}$", userId.toString().substring(userId.toString().length() - 4));
//            tjOrder.setTjNumber(tjNumber);
            tjOrder.setTjNumber(tjh);
            if (null != tjOrder.getPhoto()) {
                File file = new File(tjOrder.getPhoto());
                if (file.isFile()) {
@@ -1851,6 +1895,17 @@
                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());
                tjFlowingWater.setCopeWith(tbTransitionMapper.sumTbTransitionOrdPriceByTjNum(tjOrder.getTjNumber()));
                tjFlowingWater.setPaidIn(tbTransitionMapper.sumTbTransitionNowPriceByTjNum(tjOrder.getTjNumber()));
                tjFlowingWater.setDiscount(String.valueOf(10));
                tjFlowingWater.setPayStasus(1L);
                tjFlowingWater.setPayType(3L);
                tjFlowingWater.setPayStasus(0L);
                if ("1".equals(tjOrder.getTjType())) {
                    if (tjReservation.getPayType() == 1) {
@@ -1899,18 +1954,38 @@
                if (tjFlowingWaterService.save(tjFlowingWater)) {
                    tjOrder.setTjSerialNumber(String.valueOf(tjFlowingWater.getTjSerialNumber()));
                    tjOrderService.updateById(tjOrder);
                }
                asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
                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<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
                    xdPictureService.saveBatch(xdPictureList);
                    List<TjOrderDetail> 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);
            }
        }
        return AjaxResult.error();
        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        return AjaxResult.error().put("userId",userId);
    }
@@ -2000,10 +2075,10 @@
                    transitionService.saveRedisTransitionByPacId(cusId, cardId, pacId);
                    //补差价
                    List<Map<String,Object>> cjMaps = groupingProService.huoquxiangmuchajia(pacId.toString(), cusId);
                    if(null !=cjMaps && !cjMaps.isEmpty()){
                    List<Map<String, Object>> cjMaps = groupingProService.huoquxiangmuchajia(pacId.toString(), cusId);
                    if (null != cjMaps && !cjMaps.isEmpty()) {
                        for (Map<String, Object> cjMap : cjMaps) {
                            transitionService.buxiangmuchajia(cusId,pacId.toString(),cjMap.get("xmid").toString(),new BigDecimal(cjMap.get("cj").toString()));
                            transitionService.buxiangmuchajia(cusId, pacId.toString(), cjMap.get("xmid").toString(), new BigDecimal(cjMap.get("cj").toString()));
                        }
                    }
@@ -3217,7 +3292,7 @@
            for (int i = 0; i < tjNumbers.size(); i++) {
                String tjNumber = tjNumbers.get(i).getTjNumber();
                try {
                    List<Map<String, String>> djdInfos = tjOrderService.selectDjdInfo(tjNumber);
                    List<Map<String, Object>> djdInfos = tjOrderService.selectDjdInfo(tjNumber);
                    Map<String, Object> userInfo = tjOrderService.selectDjdUserInfo(tjNumber);
                    LocalDateTime tjsj = (LocalDateTime) userInfo.get("tjsj");
                    DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
@@ -3511,7 +3586,7 @@
                log.info("退费申请 入参 -> {}", JSONUtil.toJsonStr(map));
                String post = HttpClientUtils.sendPost(apiUrl + "/api/his/" + hospbm + "/creatCostInfo", map);
                log.info("退费申请 返回 -> {}", JSONUtil.toJsonStr(post));
                if(null !=post){
                if (null != post) {
                    JSONObject jsonObject = JSONUtil.parseObj(post);
                    if (jsonObject.getStr("code").equals("200")) {
                        // hisTfWaterId
@@ -3701,7 +3776,7 @@
                    }
                }
            }
            if(!list.isEmpty()) {
            if (!list.isEmpty()) {
                int i = tjReportService.deleteTjReportByReIds(list.toArray(new Long[]{}));
                if (i == 0) {
                    return AjaxResult.error("撤回失败!");
@@ -3757,14 +3832,14 @@
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return AjaxResult.error("操作失败! 以下项目已存在: " + string);
                }
                transitionService.ttsaveTemoTransitionByGroupingId(cusId, cardId, pacId.toString()) ;
                    //补差价
                    List<Map<String,Object>> cjMaps = groupingProService.huoquxiangmuchajia(pacId.toString(), cusId);
                    if(null !=cjMaps && !cjMaps.isEmpty()){
                        for (Map<String, Object> cjMap : cjMaps) {
                            transitionService.buxiangmuchajia(cusId,pacId.toString(),cjMap.get("xmid").toString(),new BigDecimal(cjMap.get("cj").toString()));
                        }
                transitionService.ttsaveTemoTransitionByGroupingId(cusId, cardId, pacId.toString());
                //补差价
                List<Map<String, Object>> cjMaps = groupingProService.huoquxiangmuchajia(pacId.toString(), cusId);
                if (null != cjMaps && !cjMaps.isEmpty()) {
                    for (Map<String, Object> cjMap : cjMaps) {
                        transitionService.buxiangmuchajia(cusId, pacId.toString(), cjMap.get("xmid").toString(), new BigDecimal(cjMap.get("cj").toString()));
                    }
                }
            }
        }
@@ -3799,7 +3874,7 @@
//                }
//            }
//        }
        List<TbTransition> list= transitionService.newgetTransitionList(cusId);
        List<TbTransition> list = transitionService.newgetTransitionList(cusId);
        return AjaxResult.success(list);
    }
@@ -3808,30 +3883,30 @@
    @Transactional
    public AjaxResult updateTransitionnewPrice(@RequestBody List<UpdateTransitionnewPriceDto> dtos) {
        if(null !=dtos && !dtos.isEmpty()){
        if (null != dtos && !dtos.isEmpty()) {
            for (UpdateTransitionnewPriceDto dto : dtos) {
                LambdaQueryWrapper<TbTransition> wq=new LambdaQueryWrapper<>();
                wq.eq(TbTransition::getCusId,dto.getCusIdCard());
                wq.eq(TbTransition::getParentProId,dto.getParentProId());
                LambdaQueryWrapper<TbTransition> wq = new LambdaQueryWrapper<>();
                wq.eq(TbTransition::getCusId, dto.getCusIdCard());
                wq.eq(TbTransition::getParentProId, dto.getParentProId());
                wq.isNull(TbTransition::getTjNum);
                List<TbTransition> list = transitionService.list(wq);
                log.info("修改的客户身份证号为: "+dto.getCusIdCard());
                log.info("父项目id为: "+dto.getParentProId());
                log.info("折扣为: "+new BigDecimal(dto.getDiscount()));
                if(null !=list && !list.isEmpty()){
                    BigDecimal dxzj = transitionService.getTbTransitionPriceAndOrdPrice(dto.getCusIdCard(),dto.getParentProId());
                log.info("修改的客户身份证号为: " + dto.getCusIdCard());
                log.info("父项目id为: " + dto.getParentProId());
                log.info("折扣为: " + new BigDecimal(dto.getDiscount()));
                if (null != list && !list.isEmpty()) {
                    BigDecimal dxzj = transitionService.getTbTransitionPriceAndOrdPrice(dto.getCusIdCard(), dto.getParentProId());
                    for (TbTransition transition : list) {
                        BigDecimal ordPrice = transition.getOrdPrice();
                        BigDecimal multiply = ordPrice.multiply((new BigDecimal(dto.getDiscount()).divide(BigDecimal.valueOf(10))));
                        log.info("后端计算的金额: "+multiply);
                        log.info("后端计算的金额: " + multiply);
                        transition.setNowPrice(multiply);
                        transition.setDiscount(new BigDecimal(dto.getDiscount()));
                        transitionService.updateById(transition);
                    }
                    if(null !=dto.getYhj() && dto.getYhj().compareTo(BigDecimal.ZERO)>=0){
                    if (null != dto.getYhj() && dto.getYhj().compareTo(BigDecimal.ZERO) >= 0) {
                        List<TbTransition> transitionList = list.stream().filter(a ->
                                transitionService.getTbTransitionPriceAndOrdPrice(dto.getCusIdCard(),dto.getParentProId()).subtract(dto.getYhj()).compareTo(BigDecimal.ZERO) >= 0).collect(Collectors.toList());
                        if(!transitionList.isEmpty()){
                                transitionService.getTbTransitionPriceAndOrdPrice(dto.getCusIdCard(), dto.getParentProId()).subtract(dto.getYhj()).compareTo(BigDecimal.ZERO) >= 0).collect(Collectors.toList());
                        if (!transitionList.isEmpty()) {
                            TbTransition tbTransition = transitionList.get(0);
                            tbTransition.setNowPrice(dxzj);
                            transitionService.updateById(tbTransition);
@@ -3844,5 +3919,37 @@
    }
    @PostMapping("/huifuyuyuejilu")
    @ApiOperation(value = "体检记录页面恢复预约记录接口")
    @Transactional
    public AjaxResult huifuyuyuejilu(@RequestBody List<String> 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();
    }
}
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjSamplingController.java
@@ -364,7 +364,7 @@
        if (list.size() >= 2) {
            // 进行合并
            List<String> stringList = list.stream().map(TjSampling::getId).collect(Collectors.toList());
            log.info("提取id ->{}",stringList);
//            log.info("提取id ->{}",stringList);
            for (String s : stringList) {
                if (tjSamplingService.isMergeItem(s) != 0) {
                    list.removeIf(item -> Objects.equals(item.getId(), s));
ltkj-common/src/main/java/com/ltkj/common/utils/PDFDocumentUtil.java
@@ -243,7 +243,7 @@
     * @throws DocumentException
     * @throws IOException
     */
    public static void makeTjInfo(Document document,List<Map<String ,String>> data) throws DocumentException, IOException {
    public static void makeTjInfo(Document document,List<Map<String ,Object>> data) throws DocumentException, IOException {
        PdfPTable table1 = new PdfPTable(7);
        table1.setWidthPercentage(100);
        float[] columnWidths = {1.5f, 3, 3, 6, 1.5f, 3, 3};
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TbTransitionMapper.java
@@ -76,7 +76,8 @@
    public boolean delTbBycusCardIdAndProId(@Param("cdId") String cdId,@Param("proId")String proId);
    @Update("UPDATE tb_transition a SET "+
            "a.tj_num=null" +
            "a.tj_num=null," +
            "a.card_id=0" +
            " WHERE a.tj_num=#{tjNum}")
    boolean updateTbTransitionByTjNum(String tjNum);
@@ -376,4 +377,10 @@
    @Select("SELECT SUM(a.ord_price) FROM tb_transition a WHERE  a.tj_num=#{tjNum} AND a.parent_pro_id=#{proId}")
    BigDecimal getTbTransitionOrdPriceByTjNumAndParentId(@Param("tjNum")String tjNum,@Param("proId")String proId);
    @Select("SELECT SUM(a.ord_price) FROM tb_transition a WHERE  a.tj_num=#{tjNum}")
    BigDecimal sumTbTransitionOrdPriceByTjNum(@Param("tjNum")String tjNum);
    @Select("SELECT SUM(a.now_price) FROM tb_transition a WHERE  a.tj_num=#{tjNum}")
    BigDecimal sumTbTransitionNowPriceByTjNum(@Param("tjNum")String tjNum);
}
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderMapper.java
@@ -221,21 +221,67 @@
     * @param tjNumber 体检单号
     * @return
     */
    @Select("SELECT  @num :=  @num + 1 AS xh, d.dept_name ksmc, d.official_web ksdz, e.tjxm FROM sys_dept d JOIN ( select aa.ksmc,GROUP_CONCAT( DISTINCT aa.pro_name ORDER BY aa.pro_name DESC SEPARATOR ';' ) tjxm  from ( SELECT (case when f.ksmc in ('临检室','化验室','','') or c.pro_name like '%测定%' then '检验科'      when c.pro_name like '%心电图%' then '心电图室'  when f.ksmc='x光室' or c.pro_name like '%X线摄影%'  then '放射科'  when c.pro_name like '%色觉%' then '眼科' \t\t\t\twhen c.pro_name like '%超%' or c.pro_name like '%多普勒%' then 'B超室'  when (replace(f.ksmc,' ','')='' or f.ksmc is null) and c.dept_id<>'100' then  d.dept_name when c.pro_name like '%CT%' then 'CT室'  else '体检中心' end ) ksmc, c.pro_name FROM tj_order a JOIN tj_order_detail b ON b.order_id = a.order_id JOIN tj_project c ON c.pro_id = b.pro_id  left join his_mxfyxm e on e.mxfyxmbm=c.his_xmbm left join ltkj_his_dept f on f.ksbm = CONCAT('00',(case when e.hsks is null then '' else e.hsks end)) join sys_dept d on d.dept_id=c.dept_id WHERE a.tj_number =  #{tjNumber} ) aa  GROUP BY ksmc ) e ON e.ksmc = d.dept_name , (SELECT @num := 0) a WHERE d.parent_id = '100' ORDER BY xh")
    List<Map<String ,String >> selectDjdInfo(@Param("tjNumber")String tjNumber);
//    @Select("SELECT  @num :=  @num + 1 AS xh, d.dept_name ksmc, d.official_web ksdz, e.tjxm FROM sys_dept d JOIN " +
//            "( select aa.ksmc,GROUP_CONCAT( DISTINCT aa.pro_name ORDER BY aa.pro_name DESC SEPARATOR ';' ) tjxm  from " +
//            "( SELECT (case when f.ksmc in ('临检室','化验室','','') or c.pro_name like '%测定%' then '检验科'     " +
//            " when c.pro_name like '%心电图%' then '心电图室'  when f.ksmc='x光室' or c.pro_name like '%X线摄影%'  then '放射科'  when c.pro_name like '%色觉%' then '眼科' " +
//            "\t\t\t\twhen c.pro_name like '%超%' or c.pro_name like '%多普勒%' then 'B超室'  when (replace(f.ksmc,' ','')='' or f.ksmc is null) and c.dept_id<>'100' then " +
//            " d.dept_name when c.pro_name like '%CT%' then 'CT室'  else '体检中心' end ) ksmc, c.pro_name FROM tj_order a JOIN tj_order_detail b ON b.order_id = a.order_id " +
//            "JOIN tj_project c ON c.pro_id = b.pro_id  left join his_mxfyxm e on e.mxfyxmbm=c.his_xmbm left join ltkj_his_dept f on f.ksbm = CONCAT('00'," +
//            "(case when e.hsks is null then '' else e.hsks end)) join sys_dept d on d.dept_id=c.dept_id WHERE a.tj_number =  #{tjNumber} ) aa  GROUP BY ksmc ) e ON e.ksmc = " +
//            "d.dept_name , (SELECT @num := 0) a WHERE d.parent_id = '100' ORDER BY xh")
//    List<Map<String ,String >> selectDjdInfo(@Param("tjNumber")String tjNumber);
    @Select("SELECT \n" +
            "    '1' AS xh, " +
            "    REPLACE(d.dept_name, '门诊', '') AS ksmc,\n" +
            "    d.official_web AS ksdz,\n" +
            "    e.tjxm,\n" +
            "    e.tjjg\n" +
            "FROM sys_dept d\n" +
            "JOIN (\n" +
            "    SELECT\n" +
            "        c.dept_id,\n" +
            "        GROUP_CONCAT(DISTINCT c1.pro_name ORDER BY c1.pro_name DESC SEPARATOR ';') AS tjxm,\n" +
            "        SUM(b.ord_price) AS tjjg\n" +
            "    FROM tb_transition b\n" +
            "    JOIN tj_project c ON c.pro_id = b.parent_pro_id\n" +
            "    JOIN tj_project c1 ON c1.pro_id = b.parent_pro_id\n" +
            "    WHERE trim(b.tj_num) = #{tjNumber} \n" +
            "      AND c.pro_parent_id = 0\n" +
            "      AND c1.pro_name NOT IN ('主任医师诊查', '(tj)体检费(物理检查)')\n" +
            "      AND c1.pro_name NOT LIKE '%主任医师诊查%'\n" +
            "    GROUP BY c.dept_id\n" +
            ") e ON e.dept_id = d.dept_id\n" +
            "ORDER BY d.djd_num")
    List<Map<String ,Object >> selectDjdInfo(@Param("tjNumber")String tjNumber);
    /**
     * 查询导检单用户信息
     * @param tjNumber
     * @return
     */
    @Select("select c.tj_number tjh,a.cus_name tjname, b.dict_label sex,a.create_time tjsj,ifnull(d.cn_name,'') dwmc,a.cus_phone lxdh\n" +
    @Select("select c.tj_number tjh,a.cus_name tjname, b.dict_label sex,c.create_time tjsj,ifnull(c.firm_name,'') dwmc,a.cus_phone lxdh,ifnull(c.firm_dept_name,'') dwbm,\n" +
            "ifnull((select dict_label from sys_dict_data where dict_type ='dict_team' and status=0 and dict_value=c.tj_type),'') tjlx,\n" +
            "( (\n" +
            "  SELECT\n" +
            "    sum( b1.ord_price ) \n" +
            "  FROM\n" +
            "    tb_transition b1\n" +
            "    JOIN tj_project c1 ON c1.pro_id = b1.parent_pro_id \n" +
            "    AND c1.pro_parent_id = 0 \n" +
            "  WHERE\n" +
            "    b1.tj_num = c.tj_number \n" +
            "  )*(IFNULL(c.discount,10)/10)) tjze,c.card_id ,CONCAT(cast(a.age as char),e.dict_label) nl,(SELECT tb.pac_name FROM tb_transition tb" +
            " WHERE tb.tj_num = c.tj_number GROUP BY tb.pac_id)tcmc,a.his_jzkh\n" +
            "from tj_order c \n" +
            " join tj_customer a on  a.cus_id= c.user_id \n" +
            " join (select dict_value,dict_label from  sys_dict_data where dict_type='sys_user_sex') b on b.dict_value = a.cus_sex\n" +
            " left join dict_comp d on d.drug_manufacturer_id = c.firm_id\n" +
            "where c.tj_number=#{tjNumber}")
    Map<String ,Object > selectDjdUserInfo(@Param("tjNumber")String tjNumber);
            "\tjoin tj_customer a on  a.cus_id= c.user_id \n" +
            "  join (select dict_value,dict_label from  sys_dict_data where dict_type='sys_user_sex') b on b.dict_value = a.cus_sex\n" +
            "\tleft join dict_comp d on d.drug_manufacturer_id = c.firm_id\n" +
            "join (select dict_label,dict_value from sys_dict_data where dict_type='dict_ageunit') e  on e.dict_value = a.age_unit\n" +
            "where trim(c.tj_number)=#{tjNumber}")
    Map<String ,Object > selectDjdUserInfo(@Param("tjNumber") String tjNumber);
    @Select("SELECT a.sqdh FROM ltkj_jianchajianyan_tree a WHERE a.card_id=#{cardId} AND a.type='检查' GROUP BY a.sqdh")
ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderService.java
@@ -138,7 +138,7 @@
    String  isPayByTjNum(String orderId);
    List<Map<String ,String >> selectDjdInfo(String tjNumber);
    List<Map<String ,Object >> selectDjdInfo(String tjNumber);
    Map<String ,Object > selectDjdUserInfo(String tjNumber);
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderServiceImpl.java
@@ -11,6 +11,7 @@
import com.ltkj.hosp.service.ITjOrderService;
import com.ltkj.hosp.service.ITjPackageService;
import com.ltkj.hosp.vodomain.LineChartsVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ltkj.hosp.mapper.TjOrderMapper;
@@ -23,6 +24,7 @@
 * @date 2022-11-21
 */
@Service
@Slf4j
public class TjOrderServiceImpl extends ServiceImpl<TjOrderMapper, TjOrder> implements ITjOrderService {
    @Autowired
    private TjOrderMapper tjOrderMapper;
@@ -277,12 +279,14 @@
    }
    @Override
    public List<Map<String, String>> selectDjdInfo(String tjNumber) {
    public List<Map<String, Object>> selectDjdInfo(String tjNumber) {
        log.info("传递进来的体检号为: "+tjNumber);
        return tjOrderMapper.selectDjdInfo(tjNumber);
    }
    @Override
    public Map<String, Object> selectDjdUserInfo(String tjNumber) {
        log.info("传递进来的体检号为: "+tjNumber);
        return tjOrderMapper.selectDjdUserInfo(tjNumber);
    }