zjh
19 小时以前 3982f0bc9ee436235ba546d356c5554250ed9963
zjh20250711
9个文件已修改
924 ■■■■■ 已修改文件
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjAdviceController.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCompPayController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCustomerController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java 815 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjAdvice.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjCompPayInfo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjAdviceController.java
@@ -12,6 +12,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ltkj.common.annotation.Excel;
import com.ltkj.common.core.domain.entity.SysDept;
import com.ltkj.common.utils.SecurityUtils;
import com.ltkj.common.utils.StringUtils;
import com.ltkj.common.utils.poi.ExcelUtil;
import com.ltkj.framework.config.UserHoder;
@@ -132,14 +133,13 @@
    }
    @GetMapping("/getCyTjAdviceKjbqBySex")
/*    @GetMapping("/getCyTjAdviceKjbqBySex")
    @ApiOperation(value = "根据当前登录人id获取常用建议")
    public AjaxResult getCyTjAdviceKjbqBySex(@RequestParam(required = false) String sex, @RequestParam @ApiParam(value = "用户id 传当前登录人") Long userId,
                                             @ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer page,
                                             @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize) {
        LambdaQueryWrapper<TjAdvice> wq = new LambdaQueryWrapper<>();
        Page<TjAdvice> page1 = new Page<>(page, pageSize);
//        wq.eq(TjAdvice::getAdSex,sex).or().eq(TjAdvice::getAdSex,"2");
        if (null != userId) {
            LambdaQueryWrapper<TjUserAdvice> wq0 = new LambdaQueryWrapper<>();
            wq0.eq(TjUserAdvice::getUserId, userId);
@@ -150,6 +150,33 @@
                Page<TjAdvice> kjbqPage = tjAdviceService.page(page1,wq);
                return AjaxResult.success(kjbqPage);
            }
        }
        return AjaxResult.success("该用户暂时没有常用建议!");
    }*/
    @GetMapping("/getCyTjAdviceKjbqBySex")
    @ApiOperation(value = "根据当前登录人id获取常用建议")
    public AjaxResult getCyTjAdviceKjbqBySex(@RequestParam(required = false) String sex, @RequestParam @ApiParam(value = "用户id 传当前登录人") Long userId,
                                             @ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer page,
                                             @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize) {
        LambdaQueryWrapper<TjUserAdvice> wq0 = new LambdaQueryWrapper<>();
        if(!SecurityUtils.isAdmin(userId)) wq0.eq(TjUserAdvice::getUserId, userId);
        List<TjUserAdvice> list = userAdviceService.list(wq0);
        List<TjAdvice> kjbqPage = new ArrayList<>();
        Map<String,Object> map = new HashMap<>();
        if (null != list && !list.isEmpty()) {
            for (TjUserAdvice advice : list) {
                TjAdvice advice1 = tjAdviceService.getById(advice.getAdviceId());
                if(null != advice1){
                    advice1.setUserName(userService.getById(advice.getUserId()).getNickName());
                    kjbqPage.add(advice1);
                }
            }
            List<TjAdvice> adviceList = kjbqPage.stream().skip((long) (page - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
            map.put("total", kjbqPage.size());
            map.put("records", adviceList);
            return AjaxResult.success(map);
        }
        return AjaxResult.success("该用户暂时没有常用建议!");
    }
@@ -364,4 +391,18 @@
    public AjaxResult remove(@PathVariable Long[] ids) {
        return AjaxResult.success(tjAdviceService.deleteTjAdviceByIds(ids));
    }
    @DeleteMapping("/delCyremove")
    @ApiOperation(value = "删除用户常用建议接口")
    public AjaxResult delCyremove(@RequestParam List<String> ids) {
        String userId = UserHoder.getLoginUser().getUserId();
        LambdaQueryWrapper<TjUserAdvice> wq=new LambdaQueryWrapper<>();
        wq.in(TjUserAdvice::getAdviceId,ids);
        wq.eq(TjUserAdvice::getUserId,userId);
        if (userAdviceService.remove(wq)) {
            return AjaxResult.success();
        }
        return AjaxResult.error();
    }
}
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCompPayController.java
@@ -300,18 +300,29 @@
    @GetMapping("/getTjCompPay")
    @ApiOperation(value = "根据团队体检编号和套餐id获取结账信息")
    public AjaxResult getTjCompPay(@RequestParam @ApiParam(value = "团队编号") String teamNo,
                                          @RequestParam(required = false) @ApiParam(value = "单位id") String pacId) {
                                          @RequestParam @ApiParam(value = "套餐id") String pacId) {
        try {
             LambdaQueryWrapper<TjCompPay> wq = new LambdaQueryWrapper<>();
             wq.eq(TjCompPay::getTeamNo, teamNo);
             wq.eq(TjCompPay::getCompId, pacId);
             wq.eq(TjCompPay::getPacId, pacId);
             List<TjCompPay> tjCompPays = compPayService.list(wq);
             if(null !=tjCompPays && !tjCompPays.isEmpty()){
                 for (TjCompPay pay : tjCompPays) {
                     LambdaQueryWrapper<TjCompPayInfo> wqInfo = new LambdaQueryWrapper<>();
                     wqInfo.eq(TjCompPayInfo::getTjCompPayId, pay.getId());
                     List<TjCompPayInfo> payInfos = payInfoService.list(wqInfo);
                     if(null !=payInfos && !payInfos.isEmpty()){
                         for (TjCompPayInfo info : payInfos) {
                             TjOrder order = orderService.getOrderByTjNum(info.getTjh());
                             if(null != order){
                                 TjCustomer tjCustomer = customerService.getById(order.getUserId());
                                 if (null != tjCustomer) {
                                     info.setName(tjCustomer.getCusName());
                                 }
                             }
                         }
                     }
                     pay.setPayInfo(payInfos);
                 }
             }
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCustomerController.java
@@ -330,18 +330,16 @@
                            }
                        }
                    } else if(null != s && s.equalsIgnoreCase("Y")) {
                        TjCustomer requestCommonHisApi = isRequestCommonHisApi(tjCustomer);
                        if (null !=requestCommonHisApi){
                            tjCustomerService.save(requestCommonHisApi);
                        }
                    }else {
                        tjCustomerService.save(tjCustomer);
                        tjCustomer = isRequestCommonHisApi(tjCustomer);
                    }
                    tjCustomer.setTeamNo(tjReservation.getTeamNo());
                    tjCustomer.setCompId(tjReservation.getCompanyId());
                    tjCustomer.setReservationId(tjReservation.getId());
                    tjCustomer.setDiscount(tjReservation.getDiscount());
                    tjCustomer.setGroupingId(tjReservation.getGroupingId());
                    if(null != tjCustomer){
                        tjCustomerService.save(tjCustomer);
                        tjCustomer.setTeamNo(tjReservation.getTeamNo());
                        tjCustomer.setCompId(tjReservation.getCompanyId());
                        tjCustomer.setReservationId(tjReservation.getId());
                        tjCustomer.setDiscount(tjReservation.getDiscount());
                        tjCustomer.setGroupingId(tjReservation.getGroupingId());
                    }
                    return success(tjCustomer);
                }
