Fixiaobai
2023-11-13 8e17ffd131c99250f648c73c6c839c5088717951
mes-basic/src/main/java/com/chinaztt/mes/basic/controller/PartController.java
@@ -17,6 +17,7 @@
package com.chinaztt.mes.basic.controller;
import cn.hutool.core.text.csv.CsvReadConfig;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -24,7 +25,11 @@
import com.chinaztt.mes.basic.entity.Part;
import com.chinaztt.mes.basic.excel.PartData;
import com.chinaztt.mes.basic.excel.PartUploadListener;
import com.chinaztt.mes.basic.mapper.PartMapper;
import com.chinaztt.mes.basic.service.PartService;
import com.chinaztt.mes.basic.util.DictUtils;
import com.chinaztt.mes.basic.util.PartUtils;
import com.chinaztt.mes.basic.vo.PartVo;
import com.chinaztt.mes.common.util.JsonUtil;
import com.chinaztt.mes.common.wrapper.QueryWrapperUtil;
import com.chinaztt.ztt.admin.api.entity.SysDictItem;
@@ -37,7 +42,11 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -61,6 +70,28 @@
   private final PartService partService;
   private final RemoteDictService remoteDictService;
   private final RedisTemplate redisTemplate;;
   private DictUtils dictUtils;
   private PartUtils partUtils;
   private PartMapper partMapper;
   private final static Logger logger = LoggerFactory.getLogger(PartController.class);
   @Autowired
   private ThreadPoolTaskExecutor threadPoolTaskExecutor;
   @ApiOperation(value = "触发零件", notes = "触发零件")
   @SysLog("触发零件")
   @PostMapping("/triggerAdd")
   @Inner(value = false)
   public R triggerAdd(@RequestBody PartVo partVo) {
      return R.ok(partService.triggerAdd(partVo));
   }
   /**
    * 分页查询
@@ -305,4 +336,40 @@
   public R getRoutingPartPage(Page page, Part part, Long bomId) {
      return R.ok(partService.getRoutingPartPage(page, QueryWrapperUtil.gen(part), bomId));
   }
   @PostMapping("/uploadExcel")
   public R uploadExcel(MultipartFile file) {
      String key = "syncPart_lock" + SecurityUtils.getUser().getId();
      if (redisTemplate.hasKey(key)) {
         throw new RuntimeException("有导入任务正在处理");
      }
      partService.asyncUploadExcel(file);
      return R.ok();
   }
   /**
    * 设置Csv读文件配置
    * @return CsvWriteConfig
    */
   public static CsvReadConfig setCsvReadConfig(){
      CsvReadConfig csvReadConfig = new CsvReadConfig();
      // 设置 文本分隔符,文本包装符,默认双引号'"'
      //csvReadConfig.setTextDelimiter('\t');
      // 字段分割符号,默认为逗号
      csvReadConfig.setFieldSeparator('|');
      // 设置注释符号
      // csvReadConfig.setCommentCharacter('#');
      // CSV文件是否包含表头(因为表头不是数据内容)
      csvReadConfig.setContainsHeader(true);
      // 或者使用如下配置设置表头开始行号,-1L代表无表头
      // csvReadConfig.setHeaderLineNo(1L);
      //设置开始的行(包括),默认0,此处为原始文件行号
      // csvReadConfig.setBeginLineNo(0);
      // 是否跳过空白行,默认为true
      // csvReadConfig.setSkipEmptyRows(true);
      // 设置每行字段个数不同时是否抛出异常,默认false
      // csvReadConfig.setErrorOnDifferentFieldCount(false);
      return csvReadConfig;
   }
}