| | |
| | | package com.ruoyi.business.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.business.dto.OfficialInventoryDto; |
| | | import com.ruoyi.business.dto.PendingInventoryDto; |
| | | import com.ruoyi.business.entity.InputInventoryRecord; |
| | | import com.ruoyi.business.entity.InventorySummary; |
| | | import com.ruoyi.business.mapper.InputInventoryRecordMapper; |
| | | import com.ruoyi.business.mapper.InventorySummaryMapper; |
| | | import com.ruoyi.business.service.InputInventoryRecordService; |
| | | import com.ruoyi.business.service.InventorySummaryService; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.Comparator; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | import static com.ruoyi.business.constant.InventoryRecordConstant.OFFICIAL_INVENTORY; |
| | | import static com.ruoyi.business.constant.InventoryRecordConstant.PENDING_INVENTORY; |
| | |
| | | @RequiredArgsConstructor |
| | | public class InputInventoryRecordServiceImpl extends ServiceImpl<InputInventoryRecordMapper, InputInventoryRecord> implements InputInventoryRecordService { |
| | | private final InputInventoryRecordMapper inputInventoryRecordMapper; |
| | | private final InventorySummaryService inventorySummaryService; |
| | | private final InventorySummaryMapper inventorySummaryMapper; |
| | | |
| | | @Override |
| | | public int insertInputInventoryRecord(PendingInventoryDto pendingInventoryDto, OfficialInventoryDto officialInventoryDto, BigDecimal quantity) { |
| | |
| | | } |
| | | inputInventoryRecord.setQuantity(quantity); |
| | | |
| | | return inputInventoryRecordMapper.insert(inputInventoryRecord); |
| | | inputInventoryRecordMapper.insert(inputInventoryRecord); |
| | | |
| | | // 更新库存 |
| | | // inventorySummaryService.updateInventory(pendingInventoryDto, officialInventoryDto); |
| | | return inventorySummaryService.updateInventory(pendingInventoryDto, officialInventoryDto); |
| | | } |
| | | |
| | | @Override |
| | | public int deleteInputInventoryRecord(Long[] ids) { |
| | | public int deleteInputInventoryRecord(List<Long> ids) { |
| | | if (CollectionUtils.isNotEmpty(ids)) { |
| | | List<InputInventoryRecord> inputInventoryRecords = inputInventoryRecordMapper.selectBatchIds(ids); |
| | | // 根据id进行降序排序 |
| | | List<InputInventoryRecord> inputInventoryRecordList = inputInventoryRecords.stream() |
| | | .sorted(Comparator.comparing(InputInventoryRecord::getId).reversed()) |
| | | .toList(); |
| | | |
| | | String InventoryType = inputInventoryRecords.get(0).getInventoryType(); |
| | | List<Long> inventoryIds = inputInventoryRecords.stream().map(InputInventoryRecord::getInventoryId).toList(); |
| | | List<InventorySummary> inventorySummaries = inventorySummaryMapper.selectList(new LambdaQueryWrapper<InventorySummary>() |
| | | .eq(InventorySummary::getInventoryType, InventoryType) |
| | | .in(InventorySummary::getInventoryId, inventoryIds)); |
| | | if (CollectionUtils.isNotEmpty(inventorySummaries)) { |
| | | List<InventorySummary> updates = new ArrayList<>(); |
| | | for (InventorySummary inventorySummary : inventorySummaries) { |
| | | for (InputInventoryRecord inputInventoryRecord : inputInventoryRecords) { |
| | | // 如果节点上的入库记录id大于变更的id,说明此id前所有入库记录都要重新计算 |
| | | if (Objects.equals(inventorySummary.getInventoryId(), inputInventoryRecord.getInventoryId()) && inventorySummary.getInputEndRecordId() > inputInventoryRecord.getId()) { |
| | | inventorySummary.setInputEndRecordId(inputInventoryRecord.getId()); |
| | | updates.add(inventorySummary); |
| | | } |
| | | } |
| | | |
| | | } |
| | | // 重置他们的节点最终id |
| | | inventorySummaryMapper.updateById(updates); |
| | | } |
| | | } |
| | | // todo 重新计算节点库存 |
| | | // todo 更新库存实施数据 |
| | | |
| | | |
| | | |
| | | |
| | | return 0; |
| | | // 删除入库记录 |
| | | return inputInventoryRecordMapper.deleteByIds(ids); |
| | | } |
| | | } |