zss
2023-11-01 46ec981f78ee7879a6fe5a48466de1c5d5b7d74a
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,18 +25,28 @@
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;
import com.chinaztt.ztt.admin.api.feign.RemoteDictService;
import com.chinaztt.ztt.common.core.util.R;
import com.chinaztt.ztt.common.log.annotation.SysLog;
import com.chinaztt.ztt.common.security.annotation.Inner;
import com.chinaztt.ztt.common.security.util.SecurityUtils;
import com.xxl.job.core.handler.annotation.XxlJob;
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;
@@ -60,6 +71,27 @@
   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")
   public R triggerAdd(@RequestBody PartVo partVo) {
      return R.ok(partService.triggerAdd(partVo));
   }
   /**
    * 分页查询
    *
@@ -72,6 +104,9 @@
   @GetMapping("/page")
   @PreAuthorize("@pms.hasPermission('basic_part_view')")
   public R getPartPage(Page page, Part part, Long bomId) {
      //System.out.println(bomId);
      //System.out.println(part);
      System.out.println(JsonUtil.jsonToString(page));
      return R.ok(partService.getPartPage(page, QueryWrapperUtil.gen(part), bomId));
   }
   /**
@@ -88,6 +123,25 @@
      }
      partService.syncPart();
      return R.ok();
   }
   //@InitBinder
   //protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
   //   //System.out.println(request.getParameter("date"));
   //   DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
   //   CustomDateEditor editor = new CustomDateEditor(df, true);//true表示允许为空,false反之
   //   binder.registerCustomEditor(Date.class, editor);
   //}
   @ApiOperation(value = "同步Ifs", notes = "同步Ifs")
   @PostMapping("/syncNewIfs")
   //@XxlJob("syncPart")
   public R syncNewIfs(String date) {
      String key = "syncPart_lock"+ SecurityUtils.getUser().getId();
      if (redisTemplate.hasKey(key)) {
         throw new RuntimeException("有同步任务正在处理");
      }
      return R.ok(partService.syncNewIfs(date));
   }
   /**
    * 分页查询已关联检测模板的零件
@@ -106,7 +160,7 @@
   /**
    * 根据零件号和零件描述查询库存信息接口
    *
    * @param part 零件
    * @param  零件
    * @return
    */
   @ApiOperation(value = "根据零件号和零件描述查询库存信息接口", notes = "根据零件号和零件描述查询库存信息接口")
@@ -281,4 +335,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;
   }
}