瀏覽代碼

三费导入、项目预算导入、科目成本导入

LLL 1 年之前
父節點
當前提交
6b0f2c05a9

+ 5 - 0
module_kzks/src/main/java/org/jeecg/modules/projectCost/mapper/ProjectCostMapper.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.projectCost.mapper;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
@@ -15,6 +16,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ProjectCostMapper extends BaseMapper<ProjectCost> {
 
+    /**修改该任务号的材料预算及外协预算*/
+    @Select("update kzks_project_cost set clys = #{clys}, wxys = #{wxys} where taskno = #{taskno}")
+    public void updateYS(BigDecimal clys,BigDecimal wxys, String taskno);
+
     /**根据任务号查询项目成本的主任务及组批后的主任务*/
     public List<ProjectCost> costListByTaskNoMain(String taskno);
 

+ 10 - 22
module_kzks/src/main/java/org/jeecg/modules/projectImportList/controller/ProjectImportListController.java

@@ -13,14 +13,11 @@ import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.config.JeecgBaseConfig;
 import org.jeecg.modules.projectBudget.entity.ProjectBudget;
 import org.jeecg.modules.projectBudget.service.IProjectBudgetService;
-import org.jeecg.modules.projectChbSwf.entity.ProjectChbSwf;
-import org.jeecg.modules.projectChbSwf.service.IProjectChbSwfService;
-import org.jeecg.modules.projectChbWxf.entity.ProjectChbWxf;
-import org.jeecg.modules.projectChbWxf.service.IProjectChbWxfService;
-import org.jeecg.modules.projectChbZyf.entity.ProjectChbZyf;
-import org.jeecg.modules.projectChbZyf.service.IProjectChbZyfService;
+import org.jeecg.modules.projectImportList.dto.ProjectChb;
 import org.jeecg.modules.projectImportList.entity.ProjectImportList;
 import org.jeecg.modules.projectImportList.service.IProjectImportListService;
+import org.jeecg.modules.projectKmbh.entity.KzksProjectKmbh;
+import org.jeecg.modules.projectKmbh.service.IKzksProjectKmbhService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
@@ -44,19 +41,13 @@ public class ProjectImportListController extends JeecgController<ProjectImportLi
 	private IProjectImportListService projectImportListService;
 	@Autowired
 	@SuppressWarnings("all")
-	private IProjectChbZyfService zyfService;
-	@Autowired
-	@SuppressWarnings("all")
-	private IProjectChbWxfService wxfService;
-	@Autowired
-	@SuppressWarnings("all")
-	private IProjectChbSwfService swfService;
-	@Autowired
-	@SuppressWarnings("all")
 	private IProjectBudgetService budgetService;
 	@Autowired
 	@SuppressWarnings("all")
 	private JeecgBaseConfig jeecgBaseConfig;
+	@Autowired
+	@SuppressWarnings("all")
+	private IKzksProjectKmbhService kmbhService;
 
 
 	 /**
@@ -82,15 +73,12 @@ public class ProjectImportListController extends JeecgController<ProjectImportLi
 		 System.out.println(projectImportList.getFileType());
 		 System.out.println("文件地址为:"+url);
 
-
 		 if(projectImportList.getFileType().equals("1")){ //项目预算
 			 return budgetService.importExcel1(url, ProjectBudget.class);
-		 }else if(projectImportList.getFileType().equals("2")){ //外协费
-			 return wxfService.importExcel1(url, ProjectChbWxf.class);
-		 }else if(projectImportList.getFileType().equals("3")){ //事务费
-			 return swfService.importExcel1(url, ProjectChbSwf.class);
-		 }else if(projectImportList.getFileType().equals("4")){ //专用费
-			 return  zyfService.importExcel1(url, ProjectChbZyf.class);
+		 }else if(projectImportList.getFileType().equals("2")){ //项目费用
+			 return projectImportListService.importExcel1(url, ProjectChb.class);
+		 }else if(projectImportList.getFileType().equals("3")){ //科目编号
+			 return kmbhService.importExcel1(url, KzksProjectKmbh.class);
 		 }else {
 			 return result;
 		 }

+ 27 - 0
module_kzks/src/main/java/org/jeecg/modules/projectImportList/convert/CHBConvert.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.projectImportList.convert;
+
+
+import org.jeecg.modules.projectChbSwf.entity.ProjectChbSwf;
+import org.jeecg.modules.projectChbWxf.entity.ProjectChbWxf;
+import org.jeecg.modules.projectChbZyf.entity.ProjectChbZyf;
+import org.jeecg.modules.projectCostHuiji.convert.ProjectCostHuijiConvert;
+import org.jeecg.modules.projectImportList.dto.ProjectChb;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+import org.springframework.util.CollectionUtils;
+
+import java.util.stream.Collectors;
+
+@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE,imports ={ CollectionUtils.class, Collectors.class})
+public interface CHBConvert {
+
+    CHBConvert INSTANCE = Mappers.getMapper(CHBConvert.class);
+
+    ProjectChbSwf toSWF(ProjectChb chb);
+
+    ProjectChbZyf toZYF(ProjectChb chb);
+
+    ProjectChbWxf toWXF(ProjectChb chb);
+
+}

+ 112 - 0
module_kzks/src/main/java/org/jeecg/modules/projectImportList/dto/ProjectChb.java

@@ -0,0 +1,112 @@
+package org.jeecg.modules.projectImportList.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+
+@Data
+public class ProjectChb implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**id*/
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private java.lang.String id;
+    /**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private java.lang.String createBy;
+    /**创建日期*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "创建日期")
+    private java.util.Date createTime;
+    /**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private java.lang.String updateBy;
+    /**更新日期*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "更新日期")
+    private java.util.Date updateTime;
+    /**所属部门*/
+    @ApiModelProperty(value = "所属部门")
+    private java.lang.String sysOrgCode;
+    /**年度*/
+    @Excel(name = "年度", width = 15)
+    @ApiModelProperty(value = "年度")
+    private java.lang.String nd;
+    /**凭证日期*/
+    @Excel(name = "凭证日期", width = 15)
+    @ApiModelProperty(value = "凭证日期")
+    private java.lang.String pzrq;
+    /**凭证号*/
+    @Excel(name = "凭证号", width = 15)
+    @ApiModelProperty(value = "凭证号")
+    private java.lang.String pzh;
+    /**摘要*/
+    @Excel(name = "摘要", width = 15)
+    @ApiModelProperty(value = "摘要")
+    private java.lang.String zy;
+    /**科目编号*/
+    @Excel(name = "科目编号", width = 15)
+    @ApiModelProperty(value = "科目编号")
+    private java.lang.String kmbh;
+    /**科目名称*/
+    @Excel(name = "科目名称", width = 15)
+    @ApiModelProperty(value = "科目名称")
+    private java.lang.String km;
+    /**方向*/
+    @Excel(name = "方向", width = 15)
+    @ApiModelProperty(value = "方向")
+    private java.lang.String fx;
+    /**金额*/
+    @Excel(name = "金额", width = 15)
+    @ApiModelProperty(value = "金额")
+    private java.lang.String je;
+    /**部门*/
+    @Excel(name = "部门", width = 15)
+    @ApiModelProperty(value = "部门")
+    private java.lang.String bm;
+    /**往来单位*/
+    @Excel(name = "往来单位", width = 15)
+    @ApiModelProperty(value = "往来单位")
+    private java.lang.String wldw;
+    /**辅助金额*/
+    @Excel(name = "辅助金额", width = 15)
+    @ApiModelProperty(value = "辅助金额")
+    private java.lang.String fzje;
+    /**制单人*/
+    @Excel(name = "制单人", width = 15)
+    @ApiModelProperty(value = "制单人")
+    private java.lang.String zdr;
+    /**会计期间*/
+    @Excel(name = "会计期间", width = 15)
+    @ApiModelProperty(value = "会计期间")
+    private java.lang.String kjqj;
+    /**凭证内码*/
+    @Excel(name = "凭证内码", width = 15)
+    @ApiModelProperty(value = "凭证内码")
+    private java.lang.String pznm;
+    /**项目编号*/
+    @Excel(name = "项目编号", width = 15)
+    @ApiModelProperty(value = "项目编号")
+    private java.lang.String xmbh;
+    /**项目名称*/
+    @Excel(name = "项目名称", width = 15)
+    @ApiModelProperty(value = "项目名称")
+    private java.lang.String xmmc;
+    /**项目类别*/
+    @Excel(name = "项目类别", width = 15)
+    @ApiModelProperty(value = "项目类别")
+    private java.lang.String xmlb;
+    /**任务号*/
+    @Excel(name = "任务号", width = 15)
+    @ApiModelProperty(value = "任务号")
+    private java.lang.String taskno;
+}

