From 9155df2aeab5b0d95c89dd928dbaefbfbaeae9d1 Mon Sep 17 00:00:00 2001
From: zjh <1084500556@qq.com>
Date: 星期四, 05 九月 2024 17:10:35 +0800
Subject: [PATCH] zjh 2024-09-05

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReservationController.java |  545 ++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 388 insertions(+), 157 deletions(-)

diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReservationController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReservationController.java
index cf0bcb3..62a1fc7 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReservationController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReservationController.java
@@ -1,19 +1,26 @@
 package com.ltkj.web.controller.system;
 
+import java.io.*;
 import java.math.BigDecimal;
+import java.net.URL;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 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;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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;
@@ -21,11 +28,15 @@
 import com.ltkj.hosp.dto.ConfirmDto;
 import com.ltkj.hosp.dto.ExcelImportDto;
 import com.ltkj.hosp.service.*;
+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;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
@@ -69,14 +80,73 @@
     private ITjGroupingProService groupingProService;
     @Resource
     private TjAsyncService asyncService;
+//    @Resource
+//    private OrderDelayService delayService;
+    @Autowired
+    private TaskService taskService;
     @Resource
-    private OrderDelayService delayService;
+    private ITjReportTemplateService reportTemplateService;
+
+    @Value("${path.filePath}")
+    private String value;
 
     @PostMapping("/importTemplate")
     @ApiOperation(value = "瀵煎嚭excel琛ㄦā鏉�")
     public void importTemplate(HttpServletResponse response) {
-        ExcelUtils.exportTemplate(response, "浣撴棰勭害Excel妯℃澘", TjReservation.class);
+        //鍘熸潵鐨勪笅杞芥ā鏉胯皟鐢ㄦ帴鍙�
+        String base64String = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\瑗垮畨璺嘲鏈虹數绉戞妧鏈夐檺鍏徃.xls");
+        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();
+
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+        }
     }
+
 
 
     /**
@@ -87,14 +157,15 @@
     @ApiOperation(value = "鏌ヨ浣撴棰勭害鍒楄〃鎺ュ彛(榛樿)")
     public TableDataInfo list(TjReservation tjReservation) {
         startPage();
+        tjReservation.setIsExpire(2);
         List<TjReservation> list = tjReservationService.selectTjReservationList(tjReservation);
-        if(null !=list && list.size()>0){
-            for (TjReservation reservation : list) {
-                reservation.setName(MatchUtils.hideCusName(reservation.getName()));
-                reservation.setPhoe(MatchUtils.hidePhoneNum(reservation.getPhoe()));
-                reservation.setIdCard(MatchUtils.hideIdCardNum(reservation.getIdCard()));
-            }
-        }
+//        if(null !=list && list.size()>0){
+//            for (TjReservation reservation : list) {
+//                reservation.setName(MatchUtils.hideCusName(reservation.getName()));
+//                reservation.setPhoe(MatchUtils.hidePhoneNum(reservation.getPhoe()));
+//                reservation.setIdCard(MatchUtils.hideIdCardNum(reservation.getIdCard()));
+//            }
+//        }
         return getDataTable(list);
     }
 
@@ -106,12 +177,12 @@
     public TableDataInfo selectTjReservationByDelete(TjReservation tjReservation) {
         startPage();
         List<TjReservation> list = tjReservationService.selectTjReservationByDelete(tjReservation);
-        if(null !=list && list.size()>0){
-            for (TjReservation reservation : list) {
-                reservation.setName(MatchUtils.hideCusName(reservation.getName()));
-                reservation.setPhoe(MatchUtils.hidePhoneNum(reservation.getPhoe()));
-                reservation.setIdCard(MatchUtils.hideIdCardNum(reservation.getIdCard()));
-            }
+        if(null !=list && !list.isEmpty()){
+//            for (TjReservation reservation : list) {
+//                reservation.setName(MatchUtils.hideCusName(reservation.getName()));
+//                reservation.setPhoe(MatchUtils.hidePhoneNum(reservation.getPhoe()));
+//                reservation.setIdCard(MatchUtils.hideIdCardNum(reservation.getIdCard()));
+//            }
         }
         return getDataTable(list);
     }
@@ -133,42 +204,9 @@
     /**
      * 瀵煎叆鍥綋浣撴棰勭害鍒楄〃
      */
