Browse Source

年指标导入增删改查以及表格导入导出修改

sl 1 year ago
parent
commit
ec1328371b

+ 6 - 1
module_kzks/src/main/java/org/jeecg/modules/kpiImportList/controller/KpiImportListController.java

@@ -1,5 +1,7 @@
 package org.jeecg.modules.kpiImportList.controller;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
@@ -83,6 +85,7 @@ public class KpiImportListController extends JeecgController<KpiImportList, IKpi
 	//@RequiresPermissions("org.jeecg.modules:kzks_kpi_import_list:add")
 	@PostMapping(value = "/add")
 	public Result<String> add(@RequestBody KpiImportList kpiImportList) {
+		kpiImportList.setKpiMonth(kpiImportList.getKpi().divide(BigDecimal.valueOf(12), 2, RoundingMode.HALF_UP));
 		kpiImportListService.save(kpiImportList);
 		return Result.OK("添加成功!");
 	}
@@ -98,6 +101,7 @@ public class KpiImportListController extends JeecgController<KpiImportList, IKpi
 	//@RequiresPermissions("org.jeecg.modules:kzks_kpi_import_list:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> edit(@RequestBody KpiImportList kpiImportList) {
+		kpiImportList.setKpiMonth(kpiImportList.getKpi().divide(BigDecimal.valueOf(12), 2, RoundingMode.HALF_UP));
 		kpiImportListService.updateById(kpiImportList);
 		return Result.OK("编辑成功!");
 	}
@@ -171,7 +175,8 @@ public class KpiImportListController extends JeecgController<KpiImportList, IKpi
     //@RequiresPermissions("kzks_kpi_import_list:importExcel")
     @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
     public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-        return super.importExcel(request, response, KpiImportList.class);
+		return kpiImportListService.importExcel(request, response, KpiImportList.class);
+//        return super.importExcel(request, response, KpiImportList.class);
     }
 
 }

+ 3 - 3
module_kzks/src/main/java/org/jeecg/modules/kpiImportList/entity/KpiImportList.java

@@ -64,15 +64,15 @@ public class KpiImportList implements Serializable {
     @ApiModelProperty(value = "指标金额")
     private java.math.BigDecimal kpi;
 	/**平均每月*/
-	@Excel(name = "平均每月", width = 15)
+//	@Excel(name = "平均每月", width = 15)
     @ApiModelProperty(value = "平均每月")
-    private java.lang.String kpiMonth;
+    private java.math.BigDecimal kpiMonth;
 	/**指标部门*/
 	@Excel(name = "指标部门", width = 15)
     @ApiModelProperty(value = "指标部门")
     private java.lang.String department;
 	/**指标年月*/
-	@Excel(name = "指标年月", width = 15)
+//	@Excel(name = "指标年月", width = 15)
     @ApiModelProperty(value = "指标年月")
     private java.lang.String ym;
 }

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

@@ -1,8 +1,12 @@
 package org.jeecg.modules.kpiImportList.service;
 
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.kpiImportList.entity.KpiImportList;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * @Description: 年指标导入
  * @Author: jeecg-boot
@@ -11,4 +15,13 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IKpiImportListService extends IService<KpiImportList> {
 
+    /**
+     * 通过excel导入数据
+     * 导入年指标,平均计算月指标并导入
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response, Class<KpiImportList> clazz);
 }

+ 73 - 1
module_kzks/src/main/java/org/jeecg/modules/kpiImportList/service/impl/KpiImportListServiceImpl.java

@@ -1,11 +1,28 @@
 package org.jeecg.modules.kpiImportList.service.impl;
 
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+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.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.entity.ImportParams;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 年指标导入
@@ -14,6 +31,61 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  * @Version: V1.0
  */
 @Service
+@Slf4j
 public class KpiImportListServiceImpl extends ServiceImpl<KpiImportListMapper, KpiImportList> implements IKpiImportListService {
-
+    /**
+     * 通过excel导入数据
+     * 导入年指标,平均计算月指标并导入
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response, Class<KpiImportList> clazz) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            // 获取上传文件对象
+            MultipartFile file = entity.getValue();
+            ImportParams params = new ImportParams();
+            params.setTitleRows(0);
+            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);
+                    }
+                }
+                //update-begin-author:taoyan date:20190528 for:批量插入数据
+                long start = System.currentTimeMillis();
+                this.saveBatch(listNew);
+                //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());
+            } 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 {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.error("文件导入失败!");
+    }
 }