From a3da2a6fe70e9514638ea4700c4bb2b61ecbc317 Mon Sep 17 00:00:00 2001
From: zjh <1084500556@qq.com>
Date: 星期四, 22 五月 2025 16:50:55 +0800
Subject: [PATCH] zjh20250522

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/ZhiYeController.java |  470 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 462 insertions(+), 8 deletions(-)

diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/ZhiYeController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/ZhiYeController.java
index 0087a8e..a84dfa2 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/ZhiYeController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/ZhiYeController.java
@@ -1,7 +1,9 @@
 package com.ltkj.web.controller.system;
 
 import cn.hutool.core.codec.Base64;
+import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.pinyin.PinyinUtil;
@@ -9,11 +11,19 @@
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.google.common.base.Joiner;
+import com.ltkj.common.annotation.RepeatSubmit;
 import com.ltkj.common.core.domain.AjaxResult;
 import com.ltkj.common.core.domain.entity.SysDept;
+import com.ltkj.common.core.domain.entity.SysDictData;
 import com.ltkj.common.core.domain.entity.SysUser;
+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;
 import com.ltkj.hosp.domain.*;
+import com.ltkj.hosp.dto.ConfirmDto;
 import com.ltkj.hosp.idutil.IdUtils;
 import com.ltkj.hosp.mapper.TjSamplingMapper;
 import com.ltkj.hosp.service.*;
@@ -27,11 +37,15 @@
 import com.ltkj.system.service.ISysDeptService;
 import com.ltkj.system.service.ISysDictDataService;
 import com.ltkj.system.service.ISysUserService;
+import com.ltkj.web.config.pdfutils.PDFBinaryUtil;
+import com.ltkj.web.config.task.TjReservationTask;
 import com.ltkj.web.controller.his.HisApiMethod;
 import com.ltkj.web.controller.his.HisApiMethodService;
 import com.ltkj.web.controller.lis.LisApiMethod;
 import com.ltkj.web.wxUtils.HttpClientUtils;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import jodd.util.StringUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -41,17 +55,18 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.io.File;
-import java.io.FileInputStream;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
 import java.math.BigDecimal;
