From 857d738b56e4801a07521cfde502bd5c0f2bf132 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 29 十二月 2023 11:41:02 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeRechargeHistory.java                  |   21 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeLossMapper.xml                                       |   48 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeClientCard.java                       |   10 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/pom.xml                                                          |    1 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/QueryVo.java                 |    8 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeActiveCardMapper.java                  |    4 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeHistoryMapper.xml                            |   38 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockSv.java                |   24 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoDivide.java                             |   16 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeClient.java                           |  192 ++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrDivideMapper.xml                                     |   22 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictCtrl.java          |   61 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientCtrl.java              |  380 +++++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockCtrl.java              |   17 
 pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/demo/DemoCtrl.java                  |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeMapper.java                    |   18 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoCardInfo.java                           |   31 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientMapper.java                      |  137 +
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/ClientCardCtrl.java      |   90 +
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/SeClientToVoClient.java      |   28 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeHistoryMapper.java             |    4 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideSv.java          |   79 +
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictSv.java            |   19 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalSv.java            |   24 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java      |   83 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeUnlockMapper.java                      |    5 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java                  |   34 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeReversalMapper.java                    |    5 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/DtoActiveCard.java       |   13 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/RechargeSv.java            |   41 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/PipIrrProjectApplication.java |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeActiveCard.java                       |   31 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/QueryVo.java           |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/RechargeCtrl.java          |   24 
 pipIrr-platform/pipIrr-common/pom.xml                                                                          |    7 
 pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml                                        |    6 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeLoss.java                             |   16 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/LossCtrl.java                  |   19 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeActiveCardMapper.xml                                 |   75 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideCtrl.java        |  194 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/QueryVo.java                   |   11 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaDistrictMapper.xml                                   |   42 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeUnlockMapper.xml                                     |   52 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/QueryVo.java               |    6 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeUnlock.java                           |   10 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/DtoClient.java               |  108 +
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryOperate.java            |   34 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCancelMapper.java                      |    4 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientSv.java                |  258 +++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoOperate.java                            |   66 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/CancelCtrl.java              |   23 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/LossSv.java                    |   36 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeReversal.java                         |   10 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/RechargeDtoMapper.java   |    6 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeRecharge.java                         |   21 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml                                 |   92 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardSv.java        |   49 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/ClientCardSv.java        |   34 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/QueryVo.java             |   12 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryStatistic.java          |   33 
 pipIrr-platform/pipIrr-global/pom.xml                                                                          |   12 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoStatistics.java                         |   42 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReversalMapper.xml                                   |   65 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/CancelSv.java                |   28 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/LocalJsonUtil.java                        |   28 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrDivideMapper.java                      |   20 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaDistrictMapper.java                    |   22 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml                                     |  600 ++++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoClient.java                             |   87 +
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/QueryVo.java                 |    6 
 /dev/null                                                                                                      |  402 -----
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeLossMapper.java                        |    4 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryVo.java                 |   46 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/DtoRecharge.java           |   15 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeMapper.xml                                   |   65 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCancel.java                           |   10 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/DtoClientToSeClient.java     |   33 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/QueryVo.java               |   14 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalCtrl.java          |   17 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCancelMapper.xml                                     |   52 
 80 files changed, 3,400 insertions(+), 906 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/pom.xml b/pipIrr-platform/pipIrr-common/pom.xml
index 2b86036..be19e3a 100644
--- a/pipIrr-platform/pipIrr-common/pom.xml
+++ b/pipIrr-platform/pipIrr-common/pom.xml
@@ -128,13 +128,6 @@
             <artifactId>httpclient</artifactId>
             <version>4.5.14</version>
         </dependency>
-        <!-- apache poi -->
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi</artifactId>
-            <version>3.14</version>
-        </dependency>
-
         <!-- quartz -->
         <dependency>
             <groupId>org.quartz-scheduler</groupId>
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/HSSF.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/HSSF.java
deleted file mode 100644
index 430373f..0000000
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/HSSF.java
+++ /dev/null
@@ -1,402 +0,0 @@
-package com.dy.common.util;
-
-import org.apache.poi.hssf.usermodel.*;
-import org.apache.poi.hssf.util.HSSFColor;
-import org.apache.poi.ss.usermodel.RichTextString;
-import org.apache.poi.ss.util.CellRangeAddress;
-import org.apache.poi.ss.util.RegionUtil;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-public abstract class HSSF {
-
-    public HSSFCellStyle createTitleStyle_1(HSSFWorkbook workbook, boolean hasForegroundColor, int fontSize){
-        HSSFCellStyle style = workbook.createCellStyle();// Create a style
-        if(hasForegroundColor) {
-            style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);// The style settings
-        }else{
-            style.setFillForegroundColor(HSSFColor.WHITE.index);// The style settings
-        }
-        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
-        style.setBorderBottom(HSSFCellStyle.BORDER_NONE);
-        style.setBorderLeft(HSSFCellStyle.BORDER_NONE);
-        style.setBorderRight(HSSFCellStyle.BORDER_NONE);
-        style.setBorderTop(HSSFCellStyle.BORDER_NONE);
-        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
-        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
-        style.setWrapText(true);// 鑷姩鎹㈣
-
-        HSSFFont font = workbook.createFont();// Create a font
-        font.setFontName("瀹嬩綋");
-        font.setFontHeightInPoints((short) fontSize);
-        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
-        font.setColor(HSSFColor.BLACK.index);
-        style.setFont(font);
-        return style ;
-    }
-    public HSSFCellStyle createTitleStyle_2(HSSFWorkbook workbook, boolean hasForegroundColor, int fontSize){
-        HSSFCellStyle style = workbook.createCellStyle();// Create a style
-        if(hasForegroundColor) {
-            style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);// The style settings
-        }else{
-            style.setFillForegroundColor(HSSFColor.WHITE.index);// The style settings
-        }
-        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
-        style.setBorderBottom(HSSFCellStyle.BORDER_NONE);
-        style.setBorderLeft(HSSFCellStyle.BORDER_NONE);
-        style.setBorderRight(HSSFCellStyle.BORDER_NONE);
-        style.setBorderTop(HSSFCellStyle.BORDER_NONE);
-        style.setAlignment(HSSFCellStyle.ALIGN_LEFT);
-        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
-        style.setWrapText(true);// 鑷姩鎹㈣
-
-        HSSFFont font = workbook.createFont();// Create a font
-        font.setFontName("瀹嬩綋");
-        font.setFontHeightInPoints((short) fontSize);
-        //font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
-        font.setColor(HSSFColor.BLACK.index);
-        style.setFont(font);
-        return style ;
-    }
-    public HSSFCellStyle createTitleStyle_3(HSSFWorkbook workbook, boolean hasForegroundColor, int fontSize){
-        HSSFCellStyle style = workbook.createCellStyle();// Create a style
-        if(hasForegroundColor) {
-            style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);// The style settings
-        }else{
-            style.setFillForegroundColor(HSSFColor.WHITE.index);// The style settings
-        }
-        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
-        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
-        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
-        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
-        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
-        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
-        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
-        style.setWrapText(true);// 鑷姩鎹㈣
-
-        HSSFFont font = workbook.createFont();// Create a font
-        font.setFontName("瀹嬩綋");
-        font.setFontHeightInPoints((short) fontSize);
-        //font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
-        font.setColor(HSSFColor.BLACK.index);
-        style.setFont(font);
-        return style ;
-    }
-
-    
-    public HSSFCellStyle createTitleStyle(HSSFWorkbook workbook, boolean hasForegroundColor){
-        HSSFCellStyle style = workbook.createCellStyle();// Create a style
-        if(hasForegroundColor) {
-            style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);// The style settings
-        }else{
-            style.setFillForegroundColor(HSSFColor.WHITE.index);// The style settings
-        }
-        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
-        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
-        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
-        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
-        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
-        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
-        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
-        style.setWrapText(true);// 鑷姩鎹㈣
-
-        HSSFFont font = workbook.createFont();// Create a font
-        font.setFontName("瀹嬩綋");
-        font.setFontHeightInPoints((short) 11);
-        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
-        font.setColor(HSSFColor.GREY_80_PERCENT.index);
-        style.setFont(font);
-        return style ;
-    }
-
-    public HSSFCellStyle createContentCenterStyle(HSSFWorkbook workbook){
-        HSSFCellStyle style = workbook.createCellStyle();// Create a style
-        style.setFillForegroundColor(HSSFColor.WHITE.index);// The style settings
-        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
-        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
-        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
-        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
-        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
-        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
-        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
-        style.setWrapText(true);// 鑷姩鎹㈣
-
-        HSSFFont font = workbook.createFont();// Create a font
-        font.setFontHeightInPoints((short) 10);
-        font.setFontName("瀹嬩綋");
-        font.setColor(HSSFColor.GREY_80_PERCENT.index);
-
-        style.setFont(font);
-
-        return style ;
-    }
-
-    public HSSFCellStyle createContentCenterStyleBFH(HSSFWorkbook workbook){
-        HSSFCellStyle style = workbook.createCellStyle();// Create a style
-        style.setFillForegroundColor(HSSFColor.WHITE.index);// The style settings
-        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
-        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
-        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
-        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
-        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
-        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
-        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
-        style.setWrapText(true);// 鑷姩鎹㈣
-
-        HSSFFont font = workbook.createFont();// Create a font
-        font.setFontHeightInPoints((short) 10);
-        font.setFontName("瀹嬩綋");
-        font.setColor(HSSFColor.GREY_80_PERCENT.index);
-
-        style.setFont(font);
-        
-        style.setDataFormat(workbook.createDataFormat().getFormat("0.00%"));
-
-        return style ;
-    }
-    public HSSFCellStyle createContentCenterStyle_1(HSSFWorkbook workbook, int fontSize){
-        HSSFCellStyle style = workbook.createCellStyle();// Create a style
-        style.setFillForegroundColor(HSSFColor.WHITE.index);// The style settings
-        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
-        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
-        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
-        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
-        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
-        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
-        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
-        style.setWrapText(true);// 鑷姩鎹㈣
-
-        HSSFFont font = workbook.createFont();// Create a font
-        font.setFontName("瀹嬩綋");
-        font.setFontHeightInPoints((short) fontSize);
-        font.setColor(HSSFColor.GREY_80_PERCENT.index);
-        style.setFont(font);
-  
-        return style ;
-    }
-
-
-    public HSSFCellStyle createContentLeftStyle(HSSFWorkbook workbook){
-        HSSFCellStyle style = workbook.createCellStyle();// Create a style
-        style.setFillForegroundColor(HSSFColor.WHITE.index);// The style settings
-        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
-        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
-        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
-        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
-        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
-        style.setAlignment(HSSFCellStyle.ALIGN_LEFT);
-        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
-        style.setWrapText(true);// 鑷姩鎹㈣
-
-        HSSFFont font = workbook.createFont();// Create a font
-        font.setFontHeightInPoints((short) 10);
-        font.setFontName("瀹嬩綋");
-        font.setColor(HSSFColor.GREY_80_PERCENT.index);
-
-        style.setFont(font);
-        return style ;
-    }
-
-
-    public HSSFCellStyle createContentLeftStyle_1(HSSFWorkbook workbook, int fontSize){
-        HSSFCellStyle style = workbook.createCellStyle();// Create a style
-        style.setFillForegroundColor(HSSFColor.WHITE.index);// The style settings
-        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
-        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
-        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
-        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
-        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
-        style.setAlignment(HSSFCellStyle.ALIGN_LEFT);
-        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
-        style.setWrapText(true);// 鑷姩鎹㈣
-
-        HSSFFont font = workbook.createFont();// Create a font
-        font.setFontName("瀹嬩綋");
-        font.setFontHeightInPoints((short) fontSize);
-        font.setColor(HSSFColor.GREY_80_PERCENT.index);
-
-        style.setFont(font);
-        return style ;
-    }
-
-
-    public HSSFCellStyle createContentRightStyle(HSSFWorkbook workbook){
-        HSSFCellStyle style = workbook.createCellStyle();// Create a style
-        style.setFillForegroundColor(HSSFColor.WHITE.index);// The style settings
-        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
-        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
-        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
-        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
-        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
-        style.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
-        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
-        style.setWrapText(true);// 鑷姩鎹㈣
-
-        HSSFFont font = workbook.createFont();// Create a font
-        font.setFontHeightInPoints((short) 10);
-        font.setFontName("瀹嬩綋");
-        font.setColor(HSSFColor.GREY_80_PERCENT.index);
-
-        style.setFont(font);
-        return style ;
-    }
-    
-    public HSSFCellStyle createContentRightStyle_1(HSSFWorkbook workbook, int fontSize){
-        HSSFCellStyle style = workbook.createCellStyle();// Create a style
-        style.setFillForegroundColor(HSSFColor.WHITE.index);// The style settings
-        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
-        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
-        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
-        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
-        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
-        style.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
-        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
-        style.setWrapText(true);// 鑷姩鎹㈣
-
-        HSSFFont font = workbook.createFont();// Create a font
-        font.setFontName("瀹嬩綋");
-        font.setFontHeightInPoints((short) fontSize);
-        font.setColor(HSSFColor.GREY_80_PERCENT.index);
-
-        style.setFont(font);
-        return style ;
-    }
-
-    public HSSFCell createTitleCell(HSSFSheet sheet, HSSFRow row, String name, int index, Integer width, HSSFCellStyle style){
-        HSSFCell cell = row.createCell(index);//Create first column cell
-        if(style != null){
-            cell.setCellStyle(style);
-        }
-        cell.setCellType(HSSFCell.CELL_TYPE_STRING);
-        cell.setCellValue(new HSSFRichTextString(name));
-        if(width != null){
-            sheet.setColumnWidth(index, width * 1000);
-        }
-        return cell ;
-    }
-    public HSSFCell createTitleCell_1(HSSFSheet sheet, HSSFRow row, String name, int index, Double width, HSSFCellStyle style){
-        HSSFCell cell = row.createCell(index);//Create first column cell
-        if(style != null){
-            cell.setCellStyle(style);
-        }
-        cell.setCellType(HSSFCell.CELL_TYPE_STRING);
-        cell.setCellValue(new HSSFRichTextString(name));
-        if(width != null){
-            sheet.setColumnWidth(index, (int)(width * 1000));
-        }
-        return cell ;
-    }
-
-    public void setMergedRegionStyle(HSSFSheet sheet, CellRangeAddress region, HSSFCellStyle style) {
-        for (int i = region.getFirstRow(); i <= region.getLastRow(); i++) {
-            HSSFRow row = sheet.getRow(i);
-            if (row == null) {
-                row = sheet.createRow(i);
-            }
-            for (int j = region.getFirstColumn(); j <= region.getLastColumn(); j++) {
-                HSSFCell cell = row.getCell(j);
-                if (cell == null) {
-                    cell = row.createCell(j);
-                    cell.setCellValue("");
-                }
-                cell.setCellStyle(style);
-            }
-        }
-    }
-    public void setRegionBorder(int border, CellRangeAddress region, HSSFSheet sheet, HSSFWorkbook wb){
-        RegionUtil.setBorderBottom(border,region, sheet, wb);
-        RegionUtil.setBorderLeft(border,region, sheet, wb);
-        RegionUtil.setBorderRight(border,region, sheet, wb);
-        RegionUtil.setBorderTop(border,region, sheet, wb);
-    }
-
-    public HSSFCell createDataDouCell(HSSFRow row, int index, Double value, HSSFCellStyle style){
-        HSSFCell cell = row.createCell(index);
-        cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
-        cell.setCellStyle(style);
-        if(value != null){
-            cell.setCellValue(value);
-        }
-        return cell ;
-    }
-
-    public HSSFCell createDataNumCell(HSSFRow row, int index, Integer value, HSSFCellStyle style){
-        HSSFCell cell = row.createCell(index);
-        cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
-        cell.setCellStyle(style);
-        if(value != null){
-            cell.setCellValue(value);
-        }
-        return cell ;
-    }
-
-    public HSSFCell createDataStrCell(HSSFRow row, int index, String value, HSSFCellStyle style){
-        HSSFCell cell = row.createCell(index);
-        cell.setCellType(HSSFCell.CELL_TYPE_STRING);
-        cell.setCellStyle(style);
-        if(value != null){
-            cell.setCellValue(value);
-        }
-        return cell ;
-    }
-
-
-    public HSSFCell createDataStrCell(HSSFRow row, int index, RichTextString value, HSSFCellStyle style){
-        HSSFCell cell = row.createCell(index);
-        cell.setCellType(HSSFCell.CELL_TYPE_STRING);
-        cell.setCellStyle(style);
-        if(value != null){
-            cell.setCellValue(value);
-        }
-        return cell ;
-    }
-
-
-    public HSSFCell[] createTitleCells(int startColIndex, Object[][] tcs, HSSFSheet sheet, HSSFRow row, HSSFCellStyle style){
-        HSSFCell[] cells = new HSSFCell[tcs.length] ;
-        for(int i = 0; i < tcs.length; i++){
-            cells[i] = createTitleCell(sheet, row, (String)tcs[i][0], startColIndex+ i, (Integer)tcs[i][1], style);
-        }
-        return cells ;
-    }
-    public HSSFCell[] createTitleCells_1(int startColIndex, Object[][] tcs, HSSFSheet sheet, HSSFRow row, HSSFCellStyle style){
-        HSSFCell[] cells = new HSSFCell[tcs.length] ;
-        for(int i = 0; i < tcs.length; i++){
-            cells[i] = createTitleCell_1(sheet, row, (String)tcs[i][0], startColIndex+ i, (Double)tcs[i][1], style);
-        }
-        return cells ;
-    }
-
-    public void createContentCells(Object[][] ccs, HSSFRow row){
-        for(int i = 0; i < ccs.length; i++){
-            createDataStrCell(row, i, (String)ccs[i][0], (HSSFCellStyle)ccs[i][1]) ;
-        }
-    }
-
-
-
-    /**
-     * 杈撳叆EXCEL鏂囦欢
-     * @param workbook
-     * @param fileName 鏂囦欢鍚�
-     */
-    public boolean outputExcel(HSSFWorkbook workbook, String fileName) {
-        boolean flag = true ;
-        FileOutputStream fos = null;
-        try {
-            fos = new FileOutputStream(new File(fileName));
-            workbook.write(fos);
-            fos.close();
-        } catch (FileNotFoundException e) {
-            e.printStackTrace();
-            flag = false ;
-        } catch (IOException e) {
-            e.printStackTrace();
-            flag = false ;
-        }
-        return flag ;
-    }
-}
diff --git a/pipIrr-platform/pipIrr-global/pom.xml b/pipIrr-platform/pipIrr-global/pom.xml
index 1bc1879..a2dcd29 100644
--- a/pipIrr-platform/pipIrr-global/pom.xml
+++ b/pipIrr-platform/pipIrr-global/pom.xml
@@ -21,6 +21,12 @@
             <groupId>com.dy</groupId>
             <artifactId>pipIrr-common</artifactId>
             <version>1.0.0</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>spring-boot-starter-log4j2</artifactId>
+                    <groupId>org.springframework.boot</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <dependency>
@@ -122,6 +128,12 @@
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
         </dependency>