@@ -354,16 +352,7 @@
            if (null == tjCustomerServiceOne) {
                return AjaxResult.error("该人员信息不存在请先进行登记!!!");
            }
//            if (null != key && key.equals("Y")) {
                String cardId = tjCustomerServiceOne.getCardId();
                if (null != cardId && !cardId.equals("0")) {
//                    int i = tjOrderService.selectTjOrderByCardId(cardId);
//                    if (i > 0) {
//                        return AjaxResult.error("不可重复签到");
//                    }
                }
//            }
            if(!tjCustomerServiceOne.getAge().equals(String.valueOf(DateUtil.ageOfNow(tjCustomerServiceOne.getCusBrithday())))){
                tjCustomerServiceOne.setAge(String.valueOf(DateUtil.ageOfNow(tjCustomerServiceOne.getCusBrithday())));
                tjCustomerService.updateById(tjCustomerServiceOne);
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
@@ -126,7 +126,7 @@
    private ITbTransitionService transitionService;
    @Resource
    private ISysConfigService configService;
//    @Value("${path.filePath}")
    //    @Value("${path.filePath}")
//    private String value;
    @Resource
    private ITjOrderRemarkService remarkService;
@@ -482,8 +482,8 @@
                        TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId());
                        if (null != tjCustomer) {
                            order.setTjCustomerSex(tjCustomer.getCusSex());
                            if(null !=tjCustomer.getCusBrithday())
                               order.setTjCustomerAge(DateUtil.ageOfNow(tjCustomer.getCusBrithday()));
                            if (null != tjCustomer.getCusBrithday())
                                order.setTjCustomerAge(DateUtil.ageOfNow(tjCustomer.getCusBrithday()));
                            order.setTjCustomerName(tjCustomer.getCusName());
                            order.setTjCustomerPhone(tjCustomer.getCusPhone());
                            order.setTjCusIdCard(tjCustomer.getCusIdcard());
@@ -550,7 +550,7 @@
                TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId());
                if (null != tjCustomer) {
                    order.setTjCustomerSex(tjCustomer.getCusSex());
                     if(null !=tjCustomer.getCusBrithday())
                    if (null != tjCustomer.getCusBrithday())
                        order.setTjCustomerAge(DateUtil.ageOfNow(tjCustomer.getCusBrithday()));
                    order.setTjCustomerName(tjCustomer.getCusName());
                    order.setTjCustomerPhone(tjCustomer.getCusPhone());
@@ -843,23 +843,21 @@
    }
    @PostMapping("/exportOrderList")
    @ApiOperation(value = "导出体检记录列表")
    public void exportOrderList(@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,
                                   @ApiParam(value = "当前页或全部数据") @RequestParam(required = false) String dqyorqbsj,
                                   HttpServletResponse response) {
                                @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,
                                @ApiParam(value = "当前页或全部数据") @RequestParam(required = false) String dqyorqbsj,
                                HttpServletResponse response) {
        List<Long> cusIds = null;
        if (null != name) {
            LambdaQueryWrapper<TjCustomer> wqq = new LambdaQueryWrapper<>();
@@ -983,10 +981,10 @@
        wq.orderByDesc(TjOrder::getCreateTime);
        List<TjOrder> list =null;
        if(StringUtil.isNotBlank(dqyorqbsj) && dqyorqbsj.equals("1")){
        List<TjOrder> list = null;
        if (StringUtil.isNotBlank(dqyorqbsj) && dqyorqbsj.equals("1")) {
            list = tjOrderService.list(wq);
        }else {
        } else {
            Page<TjOrder> page2 = tjOrderService.page(page1, wq);
            list = page2.getRecords();
        }
@@ -1188,7 +1186,7 @@
        }
        String pacId = transitionService.getTbTransitionPacIdByCusIdAndPac(String.valueOf(tjCustomer.getCusIdcard()));
        if (StringUtil.isNotBlank(tjOrder.getPacId()) && StringUtil.isNotBlank(pacId) ) {
        if (StringUtil.isNotBlank(tjOrder.getPacId()) && StringUtil.isNotBlank(pacId)) {
            tjOrder.setPacId(pacId);
        }
        //判断小程序上预约是否付钱
@@ -1209,30 +1207,29 @@
                if (!result.get("code").toString().equals("200")) {
                    hisApiMethod.ZfHisApiMethod(tjOrder.getCardId());
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                }else {
                } else {
                    tjOrderService.tjQiandaodengji(tjOrder.getTjNumber());
                }
                return result;
            }
        }catch (Exception e){
        } catch (Exception e) {
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            log.error(String.valueOf(e));
        }
        finally {
        } finally {
            lock.unlock();
        }
        return AjaxResult.error();
    }
