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 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 util = new ExcelUtil<>(ApsMaterialProductGroupManagement.class); List list = util.importExcel(file.getInputStream()); DictUtils.CacheValue cacheValue = DictUtils.getCacheValue("aps_factory"); DictUtils.CacheValue cacheDomain = DictUtils.getCacheValue("aps_domain"); Set 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()); }); for (int i = list.size() - 1; i >= 0; --i) { list.get(i).setKey(null); if (!keys.contains(list.get(i).getKey())) { keys.add(list.get(i).getKey()); } else { list.remove(i); } } if (!list.isEmpty()) { Set facCodeKey = apsMaterialProductGroupManagementMapper.selectByFacOrMaterial(keys); if (!facCodeKey.isEmpty()) { Iterator it = list.iterator(); while (it.hasNext()) { ApsMaterialProductGroupManagement item = it.next(); if (facCodeKey.contains(item.getKey())) { LambdaUpdateWrapper 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(); } }