From cc25bc0eec2d50da39d62f9896ed4d5e66805366 Mon Sep 17 00:00:00 2001
From: zjh <1084500556@qq.com>
Date: 星期五, 11 七月 2025 18:04:05 +0800
Subject: [PATCH] zjh20250711

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCompPayController.java |  325 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 223 insertions(+), 102 deletions(-)

diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCompPayController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCompPayController.java
index 74c7186..33f25fd 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCompPayController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCompPayController.java
@@ -1,6 +1,7 @@
 package com.ltkj.web.controller.system;
 
 
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ltkj.common.core.domain.AjaxResult;
 import com.ltkj.common.utils.SecurityUtils;
@@ -8,10 +9,13 @@
 import com.ltkj.hosp.domain.*;
 import com.ltkj.hosp.service.*;
 import com.ltkj.hosp.vodomain.TeamTjPeopleVo;
+import com.mysql.cj.util.StringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import jodd.util.StringUtil;
 import org.aspectj.weaver.AjAttribute;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import com.ltkj.common.core.controller.BaseController;
 import oshi.hardware.platform.mac.MacUsbDevice;
@@ -19,8 +23,10 @@
 import javax.annotation.Resource;
 import java.lang.annotation.ElementType;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.ltkj.framework.datasource.DynamicDataSourceContextHolder.log;
 
 /**
  * 浣撴鍗曚綅缂磋垂涓籆ontroller
@@ -39,8 +45,6 @@
     @Resource
     private ITjTeamSelectRecordService selectRecordService;
     @Resource
-    private ITjPackageService packageService;
-    @Resource
     private IDictCompService compService;
     @Resource
     private ITjReservationService reservationService;
@@ -49,25 +53,62 @@
     @Resource
     private ITjCustomerService customerService;
     @Resource
-    private ITjDwDeptService dwDeptService;
+    private ITjDwGroupingService dwGroupingService;
+    @Resource
+    private ITjOrderRemarkService remarkService;
+    @Resource
+    private ITjFlowingWaterService tjFlowingWaterService;
+    @Resource
+    private ITbTransitionService transitionService;
     /**
      * 鍥綋浣撴鏀惰垂鎺ュ彛
      */
     @PostMapping
     @ApiOperation(value = "鍥綋浣撴鏀惰垂鎺ュ彛")
