From 5e10fd9df81dcffdebcf0c0ef892f5ac01926e20 Mon Sep 17 00:00:00 2001 From: Fixiaobai <fixiaobai@163.com> Date: 星期二, 24 十月 2023 11:50:53 +0800 Subject: [PATCH] Changes --- mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java | 51 ++++++++++++++--- mes-common/src/main/java/com/chinaztt/mes/common/util/ArrayListUtil.java | 128 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 170 insertions(+), 9 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 96514d0..a0cb006 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 @@ -36,6 +36,7 @@ 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 org.apache.http.HttpEntity; @@ -56,10 +57,8 @@ import org.springframework.util.StringUtils; import java.io.IOException; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.util.*; /** * 闆朵欢 @@ -367,8 +366,12 @@ } } + + @Transactional(rollbackFor = Exception.class) @Override public void syncNewIfs(Date date) { + 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("鏈夊悓姝ヤ换鍔℃鍦ㄥ鐞�"); @@ -376,13 +379,44 @@ redisTemplate.opsForValue().set(key, 1, 1000 * 3600); Map<String, Object>map=new HashMap<>(); map.put("MODIFY_DATE", DateUtil.format(date,"yyyy-MM-dd")); - System.out.println(map); - String url = "http://192.168.20.47:8008/PurchService.ashx?contract=ZTKJ&contractKey=4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=&procedureName=QUERY_INVENTORY_PART_INFO_STD&userId=7632&inAttr={'MODIFY_DATE':"+JsonUtil.jsonToString(map)+"}"; try { + String url = "http://192.168.20.47:8008/PurchService.ashx?contract=ZTKJ&contractKey=4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=&procedureName=QUERY_INVENTORY_PART_INFO_STD&userId=7632&inAttr="+new ObjectMapper().writeValueAsString(map); String body = HttpRequest.get(url).execute().body(); Map<String, Object> mapResult = JsonUtil.jsonToPojo(body, Map.class); - System.out.println( - "鎵ц========銆�"+mapResult); + List<Map<String, Object>> data = JsonUtil.jsonToPojo(JsonUtil.jsonToString(mapResult.get("INVENTORY_PART_INFO")), List.class); + List<String>no=new ArrayList<String>(); + List<Part>partList=new ArrayList<Part>(); + 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); + }); + 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); + partList.forEach(l->{ + baseMapper.insert(l); + }); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e.getMessage()); @@ -390,5 +424,4 @@ redisTemplate.delete(key); } } - } diff --git a/mes-common/src/main/java/com/chinaztt/mes/common/util/ArrayListUtil.java b/mes-common/src/main/java/com/chinaztt/mes/common/util/ArrayListUtil.java new file mode 100644 index 0000000..619c784 --- /dev/null +++ b/mes-common/src/main/java/com/chinaztt/mes/common/util/ArrayListUtil.java @@ -0,0 +1,128 @@ +package com.chinaztt.mes.common.util; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @Author 寮犲 + */ +public class ArrayListUtil { + + /** + * 鍗曞�奸泦鍚堝幓閲� + * @param objList + * @param <T> + * @return + */ + public static <T> List<T> singleValueDistinct(List<T>objList){ + return objList.stream().distinct().collect(Collectors.toList()); + } + + /** + * 鍗曞�奸泦鍚堟瘮杈� 涓婚泦鍚堜腑涓庢闆嗗悎涓嶇浉绛夋暟鎹� + * @param mainList 涓婚泦鍚� + * @param secondaryList 娆¤闆嗗悎 + * @param <T> + * @return 涓婚泦鍚堜腑璺熸瑕侀泦鍚堜笉鐩哥瓑鐨勬暟鎹� + */ + public static <T> List<T> compareNotEqualListBySingleValue(List<T>mainList,List<T>secondaryList){ + return mainList.stream().filter(item -> !secondaryList.stream() + .map(e -> e).distinct().collect(Collectors.toList()) + .contains(item)) + .collect(Collectors.toList()); + } + + /** + * 鍗曞�奸泦鍚堟瘮杈� 涓婚泦鍚堜腑涓庢闆嗗悎鐩哥瓑鏁版嵁 + * @param mainList 涓婚泦鍚� + * @param secondaryList 娆¤闆嗗悎 + * @param <T> + * @return 涓婚泦鍚堜腑璺熸瑕侀泦鍚堜笉鐩哥瓑鐨勬暟鎹� + */ + public static <T> List<T> compareEqualListBySingleValue(List<T>mainList,List<T>secondaryList){ + return mainList.stream().filter(item -> secondaryList.stream() + .map(e -> e).collect(Collectors.toList()) + .contains(item)) + .collect(Collectors.toList()); + } + + /** + * 鍗曞�奸泦鍚堝悎骞� + * @param isDistinct + * @param values + * @param <T> + * @return + */ + @SafeVarargs + public static <T> List<T> mergeListBySingleValue(boolean isDistinct, List<T>... values){ + //鍘婚噸鍚堝苟 + if (isDistinct){ + return Stream.of(values).flatMap(Collection::stream).distinct().collect(Collectors.toList()); + } + return Stream.of(values).flatMap(Collection::stream).collect(Collectors.toList()); + } + + /** + * 鍗曚釜瀵硅薄闆嗗悎鏍规嵁瀵硅薄灞炴�у幓閲嶉泦鍚� + * @param keyExtractor + * @param objects + * @param <T> + * @return + */ + public static <T> List<T> oneObjectsDistinctByProperty(Function<? super T, ?> keyExtractor,List<T> objects){ + List<T> newList = new ArrayList<>(); + objects.stream().filter(distinctByKey(keyExtractor)) //filter淇濈暀true鐨勫�� + .forEach(newList::add); + return newList; + } + + /** + * 澶氬璞¢泦鍚堝悎骞舵牴鎹睘鎬у幓閲� + * @param objects + * @param <T> + * @return + */ + @SafeVarargs + public static <T> List<T> mergeListByObjectsDistinct(Function<? super T, ?> keyExtractor,List<T>... objects){ + List<T> tList = mergeListByObjects(objects); + return oneObjectsDistinctByProperty(keyExtractor,tList); + } + + /** + * 澶氬璞¢泦鍚堝悎骞舵棤闇�鍘婚噸 閲嶈浇 + * @param objects + * @param <T> + * @return + */ + @SafeVarargs + public static <T> List<T> mergeListByObjectsDistinct(List<T>... objects){ + return mergeListByObjects(objects); + } + + private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) { + Map<Object,Boolean> seen = new ConcurrentHashMap<>(); + //putIfAbsent鏂规硶娣诲姞閿�煎锛屽鏋渕ap闆嗗悎涓病鏈夎key瀵瑰簲鐨勫�硷紝鍒欑洿鎺ユ坊鍔狅紝骞惰繑鍥瀗ull锛屽鏋滃凡缁忓瓨鍦ㄥ搴旂殑鍊硷紝鍒欎緷鏃т负鍘熸潵鐨勫�笺�� + //濡傛灉杩斿洖null琛ㄧず娣诲姞鏁版嵁鎴愬姛(涓嶉噸澶�)锛屼笉閲嶅(null==null :TRUE) + return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null; + } + + /** + * 瀵硅薄闆嗗悎鍚堝苟 + * @param objects + * @param <T> + * @return + */ + @SafeVarargs + private static <T> List<T> mergeListByObjects(List<T>... objects){ + return Stream.of(objects).flatMap(Collection::stream).collect(Collectors.toList()); + } + + +} -- Gitblit v1.9.3