From 17eb62f9d9cb2706296ea35f241dd8aafbebd6f2 Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期日, 12 十一月 2023 05:17:08 +0800
Subject: [PATCH] Changes11

---
 mes-technology/src/main/java/com/chinaztt/mes/technology/service/impl/StructureServiceImpl.java |  108 ++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 77 insertions(+), 31 deletions(-)

diff --git a/mes-technology/src/main/java/com/chinaztt/mes/technology/service/impl/StructureServiceImpl.java b/mes-technology/src/main/java/com/chinaztt/mes/technology/service/impl/StructureServiceImpl.java
index 281daf7..63986d6 100644
--- a/mes-technology/src/main/java/com/chinaztt/mes/technology/service/impl/StructureServiceImpl.java
+++ b/mes-technology/src/main/java/com/chinaztt/mes/technology/service/impl/StructureServiceImpl.java
@@ -17,6 +17,7 @@
 package com.chinaztt.mes.technology.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Console;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.ExcelWriter;
 import com.alibaba.excel.write.metadata.WriteSheet;
@@ -46,9 +47,15 @@
 import com.chinaztt.mes.technology.mapper.StructureMapper;
 import com.chinaztt.mes.technology.service.StructureService;
 import com.chinaztt.ztt.common.core.util.R;
+import com.chinaztt.ztt.common.security.util.SecurityUtils;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.PlatformTransactionManager;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
@@ -57,6 +64,7 @@
 import java.math.BigDecimal;
 import java.net.URLEncoder;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 
 
 /**
@@ -78,6 +86,12 @@
 	private NumberGenerator<Structure> numberGenerator;
 	private DictUtils dictUtils;
 	private IfsFeignClient ifsFeignClient;
+	@Autowired
+	private PlatformTransactionManager transactionManager;
+
+	private RedisTemplate redisTemplate;
+	@Autowired
+	private ThreadPoolTaskExecutor threadPoolTaskExecutor;
 
 	/**
 	 * @Author: Hans
@@ -256,55 +270,82 @@
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public void importExcel(List<StructureData> list) {
+		list.forEach(System.out::println);
+		String key = "syncStructure_lock" + SecurityUtils.getUser().getId();
+		if (redisTemplate.hasKey(key)) {
+			throw new RuntimeException("鏈夊鍏ヤ换鍔℃鍦ㄥ鐞�");
+		}
+		CompletableFuture.runAsync(()->{
+			asyncImport(list);
+			redisTemplate.delete(key);
+		},threadPoolTaskExecutor);
+	}
+
+
+	void asyncImport(List<StructureData> list){
 		if (CollectionUtil.isEmpty(list)) {
 			return;
 		}
-		List<String> uinck = new ArrayList<>();
 		for (StructureData data : list) {
-			Part part = partMapper.selectOne(Wrappers.<Part>lambdaQuery().eq(Part::getPartNo, data.getFatherPartNo()).eq(Part::getEngChgLevel, data.getFatherVersion()));
+			List<Part> parts = partMapper.selectList(Wrappers.<Part>lambdaQuery().eq(Part::getPartNo, data.getPartNo()));
+			Part part = parts.get(0);
 			if (part == null) {
-				throw new RuntimeException("闆朵欢鍙�:" + data.getFatherPartNo() + "涓嶅瓨鍦�");
+				log.error("闆朵欢鍙�:" + data.getPartNo() + "涓嶅瓨鍦�");
+				return;
 			}
-			Structure structure = baseMapper.selectOne(Wrappers.<Structure>lambdaQuery()
-					.eq(Structure::getPartId, part.getId())
-					.eq(Structure::getBomTypeDb, data.getStructureType())
-					.eq(Structure::getAlternativeNo, data.getAlternativeNo()));
+			Structure structure = baseMapper.selectOne(Wrappers.<Structure>lambdaQuery().eq(Structure::getPartId, part.getId()));
 			if (structure == null) {
 				structure = new Structure();
+				BeanUtils.copyProperties(data, structure);
 				structure.setPartId(part.getId());
-				structure.setVersion(data.getFatherVersion());
-				structure.setAlternativeDesc(data.getAlternativeDesc());
-				structure.setActive(true);
-				structure.setBomTypeDb(data.getStructureType());
+				structure.setMaster(false);
+				structure.setVersion("1");
+				//structure.setActive(true);
+				structure.setBomTypeDb("M");
 				structure.setIfsSync(false);
-				structure.setAlternativeNo(data.getAlternativeNo());
+				structure.setAlternativeNo("*");
+				structure.setSharpenerNo(data.getSharpenerNo());
+				structure.setCaveNum(data.getCaveNum());
+				structure.setGramWeight(data.getGramWeight());
+				structure.setMoldingCycle(data.getMoldingCycle());
+				structure.setMachine(data.getMachine());
+				structure.setScale(data.getScale());
+				structure.setDryingTime(data.getDryingTime());
+				structure.setDryingTemperature(data.getDryingTemperature());
+				structure.setPackingInfo(data.getPackingInfo());
+				structure.setCustom(data.getCustom());
 				baseMapper.insert(structure);
 			}
-			if (uinck.contains(structure.getId() + "_" + data.getLineItemNo())) {
-				throw new RuntimeException("闆朵欢鍙�:" + part.getPartNo() + "琛岄」鍙烽噸澶�");
-			}
-			Part childPart = partMapper.selectOne(Wrappers.<Part>lambdaQuery().eq(Part::getPartNo, data.getChildPartNo()).eq(Part::getEngChgLevel, data.getChildVersion()));
+			List<Part> childParts = partMapper.selectList(Wrappers.<Part>lambdaQuery().eq(Part::getPartNo, data.getSonPartNo()));
+			Part childPart = childParts.get(0);
 			if (childPart == null) {
-				throw new RuntimeException("闆朵欢鍙�:" + data.getChildPartNo() + "涓嶅瓨鍦�");
+				log.error("闆朵欢鍙�:" + data.getSonPartNo() + "涓嶅瓨鍦�");
+				return;
 			}
+			List<Operation> operations = operationMapper.selectList(Wrappers.<Operation>lambdaQuery().eq(Operation::getName, data.getOperationName()));
+			Operation operation = operations.get(0);
 			StructureComponent component = new StructureComponent();
 			component.setStructureId(structure.getId());
 			component.setPartId(childPart.getId());
 			component.setPlanningMethod(childPart.getPlanningMethod());
-			component.setQpa(new BigDecimal(data.getQpa()));
-			component.setLineItemNo(Integer.valueOf(data.getLineItemNo()));
-			component.setDiscNum(StringUtils.isEmpty(data.getDiskNum()) ? null : new Long(data.getDiskNum()));
-			//鏌ヨ宸ュ簭 濡傛灉鏈夊涓幏鍙栫涓�涓�
-			List<Operation> operationList = operationMapper.selectList(Wrappers.<Operation>lambdaQuery()
-					.eq(Operation::getName, data.getOperationName())
-					.eq(Operation::getActive, true).orderByAsc(Operation::getId));
-			if (CollectionUtil.isEmpty(operationList)) {
-				throw new RuntimeException("宸ュ簭" + data.getOperationName() + "涓嶅瓨鍦�");
+			QueryWrapper<StructureComponent> queryWrapper = new QueryWrapper<>();
+			queryWrapper.lambda().select(StructureComponent::getLineItemNo).eq(StructureComponent::getStructureId,structure.getId()).orderByDesc(StructureComponent::getLineItemNo);
+			List<StructureComponent> structureComponents = structureComponentMapper.selectList(queryWrapper);
+			component.setQpa(new BigDecimal(data.getTotalNUm()));// todo: 浜у搧缁撴瀯瀵煎叆鏁伴噺,杩樼己涓�涓鍙�
+			Console.log("鍊�===銆�"+structureComponents);
+			if(structureComponents.size()<1){
+				component.setLineItemNo(1);
+			}else {
+				Integer lineItemNo = structureComponents.get(0).getLineItemNo();
+				component.setLineItemNo(lineItemNo+1);
 			}
-			component.setOperationId(operationList.get(0).getId());
+			component.setOperationId(operation.getId());
+			component.setPlanningMethod("A");
+			component.setSpecs(childPart.getSpecs());
+			component.setPartModel(childPart.getPartModel());
 			structureComponentMapper.insert(component);
-			uinck.add(structure.getId() + "_" + data.getLineItemNo());
 		}
 	}
 
@@ -353,6 +394,8 @@
 
 	@Override
 	public R fullSave(StructureDTO structure) {
+		System.out.println(structure);
+		System.out.println("===============================");
 		int noCount = baseMapper.selectCount(Wrappers.<Structure>lambdaQuery()
 				.eq(Structure::getAlternativeNo, structure.getAlternativeNo())
 				.eq(Structure::getBomTypeDb, structure.getBomTypeDb())
@@ -386,9 +429,9 @@
 		structure.setIfsSync(false);
 		resetMaster(structure);
 		baseMapper.updateById(structure);
-		// 瀵规帴ifs
-		List<StructureDTO> structureDTOS = structureMapper.getStructureDtoByIds(Arrays.asList(structure.getId()));
-		structureIfsSyncByDto(structureDTOS);
+		//// 瀵规帴ifs
+		//List<StructureDTO> structureDTOS = structureMapper.getStructureDtoByIds(Arrays.asList(structure.getId()));
+		//structureIfsSyncByDto(structureDTOS);
 		return R.ok();
 	}
 
@@ -452,6 +495,9 @@
 		Structure structure = baseMapper.selectById(component.getStructureId());
 		structure.setIfsSync(false);
 		validate(structure.getPartId(), component.getPartId());
+		Part part = partMapper.selectById(component.getPartId());
+		component.setPartModel(part.getPartModel());
+		component.setSpecs(part.getSpecs());
 		structureComponentMapper.insert(component);
 		// 瀵规帴ifs
 //		List<StructureDTO> structureDTOS = structureMapper.getStructureDtoByIds(Arrays.asList(component.getStructureId()));

--
Gitblit v1.9.3