+ 23 - 0
module_kzks/src/main/java/org/jeecg/modules/projectImportList/dto/TasknoAndNd.java

@@ -0,0 +1,23 @@
+package org.jeecg.modules.projectImportList.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.io.Serializable;
+
+@Data
+public class TasknoAndNd implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**年度*/
+    @Excel(name = "年度", width = 15)
+    @ApiModelProperty(value = "年度")
+    private java.lang.String nd;
+
+    /**任务号*/
+    @Excel(name = "任务号", width = 15)
+    @ApiModelProperty(value = "任务号")
+    private java.lang.String taskno;
+
+}

+ 16 - 0
module_kzks/src/main/java/org/jeecg/modules/projectImportList/service/IProjectImportListService.java

@@ -1,8 +1,13 @@
 package org.jeecg.modules.projectImportList.service;
 
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.projectImportList.dto.ProjectChb;
+import org.jeecg.modules.projectImportList.dto.TasknoAndNd;
 import org.jeecg.modules.projectImportList.entity.ProjectImportList;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * @Description: 导入并下载
  * @Author: jeecg-boot
@@ -11,4 +16,15 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IProjectImportListService extends IService<ProjectImportList> {
 
+
+    public List<TasknoAndNd> addTNlist(List<TasknoAndNd> tnList, String taskno, String nd);
+
+    /**
+     * 通过excel导入数据
+     * 判断费用类别
+     * 根据年度、费用类别删除对应数据
+     * 对各个表进行新增
+     */
+    public Result<?> importExcel1(String strUrl, Class<ProjectChb> clazz);
+
 }

