From f2597f5b7a8da61748f3bcc972450d409de93c18 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 16 十一月 2023 10:05:08 +0800
Subject: [PATCH] 销售订单-修改6
---
mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java | 193 ++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 185 insertions(+), 8 deletions(-)
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..abc3344 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;
@@ -33,10 +39,13 @@
import com.chinaztt.mes.basic.util.DictUtils;
import com.chinaztt.mes.basic.util.PartUtils;
import com.chinaztt.mes.basic.util.TransactionUtils;
+import com.chinaztt.mes.basic.vo.PartVo;
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 +58,26 @@
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.util.EntityUtils;
+import org.springframework.beans.BeanUtils;
+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 +96,9 @@
private Environment environment;
private RedisTemplate redisTemplate;
private TransactionUtils transactionUtils;
+
+ @Autowired
+ private ThreadPoolTaskExecutor threadPoolTaskExecutor;
;
@@ -296,11 +313,6 @@
throw new RuntimeException("闆朵欢鍙风増鏈彿閲嶅锛�" + partByFind.getPartName() + "-" + partByFind.getPartNo());
}
baseMapper.insert(part);
- //瀵规帴IFS
-// R result = ifsFeignClient.importInventPartStd(new JSONObject().fluentPut("BATCH_INFO", new JSONArray().fluentAdd(ifsDataMake(part))), true);
-// if (result.getCode() == 1) {
-// throw new RuntimeException("IFS閿欒鈥斺��" + result.getMsg());
-// }
return true;
}
@@ -378,7 +390,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 +460,170 @@
}
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);
+ }
+
+ //瑙﹀彂闆朵欢
+ @Override
+ public String triggerAdd(PartVo partVo) {
+ Part part = new Part();
+ BeanUtils.copyProperties(partVo,part);
+ //鍒涘缓鑰�
+ part.setCreateUser(partVo.getCreate_name());
+ //鏇存柊鑰�
+ part.setUpdateUser(partVo.getUpdate_name());
+ //闆朵欢鍙�
+ part.setPartNo(partVo.getMaterial_number());
+ //鍚嶇О
+ part.setPartName(partVo.getMaterial_name());
+ //闆朵欢鎻忚堪
+ part.setDescription(partVo.getMaterial_description());
+ //鍗曚綅
+ part.setUnit(partVo.getUnit());
+ //涓�绾у垎绫�
+ part.setAssortment(partVo.getFirstCategoryName());
+ //浜岀骇鍒嗙被
+ part.setCategory(partVo.getSecondCategoryName());
+ //涓夌骇鍒嗙被
+ part.setThreeLevelClassification(partVo.getThirdCategoryName());
+ //瑙勬牸
+ part.setSpecs(partVo.getMaterial_spec());
+ //鐗堟湰鍙�
+ part.setEngChgLevel(partVo.getTemplate_version().substring(1));
+ //璁″垝鏂规硶
+ part.setPlanningMethod("A");
+ //鍨嬪彿
+ part.setPartModel(partVo.getMaterial_spec());
+ if (partVo.getType().equals("add")){
+ baseMapper.insert(part);
+ return "鏂板"+part.getPartNo()+"闆朵欢鍙锋垚鍔�" ;
+ }else {
+ baseMapper.update(part,Wrappers.<Part>lambdaUpdate().eq(Part::getPartNo,part.getPartNo()));
+ return "淇敼"+part.getPartNo()+"闆朵欢鍙锋垚鍔�" ;
+ }
+ }
+
+
+
+
+
+ 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.setDomainNo(rawList.get(4));
+ part.setDomainName(rawList.get(5));
+ 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;
+ }
}
--
Gitblit v1.9.3