//    @Transactional(propagation = Propagation.REQUIRES_NEW, isolation = Isolation.READ_COMMITTED)
    @Transactional(propagation = Propagation.REQUIRED) // 共享事务
    public AjaxResult processOrderWithTransaction(TjOrder tjOrder, TjCustomer tjCustomer, TjReservation tjReservation, TjFlowingWater tjFlowingWater, MallOrder mallOrder, SysUser sysUser) {
    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");
        if (sfkqtjhqz.equalsIgnoreCase("Y")) {
            makeLisTmhPrefix = configService.selectConfigByKey("make_lis_tmh_prefix");
        }
        //生成体检号
@@ -1242,33 +1239,33 @@
//        String tjNumber = idUtils.getTjNumber();
        String tjNumber = null;
        int a =0;
        while (tjNumber ==null){
            if(a>3){
        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 {
                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;
                    if (countByTjNum == 0) {
                        tjNumber = newTjNumberRedisLockAndMysql;
                    }
                }
            } catch (Exception e) {
                log.error(e.getMessage());
            }finally {
            } finally {
                a++;
            }
        }
        if(StringUtil.isBlank(tjNumber)) return AjaxResult.error("登记失败 重新操作");
        if (StringUtil.isBlank(tjNumber)) return AjaxResult.error("登记失败 重新操作");
        tjOrder.setTjNumber(tjNumber);
@@ -1374,7 +1371,7 @@
            /*调用his接口*/
            String config = configService.selectConfigByKey("sfkqdyhis");
            if (null != config && config.equals("Y")) {
                if(tjCustomer.getPationId().equals("0")){
                if (tjCustomer.getPationId().equals("0")) {
                    AjaxResult result = controller.Outpincreateapply(tjCustomer);
                    String result1 = getAjaxResult(result);
                    JSONObject object = getJSONObject(result1);
@@ -1405,12 +1402,12 @@
                // 查询 对接Lis、Pacs申请如果类型包含在配置内则使用对接lis、pacs
                try {
                    if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
                        log.info("调用his开启 进入不收费方法 该体检人员不收费:"+tjOrder.getTjNumber());
                        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")){
                        if (!ajaxResult.get("code").toString().equals("200")) {
                            throw new IllegalStateException("团体申请单发送失败!" + result.get("msg").toString());
//                            return ajaxResult;
                        }
@@ -1423,17 +1420,18 @@
//                        addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
                        log.info("调用his开启 进入不收费方法 该方法执行完毕");
                    } else {
                        log.info("调用his开启 进入收费方法 该体检人员收费:"+tjOrder.getTjNumber());
                        log.info("调用his开启 进入收费方法 该体检人员收费:" + tjOrder.getTjNumber());
                        newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                        List<TjOrderDetail> 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());
                        else
                            hisApiMethod.tijianshenqingJinchuanNew(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
                    }
                } catch (Exception e) {
                    log.error("发生错误 ->{}"+String.valueOf(e),e.getMessage());
                    log.error("发生错误 ->{}" + String.valueOf(e), e.getMessage());
                    throw new IllegalStateException();
                }
                return AjaxResult.success(tjNumber);
@@ -1531,10 +1529,10 @@
            // 查询 对接Lis、Pacs申请如果类型包含在配置内则使用对接lis、pacs
            log.info("签到登记接口该人员: "+tjOrder.getTjNumber()+" 的体检类型是:"+tjOrder.getTjType());
            log.info("签到登记接口该人员: " + tjOrder.getTjNumber() + " 的体检类型是:" + tjOrder.getTjType());
            if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
                try {
                    log.info(tjOrder.getTjNumber()+"签到登记进入未收费方法");
                    log.info(tjOrder.getTjNumber() + "签到登记进入未收费方法");
                    // 这是上面个人方法引入数据
                    tjFlowingWater.setPayStasus(1L);
                    newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
@@ -1544,7 +1542,7 @@
                    List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
                    xdPictureService.saveBatch(xdPictureList);
                    List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
                    log.info(tjOrder.getTjNumber()+"签到登记:采样数据查询个数"+detailList.size());
                    log.info(tjOrder.getTjNumber() + "签到登记:采样数据查询个数" + detailList.size());
                    addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
                    return AjaxResult.success(tjNumber);
                } catch (Exception e) {
@@ -1553,11 +1551,11 @@
                }
            } else {
                try {
                    log.info(tjOrder.getTjNumber()+"else签到登记进入收费方法");
                    log.info(tjOrder.getTjNumber() + "else签到登记进入收费方法");
                    newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                    isRequestCommonHisApi(tjOrder, tjCustomer, tjFlowingWater);
                } catch (Exception e) {
                    log.error("processOrderWithTransaction 方法异常"+e.getMessage());
                    log.error("processOrderWithTransaction 方法异常" + e.getMessage());
                    throw new RuntimeException("调用公共方法失败 强制触发回滚");
//                    return AjaxResult.error();
                }
@@ -1573,6 +1571,311 @@
//        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        throw new RuntimeException("体检记录保存失败 强制触发回滚");
    }
    @PostMapping("/addPlOrderAndDetail")
    @ApiOperation(value = "体检批量签到登记接口")
//    @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) {
                try {
                    getAjaxResults(cusId);
                } catch (Exception e) {
                }
            }
            LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>();
            wq.in(TjCustomer::getCusIdcard, cusIds);
            List<Long> 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) {
                    Future<AjaxResult> future = executor.submit(new Callable<AjaxResult>() {
                        @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) {
                        e.printStackTrace();
                    }
                }
            }
            // TODO 因为有体检号会查出空数据 先使用死数据  打印导诊单
            Map<String, Object> map = new HashMap<>();
            if (!tjNumbers.isEmpty()) {
                map.put("tjh", tjNumbers);
            }
            map.put("errtjh", errTjh);
            return AjaxResult.success("操作成功", map);
        }
