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

年指标导入重复数据处理,导入日志添加

sl 1 рік тому
батько
коміт
7c6f574875

+ 9 - 0
module_kzks/src/main/java/org/jeecg/modules/kpiImportList/mapper/KpiImportListMapper.java

@@ -3,8 +3,10 @@ package org.jeecg.modules.kpiImportList.mapper;
 import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import org.jeecg.modules.kpiImportList.entity.KpiImportList;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.kpiImportListRepeat.entity.KpiImportListRepeat;
 
 /**
  * @Description: 年指标导入
@@ -13,5 +15,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @Version: V1.0
  */
 public interface KpiImportListMapper extends BaseMapper<KpiImportList> {
+    //从数据库中取出该表中的所有数据
+    @Select("select department, year, kpi from kzks_kpi_import_list")
+    List<KpiImportList> getKpiAll();
+
+    //从数据库指标重复表中取出该表中的所有数据
+    @Select("select department, year, kpi from kzks_kpi_import_list_repeat")
+    List<KpiImportListRepeat> getKpiRepeatAll();
 
 }

+ 3 - 0
module_kzks/src/main/java/org/jeecg/modules/kpiImportList/service/IKpiImportListService.java

@@ -24,4 +24,7 @@ public interface IKpiImportListService extends IService<KpiImportList> {
      * @return
      */
     public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response, Class<KpiImportList> clazz);
+
+    /**用于文件管理——导入日志——导入部门年指标导入表*/
+    public Result<?> importExcel1(String strUrl, Class<KpiImportList> clazz);
 }

+ 245 - 11
module_kzks/src/main/java/org/jeecg/modules/kpiImportList/service/impl/KpiImportListServiceImpl.java

@@ -2,12 +2,16 @@ package org.jeecg.modules.kpiImportList.service.impl;
 
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.Index.entity.kpi.IndexKpiCompletByDate;
 import org.jeecg.modules.costModelWxPrice.entity.CostModelWxPrice;
 import org.jeecg.modules.kpiImportList.entity.KpiImportList;
 import org.jeecg.modules.kpiImportList.mapper.KpiImportListMapper;
 import org.jeecg.modules.kpiImportList.service.IKpiImportListService;