-    @PostMapping("/excelImport")
-    @ApiOperation(value = "鍥綋瀵煎叆 (鏃х増鏈�)")
-    public AjaxResult excelImport(@RequestPart(value = "file") @ApiParam(value = "Excel鏂囦欢") MultipartFile file) {
-        List<TjReservation> tjReservations = null;
-        try {
-            tjReservations = ExcelUtils.readMultipartFile(file, TjReservation.class);
-        } catch (Exception e) {
-            return AjaxResult.error("瀵煎叆鏂囦欢鏈夎璇锋鏌ュ鍏ユ枃浠�!");
-        }
-        List<String> wrongList = new ArrayList<>();
-        List<TjReservation> rightList = new ArrayList<>();
-        for (TjReservation tjReservation : tjReservations) {
-            String idCard = tjReservation.getIdCard();
-            String phoe = tjReservation.getPhoe();
-            if (null != idCard && null != phoe) {
-                if (!MatchUtils.isIdCard(idCard) || !MatchUtils.isMobileNO(phoe)) {
-                    wrongList.add(tjReservation.getName());
-                } else {
-                    rightList.add(tjReservation);
-                }
-            } else {
-                wrongList.add(tjReservation.getName());
-            }
-        }
-        if (wrongList.size() > 0) {
-            return AjaxResult.success("鎿嶄綔澶辫触", wrongList);
-        } else {
-            return AjaxResult.success("鎿嶄綔鎴愬姛",rightList);
-        }
-    }
-
-    /**
-     * 瀵煎叆鍥綋浣撴棰勭害鍒楄〃
-     */
     @PostMapping("/newExcelImport")
-    @ApiOperation(value = "鍥綋瀵煎叆 (鏂扮増鏈�)")
+    @ApiOperation(value = "鍥綋excel琛ㄥ鍏�")
+    @Transactional
     public AjaxResult newExcelImport(@RequestPart(value = "file") @ApiParam(value = "Excel鏂囦欢") MultipartFile file,
                                      @RequestParam @ApiParam(value = "鍗曚綅id") String dwId,
                                      @RequestParam @ApiParam(value = "鍗曚綅閮ㄩ棬id") String dwDeptId) {
@@ -178,6 +216,12 @@
         } catch (Exception e) {
             return AjaxResult.error("瀵煎叆鏂囦欢鏈夎璇锋鏌ュ鍏ユ枃浠�!");
         }
+        int grouping = dwGroupingService.selectTjDwGroupingByDwDeptId(dwDeptId);
+
+        if(grouping==0){
+            return AjaxResult.error("璇锋鏌ラ儴闂ㄤ腑鏄惁瀛樺湪鍒嗙粍鎴栧垎缁勪腑鏄惁瀛樺湪椤圭洰!");
+        }
+
         List<String> wrongList = new ArrayList<>();
         List<TjReservation> rightList = new ArrayList<>();
         List<TjReservation> yyList = new ArrayList<>();
