package com.aps.core.service.impl; import com.alibaba.fastjson2.JSONArray; 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.beans.factory.annotation.Autowired; 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业务层处理 * * @author zhl * @date 2025-05-06 */ @Service public class ApsBomHeaderServiceImpl implements IApsBomHeaderService { @Autowired private ApsBomHeaderMapper apsBomHeaderMapper; @Autowired public RedisTemplate redisTemplate; /** * 查询BOM Header 数据管理 * * @param id BOM Header 数据管理主键 * @return BOM Header 数据管理 */ @Override public ApsBomHeader selectApsBomHeaderById(Long id) { return apsBomHeaderMapper.selectApsBomHeaderById(id); } /** * 查询BOM Header 数据管理列表 * * @param apsBomHeader BOM Header 数据管理 * @return BOM Header 数据管理 */ @Override public List selectApsBomHeaderList(ApsBomHeader apsBomHeader) { return apsBomHeaderMapper.selectApsBomHeaderList(apsBomHeader); } /** * 新增BOM Header 数据管理 * * @param apsBomHeader BOM Header 数据管理 * @return 结果 */ @Override public int insertApsBomHeader(ApsBomHeader apsBomHeader) { apsBomHeader.setCreateTime(DateUtils.getNowDate()); return apsBomHeaderMapper.insertApsBomHeader(apsBomHeader); } /** * 修改BOM Header 数据管理 * * @param apsBomHeader BOM Header 数据管理 * @return 结果 */ @Override public int updateApsBomHeader(ApsBomHeader apsBomHeader) { apsBomHeader.setUpdateTime(DateUtils.getNowDate()); return apsBomHeaderMapper.updateApsBomHeader(apsBomHeader); } /** * 批量删除BOM Header 数据管理 * * @param ids 需要删除的BOM Header 数据管理主键 * @return 结果 */ @Override public int deleteApsBomHeaderByIds(Long[] ids) { return apsBomHeaderMapper.deleteApsBomHeaderByIds(ids); } /** * 删除BOM Header 数据管理信息 * * @param id BOM Header 数据管理主键 * @return 结果 */ @Override public int deleteApsBomHeaderById(Long id) { return apsBomHeaderMapper.deleteApsBomHeaderById(id); } /** * 设置BOM数据到Redis * @return */ @Override public boolean setBomDataToRedis(String orgCode) { try { Set keys = redisTemplate.keys("BOM:BOM_*"); if (keys != null && !keys.isEmpty()) { redisTemplate.delete(keys); } List bomRedisData = apsBomHeaderMapper.selectBomRedisData(orgCode); Map> groupedByMainItemCode = bomRedisData.stream().collect(Collectors.groupingBy(ApsBom::getMainItemCode)); Map bulkData = new HashMap<>(); for (Map.Entry> 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(); } }