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