lige
2024-01-24 5e1c1a6cbdb2ea0d40e076a00f954490166f7ce8
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReservationController.java
@@ -9,6 +9,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.pinyin.PinyinUtil;
@@ -17,7 +18,9 @@
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.base.Joiner;
import com.ltkj.common.annotation.RepeatSubmit;
import com.ltkj.common.excelConfig.ExcelUtils;
import com.ltkj.common.task.TaskService;
import com.ltkj.common.utils.SecurityUtils;
import com.ltkj.common.utils.StringUtils;
import com.ltkj.framework.config.MatchUtils;
@@ -28,6 +31,7 @@
import com.ltkj.mall.mallOrderUtils.TjConstants;
import com.ltkj.web.config.pdfutils.PDFBinaryUtil;
import com.ltkj.web.config.redis.OrderDelayService;
import com.ltkj.web.config.task.TjReservationTask;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -76,8 +80,10 @@
    private ITjGroupingProService groupingProService;
    @Resource
    private TjAsyncService asyncService;
    @Resource
    private OrderDelayService delayService;
//    @Resource
//    private OrderDelayService delayService;
    @Autowired
    private TaskService taskService;
    @Resource
    private ITjReportTemplateService reportTemplateService;
@@ -88,71 +94,54 @@
    @ApiOperation(value = "导出excel表模板")
    public void importTemplate(HttpServletResponse response) {
        //原来的下载模板调用接口
//        ExcelUtils.exportTemplate(response, "体检预约Excel模板", TjReservation.class);
        String base64String = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\西安路泰机电科技有限公司.xls");
//        TjReportTemplate tem = new TjReportTemplate();
//        tem.setName("团体预约Excel模版");
//        tem.setRemark("团体预约Excel模版");
//        tem.setTemplate(base64String);
//        tem.setFlag("1");
//        tem.setOpen("0");
//        reportTemplateService.save(tem);
        if(null !=base64String){
            PDFBinaryUtil.base64StringToPDF(base64String, FileUtil.mkdir(value).getPath() + "\\" + "团体预约Excel模版.xls");
            String filePath = value + "\\" + "团体预约Excel模版.xls";
            File f = new File(filePath);
            BufferedInputStream br = null;
            OutputStream out = null;
            FileInputStream fileInputStream = null;
            try {
                fileInputStream = new FileInputStream(f);
                br = new BufferedInputStream(fileInputStream);
                byte[] bs = new byte[1024];
                int len = 0;
                response.reset(); // 非常重要
                if (true) {
                    // 在线打开方式
                    URL u = new URL("file:///" + filePath);
                    //System.out.println(u);
                    String contentType = u.openConnection().getContentType();
                    response.setContentType(contentType);
                    response.setHeader("Content-Disposition", "inline;filename=团体预约Excel模版.xls");
                } else {
                    // 纯下载方式
                    response.setContentType("application/x-msdownload");
                    response.setContentType("application/pdf;charset=utf-8");
                    response.setHeader("Content-Disposition", "attachment;filename=团体预约Excel模版.xls");
                }
                out = response.getOutputStream();
                while ((len = br.read(bs)) > 0) {
                    out.write(bs, 0, len);
                }
                out.flush();
                out.close();
                br.close();
                fileInputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
                //System.out.println("pdf处理文件异常" + e);
            } finally {
                if (out != null) {
                    try {
                        out.close();
                        br.close();
                        fileInputStream.close();
//        LambdaQueryWrapper<TjReportTemplate> wq = new LambdaQueryWrapper<>();
//        wq.eq(TjReportTemplate::getFlag, 4);
//        wq.eq(TjReportTemplate::getName, "");
//        wq.eq(TjReportTemplate::getOpen, 0);
//         reportTemplateService.getOne(wq);
        PDFBinaryUtil.base64StringToPDF(base64String, FileUtil.mkdir(value).getPath() + "\\" + "团体预约Excel模版.xls");
        String filePath = value + "\\" + "团体预约Excel模版.xls";
        File f = new File(filePath);
        if (filePath.isEmpty()) {
            System.out.println("文件不存在!");
            return;
        }
        BufferedInputStream br = null;
        OutputStream out = null;
        FileInputStream fileInputStream = null;
        try {
            fileInputStream = new FileInputStream(f);
            br = new BufferedInputStream(fileInputStream);
            byte[] bs = new byte[1024];
            int len = 0;
            response.reset(); // 非常重要
            if (true) {
                // 在线打开方式
                URL u = new URL("file:///" + filePath);
                //System.out.println(u);
                String contentType = u.openConnection().getContentType();
                response.setContentType(contentType);
                response.setHeader("Content-Disposition", "inline;filename=团体预约Excel模版.xls");
            } else {
                // 纯下载方式
                response.setContentType("application/x-msdownload");
                response.setContentType("application/pdf;charset=utf-8");
                response.setHeader("Content-Disposition", "attachment;filename=团体预约Excel模版.xls");
            }
            out = response.getOutputStream();
            while ((len = br.read(bs)) > 0) {
                out.write(bs, 0, len);
            }
            out.flush();
            out.close();
            br.close();
            fileInputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
            //System.out.println("pdf处理文件异常" + e);
        } finally {
            if (out != null) {
                try {
                    out.close();
                    br.close();
                    fileInputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
@@ -250,6 +239,7 @@
     */
    @PostMapping("/newExcelImport")
    @ApiOperation(value = "团体导入 (新版本)")
    @Transactional
    public AjaxResult newExcelImport(@RequestPart(value = "file") @ApiParam(value = "Excel文件") MultipartFile file,
                                     @RequestParam @ApiParam(value = "单位id") String dwId,
                                     @RequestParam @ApiParam(value = "单位部门id") String dwDeptId) {
@@ -402,7 +392,7 @@
                    reservation.setTjType(String.valueOf(1));
                    reservation.setTeamNo(teamNo);
                    tjReservationService.save(reservation);
                    delayService.reservation(reservation.getId());
//                    delayService.reservation(reservation.getId());
                }
                LambdaQueryWrapper<TjCompPay> wq0 = new LambdaQueryWrapper<>();
                wq0.eq(TjCompPay::getCompId, compId);
@@ -489,7 +479,9 @@
        tjReservation.setIsExpire(2);
        tjReservation.setTjType(String.valueOf(2));
        if (tjReservationService.save(tjReservation)) {
            delayService.reservation(tjReservation.getId());
//            delayService.reservation(tjReservation.getId());
            taskService.addTask(new TjReservationTask(tjReservation.getId(),
                    DateUtil.between(new Date(),DateUtil.endOfDay(tjReservation.getReservationTime()), DateUnit.MS)));
            return AjaxResult.success("预约成功!!!");
        }
        LambdaQueryWrapper<TbTransition> remove=new LambdaQueryWrapper<>();
@@ -509,7 +501,16 @@
        TjReservation tjReservation = tjReservationService.selectTjReservationById(id);
        if (null != tjReservation) {
            if (null != tjReservation.getPacId()) {
                tjReservation.setPacName(packageService.getById(tjReservation.getPacId()).getPacName());
                TjPackage aPackage = packageService.getById(tjReservation.getPacId());
                if(null !=aPackage){
                    tjReservation.setPacName(aPackage.getPacName());
                }
                TjDwDept dwDept = dwDeptService.getById(tjReservation.getPacId());
                if(null !=dwDept){
                    tjReservation.setPacName(dwDept.getDwName());
                }
            }
            if (null != tjReservation.getProIds()) {
                List<String> proNames = new ArrayList<>();
@@ -537,6 +538,7 @@
        if (null != reservation && reservation.getIsExpire() == 2) {
            if (tjReservationService.removeById(id)) {
                transitionService.remove(new LambdaQueryWrapper<TbTransition>().eq(TbTransition::getCusId, reservation.getIdCard()));
                taskService.removeTask(new TjReservationTask(id));
                return AjaxResult.success("撤销成功");
            }
            return AjaxResult.error("撤销失败");
@@ -557,6 +559,7 @@
                if (null != reservation && reservation.getIsExpire() == 2) {
                    if (tjReservationService.removeById(id)) {
                        transitionService.remove(new LambdaQueryWrapper<TbTransition>().eq(TbTransition::getCusId, reservation.getIdCard()));
                        taskService.removeTask(new TjReservationTask(id));
                    }
                }
            }
@@ -581,6 +584,9 @@
        tjReservation.setPhoe(reservation.getPhoe());
        tjReservation.setName(reservation.getName());
        if (tjReservationService.updateById(tjReservation)) {
            taskService.removeTask(new TjReservationTask(tjReservation.getId()));
            taskService.addTask(new TjReservationTask(tjReservation.getId(),
                    DateUtil.between(new Date(),DateUtil.endOfDay(tjReservation.getReservationTime()), DateUnit.MS)));
            return AjaxResult.success("操作成功");
        }
        return AjaxResult.error("操作失败");
@@ -616,11 +622,10 @@
    @PostMapping("/newReservationConfirm")
    @ApiOperation(value = "团体预约确认接口 (新版本)")
    @Transactional
    @RepeatSubmit
    public AjaxResult newReservationConfirm(@RequestBody ConfirmDto dto) {
        //预约的所有人
        List<TjReservation> rightList = dto.getReservations();
        //预约时间
        String reservationTime = dto.getReservationTime();
@@ -661,16 +666,20 @@
                reservation.setCompany(dwGrouping.getDwName());
                reservation.setPayType(Long.valueOf(dwGrouping.getPayType()));
                reservation.setPacId(dwDept.getId());
                if(dwGrouping.getPayType().equals("1")){
                    compPay=compPay.add(dwGrouping.getYsPrice());
                    tramNum+=1;
                    reservation.setTjType(String.valueOf(1));
                    reservation.setTeamNo(teamNo);
                }else {
                    reservation.setTjType(String.valueOf(2));
                }
//                if(dwGrouping.getPayType().equals("1")){
//                    compPay=compPay.add(dwGrouping.getYsPrice());
//                    tramNum+=1;
//                    reservation.setTjType(String.valueOf(1));
//                    reservation.setTeamNo(teamNo);
//                }else {
//                    reservation.setTjType(String.valueOf(2));
//                }
                compPay=compPay.add(dwGrouping.getYsPrice());
                tramNum+=1;
                reservation.setTjType(String.valueOf(1));
                reservation.setTeamNo(teamNo);
                tjReservationService.save(reservation);
                delayService.reservation(reservation.getId());
                taskService.addTask(new TjReservationTask(reservation.getId(),DateUtil.between(new Date(),DateUtil.endOfDay(reservation.getReservationTime()), DateUnit.MS)));
            }
            LambdaQueryWrapper<TjCompPay> wq0 = new LambdaQueryWrapper<>();
            wq0.eq(TjCompPay::getCompId, dwDept.getDwId());