Browse Source

科研任务数据导入

丁治程 1 year ago
parent
commit
0531126554

+ 177 - 0
module_kzks/src/main/java/org/jeecg/modules/kyTaskInfoNew/controller/KyTaskInfoNewController.java

@@ -0,0 +1,177 @@
+package org.jeecg.modules.kyTaskInfoNew.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.kyTaskInfoNew.entity.KyTaskInfoNew;
+import org.jeecg.modules.kyTaskInfoNew.service.IKyTaskInfoNewService;
+
+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: ky_task_info_new
+ * @Author: jeecg-boot
+ * @Date:   2024-04-09
+ * @Version: V1.0
+ */
+@Api(tags="ky_task_info_new")
+@RestController
+@RequestMapping("/kyTaskInfoNew/kyTaskInfoNew")
+@Slf4j
+public class KyTaskInfoNewController extends JeecgController<KyTaskInfoNew, IKyTaskInfoNewService> {
+	@Autowired
+	private IKyTaskInfoNewService kyTaskInfoNewService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param kyTaskInfoNew
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "ky_task_info_new-分页列表查询")
+	@ApiOperation(value="ky_task_info_new-分页列表查询", notes="ky_task_info_new-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<KyTaskInfoNew>> queryPageList(KyTaskInfoNew kyTaskInfoNew,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<KyTaskInfoNew> queryWrapper = QueryGenerator.initQueryWrapper(kyTaskInfoNew, req.getParameterMap());
+		Page<KyTaskInfoNew> page = new Page<KyTaskInfoNew>(pageNo, pageSize);
+		IPage<KyTaskInfoNew> pageList = kyTaskInfoNewService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param kyTaskInfoNew
+	 * @return
+	 */
+	@AutoLog(value = "ky_task_info_new-添加")
+	@ApiOperation(value="ky_task_info_new-添加", notes="ky_task_info_new-添加")
+	//@RequiresPermissions("org.jeecg.modules:ky_task_info_new:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody KyTaskInfoNew kyTaskInfoNew) {
+		kyTaskInfoNewService.save(kyTaskInfoNew);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param kyTaskInfoNew
+	 * @return
+	 */
+	@AutoLog(value = "ky_task_info_new-编辑")
+	@ApiOperation(value="ky_task_info_new-编辑", notes="ky_task_info_new-编辑")
+	//@RequiresPermissions("org.jeecg.modules:ky_task_info_new:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody KyTaskInfoNew kyTaskInfoNew) {
+		kyTaskInfoNewService.updateById(kyTaskInfoNew);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "ky_task_info_new-通过id删除")
+	@ApiOperation(value="ky_task_info_new-通过id删除", notes="ky_task_info_new-通过id删除")
+	//@RequiresPermissions("org.jeecg.modules:ky_task_info_new:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		kyTaskInfoNewService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "ky_task_info_new-批量删除")
+	@ApiOperation(value="ky_task_info_new-批量删除", notes="ky_task_info_new-批量删除")
+	//@RequiresPermissions("org.jeecg.modules:ky_task_info_new:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.kyTaskInfoNewService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "ky_task_info_new-通过id查询")
+	@ApiOperation(value="ky_task_info_new-通过id查询", notes="ky_task_info_new-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<KyTaskInfoNew> queryById(@RequestParam(name="id",required=true) String id) {
+		KyTaskInfoNew kyTaskInfoNew = kyTaskInfoNewService.getById(id);
+		if(kyTaskInfoNew==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(kyTaskInfoNew);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param kyTaskInfoNew
+    */
+    //@RequiresPermissions("org.jeecg.modules:ky_task_info_new:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, KyTaskInfoNew kyTaskInfoNew) {
+        return super.exportXls(request, kyTaskInfoNew, KyTaskInfoNew.class, "ky_task_info_new");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("ky_task_info_new:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, KyTaskInfoNew.class);
+    }
+
+}

+ 386 - 0
module_kzks/src/main/java/org/jeecg/modules/kyTaskInfoNew/entity/KyTaskInfoNew.java

@@ -0,0 +1,386 @@
+package org.jeecg.modules.kyTaskInfoNew.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.converters.date.DateStringConverter;
+import com.alibaba.excel.converters.integer.IntegerNumberConverter;
+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: ky_task_info_new
+ * @Author: jeecg-boot
+ * @Date:   2024-04-09
+ * @Version: V1.0
+ */
+@Data
+@TableName("ky_task_info_new")
+@Accessors(chain = false)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="ky_task_info_new对象", description="ky_task_info_new")
+public class KyTaskInfoNew implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**key*/
+	@TableId(type = IdType.AUTO)
+	@ExcelIgnore
+    @ApiModelProperty(value = "key")
+    private Integer key;
+	/**ID*/
+	@Excel(name = "ID", width = 15)
+    @ApiModelProperty(value = "ID")
+    private String taskid;
+	/**主任务号*/
+	@Excel(name = "主任务号", width = 15)
+    @ApiModelProperty(value = "主任务号")
+    private String ztaskno;
+	/**任务号*/
+	@Excel(name = "任务号", width = 15)
+    @ApiModelProperty(value = "任务号")
+    private String taskno;
+	/**产品规格*/
+	@Excel(name = "产品规格", width = 15)
+    @ApiModelProperty(value = "产品规格")
+    private String cpgg;
+	/**任务名称*/
+	@Excel(name = "任务名称", width = 15)
+    @ApiModelProperty(value = "任务名称")
+    private String taskname;
+	/**任务类型*/
+	@Excel(name = "任务类型", width = 15)
+    @ApiModelProperty(value = "任务类型")
+    private String tasktype;
+	/**任务细分*/
+	@Excel(name = "任务细分", width = 15)
+    @ApiModelProperty(value = "任务细分")
+    private String taskxf;
+	/**产品类别*/
+	@Excel(name = "产品类别", width = 15)
+    @ApiModelProperty(value = "产品类别")
+    private String cplb;
+	/**型号分类*/
+	@Excel(name = "型号分类", width = 15)
+    @ApiModelProperty(value = "型号分类")
+    private String xhfl;
+	/**分系统*/
+	@Excel(name = "分系统", width = 15)
+    @ApiModelProperty(value = "分系统")
+    private String fxt;
+	/**研制数量*/
+	@ExcelProperty(value = "数量", converter = IntegerNumberConverter.class)
+    @ApiModelProperty(value = "研制数量")
+    private Integer yzsl;
+	/**研制阶段*/
+	@Excel(name = "研制阶段", width = 15)
+    @ApiModelProperty(value = "研制阶段")
+    private String yzjdname;
+	/**责任部门*/
+	@Excel(name = "责任部门", width = 15)
+    @ApiModelProperty(value = "责任部门")
+    private String zrbm;
+	/**任务下达时间*/
+	//@Excel(name = "任务下达时间", width = 15, format = "yyyy-MM-dd")
+	@ExcelProperty(value = "任务下达时间", converter = DateStringConverter.class)
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "任务下达时间")
+    private Date lrsj;
+	/**进度要求*/
+	@Excel(name = "进度要求", width = 15)
+    @ApiModelProperty(value = "进度要求")
+    private String jdyq;
+	/**提出单位*/
+	@Excel(name = "提出单位", width = 15)
+    @ApiModelProperty(value = "提出单位")
+    private String tcdw;
+	/**提出单位简称*/
+	@Excel(name = "提出单位简称", width = 15)
+    @ApiModelProperty(value = "提出单位简称")
+    private String tcdwjc;
+	/**科研任务负责人*/
+	@Excel(name = "科研任务负责人", width = 15)
+    @ApiModelProperty(value = "科研任务负责人")
+    private String xhzzrname;
+	/**产能调度*/
+	@Excel(name = "产能调度", width = 15)
+    @ApiModelProperty(value = "产能调度")
+    private String cndd;
+	/**产保助理*/
+	@Excel(name = "产保助理", width = 15)
+    @ApiModelProperty(value = "产保助理")
+    private String cbzl;
+	/**物资计划*/
+	@Excel(name = "物资计划", width = 15)
+    @ApiModelProperty(value = "物资计划")
+    private String wzjh;
+	/**物资按此任务号的元器件出库单采购*/
+	@Excel(name = "物资按此任务号的元器件出库单采购", width = 15)
+    @ApiModelProperty(value = "物资按此任务号的元器件出库单采购")
+    private String wzyqjckdcg;
+	/**主管设计师*/
+	@Excel(name = "主管设计师", width = 15)
+    @ApiModelProperty(value = "主管设计师")
+    private String ywfzrname;
+	/**发票类型*/
+	@Excel(name = "发票类型", width = 15)
+    @ApiModelProperty(value = "发票类型")
+    private String fplx;
+	/**是否决算*/
+	@Excel(name = "是否决算", width = 15)
+    @ApiModelProperty(value = "是否决算")
+    private String sfjs;
+	/**是否报销*/
+	@Excel(name = "是否报销", width = 15)
+    @ApiModelProperty(value = "是否报销")
+    private String sfbx;
+	/**报销任务号*/
+	@Excel(name = "报销任务号", width = 15)
+    @ApiModelProperty(value = "报销任务号")
+    private String bxtaskno;
+	/**合同状态*/
+	@Excel(name = "合同状态", width = 15)
+    @ApiModelProperty(value = "合同状态")
+    private String htzt;
+	/**成本预分(万)*/
+	@Excel(name = "成本预分(万)", width = 15)
+    @ApiModelProperty(value = "成本预分(万)")
+    private String cbyf;
+	/**成本归集(万)+工时统计*/
+	@Excel(name = "成本归集(万)+工时统计", width = 15)
+    @ApiModelProperty(value = "成本归集(万)+工时统计")
+    private String cbgjgstj;
+	/**业务员*/
+	@Excel(name = "业务员", width = 15)
+    @ApiModelProperty(value = "业务员")
+    private String businessmanname;
+	/**审计审价*/
+	@Excel(name = "审计审价", width = 15)
+    @ApiModelProperty(value = "审计审价")
+    private String auditprice;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private String bz;
+	/**状态*/
+	@Excel(name = "状态", width = 15)
+    @ApiModelProperty(value = "状态")
+    private String status;
+	/**任务分类*/
+	@Excel(name = "任务分类", width = 15)
+    @ApiModelProperty(value = "任务分类")
+    private String taskfl;
+	/**当前进行的任务*/
+	@Excel(name = "当前进行的任务", width = 15)
+    @ApiModelProperty(value = "当前进行的任务")
+    private String dqjxtaskno;
+	/**密级*/
+	@Excel(name = "密级", width = 15)
+    @ApiModelProperty(value = "密级")
+    private String mj;
+	/**完成形式*/
+	@Excel(name = "完成形式", width = 15)
+    @ApiModelProperty(value = "完成形式")
+    private String wcxs;
+	/**业务板块*/
+	@Excel(name = "业务板块", width = 15)
+    @ApiModelProperty(value = "业务板块")
+    private String ywbk;
+	/**下达部门*/
+	@Excel(name = "下达部门", width = 15)
+    @ApiModelProperty(value = "下达部门")
+    private String jycs;
+	/**经费来源*/
+	@Excel(name = "经费来源", width = 15)
+    @ApiModelProperty(value = "经费来源")
+    private String jfly;
+	/**任务领域*/
+	@Excel(name = "任务领域", width = 15)
+    @ApiModelProperty(value = "任务领域")
+    private String rwly;
+	/**是否参与联试*/
+	@Excel(name = "是否参与联试", width = 15)
+    @ApiModelProperty(value = "是否参与联试")
+    private String ifcyls;
+	/**联试抓总部门*/
+	@Excel(name = "联试抓总部门", width = 15)
+    @ApiModelProperty(value = "联试抓总部门")
+    private String lszzbm;
+	/**横向纵向*/
+	@Excel(name = "横向纵向", width = 15)
+    @ApiModelProperty(value = "横向纵向")
+    private String hxzxname;
+	/**军检*/
+	@Excel(name = "军检", width = 15)
+    @ApiModelProperty(value = "军检")
+    private String jjname;
+	/**出所编号*/
+	@Excel(name = "出所编号", width = 15)
+    @ApiModelProperty(value = "出所编号")
+    private String csbh;
+	/**核算项目编号*/
+	@Excel(name = "核算项目编号", width = 15)
+    @ApiModelProperty(value = "核算项目编号")
+    private String hsxmbh;
+	/**收款项目编号*/
+	@Excel(name = "收款项目编号", width = 15)
+    @ApiModelProperty(value = "收款项目编号")
+    private String skxmbh;
+	/**确认完成时间*/
+	//@Excel(name = "确认完成时间", width = 15, format = "yyyy-MM-dd")
+	@ExcelProperty(value = "确认完成时间", converter = DateStringConverter.class)
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "确认完成时间")
+    private Date sjwcsj;
+	/**完成说明*/
+	@Excel(name = "完成说明", width = 15)
+    @ApiModelProperty(value = "完成说明")
+    private String wcsm;
+	/**项目进度*/
+	@Excel(name = "项目进度", width = 15)
+    @ApiModelProperty(value = "项目进度")
+    private String processpercent;
+	/**进度节点*/
+	@Excel(name = "进度节点", width = 15)
+    @ApiModelProperty(value = "进度节点")
+    private String jdjd;
+	/**是否含例试件*/
+	@Excel(name = "是否含例试件", width = 15)
+    @ApiModelProperty(value = "是否含例试件")
+    private String ishlsj;
+	/**是否外贸项目*/
+	@Excel(name = "是否外贸项目", width = 15)
+    @ApiModelProperty(value = "是否外贸项目")
+    private String iswmxm;
+	/**有无软件*/
+	@Excel(name = "有无软件", width = 15)
+    @ApiModelProperty(value = "有无软件")
+    private String ishavesoftware;
+	/**软件类型*/
+	@Excel(name = "软件类型", width = 15)
+    @ApiModelProperty(value = "软件类型")
+    private String softwaretype;
+	/**需要第三方评测*/
+	@Excel(name = "需要第三方评测", width = 15)
+    @ApiModelProperty(value = "需要第三方评测")
+    private String xydsfcp;
+	/**评测方*/
+	@Excel(name = "评测方", width = 15)
+    @ApiModelProperty(value = "评测方")
+    private String reviewer;
+	/**合同签署*/
+	@Excel(name = "合同签署", width = 15)
+    @ApiModelProperty(value = "合同签署")
+    private String htqs;
+	/**付费*/
+	@Excel(name = "付费", width = 15)
+    @ApiModelProperty(value = "付费")
+    private String ff;
+	/**管控等级*/
+	@Excel(name = "管控等级", width = 15)
+    @ApiModelProperty(value = "管控等级")
+    private String gkdj;
+	/**需要质保*/
+	@Excel(name = "需要质保", width = 15)
+    @ApiModelProperty(value = "需要质保")
+    private String warranty;
+	/**质保依据*/
+	@Excel(name = "质保依据", width = 15)
+    @ApiModelProperty(value = "质保依据")
+    private String zbyj;
+	/**质保单位*/
+	@Excel(name = "质保单位", width = 15)
+    @ApiModelProperty(value = "质保单位")
+    private String warrantyunit;
+	/**应用部位*/
+	@Excel(name = "应用部位", width = 15)
+    @ApiModelProperty(value = "应用部位")
+    private String application;
+	/**成本限价*/
+	@Excel(name = "成本限价", width = 15)
+    @ApiModelProperty(value = "成本限价")
+    private String cbxj;
+	/**是否为已转入工程中心任务*/
+	@Excel(name = "是否为已转入工程中心任务", width = 15)
+    @ApiModelProperty(value = "是否为已转入工程中心任务")
+    private String iszrgczxrw;
+	/**基线编号*/
+	@Excel(name = "基线编号", width = 15)
+    @ApiModelProperty(value = "基线编号")
+    private String jxbh;
+	/**继承哪个任务有哪些更改*/
+	@Excel(name = "继承哪个任务有哪些更改", width = 15)
+    @ApiModelProperty(value = "继承哪个任务有哪些更改")
+    private String jcrwgg;
+	/**任务来源*/
+	@Excel(name = "任务来源", width = 15)
+    @ApiModelProperty(value = "任务来源")
+    private String tasknoly;
+	/**批产任务号*/
+	@Excel(name = "批产任务号", width = 15)
+    @ApiModelProperty(value = "批产任务号")
+    private String pccode;
+	/**备产任务号*/
+	@Excel(name = "备产任务号", width = 15)
+    @ApiModelProperty(value = "备产任务号")
+    private String bccode;
+	/**备料任务号*/
+	@Excel(name = "备料任务号", width = 15)
+    @ApiModelProperty(value = "备料任务号")
+    private String blcode;
+	/**软件开发状态*/
+	@Excel(name = "软件开发状态", width = 15)
+    @ApiModelProperty(value = "软件开发状态")
+    private String rjkfstatus;
+	/**提交完成审核时间*/
+	//@Excel(name = "提交完成审核时间", width = 15, format = "yyyy-MM-dd")
+	@ExcelProperty(value = "提交完成审核时间", converter = DateStringConverter.class)
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "提交完成审核时间")
+    private Date processdate;
+	/**考核扣款*/
+	@Excel(name = "考核扣款", width = 15)
+    @ApiModelProperty(value = "考核扣款")
+    private String khkk;
+	/**任务下达步骤填写的预估价*/
+	@Excel(name = "任务下达步骤填写的预估价", width = 15)
+    @ApiModelProperty(value = "任务下达步骤填写的预估价")
+    private String estimationcoat;
+	/**成本详情*/
+	@Excel(name = "成本详情", width = 15)
+    @ApiModelProperty(value = "成本详情")
+    private String cbxq;
+	/**父级任务号*/
+	@Excel(name = "父级任务号", width = 15)
+    @ApiModelProperty(value = "父级任务号")
+    private String reftaskno;
+	/**年*/
+	@Excel(name = "年", width = 15)
+    @ApiModelProperty(value = "年")
+    private Integer year;
+	/**月*/
+	@Excel(name = "月", width = 15)
+    @ApiModelProperty(value = "月")
+    private Integer month;
+	/**年月*/
+	@Excel(name = "年月", width = 15)
+    @ApiModelProperty(value = "年月")
+    private String yearmonth;
+}

