package com.aps.core.service.impl;
|
|
import cn.hutool.core.util.IdUtil;
|
import com.aps.common.core.utils.DateUtils;
|
import com.aps.common.core.utils.poi.ExcelUtil;
|
import com.aps.common.security.utils.DictUtils;
|
import com.aps.common.security.utils.SecurityUtils;
|
import com.aps.core.domain.ApsMaterialProductGroupManagement;
|
import com.aps.core.mapper.ApsMaterialProductGroupManagementMapper;
|
import com.aps.core.service.IApsMaterialProductGroupManagementService;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import lombok.SneakyThrows;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.sql.Timestamp;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* 物料产品组数据管理Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2025-05-19
|
*/
|
@Service
|
public class ApsMaterialProductGroupManagementServiceImpl implements IApsMaterialProductGroupManagementService {
|
@Autowired
|
private ApsMaterialProductGroupManagementMapper apsMaterialProductGroupManagementMapper;
|
|
/**
|
* 查询物料产品组数据管理
|
*
|
* @param id 物料产品组数据管理主键
|
* @return 物料产品组数据管理
|
*/
|
@Override
|
public ApsMaterialProductGroupManagement selectApsMaterialProductGroupManagementById(Long id) {
|
return apsMaterialProductGroupManagementMapper.selectApsMaterialProductGroupManagementById(id);
|
}
|
|
/**
|
* 查询物料产品组数据管理列表
|
*
|
* @param apsMaterialProductGroupManagement 物料产品组数据管理
|
* @return 物料产品组数据管理
|
*/
|
@Override
|
public List<ApsMaterialProductGroupManagement> selectApsMaterialProductGroupManagementList(ApsMaterialProductGroupManagement apsMaterialProductGroupManagement) {
|
return apsMaterialProductGroupManagementMapper.selectApsMaterialProductGroupManagementList(apsMaterialProductGroupManagement);
|
}
|
|
/**
|
* 新增物料产品组数据管理
|
*
|
* @param apsMaterialProductGroupManagement 物料产品组数据管理
|
* @return 结果
|
*/
|
@Override
|
public int insertApsMaterialProductGroupManagement(ApsMaterialProductGroupManagement apsMaterialProductGroupManagement) {
|
apsMaterialProductGroupManagement.setId(IdUtil.getSnowflakeNextId());
|
apsMaterialProductGroupManagement.setCreateBy(SecurityUtils.getUsername());
|
apsMaterialProductGroupManagement.setCreateTime(DateUtils.getNowDate());
|
return apsMaterialProductGroupManagementMapper.insertApsMaterialProductGroupManagement(apsMaterialProductGroupManagement);
|
}
|
|
/**
|
* 修改物料产品组数据管理
|
*
|
* @param apsMaterialProductGroupManagement 物料产品组数据管理
|
* @return 结果
|
*/
|
@Override
|
public int updateApsMaterialProductGroupManagement(ApsMaterialProductGroupManagement apsMaterialProductGroupManagement) {
|
apsMaterialProductGroupManagement.setUpdateTime(DateUtils.getNowDate());
|
apsMaterialProductGroupManagement.setUpdateBy(SecurityUtils.getUsername());
|
return apsMaterialProductGroupManagementMapper.updateApsMaterialProductGroupManagement(apsMaterialProductGroupManagement);
|
}
|
|
/**
|
* 批量删除物料产品组数据管理
|
*
|
* @param ids 需要删除的物料产品组数据管理主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteApsMaterialProductGroupManagementByIds(Long[] ids) {
|
return apsMaterialProductGroupManagementMapper.deleteApsMaterialProductGroupManagementByIds(ids);
|
}
|
|
/**
|
* 删除物料产品组数据管理信息
|
*
|
* @param id 物料产品组数据管理主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteApsMaterialProductGroupManagementById(Long id) {
|
return apsMaterialProductGroupManagementMapper.deleteApsMaterialProductGroupManagementById(id);
|
}
|
|
@SneakyThrows
|
@Override
|
public int batchInsertApsMaterialProductGroupManagement(MultipartFile file) {
|
ExcelUtil<ApsMaterialProductGroupManagement> util = new ExcelUtil<>(ApsMaterialProductGroupManagement.class);
|
List<ApsMaterialProductGroupManagement> list = util.importExcel(file.getInputStream());
|
DictUtils.CacheValue cacheValue = DictUtils.getCacheValue("aps_factory");
|
DictUtils.CacheValue cacheDomain = DictUtils.getCacheValue("aps_domain");
|
Set<String> keys = new HashSet<>();
|
list.forEach(item -> {
|
item.setId(IdUtil.getSnowflakeNextId());
|
item.setDomain(cacheDomain.get(item.getDomain()));
|
item.setFactory(cacheValue.get(item.getFactory()));
|
item.setCreateBy(SecurityUtils.getUsername());
|
item.setCreateTime(DateUtils.getNowDate());
|
});
|
Collections.reverse(list);
|
list = list.stream()
|
.filter(item -> {
|
item.setKey(null);
|
if (!keys.contains(item.getKey())) {
|
keys.add(item.getKey());
|
return true;
|
}
|
return false;
|
})
|
.collect(Collectors.toList());
|
|
if (!list.isEmpty()) {
|
Set<String> facCodeKey = apsMaterialProductGroupManagementMapper.selectByFacOrMaterial(keys);
|
if (!facCodeKey.isEmpty()) {
|
Iterator<ApsMaterialProductGroupManagement> it = list.iterator();
|
while (it.hasNext()) {
|
ApsMaterialProductGroupManagement item = it.next();
|
if (facCodeKey.contains(item.getKey())) {
|
LambdaUpdateWrapper<ApsMaterialProductGroupManagement> wrapper = new LambdaUpdateWrapper<>();
|
wrapper.eq(ApsMaterialProductGroupManagement::getFactory, item.getFactory());
|
wrapper.eq(ApsMaterialProductGroupManagement::getMaterialCode, item.getMaterialCode());
|
item.setCreateBy(null);
|
item.setCreateTime(null);
|
item.setId(null);
|
item.setUpdateBy(SecurityUtils.getUsername());
|
item.setUpdateTime(new Timestamp(System.currentTimeMillis()));
|
apsMaterialProductGroupManagementMapper.update(item, wrapper);
|
it.remove();
|
}
|
}
|
}
|
|
if (!list.isEmpty()) {
|
apsMaterialProductGroupManagementMapper.insert(list);
|
}
|
}
|
return list.size();
|
|
}
|
}
|