diff --git a/src/main/java/com/zmzm/finance/common/controller/ImportController.java b/src/main/java/com/zmzm/finance/common/controller/ImportController.java
new file mode 100644
index 0000000..a3009e1
--- /dev/null
+++ b/src/main/java/com/zmzm/finance/common/controller/ImportController.java
@@ -0,0 +1,122 @@
+package com.zmzm.finance.common.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zmzm.finance.common.entity.Import;
+import com.zmzm.finance.common.entity.Payment;
+import com.zmzm.finance.common.service.IImportService;
+import com.zmzm.finance.common.service.IPaymentService;
+import com.zmzm.finance.util.ExcelUtil;
+import com.zmzm.finance.util.FileUtil;
+import com.zmzm.finance.util.R;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.time.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+import java.io.InputStream;
+import java.math.BigDecimal;
+import java.util.*;
+
+/**
+ *
+ * 导入文件表 前端控制器
+ *
+ *
+ * @author baomidou
+ * @since 2025-12-15
+ */
+@RestController
+@RequestMapping("/common/import")
+public class ImportController {
+
+ @Autowired
+ private IImportService importService;
+ @Autowired
+ private IPaymentService paymentService;
+
+ //导入文件列表
+ @RequestMapping("/getImportList")
+ public R getImportList(@RequestBody Map params){
+ List importList = importService.list(new LambdaQueryWrapper()
+ .eq(StringUtils.isNotEmpty(params.get("year").toString()),Import::getYear,params.get("year"))
+ .eq(StringUtils.isNotEmpty(params.get("month").toString()),Import::getMonth,params.get("month")));
+ return R.ok().putData("importList",importList);
+ }
+
+ //导入数据
+ @RequestMapping("/importData")
+ @Transactional
+ public R importData(@RequestParam("file") MultipartFile file, @RequestParam("type") int type,
+ @RequestParam("year") int year, @RequestParam("month") int month) {
+ //删除之前上的的数据
+ Import imp = importService.getOne(new LambdaQueryWrapper()
+ .eq(Import::getYear, year).eq(Import::getMonth, month));
+ if(imp != null){
+ List oldPayments = paymentService.list(new LambdaQueryWrapper()
+ .eq(Payment::getImportId,imp.getId()).eq(Payment::getType, type));
+ paymentService.removeBatchByIds(oldPayments);
+ }else {
+ imp = new Import();
+ imp.setYear(year);
+ imp.setMonth(month);
+ }
+ //上传文件
+ FileUtil fileUtil = new FileUtil();
+ String url = fileUtil.uploadFile(file);
+ if(0==type){
+ imp.setWechatFile(url);
+ }else if(1==type){
+ imp.setAlipayFile(url);
+ }else if(2==type){
+ imp.setBankFile(url);
+ }
+ importService.saveOrUpdate(imp);
+ //导入新数据
+ int num = 0;
+ try (InputStream fis = file.getInputStream()) {
+ //解析数据
+ ExcelUtil example = new ExcelUtil();
+ example.processOneSheet(fis);
+ LinkedHashMap map = example.getRowContents();
+ Iterator> it = map.entrySet().iterator();
+ //处理数据
+ int count = 0;
+ List list = new ArrayList<>();
+ while (it.hasNext()) {
+ Map.Entry entry = it.next();
+ String pos = entry.getKey();
+ String rowNo = pos.replaceAll("[a-zA-Z]", "");
+ count = Integer.parseInt(rowNo);
+ }
+ for (int i=2;i<=count;i++){
+ Payment payment = new Payment();
+ payment.setImportId(imp.getId());
+ payment.setType(map.containsKey("A"+i)?Integer.valueOf(map.get("A"+i)):0);
+ payment.setFinanceSn(map.getOrDefault("B" + i, ""));
+ payment.setTransactionSn(map.getOrDefault("C" + i, ""));
+ payment.setRelationSn(map.getOrDefault("D" + i, ""));
+ payment.setFee(new BigDecimal(map.get("E" + i)));
+ payment.setCtime(DateUtils.parseDate(map.get("F"+i), new String[]{"yyyy-MM-dd HH:mm:ss"}));
+ payment.setPaymentName(map.getOrDefault("G" + i, ""));
+ payment.setPaymentType(map.getOrDefault("H" + i, ""));
+ payment.setRemark(map.getOrDefault("I" + i, ""));
+ list.add(payment);
+ num++;
+ }
+ paymentService.saveBatch(list);
+ } catch (Exception e) {
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return R.error(e.getMessage());
+ }
+ return R.ok("导入成功"+num+"条");
+ }
+
+
+
+}