From eb91d54dc917ecf30ef4f3f4b9676824a4891fb7 Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期二, 31 十月 2023 18:07:18 +0800
Subject: [PATCH] Changes
---
mes-basic/src/main/java/com/chinaztt/mes/basic/service/FactoryService.java | 2
mes-basic/src/main/java/com/chinaztt/mes/basic/controller/FactoryController.java | 9
mes-basic/src/main/java/com/chinaztt/mes/basic/service/PartService.java | 3
mes-basic/src/main/java/com/chinaztt/mes/basic/controller/DivisionController.java | 1
mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Part.java | 114 ++++++++--
mes-web/src/main/resources/bootstrap.yml | 4
mes-common/src/main/java/com/chinaztt/mes/common/util/Threads.java | 96 ++++++++
mes-common/src/main/java/com/chinaztt/mes/common/util/MultipartFileToFile.java | 65 +++++
mes-basic/src/main/java/com/chinaztt/mes/basic/controller/PartController.java | 54 ++++
mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Division.java | 8
mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/FactoryServiceImpl.java | 10
mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java | 140 ++++++++++++
mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Post.java | 16 +
mes-common/src/main/java/com/chinaztt/mes/common/config/FeignInterceptor.java | 27 ++
mes-common/src/main/java/com/chinaztt/mes/common/util/ThreadPoolConfig.java | 62 +++++
15 files changed, 580 insertions(+), 31 deletions(-)
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/controller/DivisionController.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/controller/DivisionController.java
index ce99c57..c545860 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/controller/DivisionController.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/controller/DivisionController.java
@@ -94,6 +94,7 @@
@PostMapping
@PreAuthorize("@pms.hasPermission('basic_division_add')")
public R save(@RequestBody Division division) {
+ System.out.println(division);
return R.ok(divisionService.save(division));
}
/**
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/controller/FactoryController.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/controller/FactoryController.java
index f3144d2..d863e4f 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/controller/FactoryController.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/controller/FactoryController.java
@@ -64,6 +64,15 @@
return R.ok(factoryService.getFactoryPage(page, QueryWrapperUtil.gen(factory)));
}
+ /**
+ * 鏍规嵁鍏徃鏌ヨ宸ュ巶
+ * @param id
+ * @return
+ */
+ @GetMapping("/byCompanyId")
+ public R getFactoryByCompany(@RequestParam("id") Long id){
+ return R.ok(factoryService.getByCompanyId(id));
+ }
/**
* 閫氳繃id鏌ヨ宸ュ巶
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/controller/PartController.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/controller/PartController.java
index 603c3c3..7060d09 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/controller/PartController.java
+++ b/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,10 @@
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.common.util.JsonUtil;
import com.chinaztt.mes.common.wrapper.QueryWrapperUtil;
import com.chinaztt.ztt.admin.api.entity.SysDictItem;
@@ -37,7 +41,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;
@@ -62,6 +70,16 @@
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;
/**
* 鍒嗛〉鏌ヨ
*
@@ -305,4 +323,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浠h〃鏃犺〃澶�
+ // csvReadConfig.setHeaderLineNo(1L);
+ //璁剧疆寮�濮嬬殑琛岋紙鍖呮嫭锛夛紝榛樿0锛屾澶勪负鍘熷鏂囦欢琛屽彿
+ // csvReadConfig.setBeginLineNo(0);
+ // 鏄惁璺宠繃绌虹櫧琛岋紝榛樿涓簍rue
+ // csvReadConfig.setSkipEmptyRows(true);
+ // 璁剧疆姣忚瀛楁涓暟涓嶅悓鏃舵槸鍚︽姏鍑哄紓甯革紝榛樿false
+ // csvReadConfig.setErrorOnDifferentFieldCount(false);
+ return csvReadConfig;
+ }
+
}
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Division.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Division.java
index d54eab6..827f2cf 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Division.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Division.java
@@ -107,5 +107,11 @@
@TableField(exist = false)
private String companyName;
-
+ @TableField(exist = false)
+ private String factoryId;
+ /**
+ * 宸ュ巶鍚�
+ */
+ @TableField(exist = false)
+ private String factoryName;
}
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Part.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Part.java
index e0d9546..c80ad72 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Part.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Part.java
@@ -17,6 +17,7 @@
package com.chinaztt.mes.basic.entity;
+import cn.hutool.core.annotation.Alias;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
@@ -84,37 +85,49 @@
@Unique
@ApiModelProperty(value = "闆朵欢鍙�")
@NonNull
+ @Alias("闆朵欢鍙�")
private String partNo;
+
/**
* 鍚嶇О
*/
- @ApiModelProperty(value = "鍚嶇О")
+ @Alias("姝e湪浣跨敤涓殑闆朵欢鎻忚堪")
private String partName;
- /**
- * 鍚嶇О
- */
- @ApiModelProperty(value = "妫�娴嬭鍒檌d")
- private Long testRuleId;
- /**
- * 闆朵欢绫诲瀷
- */
- @ApiModelProperty(value = "闆朵欢绫诲瀷")
- private String materialType;
- /**
- * 鍗曚綅
- */
- @ApiModelProperty(value = "鍗曚綅")
- private String unit;
- /**
- * 鍗曚綅2
- */
- @ApiModelProperty(value = "鍗曚綅2")
- private String sunit;
+
/**
* 鎻忚堪
*/
- @ApiModelProperty(value = "鎻忚堪")
+ @Alias("闆朵欢鎻忚堪")
private String description;
+
+ /**
+ * 闆朵欢绫诲瀷
+ */
+ @Alias("闆朵欢绫诲瀷")
+ private String materialType;
+ /**
+ * 妫�娴嬭鍒檌d
+ */
+ @ApiModelProperty(value = "妫�娴嬭鍒檌d")
+ private Long testRuleId;
+
+ /**
+ * 鍗曚綅
+ */
+ @Alias("搴撳瓨璁¢噺鍗曚綅")
+ private String unit;
+
+
+ /**
+ * 鍗曚綅2
+ */
+ @Alias("閲嶉噺璁¢噺鍗曚綅")
+ private String sunit;
+
+
+ @Alias("鐜版湁鏁伴噺")
+ private String totalNum;
+
/**
* 鍘熷厛鐨勫搧绫� 鐜板湪鏀逛负 涓�绾у垎绫�
*/
@@ -192,6 +205,7 @@
* P锛氳櫄鎷熼浂浠惰鍒掋�傛棤闇�闄勫姞瀛楁
*/
@ApiModelProperty(value = "璁″垝鏂规硶")
+ @Alias("闆朵欢鐘舵��")
private String planningMethod;
/**
* 鐗规��1
@@ -240,4 +254,60 @@
@ApiModelProperty(value = "鏄惁鍘熸潗鏂欐")
private Integer testRuleType;
+
+ @Alias("鏄惁璁惧澶囦欢")
+ private String isEquipment;
+
+ @Alias("璧勪骇绛夌骇")
+ private String assets;
+
+ @Alias("璧勪骇绫诲埆")
+ private String assetsType;
+
+ @Alias("鐗╄祫鐘舵��")
+ private String suppliesType;
+
+ @Alias("ABC 绫�")
+ private String abcType;
+
+ @Alias("棰戠巼绾у埆")
+ private String hz;
+
+ @Alias("澹版槑鍛ㄦ湡")
+ private String cycle;
+
+ @Alias("浣撶Н璁¢噺鍗曚綅")
+ private String volume;
+
+ @Alias("鐜版湁鑾峰彇鏁伴噺")
+ private String getNum;
+
+ @Alias("榛樿鐨勭墿鏂欑敵璇蜂緵搴�")
+ private String defaultMr;
+
+ @Alias("DOP 杩炴帴")
+ private String dopR;
+
+ @Alias("鍑�棰濅氦鏄�")
+ private String netto;
+
+ @Alias("鏁伴噺璁$畻鍙栨暣")
+ private String numCount;
+
+ @Alias("搴撳瓨浼颁环鏂规硶")
+ private String ivm;
+
+ @Alias("搴撳瓨浠舵垚鏈眰")
+ private String icl;
+
+ @Alias("渚涘簲鍟嗗彂绁ㄤ簨椤�")
+ private String sii;
+
+ @Alias("闆舵垚鏈�")
+ private String zc;
+
+ @Alias("澶栭儴鏈嶅姟鎴愭湰鐨勬柟娉�")
+ private String esca;
+
+
}
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Post.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Post.java
index b48b236..78c5fe8 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Post.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Post.java
@@ -44,4 +44,20 @@
*/
@ApiModelProperty(value = "澶囨敞")
private String remark;
+
+ /**
+ * 鍏徃
+ */
+ private Long company;
+
+ /**
+ * 宸ュ巶
+ */
+ private Long factory;
+
+
+ /**
+ * 閮ㄩ棬
+ */
+ private Long division;
}
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/service/FactoryService.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/service/FactoryService.java
index d7725bb..003f5af 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/service/FactoryService.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/service/FactoryService.java
@@ -22,7 +22,6 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chinaztt.mes.basic.entity.Factory;
-import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -44,4 +43,5 @@
*/
IPage<List<Factory>> getFactoryPage(Page page, QueryWrapper<Factory> ew);
+ List<Factory> getByCompanyId(Long id);
}
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/service/PartService.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/service/PartService.java
index 106baa5..83eb458 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/service/PartService.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/service/PartService.java
@@ -25,6 +25,7 @@
import com.chinaztt.mes.basic.entity.Part;
import com.chinaztt.mes.basic.excel.PartData;
import com.chinaztt.ztt.common.core.util.R;
+import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@@ -131,4 +132,6 @@
void syncPart();
Long syncNewIfs(String date);
+
+ void asyncUploadExcel(MultipartFile file);
}
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/FactoryServiceImpl.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/FactoryServiceImpl.java
index e6d46e9..9dc35f8 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/FactoryServiceImpl.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/FactoryServiceImpl.java
@@ -23,9 +23,7 @@
import com.chinaztt.mes.basic.entity.Factory;
import com.chinaztt.mes.basic.mapper.FactoryMapper;
import com.chinaztt.mes.basic.service.FactoryService;
-import com.chinaztt.ztt.common.data.datascope.DataScope;
import lombok.AllArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -54,4 +52,12 @@
public IPage<List<Factory>> getFactoryPage(Page page, QueryWrapper<Factory> ew) {
return baseMapper.getFactoryPage(page,ew);
}
+
+ @Override
+ public List<Factory> getByCompanyId(Long id) {
+ System.out.println(id);
+ QueryWrapper<Factory> wrapper = new QueryWrapper<>();
+ wrapper.lambda().eq(Factory::getCompanyId,id);
+ return baseMapper.selectList(wrapper);
+ }
}
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java
index e6ad84e..3efc91a 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java
@@ -17,6 +17,12 @@
package com.chinaztt.mes.basic.service.impl;
import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Console;
+import cn.hutool.core.text.csv.CsvData;
+import cn.hutool.core.text.csv.CsvReader;
+import cn.hutool.core.text.csv.CsvRow;
+import cn.hutool.core.text.csv.CsvUtil;
+import cn.hutool.core.util.CharsetUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -34,9 +40,11 @@
import com.chinaztt.mes.basic.util.PartUtils;
import com.chinaztt.mes.basic.util.TransactionUtils;
import com.chinaztt.mes.common.util.JsonUtil;
+import com.chinaztt.mes.common.util.MultipartFileToFile;
import com.chinaztt.ztt.common.core.util.R;
import com.chinaztt.ztt.common.security.util.SecurityUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.collect.Lists;
import com.google.gson.Gson;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -49,21 +57,25 @@
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.core.env.Environment;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
-import org.springframework.transaction.TransactionDefinition;
-import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.multipart.MultipartFile;
+import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.*;
+import java.util.concurrent.CompletableFuture;
/**
* 闆朵欢
@@ -82,6 +94,9 @@
private Environment environment;
private RedisTemplate redisTemplate;
private TransactionUtils transactionUtils;
+
+ @Autowired
+ private ThreadPoolTaskExecutor threadPoolTaskExecutor;
;
@@ -378,7 +393,6 @@
@Override
@Transactional(rollbackFor = Exception.class)
public Long syncNewIfs(String date) {
- TransactionStatus transaction = transactionUtils.begin(TransactionDefinition.ISOLATION_READ_COMMITTED);
Map<String, String> dicmattype = dictUtils.getDicKey("material_type");
Map<String, String> dicunit = dictUtils.getDicKey("unit");
String key = "syncPart_lock" + SecurityUtils.getUser().getId();
@@ -449,4 +463,124 @@
}
return (long) partList.size();
}
+
+ @Override
+ public void asyncUploadExcel(MultipartFile file) {
+ String key = "syncPart_lock" + SecurityUtils.getUser().getId();
+ if (redisTemplate.hasKey(key)) {
+ throw new RuntimeException("鏈夊鍏ヤ换鍔℃鍦ㄥ鐞�");
+ }
+ redisTemplate.opsForValue().set(key, 1, 1000 * 3600);
+ RequestContextHolder.setRequestAttributes(RequestContextHolder.getRequestAttributes(),true);
+ Map<String, String> dicmattype = dictUtils.getDicKey("material_type");
+ Map<String, String> dicunit = dictUtils.getDicKey("unit");
+ CompletableFuture.runAsync(()->{
+ asyncExcel(file,dicmattype,dicunit);
+ redisTemplate.delete(key);
+ },threadPoolTaskExecutor);
+ }
+
+ public void asyncExcel(MultipartFile file,Map<String, String> dicmattype,Map<String, String> dicunit){
+ File file1 = MultipartFileToFile.multipartFileToFile(file);
+ CsvReader reader = CsvUtil.getReader();
+ reader.setFieldSeparator(',');
+//浠庢枃浠朵腑璇诲彇CSV鏁版嵁
+ CsvData data = reader.read(file1, CharsetUtil.CHARSET_GBK);
+ List<CsvRow> rows = data.getRows();
+//閬嶅巻琛�
+ List<Part>list = new ArrayList<>();
+ List<String>no=new ArrayList<String>();
+ for (CsvRow csvRow : rows) {
+ //getRawList杩斿洖涓�涓狶ist鍒楄〃锛屽垪琛ㄧ殑姣忎竴椤逛负CSV涓殑涓�涓崟鍏冩牸锛堟棦閫楀彿鍒嗛殧閮ㄥ垎锛�
+ List<String> rawList = filter(csvRow.getRawList());
+ //System.out.println(rawList);
+ if(rawList.get(0).equals("鏄惁璁惧澶囦欢")){
+ continue;
+ }
+ if(rawList.get(1).equals("88.118.1/A0172320")){
+ Console.log(rawList);
+ for (int i = 0; i < rawList.size(); i++) {
+ System.out.println(i+"====="+rawList.get(i));
+ }
+ Console.log(rawList.get(6));
+ }
+ Part part = new Part();
+ part.setIsEquipment(rawList.get(0));
+ part.setPartNo(rawList.get(1));
+ no.add(rawList.get(1));
+ part.setPartName(rawList.get(2));
+ part.setDescription(rawList.get(3));
+ part.setMaterialType(rawList.get(6));
+ part.setUnit(rawList.get(8));
+ part.setAssets(rawList.get(16));
+ part.setAssetsType(rawList.get(17));
+ part.setPlanningMethod(rawList.get(18));
+ part.setSuppliesType(rawList.get(19));
+ part.setAbcType(rawList.get(20));
+ part.setHz(rawList.get(21));
+ part.setCycle(rawList.get(22));
+ part.setSunit(rawList.get(33));
+ part.setVolume(rawList.get(35));
+ part.setTotalNum(rawList.get(36));
+ part.setGetNum(rawList.get(37));
+ part.setDefaultMr(rawList.get(60));
+ part.setDopR(rawList.get(61));
+ part.setNetto(rawList.get(62));
+ part.setNumCount(rawList.get(64));
+ part.setIvm(rawList.get(66));
+ part.setIcl(rawList.get(67));
+ part.setSii(rawList.get(68));
+ part.setZc(rawList.get(69));
+ part.setEsca(rawList.get(72));
+ list.add(part);
+ }
+ list.forEach(r->{
+ r.setEngChgLevel("1");
+ no.add(r.getPartNo());
+ r.setMaterialType(dicmattype.get(r.getMaterialType()));
+ r.setUnit(dicunit.get(r.getUnit()));
+ r.setSunit(dicunit.get(r.getSunit()));
+ });
+ list.stream().filter(r-> Objects.isNull(r.getMaterialType())).forEach(System.out::println);
+ if(list.size()>0) {
+ List<List<String>> partition = Lists.partition(no, 10000);
+ partition.forEach(l->{
+ QueryWrapper<Part> queryWrapper = new QueryWrapper<>();
+ queryWrapper.lambda().select(Part::getPartNo).in(Part::getPartNo, l);
+ List<Part> selectList = baseMapper.selectList(queryWrapper);
+ list.removeIf(mainObj -> selectList.stream().anyMatch(subObj -> subObj.getPartNo().equals(mainObj.getPartNo())));
+ });
+ log.info("杩囨护鍚庨暱搴�=============================銆�"+list.size());
+ list.forEach(l->{
+ try {
+ baseMapper.insert(l);
+ }catch (Exception e) {
+ e.printStackTrace();
+ }
+ });
+ }
+ MultipartFileToFile.delteTempFile(file1);
+ }
+
+ /**
+ * 杩囨护淇敼涓嶆纭暟鎹牸寮�
+ * @param rawList
+ * @return
+ */
+ public static List<String> filter( List<String> rawList){
+ List<String>filters = new ArrayList<>();
+ for (int i = 0; i < rawList.size(); i++) {
+ if (rawList.get(i).contains("|")&&rawList.get(i).contains(",")&&rawList.get(i).split(",").length>1) {
+ String[] split = rawList.get(i).split(",");
+ if (!Objects.equals(split[1], "") &&split[0].charAt(0)==split[1].charAt(0)){
+ Arrays.stream(split).forEach(filters::add);
+ }else {
+ filters.add(rawList.get(i));
+ }
+ }else {
+ filters.add(rawList.get(i));
+ }
+ }
+ return filters;
+ }
}
diff --git a/mes-common/src/main/java/com/chinaztt/mes/common/config/FeignInterceptor.java b/mes-common/src/main/java/com/chinaztt/mes/common/config/FeignInterceptor.java
new file mode 100644
index 0000000..8822b35
--- /dev/null
+++ b/mes-common/src/main/java/com/chinaztt/mes/common/config/FeignInterceptor.java
@@ -0,0 +1,27 @@
+package com.chinaztt.mes.common.config;
+
+import feign.RequestInterceptor;
+import feign.RequestTemplate;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @Author 寮犲
+ * @Date 2023/10/31
+ */
+@Component
+public class FeignInterceptor implements RequestInterceptor {
+ @Override
+ public void apply(RequestTemplate template) {
+ RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+ if(requestAttributes != null){
+ HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
+ String authorization = request.getHeader("Authorization");
+ template.header("Authorization", authorization);
+ }
+ }
+}
diff --git a/mes-common/src/main/java/com/chinaztt/mes/common/util/MultipartFileToFile.java b/mes-common/src/main/java/com/chinaztt/mes/common/util/MultipartFileToFile.java
new file mode 100644
index 0000000..8dc6457
--- /dev/null
+++ b/mes-common/src/main/java/com/chinaztt/mes/common/util/MultipartFileToFile.java
@@ -0,0 +1,65 @@
+package com.chinaztt.mes.common.util;
+
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.*;
+import java.util.Objects;
+
+/**
+ * @Author 寮犲
+ * @Date 2022/8/5
+ */
+public class MultipartFileToFile {
+ /**
+ * MultipartFile 杞� File
+ *
+ * @param file
+ * @throws Exception
+ */
+ public static File multipartFileToFile(MultipartFile file) {
+
+ File toFile = null;
+ try {
+ if ("".equals(file) || file.getSize() <= 0) {
+ file = null;
+ } else {
+ InputStream ins = null;
+ ins = file.getInputStream();
+ toFile = new File(Objects.requireNonNull(file.getOriginalFilename()));
+ inputStreamToFile(ins, toFile);
+ ins.close();
+ }
+ }catch (IOException e){
+ e.printStackTrace();
+ }
+ return toFile;
+ }
+
+ //鑾峰彇娴佹枃浠�
+ private static void inputStreamToFile(InputStream ins, File file) {
+ try {
+ OutputStream os = new FileOutputStream(file);
+ int bytesRead = 0;
+ byte[] buffer = new byte[8192];
+ while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
+ os.write(buffer, 0, bytesRead);
+ }
+ os.close();
+ ins.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 鍒犻櫎鏈湴涓存椂鏂囦欢
+ * @param file
+ */
+ public static void delteTempFile(File file) {
+ if (file != null) {
+ File del = new File(file.toURI());
+ del.deleteOnExit();
+ }
+ }
+
+}
diff --git a/mes-common/src/main/java/com/chinaztt/mes/common/util/ThreadPoolConfig.java b/mes-common/src/main/java/com/chinaztt/mes/common/util/ThreadPoolConfig.java
new file mode 100644
index 0000000..47e2637
--- /dev/null
+++ b/mes-common/src/main/java/com/chinaztt/mes/common/util/ThreadPoolConfig.java
@@ -0,0 +1,62 @@
+package com.chinaztt.mes.common.util;
+
+import org.apache.commons.lang3.concurrent.BasicThreadFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.ThreadPoolExecutor;
+
+/**
+ * 绾跨▼姹犻厤缃�
+ *
+ * @author 寮犲
+ **/
+@Configuration
+public class ThreadPoolConfig
+{
+ // 鏍稿績绾跨▼姹犲ぇ灏�
+ private int corePoolSize = 80;
+
+ // 鏈�澶у彲鍒涘缓鐨勭嚎绋嬫暟
+ private int maxPoolSize = 92;
+
+ // 闃熷垪鏈�澶ч暱搴�
+ private int queueCapacity = 80;
+
+ // 绾跨▼姹犵淮鎶ょ嚎绋嬫墍鍏佽鐨勭┖闂叉椂闂�
+ private int keepAliveSeconds = 300;
+
+ @Bean(name = "threadPoolTaskExecutor")
+ public ThreadPoolTaskExecutor threadPoolTaskExecutor()
+ {
+ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+ executor.setMaxPoolSize(maxPoolSize);
+ executor.setCorePoolSize(corePoolSize);
+ executor.setQueueCapacity(queueCapacity);
+ executor.setKeepAliveSeconds(keepAliveSeconds);
+ // 绾跨▼姹犲鎷掔粷浠诲姟(鏃犵嚎绋嬪彲鐢�)鐨勫鐞嗙瓥鐣�
+ executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+ return executor;
+ }
+
+ /**
+ * 鎵ц鍛ㄦ湡鎬ф垨瀹氭椂浠诲姟
+ */
+ @Bean(name = "scheduledExecutorService")
+ protected ScheduledExecutorService scheduledExecutorService()
+ {
+ return new ScheduledThreadPoolExecutor(corePoolSize,
+ new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build())
+ {
+ @Override
+ protected void afterExecute(Runnable r, Throwable t)
+ {
+ super.afterExecute(r, t);
+ Threads.printException(r, t);
+ }
+ };
+ }
+}
diff --git a/mes-common/src/main/java/com/chinaztt/mes/common/util/Threads.java b/mes-common/src/main/java/com/chinaztt/mes/common/util/Threads.java
new file mode 100644
index 0000000..4619a26
--- /dev/null
+++ b/mes-common/src/main/java/com/chinaztt/mes/common/util/Threads.java
@@ -0,0 +1,96 @@
+package com.chinaztt.mes.common.util;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.concurrent.*;
+
+/**
+ * 绾跨▼鐩稿叧宸ュ叿绫�.
+ *
+ * @author 寮犲
+ */
+public class Threads
+{
+ private static final Logger logger = LoggerFactory.getLogger(Threads.class);
+
+ /**
+ * sleep绛夊緟,鍗曚綅涓烘绉�
+ */
+ public static void sleep(long milliseconds)
+ {
+ try
+ {
+ Thread.sleep(milliseconds);
+ }
+ catch (InterruptedException e)
+ {
+ return;
+ }
+ }
+
+ /**
+ * 鍋滄绾跨▼姹�
+ * 鍏堜娇鐢╯hutdown, 鍋滄鎺ユ敹鏂颁换鍔″苟灏濊瘯瀹屾垚鎵�鏈夊凡瀛樺湪浠诲姟.
+ * 濡傛灉瓒呮椂, 鍒欒皟鐢╯hutdownNow, 鍙栨秷鍦╳orkQueue涓璓ending鐨勪换鍔�,骞朵腑鏂墍鏈夐樆濉炲嚱鏁�.
+ * 濡傛灉浠嶄汉瓒呮檪锛屽墖寮峰埗閫�鍑�.
+ * 鍙﹀鍦╯hutdown鏃剁嚎绋嬫湰韬璋冪敤涓柇鍋氫簡澶勭悊.
+ */
+ public static void shutdownAndAwaitTermination(ExecutorService pool)
+ {
+ if (pool != null && !pool.isShutdown())
+ {
+ pool.shutdown();
+ try
+ {
+ if (!pool.awaitTermination(120, TimeUnit.SECONDS))
+ {
+ pool.shutdownNow();
+ if (!pool.awaitTermination(120, TimeUnit.SECONDS))
+ {
+ logger.info("Pool did not terminate");
+ }
+ }
+ }
+ catch (InterruptedException ie)
+ {
+ pool.shutdownNow();
+ Thread.currentThread().interrupt();
+ }
+ }
+ }
+
+ /**
+ * 鎵撳嵃绾跨▼寮傚父淇℃伅
+ */
+ public static void printException(Runnable r, Throwable t)
+ {
+ if (t == null && r instanceof Future<?>)
+ {
+ try
+ {
+ Future<?> future = (Future<?>) r;
+ if (future.isDone())
+ {
+ future.get();
+ }
+ }
+ catch (CancellationException ce)
+ {
+ t = ce;
+ }
+ catch (ExecutionException ee)
+ {
+ t = ee.getCause();
+ }
+ catch (InterruptedException ie)
+ {
+ Thread.currentThread().interrupt();
+ }
+ }
+ if (t != null)
+ {
+ logger.error(t.getMessage(), t);
+ }
+ }
+}
diff --git a/mes-web/src/main/resources/bootstrap.yml b/mes-web/src/main/resources/bootstrap.yml
index f8f31c8..1d6e43d 100644
--- a/mes-web/src/main/resources/bootstrap.yml
+++ b/mes-web/src/main/resources/bootstrap.yml
@@ -1,5 +1,5 @@
server:
- port: 6060
+ port: 6066
spring:
datasource:
@@ -17,7 +17,7 @@
# password: nacos
password: zttZTT123!
discovery:
- server-addr: 127.0.0.1:8848
+ server-addr: 106.13.194.57:8848
metadata:
# VERSION: 10.88.15.224
VERSION: 127.0.0.1
--
Gitblit v1.9.3