| | |
| | | package com.aps.core.service.impl; |
| | | |
| | | import com.alibaba.fastjson2.JSONArray; |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.aps.common.core.utils.DateUtils; |
| | | import com.aps.core.domain.ApsBom; |
| | | import com.aps.core.domain.ApsBomHeader; |
| | | import com.aps.core.mapper.ApsBomHeaderMapper; |
| | | import com.aps.core.service.IApsBomHeaderService; |
| | |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Set; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * BOM Header 数据管理Service业务层处理 |
| | |
| | | @Override |
| | | public boolean setBomDataToRedis(String orgCode) { |
| | | try { |
| | | List<JSONObject> bomRedisData = apsBomHeaderMapper.selectBomRedisData(orgCode); |
| | | String nowMainItemCode = ""; |
| | | JSONArray bomLine = new JSONArray(); |
| | | for (int i=0,size=bomRedisData.size();i<size;i++) { |
| | | JSONObject jsonObject = bomRedisData.get(i); |
| | | if("".equals(nowMainItemCode)){ |
| | | nowMainItemCode = jsonObject.getString("mainitemcode"); |
| | | } |
| | | if(!nowMainItemCode.equals(jsonObject.getString("mainitemcode"))){ |
| | | redisTemplate.opsForValue().set("BOM:BOM_"+orgCode+"_"+nowMainItemCode, bomLine); |
| | | bomLine = new JSONArray(); |
| | | } |
| | | bomLine.add(jsonObject); |
| | | nowMainItemCode = jsonObject.getString("mainitemcode"); |
| | | if(i==size-1){ |
| | | redisTemplate.opsForValue().set("BOM:BOM_"+orgCode+"_"+nowMainItemCode, bomLine); |
| | | } |
| | | Set<String> keys = redisTemplate.keys("BOM:BOM_*"); |
| | | if (keys != null && !keys.isEmpty()) { |
| | | redisTemplate.delete(keys); |
| | | } |
| | | List<ApsBom> bomRedisData = apsBomHeaderMapper.selectBomRedisData(orgCode); |
| | | Map<String, List<ApsBom>> groupedByMainItemCode = bomRedisData.stream().collect(Collectors.groupingBy(ApsBom::getMainItemCode)); |
| | | Map<String, Object> bulkData = new HashMap<>(); |
| | | for (Map.Entry<String, List<ApsBom>> entry : groupedByMainItemCode.entrySet()) { |
| | | String mainItemCode = entry.getKey(); |
| | | JSONArray jsonArray = JSONArray.from(entry.getValue()); |
| | | bulkData.put("BOM:BOM_" + orgCode + "_" + mainItemCode, jsonArray); |
| | | } |
| | | redisTemplate.opsForValue().multiSet(bulkData); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | @Override |
| | | public Integer getBomKeys(String orgCode){ |
| | | return redisTemplate.keys("BOM:BOM_"+orgCode+"*").size(); |
| | | } |
| | | } |