+ 143 - 1
module_kzks/src/main/java/org/jeecg/modules/projectImportList/service/impl/ProjectImportListServiceImpl.java

@@ -1,11 +1,31 @@
 package org.jeecg.modules.projectImportList.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.projectChbSwf.entity.ProjectChbSwf;
+import org.jeecg.modules.projectChbSwf.service.IProjectChbSwfService;
+import org.jeecg.modules.projectChbWxf.entity.ProjectChbWxf;
+import org.jeecg.modules.projectChbWxf.service.IProjectChbWxfService;
+import org.jeecg.modules.projectChbZyf.entity.ProjectChbZyf;
+import org.jeecg.modules.projectChbZyf.service.IProjectChbZyfService;
+import org.jeecg.modules.projectImportList.convert.CHBConvert;
+import org.jeecg.modules.projectImportList.dto.ProjectChb;
+import org.jeecg.modules.projectImportList.dto.TasknoAndNd;
 import org.jeecg.modules.projectImportList.entity.ProjectImportList;
 import org.jeecg.modules.projectImportList.mapper.ProjectImportListMapper;
 import org.jeecg.modules.projectImportList.service.IProjectImportListService;
+import org.jeecg.modules.projectKmbh.service.IKzksProjectKmbhService;
+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;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
 
 /**
  * @Description: 导入并下载
@@ -14,6 +34,128 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  * @Version: V1.0
  */
 @Service