+ 121 - 0
module_kzks/src/main/java/org/jeecg/modules/kyTaskInfoNew/listener/KyTaskInfoNewListener.java

@@ -0,0 +1,121 @@
+package org.jeecg.modules.kyTaskInfoNew.listener;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.modules.kyTaskInfoNew.entity.KyTaskInfoNew;
+import org.jeecg.modules.kyTaskInfoNew.service.IKyTaskInfoNewService;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author dzc
+ * @date 2024/4/8 9:13
+ * @package org.jeecg.modules.kyTaskInfoNew.listener
+ * @project yecai_server
+ * @des
+ */
+@Slf4j
+public class KyTaskInfoNewListener extends AnalysisEventListener<KyTaskInfoNew> {
+
+    private static final List<KyTaskInfoNew> kyList = new CopyOnWriteArrayList<>(); // 存放科研数据的集合
+
+    private final IKyTaskInfoNewService kyTaskInfoNewService;
+
+    private static final int BIG_SIZE = 3000;  // 批量添加最大数量
+
+    public KyTaskInfoNewListener(IKyTaskInfoNewService kyTaskInfoNewService) {
+        this.kyTaskInfoNewService = kyTaskInfoNewService;
+    }
+
+    @Override
+    public void invoke(KyTaskInfoNew kyTaskInfoNew, AnalysisContext analysisContext) {
+        kyList.add(kyTaskInfoNew);
+        if (kyList.size() > BIG_SIZE){
+            batchSaveKyInfo(kyList);
+        }
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+        batchSaveKyInfo(kyList);
+    }
+
+
+
+    private void batchSaveKyInfo(List<KyTaskInfoNew> kyList) {
+        ExecutorService threadPoolExecutors = Executors.newFixedThreadPool(8);
+        try {
+            log.info("{}条数据,开始存储数据库!", kyList.size());
+            int sonListSize = kyList.size() / 8;  // 计算将kyList分成8份之后每个子集合的大小
+
+            List<List<KyTaskInfoNew>> sonList = new ArrayList<>(); // 用于存放 子集合 的list
+            for (int i = 0; i < 8; i++) {
+                int startIndex = i * sonListSize;
+                int endIndex = (i + 1) * sonListSize;
+                if (i == 7){  // 避免遗漏数据,最后一个集合取全部数据
+                    endIndex = kyList.size();
+                }
+                // 根据起始索引、终止索引进行截取
+                List<KyTaskInfoNew> list = kyList.subList(startIndex, endIndex);
+                sonList.add(list);
+            }
+            // 八个线程同步保存数据
+            if (!sonList.isEmpty()){
+                if (!sonList.get(0).isEmpty()){
+                    threadPoolExecutors.submit(() -> {
+                        kyTaskInfoNewService.saveBatch(sonList.get(0));
+                    });
+                }
+                if (!sonList.get(1).isEmpty()){
+                    threadPoolExecutors.submit(() -> {
+                        kyTaskInfoNewService.saveBatch(sonList.get(1));
+                    });
+                }
+                if (!sonList.get(2).isEmpty()){
+                    threadPoolExecutors.submit(() -> {
+                        kyTaskInfoNewService.saveBatch(sonList.get(2));
+                    });
+                }
+                if (!sonList.get(3).isEmpty()){
+                    threadPoolExecutors.submit(() -> {
+                        kyTaskInfoNewService.saveBatch(sonList.get(3));
+                    });
+                }
+                if (!sonList.get(4).isEmpty()){
+                    threadPoolExecutors.submit(() -> {
+                        kyTaskInfoNewService.saveBatch(sonList.get(4));
+                    });
+                }
+                if (!sonList.get(5).isEmpty()){
+                    threadPoolExecutors.submit(() -> {
+                        kyTaskInfoNewService.saveBatch(sonList.get(5));
+                    });
+                }
+                if (!sonList.get(6).isEmpty()){
+                    threadPoolExecutors.submit(() -> {
+                        kyTaskInfoNewService.saveBatch(sonList.get(6));
+                    });
+                }
+                if (!sonList.get(7).isEmpty()){
+                    threadPoolExecutors.submit(() -> {
+                        kyTaskInfoNewService.saveBatch(sonList.get(7));
+                    });
+                }
+            }
+            threadPoolExecutors.shutdown();
+            boolean b = threadPoolExecutors.awaitTermination(5, TimeUnit.HOURS);
+            log.info("数据成功入库");
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        } finally {
+            threadPoolExecutors.shutdown();
+            kyList.clear();
+        }
+    }
+}