+import org.jeecg.modules.kpiImportListRepeat.entity.KpiImportListRepeat;
+import org.jeecg.modules.kpiImportListRepeat.service.IKpiImportListRepeatService;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -16,13 +20,13 @@ import org.springframework.web.multipart.MultipartHttpServletRequest;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.InputStream;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @Description: 年指标导入
@@ -33,6 +37,15 @@ import java.util.Map;
 @Service
 @Slf4j
 public class KpiImportListServiceImpl extends ServiceImpl<KpiImportListMapper, KpiImportList> implements IKpiImportListService {
+    @Autowired
+    @SuppressWarnings("all")
+    private KpiImportListMapper kpiImportListMapper;
+
+    @Autowired
+    @SuppressWarnings("all")
+    private IKpiImportListRepeatService kpiImportListRepeatService;
+
+
     /**
      * 通过excel导入数据
      * 导入年指标,平均计算月指标并导入
@@ -52,22 +65,111 @@ public class KpiImportListServiceImpl extends ServiceImpl<KpiImportListMapper, K
             params.setHeadRows(1);
             params.setNeedSave(true);
             try {
-                List<KpiImportList> list = ExcelImportUtil.importExcel(file.getInputStream(), clazz, params);
-                List<KpiImportList> listNew = new ArrayList<>(); //用来存放计算的月指标以及去除空值的数据
-                for (KpiImportList kpiImportList : list) {
-                    if (kpiImportList.getDepartment() != null && kpiImportList.getKpi() != null && kpiImportList.getYear() != null) {
-                        kpiImportList.setKpiMonth(kpiImportList.getKpi().divide(BigDecimal.valueOf(12), 2, RoundingMode.HALF_UP));
-                        listNew.add(kpiImportList);
+                int numRepeatData = 0;//记录重复数据,需要弄出来放在一个新表中保存
+                int numErrorData = 0;//记录异常数据的条数  异常数据是指外协项目为空或者外协单位为空的情况
+                List<KpiImportList> list = ExcelImportUtil.importExcel(file.getInputStream(), clazz, params);//从excel表格中获取所有数据
+                List<KpiImportList> listDataBase = kpiImportListMapper.getKpiAll();//从数据库中获取所有数据
+                System.out.println(listDataBase);
+                List<KpiImportListRepeat> listDataBaseRepeat = kpiImportListMapper.getKpiRepeatAll();//从数据库中获取所有未处理的重复数据
+                Map<String, KpiImportList> listDataBaseMap = new HashMap<>();
+                for(KpiImportList kpiImportList:listDataBase){
+                    listDataBaseMap.put(String.format("%s,%d",kpiImportList.getDepartment(), kpiImportList.getYear()), kpiImportList);
+                }
+                List<KpiImportList> listNew = new ArrayList<>(); //用来存放计算的月指标以及去除空值的数据,需要存入数据库中的数据
+                List<KpiImportListRepeat> listNewRepeat = new ArrayList<>();//用来存放重复数据
+                for (KpiImportList kpiImportList1 : list) {
+                    //列表中去除重复数据
+                    if (!listNew.contains(kpiImportList1)) {
+                        //列表中去除部门、指标、指标年份为null的数据,为异常数据
+                        if (kpiImportList1.getDepartment() != null && kpiImportList1.getKpi() != null && kpiImportList1.getYear() != null) {
+                            //判断该数据是否与数据库中的数据重复
+                            //完全重复忽略,部门年份相同,指标不同存入重复表
+                            if(!listDataBase.contains(kpiImportList1)){
+                                String kpiImportListKey = String.format("%s,%d", kpiImportList1.getDepartment(), kpiImportList1.getYear());
+                                if (!listDataBaseMap.containsKey(kpiImportListKey)) {
+                                    if (kpiImportList1.getKpi().equals(BigDecimal.valueOf(0))) {
+                                        kpiImportList1.setKpiMonth(BigDecimal.valueOf(0));
+                                    } else {
+                                        kpiImportList1.setKpiMonth(kpiImportList1.getKpi().divide(BigDecimal.valueOf(12), 2, RoundingMode.HALF_UP));
+                                    }
+                                    listNew.add(kpiImportList1);//新增指标数据
+                                } else {//重复数据(将该数据和数据库中的数据都存入重复数据表中,便于后续选择)
+                                    System.out.println("当前需要存入的重复数据:");
+                                    System.out.println(kpiImportList1);
+                                    //该数据
+                                    KpiImportListRepeat kpiImportListRepeat1 = new KpiImportListRepeat();
+                                    kpiImportListRepeat1.setDepartment(kpiImportList1.getDepartment());
+                                    kpiImportListRepeat1.setKpi(kpiImportList1.getKpi());
+                                    kpiImportListRepeat1.setYear(kpiImportList1.getYear());
+                                    //数据库中重复数据
+                                    KpiImportList kpiImportList2 = listDataBaseMap.get(kpiImportListKey);
+                                    KpiImportListRepeat kpiImportListRepeat2 = new KpiImportListRepeat();
+                                    kpiImportListRepeat2.setDepartment(kpiImportList2.getDepartment());
+                                    kpiImportListRepeat2.setKpi(kpiImportList2.getKpi());
+                                    kpiImportListRepeat2.setYear(kpiImportList2.getYear());
+                                    listNewRepeat.add(kpiImportListRepeat1);//新增一条重复数据
+                                    listNewRepeat.add(kpiImportListRepeat2);//数据库中数据也存入重复表
+                                    numRepeatData++;//重复数据加一
+                                }
+                            }else{
+                                numRepeatData++;//重复数据加一
+                            }
+                        } else {
+                            numErrorData++;//异常数据加一
+                        }
+                    } else {
+                        //列表中去除部门、指标、指标年份为null的数据,为异常数据
+                        if (kpiImportList1.getDepartment() != null && kpiImportList1.getKpi() != null && kpiImportList1.getYear() != null) {
+//                        KpiImportListRepeat kpiImportListRepeat = new KpiImportListRepeat();
+//                        kpiImportListRepeat.setDepartment(kpiImportList1.getDepartment());
+//                        kpiImportListRepeat.setKpi(kpiImportList1.getKpi());
+//                        kpiImportListRepeat.setYear(kpiImportList1.getYear());
+//                        listNewRepeat.add(kpiImportListRepeat);//新增一条重复数据
+                            numRepeatData++;//重复数据加一
+                        } else {
+                            numErrorData++;//异常数据加一
+                        }
                     }
+
                 }
+                List<KpiImportListRepeat> listNewRepeat2 = new ArrayList<>();
+                //去除两个相似数据对应相同的数据库数据,只留一个数据库数据即可
+                for(KpiImportListRepeat kpiImportListRepeat:listNewRepeat){
+                    if((!listNewRepeat2.contains(kpiImportListRepeat)) && (!listDataBaseRepeat.contains(kpiImportListRepeat))){
+                        KpiImportListRepeat kpiImportListRepeat2 = new KpiImportListRepeat();
+                        kpiImportListRepeat2.setDepartment(kpiImportListRepeat.getDepartment());
+                        kpiImportListRepeat2.setYear(kpiImportListRepeat.getYear());
+                        kpiImportListRepeat2.setKpi(kpiImportListRepeat.getKpi());
+                        if(kpiImportListRepeat2.getKpi().equals(BigDecimal.valueOf(0))){
+                            kpiImportListRepeat2.setKpiMonth(BigDecimal.valueOf(0));
+                        }else{
+                            kpiImportListRepeat2.setKpiMonth(kpiImportListRepeat2.getKpi().divide(BigDecimal.valueOf(12), 2, RoundingMode.HALF_UP));
+                        }
+                        listNewRepeat2.add(kpiImportListRepeat2);
+                    }
+                }
+                System.out.println("新增指标数据:");
+                System.out.println(listNew);
+                System.out.println("重复指标数据:");
+                System.out.println(listNewRepeat2);
+
+
                 //update-begin-author:taoyan date:20190528 for:批量插入数据
                 long start = System.currentTimeMillis();
                 this.saveBatch(listNew);
+                kpiImportListRepeatService.saveBatch(listNewRepeat2);
                 //400条 saveBatch消耗时间1592毫秒  循环插入消耗时间1947毫秒
                 //1200条  saveBatch消耗时间3687毫秒 循环插入消耗时间5212毫秒
                 log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒");
                 //update-end-author:taoyan date:20190528 for:批量插入数据
-                return Result.ok("文件导入成功!数据行数:" + listNew.size());
+//                return Result.ok("文件导入成功!数据行数:" + listNew.size());
+                if((numRepeatData == 0)&&(numErrorData==0)){
+                    return Result.ok("文件导入成功!数据行数:" + listNew.size());
+                }
+                else{
+                    return Result.error("文件导入部分数据!数据行数:" + listNew.size() + ",异常数据行数:" + numErrorData + ",需要确定修改的重复数据行数:" + numRepeatData);
+                }
+
             } catch (Exception e) {
                 //update-begin-author:taoyan date:20211124 for: 导入数据重复增加提示
                 String msg = e.getMessage();
@@ -88,4 +190,136 @@ public class KpiImportListServiceImpl extends ServiceImpl<KpiImportListMapper, K
         }
         return Result.error("文件导入失败!");
     }
+
+    /**用于文件管理——导入日志——导入部门年指标导入表*/
+    public Result<?> importExcel1(String strUrl, Class<KpiImportList> clazz) {
+        InputStream inputStream = null;
+        try {
+            inputStream = new FileInputStream(strUrl);
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        }
+        // 获取上传文件对象
+        ImportParams params = new ImportParams();
+        params.setTitleRows(0);/*表格标题所占行数(默认是0)*/
+        params.setHeadRows(1);/*表头所占据的行数行数,默认1,代表标题占据一行*/
+        params.setNeedSave(true);
+        try {
+            int numRepeatData = 0;//记录重复数据,需要弄出来放在一个新表中保存
+            int numErrorData = 0;//记录异常数据的条数  异常数据是指外协项目为空或者外协单位为空的情况
+            List<KpiImportList> list = ExcelImportUtil.importExcel(inputStream, clazz, params);//从excel表格中获取所有数据
+            List<KpiImportList> listDataBase = kpiImportListMapper.getKpiAll();//从数据库中获取所有数据
+            List<KpiImportListRepeat> listDataBaseRepeat = kpiImportListMapper.getKpiRepeatAll();//从数据库中获取所有未处理的重复数据
+            Map<String, KpiImportList> listDataBaseMap = new HashMap<>();
+            for (KpiImportList kpiImportList : listDataBase) {
+                listDataBaseMap.put(String.format("%s,%d", kpiImportList.getDepartment(), kpiImportList.getYear()), kpiImportList);
+            }
+            List<KpiImportList> listNew = new ArrayList<>(); //用来存放计算的月指标以及去除空值的数据,需要存入数据库中的数据
+            List<KpiImportListRepeat> listNewRepeat = new ArrayList<>();//用来存放重复数据
+            for (KpiImportList kpiImportList1 : list) {
+                //列表中去除重复数据
+                if (!listNew.contains(kpiImportList1)) {
+                    //列表中去除部门、指标、指标年份为null的数据,为异常数据
+                    if (kpiImportList1.getDepartment() != null && kpiImportList1.getKpi() != null && kpiImportList1.getYear() != null) {
+                        //判断该数据是否与数据库中的数据重复
+                        //完全重复忽略,部门年份相同,指标不同存入重复表
+                        if(!listDataBase.contains(kpiImportList1)){
+                            String kpiImportListKey = String.format("%s,%d", kpiImportList1.getDepartment(), kpiImportList1.getYear());
+                            if (!listDataBaseMap.containsKey(kpiImportListKey)) {
+                                if (kpiImportList1.getKpi().equals(BigDecimal.valueOf(0))) {
+                                    kpiImportList1.setKpiMonth(BigDecimal.valueOf(0));
+                                } else {
+                                    kpiImportList1.setKpiMonth(kpiImportList1.getKpi().divide(BigDecimal.valueOf(12), 2, RoundingMode.HALF_UP));
+                                }
+                                listNew.add(kpiImportList1);//新增指标数据
+                            } else {//重复数据(将该数据和数据库中的数据都存入重复数据表中,便于后续选择)
+                                //该数据
+                                KpiImportListRepeat kpiImportListRepeat1 = new KpiImportListRepeat();
+                                kpiImportListRepeat1.setDepartment(kpiImportList1.getDepartment());
+                                kpiImportListRepeat1.setKpi(kpiImportList1.getKpi());
+                                kpiImportListRepeat1.setYear(kpiImportList1.getYear());
+                                //数据库中重复数据
+                                KpiImportList kpiImportList2 = listDataBaseMap.get(kpiImportListKey);
+                                KpiImportListRepeat kpiImportListRepeat2 = new KpiImportListRepeat();
+                                kpiImportListRepeat2.setDepartment(kpiImportList2.getDepartment());
+                                kpiImportListRepeat2.setKpi(kpiImportList2.getKpi());
+                                kpiImportListRepeat2.setYear(kpiImportList2.getYear());
+                                listNewRepeat.add(kpiImportListRepeat1);//新增一条重复数据
+                                listNewRepeat.add(kpiImportListRepeat2);//数据库中数据也存入重复表
+                                numRepeatData++;//重复数据加一
+                            }
+                        }else{
+                            numRepeatData++;//重复数据加一
+                        }
+                    } else {
+                        numErrorData++;//异常数据加一
+                    }
+                } else {
+                    //列表中去除部门、指标、指标年份为null的数据,为异常数据
+                    if (kpiImportList1.getDepartment() != null && kpiImportList1.getKpi() != null && kpiImportList1.getYear() != null) {
+//                        KpiImportListRepeat kpiImportListRepeat = new KpiImportListRepeat();
+//                        kpiImportListRepeat.setDepartment(kpiImportList1.getDepartment());
+//                        kpiImportListRepeat.setKpi(kpiImportList1.getKpi());
+//                        kpiImportListRepeat.setYear(kpiImportList1.getYear());
+//                        listNewRepeat.add(kpiImportListRepeat);//新增一条重复数据
+                        numRepeatData++;//重复数据加一
+                    } else {
+                        numErrorData++;//异常数据加一
+                    }
+                }
+
+            }
+
+            List<KpiImportListRepeat> listNewRepeat2 = new ArrayList<>();
+            //去除两个相似数据对应相同的数据库数据,只留一个数据库数据即可
+            for (KpiImportListRepeat kpiImportListRepeat : listNewRepeat) {
+                if ((!listNewRepeat2.contains(kpiImportListRepeat)) && (!listDataBaseRepeat.contains(kpiImportListRepeat))) {
+                    if (kpiImportListRepeat.getKpi().equals(BigDecimal.valueOf(0))) {
+                        kpiImportListRepeat.setKpiMonth(BigDecimal.valueOf(0));
+                    } else {
+                        kpiImportListRepeat.setKpiMonth(kpiImportListRepeat.getKpi().divide(BigDecimal.valueOf(12), 2, RoundingMode.HALF_UP));
+                    }
+                    listNewRepeat2.add(kpiImportListRepeat);
+                }
+            }
+            System.out.println("新增指标数据:");
+            System.out.println(listNew);
+            System.out.println("重复指标数据:");
+            System.out.println(listNewRepeat2);
+
+
+            //update-begin-author:taoyan date:20190528 for:批量插入数据
+            long start = System.currentTimeMillis();
+            this.saveBatch(listNew);
+            kpiImportListRepeatService.saveBatch(listNewRepeat2);
+            //400条 saveBatch消耗时间1592毫秒  循环插入消耗时间1947毫秒
+            //1200条  saveBatch消耗时间3687毫秒 循环插入消耗时间5212毫秒
+            log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒");
+            //update-end-author:taoyan date:20190528 for:批量插入数据
+//                return Result.ok("文件导入成功!数据行数:" + listNew.size());
+            if ((numRepeatData == 0) && (numErrorData == 0)) {
+                return Result.ok("文件导入成功!数据行数:" + listNew.size());
+            } else {
+                return Result.error("文件导入部分数据!数据行数:" + listNew.size() + ",异常数据行数:" + numErrorData + ",需要确定修改的重复数据行数:" + numRepeatData);
+            }
+
+        } catch (Exception e) {
+            //update-begin-author:taoyan date:20211124 for: 导入数据重复增加提示
+            String msg = e.getMessage();
+            log.error(msg, e);
+            if (msg != null && msg.indexOf("Duplicate entry") >= 0) {
+                return Result.error("文件导入失败:有重复数据!");
+            } else {
+                return Result.error("文件导入失败:" + e.getMessage());
+            }
+            //update-end-author:taoyan date:20211124 for: 导入数据重复增加提示
+        } finally {
+            try {
+                inputStream.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
 }

+ 183 - 0
module_kzks/src/main/java/org/jeecg/modules/kpiImportListRepeat/controller/KpiImportListRepeatController.java

@@ -0,0 +1,183 @@
+package org.jeecg.modules.kpiImportListRepeat.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.kpiImportList.service.IKpiImportListService;
+import org.jeecg.modules.kpiImportListRepeat.entity.KpiImportListRepeat;
+import org.jeecg.modules.kpiImportListRepeat.service.IKpiImportListRepeatService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+ /**
+ * @Description: 年指标导入重复数据存储表
+ * @Author: jeecg-boot
+ * @Date:   2023-10-26
+ * @Version: V1.0
+ */
+@Api(tags="年指标导入重复数据存储表")
+@RestController
+@RequestMapping("/kpiImportListRepeat/kpiImportListRepeat")
+@Slf4j
+public class KpiImportListRepeatController extends JeecgController<KpiImportListRepeat, IKpiImportListRepeatService> {
+	@Autowired
+	private IKpiImportListRepeatService kpiImportListRepeatService;
+
+	@Autowired
+	private IKpiImportListService kpiImportListService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param kpiImportListRepeat
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "年指标导入重复数据存储表-分页列表查询")
+	@ApiOperation(value="年指标导入重复数据存储表-分页列表查询", notes="年指标导入重复数据存储表-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<KpiImportListRepeat>> queryPageList(KpiImportListRepeat kpiImportListRepeat,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<KpiImportListRepeat> queryWrapper = QueryGenerator.initQueryWrapper(kpiImportListRepeat, req.getParameterMap());
+		//查询的内容根据部门年份排序
+		queryWrapper.orderByDesc("department", "year");
+		Page<KpiImportListRepeat> page = new Page<KpiImportListRepeat>(pageNo, pageSize);
+		IPage<KpiImportListRepeat> pageList = kpiImportListRepeatService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param kpiImportListRepeat
+	 * @return
+	 */
+	@AutoLog(value = "年指标导入重复数据存储表-添加")
+	@ApiOperation(value="年指标导入重复数据存储表-添加", notes="年指标导入重复数据存储表-添加")
+	//@RequiresPermissions("org.jeecg.modules:kzks_kpi_import_list_repeat:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody KpiImportListRepeat kpiImportListRepeat) {
+		kpiImportListRepeatService.save(kpiImportListRepeat);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param kpiImportListRepeat
+	 * @return
+	 */
+	@AutoLog(value = "年指标导入重复数据存储表-编辑")
+	@ApiOperation(value="年指标导入重复数据存储表-编辑", notes="年指标导入重复数据存储表-编辑")
+	//@RequiresPermissions("org.jeecg.modules:kzks_kpi_import_list_repeat:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody KpiImportListRepeat kpiImportListRepeat) {
+		kpiImportListRepeatService.updateById(kpiImportListRepeat);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "年指标导入重复数据存储表-通过id删除")
+	@ApiOperation(value="年指标导入重复数据存储表-通过id删除", notes="年指标导入重复数据存储表-通过id删除")
+	//@RequiresPermissions("org.jeecg.modules:kzks_kpi_import_list_repeat:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		kpiImportListRepeatService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "年指标导入重复数据存储表-批量删除")
+	@ApiOperation(value="年指标导入重复数据存储表-批量删除", notes="年指标导入重复数据存储表-批量删除")
+	//@RequiresPermissions("org.jeecg.modules:kzks_kpi_import_list_repeat:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.kpiImportListRepeatService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "年指标导入重复数据存储表-通过id查询")
+	@ApiOperation(value="年指标导入重复数据存储表-通过id查询", notes="年指标导入重复数据存储表-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<KpiImportListRepeat> queryById(@RequestParam(name="id",required=true) String id) {
+		KpiImportListRepeat kpiImportListRepeat = kpiImportListRepeatService.getById(id);
+		if(kpiImportListRepeat==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(kpiImportListRepeat);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param kpiImportListRepeat
+    */
+    //@RequiresPermissions("org.jeecg.modules:kzks_kpi_import_list_repeat:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, KpiImportListRepeat kpiImportListRepeat) {
+        return super.exportXls(request, kpiImportListRepeat, KpiImportListRepeat.class, "年指标导入重复数据存储表");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("kzks_kpi_import_list_repeat:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, KpiImportListRepeat.class);
+    }
+
+}

+ 78 - 0
module_kzks/src/main/java/org/jeecg/modules/kpiImportListRepeat/entity/KpiImportListRepeat.java

@@ -0,0 +1,78 @@
+package org.jeecg.modules.kpiImportListRepeat.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 年指标导入重复数据存储表
+ * @Author: jeecg-boot
+ * @Date:   2023-10-26
+ * @Version: V1.0
+ */
+@Data
+@TableName("kzks_kpi_import_list_repeat")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="kzks_kpi_import_list_repeat对象", description="年指标导入重复数据存储表")
+public class KpiImportListRepeat implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private java.lang.String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+	/**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+	/**指标年份*/
+	@Excel(name = "指标年份", width = 15)
+    @ApiModelProperty(value = "指标年份")
+    private java.lang.Integer year;
+	/**指标金额*/
+	@Excel(name = "指标金额", width = 15)
+    @ApiModelProperty(value = "指标金额")
+    private java.math.BigDecimal kpi;
+	/**平均每月*/
+	@Excel(name = "平均每月", width = 15)
+    @ApiModelProperty(value = "平均每月")
+    private java.math.BigDecimal kpiMonth;
+	/**指标部门*/
+	@Excel(name = "指标部门", width = 15)
+    @ApiModelProperty(value = "指标部门")
+    private java.lang.String department;
+	/**指标年月*/
+	@Excel(name = "指标年月", width = 15)
+    @ApiModelProperty(value = "指标年月")
+    private java.lang.String ym;
+}

+ 17 - 0
module_kzks/src/main/java/org/jeecg/modules/kpiImportListRepeat/mapper/KpiImportListRepeatMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.kpiImportListRepeat.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.kpiImportListRepeat.entity.KpiImportListRepeat;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 年指标导入重复数据存储表
+ * @Author: jeecg-boot
+ * @Date:   2023-10-26
+ * @Version: V1.0
+ */
+public interface KpiImportListRepeatMapper extends BaseMapper<KpiImportListRepeat> {
+
+}

+ 5 - 0
module_kzks/src/main/java/org/jeecg/modules/kpiImportListRepeat/mapper/xml/KpiImportListRepeatMapper.xml

@@ -0,0 +1,5 @@
+<?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="org.jeecg.modules.kpiImportListRepeat.mapper.KpiImportListRepeatMapper">
+
+</mapper>

+ 14 - 0
module_kzks/src/main/java/org/jeecg/modules/kpiImportListRepeat/service/IKpiImportListRepeatService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.kpiImportListRepeat.service;
+
+import org.jeecg.modules.kpiImportListRepeat.entity.KpiImportListRepeat;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 年指标导入重复数据存储表
+ * @Author: jeecg-boot
+ * @Date:   2023-10-26
+ * @Version: V1.0
+ */
+public interface IKpiImportListRepeatService extends IService<KpiImportListRepeat> {
+
+}

+ 19 - 0
module_kzks/src/main/java/org/jeecg/modules/kpiImportListRepeat/service/impl/KpiImportListRepeatServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.kpiImportListRepeat.service.impl;
+
+import org.jeecg.modules.kpiImportListRepeat.entity.KpiImportListRepeat;
+import org.jeecg.modules.kpiImportListRepeat.mapper.KpiImportListRepeatMapper;
+import org.jeecg.modules.kpiImportListRepeat.service.IKpiImportListRepeatService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 年指标导入重复数据存储表
+ * @Author: jeecg-boot
+ * @Date:   2023-10-26
+ * @Version: V1.0
+ */
+@Service
+public class KpiImportListRepeatServiceImpl extends ServiceImpl<KpiImportListRepeatMapper, KpiImportListRepeat> implements IKpiImportListRepeatService {
+
+}

+ 1 - 0
module_kzks/src/main/java/org/jeecg/modules/kpiProjectMonth/service/impl/KpiProjectMonthServiceImpl.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.kpiProjectMonth.service.impl;
 
+import org.jeecg.modules.dataSourceSwitch.annotation.TargetDataSource;
 import org.jeecg.modules.kpiProjectMonth.entity.KpiProjectMonth;
 import org.jeecg.modules.kpiProjectMonth.mapper.KpiProjectMonthMapper;
 import org.jeecg.modules.kpiProjectMonth.service.IKpiProjectMonthService;

+ 9 - 0
module_kzks/src/main/java/org/jeecg/modules/projectImportList/controller/ProjectImportListController.java

@@ -13,6 +13,8 @@ import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.config.JeecgBaseConfig;
 import org.jeecg.modules.costModelWxPrice.entity.CostModelWxPrice;
 import org.jeecg.modules.costModelWxPrice.service.ICostModelWxPriceService;
+import org.jeecg.modules.kpiImportList.entity.KpiImportList;
+import org.jeecg.modules.kpiImportList.service.IKpiImportListService;
 import org.jeecg.modules.kyTaskTemp.entity.KyTaskTemp;
 import org.jeecg.modules.kyTaskTemp.service.IKyTaskTempService;
 import org.jeecg.modules.projectBudget.entity.ProjectBudget;
@@ -59,6 +61,10 @@ public class ProjectImportListController extends JeecgController<ProjectImportLi
 	@SuppressWarnings("all")
 	private IKyTaskTempService kyTaskTempService;
 
+	@Autowired
+	@SuppressWarnings("all")
+	private IKpiImportListService kpiImportListService;
+
 
 
 	 /**
@@ -67,6 +73,7 @@ public class ProjectImportListController extends JeecgController<ProjectImportLi
 	  *外协费 2
 	  *事务费 3
 	  *专用费 4
+	  * 年指标  8
 	  * @param request
 	  * @param response
 	  * @return
@@ -94,6 +101,8 @@ public class ProjectImportListController extends JeecgController<ProjectImportLi
 			 return wxPriceService.importExcel1(url, CostModelWxPrice.class);
 		 }else if(projectImportList.getFileType().equals("7")){ //7任务关系映射
 			 return kyTaskTempService.importExcel1(url, KyTaskTemp.class);
+		 }else if(projectImportList.getFileType().equals("8")){ //8部门年指标导入表
+			 return kpiImportListService.importExcel1(url, KpiImportList.class);
 		 }else {
 			 return result;
 		 }