+@Slf4j
 public class ProjectImportListServiceImpl extends ServiceImpl<ProjectImportListMapper, ProjectImportList> implements IProjectImportListService {
 
+    @Autowired
+    @SuppressWarnings("all")
+    private IKzksProjectKmbhService kmbhService;
+    @Autowired
+    @SuppressWarnings("all")
+    private IProjectChbSwfService swfService;
+    @Autowired
+    @SuppressWarnings("all")
+    private IProjectChbWxfService wxfService;
+    @Autowired
+    @SuppressWarnings("all")
+    private IProjectChbZyfService zyfService;
+
+    public List<TasknoAndNd> addTNlist(List<TasknoAndNd> tnList, String taskno, String nd){
+        for (TasknoAndNd tasknoAndNd : tnList){
+            if(taskno.equals(tasknoAndNd.getTaskno()) && nd.equals(tasknoAndNd.getNd())) return tnList;
+            else continue;
+        }
+        TasknoAndNd tn = new TasknoAndNd();
+        tn.setNd(nd);
+        tn.setTaskno(taskno);
+        tnList.add(tn);
+        return tnList;
+    }
+
+    /**
+     * 通过excel导入数据
+     * 判断费用类别
+     * 根据年度、费用类别删除对应数据
+     * 对各个表进行新增
+     */
+    public Result<?> importExcel1(String strUrl, Class<ProjectChb> 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 {
+            List<ProjectChb> list = ExcelImportUtil.importExcel(inputStream, clazz, params);//导入的所有数据
+
+            List<ProjectChbSwf> swfList = new ArrayList<>();//事务费
+            List<ProjectChbZyf> zyfList = new ArrayList<>();//专用费
+            List<ProjectChbWxf> wxfList = new ArrayList<>();//外协费
+
+            List<TasknoAndNd> tnSWFList = new ArrayList<>();//事务费任务号年度集合——用于删除
+            List<TasknoAndNd> tnZYFList = new ArrayList<>();//专用费任务号年度集合——用于删除
+            List<TasknoAndNd> tnWXFList = new ArrayList<>();//外协费任务号年度集合——用于删除
+
+            for (ProjectChb chb: list){
+                String taskno = chb.getTaskno();
+                String nd = chb.getNd();
+                String kmbh = chb.getKmbh();
+                if(!Objects.equals(taskno,"") && !Objects.equals(nd,"") && !Objects.equals(kmbh,"")){
+                    String fylb = kmbhService.getByNdAndKmbh(nd, kmbh);//费用类别
+                    if(Objects.equals(fylb,"事务费")){
+                        swfList.add(CHBConvert.INSTANCE.toSWF(chb));
+                        tnSWFList = addTNlist(tnSWFList,taskno,nd);
+                    }else if(Objects.equals(fylb,"专用费")){
+                        zyfList.add(CHBConvert.INSTANCE.toZYF(chb));
+                        tnZYFList = addTNlist(tnZYFList,taskno,nd);
+                    }else if(Objects.equals(fylb,"外协费")){
+                        wxfList.add(CHBConvert.INSTANCE.toWXF(chb));
+                        tnWXFList = addTNlist(tnWXFList,taskno,nd);
+                    }
+                }
+            }
+
+            //update-begin-author:taoyan date:20190528 for:批量插入数据
+            long start = System.currentTimeMillis();
+            Map<String, Object> columnMap = new HashMap<>();
+            for(TasknoAndNd tasknoAndNd : tnSWFList){
+                columnMap = new HashMap<>();
+                columnMap.put("nd",tasknoAndNd.getNd());
+                columnMap.put("taskno",tasknoAndNd.getTaskno());
+                swfService.removeByMap(columnMap);
+            }
+            swfService.saveBatch(swfList);
+            for(TasknoAndNd tasknoAndNd : tnZYFList){
+                columnMap = new HashMap<>();
+                columnMap.put("nd",tasknoAndNd.getNd());
+                columnMap.put("taskno",tasknoAndNd.getTaskno());
+                zyfService.removeByMap(columnMap);
+            }
+            zyfService.saveBatch(zyfList);
+            for(TasknoAndNd tasknoAndNd : tnWXFList){
+                columnMap = new HashMap<>();
+                columnMap.put("nd",tasknoAndNd.getNd());
+                columnMap.put("taskno",tasknoAndNd.getTaskno());
+                wxfService.removeByMap(columnMap);
+            }
+            wxfService.saveBatch(wxfList);
+            log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒");
+            //update-end-author:taoyan date:20190528 for:批量插入数据
+            return Result.ok("文件导入成功!数据行数:" + list.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 {
+                inputStream.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
 }

+ 9 - 0
module_kzks/src/main/java/org/jeecg/modules/projectKmbh/mapper/KzksProjectKmbhMapper.java

@@ -3,6 +3,7 @@ package org.jeecg.modules.projectKmbh.mapper;
 import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import org.jeecg.modules.projectKmbh.entity.KzksProjectKmbh;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -14,4 +15,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface KzksProjectKmbhMapper extends BaseMapper<KzksProjectKmbh> {
 
+    /**根据年度和科目编号查询费用类别*/
+    @Select("update kzks_project_kmbh set money_type = #{fylb} where year = #{nd} and kemu_no = #{kmbh}")
+    public void updateByNdAndKmbh(String nd, String kmbh, String fylb);
+
+    /**根据年度和科目编号查询费用类别*/
+    @Select("select money_type from kzks_project_kmbh where year = #{nd} and kemu_no = #{kmbh}")
+    public String getByNdAndKmbh(String nd, String kmbh);
+
 }

+ 12 - 1
module_kzks/src/main/java/org/jeecg/modules/projectKmbh/service/IKzksProjectKmbhService.java

@@ -1,7 +1,8 @@
 package org.jeecg.modules.projectKmbh.service;
 
-import org.jeecg.modules.projectKmbh.entity.KzksProjectKmbh;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.projectKmbh.entity.KzksProjectKmbh;
 
 /**
  * @Description: 科目编号
@@ -11,4 +12,14 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IKzksProjectKmbhService extends IService<KzksProjectKmbh> {
 
+
+    /**
+     * 通过excel导入数据
+     * @return
+     */
+    public Result<?> importExcel1(String strUrl, Class<KzksProjectKmbh> clazz);
+
+    /**根据年度和科目编号查询费用类别*/
+    public String getByNdAndKmbh(String nd, String kmbh);
+
 }

+ 77 - 0
module_kzks/src/main/java/org/jeecg/modules/projectKmbh/service/impl/KzksProjectKmbhServiceImpl.java

@@ -1,12 +1,24 @@
 package org.jeecg.modules.projectKmbh.service.impl;
 
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.projectChbZyf.entity.ProjectChbZyf;
 import org.jeecg.modules.projectKmbh.entity.KzksProjectKmbh;
 import org.jeecg.modules.projectKmbh.mapper.KzksProjectKmbhMapper;
 import org.jeecg.modules.projectKmbh.service.IKzksProjectKmbhService;
+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;
 
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
+
 /**
  * @Description: 科目编号
  * @Author: jeecg-boot
@@ -14,6 +26,71 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  * @Version: V1.0
  */
 @Service
+@Slf4j
 public class KzksProjectKmbhServiceImpl extends ServiceImpl<KzksProjectKmbhMapper, KzksProjectKmbh> implements IKzksProjectKmbhService {
 
+    @Autowired
+    @SuppressWarnings("all")
+    private KzksProjectKmbhMapper kmbhMapper;
+
+
+    /**
+     * 通过excel导入数据
+     * @return
+     */
+    public Result<?> importExcel1(String strUrl, Class<KzksProjectKmbh> clazz) {
+
+        InputStream inputStream = null;
+        try {
+            inputStream = new FileInputStream(strUrl);
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        }
+
+        // 获取上传文件对象
+        ImportParams params = new ImportParams();
+        params.setTitleRows(0);
+        params.setHeadRows(1);
+        params.setNeedSave(true);
+        try {
+            List<KzksProjectKmbh> list = ExcelImportUtil.importExcel(inputStream, clazz, params);
+
+            //确保年度和科目编号对应唯一一个费用类别,如果已经存在,更新对应的费用类别
+            List<KzksProjectKmbh> list1 = new ArrayList<>();
+            for(KzksProjectKmbh kmbh : list){
+                String fylb = this.getByNdAndKmbh(kmbh.getYear(), kmbh.getKemuNo());//费用类别
+                if(!Objects.equals(fylb,"")) kmbhMapper.updateByNdAndKmbh(kmbh.getYear(), kmbh.getKemuNo(),kmbh.getMoneyType());
+                else list1.add(kmbh);
+            }
+
+            //update-begin-author:taoyan date:20190528 for:批量插入数据
+            long start = System.currentTimeMillis();
+            this.saveBatch(list1);
+            log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒");
+            //update-end-author:taoyan date:20190528 for:批量插入数据
+            return Result.ok("文件导入成功!数据行数:" + list.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 {
+                inputStream.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /**根据年度和科目编号查询费用类别*/
+    public String getByNdAndKmbh(String nd, String kmbh){
+        return kmbhMapper.getByNdAndKmbh(nd,kmbh);
+    }
+
 }