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<ApsBomHeader> 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<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();
|
}
|
}
|