mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/PartServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
mes-common/src/main/java/com/chinaztt/mes/common/util/ArrayListUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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); } } } 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æ¹æ³æ·»å é®å¼å¯¹ï¼å¦æmapéå䏿²¡æè¯¥key对åºçå¼ï¼åç´æ¥æ·»å ï¼å¹¶è¿ånullï¼å¦æå·²ç»åå¨å¯¹åºçå¼ï¼å便§ä¸ºåæ¥çå¼ã //妿è¿å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()); } }