//        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        return AjaxResult.error();
    }
    @Transactional
    public AjaxResult getAjaxResult(Long userId, SysUser sysUser, String tjCategory) throws IOException {
        LambdaQueryWrapper<TjCustomer> 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<TjReservation> 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<MallOrder>().eq(MallOrder::getReservationId, tjReservation.getId()));
            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");
            }
            //获取拼接前缀
            String sfkqtjhqz = configService.selectConfigByKey("sfkqtjhqz");
            String makeLisTmhPrefix = "";
            if (sfkqtjhqz.equalsIgnoreCase("Y")) {
                makeLisTmhPrefix = configService.selectConfigByKey("make_lis_tmh_prefix");
            }
            String tjNumber = idUtils.getNewTjNumberRedisLockAndMysql();
            if (StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber = makeLisTmhPrefix + tjNumber;
            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 (null == tjOrder.getPacId() && null != transitionService.getTbTransitionPacIdByCusIdAndPac(tjCustomer.getCusIdcard())) {
                tjOrder.setPacId(transitionService.getTbTransitionPacIdByCusIdAndPac(tjCustomer.getCusIdcard()));
            }
            //判断小程序上预约是否付钱
            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.sumTbTransitionOrdPriceByTjNumIsNull(tjCustomer.getCusIdcard());
                tjFlowingWater.setCopeWith(bigDecimal);
                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);
                /*调用his接口*/
                String config = configService.selectConfigByKey("sfkqdyhis");
                if (null != config && config.equals("Y")) {
                    if (tjCustomer.getPationId().equals("0")) {
                        AjaxResult result = controller.Outpincreateapply(tjCustomer);
                        String result1 = getAjaxResult(result);
                        JSONObject object = getJSONObject(result1);
                        String code = object.getStr("ResultCode");
                        if (code.equals("0")) {
                            JSONArray resultDatass = object.getJSONArray("ResultData");
                            Map<String, Object> resultData = (Map<String, Object>) resultDatass.get(0);
                            if (null != resultData && !resultData.isEmpty()) {
                                String pationid = resultData.get("PationId").toString();
                                if (null != pationid) {
                                    tjCustomer.setPationId(pationid);
                                    tjCustomerService.updateById(tjCustomer);
                                }
                            }
                        }
                    }
                    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());
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return AjaxResult.error().put("userId", userId);
                    }
                    log.info("批量签到 该登记人的his就诊号是: " + tjOrder.getCardId());
                    // 查询 对接Lis、Pacs申请如果类型包含在配置内则使用对接lis、pacs
                    try {
                        if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
                            log.info("批量签到 调用his开启 进入不收费方法 该体检人员不收费:" + tjOrder.getTjNumber());
                            // 这是上面个人方法引入数据
                            tjFlowingWater.setPayStasus(1L);
                            newSaveextracted(tjOrder, tjCustomer, new BigDecimal("10"), 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")) {
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                return AjaxResult.error().put("userId", userId);
                            }
                            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);
                            log.info("批量签到 调用his开启 进入不收费方法 该方法执行完毕");
                        }
                    } catch (Exception e) {
                        log.error("批量签到发生错误 ->{}" + String.valueOf(e), e.getMessage());
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return AjaxResult.error().put("userId", userId);                    }
                } else {
                    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);
                    }
                }
                tjCustomer.setCardId("0");
                tjCustomerService.updateById(tjCustomer);
                return AjaxResult.success().put("tjNumber", tjNumber);
            }
        }
        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        return AjaxResult.error().put("userId", userId);
    }
    //    @Transactional(propagation = Propagation.REQUIRES_NEW, isolation = Isolation.READ_COMMITTED)
    @Transactional(propagation = Propagation.REQUIRED) // 共享事务
    public void isRequestCommonHisApi(TjOrder tjOrder, TjCustomer tjCustomer, TjFlowingWater tjFlowingWater) {
@@ -1657,7 +1960,7 @@
                String format = DateUtil.format(date, "yyMMddHHmmssSSS");
                for (TjOrderDetail detail : detailList) {
                    int i = samplingService.isExistProId(order.getTjNumber(), String.valueOf(detail.getProId()));
                    if(i>0) continue;
                    if (i > 0) continue;
                    TjSampling sampling = new TjSampling();
                    if (null == projectService.getById(detail.getProId())) continue;
                    TjProject project = projectService.getById(detail.getProId());
@@ -1739,18 +2042,17 @@
    }
    @GetMapping("/addCaiYangDengJi")
    @ApiOperation(value = "手动添加采样记录接口")
    public AjaxResult addCaiYangDengJi(@RequestParam("tjNum") String tjNum){
    public AjaxResult addCaiYangDengJi(@RequestParam("tjNum") String tjNum) {
        try {
            TjOrder order = tjOrderService.getOrderByTjNum(tjNum);
            if(null !=order){
            if (null != order) {
                Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId());
                SysUser sysUser = userService.getById(userId);
                List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(order.getOrderId());
                log.info("签到登记:采样数据查询个数"+detailList.size());
                log.info("签到登记:采样数据查询个数" + detailList.size());
                addCaiYangDengJi(detailList, !detailList.isEmpty(), order, sysUser, null);
            }
        } catch (NumberFormatException e) {
@@ -1760,74 +2062,13 @@
        return AjaxResult.success();
    }
    @PostMapping("/addPlOrderAndDetail")
    @ApiOperation(value = "体检批量签到登记接口")
//    @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) {
                        try {
                            getAjaxResults(cusId);
                        } catch (Exception e) {
                        }
            }
            LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>();
            wq.in(TjCustomer::getCusIdcard, cusIds);
            List<Long> 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) {
                    Future<AjaxResult> future = executor.submit(new Callable<AjaxResult>() {
                        @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 因为有体检号会查出空数据 先使用死数据  打印导诊单
            Map<String,Object> map=new HashMap<>();
            if (!tjNumbers.isEmpty()) {
                map.put("tjh",tjNumbers);
            }
            map.put("errtjh",errTjh);
            return AjaxResult.success("操作成功",map);
        }
//        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        return AjaxResult.error();
    }
    @GetMapping("/signOrderInfo")
    public AjaxResult signOrderInfo(@RequestParam("tjNum") String tjNum){
    public AjaxResult signOrderInfo(@RequestParam("tjNum") String tjNum) {
        List<Map<String, Object>> djdInfos = tjOrderService.selectDjdInfo(tjNum);
        Map<String, Object> userInfo = tjOrderService.selectDjdUserInfo(tjNum);
        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("djd",djdInfos);
        hashMap.put("user",userInfo);
        hashMap.put("djd", djdInfos);
        hashMap.put("user", userInfo);
        return AjaxResult.success(hashMap);
    }
@@ -1886,14 +2127,6 @@
            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("对不起您的预约已超时请重新预约");
                }*/
                try {
                    LambdaQueryWrapper<TjCustomer> qw = new LambdaQueryWrapper<>();
                    qw.eq(TjCustomer::getCusIdcard, cusIdcard);
@@ -1941,11 +2174,11 @@
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }else {
            } else {
                throw new RuntimeException();
            }
        }else {
        } else {
            throw new RuntimeException();
        }
    }