+        <!--EasyExcel鐩稿叧渚濊禆-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>3.1.0</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaDistrictMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaDistrictMapper.java
index 8916527..bf05ee2 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaDistrictMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaDistrictMapper.java
@@ -3,8 +3,10 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoBa.BaDistrict;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 @Mapper
 public interface BaDistrictMapper extends BaseMapper<BaDistrict> {
@@ -73,4 +75,24 @@
      */
     int deleteLogicById(Long id);
 
+    /**
+     * 鏍规嵁鏉戠紪鍙疯幏鍙�5绾у尯鍒掍俊鎭�
+     * @param villageId 鏉戠紪鍙凤紙涓婚敭锛�
+     * @return 5绾ц鏀垮尯鍒掍俊鎭�
+     */
+    Map getDistrictsByVillageId(@Param("villageId") Long villageId);
+
+    /**
+     * 鏍规嵁绾у埆鑾峰彇琛屾斂鍖哄垝鍒楄〃
+     * @param level 琛屾斂鍖哄垝灞傜骇
+     * @return 琛屾斂鍖哄垝鍒楄〃
+     */
+    List<Map<String, Object>> getDistrictgsByLevel(@Param("level") Integer level);
+
+    /**
+     * 鏍规嵁鐖禝D鑾峰彇琛屾斂鍖哄垝鍒楄〃
+     * @param supperId 琛屾斂鍖哄垝鐖剁骇ID
+     * @return 琛屾斂鍖哄垝鍒楄〃
+     */
+    List<Map<String, Object>> getDistrictsBySupperId(@Param("supperId") Long supperId);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrDivideMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrDivideMapper.java
index 5eb7697..c267e59 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrDivideMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrDivideMapper.java
@@ -1,7 +1,10 @@
 package com.dy.pipIrrGlobal.daoPr;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoPr.PrDivide;
 import com.dy.pipIrrGlobal.voPr.VoDivide;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -12,7 +15,8 @@
  * @LastEditTime 2023/12/21 9:16
  * @Description
  */
-public interface PrDivideMapper {
+@Mapper
+public interface PrDivideMapper extends BaseMapper<PrDivide> {
     int deleteByPrimaryKey(Long id);
 
     int insert(PrDivide record);
@@ -38,4 +42,18 @@
      * @return
      */
     List<VoDivide> getDivides(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鍒嗘按鎴縄D閫昏緫鍒犻櫎鍒嗘按鎴�
+     * @param id
+     * @return
+     */
+    Integer deleteDivideById(@Param("id") Long id);
+
+    /**
+     * 鏍规嵁鍒嗘按鎴跨紪鍙疯幏鍙栨墍灞炵墖鍖虹紪鍙�
+     * @param divideId
+     * @return
+     */
+    Long getBlockIdById(@Param("divideId") Long divideId);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeActiveCardMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeActiveCardMapper.java
index 9b697ed..44452a9 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeActiveCardMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeActiveCardMapper.java
@@ -10,8 +10,8 @@
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/18 16:58
- * @LastEditTime 2023/12/18 16:58
+ * @date 2023/12/22 16:26
+ * @LastEditTime 2023/12/22 16:26
  * @Description
  */
 
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCancelMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCancelMapper.java
index 27b77f4..b057bbb 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCancelMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCancelMapper.java
@@ -10,8 +10,8 @@
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/20 14:48
- * @LastEditTime 2023/12/20 14:48
+ * @date 2023-12-25 14:32
+ * @LastEditTime 2023-12-25 14:32
  * @Description
  */
 
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java
index aaa7433..9eeb8a0 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java
@@ -2,15 +2,17 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
+import com.dy.pipIrrGlobal.voSe.VoCardInfo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
 import java.util.Map;
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/18 16:26
- * @LastEditTime 2023/12/18 16:26
+ * @date 2023/12/22 16:04
+ * @LastEditTime 2023/12/22 16:04
  * @Description
  */
 
@@ -55,4 +57,32 @@
      * @return
      */
     Map getCardIdAndClientNum(@Param("cardNum") String cardNum);
+
+    /**
+     * 鏍规嵁鍐滄埛涓婚敭鑾峰彇姘村崱鍒楄〃
+     * @param clientId
+     * @return
+     */
+    List<VoCardInfo> getCardInfoByClientId(@Param("clientId") Long clientId);
+
+    /**
+     * 鏍规嵁姘村崱缂栧彿鑾峰彇鎿嶄綔璁板綍鍒楄〃
+     * @param cardNum 姘村崱缂栧彿
+     * @return 姘村崱鎿嶄綔璁板綍鍒楄〃
+     */
+    List<Map<String, Object>> getOperateRecordsByCardNum(@Param("cardNum") Long cardNum);
+
+    /**
+     * 鏍规嵁姘村崱缂栧彿鑾峰彇浣欓
+     * @param cardNum 姘村崱缂栧彿
+     * @return 浣欓
+     */
+    Float getMoneyByCardNum(@Param("cardNum") Long cardNum);
+
+    /**
+     * 鏍规嵁姘村崱缂栧彿鑾峰彇鍏呭�兼�婚
+     * @param cardNum
+     * @return
+     */
+    Float sumRechargeByCardNum(@Param("cardNum") Long cardNum);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientMapper.java
new file mode 100644
index 0000000..44e1e11
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientMapper.java
@@ -0,0 +1,137 @@
+package com.dy.pipIrrGlobal.daoSe;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoSe.SeClient;
+import com.dy.pipIrrGlobal.voSe.VoClient;
+import com.dy.pipIrrGlobal.voSe.VoOperate;
+import com.dy.pipIrrGlobal.voSe.VoStatistics;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023-12-26 10:32
+ * @LastEditTime 2023-12-26 10:32
+ * @Description
+ */
+
+@Mapper
+public interface SeClientMapper extends BaseMapper<SeClient> {
+    int deleteByPrimaryKey(Long id);
+
+    int insert(SeClient record);
+
+    int insertSelective(SeClient record);
+
+    SeClient selectByPrimaryKey(Long id);
+
+    int updateByPrimaryKeySelective(SeClient record);
+
+    int updateByPrimaryKey(SeClient record);
+
+    /**
+     * 鏍规嵁6浣嶅尯鍒掍覆妯$硦鏌ヨ鍐滄埛缂栧彿
+     * @param district8
+     * @return
+     */
+    String getClientNumOfMax(@Param("district8") String district8);
+
+    /**
+     * 鏍规嵁鍐滄埛缂栧彿鑾峰彇5绾ц鏀垮尯鍒掍唬鐮�
+     * @param clientNum 鍐滄埛缂栧彿
+     * @return 5绾ц鏀垮尯鍒掍唬鐮�
+     */
+    Long getAreaCodeByNum(@Param("clientNum") String clientNum);
+
+    /**
+     * 鏍规嵁鍐滄埛缂栧彿鑾峰彇鍐滄埛ID
+     * @param clientNum
+     * @return
+     */
+    Long getClientIdByNum(@Param("clientNum") String clientNum);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍐滄埛璁板綍鏁�
+     * @param params
+     * @return
+     */
+    Long getRecordCount(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍐滄埛鏁版嵁
+     * @param params
+     * @return
+     */
+    List<VoClient> getClients(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鍐滄埛ID閫昏緫鍒犻櫎鍐滄埛
+     * @param id 鍐滄埛ID
+     * @return 閫昏緫鍒犻櫎璁板綍鏁�
+     */
+    Integer deleteClientById(@Param("id") Long id);
+
+    /**
+     * 鏍规嵁涓婚敭鑾峰彇鏉慖D
+     * @param id 鍐滄埛ID
+     * @return 鏉戜富閿�
+     */
+    Long getVillageIdById(@Param("id") Long id);
+
+    /**
+     * 鑾峰彇铏氭嫙鍗″彿鏈�澶у��
+     * @return
+     */
+    Long getMa1xVirtualId();
+
+    /**
+     * 鑾峰彇鐢ㄦ按鏂瑰紡鍒楄〃
+     * @return
+     */
+    List<Map<String, Object>> getWaterTypes();
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇璐按姹囨�诲拰璐崱姹囨��
+     * @param params 缁熻鏉′欢
+     * @return 璐按閲戦銆佽喘鍗¢噾棰�
+     */
+    Map getSums(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鎿嶄綔璁板綍鏁�
+     * @param params 鏌ヨ鏉′欢
+     * @return 绗﹀悎鏉′欢鐨勮褰曟暟
+     */
+    Long getOperateRecordCount(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鎿嶄綔璁板綍
+     * @param params 鏌ヨ鏉′欢
+     * @return 绗﹀悎鏉′欢鐨勪氦鏄撹褰�
+     */
+    List<VoOperate> getOperates(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗绗旀暟姹囨�诲拰浜ゆ槗閲戦姹囨��
+     * @param params
+     * @return
+     */
+    Map getStatisticSums(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇姹囨�昏褰曟暟
+     * @param params
+     * @return
+     */
+    Long getStatisticRecordCount(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇缁熻璁板綍
+     * @param params
+     * @return
+     */
+    List<VoStatistics> getStatistics(Map<?, ?> params);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeLossMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeLossMapper.java
index 790880d..dbf3e71 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeLossMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeLossMapper.java
@@ -10,8 +10,8 @@
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/19 15:08
- * @LastEditTime 2023/12/19 15:08
+ * @date 2023-12-25 13:52
+ * @LastEditTime 2023-12-25 13:52
  * @Description
  */
 
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeHistoryMapper.java
index c39569d..f365c2d 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeHistoryMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeHistoryMapper.java
@@ -6,8 +6,8 @@
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/19 10:35
- * @LastEditTime 2023/12/19 10:35
+ * @date 2023/12/23 8:47
+ * @LastEditTime 2023/12/23 8:47
  * @Description
  */
 
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeMapper.java
index 5a064bc..dce9429 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeMapper.java
@@ -11,8 +11,8 @@
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/19 10:18
- * @LastEditTime 2023/12/19 10:18
+ * @date 2023/12/23 8:47
+ * @LastEditTime 2023/12/23 8:47
  * @Description
  */
 
@@ -30,6 +30,11 @@
 
     int updateByPrimaryKey(SeRecharge record);
 
+    /**
+     * 鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栧厖鍊艰褰�
+     * @param params
+     * @return
+     */
     Long getRecordCount(Map<?, ?> params);
 
     /**
@@ -40,10 +45,11 @@
     List<VoRecharge> getRecharges(Map<?, ?> params);
 
     /**
-     * 鏍规嵁姘村崱缂栧彿鍒犻櫎鍏呭�艰褰�
-     * @param cardNum
+     * 鏍规嵁姘村崱ID鍒犻櫎鍏呭�艰褰�
+     * @param cardId
      * @return
      */
-    //Integer deleteByCardId(@Param("cardId") Long cardId);
-    Integer deleteByCardNum(@Param("cardNum") String cardNum);
+    //Integer deleteByCardNum(@Param("cardNum") String cardNum);
+    Integer deleteByCardId(@Param("cardId") Long cardId);
+
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeReversalMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeReversalMapper.java
index 98d2574..211b0c4 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeReversalMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeReversalMapper.java
@@ -10,11 +10,10 @@
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/20 16:52
- * @LastEditTime 2023/12/20 16:52
+ * @date 2023-12-25 15:13
+ * @LastEditTime 2023-12-25 15:13
  * @Description
  */
-
 @Mapper
 public interface SeReversalMapper extends BaseMapper<SeReversal> {
     int deleteByPrimaryKey(Long id);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeUnlockMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeUnlockMapper.java
index 2c0088b..c155198 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeUnlockMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeUnlockMapper.java
@@ -10,11 +10,10 @@
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/20 16:05
- * @LastEditTime 2023/12/20 16:05
+ * @date 2023-12-25 14:51
+ * @LastEditTime 2023-12-25 14:51
  * @Description
  */
-
 @Mapper
 public interface SeUnlockMapper extends BaseMapper<SeUnlock> {
     int deleteByPrimaryKey(Long id);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeActiveCard.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeActiveCard.java
index cbd8165..bd8befb 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeActiveCard.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeActiveCard.java
@@ -7,10 +7,7 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.dy.common.po.BaseEntity;
 import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.Max;
-import jakarta.validation.constraints.Min;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.Positive;
+import jakarta.validation.constraints.*;
 import lombok.*;
 import org.hibernate.validator.constraints.Length;
 
@@ -48,16 +45,30 @@
     /**
      * 姘村崱缂栧彿
      */
-    @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
-    private String cardnum;
+    //@Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    //@NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
+    //private String cardnum;
 
     /**
      * 鍐滄埛缂栧彿
      */
-    @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
-    private String clientnum;
+    //@Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    //@NotBlank(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
+    //private String clientnum;
+
+    /**
+     * 姘村崱ID;姘村崱涓婚敭
+     */
+    @Schema(description = "姘村崱ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @NotNull(message = "姘村崱ID涓嶈兘涓虹┖")
+    private Long cardid;
+
+    /**
+     * 鍐滄埛ID;鍐滄埛涓婚敭
+     */
+    @Schema(description = "鍐滄埛ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @NotNull(message = "鍐滄埛ID涓嶈兘涓虹┖")
+    private Long clientid;
 
     /**
      * 鍗$墖璐圭敤
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCancel.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCancel.java
index f96a0f0..34aa9d7 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCancel.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCancel.java
@@ -7,7 +7,7 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.dy.common.po.BaseEntity;
 import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Positive;
 import lombok.*;
 import org.hibernate.validator.constraints.Length;
@@ -47,15 +47,15 @@
      * 姘村崱缂栧彿
      */
     @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
-    private String cardnum;
+    @NotNull(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
+    private Long cardid;
 
     /**
      * 鍐滄埛缂栧彿
      */
     @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
-    private String clientnum;
+    @NotNull(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
+    private Long clientid;
 
     /**
      * 閫�娆鹃噾棰�
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeClient.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeClient.java
new file mode 100644
index 0000000..e61a205
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeClient.java
@@ -0,0 +1,192 @@
+package com.dy.pipIrrGlobal.pojoSe;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/21 19:08
+ * @LastEditTime 2023/12/21 19:08
+ * @Description
+ */
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.*;
+import com.dy.common.po.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.*;
+import lombok.*;
+import org.hibernate.validator.constraints.Length;
+
+import java.util.Date;
+
+/**
+ * 鍐滄埛琛�
+ */
+
+@TableName(value="se_client", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鍐滄埛瀹炰綋")
+public class SeClient implements BaseEntity {
+    public static final long serialVersionUID = 202311141539001L;
+
+    /**
+     * 涓婚敭
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    @Schema(description = "瀹炰綋id", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Long id;
+
+    /**
+     * 鍘縄D
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @Schema(description = "鎵�鍦ㄥ幙ID", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "鎵�鍦ㄥ幙涓嶈兘涓虹┖")
+    private Long countyid;
+
+    /**
+     * 闀嘔D
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @Schema(description = "鎵�鍦ㄩ晣ID", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "鎵�鍦ㄩ晣涓嶈兘涓虹┖") //涓嶈兘涓虹┖涔熶笉鑳戒负null
+    private Long townid;
+
+    /**
+     * 鏉慖D
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @Schema(description = "鎵�鍦ㄦ潙ID", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "鎵�鍦ㄦ潙涓嶈兘涓虹┖") //涓嶈兘涓虹┖涔熶笉鑳戒负null
+    private Long villageid;
+
+    /**
+     * 鐗囧尯ID
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @Schema(description = "鎵�鍦ㄧ墖鍖篒D", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "鎵�鍦ㄧ墖鍖轰笉鑳戒负绌�") //涓嶈兘涓虹┖涔熶笉鑳戒负null
+    private Long blockid;
+
+    /**
+     * 鍒嗘按鎴縄D
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @Schema(description = "鎵�鍦ㄥ垎姘存埧ID", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "鎵�鍦ㄥ垎姘存埧涓嶈兘涓虹┖") //涓嶈兘涓虹┖涔熶笉鑳戒负null
+    private Long divideid;
+
+    /**
+     * 鍐滄埛濮撳悕
+     */
+    @Schema(description = "鍐滄埛濮撳悕", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "鍐滄埛濮撳悕涓嶈兘涓虹┖") //涓嶈兘涓虹┖涔熶笉鑳戒负null
+    @Length(message = "鍐滄埛濮撳悕涓嶅ぇ浜巤max}瀛楋紝涓嶅皬浜巤min}瀛�", min = 1, max = 25)
+    private String name;
+
+    /**
+     * 铏氭嫙鍗″彿;10浣嶏紝浠�1000000000寮�濮�
+     */
+    @Schema(description = "铏氭嫙鍗″彿", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "铏氭嫙鍗″彿涓嶈兘涓虹┖")
+    private Long virtualid;
+
+    /**
+     * 鍐滄埛缂栧彿;6浣嶅尯鍒� + 4涓洪『搴忓彿
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED)
+    //@NotBlank(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
+    private String clientnum;
+
+    /**
+     * 鍖哄垝缂栫爜涓�;鐪佸尯鍒�+甯傚尯鍒�+鍘垮尯鍒�+闀囧尯鍒�+鏉戝尯鍒�
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @Schema(description = "鍖哄垝缂栫爜涓�", requiredMode = Schema.RequiredMode.REQUIRED)
+    //@NotNull(message = "鍖哄垝缂栫爜涓蹭笉鑳戒负绌�")
+    private Long districtnum;
+
+    /**
+     * 鍖哄垝鍚嶇О涓�;鍘垮悕+闀囧悕+鏉戝悕锛岀敤浜庡綊灞炲湴
+     */
+    @Schema(description = "鍖哄垝鍚嶇О涓�", requiredMode = Schema.RequiredMode.REQUIRED)
+    //@NotBlank(message = "鍖哄垝鍚嶇О涓�")
+    private String districttitle;
+
+    /**
+     * 鎵嬫満鍙�
+     */
+    @Schema(description = "鍐滄埛鎵嬫満鍙�", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "鍐滄埛鎵嬫満鍙蜂笉鑳戒负绌�") //涓嶈兘涓虹┖涔熶笉鑳戒负null
+    @Length(message = "鍐滄埛鎵嬫満鍙峰繀椤粄max}浣嶆暟鎹�", min = 11, max = 11)
+    private String phone;
+
+    /**
+     * 韬唤璇佸彿
+     */
+    @Schema(description = "鍐滄埛韬唤璇佸彿", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "鍐滄埛韬唤璇佸彿涓嶈兘涓虹┖") //涓嶈兘涓虹┖涔熶笉鑳戒负null
+    @Length(message = "鍐滄埛韬唤璇佸彿蹇呴』{max}浣嶆暟鎹�", min = 18, max = 18)
+    private String idcard;
+
+    /**
+     * 绉嶆闈㈢Н
+     */
+    @Schema(description = "鍐滄埛绉嶆闈㈢Н", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Double area;
+
+    /**
+     * 鐢ㄦ按绫诲瀷ID
+     */
+    @Schema(description = "鐢ㄦ按绫诲瀷ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Long typeid;
+
+    /**
+     * 琛楅亾鍙婇棬鐗屽彿
+     */
+    @Schema(description = "琛楅亾+闂ㄧ墝鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Length(message = "鍦板潃涓嶅ぇ浜巤max}瀛楋紝涓嶅皬浜巤min}瀛�", min = 1, max = 50)
+    private String address;
+
+    /**
+     * 澶囨敞淇℃伅
+     */
+    @Schema(description = "澶囨敞", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Length(message = "澶囨敞涓嶅ぇ浜巤max}瀛楋紝涓嶅皬浜巤min}瀛�", min = 1, max = 200)
+    private String remarks;
+
+    /**
+     * 鎿嶄綔浜虹紪鍙�
+     */
+    @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @NotNull(message = "鎿嶄綔浜虹紪鍙蜂笉鑳戒负绌�")
+    private Long operator;
+
+    /**
+     * 鎿嶄綔鏃堕棿
+     */
+    @Schema(description = "鎿嶄綔鏃堕棿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Date operatedt;
+
+    /**
+     * 绂佹鏍囧織;0-鏈锛�1-宸茬
+     */
+    @Schema(description = "鏄惁绂佺敤", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Max(message = "鏄惁绂佺敤鍙兘0鎴�1", value = 1)
+    @Min(message = "鏄惁绂佺敤鍙兘0鎴�1",value = 0)
+    @TableField(updateStrategy = FieldStrategy.NEVER)
+    private Byte disabled;
+
+    /**
+     * 閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎
+     */
+    @Schema(description = "鍒犻櫎鏍囪瘑锛宖orm琛ㄥ崟涓笉瀛樺湪锛屽彧鍦ㄦ煡璇㈡樉绀轰腑鏈夋晥", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @TableField(updateStrategy = FieldStrategy.NEVER)
+    private Byte deleted;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeClientCard.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeClientCard.java
index c3df9c6..6eaa503 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeClientCard.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeClientCard.java
@@ -59,17 +59,17 @@
     private String cardnum;
 
     /**
-     * 鍐滄埛缂栧彿
+     * 鍐滄埛ID
      */
-    @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
-    private String clientnum;
+    @Schema(description = "鍐滄埛ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @NotBlank(message = "鍐滄埛ID涓嶈兘涓虹┖")
+    private Long clientid;
 
     /**
      * 浣欓
      */
     @Schema(description = "浣欓", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    private Double money;
+    private Float money;
 
     /**
      * 鍗$墖鐘舵��;1-姝e父锛�2-宸叉敞閿�锛�3-宸叉寕澶�
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeLoss.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeLoss.java
index 7938329..2dd1125 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeLoss.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeLoss.java
@@ -7,7 +7,7 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.dy.common.po.BaseEntity;
 import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Positive;
 import lombok.*;
 import org.hibernate.validator.constraints.Length;
@@ -16,15 +16,14 @@
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/9 8:55
- * @LastEditTime 2023/12/19 15:14
+ * @date 2023-12-25 13:52
+ * @LastEditTime 2023-12-25 13:52
  * @Description
  */
 
 /**
  * 姘村崱鎸傚け琛�
  */
-
 @TableName(value="se_loss", autoResultMap = true)
 @Data
 @Builder
@@ -32,6 +31,7 @@
 @NoArgsConstructor
 @AllArgsConstructor
 @Schema(name = "鎸傚け瀹炰綋")
+
 public class SeLoss implements BaseEntity {
     public static final long serialVersionUID = 20231191728001L;
     /**
@@ -47,15 +47,15 @@
      * 姘村崱缂栧彿
      */
     @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
-    private String cardnum;
+    @NotNull(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
+    private Long cardid;
 
     /**
      * 鍐滄埛缂栧彿
      */
     @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
-    private String clientnum;
+    @NotNull(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
+    private Long clientid;
 
     /**
      * 浣欓
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeRecharge.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeRecharge.java
index d9fd9da..13551c8 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeRecharge.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeRecharge.java
@@ -7,7 +7,6 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.dy.common.po.BaseEntity;
 import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Positive;
 import lombok.*;
@@ -39,18 +38,22 @@
     private Long id;
 
     /**
-     * 姘村崱缂栧彿
+     * 姘村崱ID
      */
-    @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
-    private String cardnum;
+    @Schema(description = "姘村崱ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    //@NotBlank(message = "姘村崱ID涓嶈兘涓虹┖")
+    //private String cardnum;
+    @NotNull(message = "姘村崱ID涓嶈兘涓虹┖")
+    private Long cardid;
 
     /**
-     * 鍐滄埛缂栧彿
+     * 鍐滄埛ID
      */
-    @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
-    private String clientnum;
+    @Schema(description = "鍐滄埛ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    //@NotBlank(message = "鍐滄埛ID涓嶈兘涓虹┖")
+    //private String clientnum;
+    @NotNull(message = "鍐滄埛ID涓嶈兘涓虹┖")
+    private Long clientid;
 
     /**
      * 鍗$墖浣欓
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeRechargeHistory.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeRechargeHistory.java
index 2d222f9..a364faa 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeRechargeHistory.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeRechargeHistory.java
@@ -7,7 +7,6 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.dy.common.po.BaseEntity;
 import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Positive;
 import lombok.*;
@@ -45,18 +44,22 @@
     private Long id;
 
     /**
-     * 姘村崱缂栧彿
+     * 姘村崱ID
      */
-    @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
-    private String cardnum;
+    @Schema(description = "姘村崱ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    //@NotBlank(message = "姘村崱ID涓嶈兘涓虹┖")
+    //private String cardnum;
+    @NotNull(message = "姘村崱ID涓嶈兘涓虹┖")
+    private Long cardid;
 
     /**
-     * 鍐滄埛缂栧彿
+     * 鍐滄埛ID
      */
-    @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
-    private String clientnum;
+    @Schema(description = "鍐滄埛ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    //@NotBlank(message = "鍐滄埛ID涓嶈兘涓虹┖")
+    //private String clientnum;
+    @NotNull(message = "鍐滄埛ID涓嶈兘涓虹┖")
+    private Long clientid;
 
     /**
      * 鍗$墖浣欓
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeReversal.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeReversal.java
index 4c6d281..8a82772 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeReversal.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeReversal.java
@@ -7,7 +7,7 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.dy.common.po.BaseEntity;
 import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Positive;
 import lombok.*;
 import org.hibernate.validator.constraints.Length;
@@ -48,15 +48,15 @@
      * 姘村崱缂栧彿
      */
     @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
-    private String cardnum;
+    @NotNull(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
+    private Long cardid;
 
     /**
      * 鍐滄埛缂栧彿
      */
     @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
-    private String clientnum;
+    @NotNull(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
+    private Long clientid;
 
     /**
      * 鍗$墖浣欓
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeUnlock.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeUnlock.java
index c2428f1..0fd30e2 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeUnlock.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeUnlock.java
@@ -7,7 +7,7 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.dy.common.po.BaseEntity;
 import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Positive;
 import lombok.*;
 import org.hibernate.validator.constraints.Length;
@@ -48,15 +48,15 @@
      * 姘村崱缂栧彿
      */
     @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
-    private String cardnum;
+    @NotNull(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
+    private Long cardid;
 
     /**
      * 鍐滄埛缂栧彿
      */
     @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
-    private String clientnum;
+    @NotNull(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
+    private Long clientid;
 
     /**
      * 鍓╀綑閲戦
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/LocalJsonUtil.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/LocalJsonUtil.java
new file mode 100644
index 0000000..718aaa9
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/LocalJsonUtil.java
@@ -0,0 +1,28 @@
+package com.dy.pipIrrGlobal.util;
+
+import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.io.resource.ClassPathResource;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONUtil;
+import java.nio.charset.Charset;
+import java.util.List;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/21 11:03
+ * @LastEditTime 2023/12/21 11:03
+ * @Description
+ */
+public class LocalJsonUtil {
+    /**
+     * 浠庢寚瀹氳矾寰勮幏鍙朖SON骞惰浆鎹负List
+     * @param path json鏂囦欢璺緞
+     * @param elementType List鍏冪礌绫诲瀷
+     */
+    public static  <T> List<T> getListFromJson(String path, Class<T> elementType) {
+        ClassPathResource resource = new ClassPathResource(path);
+        String jsonStr = IoUtil.read(resource.getStream(), Charset.forName("UTF-8"));
+        JSONArray jsonArray = new JSONArray(jsonStr);
+        return JSONUtil.toList(jsonArray, elementType);
+    }
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoDivide.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoDivide.java
index 5973c5c..8ce97eb 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoDivide.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoDivide.java
@@ -1,5 +1,8 @@
 package com.dy.pipIrrGlobal.voPr;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.dy.common.po.BaseEntity;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -21,25 +24,38 @@
     private static final long serialVersionUID = 1L;
 
     @Schema(title = "ID")
+    @ExcelProperty("ID")
+    @ColumnWidth(10)
     private Long id;
 
     @Schema(title = "鍒嗘按鎴垮悕绉�")
+    @ExcelProperty("鍒嗘按鎴垮悕绉�")
+    @ColumnWidth(15)
     private String divideName;
 
     @Schema(title = "鎵�灞炵墖鍖�")
+    @ExcelProperty("鎵�灞炵墖鍖�")
+    @ColumnWidth(15)
     private String blockName;
 
     @Schema(title = "璐熻矗浜�")
+    @ExcelProperty("璐熻矗浜�")
+    @ColumnWidth(10)
     private String header;
 
     @Schema(title = "鑱旂郴鐢佃瘽")
+    @ExcelProperty("鑱旂郴鐢佃瘽")
+    @ColumnWidth(15)
     private String phone;
 
     @Schema(title = "褰掑睘鍦�")
+    @ExcelProperty("褰掑睘鍦�")
+    @ColumnWidth(25)
     private String address;
 
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @Schema(title = "鎿嶄綔鏃堕棿")
+    @ExcelIgnore
     private Date operateDt;
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoCardInfo.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoCardInfo.java
new file mode 100644
index 0000000..509eb17
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoCardInfo.java
@@ -0,0 +1,31 @@
+package com.dy.pipIrrGlobal.voSe;
+
+import com.dy.common.po.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023-12-27 19:22
+ * @LastEditTime 2023-12-27 19:22
+ * @Description
+ */
+
+@Data
+@Schema(title = "IC鍗¤鍥惧璞�")
+public class VoCardInfo implements BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(title = "姘村崱缂栧彿")
+    private Long cardNum;
+
+    @Schema(title = "鍗$墖绫诲瀷")
+    private String cardType;
+
+    @Schema(title = "浣欓")
+    private Float money;
+
+    @Schema(title = "姘村崱鐘舵��")
+    private String state;
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoClient.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoClient.java
new file mode 100644
index 0000000..76fe8c1
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoClient.java
@@ -0,0 +1,87 @@
+package com.dy.pipIrrGlobal.voSe;
+
+import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/22 11:43
+ * @LastEditTime 2023/12/22 11:43
+ * @Description
+ */
+
+@Data
+@Schema(title = "鍐滄埛瑙嗗浘瀵硅薄")
+public class VoClient implements BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(title = "ID")
+    private Long id;
+
+    @Schema(title = "鍘縄D")
+    private String countyId;
+    @Schema(title = "鍘垮悕绉�")
+    private String countryName;
+
+    @Schema(title = "闀嘔D")
+    private String townId;
+    @Schema(title = "闀囧悕绉�")
+    private String townName;
+
+    @Schema(title = "鏉慖D")
+    private String villageId;
+    @Schema(title = "鏉戝悕绉�")
+    private String villageName;
+
+    @Schema(title = "鐗囧尯ID")
+    private String blockId;
+    @Schema(title = "鐗囧尯鍚嶇О")
+    private String bolckName;
+
+    @Schema(title = "鍒嗘按鎴縄D")
+    private String divideId;
+    @Schema(title = "鍒嗘按鎴垮悕绉�")
+    private String divideName;
+
+    @Schema(title = "鐢ㄦ埛绫诲瀷ID")
+    private String waterTypeId;
+    @Schema(title = "鐢ㄦ埛绫诲瀷鍚嶇О")
+    private String waterTypeName;
+
+    @Schema(title = "鍐滄埛ID")
+    private String clientId;
+
+    @Schema(title = "鍐滄埛濮撳悕")
+    private String name;
+
+    @Schema(title = "鍐滄埛缂栧彿")
+    private String clientNum;
+
+    @Schema(title = "鎵嬫満鍙�")
+    private String phone;
+
+    @Schema(title = "韬唤璇佸彿")
+    private String idcard;
+
+    @Schema(title = "绉嶆闈㈢Н")
+    private Double area;
+
+    @Schema(title = "鍗$墖鏁伴噺")
+    private Integer cardCount;
+
+    @Schema(title = "鍦板潃")
+    private String address;
+
+    @Schema(title = "澶囨敞")
+    private String remarks;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @Schema(title = "娉ㄥ唽鏃堕棿")
+    private Date operateDt;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoOperate.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoOperate.java
new file mode 100644
index 0000000..711ea95
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoOperate.java
@@ -0,0 +1,66 @@
+package com.dy.pipIrrGlobal.voSe;
+
+import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023-12-26 20:44
+ * @LastEditTime 2023-12-26 20:44
+ * @Description
+ */
+
+@Data
+@Schema(title = "鎿嶄綔璁板綍瑙嗗浘瀵硅薄")
+public class VoOperate implements BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(title = "鏉慖D")
+    private Long villageId;
+
+    @Schema(title = "鍖哄垝鍚嶇О涓�")
+    private String districtTitle;
+
+    @Schema(title = "鍐滄埛缂栧彿")
+    private String clientNum;
+
+    @Schema(title = "鍐滄埛濮撳悕")
+    private String name;
+
+    @Schema(title = "姘村崱缂栧彿")
+    private Long cardNum;
+
+    @Schema(title = "韬唤璇佸彿")
+    private String idCard;
+
+    @Schema(title = "鎵嬫満鍙�")
+    private String phone;
+
+    @Schema(title = "鍏呭�奸噾棰�")
+    private Float money;
+
+    @Schema(title = "璐崱閲戦")
+    private Integer cardCost;
+
+    @Schema(title = "鏀粯鏂瑰紡缂栧彿")
+    private Long paymentId;
+
+    @Schema(title = "鏀粯鏂瑰紡鍚嶇О")
+    private String paymentMethod;
+
+    @Schema(title = "涓氬姟绫诲瀷")
+    private String operateType;
+
+    @Schema(title = "浜ゆ槗鏃堕棿")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date operateDt;
+
+    @Schema(title = "鎿嶄綔鍛�")
+    private String operatorName;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoStatistics.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoStatistics.java
new file mode 100644
index 0000000..a003b59
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoStatistics.java
@@ -0,0 +1,42 @@
+package com.dy.pipIrrGlobal.voSe;
+
+import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023-12-27 15:01
+ * @LastEditTime 2023-12-27 15:01
+ * @Description
+ */
+
+@Data
+@Schema(title = "浜ゆ槗姹囨�昏鍥惧璞�")
+public class VoStatistics implements BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(title = "鏉戝簞ID")
+    private Long villageId;
+
+    @Schema(title = "鏉戝簞")
+    private String districtTitle;
+
+    @Schema(title = "涓氬姟绫诲瀷")
+    private String operateType;
+
+    @Schema(title = "浜ゆ槗鏃ユ湡")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date operateDt;
+
+    @Schema(title = "浜ゆ槗绗旀暟")
+    private Integer count;
+
+    @Schema(title = "浜ゆ槗閲戦")
+    private Float money;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
index 7e13709..2d7dd18 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -110,4 +110,8 @@
     project:
         webPort: 8085
         actutorPort: 9085
-        idSuffix: 7
\ No newline at end of file
+        idSuffix: 7
+
+projectCode:
+    ym: 100
+    pj: 101
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaDistrictMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaDistrictMapper.xml
index 4234af5..c011351 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaDistrictMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaDistrictMapper.xml
@@ -139,4 +139,46 @@
     update ba_district set deleted = 1
     where id = #{id,jdbcType=BIGINT}
   </delete>
+
+  <!--鏍规嵁鏉戠紪鍙疯幏鍙�5绾у尯鍒掍俊鎭�-->
+  <select id="getDistrictsByVillageId" resultType="java.util.Map">
+    SELECT
+        pro.id AS provinceId,
+        pro.num AS provinceNum,
+        pro.name AS provinceName,
+        cit.id AS cityId,
+        cit.num AS cityNum,
+        cit.name AS cityName,
+        con.id AS countryId,
+        con.num AS countyNum,
+        con.name AS countryName,
+        tow.id AS townId,
+        tow.num AS townNum,
+        tow.name AS townName,
+        vil.id AS villageId,
+        vil.num AS villageNum,
+        vil.name AS villageName
+    FROM ba_district vil
+        INNER JOIN ba_district tow ON vil.supperId = tow.id
+        INNER JOIN ba_district con ON tow.supperId = con.id
+        INNER JOIN ba_district cit ON con.supperId = cit.id
+        INNER JOIN ba_district pro ON cit.supperId = pro.id
+    WHERE vil.id = ${villageId}
+  </select>
+
+    <!--鏍规嵁绾у埆鑾峰彇琛屾斂鍖哄垝鍒楄〃-->
+    <select id="getDistrictgsByLevel" resultType="java.util.Map">
+        SELECT
+            CAST(id AS char) AS id,
+            name
+        FROM ba_district WHERE `level` = ${level}
+    </select>
+
+    <!--鏍规嵁鐖禝D鑾峰彇琛屾斂鍖哄垝鍒楄〃-->
+    <select id="getDistrictsBySupperId" resultType="java.util.Map">
+        SELECT
+            CAST(id AS char) AS id,
+            name
+        FROM ba_district WHERE supperId = ${supperId}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrDivideMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrDivideMapper.xml
index d9b4ac4..d3d19f3 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrDivideMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrDivideMapper.xml
@@ -227,8 +227,9 @@
       lat = #{lat,jdbcType=DOUBLE},
       remarks = #{remarks,jdbcType=VARCHAR},
       `operator` = #{operator,jdbcType=BIGINT},
-      operateDt = #{operatedt,jdbcType=TIMESTAMP},
-      deleted = #{deleted,jdbcType=TINYINT}
+      operateDt = #{operatedt,jdbcType=TIMESTAMP}
+<!--    ,-->
+<!--      deleted = #{deleted,jdbcType=TINYINT}-->
     where id = #{id,jdbcType=BIGINT}
   </update>
 
@@ -243,6 +244,7 @@
         INNER JOIN ba_district village ON divi.villageid = village.id
         , (SELECT @i:=0) AS itable
     <where>
+      AND divi. deleted = 0
       <if test = "divideName != null and divideName !=''">
         AND divi.name LIKE CONCAT('%',#{divideName},'%')
       </if>
@@ -270,6 +272,7 @@
         INNER JOIN ba_district village ON divi.villageid = village.id
         , (SELECT @i:=0) AS itable
     <where>
+      AND divi. deleted = 0
       <if test = "divideName != null and divideName !=''">
         AND divi.name LIKE CONCAT('%',#{divideName},'%')
       </if>
@@ -284,4 +287,19 @@
     </if>
   </select>
 
+  <!--鏍规嵁鍒嗘按鎴縄D閫昏緫鍒犻櫎鍒嗘按鎴�-->
+  <update id="deleteDivideById" parameterType="java.lang.Long">
+    update pr_divide set deleted = 1
+    <where>
+      <if test = "id != null and id > 0">
+        AND id = ${id}
+      </if>
+    </where>
+  </update>
+
+  <!--鏍规嵁鍒嗘按鎴跨紪鍙疯幏鍙栨墍灞炵墖鍖虹紪鍙�-->
+  <select id="getBlockIdById" resultType="java.lang.Long">
+    SELECT blockId FROM pr_divide WHERE id = ${divideId}}
+  </select>
+
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeActiveCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeActiveCardMapper.xml
index 941c01e..aaed05f 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeActiveCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeActiveCardMapper.xml
@@ -5,8 +5,8 @@
     <!--@mbg.generated-->
     <!--@Table se_active_card-->
     <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="cardNum" jdbcType="VARCHAR" property="cardnum" />
-    <result column="clientNum" jdbcType="VARCHAR" property="clientnum" />
+    <result column="cardId" jdbcType="BIGINT" property="cardid" />
+    <result column="clientId" jdbcType="BIGINT" property="clientid" />
     <result column="cardCost" jdbcType="INTEGER" property="cardcost" />
     <result column="paymentId" jdbcType="BIGINT" property="paymentid" />
     <result column="reissueAmount" jdbcType="DOUBLE" property="reissueamount" />
@@ -17,8 +17,8 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, cardNum, clientNum, cardCost, paymentId, reissueAmount, operateType, remarks, 
-    `operator`, operateDt
+    id, cardId, clientId, cardCost, paymentId, reissueAmount, operateType, remarks, `operator`, 
+    operateDt
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -33,30 +33,27 @@
     where id = #{id,jdbcType=BIGINT}
   </delete>
 
-  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeActiveCard">
+  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeActiveCard">
     <!--@mbg.generated-->
-    insert into se_active_card (id, cardNum, clientNum, cardCost, paymentId, reissueAmount, operateType, remarks, `operator`, operateDt)
-    values (#{id,jdbcType=BIGINT},
-    #{cardnum,jdbcType=VARCHAR},
-    #{clientnum,jdbcType=VARCHAR},
-    #{cardcost,jdbcType=INTEGER},
-    #{paymentid,jdbcType=BIGINT},
-    #{reissueamount,jdbcType=DOUBLE},
-    #{operatetype,jdbcType=TINYINT},
-    #{remarks,jdbcType=VARCHAR},
-    #{operator,jdbcType=BIGINT},
-    #{operatedt,jdbcType=TIMESTAMP})
+    insert into se_active_card (id, cardId, clientId, cardCost,
+      paymentId, reissueAmount, operateType, 
+      remarks, `operator`, operateDt
+      )
+    values (#{id,jdbcType=BIGINT}, #{cardid,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, #{cardcost,jdbcType=INTEGER},
+      #{paymentid,jdbcType=BIGINT}, #{reissueamount,jdbcType=DOUBLE}, #{operatetype,jdbcType=TINYINT}, 
+      #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP}
+      )
   </insert>
 
   <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeActiveCard" useGeneratedKeys="true">
     <!--@mbg.generated-->
     insert into se_active_card
     <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="cardnum != null">
-        cardNum,
+      <if test="cardid != null">
+        cardId,
       </if>
-      <if test="clientnum != null">
-        clientNum,
+      <if test="clientid != null">
+        clientId,
       </if>
       <if test="cardcost != null">
         cardCost,
@@ -81,11 +78,11 @@
       </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="cardnum != null">
-        #{cardnum,jdbcType=VARCHAR},
+      <if test="cardid != null">
+        #{cardid,jdbcType=BIGINT},
       </if>
-      <if test="clientnum != null">
-        #{clientnum,jdbcType=VARCHAR},
+      <if test="clientid != null">
+        #{clientid,jdbcType=BIGINT},
       </if>
       <if test="cardcost != null">
         #{cardcost,jdbcType=INTEGER},
@@ -114,11 +111,11 @@
     <!--@mbg.generated-->
     update se_active_card
     <set>
-      <if test="cardnum != null">
-        cardNum = #{cardnum,jdbcType=VARCHAR},
+      <if test="cardid != null">
+        cardId = #{cardid,jdbcType=BIGINT},
       </if>
-      <if test="clientnum != null">
-        clientNum = #{clientnum,jdbcType=VARCHAR},
+      <if test="clientid != null">
+        clientId = #{clientid,jdbcType=BIGINT},
       </if>
       <if test="cardcost != null">
         cardCost = #{cardcost,jdbcType=INTEGER},
@@ -147,8 +144,8 @@
   <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeActiveCard">
     <!--@mbg.generated-->
     update se_active_card
-    set cardNum = #{cardnum,jdbcType=VARCHAR},
-      clientNum = #{clientnum,jdbcType=VARCHAR},
+    set cardId = #{cardid,jdbcType=BIGINT},
+      clientId = #{clientid,jdbcType=BIGINT},
       cardCost = #{cardcost,jdbcType=INTEGER},
       paymentId = #{paymentid,jdbcType=BIGINT},
       reissueAmount = #{reissueamount,jdbcType=DOUBLE},
@@ -164,9 +161,9 @@
     SELECT
         COUNT(*) AS recordCount
     FROM se_active_card act
-      INNER JOIN ba_client cli ON act.clientNum = cli.num
-      INNER JOIN se_client_card card ON act.cardNum = card.cardNum
-      , (SELECT @i:=0) AS itable
+    INNER JOIN se_client cli ON act.clientId = cli.id
+    INNER JOIN se_client_card card ON act.cardId = card.id
+    , (SELECT @i:=0) AS itable
     <where>
       <if test = "operateType != null and operateType > 0">
         AND act.operateType = ${operateType}
@@ -195,13 +192,13 @@
     SELECT
         (@i:=@i+1) AS id,
         cli.`name` AS clientName,
-        cli.num AS clientNum,
+        cli.clientNum,
         card.cardNum,
         card.state,
         (CASE
-          WHEN card.state = 1 THEN "姝e父"
-          WHEN card.state = 2 THEN "宸叉敞閿�"
-          ELSE "宸叉寕澶�"
+            WHEN card.state = 1 THEN "姝e父"
+            WHEN card.state = 2 THEN "宸叉敞閿�"
+            ELSE "宸叉寕澶�"
         END) AS stateName,
         act.reissueAmount,
         act.cardCost,
@@ -209,8 +206,8 @@
         (SELECT `name` FROM ba_user WHERE id =  act.operator) AS operator,
         act.operateDt
     FROM se_active_card act
-        INNER JOIN ba_client cli ON act.clientNum = cli.num
-        INNER JOIN se_client_card card ON act.cardNum = card.cardNum
+        INNER JOIN se_client cli ON act.clientId = cli.id
+        INNER JOIN se_client_card card ON act.cardId = card.id
         , (SELECT @i:=0) AS itable
     <where>
       <if test = "operateType != null and operateType > 0">
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCancelMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCancelMapper.xml
index 2bbefd7..2644c82 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCancelMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCancelMapper.xml
@@ -5,8 +5,8 @@
     <!--@mbg.generated-->
     <!--@Table se_cancel-->
     <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="cardNum" jdbcType="VARCHAR" property="cardnum" />
-    <result column="clientNum" jdbcType="VARCHAR" property="clientnum" />
+    <result column="cardId" jdbcType="BIGINT" property="cardid" />
+    <result column="clientId" jdbcType="BIGINT" property="clientid" />
     <result column="refund" jdbcType="FLOAT" property="refund" />
     <result column="refundType" jdbcType="TINYINT" property="refundtype" />
     <result column="remarks" jdbcType="VARCHAR" property="remarks" />
@@ -15,7 +15,7 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, cardNum, clientNum, refund, refundType, remarks, `operator`, operateDt
+    id, cardId, clientId, refund, refundType, remarks, `operator`, operateDt
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -32,10 +32,10 @@
 
   <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeCancel">
     <!--@mbg.generated-->
-    insert into se_cancel (id, cardNum, clientNum, refund,
+    insert into se_cancel (id, cardId, clientId, refund,
       refundType, remarks, `operator`, 
       operateDt)
-    values (#{id,jdbcType=BIGINT}, #{cardnum,jdbcType=VARCHAR}, #{clientnum,jdbcType=VARCHAR}, #{refund,jdbcType=FLOAT},
+    values (#{id,jdbcType=BIGINT}, #{cardid,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, #{refund,jdbcType=FLOAT},
       #{refundtype,jdbcType=TINYINT}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, 
       #{operatedt,jdbcType=TIMESTAMP})
   </insert>
@@ -44,11 +44,11 @@
     <!--@mbg.generated-->
     insert into se_cancel
     <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="cardnum != null">
-        cardNum,
+      <if test="cardid != null">
+        cardId,
       </if>
-      <if test="clientnum != null">
-        clientNum,
+      <if test="clientid != null">
+        clientId,
       </if>
       <if test="refund != null">
         refund,
@@ -67,11 +67,11 @@
       </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="cardnum != null">
-        #{cardnum,jdbcType=VARCHAR},
+      <if test="cardid != null">
+        #{cardid,jdbcType=BIGINT},
       </if>
-      <if test="clientnum != null">
-        #{clientnum,jdbcType=VARCHAR},
+      <if test="clientid != null">
+        #{clientid,jdbcType=BIGINT},
       </if>
       <if test="refund != null">
         #{refund,jdbcType=FLOAT},
@@ -94,11 +94,11 @@
     <!--@mbg.generated-->
     update se_cancel
     <set>
-      <if test="cardnum != null">
-        cardNum = #{cardnum,jdbcType=VARCHAR},
+      <if test="cardid != null">
+        cardId = #{cardid,jdbcType=BIGINT},
       </if>
-      <if test="clientnum != null">
-        clientNum = #{clientnum,jdbcType=VARCHAR},
+      <if test="clientid != null">
+        clientId = #{clientid,jdbcType=BIGINT},
       </if>
       <if test="refund != null">
         refund = #{refund,jdbcType=FLOAT},
@@ -121,8 +121,8 @@
   <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeCancel">
     <!--@mbg.generated-->
     update se_cancel
-    set cardNum = #{cardnum,jdbcType=VARCHAR},
-      clientNum = #{clientnum,jdbcType=VARCHAR},
+    set cardId = #{cardid,jdbcType=BIGINT},
+      clientId = #{clientid,jdbcType=BIGINT},
       refund = #{refund,jdbcType=FLOAT},
       refundType = #{refundtype,jdbcType=TINYINT},
       remarks = #{remarks,jdbcType=VARCHAR},
@@ -136,9 +136,9 @@
     SELECT
         COUNT(*) AS recordCount
     FROM se_cancel can
-        INNER JOIN se_client_card card ON can.cardNum = card.cardNum
-        INNER JOIN ba_client cli ON can.clientNum = cli.num
-        , (SELECT @i:=0) AS itable
+      INNER JOIN se_client_card card ON can.cardId = card.id
+      INNER JOIN se_client cli ON can.clientId = cli.id
+      , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
@@ -159,18 +159,18 @@
     SELECT
         (@i:=@i+1) AS id,
         cli.`name` AS clientName,
-        cli.num AS clientNum,
+        cli.clientNum,
         card.cardNum,
         can.refund,
         (CASE
-            WHEN can.refundType = 1 THEN "鐜伴噾"
+        WHEN can.refundType = 1 THEN "鐜伴噾"
         END) AS refundTypeName,
         can.refundType,
         (SELECT `name` FROM ba_user WHERE id =  can.operator) AS operator,
         can.operateDt
     FROM se_cancel can
-        INNER JOIN se_client_card card ON can.cardNum = card.cardNum
-        INNER JOIN ba_client cli ON can.clientNum = cli.num
+        INNER JOIN se_client_card card ON can.cardId = card.id
+        INNER JOIN se_client cli ON can.clientId = cli.id
         , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
index 0b3cbec..6add79a 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -6,8 +6,8 @@
     <!--@Table se_client_card-->
     <id column="id" jdbcType="BIGINT" property="id" />
     <result column="cardAddr" jdbcType="VARCHAR" property="cardaddr" />
-    <result column="cardNum" jdbcType="VARCHAR" property="cardnum" />
-    <result column="clientNum" jdbcType="VARCHAR" property="clientnum" />
+    <result column="cardNum" jdbcType="BIGINT" property="cardnum" />
+    <result column="clientId" jdbcType="BIGINT" property="clientid" />
     <result column="money" jdbcType="FLOAT" property="money" />
     <result column="state" jdbcType="TINYINT" property="state" />
     <result column="createDt" jdbcType="TIMESTAMP" property="createdt" />
@@ -23,7 +23,7 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, cardAddr, cardNum, clientNum, money, `state`, createDt, replaceDt, rechargeDt, 
+    id, cardAddr, cardNum, clientId, money, `state`, createDt, replaceDt, rechargeDt, 
     lossDtDt, cancelDt, unlockDt, reversalDt, consumeDt, lastOper, remarks
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
@@ -51,11 +51,18 @@
 
   <!--鏍规嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿強鍐滄埛缂栧彿-->
   <select id="getCardIdAndClientNum" resultType="java.util.Map">
-    SELECT id AS cardId, clientNum FROM se_client_card WHERE cardNum = #{cardNum}
+<!--    SELECT id AS cardId, clientNum FROM se_client_card WHERE cardNum = #{cardNum}-->
+    SELECT
+        card.id AS cardId,
+        cli.clientNum,
+        cli.id AS clientId
+    FROM se_client_card card
+        INNER JOIN se_client cli ON card.clientId = cli.id
+    WHERE card.cardNum = #{cardNum}
   </select>
 
 
-  <!--鏍规嵁琛屾斂鍖哄垝涓叉ā鍧楁煡璇㈡按鍗$紪鍙�-->
+  <!--鏍规嵁琛屾斂鍖哄垝涓叉ā绯婃煡璇㈡按鍗$紪鍙�-->
   <select id="getCardNumOfMax"  resultType="java.lang.String">
     SELECT cardNum
     FROM se_client_card
@@ -64,23 +71,22 @@
     LIMIT 0,1
   </select>
 
-  <!--娣诲姞姘村崱璁板綍-->
-  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard" useGeneratedKeys="true">
+  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard">
     <!--@mbg.generated-->
-    insert into se_client_card (id, cardAddr, cardNum, clientNum,
-      money, `state`, createDt,
-      replaceDt, rechargeDt, lossDtDt,
-      cancelDt, unlockDt, reversalDt,
+    insert into se_client_card (id, cardAddr, cardNum, clientId,
+      money, `state`, createDt, 
+      replaceDt, rechargeDt, lossDtDt, 
+      cancelDt, unlockDt, reversalDt, 
       consumeDt, lastOper, remarks
       )
-    values (#{id,jdbcType=BIGINT}, #{cardaddr,jdbcType=VARCHAR}, #{cardnum,jdbcType=VARCHAR}, #{clientnum,jdbcType=VARCHAR},
-      #{money,jdbcType=FLOAT}, #{state,jdbcType=TINYINT}, #{createdt,jdbcType=TIMESTAMP},
-      #{replacedt,jdbcType=TIMESTAMP}, #{rechargedt,jdbcType=TIMESTAMP}, #{lossdtdt,jdbcType=TIMESTAMP},
-      #{canceldt,jdbcType=TIMESTAMP}, #{unlockdt,jdbcType=TIMESTAMP}, #{reversaldt,jdbcType=TIMESTAMP},
+    values (#{id,jdbcType=BIGINT}, #{cardaddr,jdbcType=VARCHAR}, #{cardnum,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT},
+      #{money,jdbcType=FLOAT}, #{state,jdbcType=TINYINT}, #{createdt,jdbcType=TIMESTAMP}, 
+      #{replacedt,jdbcType=TIMESTAMP}, #{rechargedt,jdbcType=TIMESTAMP}, #{lossdtdt,jdbcType=TIMESTAMP}, 
+      #{canceldt,jdbcType=TIMESTAMP}, #{unlockdt,jdbcType=TIMESTAMP}, #{reversaldt,jdbcType=TIMESTAMP}, 
       #{consumedt,jdbcType=TIMESTAMP}, #{lastoper,jdbcType=TINYINT}, #{remarks,jdbcType=VARCHAR}
       )
-  </insert>
 
+  </insert>
   <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard" useGeneratedKeys="true">
     <!--@mbg.generated-->
     insert into se_client_card
@@ -91,8 +97,8 @@
       <if test="cardnum != null">
         cardNum,
       </if>
-      <if test="clientnum != null">
-        clientNum,
+      <if test="clientid != null">
+        clientId,
       </if>
       <if test="money != null">
         money,
@@ -136,10 +142,10 @@
         #{cardaddr,jdbcType=VARCHAR},
       </if>
       <if test="cardnum != null">
-        #{cardnum,jdbcType=VARCHAR},
+        #{cardnum,jdbcType=BIGINT},
       </if>
-      <if test="clientnum != null">
-        #{clientnum,jdbcType=VARCHAR},
+      <if test="clientid != null">
+        #{clientid,jdbcType=BIGINT},
       </if>
       <if test="money != null">
         #{money,jdbcType=FLOAT},
@@ -187,10 +193,10 @@
         cardAddr = #{cardaddr,jdbcType=VARCHAR},
       </if>
       <if test="cardnum != null">
-        cardNum = #{cardnum,jdbcType=VARCHAR},
+        cardNum = #{cardnum,jdbcType=BIGINT},
       </if>
-      <if test="clientnum != null">
-        clientNum = #{clientnum,jdbcType=VARCHAR},
+      <if test="clientid != null">
+        clientId = #{clientid,jdbcType=BIGINT},
       </if>
       <if test="money != null">
         money = #{money,jdbcType=FLOAT},
@@ -235,8 +241,8 @@
     <!--@mbg.generated-->
     update se_client_card
     set cardAddr = #{cardaddr,jdbcType=VARCHAR},
-      cardNum = #{cardnum,jdbcType=VARCHAR},
-      clientNum = #{clientnum,jdbcType=VARCHAR},
+      cardNum = #{cardnum,jdbcType=BIGINT},
+      clientId = #{clientid,jdbcType=BIGINT},
       money = #{money,jdbcType=FLOAT},
       `state` = #{state,jdbcType=TINYINT},
       createDt = #{createdt,jdbcType=TIMESTAMP},
@@ -251,4 +257,38 @@
       remarks = #{remarks,jdbcType=VARCHAR}
     where id = #{id,jdbcType=BIGINT}
   </update>
+
+  <!--鏍规嵁鍐滄埛涓婚敭鑾峰彇姘村崱鍒楄〃-->
+  <select id="getCardInfoByClientId" resultType="com.dy.pipIrrGlobal.voSe.VoCardInfo">
+    SELECT
+        cardNum,
+        '鐢ㄦ埛鍗�' AS cardType,
+        money,
+        (CASE
+            WHEN state = 1 THEN "姝e父"
+            WHEN state = 2 THEN "宸叉敞閿�"
+            ELSE "宸叉寕澶�"
+        END) AS state
+    FROM se_client_card
+    WHERE clientId = ${clientId}
+  </select>
+
+  <!--鏍规嵁姘村崱缂栧彿鑾峰彇鎿嶄綔璁板綍鍒楄〃-->
+  <select id="getOperateRecordsByCardNum" resultType="java.util.HashMap">
+    SELECT * FROM v_operate WHERE cardNum = ${cardNum}
+  </select>
+
+  <!--鏍规嵁姘村崱缂栧彿鑾峰彇浣欓-->
+  <select id="getMoneyByCardNum" resultType="java.lang.Float">
+    SELECT money FROM se_client_card WHERE cardNum = ${cardNum}
+  </select>
+
+  <!--鏍规嵁姘村崱缂栧彿鑾峰彇鍏呭�兼�婚-->
+  <select id="sumRechargeByCardNum" resultType="java.lang.Float">
+    SELECT
+      SUM(his.amount) AS amount
+    FROM se_recharge_history his
+        INNER JOIN se_client_card card ON his.cardId = card.id
+    WHERE card.cardNum = ${cardNum}
+  </select>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml
new file mode 100644
index 0000000..c41166f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml
@@ -0,0 +1,600 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoSe.SeClientMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSe.SeClient">
+    <!--@mbg.generated-->
+    <!--@Table se_client-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="countyId" jdbcType="BIGINT" property="countyid" />
+    <result column="townId" jdbcType="BIGINT" property="townid" />
+    <result column="villageId" jdbcType="BIGINT" property="villageid" />
+    <result column="blockId" jdbcType="BIGINT" property="blockid" />
+    <result column="divideId" jdbcType="BIGINT" property="divideid" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+    <result column="virtualId" jdbcType="BIGINT" property="virtualid" />
+    <result column="clientNum" jdbcType="VARCHAR" property="clientnum" />
+    <result column="districtNum" jdbcType="BIGINT" property="districtnum" />
+    <result column="districtTitle" jdbcType="VARCHAR" property="districttitle" />
+    <result column="phone" jdbcType="VARCHAR" property="phone" />
+    <result column="idCard" jdbcType="VARCHAR" property="idcard" />
+    <result column="area" jdbcType="DOUBLE" property="area" />
+    <result column="typeId" jdbcType="BIGINT" property="typeid" />
+    <result column="address" jdbcType="VARCHAR" property="address" />
+    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+    <result column="operator" jdbcType="BIGINT" property="operator" />
+    <result column="operateDt" jdbcType="TIMESTAMP" property="operatedt" />
+    <result column="disabled" jdbcType="TINYINT" property="disabled" />
+    <result column="deleted" jdbcType="TINYINT" property="deleted" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, countyId, townId, villageId, blockId, divideId, `name`, virtualId, clientNum, 
+    districtNum, districtTitle, phone, idCard, area, typeId, address, remarks, `operator`, 
+    operateDt, disabled, deleted
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from se_client
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from se_client
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClient">
+    <!--@mbg.generated-->
+    insert into se_client (id, countyId, townId, 
+      villageId, blockId, divideId, 
+      `name`, virtualId, clientNum, 
+      districtNum, districtTitle, phone, 
+      idCard, area, typeId, 
+      address, remarks, `operator`, 
+      operateDt, disabled, deleted
+      )
+    values (#{id,jdbcType=BIGINT}, #{countyid,jdbcType=BIGINT}, #{townid,jdbcType=BIGINT}, 
+      #{villageid,jdbcType=BIGINT}, #{blockid,jdbcType=BIGINT}, #{divideid,jdbcType=BIGINT}, 
+      #{name,jdbcType=VARCHAR}, #{virtualid,jdbcType=BIGINT}, #{clientnum,jdbcType=VARCHAR}, 
+      #{districtnum,jdbcType=BIGINT}, #{districttitle,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, 
+      #{idcard,jdbcType=VARCHAR}, #{area,jdbcType=DOUBLE}, #{typeid,jdbcType=BIGINT}, 
+      #{address,jdbcType=VARCHAR}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, 
+      #{operatedt,jdbcType=TIMESTAMP}, #{disabled,jdbcType=TINYINT}, #{deleted,jdbcType=TINYINT}
+      )
+  </insert>
+
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClient">
+    <!--@mbg.generated-->
+    insert into se_client
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="countyid != null">
+        countyId,
+      </if>
+      <if test="townid != null">
+        townId,
+      </if>
+      <if test="villageid != null">
+        villageId,
+      </if>
+      <if test="blockid != null">
+        blockId,
+      </if>
+      <if test="divideid != null">
+        divideId,
+      </if>
+      <if test="name != null">
+        `name`,
+      </if>
+      <if test="virtualid != null">
+        virtualId,
+      </if>
+      <if test="clientnum != null">
+        clientNum,
+      </if>
+      <if test="districtnum != null">
+        districtNum,
+      </if>
+      <if test="districttitle != null">
+        districtTitle,
+      </if>
+      <if test="phone != null">
+        phone,
+      </if>
+      <if test="idcard != null">
+        idCard,
+      </if>
+      <if test="area != null">
+        area,
+      </if>
+      <if test="typeid != null">
+        typeId,
+      </if>
+      <if test="address != null">
+        address,
+      </if>
+      <if test="remarks != null">
+        remarks,
+      </if>
+      <if test="operator != null">
+        `operator`,
+      </if>
+      <if test="operatedt != null">
+        operateDt,
+      </if>
+      <if test="disabled != null">
+        disabled,
+      </if>
+      <if test="deleted != null">
+        deleted,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="countyid != null">
+        #{countyid,jdbcType=BIGINT},
+      </if>
+      <if test="townid != null">
+        #{townid,jdbcType=BIGINT},
+      </if>
+      <if test="villageid != null">
+        #{villageid,jdbcType=BIGINT},
+      </if>
+      <if test="blockid != null">
+        #{blockid,jdbcType=BIGINT},
+      </if>
+      <if test="divideid != null">
+        #{divideid,jdbcType=BIGINT},
+      </if>
+      <if test="name != null">
+        #{name,jdbcType=VARCHAR},
+      </if>
+      <if test="virtualid != null">
+        #{virtualid,jdbcType=BIGINT},
+      </if>
+      <if test="clientnum != null">
+        #{clientnum,jdbcType=VARCHAR},
+      </if>
+      <if test="districtnum != null">
+        #{districtnum,jdbcType=BIGINT},
+      </if>
+      <if test="districttitle != null">
+        #{districttitle,jdbcType=VARCHAR},
+      </if>
+      <if test="phone != null">
+        #{phone,jdbcType=VARCHAR},
+      </if>
+      <if test="idcard != null">
+        #{idcard,jdbcType=VARCHAR},
+      </if>
+      <if test="area != null">
+        #{area,jdbcType=DOUBLE},
+      </if>
+      <if test="typeid != null">
+        #{typeid,jdbcType=BIGINT},
+      </if>
+      <if test="address != null">
+        #{address,jdbcType=VARCHAR},
+      </if>
+      <if test="remarks != null">
+        #{remarks,jdbcType=VARCHAR},
+      </if>
+      <if test="operator != null">
+        #{operator,jdbcType=BIGINT},
+      </if>
+      <if test="operatedt != null">
+        #{operatedt,jdbcType=TIMESTAMP},
+      </if>
+      <if test="disabled != null">
+        #{disabled,jdbcType=TINYINT},
+      </if>
+      <if test="deleted != null">
+        #{deleted,jdbcType=TINYINT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClient">
+    <!--@mbg.generated-->
+    update se_client
+    <set>
+      <if test="countyid != null">
+        countyId = #{countyid,jdbcType=BIGINT},
+      </if>
+      <if test="townid != null">
+        townId = #{townid,jdbcType=BIGINT},
+      </if>
+      <if test="villageid != null">
+        villageId = #{villageid,jdbcType=BIGINT},
+      </if>
+      <if test="blockid != null">
+        blockId = #{blockid,jdbcType=BIGINT},
+      </if>
+      <if test="divideid != null">
+        divideId = #{divideid,jdbcType=BIGINT},
+      </if>
+      <if test="name != null">
+        `name` = #{name,jdbcType=VARCHAR},
+      </if>
+      <if test="virtualid != null">
+        virtualId = #{virtualid,jdbcType=BIGINT},
+      </if>
+      <if test="clientnum != null">
+        clientNum = #{clientnum,jdbcType=VARCHAR},
+      </if>
+      <if test="districtnum != null">
+        districtNum = #{districtnum,jdbcType=BIGINT},
+      </if>
+      <if test="districttitle != null">
+        districtTitle = #{districttitle,jdbcType=VARCHAR},
+      </if>
+      <if test="phone != null">
+        phone = #{phone,jdbcType=VARCHAR},
+      </if>
+      <if test="idcard != null">
+        idCard = #{idcard,jdbcType=VARCHAR},
+      </if>
+      <if test="area != null">
+        area = #{area,jdbcType=DOUBLE},
+      </if>
+      <if test="typeid != null">
+        typeId = #{typeid,jdbcType=BIGINT},
+      </if>
+      <if test="address != null">
+        address = #{address,jdbcType=VARCHAR},
+      </if>
+      <if test="remarks != null">
+        remarks = #{remarks,jdbcType=VARCHAR},
+      </if>
+      <if test="operator != null">
+        `operator` = #{operator,jdbcType=BIGINT},
+      </if>
+      <if test="operatedt != null">
+        operateDt = #{operatedt,jdbcType=TIMESTAMP},
+      </if>
+      <if test="disabled != null">
+        disabled = #{disabled,jdbcType=TINYINT},
+      </if>
+      <if test="deleted != null">
+        deleted = #{deleted,jdbcType=TINYINT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClient">
+    <!--@mbg.generated-->
+    update se_client
+    set countyId = #{countyid,jdbcType=BIGINT},
+      townId = #{townid,jdbcType=BIGINT},
+      villageId = #{villageid,jdbcType=BIGINT},
+      blockId = #{blockid,jdbcType=BIGINT},
+      divideId = #{divideid,jdbcType=BIGINT},
+      `name` = #{name,jdbcType=VARCHAR},
+<!--      virtualId = #{virtualid,jdbcType=BIGINT},-->
+      clientNum = #{clientnum,jdbcType=VARCHAR},
+      districtNum = #{districtnum,jdbcType=BIGINT},
+      districtTitle = #{districttitle,jdbcType=VARCHAR},
+      phone = #{phone,jdbcType=VARCHAR},
+      idCard = #{idcard,jdbcType=VARCHAR},
+      area = #{area,jdbcType=DOUBLE},
+      typeId = #{typeid,jdbcType=BIGINT},
+      address = #{address,jdbcType=VARCHAR},
+      remarks = #{remarks,jdbcType=VARCHAR},
+      `operator` = #{operator,jdbcType=BIGINT},
+      operateDt = #{operatedt,jdbcType=TIMESTAMP},
+<!--      disabled = #{disabled,jdbcType=TINYINT},-->
+<!--      deleted = #{deleted,jdbcType=TINYINT}-->
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+
+  <!--鏍规嵁6浣嶅尯鍒掍覆妯$硦鏌ヨ鍐滄埛缂栧彿-->
+  <select id="getClientNumOfMax"  resultType="java.lang.String">
+    SELECT clientNum
+    FROM se_client
+    WHERE clientNum LIKE CONCAT('%',#{district8},'%')
+    ORDER BY clientNum desc
+    LIMIT 0,1
+  </select>
+
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍐滄埛璁板綍鏁�-->
+  <select id="getRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
+    SELECT
+        COUNT(*) AS recordCount
+    FROM se_client cli
+    , (SELECT @i:=0) AS itable
+    <where>
+      AND cli.disabled = 0
+      AND cli.deleted = 0
+      <if test = "name != null and name !=''">
+        AND cli.name like CONCAT('%',#{name},'%')
+      </if>
+
+      <if test = "clientNum != null and clientNum !=''">
+        AND cli.clientNum like CONCAT('%',#{clientNum},'%')
+      </if>
+
+      <if test = "phone != null and phone !=''">
+        AND cli.phone like CONCAT('%',#{phone},'%')
+      </if>
+
+      <if test = "address != null and address !=''">
+        AND cli.address like CONCAT('%',#{address},'%')
+      </if>
+    </where>
+
+  </select>
+
+
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍐滄埛鏁版嵁-->
+  <select id="getClients" resultType="com.dy.pipIrrGlobal.voSe.VoClient">
+    SELECT
+        (@i:=@i+1) AS id,
+        CAST(cli.countyId AS char) AS countyId,
+        dis_con.name AS countryName,
+        CAST(cli.townId AS char) AS townId,
+        dis_town.name AS townName,
+        CAST(cli.villageId AS char) AS villageId,
+        dis_village.name AS villageName,
+        CAST(cli.blockId AS char) AS blockId,
+        blo.name AS bolckName,
+        CAST(cli.divideId AS char) AS divideId,
+        divi.name AS divideName,
+        CAST(cli.typeId AS char) AS waterTypeId,
+        wat.typeName AS waterTypeName,
+        CAST(cli.id AS char) AS clientId,
+        cli.name,
+        cli.clientNum,
+        cli.phone,
+        cli.idCard,
+        cli.area,
+        (SELECT COUNT(*) FROM se_client_card WHERE clientId = cli.id) AS cardCount,
+        cli.address,
+        cli.remarks,
+        cli.operateDt
+    FROM se_client cli
+    LEFT JOIN ba_district dis_con ON cli.countyId = dis_con.id
+    LEFT JOIN ba_district dis_town ON cli.townId = dis_town.id
+    LEFT JOIN ba_district dis_village ON cli.villageId = dis_village.id
+    LEFT JOIN ba_block blo ON cli.blockId = blo.id
+    LEFT JOIN pr_divide divi ON cli.divideId = divi.id
+    LEFT JOIN se_water_type wat ON cli.typeId = wat.id
+    , (SELECT @i:=0) AS itable
+    <where>
+      AND cli.disabled = 0
+      AND cli.deleted = 0
+      <if test = "name != null and name !=''">
+        AND cli.name like CONCAT('%',#{name},'%')
+      </if>
+
+      <if test = "clientNum != null and clientNum !=''">
+        AND cli.clientNum like CONCAT('%',#{clientNum},'%')
+      </if>
+
+      <if test = "phone != null and phone !=''">
+        AND cli.phone like CONCAT('%',#{phone},'%')
+      </if>
+
+      <if test = "address != null and address !=''">
+        AND cli.address like CONCAT('%',#{address},'%')
+      </if>
+    </where>
+    ORDER BY cli.operateDt DESC
+    <if test="pageCurr != null and pageSize != null">
+      LIMIT ${pageCurr}, ${pageSize}
+    </if>
+  </select>
+
+  <!--鏍规嵁鍐滄埛缂栧彿鑾峰彇5绾ц鏀垮尯鍒掍唬鐮�-->
+  <select id="getAreaCodeByNum" resultType="java.lang.Long">
+    SELECT districtNum FROM se_client WHERE clientNum = ${clientNum}
+  </select>
+
+  <!--鏍规嵁鍐滄埛缂栧彿鑾峰彇鍐滄埛ID-->
+  <select id="getClientIdByNum" resultType="java.lang.Long">
+    SELECT id FROM se_client WHERE clientNum = ${clientNum}
+  </select>
+
+  <!--鏍规嵁鍐滄埛ID閫昏緫鍒犻櫎鍐滄埛-->
+  <update id="deleteClientById" parameterType="java.lang.Long">
+    update se_client set deleted = 1
+    <where>
+      <if test = "id != null and id > 0">
+        AND id = ${id}
+      </if>
+    </where>
+  </update>
+
+  <!--鏍规嵁涓婚敭鑾峰彇鏉慖D-->
+  <select id="getVillageIdById" parameterType="java.lang.Long" resultType="java.lang.Long">
+    SELECT villageId FROM se_client WHERE id = ${id}
+  </select>
+
+  <!--鑾峰彇铏氭嫙鍗″彿鏈�澶у��-->
+  <select id="getMa1xVirtualId" resultType="java.lang.Long">
+    SELECT virtualId FROM se_client ORDER BY id DESC LIMIT 0,1
+  </select>
+
+  <!--鑾峰彇鐢ㄦ按鏂瑰紡鍒楄〃-->
+  <select id="getWaterTypes" resultType="java.util.Map">
+    SELECT id, typeName from se_water_type
+  </select>
+
+  <!-- 涓嬪垪鍐呭涓轰氦鏄撴槑缁嗘煡璇� -->
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇璐按姹囨�诲拰璐崱姹囨��-->
+  <select id="getSums" resultType="java.util.Map">
+    SELECT
+        SUM(money) AS money,
+        SUM(cardCost) AS cardCost
+    FROM v_operate
+    <where>
+      <if test = "villageId != null and villageId > 0">
+        AND villageId = ${villageId}
+      </if>
+
+      <if test = "paymentId != null and paymentId >0">
+        AND paymentId = ${paymentId}
+      </if>
+
+      <if test = "operateTimeStart != null and operateTimeStop != null">
+        AND operateDt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
+      </if>
+    </where>
+  </select>
+
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗璁板綍鏁�-->
+  <select id="getOperateRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
+    SELECT
+        COUNT(*) AS recordCount
+    FROM v_operate
+    <where>
+      <if test = "villageId != null and villageId > 0">
+        AND villageId = ${villageId}
+      </if>
+
+      <if test = "paymentId != null and paymentId >0">
+        AND paymentId = ${paymentId}
+      </if>
+
+      <if test = "operateTimeStart != null and operateTimeStop != null">
+        AND operateDt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
+      </if>
+    </where>
+  </select>
+
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗璁板綍-->
+  <select id="getOperates" resultType="com.dy.pipIrrGlobal.voSe.VoOperate">
+    SELECT
+        villageId,
+        districtTitle,
+        clientNum,
+        `name`,
+        cardNum,
+        idCard,
+        phone,
+        money,
+        cardCost,
+        paymentId,
+        paymentMethod,
+        operateType,
+        operateDt,
+        operatorName
+    FROM v_operate
+    <where>
+      <if test = "villageId != null and villageId > 0">
+        AND villageId = ${villageId}
+      </if>
+
+      <if test = "paymentId != null and paymentId >0">
+        AND paymentId = ${paymentId}
+      </if>
+
+      <if test = "operateTimeStart != null and operateTimeStop != null">
+        AND operateDt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
+      </if>
+    </where>
+    ORDER BY operateDt
+    <if test="pageCurr != null and pageSize != null">
+      LIMIT ${pageCurr}, ${pageSize}
+    </if>
+  </select>
+
+  <!-- 涓嬪垪鍐呭涓轰氦鏄撶粺璁℃煡璇� -->
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗绗旀暟姹囨�诲拰浜ゆ槗閲戦姹囨��-->
+  <select id="getStatisticSums" resultType="java.util.Map">
+    SELECT
+    SUM(count) AS count,
+    SUM(money) AS money
+    FROM
+    (
+      SELECT
+      villageId,
+      districtTitle,
+      operateType,
+      operateDt,
+      count(*) AS count,
+      (sum(money) + sum(cardCost)) AS money
+      FROM v_operate
+      <where>
+        <if test = "villageId != null and villageId > 0">
+          AND villageId = ${villageId}
+        </if>
+
+<!--        <if test = "paymentId != null and paymentId >0">-->
+<!--          AND paymentId = ${paymentId}-->
+<!--        </if>-->
+
+        <if test = "operateTimeStart != null and operateTimeStop != null">
+          AND operateDt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
+        </if>
+      </where>
+      GROUP BY villageId, districtTitle, operateType, operateDt
+    ) temp
+  </select>
+
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇姹囨�昏褰曟暟-->
+  <select id="getStatisticRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
+    SELECT
+        COUNT(*) AS recordCount
+    FROM
+    (
+        SELECT
+          villageId,
+          districtTitle,
+          operateType,
+          operateDt,
+          count(*) AS count,
+          (sum(money) + sum(cardCost)) AS money
+        FROM v_operate
+        <where>
+          <if test = "villageId != null and villageId > 0">
+            AND villageId = ${villageId}
+          </if>
+
+<!--          <if test = "paymentId != null and paymentId >0">-->
+<!--            AND paymentId = ${paymentId}-->
+<!--          </if>-->
+
+          <if test = "operateTimeStart != null and operateTimeStop != null">
+            AND operateDt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
+          </if>
+        </where>
+        GROUP BY villageId, districtTitle, operateType, operateDt
+    ) temp
+  </select>
+
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇缁熻璁板綍-->
+  <select id="getStatistics" resultType="com.dy.pipIrrGlobal.voSe.VoStatistics">
+    SELECT
+        villageId,
+        districtTitle,
+        operateType,
+        operateDt,
+        count(*) AS count,
+        (sum(money) + sum(cardCost)) AS money
+    FROM v_operate
+    <where>
+      <if test = "villageId != null and villageId > 0">
+        AND villageId = ${villageId}
+      </if>
+
+<!--      <if test = "paymentId != null and paymentId >0">-->
+<!--        AND paymentId = ${paymentId}-->
+<!--      </if>-->
+
+      <if test = "operateTimeStart != null and operateTimeStop != null">
+        AND operateDt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
+      </if>
+    </where>
+    GROUP BY villageId, districtTitle, operateType, operateDt
+    ORDER BY operateDt
+    <if test="pageCurr != null and pageSize != null">
+      LIMIT ${pageCurr}, ${pageSize}
+    </if>
+  </select>
+
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeLossMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeLossMapper.xml
index 15d62b2..fe12f52 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeLossMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeLossMapper.xml
@@ -5,8 +5,8 @@
     <!--@mbg.generated-->
     <!--@Table se_loss-->
     <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="cardNum" jdbcType="VARCHAR" property="cardnum" />
-    <result column="clientNum" jdbcType="VARCHAR" property="clientnum" />
+    <result column="cardId" jdbcType="BIGINT" property="cardid" />
+    <result column="clientId" jdbcType="BIGINT" property="clientid" />
     <result column="money" jdbcType="FLOAT" property="money" />
     <result column="refund" jdbcType="FLOAT" property="refund" />
     <result column="remarks" jdbcType="VARCHAR" property="remarks" />
@@ -15,7 +15,7 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, cardNum, clientNum, money, refund, remarks, `operator`, operateDt
+    id, cardId, clientId, money, refund, remarks, `operator`, operateDt
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -32,10 +32,10 @@
 
   <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeLoss">
     <!--@mbg.generated-->
-    insert into se_loss (id, cardNum, clientNum, money,
+    insert into se_loss (id, cardId, clientId, money,
       refund, remarks, `operator`, 
       operateDt)
-    values (#{id,jdbcType=BIGINT}, #{cardnum,jdbcType=VARCHAR}, #{clientnum,jdbcType=VARCHAR}, #{money,jdbcType=FLOAT},
+    values (#{id,jdbcType=BIGINT}, #{cardid,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, #{money,jdbcType=FLOAT},
       #{refund,jdbcType=FLOAT}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, 
       #{operatedt,jdbcType=TIMESTAMP})
   </insert>
@@ -44,11 +44,11 @@
     <!--@mbg.generated-->
     insert into se_loss
     <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="cardnum != null">
-        cardNum,
+      <if test="cardid != null">
+        cardId,
       </if>
-      <if test="clientnum != null">
-        clientNum,
+      <if test="clientid != null">
+        clientId,
       </if>
       <if test="money != null">
         money,
@@ -67,11 +67,11 @@
       </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="cardnum != null">
-        #{cardnum,jdbcType=VARCHAR},
+      <if test="cardid != null">
+        #{cardid,jdbcType=BIGINT},
       </if>
-      <if test="clientnum != null">
-        #{clientnum,jdbcType=VARCHAR},
+      <if test="clientid != null">
+        #{clientid,jdbcType=BIGINT},
       </if>
       <if test="money != null">
         #{money,jdbcType=FLOAT},
@@ -94,11 +94,11 @@
     <!--@mbg.generated-->
     update se_loss
     <set>
-      <if test="cardnum != null">
-        cardNum = #{cardnum,jdbcType=VARCHAR},
+      <if test="cardid != null">
+        cardId = #{cardid,jdbcType=BIGINT},
       </if>
-      <if test="clientnum != null">
-        clientNum = #{clientnum,jdbcType=VARCHAR},
+      <if test="clientid != null">
+        clientId = #{clientid,jdbcType=BIGINT},
       </if>
       <if test="money != null">
         money = #{money,jdbcType=FLOAT},
@@ -121,8 +121,8 @@
   <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeLoss">
     <!--@mbg.generated-->
     update se_loss
-    set cardNum = #{cardnum,jdbcType=VARCHAR},
-      clientNum = #{clientnum,jdbcType=VARCHAR},
+    set cardId = #{cardid,jdbcType=BIGINT},
+      clientId = #{clientid,jdbcType=BIGINT},
       money = #{money,jdbcType=FLOAT},
       refund = #{refund,jdbcType=FLOAT},
       remarks = #{remarks,jdbcType=VARCHAR},
@@ -136,8 +136,8 @@
     SELECT
         COUNT(*) AS recordCount
     FROM se_loss loss
-    INNER JOIN se_client_card card ON loss.cardNum = card.cardNum
-    INNER JOIN ba_client cli ON loss.clientNum = cli.num
+    INNER JOIN se_client_card card ON loss.cardId = card.id
+    INNER JOIN se_client cli ON loss.clientId = cli.id
     , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
@@ -159,14 +159,14 @@
     SELECT
         (@i:=@i+1) AS id,
         cli.`name` AS clientName,
-        cli.num AS clientNum,
+        cli.clientNum,
         card.cardNum,
         loss.money,
         (SELECT `name` FROM ba_user WHERE id =  loss.operator) AS operator,
         loss.operateDt
     FROM se_loss loss
-        INNER JOIN se_client_card card ON loss.cardNum = card.cardNum
-        INNER JOIN ba_client cli ON loss.clientNum = cli.num
+        INNER JOIN se_client_card card ON loss.cardId = card.id
+        INNER JOIN se_client cli ON loss.clientId = cli.id
         , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeHistoryMapper.xml
index b9424b3..45d08e3 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeHistoryMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeHistoryMapper.xml
@@ -5,8 +5,8 @@
     <!--@mbg.generated-->
     <!--@Table se_recharge_history-->
     <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="cardNum" jdbcType="VARCHAR" property="cardnum" />
-    <result column="clientNum" jdbcType="VARCHAR" property="clientnum" />
+    <result column="cardId" jdbcType="BIGINT" property="cardid" />
+    <result column="clientId" jdbcType="BIGINT" property="clientid" />
     <result column="money" jdbcType="FLOAT" property="money" />
     <result column="amount" jdbcType="FLOAT" property="amount" />
     <result column="gift" jdbcType="FLOAT" property="gift" />
@@ -19,7 +19,7 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, cardNum, clientNum, money, amount, gift, afterRecharge, paymentId, price, remarks, 
+    id, cardId, clientId, money, amount, gift, afterRecharge, paymentId, price, remarks, 
     `operator`, operateDt
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
@@ -37,11 +37,11 @@
 
   <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeRechargeHistory">
     <!--@mbg.generated-->
-    insert into se_recharge_history (id, cardNum, clientNum, money,
+    insert into se_recharge_history (id, cardId, clientId, money,
       amount, gift, afterRecharge, 
       paymentId, price, remarks, 
       `operator`, operateDt)
-    values (#{id,jdbcType=BIGINT}, #{cardnum,jdbcType=VARCHAR}, #{clientnum,jdbcType=VARCHAR}, #{money,jdbcType=FLOAT},
+    values (#{id,jdbcType=BIGINT}, #{cardid,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, #{money,jdbcType=FLOAT},
       #{amount,jdbcType=FLOAT}, #{gift,jdbcType=FLOAT}, #{afterrecharge,jdbcType=FLOAT}, 
       #{paymentid,jdbcType=BIGINT}, #{price,jdbcType=FLOAT}, #{remarks,jdbcType=VARCHAR}, 
       #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP})
@@ -51,11 +51,11 @@
     <!--@mbg.generated-->
     insert into se_recharge_history
     <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="cardnum != null">
-        cardNum,
+      <if test="cardid != null">
+        cardId,
       </if>
-      <if test="clientnum != null">
-        clientNum,
+      <if test="clientid != null">
+        clientId,
       </if>
       <if test="money != null">
         money,
@@ -86,11 +86,11 @@
       </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="cardnum != null">
-        #{cardnum,jdbcType=VARCHAR},
+      <if test="cardid != null">
+        #{cardid,jdbcType=BIGINT},
       </if>
-      <if test="clientnum != null">
-        #{clientnum,jdbcType=VARCHAR},
+      <if test="clientid != null">
+        #{clientid,jdbcType=BIGINT},
       </if>
       <if test="money != null">
         #{money,jdbcType=FLOAT},
@@ -125,11 +125,11 @@
     <!--@mbg.generated-->
     update se_recharge_history
     <set>
-      <if test="cardnum != null">
-        cardNum = #{cardnum,jdbcType=VARCHAR},
+      <if test="cardid != null">
+        cardId = #{cardid,jdbcType=BIGINT},
       </if>
-      <if test="clientnum != null">
-        clientNum = #{clientnum,jdbcType=VARCHAR},
+      <if test="clientid != null">
+        clientId = #{clientid,jdbcType=BIGINT},
       </if>
       <if test="money != null">
         money = #{money,jdbcType=FLOAT},
@@ -164,8 +164,8 @@
   <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeRechargeHistory">
     <!--@mbg.generated-->
     update se_recharge_history
-    set cardNum = #{cardnum,jdbcType=VARCHAR},
-      clientNum = #{clientnum,jdbcType=VARCHAR},
+    set cardId = #{cardid,jdbcType=BIGINT},
+      clientId = #{clientid,jdbcType=BIGINT},
       money = #{money,jdbcType=FLOAT},
       amount = #{amount,jdbcType=FLOAT},
       gift = #{gift,jdbcType=FLOAT},
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeMapper.xml
index 74c067d..362da0b 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeMapper.xml
@@ -5,8 +5,8 @@
     <!--@mbg.generated-->
     <!--@Table se_recharge-->
     <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="cardNum" jdbcType="VARCHAR" property="cardnum" />
-    <result column="clientNum" jdbcType="VARCHAR" property="clientnum" />
+    <result column="cardId" jdbcType="BIGINT" property="cardid" />
+    <result column="clientId" jdbcType="BIGINT" property="clientid" />
     <result column="money" jdbcType="FLOAT" property="money" />
     <result column="amount" jdbcType="FLOAT" property="amount" />
     <result column="gift" jdbcType="FLOAT" property="gift" />
@@ -19,7 +19,7 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, cardNum, clientNum, money, amount, gift, afterRecharge, paymentId, price, remarks, 
+    id, cardId, clientId, money, amount, gift, afterRecharge, paymentId, price, remarks, 
     `operator`, operateDt
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
@@ -35,29 +35,27 @@
     where id = #{id,jdbcType=BIGINT}
   </delete>
 
-<!--  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeRecharge" useGeneratedKeys="true">-->
   <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeRecharge">
     <!--@mbg.generated-->
-    insert into se_recharge (id, cardNum, clientNum, money,
+    insert into se_recharge (id, cardId, clientId, money,
       amount, gift, afterRecharge, 
       paymentId, price, remarks, 
       `operator`, operateDt)
-    values (#{id,jdbcType=BIGINT} ,#{cardnum,jdbcType=VARCHAR}, #{clientnum,jdbcType=VARCHAR}, #{money,jdbcType=FLOAT},
+    values (#{id,jdbcType=BIGINT}, #{cardid,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, #{money,jdbcType=FLOAT},
       #{amount,jdbcType=FLOAT}, #{gift,jdbcType=FLOAT}, #{afterrecharge,jdbcType=FLOAT}, 
       #{paymentid,jdbcType=BIGINT}, #{price,jdbcType=FLOAT}, #{remarks,jdbcType=VARCHAR}, 
       #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP})
   </insert>
 
-
   <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeRecharge" useGeneratedKeys="true">
     <!--@mbg.generated-->
     insert into se_recharge
     <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="cardnum != null">
-        cardNum,
+      <if test="cardid != null">
+        cardId,
       </if>
-      <if test="clientnum != null">
-        clientNum,
+      <if test="clientid != null">
+        clientId,
       </if>
       <if test="money != null">
         money,
@@ -88,11 +86,11 @@
       </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="cardnum != null">
-        #{cardnum,jdbcType=VARCHAR},
+      <if test="cardid != null">
+        #{cardid,jdbcType=BIGINT},
       </if>
-      <if test="clientnum != null">
-        #{clientnum,jdbcType=VARCHAR},
+      <if test="clientid != null">
+        #{clientid,jdbcType=BIGINT},
       </if>
       <if test="money != null">
         #{money,jdbcType=FLOAT},
@@ -127,11 +125,11 @@
     <!--@mbg.generated-->
     update se_recharge
     <set>
-      <if test="cardnum != null">
-        cardNum = #{cardnum,jdbcType=VARCHAR},
+      <if test="cardid != null">
+        cardId = #{cardid,jdbcType=BIGINT},
       </if>
-      <if test="clientnum != null">
-        clientNum = #{clientnum,jdbcType=VARCHAR},
+      <if test="clientid != null">
+        clientId = #{clientid,jdbcType=BIGINT},
       </if>
       <if test="money != null">
         money = #{money,jdbcType=FLOAT},
@@ -166,8 +164,8 @@
   <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeRecharge">
     <!--@mbg.generated-->
     update se_recharge
-    set cardNum = #{cardnum,jdbcType=VARCHAR},
-      clientNum = #{clientnum,jdbcType=VARCHAR},
+    set cardId = #{cardid,jdbcType=BIGINT},
+      clientId = #{clientid,jdbcType=BIGINT},
       money = #{money,jdbcType=FLOAT},
       amount = #{amount,jdbcType=FLOAT},
       gift = #{gift,jdbcType=FLOAT},
@@ -181,8 +179,13 @@
   </update>
 
   <!--鏍规嵁姘村崱缂栧彿鍒犻櫎鍏呭�艰褰�-->
-  <delete id="deleteByCardNum" parameterType="java.lang.String">
-    DELETE FROM	se_recharge WHERE cardNum = #{cardNum}
+<!--  <delete id="deleteByCardNum" parameterType="java.lang.String">-->
+<!--    DELETE FROM	se_recharge WHERE cardNum = #{cardNum}-->
+<!--  </delete>-->
+
+  <!--鏍规嵁姘村崱ID鍒犻櫎鍏呭�艰褰�-->
+  <delete id="deleteByCardId" parameterType="java.lang.Long">
+    DELETE FROM	se_recharge WHERE cardId = #{cardId}
   </delete>
 
   <!--鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栧厖鍊艰褰�-->
@@ -190,16 +193,16 @@
     select
         COUNT(*) AS recordCount
     FROM se_recharge_history rec
-        INNER JOIN se_client_card card ON rec.cardNum = card.cardNum
-        INNER JOIN ba_client cli ON rec.clientNum = cli.num
-        , (SELECT @i:=0) AS itable
+    INNER JOIN se_client_card card ON rec.cardId = card.id
+    INNER JOIN se_client cli ON rec.clientId = cli.id
+    , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
       </if>
 
       <if test = "clientNum != null and clientNum > 0">
-        AND rec.clientNum like CONCAT('%',#{clientNum},'%')
+        AND cli.clientNum like CONCAT('%',#{clientNum},'%')
       </if>
 
       <if test = "cardNum != null and cardNum !=''">
@@ -221,7 +224,7 @@
     SELECT
         (@i:=@i+1) AS id,
         cli.name AS clientName,
-        cli.num AS clientNum,
+        cli.clientNum,
         card.cardNum,
         rec.amount,
         rec.afterRecharge,
@@ -230,8 +233,8 @@
         (SELECT `name` FROM ba_user WHERE id =  rec.operator) AS operator,
         rec.operateDt
     FROM se_recharge_history rec
-        INNER JOIN se_client_card card ON rec.cardNum = card.cardNum
-        INNER JOIN ba_client cli ON rec.clientNum = cli.num
+        INNER JOIN se_client_card card ON rec.cardId = card.id
+        INNER JOIN se_client cli ON rec.clientId = cli.id
         , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
@@ -239,7 +242,7 @@
       </if>
 
       <if test = "clientNum != null and clientNum > 0">
-        AND rec.clientNum like CONCAT('%',#{clientNum},'%')
+        AND cli.clientNum like CONCAT('%',#{clientNum},'%')
       </if>
 
       <if test = "cardNum != null and cardNum !=''">
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReversalMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReversalMapper.xml
index 03884b2..07d97ac 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReversalMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReversalMapper.xml
@@ -5,8 +5,8 @@
     <!--@mbg.generated-->
     <!--@Table se_reversal-->
     <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="cardNum" jdbcType="VARCHAR" property="cardnum" />
-    <result column="clientNum" jdbcType="VARCHAR" property="clientnum" />
+    <result column="cardId" jdbcType="BIGINT" property="cardid" />
+    <result column="clientId" jdbcType="BIGINT" property="clientid" />
     <result column="cardBalance" jdbcType="FLOAT" property="cardbalance" />
     <result column="systemBalance" jdbcType="FLOAT" property="systembalance" />
     <result column="remarks" jdbcType="VARCHAR" property="remarks" />
@@ -15,7 +15,7 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, cardNum, clientNum, cardBalance, systemBalance, remarks, `operator`, operateDt
+    id, cardId, clientId, cardBalance, systemBalance, remarks, `operator`, operateDt
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -32,10 +32,10 @@
 
   <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeReversal">
     <!--@mbg.generated-->
-    insert into se_reversal (id, cardNum, clientNum, cardBalance,
+    insert into se_reversal (id, cardId, clientId, cardBalance,
       systemBalance, remarks, `operator`, 
       operateDt)
-    values (#{id,jdbcType=BIGINT}, #{cardnum,jdbcType=VARCHAR}, #{clientnum,jdbcType=VARCHAR}, #{cardbalance,jdbcType=FLOAT},
+    values (#{id,jdbcType=BIGINT}, #{cardid,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, #{cardbalance,jdbcType=FLOAT},
       #{systembalance,jdbcType=FLOAT}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, 
       #{operatedt,jdbcType=TIMESTAMP})
   </insert>
@@ -44,11 +44,11 @@
     <!--@mbg.generated-->
     insert into se_reversal
     <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="cardnum != null">
-        cardNum,
+      <if test="cardid != null">
+        cardId,
       </if>
-      <if test="clientnum != null">
-        clientNum,
+      <if test="clientid != null">
+        clientId,
       </if>
       <if test="cardbalance != null">
         cardBalance,
@@ -67,11 +67,11 @@
       </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="cardnum != null">
-        #{cardnum,jdbcType=VARCHAR},
+      <if test="cardid != null">
+        #{cardid,jdbcType=BIGINT},
       </if>
-      <if test="clientnum != null">
-        #{clientnum,jdbcType=VARCHAR},
+      <if test="clientid != null">
+        #{clientid,jdbcType=BIGINT},
       </if>
       <if test="cardbalance != null">
         #{cardbalance,jdbcType=FLOAT},
@@ -94,11 +94,11 @@
     <!--@mbg.generated-->
     update se_reversal
     <set>
-      <if test="cardnum != null">
-        cardNum = #{cardnum,jdbcType=VARCHAR},
+      <if test="cardid != null">
+        cardId = #{cardid,jdbcType=BIGINT},
       </if>
-      <if test="clientnum != null">
-        clientNum = #{clientnum,jdbcType=VARCHAR},
+      <if test="clientid != null">
+        clientId = #{clientid,jdbcType=BIGINT},
       </if>
       <if test="cardbalance != null">
         cardBalance = #{cardbalance,jdbcType=FLOAT},
@@ -121,8 +121,8 @@
   <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeReversal">
     <!--@mbg.generated-->
     update se_reversal
-    set cardNum = #{cardnum,jdbcType=VARCHAR},
-      clientNum = #{clientnum,jdbcType=VARCHAR},
+    set cardId = #{cardid,jdbcType=BIGINT},
+      clientId = #{clientid,jdbcType=BIGINT},
       cardBalance = #{cardbalance,jdbcType=FLOAT},
       systemBalance = #{systembalance,jdbcType=FLOAT},
       remarks = #{remarks,jdbcType=VARCHAR},
@@ -130,15 +130,14 @@
       operateDt = #{operatedt,jdbcType=TIMESTAMP}
     where id = #{id,jdbcType=BIGINT}
   </update>
-
   <!--鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栧啿姝h褰曟暟-->
   <select id="getRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
     SELECT
         COUNT(*) AS recordCount
     FROM se_reversal rev
-        INNER JOIN se_client_card card ON rev.cardNum = card.cardNum
-        INNER JOIN ba_client cli ON rev.clientNum = cli.num
-        , (SELECT @i:=0) AS itable
+    INNER JOIN se_client_card card ON rev.cardId = card.id
+    INNER JOIN se_client cli ON rev.clientId = cli.id
+    , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
@@ -157,17 +156,17 @@
   <!--鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栧啿姝h褰�-->
   <select id="getReversals" resultType="com.dy.pipIrrGlobal.voSe.VoReversal">
     SELECT
-        (@i:=@i+1) AS id,
-        cli.`name` AS clientName,
-        cli.num AS clientNum,
-        card.cardNum,
-        rev.cardBalance,
-        (SELECT `name` FROM ba_user WHERE id =  rev.operator) AS operator,
-        rev.operateDt
+      (@i:=@i+1) AS id,
+      cli.`name` AS clientName,
+      cli.clientNum,
+      card.cardNum,
+      rev.cardBalance,
+      (SELECT `name` FROM ba_user WHERE id =  rev.operator) AS operator,
+      rev.operateDt
     FROM se_reversal rev
-        INNER JOIN se_client_card card ON rev.cardNum = card.cardNum
-        INNER JOIN ba_client cli ON rev.clientNum = cli.num
-        , (SELECT @i:=0) AS itable
+      INNER JOIN se_client_card card ON rev.cardId = card.id
+      INNER JOIN se_client cli ON rev.clientId = cli.id
+      , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeUnlockMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeUnlockMapper.xml
index 329661f..50c0143 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeUnlockMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeUnlockMapper.xml
@@ -5,8 +5,8 @@
     <!--@mbg.generated-->
     <!--@Table se_unlock-->
     <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="cardNum" jdbcType="VARCHAR" property="cardnum" />
-    <result column="clientNum" jdbcType="VARCHAR" property="clientnum" />
+    <result column="cardId" jdbcType="BIGINT" property="cardid" />
+    <result column="clientId" jdbcType="BIGINT" property="clientid" />
     <result column="money" jdbcType="FLOAT" property="money" />
     <result column="remarks" jdbcType="VARCHAR" property="remarks" />
     <result column="operator" jdbcType="BIGINT" property="operator" />
@@ -14,7 +14,7 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, cardNum, clientNum, money, remarks, `operator`, operateDt
+    id, cardId, clientId, money, remarks, `operator`, operateDt
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -31,10 +31,10 @@
 
   <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeUnlock">
     <!--@mbg.generated-->
-    insert into se_unlock (id, cardNum, clientNum, money,
+    insert into se_unlock (id, cardId, clientId, money,
       remarks, `operator`, operateDt
       )
-    values (#{id,jdbcType=BIGINT}, #{cardnum,jdbcType=VARCHAR}, #{clientnum,jdbcType=VARCHAR}, #{money,jdbcType=FLOAT},
+    values (#{id,jdbcType=BIGINT}, #{cardid,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, #{money,jdbcType=FLOAT},
       #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP}
       )
   </insert>
@@ -43,11 +43,11 @@
     <!--@mbg.generated-->
     insert into se_unlock
     <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="cardnum != null">
-        cardNum,
+      <if test="cardid != null">
+        cardId,
       </if>
-      <if test="clientnum != null">
-        clientNum,
+      <if test="clientid != null">
+        clientId,
       </if>
       <if test="money != null">
         money,
@@ -63,11 +63,11 @@
       </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="cardnum != null">
-        #{cardnum,jdbcType=VARCHAR},
+      <if test="cardid != null">
+        #{cardid,jdbcType=BIGINT},
       </if>
-      <if test="clientnum != null">
-        #{clientnum,jdbcType=VARCHAR},
+      <if test="clientid != null">
+        #{clientid,jdbcType=BIGINT},
       </if>
       <if test="money != null">
         #{money,jdbcType=FLOAT},
@@ -87,11 +87,11 @@
     <!--@mbg.generated-->
     update se_unlock
     <set>
-      <if test="cardnum != null">
-        cardNum = #{cardnum,jdbcType=VARCHAR},
+      <if test="cardid != null">
+        cardId = #{cardid,jdbcType=BIGINT},
       </if>
-      <if test="clientnum != null">
-        clientNum = #{clientnum,jdbcType=VARCHAR},
+      <if test="clientid != null">
+        clientId = #{clientid,jdbcType=BIGINT},
       </if>
       <if test="money != null">
         money = #{money,jdbcType=FLOAT},
@@ -111,8 +111,8 @@
   <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeUnlock">
     <!--@mbg.generated-->
     update se_unlock
-    set cardNum = #{cardnum,jdbcType=VARCHAR},
-      clientNum = #{clientnum,jdbcType=VARCHAR},
+    set cardId = #{cardid,jdbcType=BIGINT},
+      clientId = #{clientid,jdbcType=BIGINT},
       money = #{money,jdbcType=FLOAT},
       remarks = #{remarks,jdbcType=VARCHAR},
       `operator` = #{operator,jdbcType=BIGINT},
@@ -125,9 +125,9 @@
     SELECT
         COUNT(*) AS recordCount
     FROM se_unlock unl
-        INNER JOIN se_client_card card ON unl.cardNum = card.cardNum
-        INNER JOIN ba_client cli ON unl.clientNum = cli.num
-        , (SELECT @i:=0) AS itable
+    INNER JOIN se_client_card card ON unl.cardId = card.id
+    INNER JOIN se_client cli ON unl.clientId = cli.id
+    , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
@@ -148,15 +148,15 @@
     SELECT
         (@i:=@i+1) AS id,
         cli.`name` AS clientName,
-        cli.num AS clientNum,
+        cli.clientNum,
         card.cardNum,
         unl.money,
         (SELECT `name` FROM ba_user WHERE id =  unl.operator) AS operator,
         unl.operateDt
     FROM se_unlock unl
-        INNER JOIN se_client_card card ON unl.cardNum = card.cardNum
-        INNER JOIN ba_client cli ON unl.clientNum = cli.num
-        , (SELECT @i:=0) AS itable
+    INNER JOIN se_client_card card ON unl.cardId = card.id
+    INNER JOIN se_client cli ON unl.clientId = cli.id
+    , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictCtrl.java
index 68d6bf0..1dce00e 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictCtrl.java
@@ -4,7 +4,9 @@
 import com.dy.common.mybatis.envm.Deleted;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.QueryResultVo;
 import com.dy.common.webUtil.ResultCodeMsg;
+import com.dy.pipIrrGlobal.pojoBa.BaClient;
 import com.dy.pipIrrGlobal.pojoBa.BaDistrict;
 import com.dy.pipIrrGlobal.util.DistrictLevel;
 import io.swagger.v3.oas.annotations.Operation;
@@ -21,8 +23,7 @@
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 
 @Slf4j
 @Tag(name = "琛屾斂鍖哄垝绠$悊", description = "琛屾斂鍖哄垝澧炲垹鏀规煡绛夋搷浣�")
@@ -207,4 +208,60 @@
             return BaseResponseUtils.buildSuccess(true) ;
         }
     }
+
+    /**
+     * 鏍规嵁绾у埆鑾峰彇琛屾斂鍖哄垝鍒楄〃
+     * @param id
+     * @return
+     */
+    @Operation(summary = "鑾峰緱琛屾斂鍖哄垝鍒楄〃", description = "杩斿洖琛屾斂鍖哄垝鍒楄〃")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖涓�椤靛啘鎴锋暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaClient.class))}
+            )
+    })
+    @GetMapping(path = "/level/{id}")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<Map<String, Object>>>> getDistrictgsByLevel(@PathVariable("id") Integer id){
+        if(id == null || id <= 0){
+            return BaseResponseUtils.buildFail("id涓嶈兘涓虹┖") ;
+        }
+
+        List<Map<String, Object>> map_Districts = Optional.ofNullable(sv.getDistrictgsByLevel(id)).orElse(new ArrayList<>());
+        if(map_Districts == null || map_Districts.size() == 0) {
+            return BaseResponseUtils.buildFail("鎮ㄨ緭鍏ョ殑灞傜骇鏈夎") ;
+        }
+        return BaseResponseUtils.buildSuccess(map_Districts);
+    }
+
+    /**
+     * 鏍规嵁鐖禝D鑾峰彇琛屾斂鍖哄垝鍒楄〃
+     * @param supperId
+     * @return
+     */
+    @Operation(summary = "鑾峰緱琛屾斂鍖哄垝鍒楄〃", description = "杩斿洖琛屾斂鍖哄垝鍒楄〃")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖涓�椤靛啘鎴锋暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaClient.class))}
+            )
+    })
+    @GetMapping(path = "/supperid/{supperId}")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<Map<String, Object>>>> getDistrictsBySupperId(@PathVariable("supperId") Long supperId){
+        if(supperId == null || supperId <= 0){
+            return BaseResponseUtils.buildFail("鐖禝D涓嶈兘涓虹┖") ;
+        }
+
+        List<Map<String, Object>> map_Districts = Optional.ofNullable(sv.getDistrictsBySupperId(supperId)).orElse(new ArrayList<>());
+        if(map_Districts == null || map_Districts.size() == 0) {
+            return BaseResponseUtils.buildFail("鎮ㄨ緭鍏ョ殑鐖剁骇ID鏈夎") ;
+        }
+        return BaseResponseUtils.buildSuccess(map_Districts);
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictSv.java
index 73c23fc..33f880e 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictSv.java
@@ -9,6 +9,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Map;
 
 @Slf4j
 @Service
@@ -98,4 +99,22 @@
             }
         }
     }
+
+    /**
+     * 鏍规嵁绾у埆鑾峰彇琛屾斂鍖哄垝鍒楄〃
+     * @param level
+     * @return
+     */
+    public List<Map<String, Object>> getDistrictgsByLevel(Integer level) {
+        return dao.getDistrictgsByLevel(level);
+    }
+
+    /**
+     * 鏍规嵁鐖禝D鑾峰彇琛屾斂鍖哄垝鍒楄〃
+     * @param supperId
+     * @return
+     */
+    public List<Map<String, Object>> getDistrictsBySupperId(Long supperId) {
+        return dao.getDistrictsBySupperId(supperId);
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/demo/DemoCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/demo/DemoCtrl.java
index 002e818..0d361bc 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/demo/DemoCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/demo/DemoCtrl.java
@@ -67,7 +67,7 @@
     })
     @GetMapping("info/{id}/")
     //http://127.0.0.1:8000/demo/demo/info/123234234/?name=寮犱笁
-    @SsoAop(power="123456", ifAllPower = {"123", "456"})
+    @SsoAop()
     public BaseResponse<String> info(@PathVariable String id, @RequestParam String name) throws GlException{
         if(name == null || name.trim().equals("")){
             return BaseResponseUtils.buildFail(ResultCodeMsg.RsMsg.ERROR_PARAM);
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/pom.xml b/pipIrr-platform/pipIrr-web/pipIrr-web-project/pom.xml
index c01d5cf..ef2e4e3 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/pom.xml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/pom.xml
@@ -15,7 +15,6 @@
     <name>pipIrr-web-project</name>
     <description>web椤圭洰閰嶇疆绯荤粺</description>
 
-
     <build>
         <plugins>
             <!-- 鐢熸垚涓嶅寘鍚緷璧杍ar鐨勫彲鎵цjar鍖�
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/PipIrrProjectApplication.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/PipIrrProjectApplication.java
index f46ea6a..f73cd42 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/PipIrrProjectApplication.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/PipIrrProjectApplication.java
@@ -18,7 +18,7 @@
 @EnableAspectJAutoProxy
 @EnableMultiDataSource
 @ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrProject"})
-@MapperScan({"com.dy.pipIrrGlobal.daoPr"})
+@MapperScan({"com.dy.pipIrrGlobal.daoPr", "com.dy.pipIrrGlobal.daoBa"})
 public class PipIrrProjectApplication {
 
     public static void main(String[] args) {
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideCtrl.java
index 9baeec2..308c8ee 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideCtrl.java
@@ -1,10 +1,13 @@
 package com.dy.pipIrrProject.divide;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.common.webUtil.ResultCodeMsg;
+import com.dy.pipIrrGlobal.pojoBa.BaClient;
 import com.dy.pipIrrGlobal.pojoPr.PrDivide;
 import com.dy.pipIrrGlobal.voPr.VoDivide;
 import com.dy.pipIrrGlobal.voSe.VoActiveCard;
@@ -16,19 +19,21 @@
 import io.swagger.v3.oas.annotations.responses.ApiResponse;
 import io.swagger.v3.oas.annotations.responses.ApiResponses;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.MediaType;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.time.format.DateTimeFormatter;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.*;
 
 /**
  * @author ZhuBaoMin
@@ -45,6 +50,11 @@
 public class DivideCtrl {
     private final DivideSv divideSv;
 
+    /**
+     * 鍒嗛〉鑾峰彇鍒嗘按鎴胯褰�
+     * @param vo
+     * @return
+     */
     @Operation(summary = "鑾峰緱涓�椤靛垎姘存埧璁板綍", description = "杩斿洖涓�椤靛垎姘存埧鏁版嵁")
     @ApiResponses(value = {
             @ApiResponse(
@@ -54,9 +64,9 @@
                             schema = @Schema(implementation = VoActiveCard.class))}
             )
     })
-    @GetMapping(path = "/getDivides", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @GetMapping(path = "/getDivides")
     @SsoAop()
-    public BaseResponse<QueryResultVo<List<VoDivide>>> getDivides(@RequestBody @Parameter(description = "鏌ヨform琛ㄥ崟json鏁版嵁", required = true) QueryVo vo){
+    public BaseResponse<QueryResultVo<List<VoDivide>>> getDivides(QueryVo vo){
         try {
             QueryResultVo<List<VoDivide>> res = divideSv.getDivides(vo);
             return BaseResponseUtils.buildSuccess(res);
@@ -66,6 +76,38 @@
         }
     }
 
+    /**
+     * 鏍规嵁鍒嗘按鎴夸富閿幏鍙栧垎姘存埧瀵硅薄
+     * @param id
+     * @return
+     */
+    @Operation(summary = "鑾峰緱涓�涓垎姘存埧", description = "杩斿洖涓�涓垎姘存埧鏁版嵁")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖涓�椤靛啘鎴锋暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaClient.class))}
+            )
+    })
+    @GetMapping(path = "/getone/{id}")
+    @SsoAop()
+    public BaseResponse<PrDivide> getOneDivide(@PathVariable("id") Long id){
+        try {
+            PrDivide res = divideSv.getOneDivide(id);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鏌ヨ鍐滄埛寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 娣诲姞鍒嗘按鎴胯褰�
+     * @param po
+     * @param bindingResult
+     * @return
+     */
     @Operation(summary = "娣诲姞鍒嗘按鎴胯褰�", description = "娣诲姞鍒嗘按鎴胯褰�")
     @ApiResponses(value = {
             @ApiResponse(
@@ -77,15 +119,30 @@
     })
     @PostMapping(path = "add", consumes = MediaType.APPLICATION_JSON_VALUE)
     @Transactional(rollbackFor = Exception.class)
-    @SsoAop()//@SsoAop(power = "-1")
+    @SsoAop()
     public BaseResponse<Boolean> add(@RequestBody @Parameter(description = "form琛ㄥ崟json鏁版嵁", required = true) @Valid PrDivide po, @Parameter(hidden = true) BindingResult bindingResult){
-        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         if(bindingResult != null && bindingResult.hasErrors()){
             return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
         }
+        // 鎺ユ敹鏉戠紪鍙凤紙涓婚敭锛�
+        Long villageId = po.getVillageid();
+
+        /**
+         * 鑾峰彇5绾ц鏀垮尯鍒掍俊鎭�
+         */
+        Map map_districts = Optional.ofNullable(divideSv.getDistrictsByVillageId(villageId)).orElse(new HashMap());
+        if(map_districts.size() <= 0) {
+            return BaseResponseUtils.buildFail("鍖哄垝淇℃伅鏈夎");
+        }
+
+        Long countryId = Long.parseLong(map_districts.get("countryId").toString());
+        Long townId = Long.parseLong(map_districts.get("townId").toString());
+        po.setCountyid(countryId);
+        po.setTownid(townId);
 
         Date operateTime = new Date();
         po.setOperatedt(operateTime);
+        po.setDeleted((byte)0);
         Integer rec = Optional.ofNullable(divideSv.addDivide(po)).orElse(0);
         if(rec == 0) {
             return BaseResponseUtils.buildFail(ProjectResultCode.DIVIDE_FAIL.getMessage());
@@ -93,4 +150,123 @@
         return BaseResponseUtils.buildSuccess(true) ;
     }
 
+    /**
+     * 鏍规嵁鍒嗘按鎴縄D閫昏緫鍒犻櫎鍒嗘按鎴�
+     * @param id
+     * @return
+     */
+    @Operation(summary = "鍒犻櫎涓�涓垎姘存埧", description = "鍒犻櫎涓�涓垎姘存埧鏁版嵁")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖涓�椤靛啘鎴锋暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaClient.class))}
+            )
+    })
+
+    @GetMapping(path = "/delone/{id}")
+    @SsoAop()
+    public BaseResponse<Boolean> deleteDivideById(@PathVariable("id") Long id){
+        try {
+            Integer res = Optional.ofNullable(divideSv.deleteDivideById(id)).orElse(0);
+            if(res == 0) {
+                return BaseResponseUtils.buildFail("鍒嗘按鎴垮垹闄ゅけ璐�");
+            }
+            return BaseResponseUtils.buildSuccess(true);
+        } catch (Exception e) {
+            log.error("鍒犻櫎鍒嗘按鎴垮紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 淇敼鍒嗘按鎴�
+     * @param po
+     * @param bindingResult
+     * @return
+     */
+    @Operation(summary = "淇敼鍒嗘按鎴胯褰�", description = "淇敼鍒嗘按鎴胯褰�")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = Boolean.class))}
+            )
+    })
+    @PostMapping(path = "update", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop()
+    public BaseResponse<Boolean> update(@RequestBody @Parameter(description = "form琛ㄥ崟json鏁版嵁", required = true) @Valid PrDivide po, @Parameter(hidden = true) BindingResult bindingResult){
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        // 鎺ユ敹鏉戠紪鍙凤紙涓婚敭锛�
+        Long villageId = po.getVillageid();
+
+        /**
+         * 鑾峰彇5绾ц鏀垮尯鍒掍俊鎭�
+         */
+        Map map_districts = Optional.ofNullable(divideSv.getDistrictsByVillageId(villageId)).orElse(new HashMap());
+        if(map_districts.size() <= 0) {
+            return BaseResponseUtils.buildFail("鍖哄垝淇℃伅鏈夎");
+        }
+
+        Long countryId = Long.parseLong(map_districts.get("countryId").toString());
+        Long townId = Long.parseLong(map_districts.get("townId").toString());
+
+        po.setCountyid(countryId);
+        po.setTownid(townId);
+
+        Date operateTime = new Date();
+        po.setOperatedt(operateTime);
+
+        Integer rec = Optional.ofNullable(divideSv.updateByPrimaryKey(po)).orElse(0);
+        if(rec == 0) {
+            return BaseResponseUtils.buildFail("鍒嗘按鎴夸慨鏀瑰け璐�");
+        }
+        return BaseResponseUtils.buildSuccess(true) ;
+    }
+
+    /**
+     * 瀵煎嚭鍒嗘按鎴垮垪琛�
+     * @param response
+     * @param vo
+     */
+    @SneakyThrows(IOException.class)
+    @RequestMapping(value = "/exportDivides", method = RequestMethod.GET)
+    public void exportDivides(HttpServletResponse response, QueryVo vo) {
+        setExcelRespProp(response, "鍒嗘按鎴垮垪琛�");
+        //List<VoDivide> memberList = LocalJsonUtil.getListFromJson("json/members.json", VoDivide.class);
+        List<VoDivide> memberList = divideSv.exportDivides(vo);
+
+        EasyExcel.write(response.getOutputStream())
+                .head(VoDivide.class)
+                .excelType(ExcelTypeEnum.XLSX)
+                .sheet("鍒嗘按鎴垮垪琛�")
+                .doWrite(memberList);
+    }
+
+    @SneakyThrows
+    @RequestMapping(value = "/importDivides", method = RequestMethod.POST)
+    @ResponseBody
+    public BaseResponse<Boolean> importDivides(@RequestPart("file") MultipartFile file) {
+        List<VoDivide> memberList = EasyExcel.read(file.getInputStream())
+                .head(VoDivide.class)
+                .sheet()
+                .doReadSync();
+        return BaseResponseUtils.buildSuccess(memberList) ;
+    }
+
+    /**
+     * 璁剧疆excel涓嬭浇鍝嶅簲澶村睘鎬�
+     */
+    private void setExcelRespProp(HttpServletResponse response, String rawFileName) throws UnsupportedEncodingException {
+        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+        response.setCharacterEncoding("utf-8");
+        String fileName = URLEncoder.encode(rawFileName, "UTF-8").replaceAll("\\+", "%20");
+        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideSv.java
index 9633b5f..ed8e8be 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideSv.java
@@ -1,6 +1,7 @@
 package com.dy.pipIrrProject.divide;
 
 import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pipIrrGlobal.daoBa.BaDistrictMapper;
 import com.dy.pipIrrGlobal.daoPr.PrDivideMapper;
 import com.dy.pipIrrGlobal.pojoPr.PrDivide;
 import com.dy.pipIrrGlobal.voPr.VoDivide;
@@ -9,6 +10,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -24,6 +26,9 @@
 public class DivideSv {
     @Autowired
     private PrDivideMapper prDivideMapper;
+
+    @Autowired
+    private BaDistrictMapper baDistrictMapper;
 
     /**
      * 娣诲姞鍒嗘按鎴�
@@ -42,13 +47,83 @@
     public QueryResultVo<List<VoDivide>> getDivides(QueryVo queryVo) {
         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
 
+        // 璁$畻绗﹀悎鏉′欢鐨勮褰曟暟
         Long itemTotal = prDivideMapper.getRecordCount(params);
 
         QueryResultVo<List<VoDivide>> rsVo = new QueryResultVo<>() ;
-        rsVo.pageSize = queryVo.pageSize ;
-        rsVo.pageCurr = queryVo.pageCurr ;
+
+        Integer pageCurr = 0;
+        Integer pageSize = 10000;
+        rsVo.pageCurr = 1;
+        rsVo.pageSize = 10000;
+        if(queryVo.pageSize != null && queryVo.pageCurr != null) {
+            rsVo.pageSize = queryVo.pageSize ;
+            rsVo.pageCurr = queryVo.pageCurr;
+            pageSize = queryVo.pageSize ;
+            pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString());
+        }
+        params.put("pageCurr", pageCurr);
+        params.put("pageSize", pageSize);
+
         rsVo.calculateAndSet(itemTotal, params);
         rsVo.obj = prDivideMapper.getDivides(params);
         return rsVo ;
     }
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢瀵煎嚭鍒嗘按鎴垮垪琛�
+     * @param queryVo
+     * @return
+     */
+    public List<VoDivide> exportDivides(QueryVo queryVo) {
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
+        List<VoDivide> rsVo = new ArrayList<>();
+        rsVo = prDivideMapper.getDivides(params);
+        return rsVo ;
+    }
+
+    /**
+     * 鏍规嵁鍒嗘按鎴夸富閿幏鍙栧垎姘存埧瀵硅薄
+     * @param id
+     * @return
+     */
+    public PrDivide getOneDivide(Long id) {
+        return prDivideMapper.selectByPrimaryKey(id);
+    }
+
+    /**
+     * 鏍规嵁涓婚敭閫昏緫鍒犻櫎涓�涓垎姘存埧
+     * @param id
+     * @return
+     */
+    public Integer deleteDivideById(Long id) {
+        return prDivideMapper.deleteDivideById(id);
+    }
+
+    /**
+     * 鏍规嵁鏉戠紪鍙疯幏鍙�5绾у尯鍒掍俊鎭�
+     * @param villageId 鏉戠紪鍙凤紙涓婚敭锛�
+     * @return 5绾ц鏀垮尯鍒掍俊鎭�
+     */
+    public Map getDistrictsByVillageId(Long villageId) {
+        return baDistrictMapper.getDistrictsByVillageId(villageId);
+    }
+
+    /**
+     * 淇敼鍒嗘按鎴垮璞�
+     * @param po 鍐滄埛瀵硅薄
+     * @return 淇敼璁板綍鏉℃暟
+     */
+    public Integer updateByPrimaryKey(PrDivide po) {
+        return prDivideMapper.updateByPrimaryKey(po);
+    }
+
+    /**
+     * 鏍规嵁鍒嗘按鎴跨紪鍙疯幏鍙栨墍灞炵墖鍖虹紪鍙�
+     * @param divideId 鍒嗘按鎴縄D
+     * @return 鎵�灞炵墖鍖篒D
+     */
+    public Long getBlockIdById(Long divideId) {
+        return prDivideMapper.getBlockIdById(divideId);
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/QueryVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/QueryVo.java
index 3e488ce..6ae085f 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/QueryVo.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/QueryVo.java
@@ -22,6 +22,6 @@
     @Schema(description = "鍐滄埛濮撳悕")
     public String divideName;
 
-    @Schema(description = "IC鍗″彿")
+    @Schema(description = "鐗囧尯鍚嶇О")
     public String blockName;
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java
index 68de44c..756847a 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java
@@ -7,7 +7,6 @@
 import com.dy.common.webUtil.ResultCodeMsg;
 import com.dy.pipIrrGlobal.pojoSe.SeActiveCard;
 import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
-import com.dy.pipIrrGlobal.voBa.VoAreaCode;
 import com.dy.pipIrrGlobal.voSe.VoActiveCard;
 import com.dy.pipIrrSell.clientCard.CardStateENUM;
 import com.dy.pipIrrSell.clientCard.ClientCardSv;
@@ -25,6 +24,7 @@
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.MediaType;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.BindingResult;
@@ -49,6 +49,14 @@
     private final ClientCardSv clientCardSv;
     private final RechargeCtrl rechargeCtrl;
 
+    @Value("${projectCode.ym}")
+    private Integer projectCode;
+
+    /**
+     * 鑾峰彇寮�鍗¤褰�
+     * @param vo
+     * @return
+     */
     @Operation(summary = "鑾峰緱涓�椤靛紑鍗¤褰�", description = "杩斿洖涓�椤靛紑鍗℃暟鎹�")
     @ApiResponses(value = {
             @ApiResponse(
@@ -58,9 +66,10 @@
                             schema = @Schema(implementation = VoActiveCard.class))}
             )
     })
-    @GetMapping(path = "/getActiveCards", consumes = MediaType.APPLICATION_JSON_VALUE)
+    //@GetMapping(path = "/getActiveCards", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @GetMapping(path = "/getActiveCards")
     @SsoAop()
-    public BaseResponse<QueryResultVo<List<VoActiveCard>>> getActiveCards(@RequestBody @Parameter(description = "鏌ヨform琛ㄥ崟json鏁版嵁", required = true) QueryVo vo){
+    public BaseResponse<QueryResultVo<List<VoActiveCard>>> getActiveCards(QueryVo vo){
         try {
             QueryResultVo<List<VoActiveCard>> res = activeCardSv.getActiveCards(vo);
             return BaseResponseUtils.buildSuccess(res);
@@ -70,6 +79,12 @@
         }
     }
 
+    /**
+     * 寮�鍗℃搷浣�
+     * @param po
+     * @param bindingResult
+     * @return
+     */
     @Operation(summary = "寮�鍗�", description = "鏂板紑鍐滄埛鍗�")
     @ApiResponses(value = {
             @ApiResponse(
@@ -95,16 +110,18 @@
          * townId       闀囩骇鍖哄垝浠g爜
          * villageId    鏉戠骇鍖哄垝浠g爜
          */
-        VoAreaCode voAreaCode = activeCardSv.getAreaCodeByNum(po.getClientNum());
-        if(voAreaCode == null) {
-            return BaseResponseUtils.buildFail(SellResultCode.AREA_CODE_MISTAKE.getMessage());
-        }
-        String provinceId = voAreaCode.getProvinceId();
-        String cityId = voAreaCode.getCityId();
-        String countryId = voAreaCode.getCountryId();
-        String townId = voAreaCode.getTownId();
-        String villageId = voAreaCode.getVillageId();
-        String areaCode = provinceId + cityId + countryId + townId + villageId;
+        //VoAreaCode voAreaCode = activeCardSv.getAreaCodeByNum(po.getClientNum());
+        //if(voAreaCode == null) {
+        //    return BaseResponseUtils.buildFail(SellResultCode.AREA_CODE_MISTAKE.getMessage());
+        //}
+        //String provinceId = voAreaCode.getProvinceId();
+        //String cityId = voAreaCode.getCityId();
+        //String countryId = voAreaCode.getCountryId();
+        //String townId = voAreaCode.getTownId();
+        //String villageId = voAreaCode.getVillageId();
+        //String areaCode = provinceId + cityId + countryId + townId + villageId;
+
+        String areaCode = String.valueOf(activeCardSv.getAreaCodeByNum(po.getClientNum()));
 
         /**
          * 鏍规嵁琛屾斂鍖哄垝涓诧紙areaCode锛夊湪姘村崱琛ㄤ腑閽堝姘村崱缂栧彿锛坈ardNum锛夎繘琛屾ā绯婃煡璇�
@@ -138,6 +155,8 @@
          */
         String cardAddr = po.getCardAddr();
         String clientNum = po.getClientNum();
+        //Long clientId = po.getClientId();
+
         Integer cardCost = po.getCardCost();
         Float amount = po.getAmount();
         Long paymentId = po.getPaymentId();
@@ -146,13 +165,19 @@
         Date createTime = new Date();
 
         /**
+         * 鏍规嵁鍐滄埛缂栧彿鑾峰彇鍐滄埛ID
+         */
+        Long clientId = activeCardSv.getClientIdByNum(clientNum);
+
+        /**
          * 娣诲姞鍐滄埛鍗¤褰�
          */
         SeClientCard seClientCard = new SeClientCard();
         seClientCard.setCardaddr(cardAddr);
         seClientCard.setCardnum(cardNum);
-        seClientCard.setClientnum(clientNum);
-        seClientCard.setMoney(0.0);
+        //seClientCard.setClientnum(clientNum);
+        seClientCard.setClientid(clientId);
+        seClientCard.setMoney(0f);
         seClientCard.setState(CardStateENUM.NORMAL.getCode());
         seClientCard.setCreatedt(createTime);
         seClientCard.setLastoper(LastOperateENUM.ACTIVE.getCode());
@@ -166,8 +191,11 @@
          * 娣诲姞寮�鍗¤褰�
          */
         SeActiveCard activeCard = new SeActiveCard();
-        activeCard.setCardnum(cardNum);
-        activeCard.setClientnum(clientNum);
+        //activeCard.setCardnum(cardNum);
+        //activeCard.setClientnum(clientNum);
+
+        activeCard.setCardid(cardId);
+        activeCard.setClientid(clientId);
         activeCard.setCardcost(cardCost);
         activeCard.setPaymentid(paymentId);
         activeCard.setOperatetype(OperateTypeENUM.ACTIVE.getCode());
@@ -184,6 +212,7 @@
          */
         po.setCardNum(cardNum);
         if(amount != null && amount > 0) {
+            po.setClientId(clientId);
             DtoRecharge dtoRecharge = RechargeDtoMapper.INSTANCT.po2vo(po);
             dtoRecharge.setMoney(0f);
             dtoRecharge.setGift(0f);
@@ -194,7 +223,10 @@
             }
         }
 
-        return BaseResponseUtils.buildSuccess(cardNum) ;
+        Map map = new HashMap();
+        map.put("projectCode", projectCode);
+        map.put("cardNum", cardNum);
+        return BaseResponseUtils.buildSuccess(map) ;
     }
 
     @Operation(summary = "琛ュ崱", description = "琛ュ崱")
@@ -217,7 +249,8 @@
         /**
          * cardId           姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛屾洿鏂版按鍗¤〃鐢級
          * cardNum          姘村崱缂栧彿
-         * clientNum        鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛屾坊鍔犺ˉ鍗′娇鐢級
+         //* clientNum        鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛屾坊鍔犺ˉ鍗′娇鐢級
+         * clientId         鍐滄埛ID锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛屾坊鍔犺ˉ鍗′娇鐢級
          * cardCost         鍗$墖璐圭敤
          * reissueAmount    琛ュ崱閲戦锛岃ˉ鍗℃椂浣跨敤
          * paymentId        鏀粯鏂瑰紡缂栧彿
@@ -227,7 +260,8 @@
          */
         Long cardId = 0L;
         String cardNum = po.getCardNum();
-        String clientNum = "";
+        //String clientNum = "";
+        Long clientId = 0L;
         Integer cardCost = po.getCardCost();
         Double reissueAmount = po.getReissueAmount();
         Long paymentId = po.getPaymentId();
@@ -243,7 +277,8 @@
             return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_ERROR.getMessage());
         }
         cardId = Long.parseLong(map.get("cardId").toString());
-        clientNum = map.get("clientNum").toString();
+        //clientNum = map.get("clientNum").toString();
+        clientId = Long.parseLong(map.get("clientId").toString());
 
         /**
          * 淇敼鍐滄埛鍗′俊鎭細
@@ -263,8 +298,10 @@
          * 娣诲姞琛ュ崱璁板綍
          */
         SeActiveCard activeCard = new SeActiveCard();
-        activeCard.setCardnum(cardNum);
-        activeCard.setClientnum(clientNum);
+        //activeCard.setCardnum(cardNum);
+        //activeCard.setClientnum(clientNum);
+        activeCard.setCardid(cardId);
+        activeCard.setClientid(clientId);
         activeCard.setCardcost(cardCost);
         activeCard.setPaymentid(paymentId);
         activeCard.setReissueamount(reissueAmount);
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardSv.java
index 8ce52e5..2d55567 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardSv.java
@@ -1,19 +1,16 @@
 package com.dy.pipIrrSell.activeCard;
 
 import com.dy.common.webUtil.QueryResultVo;
-import com.dy.pipIrrGlobal.daoBa.BaClientMapper;
 import com.dy.pipIrrGlobal.daoSe.SeActiveCardMapper;
 import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper;
+import com.dy.pipIrrGlobal.daoSe.SeClientMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeActiveCard;
-import com.dy.pipIrrGlobal.voBa.VoAreaCode;
 import com.dy.pipIrrGlobal.voSe.VoActiveCard;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.common.utils.PojoUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.Map;
 
@@ -33,22 +30,22 @@
     @Autowired
     private SeClientCardMapper seClientCardMapper;
 
+    //@Autowired
+    //private BaClientMapper baClientMapper;
+
     @Autowired
-    private BaClientMapper baClientMapper;
+    private SeClientMapper seClientMapper;
 
     public QueryResultVo<List<VoActiveCard>> getActiveCards(QueryVo queryVo) {
         //瀹屽杽鏌ヨ寮�鍗¤褰曠殑璧锋鏃堕棿
-        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-
-        LocalDateTime activeTimeStart = queryVo.activeTimeStart;
-        LocalDateTime activeTimeStop = queryVo.activeTimeStop;
+        String activeTimeStart = queryVo.activeTimeStart;
+        String activeTimeStop = queryVo.activeTimeStop;
         if(activeTimeStart != null) {
-            activeTimeStart = LocalDateTime.parse(df.format(activeTimeStart) + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            activeTimeStart = activeTimeStart + " 00:00:00";
             queryVo.setActiveTimeStart(activeTimeStart);
         }
-
         if(activeTimeStop != null) {
-            activeTimeStop = LocalDateTime.parse(df.format(activeTimeStop) + " 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            activeTimeStop = activeTimeStop + " 23:59:59";
             queryVo.setActiveTimeStop(activeTimeStop);
         }
 
@@ -57,8 +54,19 @@
         Long itemTotal = seActiveCardMapper.getRecordCount(params);
 
         QueryResultVo<List<VoActiveCard>> rsVo = new QueryResultVo<>() ;
-        rsVo.pageSize = queryVo.pageSize ;
-        rsVo.pageCurr = queryVo.pageCurr ;
+        Integer pageCurr = 0;
+        Integer pageSize = 10000;
+        rsVo.pageCurr = 1;
+        rsVo.pageSize = 10000;
+        if(queryVo.pageSize != null && queryVo.pageCurr != null) {
+            rsVo.pageSize = queryVo.pageSize ;
+            rsVo.pageCurr = queryVo.pageCurr;
+            pageSize = queryVo.pageSize ;
+            pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString());
+        }
+        params.put("pageCurr", pageCurr);
+        params.put("pageSize", pageSize);
+
         rsVo.calculateAndSet(itemTotal, params);
         rsVo.obj = seActiveCardMapper.getActiveCards(params);
         return rsVo ;
@@ -74,8 +82,17 @@
      * @param clientNum 鍐滄埛缂栧彿
      * @return 5绾ц鏀垮尯鍒掍唬鐮�
      */
-    public VoAreaCode getAreaCodeByNum(String clientNum) {
-        return baClientMapper.getAreaCodeByNum(clientNum);
+    public Long getAreaCodeByNum(String clientNum) {
+        return seClientMapper.getAreaCodeByNum(clientNum);
+    }
+
+    /**
+     * 鏍规嵁鍐滄埛缂栧彿鑾峰彇鍐滄埛ID
+     * @param clientNum
+     * @return
+     */
+    public Long getClientIdByNum(String clientNum) {
+        return seClientMapper.getClientIdByNum(clientNum);
     }
 
     /**
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/DtoActiveCard.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/DtoActiveCard.java
index d5e63c4..b8b4e05 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/DtoActiveCard.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/DtoActiveCard.java
@@ -21,26 +21,23 @@
     public static final long serialVersionUID = 20231191728001L;
 
     /**
-     * 姘村崱鍦板潃
+     * 姘村崱鍦板潃锛屼粎淇濆瓨锛屾棤涓氬姟
      */
     @Schema(description = "姘村崱鍦板潃", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     @NotBlank(message = "姘村崱鍦板潃涓嶈兘涓虹┖")
     private String cardAddr;
 
     /**
-     * 鍐滄埛缂栧彿
-     * 寮�鍗℃椂浣跨敤
+     * 鍐滄埛缂栧彿锛屽紑鍗′娇鐢�
      */
     @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     private String clientNum;
 
     /**
-     * 鍐滄埛ID锛堜富閿級
-     * 搴熷純锛屾敼鐢╟lientNum
+     * 鍐滄埛ID锛堜富閿級锛屼笉鏄紑鍗℃帴鍙d紶鍏ワ紝鐢卞啘鎴风紪鍙疯幏寰楋紝淇濆瓨寮�鍗¤褰曞拰鍏呭�艰褰曢兘闇�瑕�
      */
-    //@Schema(description = "鍐滄埛ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    //@Positive(message = "鍐滄埛ID蹇呴』涓哄ぇ浜�0鐨勬暣鏁�")
-    //private Long clientId;
+    @Schema(description = "鍐滄埛ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Long clientId;
 
     /**
      * 姘村崱缂栧彿
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/QueryVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/QueryVo.java
index 23042d4..3c87f94 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/QueryVo.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/QueryVo.java
@@ -4,8 +4,6 @@
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
-import java.time.LocalDateTime;
-
 /**
  * @author ZhuBaoMin
  * @date 2023/12/5 20:00
@@ -35,9 +33,15 @@
     @Schema(description = "鍗$墖鐘舵��")
     private Byte state;
 
+    //@Schema(description = "寮�鍗℃椂闂確寮�濮�")
+    //public LocalDateTime activeTimeStart;
+    //
+    //@Schema(description = "寮�鍗℃椂闂確缁撴潫")
+    //public LocalDateTime activeTimeStop;
+
     @Schema(description = "寮�鍗℃椂闂確寮�濮�")
-    public LocalDateTime activeTimeStart;
+    public String activeTimeStart;
 
     @Schema(description = "寮�鍗℃椂闂確缁撴潫")
-    public LocalDateTime activeTimeStop;
+    public String activeTimeStop;
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/RechargeDtoMapper.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/RechargeDtoMapper.java
index 3bddd0e..ac7d64d 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/RechargeDtoMapper.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/RechargeDtoMapper.java
@@ -16,10 +16,10 @@
 public interface RechargeDtoMapper {
     RechargeDtoMapper INSTANCT = Mappers.getMapper(RechargeDtoMapper.class);
 
-    //@Mapping(target = "cardAddr", source = "cardAddr")
-    //@Mapping(target = "clientId", source = "clientId")
+    //@Mapping(target = "cardId", source = "cardId")
+    @Mapping(target = "clientId", source = "clientId")
+
     @Mapping(target = "cardNum", source = "cardNum")
-    @Mapping(target = "clientNum", source = "clientNum")
     @Mapping(target = "amount", source = "amount")
     @Mapping(target = "paymentId", source = "paymentId")
     @Mapping(target = "remarks", source = "remarks")
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/CancelCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/CancelCtrl.java
index 726052e..a468b19 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/CancelCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/CancelCtrl.java
@@ -8,6 +8,7 @@
 import com.dy.pipIrrGlobal.pojoSe.SeCancel;
 import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
 import com.dy.pipIrrGlobal.voSe.VoCancel;
+import com.dy.pipIrrSell.clientCard.CardStateENUM;
 import com.dy.pipIrrSell.clientCard.ClientCardSv;
 import com.dy.pipIrrSell.clientCard.LastOperateENUM;
 import com.dy.pipIrrSell.result.SellResultCode;
@@ -54,9 +55,9 @@
                             schema = @Schema(implementation = VoCancel.class))}
             )
     })
-    @GetMapping(path = "/getCancels", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @GetMapping(path = "/getCancels")
     @SsoAop()
-    public BaseResponse<QueryResultVo<List<VoCancel>>> getCancels(@RequestBody @Parameter(description = "鏌ヨform琛ㄥ崟json鏁版嵁", required = true) QueryVo vo){
+    public BaseResponse<QueryResultVo<List<VoCancel>>> getCancels(QueryVo vo){
         try {
             QueryResultVo<List<VoCancel>> res = cancelSv.getCancels(vo);
             return BaseResponseUtils.buildSuccess(res);
@@ -86,8 +87,8 @@
 
         /**
          * cardId           姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardAddr鍙嶆煡锛屼慨鏀瑰啘鎴峰崱浣跨敤锛�
+         * clientId         鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛�
          * cardNum          姘村崱缂栧彿
-         * clientNum        鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛屾坊鍔犳敞閿�浣跨敤锛�
          * refund           閫�娆鹃噾棰�
          * refundType       閫�娆炬柟寮�
          * remarks          澶囨敞
@@ -96,7 +97,7 @@
          */
         Long cardId = 0L;
         String cardNum = po.getCardNum();
-        String clientNum = "";
+        Long clientId = 0L;
         Float refund = po.getRefund();
         Byte refundType = po.getRefundType();
         String remarks = po.getRemarks();
@@ -111,16 +112,18 @@
             return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_MISTAKE.getMessage());
         }
         cardId = Long.parseLong(map.get("cardId").toString());
-        clientNum = map.get("clientNum").toString();
+        clientId = Long.parseLong(map.get("clientId").toString());
 
         /**
          * 淇敼鍐滄埛鍗′俊鎭細
-         *      鎸傚け鏃堕棿
+         *      娉ㄩ攢鏃堕棿
          *      鏈�鍚庢搷浣滅被鍨�-4
          */
         SeClientCard seClientCard = new SeClientCard();
         seClientCard.setId(cardId);
         seClientCard.setCanceldt(cancelTime);
+        seClientCard.setMoney(0f);
+        seClientCard.setState(CardStateENUM.CANCELLED.getCode());
         seClientCard.setLastoper(LastOperateENUM.CANCEL.getCode());
         Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
         if(rec_updateClientCard == 0) {
@@ -128,11 +131,13 @@
         }
 
         /**
-         * 娣诲姞鎸傚け璁板綍
+         * 娣诲姞娉ㄩ攢璁板綍
          */
         SeCancel seCancel = new SeCancel();
-        seCancel.setCardnum(cardNum);
-        seCancel.setClientnum(clientNum);
+        //seCancel.setCardnum(cardNum);
+        //seCancel.setClientnum(clientNum);
+        seCancel.setCardid(cardId);
+        seCancel.setClientid(clientId);
         seCancel.setRefund(refund);
         seCancel.setRefundtype(refundType);
         seCancel.setRemarks(remarks);
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/CancelSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/CancelSv.java
index e7474bf..1c83f8a 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/CancelSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/CancelSv.java
@@ -9,8 +9,6 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.Map;
 
@@ -29,17 +27,14 @@
 
     public QueryResultVo<List<VoCancel>> getCancels(QueryVo queryVo) {
         //瀹屽杽鏌ヨ娉ㄩ攢璁板綍鐨勮捣姝㈡椂闂�
-        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-
-        LocalDateTime cancelTimeStart = queryVo.cancelTimeStart;
-        LocalDateTime cancelTimeStop = queryVo.cancelTimeStop;
+        String cancelTimeStart = queryVo.cancelTimeStart;
+        String cancelTimeStop = queryVo.cancelTimeStop;
         if(cancelTimeStart != null) {
-            cancelTimeStart = LocalDateTime.parse(df.format(cancelTimeStart) + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            cancelTimeStart = cancelTimeStart + " 00:00:00";
             queryVo.setCancelTimeStart(cancelTimeStart);
         }
-
         if(cancelTimeStop != null) {
-            cancelTimeStop = LocalDateTime.parse(df.format(cancelTimeStop) + " 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            cancelTimeStop = cancelTimeStop + " 23:59:59";
             queryVo.setCancelTimeStop(cancelTimeStop);
         }
 
@@ -48,8 +43,19 @@
         Long itemTotal = seCancelMapper.getRecordCount(params);
 
         QueryResultVo<List<VoCancel>> rsVo = new QueryResultVo<>() ;
-        rsVo.pageSize = queryVo.pageSize ;
-        rsVo.pageCurr = queryVo.pageCurr ;
+        Integer pageCurr = 0;
+        Integer pageSize = 10000;
+        rsVo.pageCurr = 1;
+        rsVo.pageSize = 10000;
+        if(queryVo.pageSize != null && queryVo.pageCurr != null) {
+            rsVo.pageSize = queryVo.pageSize ;
+            rsVo.pageCurr = queryVo.pageCurr;
+            pageSize = queryVo.pageSize ;
+            pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString());
+        }
+        params.put("pageCurr", pageCurr);
+        params.put("pageSize", pageSize);
+
         rsVo.calculateAndSet(itemTotal, params);
         rsVo.obj = seCancelMapper.getCancels(params);
         return rsVo ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/QueryVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/QueryVo.java
index b8714a2..a421efa 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/QueryVo.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/QueryVo.java
@@ -4,8 +4,6 @@
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
-import java.time.LocalDateTime;
-
 /**
  * @author ZhuBaoMin
  * @date 2023/12/6 14:18
@@ -29,8 +27,8 @@
 
 
     @Schema(description = "娉ㄩ攢鏃堕棿_寮�濮�")
-    public LocalDateTime cancelTimeStart;
+    public String cancelTimeStart;
 
     @Schema(description = "娉ㄩ攢鏃堕棿_缁撴潫")
-    public LocalDateTime cancelTimeStop;
+    public String cancelTimeStop;
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientCtrl.java
new file mode 100644
index 0000000..46cae34
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientCtrl.java
@@ -0,0 +1,380 @@
+package com.dy.pipIrrSell.client;
+
+import com.dy.common.aop.SsoAop;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.common.webUtil.ResultCodeMsg;
+import com.dy.pipIrrGlobal.pojoBa.BaClient;
+import com.dy.pipIrrGlobal.pojoSe.SeClient;
+import com.dy.pipIrrGlobal.voSe.VoClient;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.MediaType;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/21 19:17
+ * @LastEditTime 2023/12/21 19:17
+ * @Description
+ */
+
+@Slf4j
+@Tag(name = "鍐滄埛绠$悊", description = "鍐滄埛鎿嶄綔")
+@RestController
+@RequestMapping(path="client")
+@RequiredArgsConstructor
+public class ClientCtrl {
+    private final ClientSv clientSv;
+
+    /**
+     * 鑾峰彇鍐滄埛鍒楄〃
+     * @param vo
+     * @return
+     */
+    @Operation(summary = "鑾峰緱涓�椤靛啘鎴�", description = "杩斿洖涓�椤靛啘鎴锋暟鎹�")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖涓�椤靛啘鎴锋暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaClient.class))}
+            )
+    })
+    @GetMapping(path = "get")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoClient>>> get(QueryVo vo){
+        try {
+            QueryResultVo<List<VoClient>> res = clientSv.getClients(vo);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鏌ヨ鍐滄埛寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 鑾峰彇浜ゆ槗璁板綍
+     * @param vo
+     * @return
+     */
+    @Operation(summary = "鑾峰緱涓�椤典氦鏄撹褰�", description = "杩斿洖涓�椤典氦鏄撹褰�")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖涓�椤靛啘鎴锋暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaClient.class))}
+            )
+    })
+    @GetMapping(path = "getOperates")
+    @SsoAop()
+    public BaseResponse<Map> getOperates(QueryOperate vo){
+        try {
+           Map res = clientSv.getOperates(vo);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鏌ヨ浜ゆ槗璁板綍寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 鑾峰彇浜ゆ槗姹囨�昏褰�
+     * @param vo
+     * @return
+     */
+    @Operation(summary = "鑾峰緱涓�椤典氦鏄撴眹鎬昏褰�", description = "杩斿洖涓�椤典氦鏄撴眹鎬昏褰�")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖涓�椤靛啘鎴锋暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaClient.class))}
+            )
+    })
+    @GetMapping(path = "getStatistics")
+    @SsoAop()
+    public BaseResponse<Map> getStatistics(QueryStatistic vo){
+        try {
+            Map res = clientSv.getStatistics(vo);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鏌ヨ浜ゆ槗姹囨�昏褰曞紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 鏍规嵁涓婚敭鑾峰彇涓�涓啘鎴峰璞�
+     * @param id
+     * @return
+     */
+    @Operation(summary = "鑾峰緱涓�涓啘鎴�", description = "杩斿洖涓�涓啘鎴锋暟鎹�")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖涓�椤靛啘鎴锋暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaClient.class))}
+            )
+    })
+    @GetMapping(path = "/getone/{id}")
+    @SsoAop()
+    public BaseResponse<VoClient> getOneClient(@PathVariable("id") Long id){
+        try {
+            VoClient res = clientSv.getOneClient(id);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鏌ヨ鍐滄埛寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+
+    /**
+     * 娣诲姞涓�涓啘鎴峰璞�
+     * @param po
+     * @param bindingResult
+     * @return
+     */
+    @Operation(summary = "娣诲姞鍐滄埛璁板綍", description = "娣诲姞鍐滄埛璁板綍")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = Boolean.class))}
+            )
+    })
+    @PostMapping(path = "add", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop()
+    public BaseResponse<Boolean> add(@RequestBody @Parameter(description = "form琛ㄥ崟json鏁版嵁", required = true) @Valid DtoClient po, @Parameter(hidden = true) BindingResult bindingResult){
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        // 鎺ユ敹鏉戠紪鍙凤紙涓婚敭锛�
+        Long villageId = po.getVillageid();
+
+        /**
+         * 鑾峰彇5绾ц鏀垮尯鍒掍俊鎭�
+         */
+        Map map_districts = Optional.ofNullable(clientSv.getDistrictsByVillageId(villageId)).orElse(new HashMap());
+        if(map_districts.size() <= 0) {
+            return BaseResponseUtils.buildFail("鍖哄垝淇℃伅鏈夎");
+        }
+
+        String provinceNum = map_districts.get("provinceNum").toString();
+        String cityNum = map_districts.get("cityNum").toString();
+        Long countryId = Long.parseLong(map_districts.get("countryId").toString());
+        String countyNum = map_districts.get("countyNum").toString();
+        String countryName = map_districts.get("countryName").toString();
+        Long townId = Long.parseLong(map_districts.get("townId").toString());
+        String townNum = map_districts.get("townNum").toString();
+        String townName = map_districts.get("townName").toString();
+        String villageNum = map_districts.get("villageNum").toString();
+        String villageName = map_districts.get("villageName").toString();
+
+        // 鐢熸垚8浣嶈鏀垮尯鍒掔紪鐮侊紝鐢熸垚鍐滄埛缂栧彿鐢�
+        String district8 = countyNum + townNum + villageNum;
+        // 鐢熸垚鍐滄埛缂栧彿
+        String clientNum = generateClientNum(district8);
+        // 鐢熸垚12浣�5绾ц鏀垮尯鍒掔紪鐮佷覆鍙婂悕绉颁覆
+        Long districtNum = Long.parseLong(provinceNum + cityNum + district8);
+        String districtTitle = countryName + townName + villageName;
+
+        // 鐢熸垚铏氭嫙鍗″彿
+        Long virtualId = Optional.ofNullable(clientSv.getMa1xVirtualId()).orElse(0L);
+        if(virtualId == 0) {
+            virtualId = 1000000000L;
+        }else {
+            virtualId = virtualId + 1;
+            if(virtualId > 10000000000L) {
+                return BaseResponseUtils.buildFail("铏氭嫙鍗″彿瓒呴檺");
+            }
+        }
+
+        SeClient seClient = DtoClientToSeClient.INSTANCT.po2vo(po);
+        seClient.setCountyid(countryId);
+        seClient.setTownid(townId);
+        seClient.setVirtualid(virtualId);
+        seClient.setClientnum(clientNum);
+        seClient.setDistrictnum(districtNum);
+        seClient.setDistricttitle(districtTitle);
+        Date operateTime = new Date();
+        seClient.setOperatedt(operateTime);
+
+        seClient.setDisabled((byte)0);
+        seClient.setDeleted((byte)0);
+        Integer rec = Optional.ofNullable(clientSv.addClient(seClient)).orElse(0);
+        if(rec == 0) {
+            return BaseResponseUtils.buildFail("娣诲姞鍐滄埛澶辫触");
+        }
+        return BaseResponseUtils.buildSuccess(true) ;
+    }
+
+    /**
+     * 鐢熸垚10涓哄啘鎴风紪鍙�
+     * 1. 鍒板啘鎴疯〃涓煡璇�6浣嶅尯鍒掍覆寮�澶寸殑鏈�澶х殑鍐滄埛缂栧彿
+     * 2. 鏄惁鍙栧埌璁板綍
+     *      2.1 鍙栧埌
+     *          2.1.1 鍙栧嚭鍚�4浣嶉『搴忓彿骞惰浆鎴愭暣褰�
+     *          2.1.2. 鏁村舰鏍煎紡鐨勯『搴忓彿鍔�1骞跺垽鏂槸鍚﹀ぇ浜�9999
+     *              2.1.2.1 濡傛灉澶т簬鍒欐彁绀虹敤鎴风紪鍙峰凡婊�
+     *              2.1.2.2 濡傛灉涓嶅ぇ 6浣嶅尯鍒掑姞涓婃牸寮忓寲鍚庣殑椤哄簭鍙�
+     *      2.2 鏈彇鍒� 6浣嶅尯鍒掑姞涓�0001
+     * 3. 杩斿洖鍐滄埛缂栧彿
+     */
+    private String generateClientNum(String district8) {
+        String clientNum = Optional.ofNullable(clientSv.getClientNumOfMax(district8)).orElse("");
+        if(clientNum != null && clientNum.trim().length() > 0) {
+            Integer number = Integer.parseInt(clientNum.substring(8));
+            number = number + 1;
+            if(number > 9999) {
+                return "鍐滄埛缂栧彿瓒呴檺";
+            }
+            clientNum = clientNum.substring(0, 8) + String.format("%04d", number);
+        } else {
+            clientNum = district8 + "0001";
+        }
+        return clientNum;
+    }
+
+    /**
+     * 淇敼鍐滄埛瀵硅薄锛堣櫄鎷熷崱鍙枫�佺姝㈡爣蹇椼�侀�昏緫鍒犻櫎鏍囪瘑涓嶅弬涓庝慨鏀癸級
+     * @param po 鍐滄埛瀵硅薄
+     * @param bindingResult
+     * @return
+     */
+    @Operation(summary = "淇敼鍐滄埛璁板綍", description = "淇敼鍐滄埛璁板綍")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = Boolean.class))}
+            )
+    })
+    @PostMapping(path = "update", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop()
+    public BaseResponse<Boolean> update(@RequestBody @Parameter(description = "form琛ㄥ崟json鏁版嵁", required = true) @Valid DtoClient po, @Parameter(hidden = true) BindingResult bindingResult){
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        // 鎺ユ敹鏉戠紪鍙凤紙涓婚敭锛�
+        Long villageId = po.getVillageid();
+
+        /**
+         * 鑾峰彇5绾ц鏀垮尯鍒掍俊鎭�
+         */
+        Map map_districts = Optional.ofNullable(clientSv.getDistrictsByVillageId(villageId)).orElse(new HashMap());
+        if(map_districts.size() <= 0) {
+            return BaseResponseUtils.buildFail("鍖哄垝淇℃伅鏈夎");
+        }
+
+        String provinceNum = map_districts.get("provinceNum").toString();
+        String cityNum = map_districts.get("cityNum").toString();
+        Long countryId = Long.parseLong(map_districts.get("countryId").toString());
+        String countyNum = map_districts.get("countyNum").toString();
+        String countryName = map_districts.get("countryName").toString();
+        Long townId = Long.parseLong(map_districts.get("townId").toString());
+        String townNum = map_districts.get("townNum").toString();
+        String townName = map_districts.get("townName").toString();
+        String villageNum = map_districts.get("villageNum").toString();
+        String villageName = map_districts.get("villageName").toString();
+
+        // 鐢熸垚8浣嶈鏀垮尯鍒掔紪鐮侊紝鐢熸垚鍐滄埛缂栧彿鐢�
+        String district8 = countyNum + townNum + villageNum;
+        // 鐢熸垚鍐滄埛缂栧彿
+        String clientNum = generateClientNum(district8);
+        // 鐢熸垚12浣�5绾ц鏀垮尯鍒掔紪鐮佷覆鍙婂悕绉颁覆
+        Long districtNum = Long.parseLong(provinceNum + cityNum + district8);
+        String districtTitle = countryName + townName + villageName;
+
+        SeClient seClient = DtoClientToSeClient.INSTANCT.po2vo(po);
+        seClient.setCountyid(countryId);
+        seClient.setTownid(townId);
+        seClient.setClientnum(clientNum);
+        seClient.setDistrictnum(districtNum);
+        seClient.setDistricttitle(districtTitle);
+        Date operateTime = new Date();
+        seClient.setOperatedt(operateTime);
+
+        Integer rec = Optional.ofNullable(clientSv.updateByPrimaryKey(seClient)).orElse(0);
+        if(rec == 0) {
+            return BaseResponseUtils.buildFail("鍐滄埛淇敼澶辫触");
+        }
+        return BaseResponseUtils.buildSuccess(true) ;
+    }
+
+    /**
+     * 鏍规嵁鍐滄埛ID閫昏緫鍒犻櫎鍐滄埛
+     * @param id
+     * @return
+     */
+    @Operation(summary = "鍒犻櫎涓�涓啘鎴�", description = "鍒犻櫎涓�涓啘鎴锋暟鎹�")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖涓�椤靛啘鎴锋暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaClient.class))}
+            )
+    })
+
+    @GetMapping(path = "/delone/{id}")
+    @SsoAop()
+    public BaseResponse<Boolean> deleteClientById(@PathVariable("id") Long id){
+        try {
+            Integer res = Optional.ofNullable(clientSv.deleteClientById(id)).orElse(0);
+            if(res == 0) {
+                return BaseResponseUtils.buildFail("鍐滄埛鍒犻櫎澶辫触");
+            }
+            return BaseResponseUtils.buildSuccess(true);
+        } catch (Exception e) {
+            log.error("鏌ヨ鍐滄埛寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 鑾峰彇鐢ㄦ按鏂瑰紡鍒楄〃
+     * @param
+     * @return
+     */
+    @Operation(summary = "鑾峰緱鐢ㄦ按鏂瑰紡鍒楄〃", description = "杩斿洖鐢ㄦ按鏂瑰紡鍒楄〃")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖涓�椤靛啘鎴锋暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaClient.class))}
+            )
+    })
+    @GetMapping(path = "/watertypes")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<Map<String, Object>>>> getWaterTypes(){
+        List<Map<String, Object>> map_WaterTypes = Optional.ofNullable(clientSv.getWaterTypes()).orElse(new ArrayList<>());
+        if(map_WaterTypes == null || map_WaterTypes.size() == 0) {
+            return BaseResponseUtils.buildFail("娌℃湁鐢ㄦ按鏂瑰紡") ;
+        }
+        return BaseResponseUtils.buildSuccess(map_WaterTypes);
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientSv.java
new file mode 100644
index 0000000..a3f631b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientSv.java
@@ -0,0 +1,258 @@
+package com.dy.pipIrrSell.client;
+
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pipIrrGlobal.daoBa.BaDistrictMapper;
+import com.dy.pipIrrGlobal.daoSe.SeClientMapper;
+import com.dy.pipIrrGlobal.pojoSe.SeClient;
+import com.dy.pipIrrGlobal.voSe.VoClient;
+import com.dy.pipIrrGlobal.voSe.VoOperate;
+import com.dy.pipIrrGlobal.voSe.VoStatistics;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.common.utils.PojoUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/21 19:17
+ * @LastEditTime 2023/12/21 19:17
+ * @Description
+ */
+
+@Slf4j
+@Service
+public class ClientSv {
+    @Autowired
+    private SeClientMapper seClientMapper;
+
+    @Autowired
+    private BaDistrictMapper baDistrictMapper;
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍐滄埛鏁版嵁
+     * @param queryVo
+     * @return
+     */
+    public QueryResultVo<List<VoClient>> getClients(QueryVo queryVo){
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo) ;
+        Long itemTotal = seClientMapper.getRecordCount(params);
+
+        QueryResultVo<List<VoClient>> rsVo = new QueryResultVo<>() ;
+        Integer pageCurr = 0;
+        Integer pageSize = 10000;
+        rsVo.pageCurr = 1;
+        rsVo.pageSize = 10000;
+        if(queryVo.pageSize != null && queryVo.pageCurr != null) {
+            rsVo.pageSize = queryVo.pageSize ;
+            rsVo.pageCurr = queryVo.pageCurr;
+            pageSize = queryVo.pageSize ;
+            pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString());
+        }
+        params.put("pageCurr", pageCurr);
+        params.put("pageSize", pageSize);
+
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = seClientMapper.getClients(params);
+
+        return rsVo ;
+    }
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗璁板綍
+     * @param vo
+     * @return
+     */
+    public Map getOperates(QueryOperate vo){
+        // 琛ラ綈鏌ヨ鏃堕棿
+        String operateTimeStart = vo.operateTimeStart;
+        String operateTimeStop = vo.operateTimeStop;
+        if(operateTimeStart != null) {
+            operateTimeStart = operateTimeStart + " 00:00:00";
+            vo.setOperateTimeStart(operateTimeStart);
+        }
+        if(operateTimeStop != null) {
+            operateTimeStop = operateTimeStop + " 23:59:59";
+            vo.setOperateTimeStop(operateTimeStop);
+        }
+
+        // 鐢熸垚鏌ヨ鍙傛暟
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo) ;
+
+        // 鑾峰彇姹囨�荤殑璐按閲戦銆佽喘鍗¢噾棰�
+        Float money = 0f;
+        Float cardCost = 0f;
+        Map map_sum = Optional.ofNullable(seClientMapper.getSums(params)).orElse(new HashMap());
+        if(map_sum.size() > 0) {
+            money = Float.parseFloat(map_sum.get("money").toString());
+            cardCost = Float.parseFloat(map_sum.get("cardCost").toString());
+        }
+
+        // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟
+        Long itemTotal = seClientMapper.getOperateRecordCount(params);
+
+        Integer pageSize = vo.getPageSize();
+        // 璁$畻鎬婚〉鏁�
+        Integer pageTotal ;
+        pageTotal = (int)Math.ceil((itemTotal==null?0.0D:itemTotal.doubleValue())/pageSize);
+
+        // 鏍规嵁褰撳墠椤电爜鍙婃瘡椤垫暟閲忚绠楀亸绉婚噺
+        Integer pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString());
+        params.put("pageCurr", pageCurr);
+
+        List<VoOperate> lit = seClientMapper.getOperates(params);
+        Map map_record = new HashMap();
+        map_record.put("itemTotal", itemTotal);
+        map_record.put("pageCurr", vo.pageCurr);
+        map_record.put("pageSize", pageSize);
+        map_record.put("pageTotal", pageTotal);
+        map_record.put("list", lit);
+
+        Map map_result = new HashMap();
+        map_result.put("money", money);
+        map_result.put("cardCost", cardCost);
+        map_result.put("records", map_record);
+
+        return map_result;
+    }
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇缁熻璁板綍
+     * @param vo 浜ゆ槗姹囨�绘煡璇㈡潯浠�
+     * @return 浜ゆ槗姹囨�昏褰�
+     */
+    public Map getStatistics(QueryStatistic vo){
+        // 琛ラ綈鏌ヨ鏃堕棿
+        String operateTimeStart = vo.operateTimeStart;
+        String operateTimeStop = vo.operateTimeStop;
+        if(operateTimeStart != null) {
+            operateTimeStart = operateTimeStart + " 00:00:00";
+            vo.setOperateTimeStart(operateTimeStart);
+        }
+        if(operateTimeStop != null) {
+            operateTimeStop = operateTimeStop + " 23:59:59";
+            vo.setOperateTimeStop(operateTimeStop);
+        }
+
+        // 鐢熸垚鏌ヨ鍙傛暟
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo) ;
+
+        // 鑾峰彇姹囨�荤殑浜ゆ槗绗旀暟銆佷氦鏄撻噾棰�
+        Integer count = 0;
+        Float money = 0f;
+        Map map_sum = Optional.ofNullable(seClientMapper.getStatisticSums(params)).orElse(new HashMap());
+        if(map_sum.size() > 0) {
+            count = Integer.parseInt(map_sum.get("count").toString());
+            money = Float.parseFloat(map_sum.get("money").toString());
+        }
+
+        // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟
+        Long itemTotal = seClientMapper.getStatisticRecordCount(params);
+
+        Integer pageSize = vo.getPageSize();
+        // 璁$畻鎬婚〉鏁�
+        Integer pageTotal ;
+        pageTotal = (int)Math.ceil((itemTotal==null?0.0D:itemTotal.doubleValue())/pageSize);
+
+        // 鏍规嵁褰撳墠椤电爜鍙婃瘡椤垫暟閲忚绠楀亸绉婚噺
+        Integer pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString());
+        params.put("pageCurr", pageCurr);
+
+        List<VoStatistics> lit = seClientMapper.getStatistics(params);
+        Map map_record = new HashMap();
+        map_record.put("itemTotal", itemTotal);
+        map_record.put("pageCurr", vo.pageCurr);
+        map_record.put("pageSize", pageSize);
+        map_record.put("pageTotal", pageTotal);
+        map_record.put("list", lit);
+
+        Map map_result = new HashMap();
+        map_result.put("count", count);
+        map_result.put("money", money);
+        map_result.put("records", map_record);
+
+        return map_result;
+    }
+
+    /**
+     * 鏍规嵁涓婚敭鑾峰彇鍐滄埛瀵硅薄
+     * @param id 鍐滄埛涓婚敭
+     * @return 鍐滄埛瀵硅薄
+     */
+    public VoClient getOneClient(Long id) {
+        SeClient seClient = seClientMapper.selectByPrimaryKey(id);
+        VoClient voClient = SeClientToVoClient.INSTANCT.po2vo(seClient);
+        return voClient;
+    }
+    /**
+     * 澧炲紑鍐滄埛
+     * @param po
+     * @return
+     */
+    public Integer addClient(SeClient po) {
+        return seClientMapper.insert(po);
+    }
+
+    /**
+     * 鏍规嵁6浣嶅尯鍒掍覆妯$硦鏌ヨ鍐滄埛缂栧彿
+     * @param district6
+     * @return
+     */
+    public String getClientNumOfMax(String district6) {
+        return seClientMapper.getClientNumOfMax(district6);
+    }
+
+    /**
+     * 鏍规嵁鏉戠紪鍙疯幏鍙�5绾у尯鍒掍俊鎭�
+     * @param villageId 鏉戠紪鍙凤紙涓婚敭锛�
+     * @return 5绾ц鏀垮尯鍒掍俊鎭�
+     */
+    public Map getDistrictsByVillageId(Long villageId) {
+        return baDistrictMapper.getDistrictsByVillageId(villageId);
+    }
+
+    /**
+     * 鏍规嵁鍐滄埛ID閫昏緫鍒犻櫎鍐滄埛
+     */
+    public Integer deleteClientById(Long id) {
+        return seClientMapper.deleteClientById(id);
+    }
+
+    /**
+     * 淇敼鍐滄埛瀵硅薄
+     * @param po 鍐滄埛瀵硅薄
+     * @return 淇敼璁板綍鏉℃暟
+     */
+    public Integer updateByPrimaryKey(SeClient po) {
+        return seClientMapper.updateByPrimaryKey(po);
+    }
+
+    /**
+     * 鏍规嵁涓婚敭鑾峰彇鏉慖D
+     * @param id
+     * @return
+     */
+    public Long getVillageIdById(Long id) {
+        return seClientMapper.getVillageIdById(id);
+    }
+
+    /**
+     * 鑾峰彇铏氭嫙鍗″彿鏈�澶у��
+     * @return
+     */
+    public Long getMa1xVirtualId() {
+        return seClientMapper.getMa1xVirtualId();
+    }
+
+    /**
+     * 鑾峰彇鐢ㄦ按鏂瑰紡鍒楄〃
+     * @return
+     */
+    public List<Map<String, Object>> getWaterTypes() {
+        return seClientMapper.getWaterTypes();
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/DtoClient.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/DtoClient.java
new file mode 100644
index 0000000..a36cae3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/DtoClient.java
@@ -0,0 +1,108 @@
+package com.dy.pipIrrSell.client;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.*;
+import lombok.*;
+import org.hibernate.validator.constraints.Length;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/22 8:41
+ * @LastEditTime 2023/12/22 8:41
+ * @Description
+ */
+
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鍒涘缓鍐滄埛浼犲叆瀵硅薄")
+public class DtoClient {
+    public static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @Schema(description = "鍐滄埛ID", requiredMode = Schema.RequiredMode.REQUIRED)
+    private Long id;
+
+    /**
+     * 鏉慖D
+     */
+    @Schema(description = "鎵�鍦ㄦ潙ID", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "鎵�鍦ㄦ潙涓嶈兘涓虹┖")
+    private Long villageid;
+
+    /**
+     * 鐗囧尯ID
+     */
+    @Schema(description = "鎵�鍦ㄧ墖鍖篒D", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "鎵�鍦ㄧ墖鍖轰笉鑳戒负绌�")
+    private Long blockid;
+
+    /**
+     * 鍒嗘按鎴縄D
+     */
+    @Schema(description = "鎵�鍦ㄥ垎姘存埧ID", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "鎵�鍦ㄥ垎姘存埧涓嶈兘涓虹┖")
+    private Long divideid;
+
+    /**
+     * 鍐滄埛濮撳悕
+     */
+    @Schema(description = "鍐滄埛濮撳悕", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "鍐滄埛濮撳悕涓嶈兘涓虹┖") //涓嶈兘涓虹┖涔熶笉鑳戒负null
+    @Length(message = "鍐滄埛濮撳悕涓嶅ぇ浜巤max}瀛楋紝涓嶅皬浜巤min}瀛�", min = 1, max = 25)
+    private String name;
+
+    /**
+     * 鎵嬫満鍙�
+     */
+    @Schema(description = "鍐滄埛鎵嬫満鍙�", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "鍐滄埛鎵嬫満鍙蜂笉鑳戒负绌�") //涓嶈兘涓虹┖涔熶笉鑳戒负null
+    @Length(message = "鍐滄埛鎵嬫満鍙峰繀椤粄max}浣嶆暟鎹�", min = 11, max = 11)
+    private String phone;
+
+    /**
+     * 韬唤璇佸彿
+     */
+    @Schema(description = "鍐滄埛韬唤璇佸彿", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "鍐滄埛韬唤璇佸彿涓嶈兘涓虹┖") //涓嶈兘涓虹┖涔熶笉鑳戒负null
+    @Length(message = "鍐滄埛韬唤璇佸彿蹇呴』{max}浣嶆暟鎹�", min = 18, max = 18)
+    private String idcard;
+
+    /**
+     * 绉嶆闈㈢Н
+     */
+    @Schema(description = "鍐滄埛绉嶆闈㈢Н", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Double area;
+
+    /**
+     * 鐢ㄦ按鏂瑰紡
+     */
+    @Schema(description = "鐢ㄦ按鏂瑰紡", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Long typeid;
+
+    /**
+     * 琛楅亾鍙婇棬鐗屽彿
+     */
+    @Schema(description = "琛楅亾+闂ㄧ墝鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Length(message = "鍦板潃涓嶅ぇ浜巤max}瀛楋紝涓嶅皬浜巤min}瀛�", min = 1, max = 50)
+    private String address;
+
+    /**
+     * 澶囨敞淇℃伅
+     */
+    @Schema(description = "澶囨敞", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Length(message = "澶囨敞涓嶅ぇ浜巤max}瀛楋紝涓嶅皬浜巤min}瀛�", min = 1, max = 200)
+    private String remarks;
+
+    /**
+     * 鎿嶄綔浜虹紪鍙�
+     */
+    @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "鎿嶄綔浜虹紪鍙蜂笉鑳戒负绌�")
+    private Long operator;
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/DtoClientToSeClient.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/DtoClientToSeClient.java
new file mode 100644
index 0000000..3ec776d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/DtoClientToSeClient.java
@@ -0,0 +1,33 @@
+package com.dy.pipIrrSell.client;
+
+import com.dy.pipIrrGlobal.pojoSe.SeClient;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/22 9:23
+ * @LastEditTime 2023/12/22 9:23
+ * @Description
+ */
+
+@Mapper
+public interface DtoClientToSeClient {
+    DtoClientToSeClient INSTANCT = Mappers.getMapper(DtoClientToSeClient.class);
+
+    @Mapping(target = "villageid", source = "villageid")
+    @Mapping(target = "blockid", source = "blockid")
+    @Mapping(target = "divideid", source = "divideid")
+    @Mapping(target = "name", source = "name")
+    @Mapping(target = "phone", source = "phone")
+    @Mapping(target = "idcard", source = "idcard")
+    @Mapping(target = "area", source = "area")
+    @Mapping(target = "typeid", source = "typeid")
+    @Mapping(target = "address", source = "address")
+    @Mapping(target = "remarks", source = "remarks")
+    @Mapping(target = "operator", source = "operator")
+    @Mapping(target = "disabled", ignore=true)
+    @Mapping(target = "deleted", ignore=true)
+    SeClient po2vo(DtoClient po);
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryOperate.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryOperate.java
new file mode 100644
index 0000000..628bcd6
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryOperate.java
@@ -0,0 +1,34 @@
+package com.dy.pipIrrSell.client;
+
+import com.dy.common.webUtil.QueryConditionVo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023-12-26 21:00
+ * @LastEditTime 2023-12-26 21:00
+ * @Description
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ToString(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Schema(name = "浜ゆ槗鏌ヨ鏉′欢")
+public class QueryOperate extends QueryConditionVo {
+
+    @Schema(description = "鏉慖D")
+    public Long villageId;
+
+    @Schema(description = "鏀粯鏂瑰紡缂栧彿")
+    public Long paymentId;
+
+    @Schema(description = "浜ゆ槗鏌ヨ璧峰鏃堕棿")
+    public String operateTimeStart;
+
+    @Schema(description = "浜ゆ槗鏌ヨ鎴鏃堕棿")
+    public String operateTimeStop;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryStatistic.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryStatistic.java
new file mode 100644
index 0000000..5ac6c22
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryStatistic.java
@@ -0,0 +1,33 @@
+package com.dy.pipIrrSell.client;
+
+import com.dy.common.webUtil.QueryConditionVo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023-12-27 15:33
+ * @LastEditTime 2023-12-27 15:33
+ * @Description
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ToString(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Schema(name = "浜ゆ槗姹囨�绘煡璇㈡潯浠�")
+public class QueryStatistic extends QueryConditionVo {
+    @Schema(description = "鏉慖D")
+    public Long villageId;
+
+    //@Schema(description = "鏀粯鏂瑰紡缂栧彿")
+    //public Long paymentId;
+
+    @Schema(description = "浜ゆ槗鏌ヨ璧峰鏃堕棿")
+    public String operateTimeStart;
+
+    @Schema(description = "浜ゆ槗鏌ヨ鎴鏃堕棿")
+    public String operateTimeStop;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryVo.java
new file mode 100644
index 0000000..28d645c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryVo.java
@@ -0,0 +1,46 @@
+package com.dy.pipIrrSell.client;
+
+import com.dy.common.webUtil.QueryConditionVo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/21 19:18
+ * @LastEditTime 2023/12/21 19:18
+ * @Description
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ToString(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Schema(name = "鍐滄埛鏌ヨ鏉′欢")
+public class QueryVo extends QueryConditionVo {
+
+    //@Schema(description = "鍘縄D")
+    //public Long countyId ;
+    //
+    //@Schema(description = "闀嘔D")
+    //public Long townId ;
+    //
+    //@Schema(description = "鏉慖D")
+    //public Long villageId ;
+    //
+    //@Schema(description = "鐗囧尯ID")
+    //public Long blockId ;
+
+    @Schema(description = "鍐滄埛濮撳悕")
+    public String name;
+
+    @Schema(description = "鍐滄埛缂栧彿")
+    public String clientNum;
+
+    @Schema(description = "鍐滄埛鐢佃瘽")
+    public String phone;
+
+    @Schema(description = "鍦板潃")
+    public String address;
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/SeClientToVoClient.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/SeClientToVoClient.java
new file mode 100644
index 0000000..dfd265e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/SeClientToVoClient.java
@@ -0,0 +1,28 @@
+package com.dy.pipIrrSell.client;
+
+import com.dy.pipIrrGlobal.pojoSe.SeClient;
+import com.dy.pipIrrGlobal.voSe.VoClient;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023-12-25 15:54
+ * @LastEditTime 2023-12-25 15:54
+ * @Description
+ */
+
+@Mapper
+public interface SeClientToVoClient {
+    SeClientToVoClient INSTANCT = Mappers.getMapper(SeClientToVoClient.class);
+
+    @Mapping(target = "name", source = "name")
+    @Mapping(target = "clientNum", source = "clientnum")
+    @Mapping(target = "phone", source = "phone")
+    @Mapping(target = "idCard", source = "idcard")
+    //@Mapping(target = "cardCount", source = "cardCount")
+    @Mapping(target = "address", source = "address")
+    @Mapping(target = "operateDt", source = "operatedt")
+    VoClient po2vo(SeClient po);
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/ClientCardCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/ClientCardCtrl.java
new file mode 100644
index 0000000..005da2c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/ClientCardCtrl.java
@@ -0,0 +1,90 @@
+package com.dy.pipIrrSell.clientCard;
+
+import com.dy.common.aop.SsoAop;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.common.webUtil.ResultCodeMsg;
+import com.dy.pipIrrGlobal.pojoBa.BaClient;
+import com.dy.pipIrrGlobal.voSe.VoCardInfo;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023-12-27 19:36
+ * @LastEditTime 2023-12-27 19:36
+ * @Description
+ */
+
+@Slf4j
+@Tag(name = "鍐滄埛姘村崱", description = "鍐滄埛姘村崱")
+@RestController
+@RequestMapping(path="clientcard")
+@RequiredArgsConstructor
+public class ClientCardCtrl {
+    private final ClientCardSv clientCardSv;
+
+    /**
+     * 鑾峰彇鎸囧畾鐢ㄦ埛鍚嶄笅鍏ㄩ儴姘村崱
+     * @param clientId
+     * @return
+     */
+    @Operation(summary = "鑾峰緱鍏ㄩ儴姘村崱", description = "杩斿洖鍏ㄩ儴姘村崱鏁版嵁")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖涓�椤靛啘鎴锋暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaClient.class))}
+            )
+    })
+    @GetMapping(path = "clientcard/{clientId}")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoCardInfo>>> get(@PathVariable("clientId") Long clientId){
+        try {
+            List<VoCardInfo> list = clientCardSv.getCardInfoByClientId(clientId);
+            return BaseResponseUtils.buildSuccess(list);
+        } catch (Exception e) {
+            log.error("鏌ヨ鍐滄埛寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 鏍规嵁姘村崱缂栧彿鑾峰彇鎿嶄綔璁板綍鍙婁綑棰�
+     * @param cardNum 姘村崱缂栧彿
+     * @return 姘村崱鎿嶄綔璁板綍鍙婁綑棰�
+     */
+    @Operation(summary = "鑾峰緱姘村崱鎿嶄綔璁板綍鍙婁綑棰�", description = "杩斿洖姘村崱鎿嶄綔璁板綍鍙婁綑棰�")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖涓�椤靛啘鎴锋暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaClient.class))}
+            )
+    })
+    @GetMapping(path = "/getoperaterecords")
+    @SsoAop()
+    public BaseResponse<List<Map<String, Object>>> getOperateRecordsAndMoney(@RequestParam("cardNum") Long cardNum){
+        try {
+            Map map = clientCardSv.getOperateRecordsAndMoney(cardNum);
+            return BaseResponseUtils.buildSuccess(map);
+        } catch (Exception e) {
+            log.error("鏌ヨ鎿嶄綔璁板綍寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/ClientCardSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/ClientCardSv.java
index 12437b7..def5757 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/ClientCardSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/ClientCardSv.java
@@ -2,11 +2,12 @@
 
 import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
+import com.dy.pipIrrGlobal.voSe.VoCardInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.Map;
+import java.util.*;
 
 /**
  * @author ZhuBaoMin
@@ -65,4 +66,35 @@
     public Integer UpdateClientCard(SeClientCard po) {
         return seClientCardMapper.updateByPrimaryKeySelective(po);
     }
+
+    /**
+     * 鏍规嵁鍐滄埛涓婚敭鑾峰彇姘村崱鍒楄〃
+     * @param clientId
+     * @return
+     */
+    public List<VoCardInfo> getCardInfoByClientId(Long clientId){
+        List<VoCardInfo> list = Optional.ofNullable(seClientCardMapper.getCardInfoByClientId(clientId)).orElse(new ArrayList<>());
+        if(list.size() > 0) {
+            return list;
+        }else {
+            return new ArrayList<>();
+        }
+    }
+
+    /**
+     * 鏍规嵁姘村崱缂栧彿鑾峰彇鎿嶄綔璁板綍鍙婁綑棰�
+     * @param cardNum
+     * @return
+     */
+    public Map getOperateRecordsAndMoney(Long cardNum) {
+        List<Map<String, Object>> list = Optional.ofNullable(seClientCardMapper.getOperateRecordsByCardNum(cardNum)).orElse(new ArrayList<>());
+        Float mondy = Optional.ofNullable(seClientCardMapper.getMoneyByCardNum(cardNum)).orElse(0f);
+        Float amount = Optional.ofNullable(seClientCardMapper.sumRechargeByCardNum(cardNum)).orElse(0f);
+
+        Map map = new HashMap();
+        map.put("mondy", mondy);
+        map.put("amount", amount);
+        map.put("list", list);
+        return map;
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/LossCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/LossCtrl.java
index 3e51765..b0a4ab0 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/LossCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/LossCtrl.java
@@ -8,6 +8,7 @@
 import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
 import com.dy.pipIrrGlobal.pojoSe.SeLoss;
 import com.dy.pipIrrGlobal.voSe.VoLoss;
+import com.dy.pipIrrSell.clientCard.CardStateENUM;
 import com.dy.pipIrrSell.clientCard.ClientCardSv;
 import com.dy.pipIrrSell.clientCard.LastOperateENUM;
 import com.dy.pipIrrSell.result.SellResultCode;
@@ -53,9 +54,9 @@
                             schema = @Schema(implementation = VoLoss.class))}
             )
     })
-    @GetMapping(path = "/getLosses", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @GetMapping(path = "/getLosses")
     @SsoAop()
-    public BaseResponse<QueryResultVo<List<VoLoss>>> getLosses(@RequestBody @Parameter(description = "鏌ヨform琛ㄥ崟json鏁版嵁", required = true) QueryVo vo){
+    public BaseResponse<QueryResultVo<List<VoLoss>>> getLosses(QueryVo vo){
         try {
             QueryResultVo<List<VoLoss>> res = lossSv.getLosses(vo);
             return BaseResponseUtils.buildSuccess(res);
@@ -84,8 +85,8 @@
 
         /**
          * cardId           姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛�
+         * clientId         鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛�
          * cardNum          姘村崱缂栧彿
-         * clientNum        鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛屾坊鍔犳寕澶变娇鐢級
          * money            浣欓
          * refund           閫�娆鹃噾棰�
          * remarks          澶囨敞
@@ -94,7 +95,7 @@
          */
         Long cardId = 0L;
         String cardNum = po.getCardNum();
-        String clientNum = "";
+        Long clientId = 0L;
         Float money = po.getMoney();
         Float refund = po.getRefund();
         String remarks = po.getRemarks();
@@ -109,7 +110,7 @@
             return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_MISTAKE.getMessage());
         }
         cardId = Long.parseLong(map.get("cardId").toString());
-        clientNum = map.get("clientNum").toString();
+        clientId = Long.parseLong(map.get("clientId").toString());
 
         /**
          * 淇敼鍐滄埛鍗′俊鎭細
@@ -118,7 +119,9 @@
          */
         SeClientCard seClientCard = new SeClientCard();
         seClientCard.setId(cardId);
+        seClientCard.setMoney(money);
         seClientCard.setLossdtdt(lossTime);
+        seClientCard.setState(CardStateENUM.LOSS.getCode());
         seClientCard.setLastoper(LastOperateENUM.LOSS.getCode());
         Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
         if(rec_updateClientCard == 0) {
@@ -129,8 +132,10 @@
          * 娣诲姞鎸傚け璁板綍
          */
         SeLoss seLoss = new SeLoss();
-        seLoss.setCardnum(cardNum);
-        seLoss.setClientnum(clientNum);
+        //seLoss.setCardnum(cardNum);
+        //seLoss.setClientnum(clientNum);
+        seLoss.setCardid(cardId);
+        seLoss.setClientid(clientId);
         seLoss.setMoney(money);
         seLoss.setRefund(refund);
         seLoss.setRemarks(remarks);
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/LossSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/LossSv.java
index 4d0f386..df6dc20 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/LossSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/LossSv.java
@@ -9,7 +9,6 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.Map;
@@ -31,15 +30,27 @@
         //瀹屽杽鏌ヨ鎸傚け璁板綍鐨勮捣姝㈡椂闂�
         DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 
-        LocalDateTime lossTimeStart = queryVo.lossTimeStart;
-        LocalDateTime lossTimeStop = queryVo.lossTimeStop;
+        //LocalDateTime lossTimeStart = queryVo.lossTimeStart;
+        //LocalDateTime lossTimeStop = queryVo.lossTimeStop;
+        //if(lossTimeStart != null) {
+        //    lossTimeStart = LocalDateTime.parse(df.format(lossTimeStart) + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+        //    queryVo.setLossTimeStart(lossTimeStart);
+        //}
+        //
+        //if(lossTimeStop != null) {
+        //    lossTimeStop = LocalDateTime.parse(df.format(lossTimeStop) + " 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+        //    queryVo.setLossTimeStop(lossTimeStop);
+        //}
+
+        String lossTimeStart = queryVo.lossTimeStart;
+        String lossTimeStop = queryVo.lossTimeStop;
         if(lossTimeStart != null) {
-            lossTimeStart = LocalDateTime.parse(df.format(lossTimeStart) + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            lossTimeStart = lossTimeStart + " 00:00:00";
             queryVo.setLossTimeStart(lossTimeStart);
         }
 
         if(lossTimeStop != null) {
-            lossTimeStop = LocalDateTime.parse(df.format(lossTimeStop) + " 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            lossTimeStop = lossTimeStop + " 23:59:59";
             queryVo.setLossTimeStop(lossTimeStop);
         }
 
@@ -48,8 +59,19 @@
         Long itemTotal = seLossMapper.getRecordCount(params);
 
         QueryResultVo<List<VoLoss>> rsVo = new QueryResultVo<>() ;
-        rsVo.pageSize = queryVo.pageSize ;
-        rsVo.pageCurr = queryVo.pageCurr ;
+        Integer pageCurr = 0;
+        Integer pageSize = 10000;
+        rsVo.pageCurr = 1;
+        rsVo.pageSize = 10000;
+        if(queryVo.pageSize != null && queryVo.pageCurr != null) {
+            rsVo.pageSize = queryVo.pageSize ;
+            rsVo.pageCurr = queryVo.pageCurr;
+            pageSize = queryVo.pageSize ;
+            pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString());
+        }
+        params.put("pageCurr", pageCurr);
+        params.put("pageSize", pageSize);
+
         rsVo.calculateAndSet(itemTotal, params);
         rsVo.obj = seLossMapper.getLosses(params);
         return rsVo ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/QueryVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/QueryVo.java
index 6b2c9f7..8d5250f 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/QueryVo.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/QueryVo.java
@@ -4,8 +4,6 @@
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
-import java.time.LocalDateTime;
-
 /**
  * @author ZhuBaoMin
  * @date 2023/12/6 9:43
@@ -24,12 +22,13 @@
     @Schema(description = "鍐滄埛濮撳悕")
     public String clientName;
 
-    @Schema(description = "IC鍗″彿")
-    public String cardAddr;
+    @Schema(description = "姘村崱ID")
+    //public String cardAddr;
+    public Long cardNum;
 
     @Schema(description = "鎸傚け鏃堕棿_寮�濮�")
-    public LocalDateTime lossTimeStart;
+    public String lossTimeStart;
 
     @Schema(description = "鎸傚け鏃堕棿_缁撴潫")
-    public LocalDateTime lossTimeStop;
+    public String lossTimeStop;
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/DtoRecharge.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/DtoRecharge.java
index 7e250f9..b67c64b 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/DtoRecharge.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/DtoRecharge.java
@@ -23,19 +23,20 @@
     public static final long serialVersionUID = 20231191728001L;
 
     /**
-     * 姘村崱鍦板潃
+     * 姘村崱缂栧彿
      */
-    @Schema(description = "姘村崱鍦板潃", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank
+    @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
     //private String cardAddr;
     private String cardNum;
+    //private Long cardId;
 
     /**
-     * 鍐滄埛缂栧彿
+     * 鍐滄埛ID锛屼笉鏄厖鍊兼帴鍙d紶鍏ワ紝鐢卞紑鍗″璞′紶鍏ワ紝淇濆瓨鍏呭�艰褰曢渶瑕�
      */
-    @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    //private Long clientId;
-    private String clientNum;
+    @Schema(description = "鍐滄埛ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    //private String clientNum;
+    private Long clientId;
 
     /**
      * 鍗$墖浣欓
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/QueryVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/QueryVo.java
index 99ba48c..5ec74a7 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/QueryVo.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/QueryVo.java
@@ -4,8 +4,6 @@
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
-import java.time.LocalDateTime;
-
 /**
  * @author ZhuBaoMin
  * @date 2023/12/4 17:20
@@ -33,11 +31,15 @@
     @Schema(description = "浠樻鏂瑰紡")
     public Integer paymentId;
 
+    //@Schema(description = "鍏呭�兼椂闂確寮�濮�")
+    //public LocalDateTime rechargeTimeStart;
+    //
+    //@Schema(description = "鍏呭�兼椂闂確缁撴潫")
+    //public LocalDateTime rechargeTimeStop;
+
     @Schema(description = "鍏呭�兼椂闂確寮�濮�")
-    //public DateTime rechargeTimeStart;
-    public LocalDateTime rechargeTimeStart;
+    public String rechargeTimeStart;
 
     @Schema(description = "鍏呭�兼椂闂確缁撴潫")
-    //public DateTime rechargeTimeStop;
-    public LocalDateTime rechargeTimeStop;
+    public String rechargeTimeStop;
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/RechargeCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/RechargeCtrl.java
index fe123c5..aa9101b 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/RechargeCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/RechargeCtrl.java
@@ -47,9 +47,10 @@
                             schema = @Schema(implementation = VoRecharge.class))}
             )
     })
-    @GetMapping(path = "/getRecharges", consumes = MediaType.APPLICATION_JSON_VALUE)
+    //@GetMapping(path = "/getRecharges", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @GetMapping(path = "/getRecharges")
     @SsoAop()
-    public BaseResponse<QueryResultVo<List<VoRecharge>>> get(@RequestBody @Parameter(description = "鏌ヨform琛ㄥ崟json鏁版嵁", required = true) QueryVo vo){
+    public BaseResponse<QueryResultVo<List<VoRecharge>>> get(QueryVo vo){
         try {
             QueryResultVo<List<VoRecharge>> res = rechargeSv.getRecharges(vo);
             return BaseResponseUtils.buildSuccess(res);
@@ -101,6 +102,8 @@
         Long cardId = 0L;
         String cardNum = po.getCardNum();
         String clientNum = "";
+        //Long clientId = po.getClientId();
+        Long clientId = 0L;
         Float money = po.getMoney();
         Float amount = po.getAmount();
         Float gift = po.getGift();
@@ -120,6 +123,7 @@
         }
         cardId = Long.parseLong(map.get("cardId").toString());
         clientNum = map.get("clientNum").toString();
+        clientId = Long.parseLong(map.get("clientId").toString());
 
         /**
          * 淇敼鍐滄埛鍗′俊鎭細
@@ -128,6 +132,7 @@
          */
         SeClientCard seClientCard = new SeClientCard();
         seClientCard.setId(cardId);
+        seClientCard.setMoney(afterRecharge);
         seClientCard.setRechargedt(rechargeTime);
         seClientCard.setLastoper(LastOperateENUM.RECHARGE.getCode ());
         Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
@@ -138,13 +143,16 @@
         /**
          * 鍒犻櫎鍏呭�艰〃璇ュ崱鐨勫厖鍊艰褰�
          */
-        Integer rec_deleteRecharge = Optional.ofNullable(rechargeSv.deleteByCardNum(cardNum)).orElse(0);
+        Integer rec_deleteRecharge = Optional.ofNullable(rechargeSv.deleteByCardId(cardId)).orElse(0);
         /**
          * 娣诲姞鍏呭�艰褰�
          */
         SeRecharge seRecharge = new SeRecharge();
-        seRecharge.setCardnum(cardNum);
-        seRecharge.setClientnum(clientNum);
+        //seRecharge.setCardnum(cardNum);
+        //seRecharge.setClientnum(clientNum);
+
+        seRecharge.setCardid(cardId);
+        seRecharge.setClientid(clientId);
         seRecharge.setMoney(money);
         seRecharge.setAmount(amount);
         seRecharge.setGift(gift);
@@ -163,8 +171,10 @@
          * 娣诲姞琛ュ崱鍘嗗彶璁板綍
          */
         SeRechargeHistory seRechargeHistory = new SeRechargeHistory();
-        seRechargeHistory.setCardnum(cardNum);
-        seRechargeHistory.setClientnum(clientNum);
+        //seRechargeHistory.setCardnum(cardNum);
+        //seRechargeHistory.setClientnum(clientNum);
+        seRechargeHistory.setCardid(cardId);
+        seRechargeHistory.setClientid(clientId);
         seRechargeHistory.setMoney(money);
         seRechargeHistory.setAmount(amount);
         seRechargeHistory.setGift(gift);
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/RechargeSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/RechargeSv.java
index 37a45ae..10baa78 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/RechargeSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/RechargeSv.java
@@ -11,8 +11,6 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.Map;
 
@@ -34,28 +32,35 @@
 
     public QueryResultVo<List<VoRecharge>> getRecharges(QueryVo queryVo) {
         //瀹屽杽鏌ヨ鍏呭�艰褰曠殑璧锋鏃堕棿
-        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-
-        LocalDateTime rechargeTimeStart = queryVo.rechargeTimeStart;
-        LocalDateTime rechargeTimeStop = queryVo.rechargeTimeStop;
+        String rechargeTimeStart = queryVo.rechargeTimeStart;
+        String rechargeTimeStop = queryVo.rechargeTimeStop;
         if(rechargeTimeStart != null) {
-            rechargeTimeStart = LocalDateTime.parse(df.format(rechargeTimeStart) + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            rechargeTimeStart = rechargeTimeStart + " 00:00:00";
             queryVo.setRechargeTimeStart(rechargeTimeStart);
         }
-
         if(rechargeTimeStop != null) {
-            rechargeTimeStop = LocalDateTime.parse(df.format(rechargeTimeStop) + " 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            rechargeTimeStop = rechargeTimeStop + " 23:59:59";
             queryVo.setRechargeTimeStop(rechargeTimeStop);
         }
-
 
         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
 
         Long itemTotal = seRechargeMapper.getRecordCount(params);
 
         QueryResultVo<List<VoRecharge>> rsVo = new QueryResultVo<>() ;
-        rsVo.pageSize = queryVo.pageSize ;
-        rsVo.pageCurr = queryVo.pageCurr ;
+        Integer pageCurr = 0;
+        Integer pageSize = 10000;
+        rsVo.pageCurr = 1;
+        rsVo.pageSize = 10000;
+        if(queryVo.pageSize != null && queryVo.pageCurr != null) {
+            rsVo.pageSize = queryVo.pageSize ;
+            rsVo.pageCurr = queryVo.pageCurr;
+            pageSize = queryVo.pageSize ;
+            pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString());
+        }
+        params.put("pageCurr", pageCurr);
+        params.put("pageSize", pageSize);
+
         rsVo.calculateAndSet(itemTotal, params);
         rsVo.obj = seRechargeMapper.getRecharges(params);
         return rsVo ;
@@ -82,15 +87,15 @@
 
     /**
      * 鏍规嵁姘村崱缂栧彿鍒犻櫎鍏呭�艰褰�
-     * @param cardNum
+     * @param cardId
      * @return
      */
-    //public Integer deleteByCardId(Long cardId) {
-    //    return seRechargeMapper.deleteByCardId(cardId);
-    //}
-    public Integer deleteByCardNum(String cardNum) {
-        return seRechargeMapper.deleteByCardNum(cardNum);
+    public Integer deleteByCardId(Long cardId) {
+        return seRechargeMapper.deleteByCardId(cardId);
     }
+    //public Integer deleteByCardNum(String cardNum) {
+    //    return seRechargeMapper.deleteByCardNum(cardNum);
+    //}
 
     /**
      * 娣诲姞鍏呭�煎巻鍙茶〃
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/QueryVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/QueryVo.java
index 9f026eb..852534e 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/QueryVo.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/QueryVo.java
@@ -4,8 +4,6 @@
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
-import java.time.LocalDateTime;
-
 /**
  * @author ZhuBaoMin
  * @date 2023/12/6 15:57
@@ -29,8 +27,8 @@
 
 
     @Schema(description = "鍐叉鏃堕棿_寮�濮�")
-    public LocalDateTime reversalTimeStart;
+    public String reversalTimeStart;
 
     @Schema(description = "鍐叉鏃堕棿_缁撴潫")
-    public LocalDateTime reversalTimeStop;
+    public String reversalTimeStop;
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalCtrl.java
index 9322334..c2705d5 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalCtrl.java
@@ -53,9 +53,9 @@
                             schema = @Schema(implementation = VoReversal.class))}
             )
     })
-    @GetMapping(path = "/getReversals", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @GetMapping(path = "/getReversals")
     @SsoAop()
-    public BaseResponse<QueryResultVo<List<VoReversal>>> getReversals(@RequestBody @Parameter(description = "鏌ヨform琛ㄥ崟json鏁版嵁", required = true) QueryVo vo){
+    public BaseResponse<QueryResultVo<List<VoReversal>>> getReversals(QueryVo vo){
         try {
             QueryResultVo<List<VoReversal>> res = reversalSv.getReversals(vo);
             return BaseResponseUtils.buildSuccess(res);
@@ -84,8 +84,8 @@
 
         /**
          * cardId           姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardAddr鍙嶆煡锛屼慨鏀瑰啘鎴峰崱浣跨敤锛�
+         * clientId         鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛�
          * cardNum          姘村崱鍦板潃
-         * clientNum        鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛屾坊鍔犲啿姝d娇鐢級
          * cardBalance      鍗$墖浣欓
          * systemBalance    绯荤粺浣欓
          * remarks          澶囨敞
@@ -94,7 +94,7 @@
          */
         Long cardId = 0L;
         String cardNum = po.getCardNum();
-        String clientNum = "";
+        Long clientId = 0L;
         Float cardBalance = po.getCardBalance();
         Float systemBalance = po.getSystemBalance();
         String remarks = po.getRemarks();
@@ -109,7 +109,7 @@
             return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_MISTAKE.getMessage());
         }
         cardId = Long.parseLong(map.get("cardId").toString());
-        clientNum = map.get("clientNum").toString();
+        clientId = Long.parseLong(map.get("clientId").toString());
 
         /**
          * 淇敼鍐滄埛鍗′俊鎭細
@@ -119,6 +119,7 @@
         SeClientCard seClientCard = new SeClientCard();
         seClientCard.setId(cardId);
         seClientCard.setReversaldt(reversalTime);
+        seClientCard.setMoney(cardBalance);
         seClientCard.setLastoper(LastOperateENUM.REVERSAL.getCode());
         Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
         if(rec_updateClientCard == 0) {
@@ -129,8 +130,10 @@
          * 娣诲姞鍐叉璁板綍
          */
         SeReversal reversal = new SeReversal();
-        reversal.setCardnum(cardNum);
-        reversal.setClientnum(clientNum);
+        //reversal.setCardnum(cardNum);
+        //reversal.setClientnum(clientNum);
+        reversal.setCardid(cardId);
+        reversal.setClientid(clientId);
         reversal.setCardbalance(cardBalance);
         reversal.setSystembalance(systemBalance);
         reversal.setRemarks(remarks);
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalSv.java
index 42d00be..ad5362a 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalSv.java
@@ -9,7 +9,6 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.Map;
@@ -31,15 +30,15 @@
         //瀹屽杽鏌ヨ娉ㄩ攢璁板綍鐨勮捣姝㈡椂闂�
         DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 
-        LocalDateTime reversalTimeStart = queryVo.reversalTimeStart;
-        LocalDateTime reversalTimeStop = queryVo.reversalTimeStop;
+        String reversalTimeStart = queryVo.reversalTimeStart;
+        String reversalTimeStop = queryVo.reversalTimeStop;
         if(reversalTimeStart != null) {
-            reversalTimeStart = LocalDateTime.parse(df.format(reversalTimeStart) + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            reversalTimeStart = reversalTimeStart + " 00:00:00";
             queryVo.setReversalTimeStart (reversalTimeStart);
         }
 
         if(reversalTimeStop != null) {
-            reversalTimeStop = LocalDateTime.parse(df.format(reversalTimeStop) + " 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            reversalTimeStop = reversalTimeStop + " 23:59:59";
             queryVo.setReversalTimeStop(reversalTimeStop);
         }
 
@@ -48,8 +47,19 @@
         Long itemTotal = seReversalMapper.getRecordCount(params);
 
         QueryResultVo<List<VoReversal>> rsVo = new QueryResultVo<>() ;
-        rsVo.pageSize = queryVo.pageSize ;
-        rsVo.pageCurr = queryVo.pageCurr ;
+        Integer pageCurr = 0;
+        Integer pageSize = 10000;
+        rsVo.pageCurr = 1;
+        rsVo.pageSize = 10000;
+        if(queryVo.pageSize != null && queryVo.pageCurr != null) {
+            rsVo.pageSize = queryVo.pageSize ;
+            rsVo.pageCurr = queryVo.pageCurr;
+            pageSize = queryVo.pageSize ;
+            pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString());
+        }
+        params.put("pageCurr", pageCurr);
+        params.put("pageSize", pageSize);
+
         rsVo.calculateAndSet(itemTotal, params);
         rsVo.obj = seReversalMapper.getReversals(params);
         return rsVo ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/QueryVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/QueryVo.java
index ab9ffce..6c8e9c7 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/QueryVo.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/QueryVo.java
@@ -4,8 +4,6 @@
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
-import java.time.LocalDateTime;
-
 /**
  * @author ZhuBaoMin
  * @date 2023/12/6 15:00
@@ -25,12 +23,12 @@
     public String clientName;
 
     @Schema(description = "IC鍗″彿")
-    public String cardAddr;
+    public Long cardNum;
 
 
     @Schema(description = "瑙i攣鏃堕棿_寮�濮�")
-    public LocalDateTime unlocklTimeStart;
+    public String unlocklTimeStart;
 
     @Schema(description = "瑙i攣鏃堕棿_缁撴潫")
-    public LocalDateTime unlockTimeStop;
+    public String unlockTimeStop;
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockCtrl.java
index a9242eb..8d924cd 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockCtrl.java
@@ -54,9 +54,9 @@
                             schema = @Schema(implementation = VoUnlock.class))}
             )
     })
-    @GetMapping(path = "/getUnlocks", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @GetMapping(path = "/getUnlocks")
     @SsoAop()
-    public BaseResponse<QueryResultVo<List<VoUnlock>>> getUnlocks(@RequestBody @Parameter(description = "鏌ヨform琛ㄥ崟json鏁版嵁", required = true) QueryVo vo){
+    public BaseResponse<QueryResultVo<List<VoUnlock>>> getUnlocks(QueryVo vo){
         try {
             QueryResultVo<List<VoUnlock>> res = unlockSv.getUnlocks(vo);
             return BaseResponseUtils.buildSuccess(res);
@@ -86,8 +86,8 @@
 
         /**
          * cardId           姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardAddr鍙嶆煡锛屼慨鏀瑰啘鎴峰崱浣跨敤锛�
+         * clientId         鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛�
          * cardNum          姘村崱鍦板潃
-         * clientNum        鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛屾坊鍔犺В閿佷娇鐢級
          * money            浣欓
          * remarks          澶囨敞
          * operator         鎿嶄綔浜虹紪鍙�
@@ -95,7 +95,7 @@
          */
         Long cardId = 0L;
         String cardNum = po.getCardNum();
-        String clientNum = "";
+        Long clientId = 0L;
         Float money = po.getMoney();
         String remarks = po.getRemarks();
         Long operator = po.getOperator();
@@ -109,7 +109,7 @@
             return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_MISTAKE.getMessage());
         }
         cardId = Long.parseLong(map.get("cardId").toString());
-        clientNum = map.get("clientNum").toString();
+        clientId = Long.parseLong(map.get("clientId").toString());
 
         /**
          * 淇敼鍐滄埛鍗′俊鎭細
@@ -119,6 +119,7 @@
         SeClientCard seClientCard = new SeClientCard();
         seClientCard.setId(cardId);
         seClientCard.setUnlockdt(unlockTime);
+        seClientCard.setMoney(money);
         seClientCard.setLastoper(LastOperateENUM.UNLOCK.getCode());
         Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
         if(rec_updateClientCard == 0) {
@@ -129,8 +130,10 @@
          * 娣诲姞瑙i攣璁板綍
          */
         SeUnlock seUnlock = new SeUnlock();
-        seUnlock.setCardnum(cardNum);
-        seUnlock.setClientnum(clientNum);
+        //seUnlock.setCardnum(cardNum);
+        //seUnlock.setClientnum(clientNum);
+        seUnlock.setCardid(cardId);
+        seUnlock.setClientid(clientId);
         seUnlock.setMoney(money);
         seUnlock.setRemarks(remarks);
         seUnlock.setOperator(operator);
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockSv.java
index 85d1754..4e42110 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockSv.java
@@ -9,7 +9,6 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.Map;
@@ -31,15 +30,15 @@
         //瀹屽杽鏌ヨ娉ㄩ攢璁板綍鐨勮捣姝㈡椂闂�
         DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 
-        LocalDateTime unlocklTimeStart = queryVo.unlocklTimeStart;
-        LocalDateTime unlockTimeStop = queryVo.unlockTimeStop;
+        String unlocklTimeStart = queryVo.unlocklTimeStart;
+        String unlockTimeStop = queryVo.unlockTimeStop;
         if(unlocklTimeStart != null) {
-            unlocklTimeStart = LocalDateTime.parse(df.format(unlocklTimeStart) + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            unlocklTimeStart = unlocklTimeStart + " 00:00:00";
             queryVo.setUnlocklTimeStart(unlocklTimeStart);
         }
 
         if(unlockTimeStop != null) {
-            unlockTimeStop = LocalDateTime.parse(df.format(unlockTimeStop) + " 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            unlockTimeStop = unlockTimeStop + " 23:59:59";
             queryVo.setUnlockTimeStop(unlockTimeStop);
         }
 
@@ -48,8 +47,19 @@
         Long itemTotal = seUnlockMapper.getRecordCount(params);
 
         QueryResultVo<List<VoUnlock>> rsVo = new QueryResultVo<>() ;
-        rsVo.pageSize = queryVo.pageSize ;
-        rsVo.pageCurr = queryVo.pageCurr ;
+        Integer pageCurr = 0;
+        Integer pageSize = 10000;
+        rsVo.pageCurr = 1;
+        rsVo.pageSize = 10000;
+        if(queryVo.pageSize != null && queryVo.pageCurr != null) {
+            rsVo.pageSize = queryVo.pageSize ;
+            rsVo.pageCurr = queryVo.pageCurr;
+            pageSize = queryVo.pageSize ;
+            pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString());
+        }
+        params.put("pageCurr", pageCurr);
+        params.put("pageSize", pageSize);
+
         rsVo.calculateAndSet(itemTotal, params);
         rsVo.obj = seUnlockMapper.getUnlocks(params);
         return rsVo ;

--
Gitblit v1.8.0