From 10e199f950f5c74b25e446433ceb51cffe675be4 Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期一, 30 十月 2023 09:57:07 +0800
Subject: [PATCH] Changes

---
 mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java |  102 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 94 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 c1bd36c..e6ad84e 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,7 @@
 package com.chinaztt.mes.basic.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.http.HttpRequest;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -31,12 +32,15 @@
 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.util.RedisUtils;
+import com.chinaztt.mes.basic.util.TransactionUtils;
+import com.chinaztt.mes.common.util.JsonUtil;
 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.gson.Gson;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.http.HttpEntity;
-import org.apache.http.client.config.RequestConfig;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.entity.ContentType;
@@ -50,13 +54,16 @@
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.scheduling.annotation.Async;
 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 java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.util.*;
 
 /**
  * 闆朵欢
@@ -66,13 +73,17 @@
  */
 @AllArgsConstructor
 @Service
+@Slf4j
 public class PartServiceImpl extends ServiceImpl<PartMapper, Part> implements PartService {
 	private DictUtils dictUtils;
 	private PartUtils partUtils;
 	private IfsFeignClient ifsFeignClient;
 	private DiscoveryClient discoveryClient;
 	private Environment environment;
-	private RedisTemplate redisTemplate;;
+	private RedisTemplate redisTemplate;
+	private TransactionUtils transactionUtils;
+	;
+
 
 	@Override
 	public void importPartExcel(List<PartData> list) {
@@ -329,12 +340,12 @@
 		if (redisTemplate.hasKey(key)) {
 			throw new RuntimeException("鏈夊悓姝ヤ换鍔℃鍦ㄥ鐞�");
 		}
-		redisTemplate.opsForValue().set(key,1,1000 * 3600);
+		redisTemplate.opsForValue().set(key, 1, 1000 * 3600);
 		CloseableHttpClient httpClient = HttpClientBuilder.create().build();
 		String syncErpUrl = environment.getProperty("erpPartUrl");
 		HttpPost httpPost = new HttpPost(syncErpUrl);
 		httpPost.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000);
-		httpPost.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,1000 * 3600);
+		httpPost.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 1000 * 3600);
 		// 灏嗗弬鏁拌浆鎹负JSON瀛楃涓�
 		Map<String, String> params = new HashMap<>();
 //		params.put("startTime", customOrderSyncDTO.getStartTime());
@@ -363,4 +374,79 @@
 		}
 	}
 
+
+	@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();
+		if (redisTemplate.hasKey(key)) {
+			throw new RuntimeException("鏈夊悓姝ヤ换鍔℃鍦ㄥ鐞�");
+		}
+		redisTemplate.opsForValue().set(key, 1, 1000 * 3600);
+		List<Part>partList=new ArrayList<Part>();
+		Connection conn =null;
+		PreparedStatement pstmt =null;
+		try {
+			String url ="";
+			//鍒ゆ柇鏃ユ湡鏈夊惁
+			if (Objects.isNull(date)){
+				url = "http://192.168.20.47:8008/PurchService.ashx?contract=KJZS&contractKey=4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=&procedureName=QUERY_INVENTORY_PART_INFO_STD&userId=7632&inAttr={}";
+			}else {
+				Map<String, Object>map=new HashMap<>();
+				map.put("MODIFY_DATE", date);
+				url = "http://192.168.20.47:8008/PurchService.ashx?contract=KJZS&contractKey=4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=&procedureName=QUERY_INVENTORY_PART_INFO_STD&userId=7632&inAttr="+new ObjectMapper().writeValueAsString(map);
+			}
+			log.info("寮�濮嬫墽琛屽悓姝�==========銆�");
+			String body = HttpRequest.get(url).execute().body();
+			log.info("鎵ц鍚屾缁撴潫===========銆�");
+			Map<String, Object> mapResult = JsonUtil.jsonToPojo(body, Map.class);
+			List<Map<String, Object>> data = JsonUtil.jsonToPojo(JsonUtil.jsonToString(mapResult.get("INVENTORY_PART_INFO")), List.class);
+			System.out.println(data.size());
+			//data.forEach(System.out::println);
+			List<String>no=new ArrayList<String>();
+			data.forEach(l->{
+				Part part = new Part();
+				part.setPartNo(String.valueOf(l.get("PART_NO")));
+				no.add(part.getPartNo());
+				part.setPartName(String.valueOf(l.get("PART_DESC")));
+				part.setMaterialType(dicmattype.get(l.get("TYPE_CODE")));
+				part.setUnit(dicunit.get(l.get("UNIT_MEAS")));
+				part.setAssortment(String.valueOf(l.get("FIRST_CLASS")));
+				part.setCategory(String.valueOf(l.get("SECOND_CLASS")));
+				part.setThreeLevelClassification(String.valueOf(l.get("THIRD_CLASS")));
+//                        part1.setMaterialAttribute(dicmatatype.get(part.get("ACCOUNTING_GROUP_DESC")));
+				Object netWeight = Optional.ofNullable(l.get("NET_WEIGHT")).orElse("1");
+				if(!Objects.equals(netWeight,"1")){
+					part.setWeight(BigDecimal.valueOf(Double.parseDouble(String.valueOf(l.get("NET_WEIGHT")))));
+				}
+				part.setEngChgLevel("1");
+				part.setPlanningMethod(String.valueOf(l.get("PART_STATUS")));
+				//part.setPlanningMethodIfs(l.get("PART_STATUS"));
+				part.setLotTrackingIfs(!(l.get("LOT_TRACK_DB").equals("NOT LOT TRACKING")));
+				part.setSunit(dicunit.get(l.get("UNIT_MEAS_FOR_WEIGHT")));
+				partList.add(part);
+			});
+			if(partList.size()>0) {
+				QueryWrapper<Part> queryWrapper = new QueryWrapper<>();
+				queryWrapper.lambda().select(Part::getPartNo).in(Part::getPartNo, no);
+				List<Part> selectList = baseMapper.selectList(queryWrapper);
+				//System.out.println(baseMapper.selectList(queryWrapper));
+				partList.removeIf(mainObj -> selectList.stream().anyMatch(subObj -> subObj.getPartNo().equals(mainObj.getPartNo())));
+				System.out.println("杩囨护闀垮害=============================銆�"+partList.size());
+				partList.forEach(l->{
+					baseMapper.insert(l);
+				});
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw new RuntimeException(e.getMessage());
+		} finally {
+			//JDBCUtil.close(pstmt,conn);
+			redisTemplate.delete(key);
+		}
+		return (long) partList.size();
+	}
 }

--
Gitblit v1.9.3