package com.aps.core.service.impl.ApsPlate; import java.math.BigDecimal; import java.util.List; import cn.hutool.core.util.IdUtil; import com.aps.common.core.utils.DateUtils; import com.aps.common.security.utils.SecurityUtils; import com.aps.core.domain.*; import com.aps.core.domain.ApsPlate.ApsPlatePlan; import com.aps.core.domain.ApsPlate.ApsPlateStandardRequireBomStockDetail; import com.aps.core.mapper.ApsMaterialStorageManagementMapper; import jakarta.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.aps.core.mapper.ApsPlateStandardRequireBomStockDetailMapper; import com.aps.core.service.ApsPlate.IApsPlateStandardRequireBomStockDetailService; import org.springframework.transaction.annotation.Transactional; /** * ApsPlateStandardRequireBomStockDetailService业务层处理 * * @author zhl * @date 2025-05-06 */ @Service public class ApsPlateStandardRequireBomStockDetailServiceImpl implements IApsPlateStandardRequireBomStockDetailService { @Autowired private ApsPlateStandardRequireBomStockDetailMapper apsPlateStandardRequireBomStockDetailMapper; @Resource ApsMaterialStorageManagementMapper itemStorageMapper; @Resource ApsPlateStandardRequireBomStockDetailMapper plateBomStockDetailMapper; /** * 查询ApsPlateStandardRequireBomStockDetail * * @param id ApsPlateStandardRequireBomStockDetail主键 * @return ApsPlateStandardRequireBomStockDetail */ @Override public ApsPlateStandardRequireBomStockDetail selectApsPlateStandardRequireBomStockDetailById(Long id) { return apsPlateStandardRequireBomStockDetailMapper.selectApsPlateStandardRequireBomStockDetailById(id); } /** * 查询ApsPlateStandardRequireBomStockDetail列表 * * @param apsPlateStandardRequireBomStockDetail ApsPlateStandardRequireBomStockDetail * @return ApsPlateStandardRequireBomStockDetail */ @Override public List selectApsPlateStandardRequireBomStockDetailList(ApsPlateStandardRequireBomStockDetail apsPlateStandardRequireBomStockDetail) { return apsPlateStandardRequireBomStockDetailMapper.selectApsPlateStandardRequireBomStockDetailList(apsPlateStandardRequireBomStockDetail); } /** * 新增ApsPlateStandardRequireBomStockDetail * * @param apsPlateStandardRequireBomStockDetail ApsPlateStandardRequireBomStockDetail * @return 结果 */ @Override public int insertApsPlateStandardRequireBomStockDetail(ApsPlateStandardRequireBomStockDetail apsPlateStandardRequireBomStockDetail) { apsPlateStandardRequireBomStockDetail.setCreateTime(DateUtils.getNowDate()); return apsPlateStandardRequireBomStockDetailMapper.insertApsPlateStandardRequireBomStockDetail(apsPlateStandardRequireBomStockDetail); } /** * 修改ApsPlateStandardRequireBomStockDetail * * @param apsPlateStandardRequireBomStockDetail ApsPlateStandardRequireBomStockDetail * @return 结果 */ @Override public int updateApsPlateStandardRequireBomStockDetail(ApsPlateStandardRequireBomStockDetail apsPlateStandardRequireBomStockDetail) { apsPlateStandardRequireBomStockDetail.setUpdateTime(DateUtils.getNowDate()); return apsPlateStandardRequireBomStockDetailMapper.updateApsPlateStandardRequireBomStockDetail(apsPlateStandardRequireBomStockDetail); } /** * 批量删除ApsPlateStandardRequireBomStockDetail * * @param ids 需要删除的ApsPlateStandardRequireBomStockDetail主键 * @return 结果 */ @Override public int deleteApsPlateStandardRequireBomStockDetailByIds(Long[] ids) { return apsPlateStandardRequireBomStockDetailMapper.deleteApsPlateStandardRequireBomStockDetailByIds(ids); } /** * 删除ApsPlateStandardRequireBomStockDetail信息 * * @param id ApsPlateStandardRequireBomStockDetail主键 * @return 结果 */ @Override public int deleteApsPlateStandardRequireBomStockDetailById(Long id) { return apsPlateStandardRequireBomStockDetailMapper.deleteApsPlateStandardRequireBomStockDetailById(id); } /** * 计算物料剩余库存 并保存物料剩余库存明细。 * */ @Transactional @Override public void saveStorageAndDetail(ApsMaterialStorageManagement itemStorage, ApsPlatePlan plan, String bomLineId, String itemCode, String batchNum, BigDecimal deductionAmount, BigDecimal afterStockAmount, Long requireId , List stockDetailsList){ //itemStorageMapper.updateMaterialStorageByVersion(itemStorage.getId(), afterStockAmount,itemStorage.getVersion()); /*记录扣减明细*/ ApsPlateStandardRequireBomStockDetail bomStockDetail = ApsPlateStandardRequireBomStockDetail.builder() .id(IdUtil.getSnowflakeNextId()) .requireId(requireId) .requireTrackId(plan.getRequireId()) .bomLineId(bomLineId) .bomLineCode(itemCode) .beforeStockAmount(itemStorage.getRemainderStock()) .deductionAmount(deductionAmount) .afterStockAmount(afterStockAmount) .batchNumber(batchNum) .orgCode(itemStorage.getApplicableFactories()) .delFlag("0") .build(); bomStockDetail.setCreateBy(SecurityUtils.getUsername()); bomStockDetail.setCreateTime(DateUtils.getNowDate()); stockDetailsList.add(bomStockDetail); // plateBomStockDetailMapper.insertApsPlateStandardRequireBomStockDetail(bomStockDetail); /*更新内存中物料剩余库存*/ itemStorage.setRemainderStock(afterStockAmount); if(null== itemStorage.getVersion()){ itemStorage.setVersion(1); }else{ itemStorage.setVersion(itemStorage.getVersion()+1); } } }