+ 22 - 0
module_kzks/src/main/java/org/jeecg/modules/kyTaskInfoNew/mapper/KyTaskInfoNewMapper.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.kyTaskInfoNew.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+import org.jeecg.modules.kyTaskInfoNew.entity.KyTaskInfoNew;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: ky_task_info_new
+ * @Author: jeecg-boot
+ * @Date:   2024-04-09
+ * @Version: V1.0
+ */
+public interface KyTaskInfoNewMapper extends BaseMapper<KyTaskInfoNew> {
+
+    /** 清空表中数据 */
+    @Update("truncate table ky_task_info_new")
+    void truncateTable();
+
+}

+ 5 - 0
module_kzks/src/main/java/org/jeecg/modules/kyTaskInfoNew/mapper/xml/KyTaskInfoNewMapper.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.kyTaskInfoNew.mapper.KyTaskInfoNewMapper">
+
+</mapper>

+ 15 - 0
module_kzks/src/main/java/org/jeecg/modules/kyTaskInfoNew/service/IKyTaskInfoNewService.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.kyTaskInfoNew.service;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.kyTaskInfoNew.entity.KyTaskInfoNew;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: ky_task_info_new
+ * @Author: jeecg-boot
+ * @Date:   2024-04-09
+ * @Version: V1.0
+ */
+public interface IKyTaskInfoNewService extends IService<KyTaskInfoNew> {
+    Result<?> importExcel1(String strUrl, Class<KyTaskInfoNew> clazz);
+}