+import java.net.URL;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.ReentrantLock;
+import java.util.stream.Collectors;
 
 /**
  * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃
@@ -61,6 +76,7 @@
 @Slf4j
 @RestController
 @RequestMapping("/zhiye/order")
+@Api(tags = "鑱屼笟鐥呯浉鍏虫帴鍙�")
 public class ZhiYeController {
     @Autowired
     private ISysUserService userService;
@@ -68,16 +84,28 @@
     private ITjCustomerService tjCustomerService;
     @Autowired
     private ITjReservationService tjReservationService;
+    @Resource
+    private ITjDwGroupingService dwGroupingService;
+    @Resource
+    private ITjGroupingProService groupingProService;
     @Autowired
     private IMallOrderService mallOrderService;
-    @Autowired
-    private ITjDwGroupingService dwGroupingService;
     @Autowired
     private ITbTransitionService transitionService;
     @Autowired
     private ITjOrderService tjOrderService;
     @Autowired
     private ISysConfigService configService;
+    @Resource
+    private IDictCompService compService;
+    @Resource
+    private ITjDwDeptService dwDeptService;
+    @Resource
+    private TjAsyncService asyncService;
+    @Resource
+    private ITjCompPayService compPayService;
+    @Resource
+    private ITjTeamSelectRecordService selectRecordService;
     @Autowired
     private IdUtils idUtils;
     @Autowired
@@ -118,6 +146,10 @@
     private ISysDeptService sysDeptService;
     @Autowired
     private TjFlowingWaterHisService tjFlowingWaterHisService;
+    @Autowired
+    private ISysDictDataService dictDataService;
+    @Autowired
+    private TaskService taskService;
 
     ReentrantLock lock = new ReentrantLock();
 
@@ -154,6 +186,21 @@
             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.getZhiyeJhgln()) tjOrder.setZhiyeJhgln(tjReservation.getZhiyeJhgln());
+            if (null != tjReservation.getZhiyeJhgly()) tjOrder.setZhiyeJhgly(tjReservation.getZhiyeJhgly());
+            if (null != tjReservation.getZhiyeKsjhrq()) tjOrder.setZhiyeKsjhrq(tjReservation.getZhiyeKsjhrq());
+            if (null != tjReservation.getZhiyeGh()) tjOrder.setZhiyeGh(tjReservation.getZhiyeGh());
+            if (null != tjReservation.getZhiyeGz()) tjOrder.setZhiyeGz(tjReservation.getZhiyeGz());
+            if (null != tjReservation.getZhiyeZgln()) tjOrder.setZhiyeZgln(tjReservation.getZhiyeZgln());
+            if (null != tjReservation.getZhiyeZgly()) tjOrder.setZhiyeZgly(tjReservation.getZhiyeZgly());
+            if (null != tjReservation.getZhiyeJhys()) tjOrder.setZhiyeJhys(tjReservation.getZhiyeJhys());
+            if (null != tjReservation.getZhiyeRzsj()) tjOrder.setZhiyeRzsj(tjReservation.getZhiyeRzsj());
+            if (null != tjReservation.getZhiyeScdw()) tjOrder.setZhiyeScdw(tjReservation.getZhiyeScdw());
+            if (null != tjReservation.getZhiyeZysksrq()) tjOrder.setZhiyeZysksrq(tjReservation.getZhiyeZysksrq());
+            if (null != tjReservation.getZhiyeZysjsrq()) tjOrder.setZhiyeZysjsrq(tjReservation.getZhiyeZysjsrq());
+            if (null != tjReservation.getZhiyeZysszdw()) tjOrder.setZhiyeZysszdw(tjReservation.getZhiyeZysszdw());
+
             if (null != tjReservation.getGroupingId()) {
                 TjDwGrouping dwGrouping = dwGroupingService.getById(tjReservation.getGroupingId());
                 tjOrder.setGroupId(tjReservation.getGroupingId());
@@ -650,4 +697,411 @@
         return null;
     }
 
+
+
+    @PostMapping("/importTemplate")
+    @ApiOperation(value = "瀵煎嚭excel琛ㄦā鏉�")
+    public void importTemplate(HttpServletResponse response) {
+        String value = configService.selectConfigByKey("path_filePath");
+        //鍘熸潵鐨勪笅杞芥ā鏉胯皟鐢ㄦ帴鍙�
+        try {
+            String base64String = PDFBinaryUtil.getPDFBinary(value + File.separator + "瑗垮畨璺嘲鏈虹數绉戞妧鏈夐檺鍏徃.xls");
+            if (null != base64String) {
+                PDFBinaryUtil.base64StringToPDF(base64String, FileUtil.mkdir(value).getPath() + File.separator + "鍥綋棰勭害Excel妯$増.xls");
+                String filePath = value + File.separator + "鍥綋棰勭害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();
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            ExcelUtils.exportTemplate(response,"鍥綋棰勭害Excel妯$増",TjReservation.class);
+            throw new RuntimeException(e);
+        }
+    }
+
+
+    @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("瀵煎叆鏂囦欢鏈夎璇锋鏌ュ鍏ユ枃浠�!");
+        }
+        int grouping = dwGroupingService.selectTjDwGroupingByDwId(dwId);
+
+        if (grouping == 0) {
+            return AjaxResult.error("璇锋鏌ヨ鍗曚綅鏄惁瀛樺惁瀛樺湪椤圭洰!");
+        }
+
+        List<String> wrongList = new ArrayList<>();
+        List<TjReservation> rightList = new ArrayList<>();
+        List<String> 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("鍒嗙粍淇℃伅鏈夎璇烽噸鏂板垎缁�!");
+        }
+
+        try {
+            String sfjysfzh = configService.selectConfigByKey("sfjysfzh");
+            String sfjysjh = configService.selectConfigByKey("sfjysjh");
+
+            //璁$畻鍚堣
+            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;//濂崇粍浜烘暟
+            List<String> ids = new ArrayList<>();
+
+//            String errMsg = "";
+            for (TjReservation tjReservation : tjReservations) {
+                String name = tjReservation.getName();
+                String idCard = tjReservation.getIdCard();
+                String phoe = tjReservation.getPhoe();
+                name = name.replaceAll("[',锛�;.銆� 鈥樷�淽", "").replaceAll(" ", "");
+                phoe = phoe.replaceAll("[',锛�;.銆� 鈥樷�淽", "").replaceAll(" ", "");
+                idCard = idCard.replaceAll("[',锛�;.銆� 鈥樷�淽", "").replaceAll(" ", "");
+
+                if (!StringUtils.isBlank(idCard) || !StringUtils.isBlank(phoe) || null != tjReservation.getDwxm()) {
+                    //灏嗙瀛﹁鏁扮殑鎵嬫満鍙疯浆鎹㈡垚鏂囨湰褰㈠紡
+                    phoe = MatchUtils.translateToPlainStr(tjReservation.getPhoe());
+
+                    if (!ids.isEmpty() && ids.contains(idCard)) {
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                        return AjaxResult.error("姝よ韩浠借瘉鍙�: " + tjReservation.getIdCard() + " 閲嶅,璇锋牳瀵瑰悗涓婁紶!");
+                    }
+
+                    ids.add(idCard);
+
+                    if (!Objects.equals(tjReservation.getSex(), MatchUtils.getSexByIdCard(idCard))){
+                        wrongList.add(tjReservation.getName() + " " + tjReservation.getIdCard()+"浠ヤ笅浜哄憳鎬у埆 涓嶅噯纭�");
+                        log.info(tjReservation.getName() + " " + idCard);
+                    }
+
+                    if ((sfjysfzh.equalsIgnoreCase("Y") && !MatchUtils.isIdCard(idCard)) ||
+                            (sfjysjh.equalsIgnoreCase("Y") && !MatchUtils.isMobileNO(phoe))) {
+                        wrongList.add(tjReservation.getName() + " " + tjReservation.getIdCard()+"韬唤璇佸彿/鎵嬫満鍙� 鏍煎紡涓嶅噯纭�");
+//                            errMsg = "韬唤璇佸彿/鎵嬫満鍙� 鏍煎紡涓嶅噯纭�";
+                        log.info(tjReservation.getName() + " " + idCard + MatchUtils.isIdCard(idCard) + " " + phoe + " " + MatchUtils.isMobileNO(phoe));
+                    }
+//                        else {
+
+                    tjReservation.setPhoe(phoe);
+
+                    tjReservation.setName(name);
+
+                    tjReservation.setIdCard(idCard);
+
+                    //骞撮緞
+                    tjReservation.setAge(String.valueOf(MatchUtils.getAgeByIdCard(tjReservation.getIdCard().replaceAll(" ", ""))));
+                    //鍑虹敓鏃ユ湡
+                    try {
+                        tjReservation.setBirthday(MatchUtils.getBirthDayByIdCard(tjReservation.getIdCard().replaceAll(" ", "")));
+                    } catch (Exception e) {
+//                            return AjaxResult.error("韬唤璇佸彿涓嶆纭�");
+                    }
+
+                    TjDwDept dwDept = dwDeptService.getOne(new LambdaQueryWrapper<TjDwDept>().
+                            eq(TjDwDept::getDwDeptName, tjReservation.getDwxm().trim()).eq(TjDwDept::getDwId,dwId));
+                    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.getName() + " " + tjReservation.getIdCard());
+                        } else {
+                            rightList.add(tjReservation);
+                        }
+
+                    } else {
+                        wrongList.add(tjReservation.getName() + " " + tjReservation.getIdCard()+"鎵�濉啓鐨勫椁愬垎绫诲悕 涓嶆纭�");
+                    }
+//                        }
+
+                }
+                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);
+            }
+        } catch (NoTransactionException e) {
+//            throw new RuntimeException(e);
+            log.error(String.valueOf(e), e.getMessage());
+            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");
+
+        String payTypeGlTjType = configService.selectConfigByKey("reservation_pay_type_gl_tj_type");
+        JSONObject parseObj = JSONUtil.parseObj(payTypeGlTjType);
+        if (null != rightList && !rightList.isEmpty()) {
+
+            List<String> ids=new ArrayList<>();
+
+            for (TjReservation reservation : rightList) {
+
+                if(!ids.isEmpty() && ids.contains(reservation.getIdCard())){
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return AjaxResult.error("姝よ韩浠借瘉鍙�: "+reservation.getIdCard()+" 閲嶅,璇锋牳瀵瑰悗涓婁紶!");
+
+                }
+                reservation.setName(reservation.getName().replaceAll("銆�","").replaceAll(" ",""));
+                ids.add(reservation.getIdCard());
+
+                TjDwGrouping dwGrouping = dwGroupingService.getById(reservation.getGroupingId());
+
+                if(null !=dwGrouping){
+                    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()));
+                    LambdaQueryWrapper<SysDictData> wrapper = new LambdaQueryWrapper<>();
+                    wrapper.eq(SysDictData::getDictType, "reservation_pay_type");
+                    wrapper.eq(SysDictData::getDictValue, reservation.getPayType());
+                    SysDictData dictData = dictDataService.getOne(wrapper);
+                    for (Map.Entry<String, Object> entry : parseObj.entrySet()) {
+                        String[] split = entry.getValue().toString().split("-");
+                        if (split[0].equals(String.valueOf(dictData.getDictCode()))) {
+                            reservation.setTjType(dictDataService.selectDictDataById(Long.valueOf(split[1])).getDictValue());
+                        }
+                    }
+
+
+                    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);
+            }
+
+//            .filter(a-> null != a.getPacId())
+
+            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