-    public AjaxResult add(@RequestBody TjCompPayInfo compPayInfo) {
-        if (null==compPayInfo) {
-            return AjaxResult.error();
+    @Transactional
+    public AjaxResult add(@RequestBody TjCompPay compPay) {
+        try {
+            if (null==compPay.getTjhs() || compPay.getTjhs().isEmpty()) {
+                return AjaxResult.error("璇烽�夋嫨缁撹处浜哄憳!");
+            }
+            Date date = DateUtil.date();
+            String s = String.valueOf(SecurityUtils.getLoginUser().getUser().getNickName());
+            compPay.setPayee(s);
+            compPay.setSerialNumber("TT"+SecurityUtils.getUsername() + DateUtil.format(date, "yyMMddHHmmssSSS"));
+            compPay.setInvoiceNo("FP" + DateUtil.format(date, "yyMMddHHmmssSSS"));
+            if(compPayService.save(compPay)){
+                for (String tjh : compPay.getTjhs()) {
+                    TjOrder tjOrder = orderService.getOrderByTjNum(tjh);
+                    if(null != tjOrder){
+                        TjFlowingWater water = tjFlowingWaterService.getOne(new LambdaQueryWrapper<TjFlowingWater>()
+                                .eq(TjFlowingWater::getOrderId, tjOrder.getOrderId()).eq(TjFlowingWater::getIsAddition, "N"));
+                        if(null != water){
+                            TjCompPayInfo payInfo =  new TjCompPayInfo();
+                            payInfo.setTjh(tjh);
+                            payInfo.setTjCompPayId(compPay.getId());
+                            payInfo.setTransactionAmount(water.getPaidIn());
+                            payInfo.setPaymentMethod(compPay.getPaymentMethod());
+                            payInfo.setCardNo(compPay.getCardNo());
+                            payInfo.setPayer(compPay.getPayer());
+                            payInfo.setPayee(compPay.getPayee());
+                            payInfoService.save(payInfo);
+                            water.setSfjs("1");
+                            water.setJsdh(compPay.getSerialNumber());
+                            water.setJsrq(DateUtil.date());
+                            water.setJsrxm(s);
+                            water.setJsrdm(SecurityUtils.getLoginUser().getUser().getUserId().toString());
+                            tjFlowingWaterService.updateById(water);
+                        }
+                    }
+
+                }
+                return AjaxResult.success("鏀惰垂鎴愬姛");
+            }
+            return AjaxResult.error("鎿嶄綔澶辫触");
+        } catch (Exception e) {
+            log.error("鏀惰垂寮傚父", e);
+            throw new RuntimeException(e);
         }
-        compPayInfo.setPayee(String.valueOf(SecurityUtils.getLoginUser().getUser().getNickName()));
-        TjCompPay tjCompPay =compPayService.getById(compPayInfo.getTjCompPayId());
-        BigDecimal paidIn = tjCompPay.getPaidIn();
-                   paidIn =paidIn.add(compPayInfo.getTransactionAmount());
-        if(paidIn.compareTo(tjCompPay.getCopeWith())>0 || tjCompPay.getDifference().compareTo(BigDecimal.valueOf(0))==0){
-            return AjaxResult.error("鏆傛棤鏀惰垂闇�姹�");
-        }
-        if (getAjaxResult(compPayInfo, tjCompPay)) return AjaxResult.success("鏀惰垂鎴愬姛");
-        return AjaxResult.error("鎿嶄綔澶辫触");
     }
 
     /**
@@ -75,52 +116,35 @@
      */
     @PostMapping("/refund")
     @ApiOperation(value = "鍥綋浣撴閫�璐规帴鍙�")
-    public AjaxResult refund(@RequestBody TjCompPayInfo compPayInfo) {
-        if (null==compPayInfo) {
-            return AjaxResult.error();
-        }
-        compPayInfo.setPayee(String.valueOf(SecurityUtils.getLoginUser().getUser().getNickName()));
-        TjCompPay tjCompPay =compPayService.getById(compPayInfo.getTjCompPayId());
-        BigDecimal paidIn = tjCompPay.getPaidIn();
-        paidIn =paidIn.add(compPayInfo.getTransactionAmount());
-        //鍒ゆ柇瀹炰粯閲戦鍜屼氦鏄撻噾棰濈殑鏁板��
-        if(paidIn.compareTo(BigDecimal.valueOf(0.00))==0 || compPayInfo.getTransactionAmount().compareTo(tjCompPay.getPaidIn())>0 ){
-            return AjaxResult.error("鏆傛棤閫�璐归渶姹�");
-        }
-        compPayInfo.setTransactionAmount(BigDecimal.valueOf(0.00).subtract(compPayInfo.getTransactionAmount()));
-        compPayInfo.setPaymentMethod(3L);
-        if (getAjaxResult(compPayInfo, tjCompPay)) return AjaxResult.success("閫�璐规垚鍔�");
-        return AjaxResult.error("鎿嶄綔澶辫触");
-    }
-
-    private boolean getAjaxResult(@RequestBody TjCompPayInfo compPayInfo, TjCompPay tjCompPay) {
-        if(payInfoService.saveOrUpdate(compPayInfo)){
-            LambdaQueryWrapper<TjCompPayInfo> wq=new LambdaQueryWrapper<>();
-            wq.eq(TjCompPayInfo::getTjCompPayId,tjCompPay.getId());
-            List<TjCompPayInfo> list = payInfoService.list(wq);
-            BigDecimal bigDecimal=new BigDecimal("0.00");
-            if(null !=list && list.size()>0){
-                for (TjCompPayInfo payInfo : list) {
-                    bigDecimal=bigDecimal.add(payInfo.getTransactionAmount());
+    @Transactional
+    public AjaxResult refund(@RequestBody TjCompPay compPay) {
+        try {
+            if(null !=compPay){
+                if (compPayService.removeById(compPay)) {
+                    LambdaQueryWrapper<TjCompPayInfo>wq=new LambdaQueryWrapper<>();
+                    wq.eq(TjCompPayInfo::getTjCompPayId,compPay.getId());
+                    payInfoService.remove(wq);
+                    LambdaQueryWrapper<TjFlowingWater> waterLambdaQueryWrappe=new LambdaQueryWrapper<>();
+                    waterLambdaQueryWrappe.eq(TjFlowingWater::getJsdh,compPay.getSerialNumber());
+                    List<TjFlowingWater> waterList = tjFlowingWaterService.list(waterLambdaQueryWrappe);
+                    if(null != waterList && !waterList.isEmpty()){
+                        for (TjFlowingWater water : waterList) {
+                            water.setSfjs("0");
+                            water.setJsdh(null);
+                            water.setJsrq(null);
+                            water.setJsrxm(null);
+                            water.setJsrdm(null);
+                            tjFlowingWaterService.updateById(water);
+                        }
+                    }
+                    return AjaxResult.success("鎿嶄綔鎴愬姛");
                 }
             }
-            tjCompPay.setCreateBy(String.valueOf(SecurityUtils.getLoginUser().getUserId()));
-            if(bigDecimal.compareTo(BigDecimal.valueOf(0.00))>= 0){
-                tjCompPay.setPaidIn(bigDecimal);
-            }else {
-                tjCompPay.setPaidIn(BigDecimal.valueOf(0.00));
-            }
-            tjCompPay.setDifference(tjCompPay.getCopeWith().subtract(bigDecimal));
-            compPayService.updateById(tjCompPay);
-            LambdaQueryWrapper<TjTeamSelectRecord>wq0=new LambdaQueryWrapper<>();
-            wq0.eq(TjTeamSelectRecord::getTeamNo,tjCompPay.getTeamNo());
-            wq0.eq(TjTeamSelectRecord::getCompId,tjCompPay.getCompId());
-            TjTeamSelectRecord record = selectRecordService.getOne(wq0);
-            record.setTransactionAmount(tjCompPay.getPaidIn());
-            selectRecordService.updateById(record);
-            return true;
+            return AjaxResult.error("鎿嶄綔澶辫触");
+        } catch (Exception e) {
+            log.error("鎿嶄綔澶辫触", e);
+            throw new RuntimeException(e);
         }
-        return false;
     }
 
     /**
@@ -129,34 +153,66 @@
     @GetMapping
     @ApiOperation(value = "鎵�鏈夊叕鍙镐綋妫�鏀惰垂鏁版嵁鏌ヨ鎺ュ彛")
     public AjaxResult list(@RequestParam(required = false) @ApiParam(value = "鍗曚綅id") String compId) {
+
+        List<TjReservation> rightList = reservationService.list(new LambdaQueryWrapper<TjReservation>().eq(TjReservation::getCompanyId, compId));
+
+        Map<String, List<TjReservation>> collect = rightList.stream().collect(Collectors.groupingBy(TjReservation::getPacId));
+
+        if (!collect.isEmpty()) {
+            for (Map.Entry<String, List<TjReservation>> entry : collect.entrySet()) {
+                BigDecimal compPay = new BigDecimal("0.00");
+                for (TjReservation reservation : entry.getValue()) {
+                    TjDwGrouping dwGrouping = dwGroupingService.getById(reservation.getGroupingId());
+                    compPay = compPay.add(dwGrouping.getYsPrice());
+                }
+                LambdaQueryWrapper<TjTeamSelectRecord> wq = new LambdaQueryWrapper<>();
+                wq.eq(TjTeamSelectRecord::getTeamNo, entry.getValue().get(0).getTeamNo());
+                wq.eq(TjTeamSelectRecord::getPacId, entry.getKey());
+                wq.eq(TjTeamSelectRecord::getCompId,compId);
+                TjTeamSelectRecord recordServiceOne = selectRecordService.getOne(wq);
+                if (null == recordServiceOne) {
+                    TjTeamSelectRecord selectRecord = new TjTeamSelectRecord();
+                    selectRecord.setCompId(compId);
+                    selectRecord.setPacId(entry.getKey());
+                    selectRecord.setTeamNo(entry.getValue().get(0).getTeamNo());
+                    selectRecord.setTransactionAmount(new BigDecimal("0.00"));
+                    selectRecord.setCopeWith(compPay);
+                    selectRecord.setCount(entry.getValue().size());
+                    selectRecord.setDifference(compPay);
+                    selectRecordService.save(selectRecord);
+                }
+            }
+        }
+
         LambdaQueryWrapper<TjTeamSelectRecord>wq0=new LambdaQueryWrapper<>();
         if(null !=compId){
             wq0.eq(TjTeamSelectRecord::getCompId,compId);
         }
-        wq0.ne(TjTeamSelectRecord::getDifference,0);
         List<TjTeamSelectRecord> selectRecordList = selectRecordService.list(wq0);
-        if(null !=selectRecordList && selectRecordList.size()>0){
+        if(null !=selectRecordList && !selectRecordList.isEmpty()){
             for(TjTeamSelectRecord selectRecord : selectRecordList){
-                TjDwDept dwDept = dwDeptService.getById(selectRecord.getPacId());
-                if(null !=dwDept){
-                    selectRecord.setPacName(dwDept.getDwDeptName());
-                    selectRecord.setSigningPrice(dwDept.getSigningPrice());
+                selectRecord.setSjCount(orderService.count(new LambdaQueryWrapper<TjOrder>()
+                        .eq(TjOrder::getTeamNo,selectRecord.getTeamNo()).eq(TjOrder::getPacId,selectRecord.getPacId())));
+
+                TjDwGrouping dwGrouping = dwGroupingService.getById(selectRecord.getPacId());
+                if(null !=dwGrouping){
+                    selectRecord.setPacName(dwGrouping.getGroupingName());
+                    selectRecord.setSigningPrice(dwGrouping.getSigningPrice());
                 }
                 LambdaQueryWrapper<TjCompPay>wq1=new LambdaQueryWrapper<>();
                 wq1.eq(TjCompPay::getCompId,compId);
                 wq1.eq(TjCompPay::getTeamNo,selectRecord.getTeamNo());
-                TjCompPay compPay = compPayService.getOne(wq1);
-                if (null !=compPay) {
-                    LambdaQueryWrapper<TjCompPayInfo>wq=new LambdaQueryWrapper<>();
-                    wq.eq(TjCompPayInfo::getTjCompPayId,compPay.getId());
-                    selectRecord.setPayInfoList(payInfoService.list(wq));
-                    selectRecord.setCopeWith(compPay.getCopeWith());
-                    selectRecord.setDifference(compPay.getDifference());
-                    selectRecord.setPayer(compService.getById(compPay.getCompId()).getContactPerson());
-                    selectRecord.setSjCount(orderService.count(new LambdaQueryWrapper<TjOrder>().eq(TjOrder::getTeamNo,compPay.getTeamNo())));
-                    TjCompPayInfo payInfo = new TjCompPayInfo();
-                    payInfo.setTjCompPayId(compPay.getId());
-                    selectRecord.setPayInfo(payInfo);
+                wq1.eq(TjCompPay::getPacId,selectRecord.getPacId());
+                List<TjCompPay> compPay = compPayService.list(wq1);
+                BigDecimal sumZje = compPayService.sumZje(compId,selectRecord.getTeamNo(),selectRecord.getPacId());
+                List<String> SerialNumbers = compPayService.serialNumbers(compId,selectRecord.getTeamNo(),selectRecord.getPacId());
+                if (null !=compPay && !compPay.isEmpty()) {
+                    selectRecord.setTransactionAmount(sumZje);
+                    selectRecord.setDifference(selectRecord.getCopeWith().subtract(sumZje));
+                    selectRecord.setYjsrs(tjFlowingWaterService.count(new LambdaQueryWrapper<TjFlowingWater>()
+                            .in(TjFlowingWater::getJsdh,SerialNumbers)));
+                }else {
+                    selectRecord.setYjsrs(0);
                 }
             }
         }
@@ -170,34 +226,99 @@
      */
     @GetMapping("/getTeamTjPeopleList")
     @ApiOperation(value = "鏍规嵁鍥㈤槦浣撴缂栧彿鍥㈤槦浜哄憳浣撴鎯呭喌鏌ヨ")
-    public AjaxResult getTeamTjPeopleList(@RequestParam @ApiParam(value = "鍥㈤槦缂栧彿") String teamNo) {
+    public AjaxResult getTeamTjPeopleList(@RequestParam @ApiParam(value = "鍥㈤槦缂栧彿") String teamNo,
+                                          @RequestParam(required = false) @ApiParam(value = "鍗曚綅id") String pacId) {
 
-        List<TjReservation> reservationList = reservationService.list(new LambdaQueryWrapper<TjReservation>().eq(TjReservation::getTeamNo,teamNo));
-        if (null != reservationList && reservationList.size() > 0) {
-            List<TeamTjPeopleVo> voList = new ArrayList<>();
-            for (TjReservation reservation : reservationList) {
-                TeamTjPeopleVo vo = new TeamTjPeopleVo();
-                vo.setName(MatchUtils.hideCusName(reservation.getName()));
-                TjCustomer customer = customerService.getOne(new LambdaQueryWrapper<TjCustomer>().eq(TjCustomer::getCusIdcard, reservation.getIdCard()));
-                if (null != customer) {
-                    TjOrder tjOrder = orderService.getOne(new LambdaQueryWrapper<TjOrder>().eq(TjOrder::getUserId, customer.getCusId()).eq(TjOrder::getTeamNo, teamNo));
-                    if (null != tjOrder) {
-                        if (null != tjOrder.getFinishTime()) {
-                            vo.setTjStatus("宸插畬鎴�");
-                            vo.setTjTime(tjOrder.getFinishTime());
-                        } else {
-                            vo.setTjStatus("鏈畬鎴�");
-                        }
-                    } else {
-                        vo.setTjStatus("鏈� 妫�");
+        try {
+            Map<String,Object> map=new HashMap<>();
+            LambdaQueryWrapper<TjReservation> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(TjReservation::getTeamNo, teamNo);
+            if(StringUtil.isNotBlank(pacId))wrapper.eq(TjReservation::getPacId, pacId);
+            List<TjReservation> reservationList = reservationService.list(wrapper);
+            if (null != reservationList && !reservationList.isEmpty()) {
+                List<TeamTjPeopleVo> syList = new ArrayList<>();
+                List<TeamTjPeopleVo> yjwjzList = new ArrayList<>();
+                List<TeamTjPeopleVo> wjList = new ArrayList<>();
+                for (TjReservation reservation : reservationList) {
+                    TeamTjPeopleVo vo = new TeamTjPeopleVo();
+                    vo.setName(reservation.getName());
+                    vo.setXb(reservation.getSex().toString());
+                    vo.setDh(reservation.getPhoe());
+                    TjCustomer customer = null;
+                    try {
+                        customer = customerService.getTjCustomerByCusIdCard( reservation.getIdCard());
+                    } catch (Exception e) {
+                        log.error("鏍规嵁鍥㈤槦缂栧彿鏌ヨ鍥㈤槦棰勭害淇℃伅寮傚父"+reservation.getIdCard());
+                        throw new RuntimeException(e);
                     }
-                } else {
-                    vo.setTjStatus("鏈� 妫�");
+                    if (null != customer) {
+                        TjOrder tjOrder = orderService.getOne(new LambdaQueryWrapper<TjOrder>().eq(TjOrder::getUserId, customer.getCusId()).eq(TjOrder::getTeamNo, teamNo));
+                        if (null != tjOrder) {
+                            TjFlowingWater water = tjFlowingWaterService.getOne(new LambdaQueryWrapper<TjFlowingWater>()
+                                    .eq(TjFlowingWater::getOrderId, tjOrder.getOrderId()).eq(TjFlowingWater::getIsAddition, "N"));
+                            if(null != water && water.getSfjs().equals("0") && water.getJsrq() ==null){
+                                vo.setTjh(tjOrder.getTjNumber());
+                                int sfwc = remarkService.panduaniswancheng(tjOrder.getTjNumber());
+                                if (sfwc==0) {
+                                    vo.setTjStatus("宸插畬鎴�");
+                                    vo.setTjTime(DateUtil.format(tjOrder.getCreateTime(),"yyyy-MM-dd"));
+                                    vo.setTjf(water.getPaidIn());
+                                } else {
+                                    vo.setTjTime(DateUtil.format(tjOrder.getCreateTime(),"yyyy-MM-dd"));
+                                    vo.setTjf(water.getPaidIn());
+                                    vo.setTjStatus("鍦� 妫�");
+                                }
+                                yjwjzList.add(vo);
+                            }
+                        } else {
+                            vo.setTjStatus("鏈� 妫�");
+                            vo.setTjf(transitionService.sumNowPrice(reservation.getIdCard()));
+                            wjList.add(vo);
+                        }
+                    }else {
+                        vo.setTjStatus("鏈� 妫�");
+                        vo.setTjf(transitionService.sumNowPrice(reservation.getIdCard()));
+                        wjList.add(vo);
+                    }
+                    syList.add(vo);
+
                 }
-                voList.add(vo);
+                map.put("syList",syList);
+                map.put("yjwjzList",yjwjzList);
+                map.put("wjList",wjList);
+                return AjaxResult.success(map);
             }
-            return AjaxResult.success(voList);
+            return AjaxResult.success(null);
+        } catch (Exception e) {
+            log.error("鏌ヨ鍥㈤槦浣撴浜哄憳淇℃伅寮傚父");
+            throw new RuntimeException(e);
         }
-        return AjaxResult.success(null);
+    }
+
+
+
+    @GetMapping("/getTjCompPay")
+    @ApiOperation(value = "鏍规嵁鍥㈤槦浣撴缂栧彿鍜屽椁恑d鑾峰彇缁撹处淇℃伅")
+    public AjaxResult getTjCompPay(@RequestParam @ApiParam(value = "鍥㈤槦缂栧彿") String teamNo,
+                                          @RequestParam(required = false) @ApiParam(value = "鍗曚綅id") String pacId) {
+
+        try {
+             LambdaQueryWrapper<TjCompPay> wq = new LambdaQueryWrapper<>();
+             wq.eq(TjCompPay::getTeamNo, teamNo);
+             wq.eq(TjCompPay::getCompId, 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);
+                     pay.setPayInfo(payInfos);
+                 }
+             }
+            return AjaxResult.success(tjCompPays);
+        } catch (Exception e) {
+            log.error("鏌ヨ鍥㈤槦浣撴浜哄憳淇℃伅寮傚父");
+            throw new RuntimeException(e);
+        }
     }
 }

--
Gitblit v1.8.0