+ 47 - 0
module_kzks/src/main/java/org/jeecg/modules/kyTaskInfoNew/service/impl/KyTaskInfoNewServiceImpl.java

@@ -0,0 +1,47 @@
+package org.jeecg.modules.kyTaskInfoNew.service.impl;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelReader;
+import com.alibaba.excel.read.metadata.ReadSheet;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.kyTaskInfoNew.entity.KyTaskInfoNew;
+import org.jeecg.modules.kyTaskInfoNew.listener.KyTaskInfoNewListener;
+import org.jeecg.modules.kyTaskInfoNew.mapper.KyTaskInfoNewMapper;
+import org.jeecg.modules.kyTaskInfoNew.service.IKyTaskInfoNewService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.io.File;
+
+/**
+ * @Description: ky_task_info_new
+ * @Author: jeecg-boot
+ * @Date:   2024-04-09
+ * @Version: V1.0
+ */
+@Service
+@Slf4j
+public class KyTaskInfoNewServiceImpl extends ServiceImpl<KyTaskInfoNewMapper, KyTaskInfoNew> implements IKyTaskInfoNewService {
+    @Autowired
+    @SuppressWarnings("all")
+    private KyTaskInfoNewMapper kyTaskInfoNewMapper;
+
+    @Override
+    public Result<?> importExcel1(String strUrl, Class<KyTaskInfoNew> clazz) {
+        // 清空表中的数据
+        kyTaskInfoNewMapper.truncateTable();
+        long startTime = System.currentTimeMillis();
+        ExcelReader excelReader = EasyExcel.read(new File(strUrl), clazz, new KyTaskInfoNewListener(this)).build();
+        ReadSheet readSheet = EasyExcel.readSheet(0).build();
+        excelReader.read(readSheet);
+        //这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的
+        excelReader.finish();
+        long endTime = System.currentTimeMillis();
+        log.info("导入科研任务数据花费时间:{}毫秒 | {}分钟", (endTime - startTime), ((endTime - startTime) / 1000 / 60));
+
+        return Result.ok();
+    }
+}