@@ -1972,199 +2205,6 @@
            testMapper.saveTjProByCusId(customer.getCardId(), customer.getCusIdcard());
        }
        DynamicDataSourceContextHolder.clearDataSourceType();
    }
    @Transactional
    public AjaxResult getAjaxResult(Long userId, SysUser sysUser, String tjCategory) throws IOException {
        LambdaQueryWrapper<TjCustomer> 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<TjReservation> 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<MallOrder>().eq(MallOrder::getReservationId, tjReservation.getId()));
            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");
        }
            //获取拼接前缀
            String sfkqtjhqz = configService.selectConfigByKey("sfkqtjhqz");
            String makeLisTmhPrefix = "";
            if(sfkqtjhqz.equalsIgnoreCase("Y")){
                makeLisTmhPrefix = configService.selectConfigByKey("make_lis_tmh_prefix");
            }
            String tjNumber = idUtils.getNewTjNumberRedisLockAndMysql();
            if (StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber = makeLisTmhPrefix + tjNumber;
            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<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
                    xdPictureService.saveBatch(xdPictureList);
                    List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
                    addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
                }
                tjCustomer.setCardId("0");
                tjCustomerService.updateById(tjCustomer);
                return AjaxResult.success().put("tjNumber", tjNumber);
            }
        }
        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        return AjaxResult.error().put("userId",userId);
    }
