Переглянути джерело

导入格式改为按导入模板:每日运行/待检区收缴/劝阻充电宝数据

simonlll 1 місяць тому
батько
коміт
f9f618f932

+ 33 - 29
airport-admin/src/main/java/com/sundot/airport/web/controller/item/HkOperationDataController.java

@@ -74,8 +74,14 @@ public class HkOperationDataController extends BaseController {
74 74
     }
75 75
 
76 76
     /**
77
-     * 导入客户原始格式的每日运行数据统计表
78
-     * Excel结构:前4行为标题/分组表头,第5行起为数据,列按固定位置映射
77
+     * 导入每日运行数据(按导入模板格式)
78
+     * Excel结构:第1行为表头,第2行起为数据,共24列
79
+     * col0=日期  col1=A区  col2=B区  col3=贵宾  col4=国内旅检  col5=国际旅检
80
+     * col6=贵宾通道  col7=T1回流通道  col8=T1行检  col9=一楼员工
81
+     * col10=T2回流通道  col11=T2行检  col12=三楼东区员工  col13=一楼中心区员工
82
+     * col14=负一楼西区员工  col15=三楼西区员工  col16=国内货站  col17=道口(国内货站)
83
+     * col18=南侧车检  col19=防爆(国内货站)  col20=国际货站  col21=道口(国际货站)
84
+     * col22=北侧车检  col23=防爆(国际货站)
79 85
      */
80 86
     @Log(title = "每日运行数据", businessType = BusinessType.IMPORT)
81 87
     @PostMapping("/importData")