+ 8 - 1
module_kzks/src/main/java/org/jeecg/modules/projectImportList/controller/ProjectImportListController.java

@@ -15,9 +15,10 @@ 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.kyTaskInfoNew.entity.KyTaskInfoNew;
+import org.jeecg.modules.kyTaskInfoNew.service.IKyTaskInfoNewService;
 import org.jeecg.modules.kyTaskTemp.entity.KyTaskTemp;
 import org.jeecg.modules.kyTaskTemp.service.IKyTaskTempService;
-import org.jeecg.modules.projectBudget.entity.ProjectBudget;
 import org.jeecg.modules.projectBudget.service.IProjectBudgetService;
 import org.jeecg.modules.projectBudgetNew.entity.ProjectBudgetNew;
 import org.jeecg.modules.projectBudgetNew.service.IProjectBudgetNewService;
@@ -79,6 +80,10 @@ public class ProjectImportListController extends JeecgController<ProjectImportLi
     @SuppressWarnings("all")
     private IWzOutboundOrderBNewService wzOutboundOrderBNewService;
 
+    @Autowired
+    @SuppressWarnings("all")
+    private IKyTaskInfoNewService kyTaskInfoNewService;
+
 
     /**
      * 通过excel导入其他表的数据
@@ -121,6 +126,8 @@ public class ProjectImportListController extends JeecgController<ProjectImportLi
         } else if (projectImportList.getFileType().equals("10")){//物资导入
             //return wzOutboundOrderBNewService.importExcel1(url, WzOutboundOrderBNew.class);
             return wzOutboundOrderBNewService.importExcelNew(url, WzOutboundOrderBNew.class);
+        } else if (projectImportList.getFileType().equals("15")){
+            return kyTaskInfoNewService.importExcel1(url, KyTaskInfoNew.class);
         } else {
             result.setCode(500);
             result.setMessage("请选择正确的导入类型!");

+ 2 - 0
module_kzks/src/main/java/org/jeecg/modules/wzOutboundOrderBNew/service/impl/WzOutboundOrderBNewServiceImpl.java

@@ -55,6 +55,8 @@ public class WzOutboundOrderBNewServiceImpl extends ServiceImpl<WzOutboundOrderB
 
     @Override
     public Result<?> importExcel1(String strUrl, Class<WzOutboundOrderBNew> clazz) throws InterruptedException, ExecutionException, IOException{
+        int year = DateUtils.getYear();
+        orderBNewMapper.deleteByDate(year);
         long startTime = System.currentTimeMillis();
         ExcelReader excelReader = EasyExcel.read(new File(strUrl), clazz, new WzOutboundOrderBNewListenerS(this)).build();
         ReadSheet readSheet = EasyExcel.readSheet(0).build();