@@ -2256,9 +2296,9 @@
                    //补差价
                    List<Map<String, Object>> cjMaps = transitionService.addTbhuoquxiangmuchajia(pacId.toString(), cusId);
                    if (null != cjMaps && !cjMaps.isEmpty()) {
                        log.info("该套餐"+pacId+"中有差价:"+cjMaps.size()+"个");
                        log.info("该套餐" + pacId + "中有差价:" + cjMaps.size() + "个");
                        for (Map<String, Object> cjMap : cjMaps) {
                            log.info("添加临时表套餐数据时所选的差价为:"+ cjMap.get("cj").toString());
                            log.info("添加临时表套餐数据时所选的差价为:" + cjMap.get("cj").toString());
                            transitionService.buxiangmuchajia(cusId, pacId.toString(), cjMap.get("xmid").toString(), new BigDecimal(cjMap.get("cj").toString()));
                        }
                    }
@@ -2988,7 +3028,7 @@
                tjFlowingWater.setPayType(4L);
                tjFlowingWaterService.updateById(tjFlowingWater);
                remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
    //            asyncService.addTjChargingStandard(tjOrder, transitionService.getTbTransitionListByCusId(tjCustomer.getCusIdcard(), tjOrder.getCardId()), sysUser);
                //            asyncService.addTjChargingStandard(tjOrder, transitionService.getTbTransitionListByCusId(tjCustomer.getCusIdcard(), tjOrder.getCardId()), sysUser);
                List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
                xdPictureService.saveBatch(xdPictureList);
            }