@@ -95,8 +101,8 @@ public class HkOperationDataController extends BaseController {
95 101
         List<HkOperationData> list = new ArrayList<>();
96 102
         try (Workbook workbook = WorkbookFactory.create(is)) {
97 103
             Sheet sheet = workbook.getSheetAt(0);
98
-            // 前4行:标题、分组表头、子表头、列标题,数据从第5行(索引4)开始
99
-            for (int i = 4; i <= sheet.getLastRowNum(); i++) {
104
+            // 第1行(index=0)为表头,数据从第2行(index=1)开始
105
+            for (int i = 1; i <= sheet.getLastRowNum(); i++) {
100 106
                 Row row = sheet.getRow(i);
101 107
                 if (row == null) continue;
102 108
                 Cell dateCell = row.getCell(0);
@@ -104,36 +110,34 @@ public class HkOperationDataController extends BaseController {
104 110
                 if (dateCell.getCellType() != CellType.NUMERIC) continue;
105 111
 
106 112
                 HkOperationData data = new HkOperationData();
107
-                // col 0: 日期(Excel序列数或日期格式均支持)
108 113
                 if (DateUtil.isCellDateFormatted(dateCell)) {
109 114
                     data.setRecordDate(dateCell.getDateCellValue());
110 115
                 } else {
111 116
                     data.setRecordDate(DateUtil.getJavaDate(dateCell.getNumericCellValue()));
112 117
                 }
113
-                data.setAZone(intVal(row, 1));           // A区
114
-                data.setBZone(intVal(row, 2));           // B区
115
-                data.setVip(intVal(row, 3));             // 贵宾
116
-                data.setDomesticPassenger(intVal(row, 4)); // 国内旅检
117
-                data.setIntlPassenger(intVal(row, 5));   // 国际旅检
118
-                data.setVipChannel(intVal(row, 6));      // 贵宾通道
119
-                data.setT1ReturnChannel(intVal(row, 7)); // T1回流通道
120
-                data.setT1LuggageCheck(intVal(row, 8)); // T1行检
121
-                data.setFloor1Staff(intVal(row, 9));     // 一楼员工
122
-                data.setT2ReturnChannel(intVal(row, 10));// T2回流通道
123
-                data.setT2LuggageCheck(intVal(row, 11));// T2行检
124
-                data.setFloor3EastStaff(intVal(row, 12));    // 三楼东区员工
125
-                data.setFloor1CenterStaff(intVal(row, 13));  // 一楼中心区员工
126
-                data.setFloorB1WestStaff(intVal(row, 14));   // 负一楼西区员工
127
-                data.setFloor3WestStaff(intVal(row, 15));    // 三楼西区员工
128
-                data.setDomesticCargo(intVal(row, 16));  // 国内货站
129
-                data.setDomesticGate(intVal(row, 17));   // 道口(国内货站)
130
-                data.setSouthVehicleCheck(intVal(row, 18));  // 南侧车检
131
-                data.setDomesticBomb(intVal(row, 19));   // 防爆(国内货站)
132
-                data.setIntlCargo(intVal(row, 20));      // 国际货站
133
-                data.setIntlGate(intVal(row, 21));       // 道口(国际货站)
134
-                data.setNorthVehicleCheck(intVal(row, 22)); // 北侧车检
135
-                data.setIntlBomb(intVal(row, 23));       // 防爆(国际货站)
136
-                // col 24: 车检总数(公式列,不导入)
118
+                data.setAZone(intVal(row, 1));
119
+                data.setBZone(intVal(row, 2));
120
+                data.setVip(intVal(row, 3));
121
+                data.setDomesticPassenger(intVal(row, 4));
122
+                data.setIntlPassenger(intVal(row, 5));
123
+                data.setVipChannel(intVal(row, 6));
124
+                data.setT1ReturnChannel(intVal(row, 7));
125
+                data.setT1LuggageCheck(intVal(row, 8));
126
+                data.setFloor1Staff(intVal(row, 9));
127
+                data.setT2ReturnChannel(intVal(row, 10));
128
+                data.setT2LuggageCheck(intVal(row, 11));
129
+                data.setFloor3EastStaff(intVal(row, 12));
130
+                data.setFloor1CenterStaff(intVal(row, 13));
131
+                data.setFloorB1WestStaff(intVal(row, 14));
132
+                data.setFloor3WestStaff(intVal(row, 15));
133
+                data.setDomesticCargo(intVal(row, 16));
134
+                data.setDomesticGate(intVal(row, 17));
135
+                data.setSouthVehicleCheck(intVal(row, 18));
136
+                data.setDomesticBomb(intVal(row, 19));
137
+                data.setIntlCargo(intVal(row, 20));
138
+                data.setIntlGate(intVal(row, 21));
139
+                data.setNorthVehicleCheck(intVal(row, 22));
140
+                data.setIntlBomb(intVal(row, 23));
137 141
                 list.add(data);
138 142
             }
139 143
         }

+ 8 - 10
airport-admin/src/main/java/com/sundot/airport/web/controller/item/HkPendingConfiscateController.java

@@ -75,13 +75,12 @@ public class HkPendingConfiscateController extends BaseController {
75 75
     }
76 76
 
77 77
     /**
78
-     * 导入客户原始格式的待检区收缴数据
79
-     * Excel结构:
80
-     *   Row1: 分组表头(T1航站楼A区/B区, T2国内/国际/中转, 每日收缴总数)
81
-     *   Row2: 子列表头(火种/液态物品/其他)
82
-     *   Row3+: 数据,每天3个时间段(00:00-08:00 / 08:00-17:00 / 17:00-24:00)
83
-     *   日期列A跨行合并,需向下传递
84
-     *   col17-19(每日收缴总数)为公式列,跳过
78
+     * 导入待检区收缴数据(按导入模板格式)
79
+     * Excel结构:第1行为表头,第2行起为数据,每天3个时间段,日期列跨行合并
80
+     * col0=日期  col1=时间段
81
+     * col2-4=T1 A区(火种/液态物品/其他)  col5-7=T1 B区(火种/液态物品/其他)
82
+     * col8-10=T2国内(火种/液态物品/其他)  col11-13=T2国际(火种/液态物品/其他)
83
+     * col14-16=T2中转(火种/液态物品/其他)
85 84
      */
86 85
     @Log(title = "待检区收缴数据", businessType = BusinessType.IMPORT)
87 86
     @PostMapping("/importData")
@@ -102,8 +101,8 @@ public class HkPendingConfiscateController extends BaseController {
102 101
         try (Workbook workbook = WorkbookFactory.create(is)) {
103 102
             Sheet sheet = workbook.getSheetAt(0);
104 103
             Date lastDate = null;
105
-            // 前2行为表头,数据从第3行(index=2)开始
106
-            for (int i = 2; i <= sheet.getLastRowNum(); i++) {
104
+            // 第1行(index=0)为表头,数据从第2行(index=1)开始
105
+            for (int i = 1; i <= sheet.getLastRowNum(); i++) {
107 106
                 Row row = sheet.getRow(i);
108 107
                 if (row == null) continue;
109 108
 
@@ -142,7 +141,6 @@ public class HkPendingConfiscateController extends BaseController {
142 141
                 data.setT2TransitFireSource(intVal(row, 14));
143 142
                 data.setT2TransitLiquid(intVal(row, 15));
144 143
                 data.setT2TransitOther(intVal(row, 16));
145
-                // col17-19: 每日收缴总数(公式,跳过)
146 144
                 list.add(data);
147 145
             }
148 146
         }

+ 15 - 18
airport-admin/src/main/java/com/sundot/airport/web/controller/item/HkPersuadePowerBankController.java

@@ -75,12 +75,11 @@ public class HkPersuadePowerBankController extends BaseController {
75 75
     }
76 76
 
77 77
     /**
78
-     * 导入客户原始格式的劝阻充电宝数据
79
-     * Excel结构:
80
-     *   Row1: 分组表头(T1航站楼 / T2航站楼 / 每日劝阻总数)
81
-     *   Row2: 子列表头(召回充电宝/无3C标识/标识不清/超规数量/邮寄/自弃/暂存/总数)
82
-     *   Row3+: 数据,每天3个时间段,日期列A跨行合并需向下传递
83
-     *   col9=T1总数(公式)  col17=T2总数(公式)  col18-20=汇总(公式)  均跳过
78
+     * 导入劝阻充电宝数据(按导入模板格式)
79
+     * Excel结构:第1行为表头,第2行起为数据,每天3个时间段,日期列跨行合并
80
+     * col0=日期  col1=时间段
81
+     * col2-8=T1(召回充电宝/无3C标识/标识不清/超规数量/邮寄/自弃/暂存)
82
+     * col9-15=T2(召回充电宝/无3C标识/标识不清/超规数量/邮寄/自弃/暂存)
84 83
      */
85 84
     @Log(title = "劝阻充电宝数据", businessType = BusinessType.IMPORT)
86 85
     @PostMapping("/importData")
@@ -101,8 +100,8 @@ public class HkPersuadePowerBankController extends BaseController {
101 100
         try (Workbook workbook = WorkbookFactory.create(is)) {
102 101
             Sheet sheet = workbook.getSheetAt(0);
103 102
             Date lastDate = null;
104
-            // 前2行为表头,数据从第3行(index=2)开始
105
-            for (int i = 2; i <= sheet.getLastRowNum(); i++) {
103
+            // 第1行(index=0)为表头,数据从第2行(index=1)开始
104
+            for (int i = 1; i <= sheet.getLastRowNum(); i++) {
106 105
                 Row row = sheet.getRow(i);
107 106
                 if (row == null) continue;
108 107
 
@@ -129,16 +128,14 @@ public class HkPersuadePowerBankController extends BaseController {
129 128
                 data.setT1Mail(intVal(row, 6));
130 129
                 data.setT1Abandon(intVal(row, 7));
131 130
                 data.setT1TempStore(intVal(row, 8));
132
-                // col9: T1总数(公式,跳过)
133
-                // T2
134
-                data.setT2Recall(intVal(row, 10));
135
-                data.setT2No3c(intVal(row, 11));
136
-                data.setT2UnclearMark(intVal(row, 12));
137
-                data.setT2ExcessQty(intVal(row, 13));
138
-                data.setT2Mail(intVal(row, 14));
139
-                data.setT2Abandon(intVal(row, 15));
140
-                data.setT2TempStore(intVal(row, 16));
141
-                // col17: T2总数  col18-20: 汇总(公式,跳过)
131
+                // T2(模板无公式列,col9直接接T2)
132
+                data.setT2Recall(intVal(row, 9));
133
+                data.setT2No3c(intVal(row, 10));
134
+                data.setT2UnclearMark(intVal(row, 11));
135
+                data.setT2ExcessQty(intVal(row, 12));
136
+                data.setT2Mail(intVal(row, 13));
137
+                data.setT2Abandon(intVal(row, 14));
138
+                data.setT2TempStore(intVal(row, 15));
142 139
                 list.add(data);
143 140
             }
144 141
         }