@@ -208,9 +252,15 @@
             String idCard = tjReservation.getIdCard();
             String phoe = tjReservation.getPhoe();
             if (null != idCard && null != phoe) {
-                if (!MatchUtils.isIdCard(idCard) || !MatchUtils.isMobileNO(phoe)) {
+//                if (!MatchUtils.isIdCard(idCard) || !MatchUtils.isMobileNO(phoe)) {
+                if (idCard.isEmpty() || phoe.isEmpty()) {
                     wrongList.add(tjReservation.getName());
                 } else {
+                    //骞撮緞
+                    tjReservation.setAge(String.valueOf(MatchUtils.getAgeByIdCard(tjReservation.getIdCard())));
+                    //鍑虹敓鏃ユ湡
+                    tjReservation.setBirthday(DateUtil.parse(MatchUtils.getBirthDayByIdCard(tjReservation.getIdCard()),"yyyy-MM-dd"));
+
                     if (null != groupingMan && groupingMan.getSex().equals(String.valueOf(tjReservation.getSex()))) {
 
                         tjReservation.setGroupingId(groupingMan.getId());
@@ -276,99 +326,142 @@
     }
 
 
-    @PostMapping("/reservationConfirm")
-    @ApiOperation(value = "鍥綋棰勭害纭鎺ュ彛 (鏃х増鏈�)")
-    public AjaxResult reservationConfirm(@RequestBody Map<String, Object> map) {
-        List<TjReservation> rightLists = (List<TjReservation>) map.get("rightList");
-        String pacId = map.get("pacId").toString();
-        String copeWith = map.get("copeWith").toString();
-        String[] proIds = (String[]) map.get("proIds");
-        Object compId1 = map.get("compId");
-        if (null == compId1 || compId1.equals("")) {
-            return AjaxResult.error("璇烽�夋嫨鍗曚綅淇℃伅");
+    /**
+     * 瀵煎叆鍥綋浣撴棰勭害鍒楄〃
+     */
+    @PostMapping("/newExcelImportNotDwDeptId")
+    @ApiOperation(value = "鍥綋excel琛ㄥ鍏� (鏂扮増鏈笉浼犲崟浣嶉儴闂╥d)")
+    @Transactional
+    public AjaxResult newExcelImportNotDwDeptId(@RequestPart(value = "file") @ApiParam(value = "Excel鏂囦欢") MultipartFile file,
+                                     @RequestParam @ApiParam(value = "鍗曚綅id") String dwId) {
+        List<TjReservation> tjReservations = null;
+        try {
+            tjReservations = ExcelUtils.readMultipartFile(file, TjReservation.class);
+        } catch (Exception e) {
+            return AjaxResult.error("瀵煎叆鏂囦欢鏈夎璇锋鏌ュ鍏ユ枃浠�!");
         }
-        String compId = map.get("compId").toString();
-        Object reservationTime1 = map.get("reservationTime");
-        if (null == reservationTime1) {
-            return AjaxResult.error("璇烽�夋嫨棰勭害鏃堕棿!");
-        }
-        String reservationTime = map.get("reservationTime").toString();
-        String payType = map.get("payType").toString();
-        String jsonString = JSON.toJSONString(rightLists);
-        List<TjReservation> rightList = JSON.parseArray(jsonString, TjReservation.class);
+        int grouping = dwGroupingService.selectTjDwGroupingByDwId(dwId);
 
-        if (null != rightList) {
-            if (null != pacId || null != proIds && proIds.length > 0) {
-                String teamNo = PinyinUtil.getFirstLetter(compService.getById(compId).getCnName(), "") + DateUtil.format(new Date(), "yyMMddHHmmss");
-                for (TjReservation reservation : rightList) {
-                    LambdaQueryWrapper<TjReservation> wq = new LambdaQueryWrapper<>();
-                    wq.eq(TjReservation::getIdCard, reservation.getIdCard());
-                    wq.eq(TjReservation::getIsExpire, 2);
-                    TjReservation one = tjReservationService.getOne(wq);
-                    if (null != one) {
-                        continue;
-                    }
-                    if (null != pacId) {
-                        reservation.setPacId(pacId);
-                    }
-                    if (null != proIds && proIds.length > 0) {
-                        reservation.setProIds(Joiner.on(",").join(proIds));
-                    }
-                    reservation.setReservationTime(DateUtil.parse(reservationTime, "yyyy-MM-dd"));
-                    reservation.setCompanyId(compId);
-                    reservation.setCompany(compService.getById(compId).getCnName());
-                    reservation.setPayType(Long.valueOf(payType));
-                    reservation.setTjType(String.valueOf(1));
-                    reservation.setTeamNo(teamNo);
-                    tjReservationService.save(reservation);
-                    delayService.reservation(reservation.getId());
-                }
-                LambdaQueryWrapper<TjCompPay> wq0 = new LambdaQueryWrapper<>();
-                wq0.eq(TjCompPay::getCompId, compId);
-                wq0.eq(TjCompPay::getTeamNo, teamNo);
-                TjCompPay one = compPayService.getOne(wq0);
-                if (null != one) {
-                    one.setCopeWith(new BigDecimal(copeWith));
-                    one.setSerialNumber(SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
-                    one.setInvoiceNo("FP" + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
-                    one.setPaidIn(new BigDecimal("0.00"));
-                    compPayService.updateById(one);
-                } else {
-                    TjCompPay tjCompPay = new TjCompPay();
-                    tjCompPay.setCompId(compId);
-                    tjCompPay.setTeamNo(teamNo);
-                    tjCompPay.setCopeWith(new BigDecimal(copeWith));
-                    tjCompPay.setSerialNumber(SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
-                    tjCompPay.setInvoiceNo("FP" + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
-                    tjCompPay.setPaidIn(new BigDecimal("0.00"));
-                    tjCompPay.setDifference(tjCompPay.getCopeWith().subtract(BigDecimal.valueOf(0.00)));
-                    compPayService.save(tjCompPay);
-                }
-                LambdaQueryWrapper<TjTeamSelectRecord> wq = new LambdaQueryWrapper<>();
-                wq.eq(TjTeamSelectRecord::getTeamNo, teamNo);
-                wq.eq(TjTeamSelectRecord::getCompId, compId);
-                TjTeamSelectRecord recordServiceOne = selectRecordService.getOne(wq);
-                if (null != recordServiceOne) {
-                    if (null != pacId) recordServiceOne.setPacId(pacId);
-                    recordServiceOne.setProIds(Joiner.on(";").join(proIds != null ? proIds : new String[0]));
-                    recordServiceOne.setTeamNo(teamNo);
-                    recordServiceOne.setTransactionAmount(new BigDecimal("0.00"));
-                    recordServiceOne.setCount(rightList.size());
-                    selectRecordService.updateById(recordServiceOne);
-                }
-                TjTeamSelectRecord selectRecord = new TjTeamSelectRecord();
-                selectRecord.setCompId(compId);
-                if (null != pacId) selectRecord.setPacId(pacId);
-                selectRecord.setProIds(Joiner.on(";").join(proIds != null ? proIds : new String[0]));
-                selectRecord.setTeamNo(teamNo);
-                selectRecord.setTransactionAmount(new BigDecimal("0.00"));
-                selectRecord.setCount(rightList.size());
-                selectRecordService.save(selectRecord);
-                return AjaxResult.success("棰勭害鎴愬姛");
-            }
-            return AjaxResult.error("璇烽�夋嫨浣撴鍐呭");
+        if(grouping==0){
+            return AjaxResult.error("璇锋鏌ヨ鍗曚綅鏄惁瀛樺惁瀛樺湪椤圭洰!");
         }
-        return AjaxResult.error("璇烽�夋嫨棰勭害瀵硅薄");
+
+        List<String> wrongList = new ArrayList<>();
+        List<TjReservation> rightList = new ArrayList<>();
+        List<TjReservation> yyList = new ArrayList<>();
+        Map<String, Object> map = new HashMap<>();
+        List<TjDwGrouping> groupingMans = null;//鐢�
+        List<TjDwGrouping> groupingWoMans = null;//濂�
+        List<TjDwGrouping> groupingWzs = null;//鏈煡(涓嶅垎鎬у埆)
+        try {
+            groupingMans = dwGroupingService.list(new LambdaQueryWrapper<TjDwGrouping>().eq(TjDwGrouping::getDwId,dwId)
+                    .eq(TjDwGrouping::getSex, 0));
+            groupingWoMans = dwGroupingService.list(new LambdaQueryWrapper<TjDwGrouping>().eq(TjDwGrouping::getDwId,dwId)
+                    .eq(TjDwGrouping::getSex, 1));
+            groupingWzs = dwGroupingService.list(new LambdaQueryWrapper<TjDwGrouping>().eq(TjDwGrouping::getDwId,dwId)
+                    .eq(TjDwGrouping::getSex, 2));
+        } catch (Exception e) {
+            return AjaxResult.error("鍒嗙粍淇℃伅鏈夎璇烽噸鏂板垎缁�!");
+        }
+        //璁$畻鍚堣
+        BigDecimal hjMoney = new BigDecimal("0.00");
+        //鐢风粍閲戦
+        BigDecimal manMoney = new BigDecimal("0.00");
+        //濂崇粍閲戦
+        BigDecimal woManMoney = new BigDecimal("0.00");
+        int count=0;//鎬昏浜烘暟
+        int manCount=0;//鐢风粍浜烘暟
+        int woManCount=0;//濂崇粍浜烘暟
+        for (TjReservation tjReservation : tjReservations) {
+            String idCard = tjReservation.getIdCard();
+            String phoe = tjReservation.getPhoe();
+            if (null != idCard && null != phoe) {
+//                if (!MatchUtils.isIdCard(idCard) || !MatchUtils.isMobileNO(phoe)) {
+                if (idCard.isEmpty() || phoe.isEmpty() || null==tjReservation.getDwxm()) {
+                    wrongList.add(tjReservation.getName());
+                } else {
+                    //骞撮緞
+                    tjReservation.setAge(String.valueOf(MatchUtils.getAgeByIdCard(tjReservation.getIdCard())));
+                    //鍑虹敓鏃ユ湡
+                    tjReservation.setBirthday(DateUtil.parse(MatchUtils.getBirthDayByIdCard(tjReservation.getIdCard()),"yyyy-MM-dd"));
+
+                    TjDwDept dwDept = dwDeptService.getOne(new LambdaQueryWrapper<TjDwDept>().eq(TjDwDept::getDwDeptName, tjReservation.getDwxm()));
+                    if(null !=dwDept){
+                        for (TjDwGrouping groupingMan : groupingMans) {
+                            if (null != groupingMan && groupingMan.getSex().equals(String.valueOf(tjReservation.getSex())) && groupingMan.getDwDeptId().equals(dwDept.getId())) {
+                                tjReservation.setGroupingId(groupingMan.getId());
+                                tjReservation.setGroupingName(groupingMan.getGroupingName());
+                                tjReservation.setYsPrice(groupingMan.getYsPrice());
+                                //鍚堣
+                                hjMoney = hjMoney.add(groupingMan.getYsPrice()); count+=1;
+                                //鐢风粍浜烘暟
+                                manMoney=manMoney.add(groupingMan.getYsPrice()); manCount+=1;
+                            }
+                        }
+
+                        for (TjDwGrouping groupingWoMan : groupingWoMans) {
+                            if (null != groupingWoMan && groupingWoMan.getSex().equals(String.valueOf(tjReservation.getSex())) && groupingWoMan.getDwDeptId().equals(dwDept.getId())) {
+                                tjReservation.setGroupingId(groupingWoMan.getId());
+                                tjReservation.setGroupingName(groupingWoMan.getGroupingName());
+                                tjReservation.setYsPrice(groupingWoMan.getYsPrice());
+                                //鍚堣
+                                hjMoney = hjMoney.add(groupingWoMan.getYsPrice()); count+=1;
+                                woManMoney=woManMoney.add(groupingWoMan.getYsPrice());woManCount+=1;
+                            }
+                        }
+                        for (TjDwGrouping groupingWz : groupingWzs) {
+                            if (null != groupingWz  && groupingWz.getDwDeptId().equals(dwDept.getId())) {
+                                tjReservation.setGroupingId(groupingWz.getId());
+                                tjReservation.setGroupingName(groupingWz.getGroupingName());
+                                tjReservation.setYsPrice(groupingWz.getYsPrice());
+                                //鍚堣
+                                hjMoney = hjMoney.add(groupingWz.getYsPrice());count+=1;
+                                if(tjReservation.getSex()==0){
+                                    manMoney=manMoney.add(groupingWz.getYsPrice()); manCount+=1;
+                                }
+                                if(tjReservation.getSex()==1){
+                                    woManMoney=woManMoney.add(groupingWz.getYsPrice());woManCount+=1;
+                                }
+
+                            }
+                        }
+                        LambdaQueryWrapper<TjReservation> wq = new LambdaQueryWrapper<>();
+                        wq.eq(TjReservation::getIdCard, tjReservation.getIdCard());
+                        wq.eq(TjReservation::getIsExpire, 2);
+                        TjReservation one = tjReservationService.getOne(wq);
+                        if (null != one) {
+                            yyList.add(one);
+                        }
+                        rightList.add(tjReservation);
+                    }else {
+                        wrongList.add(tjReservation.getName());
+                    }
+
+                }
+            } else {
+                wrongList.add(tjReservation.getName());
+            }
+        }
+        if (!yyList.isEmpty()) {
+            map.put("list", yyList);
+            map.put("hjMoney", hjMoney);
+            return AjaxResult.error("鎿嶄綔澶辫触,浠ヤ笂浜哄憳宸茬粡棰勭害鏃犻渶瀵煎叆!!!", map);
+        }
+
+        if (!wrongList.isEmpty()) {
+            map.put("list", wrongList);
+            map.put("hjMoney", hjMoney);
+            return AjaxResult.error("鎿嶄綔澶辫触, 璇疯鐪熸牳瀵逛俊鎭悗閲嶆柊瀵煎叆!!!", map);
+        } else {
+            map.put("list", rightList);
+            map.put("count", count);
+            map.put("hjMoney", hjMoney);
+            map.put("manCount", manCount);
+            map.put("manMoney", manMoney);
+            map.put("woManCount", woManCount);
+            map.put("woManMoney", woManMoney);
+            return AjaxResult.success("鎿嶄綔鎴愬姛", map);
+        }
     }
 
 
@@ -408,7 +501,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<>();
@@ -428,7 +523,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<>();
@@ -456,6 +560,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("鎾ら攢澶辫触");
@@ -476,6 +581,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));
                     }
                 }
             }
@@ -490,6 +596,7 @@
      */
     @PostMapping("/tjReappoint")
     @ApiOperation(value = "浣撴棰勭害淇敼鎺ュ彛")
+    @Transactional
     public AjaxResult tjReappoint(@RequestBody TjReservation tjReservation) {
         TjReservation reservation = tjReservationService.getById(tjReservation.getId());
 
@@ -500,6 +607,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(DateUtil.offsetDay(tjReservation.getReservationTime(),reservation.getYxts())), DateUnit.MS)));
             return AjaxResult.success("鎿嶄綔鎴愬姛");
         }
         return AjaxResult.error("鎿嶄綔澶辫触");
@@ -519,7 +629,7 @@
             for (TjGroupingPro groupingPro : proList) {
                 TjProject project = projectService.getById(groupingPro.getProId());
                 if(null !=project){
-                    if (project.getProType().equals("") || project.getProType()==null) {
+                    if (project.getProType()==null || project.getProType().equals("")) {
                         groupingPro.setProType("2");
                     }else {
                         groupingPro.setProType(project.getProType());
@@ -533,13 +643,12 @@
 
 
     @PostMapping("/newReservationConfirm")
-    @ApiOperation(value = "鍥綋棰勭害纭鎺ュ彛 (鏂扮増鏈�)")
+    @ApiOperation(value = "鍥綋棰勭害纭鎺ュ彛")
     @Transactional
+    @RepeatSubmit
     public AjaxResult newReservationConfirm(@RequestBody ConfirmDto dto) {
         //棰勭害鐨勬墍鏈変汉
         List<TjReservation> rightList = dto.getReservations();
-
-
 
         //棰勭害鏃堕棿
         String reservationTime = dto.getReservationTime();
@@ -577,19 +686,24 @@
                 reservation.setProIds(Joiner.on(",").join(proIds));
                 reservation.setReservationTime(DateUtil.parse(reservationTime, "yyyy-MM-dd"));
                 reservation.setCompanyId(dwGrouping.getDwId());
-                reservation.setCompany(dwGrouping.getDwName());
+                reservation.setCompany(dwGrouping.getDwDeptName());
                 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);
+                reservation.setYxts(dto.getYxts());
                 tjReservationService.save(reservation);
-                delayService.reservation(reservation.getId());
+                taskService.addTask(new TjReservationTask(reservation.getId(),DateUtil.between(new Date(),DateUtil.endOfDay(DateUtil.offsetDay(reservation.getReservationTime(),dto.getYxts())), DateUnit.MS)));
             }
             LambdaQueryWrapper<TjCompPay> wq0 = new LambdaQueryWrapper<>();
             wq0.eq(TjCompPay::getCompId, dwDept.getDwId());
@@ -639,4 +753,121 @@
         return AjaxResult.error("璇烽�夋嫨棰勭害瀵硅薄");
     }
 
+
+    @PostMapping("/newReservationConfirmxbb")
+    @ApiOperation(value = "鍥綋棰勭害纭鎺ュ彛 (鏂扮増鏈�)")
+    @Transactional
+    @RepeatSubmit
+    public AjaxResult newReservationConfirmxbb(@RequestBody ConfirmDto dto) {
+        //棰勭害鐨勬墍鏈変汉
+        List<TjReservation> rightList = dto.getReservations();
+
+        //棰勭害鏃堕棿
+        String reservationTime = dto.getReservationTime();
+        if (null == reservationTime) {
+            return AjaxResult.error("璇烽�夋嫨棰勭害鏃堕棿!");
+        }
+
+        Date date = new Date();
+
+        //寮傛鏁版嵁
+//        asyncService.addNewReservationConfirm(rightList);
+        asyncService.saveNewReservationConfirm(rightList);
+
+        //浣撴鍗曚綅閮ㄩ棬
+        DictComp comp = compService.getById(dto.getDwId());
+
+        String teamNo = PinyinUtil.getFirstLetter(comp.getCnName(), "") + DateUtil.format(date, "yyMMddHHmmss");
+
+        //鍥綋浜烘暟鍚堣浠锋牸
+        BigDecimal compPay=new BigDecimal("0.00");
+
+        if (null != rightList && !rightList.isEmpty()) {
+
+            for (TjReservation reservation : rightList) {
+
+                TjDwGrouping dwGrouping = dwGroupingService.getById(reservation.getGroupingId());
+
+                TjDwDept dwDept = dwDeptService.getById(dwGrouping.getDwDeptId());
+
+                LambdaQueryWrapper<TjReservation> wq = new LambdaQueryWrapper<>();
+                wq.eq(TjReservation::getIdCard, reservation.getIdCard());
+                wq.eq(TjReservation::getIsExpire, 2);
+                TjReservation one = tjReservationService.getOne(wq);
+                if (null != one) {
+                    continue;
+                }
+                LambdaQueryWrapper<TjGroupingPro> wq1 = new LambdaQueryWrapper<>();
+                wq1.eq(TjGroupingPro::getGroupingId, reservation.getGroupingId());
+                List<String> proIds = groupingProService.list(wq1).stream().map(TjGroupingPro::getProId).collect(Collectors.toList());
+                reservation.setProIds(Joiner.on(",").join(proIds));
+                reservation.setReservationTime(DateUtil.parse(reservationTime, "yyyy-MM-dd"));
+                reservation.setCompanyId(dwGrouping.getDwId());
+                reservation.setCompany(dwGrouping.getDwName());
+                reservation.setPayType(Long.valueOf(dwGrouping.getPayType()));
+                reservation.setPacId(dwDept.getId());
+                compPay=compPay.add(dwGrouping.getYsPrice());
+                reservation.setTjType(String.valueOf(1));
+                reservation.setTeamNo(teamNo);
+                reservation.setYxts(dto.getYxts());
+                tjReservationService.save(reservation);
+                taskService.addTask(new TjReservationTask(reservation.getId(),
+                        DateUtil.between(date,DateUtil.endOfDay(DateUtil.offsetDay(reservation.getReservationTime(),dto.getYxts())), DateUnit.MS)));
+            }
+
+            LambdaQueryWrapper<TjCompPay> wq0 = new LambdaQueryWrapper<>();
+            wq0.eq(TjCompPay::getCompId,dto.getDwId());
+            wq0.eq(TjCompPay::getTeamNo, teamNo);
+            TjCompPay one = compPayService.getOne(wq0);
+            if (null != one) {
+                one.setCopeWith(compPay);
+                one.setSerialNumber(SecurityUtils.getUsername() + DateUtil.format(date, "yyMMddHHmmssSSS"));
+                one.setInvoiceNo("FP" + DateUtil.format(date, "yyMMddHHmmssSSS"));
+                one.setPaidIn(new BigDecimal("0.00"));
+                compPayService.updateById(one);
+            } else {
+                TjCompPay tjCompPay = new TjCompPay();
+                tjCompPay.setCompId(dto.getDwId());
+                tjCompPay.setTeamNo(teamNo);
+                tjCompPay.setCopeWith(compPay);
+                tjCompPay.setSerialNumber(SecurityUtils.getUsername() + DateUtil.format(date, "yyMMddHHmmssSSS"));
+                tjCompPay.setInvoiceNo("FP" + DateUtil.format(date, "yyMMddHHmmssSSS"));
+                tjCompPay.setPaidIn(new BigDecimal("0.00"));
+                tjCompPay.setDifference(tjCompPay.getCopeWith().subtract(BigDecimal.valueOf(0.00)));
+                compPayService.save(tjCompPay);
+            }
+
+            Map<String, List<TjReservation>> collect = rightList.stream().collect(Collectors.groupingBy(TjReservation::getPacId));
+
+            if(!collect.isEmpty()){
+                for (Map.Entry<String, List<TjReservation>> entry : collect.entrySet()) {
+                    LambdaQueryWrapper<TjTeamSelectRecord> wq = new LambdaQueryWrapper<>();
+                    wq.eq(TjTeamSelectRecord::getTeamNo, teamNo);
+                    wq.eq(TjTeamSelectRecord::getCompId,dto.getDwId());
+                    TjTeamSelectRecord recordServiceOne = selectRecordService.getOne(wq);
+                    if (null != recordServiceOne) {
+                        recordServiceOne.setPacId(entry.getKey());
+                        recordServiceOne.setCompId(dto.getDwId());
+                        recordServiceOne.setTeamNo(teamNo);
+                        recordServiceOne.setTransactionAmount(new BigDecimal("0.00"));
+                        recordServiceOne.setCount(entry.getValue().size());
+                        recordServiceOne.setDifference(compPay);
+                        selectRecordService.updateById(recordServiceOne);
+                    }else {
+                        TjTeamSelectRecord selectRecord = new TjTeamSelectRecord();
+                        selectRecord.setCompId(dto.getDwId());
+                        selectRecord.setPacId(entry.getKey());
+                        selectRecord.setTeamNo(teamNo);
+                        selectRecord.setTransactionAmount(new BigDecimal("0.00"));
+                        selectRecord.setCount(entry.getValue().size());
+                        selectRecord.setDifference(compPay);
+                        selectRecordService.save(selectRecord);
+                    }
+                }
+            }
+            return AjaxResult.success("棰勭害鎴愬姛");
+        }
+        return AjaxResult.error("璇烽�夋嫨棰勭害瀵硅薄");
+    }
+
 }

--
Gitblit v1.8.0