@@ -3389,7 +3429,7 @@
            tjCustomer.setCusNumber(cusNumber);
            tjCustomerService.updateById(tjCustomer);
            tjOrderService.removeById(order.getOrderId());
            return  AjaxResult.success("撤销成功");
            return AjaxResult.success("撤销成功");
        }
        return AjaxResult.error("体检记录不存在!");
    }
@@ -3697,13 +3737,13 @@
//                return AjaxResult.success();
            }
                try {
                    extracted(dto, order);
                } catch (Exception e) {
                    log.info("撤销失败,删除表失败");
                    return AjaxResult.error("撤销失败,删除表失败!");
                }
                return AjaxResult.success("撤销成功");
            try {
                extracted(dto, order);
            } catch (Exception e) {
                log.info("撤销失败,删除表失败");
                return AjaxResult.error("撤销失败,删除表失败!");
            }
            return AjaxResult.success("撤销成功");
        }
        return AjaxResult.error("未找到体检记录");
    }
@@ -3881,7 +3921,7 @@
    @GetMapping("/chushenyemianyijianjiekou")
    @ApiOperation(value = "初审页面弃检接口")
    @ApiOperation(value = "初审页面已检接口")
    @Transactional
    public AjaxResult chushenyemianyijianjiekou(@RequestParam String tjNUm, @RequestParam String proId) {
        LambdaQueryWrapper<TjOrderRemark> wq = new LambdaQueryWrapper<>();
@@ -3889,6 +3929,20 @@
        wq.eq(TjOrderRemark::getProId, proId);
        TjOrderRemark remark = remarkService.getOne(wq);
        remark.setType(1);
        remarkService.updateById(remark);
        return AjaxResult.success("操作成功!");
    }
    @GetMapping("/chushenyemianchexiaojiekou")
    @ApiOperation(value = "初审页面撤销接口")
    @Transactional
    public AjaxResult chushenyemianchexiaojiekou(@RequestParam String tjNUm, @RequestParam String proId) {
        LambdaQueryWrapper<TjOrderRemark> wq = new LambdaQueryWrapper<>();
        wq.eq(TjOrderRemark::getTjNumber, tjNUm);
        wq.eq(TjOrderRemark::getProId, proId);
        TjOrderRemark remark = remarkService.getOne(wq);
        remark.setType(0);
        remarkService.updateById(remark);
        return AjaxResult.success("操作成功!");
    }
@@ -4107,16 +4161,16 @@
                    BigDecimal dxzj = transitionService.getTbTransitionPriceAndOrdPrice(dto.getCusIdCard(), dto.getParentProId());
                    BigDecimal yhj = dto.getYhj();
                    log.info("前端传递的价格:{}",yhj.toString());
                    log.info("前端传递的价格:{}", yhj.toString());
                    BigDecimal cj = yhj.subtract(dxzj);
                    log.info("计算的差价:{}",cj.toString());
                    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){
                        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());
                            log.info("修改 补上差价后的价格为:{}", result.toString());
                            flag = true;
                            break;
                        }
@@ -4128,7 +4182,6 @@
    }
    @PostMapping("/huifuyuyuejilu")
    @ApiOperation(value = "体检记录页面恢复预约记录接口")
    @Transactional
@@ -4137,7 +4190,7 @@
        if (null != tjNUms && !tjNUms.isEmpty()) {
            for (String tjNUm : tjNUms) {
                TjOrder order = tjOrderService.getOrderByTjNum(tjNUm);
                if(null !=order && StringUtil.isNotBlank(order.getReservationId())){
                if (null != order && StringUtil.isNotBlank(order.getReservationId())) {
                    //这里删除的是这个人所有项目包括补录项目
                    tjOrderService.deleteTjOrderByOrderId(order.getOrderId());
                    tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId()));
@@ -4147,7 +4200,7 @@
                    tjSamplingMapper.deleteByTjNumAndCusId(order.getTjNumber(), order.getUserId());
                    TjReservation reservation = tjReservationService.getById(order.getReservationId());
                    if(null !=reservation){
                    if (null != reservation) {
                        reservation.setIsExpire(2);
                        tjReservationService.updateById(reservation);
                        transitionService.updateTbTransitionByTjNum(tjNUm);
@@ -4160,7 +4213,6 @@
        }
        return AjaxResult.error();
    }
    @PostMapping("/addBlTransition")
@@ -4199,5 +4251,72 @@
        }
        return AjaxResult.success();
    }
    @GetMapping("/piliangqiandaofasong")
    @ApiOperation(value = "根据客户体检号或其他挂号并给lispacs发送请求接口")
    @Transactional
    public AjaxResult piliangqiandaofasong(@RequestParam(required = false) @ApiParam(value = "体检号") String tjNum) {
        SysUser sysUser = UserHoder.getLoginUser().getUser();
        Date date = new Date();
        if (StringUtil.isNotBlank(tjNum)) {
            TjOrder tjOrder = tjOrderService.getOrderByTjNum(tjNum);
            piliangqiandaofasongmethod(tjOrder, date, sysUser);
        } else {
            List<TjOrder> list = tjOrderService.getOrderListBypiliangqiandaofasong();
            if (null != list && !list.isEmpty()) {
                for (TjOrder order : list) {
                    piliangqiandaofasongmethod(order, date, sysUser);
                }
            }
        }
        return AjaxResult.success("操作成功!");
    }
    private void piliangqiandaofasongmethod(TjOrder tjOrder, Date date, SysUser sysUser) {
        if (null != tjOrder) {
            TjCustomer tjCustomer = tjCustomerService.getById(tjOrder.getUserId());
            if (tjCustomer.getPationId().equals("0")) {
                AjaxResult result = controller.Outpincreateapply(tjCustomer);
                String result1 = getAjaxResult(result);
                JSONObject object = getJSONObject(result1);
                String code = object.getStr("ResultCode");
                if (code.equals("0")) {
                    JSONArray resultDatass = object.getJSONArray("ResultData");
                    Map<String, Object> resultData = (Map<String, Object>) resultDatass.get(0);
                    if (null != resultData && !resultData.isEmpty()) {
                        String pationid = resultData.get("PationId").toString();
                        if (null != pationid) {
                            tjCustomer.setPationId(pationid);
                            tjCustomerService.updateById(tjCustomer);
                        }
                    }
                }
            }
            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());
                throw new IllegalStateException("挂号失败!" + result.get("msg").toString());
            }
            log.info("批量签到 该登记人的his就诊号是: " + tjOrder.getCardId());
            // 查询 对接Lis、Pacs申请如果类型包含在配置内则使用对接lis、pacs
            try {
             AjaxResult ajaxResult = hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date, "yyyy-MM-dd HH:mm:ss"), tjOrder, sysUser, result);
                    if (!ajaxResult.get("code").toString().equals("200")) {
                        throw new IllegalStateException("批量签到 团体申请单发送失败!" + result.get("msg").toString());
             }
            } catch (Exception e) {
                log.error("批量签到发生错误 ->{}" + String.valueOf(e), e.getMessage());
            }
        }
    }
}
ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjAdvice.java
@@ -87,6 +87,10 @@
    @TableField(exist = false)
    private String deptName;
    @TableField(exist = false)
    private String userName;
    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjCompPayInfo.java
@@ -41,6 +41,10 @@
    @ApiModelProperty(value = "体检号")
    private String tjh;
    @ApiModelProperty(value = "姓名")
    @TableField(exist = false)
    private String name;
    /**
     * 主表id
     */
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderMapper.java
@@ -436,4 +436,8 @@
    //存储过程专用接口(总检)
    List<List<?>> getEsjCunChuGuoChengCustomerList(Map<String,Object> map);
    @Select("SELECT * FROM tj_order WHERE tj_number = card_id ")
    List<TjOrder> getOrderListBypiliangqiandaofasong();
}
ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderService.java
@@ -201,4 +201,7 @@
    Map<String,Object> getEsjCunChuGuoChengCustomerList(String tjNumber, Integer page, Integer pageSize, Integer checkStatus,
                                                        String value, String beginTime, String endTime, String name, String tjCategory, String tcm, String type);
    List<TjOrder> getOrderListBypiliangqiandaofasong();
}
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderServiceImpl.java
@@ -509,4 +509,9 @@
        return map1;
    }
    @Override
    public List<TjOrder> getOrderListBypiliangqiandaofasong() {
        return tjOrderMapper.getOrderListBypiliangqiandaofasong();
    }
}