|
|
@@ -516,6 +516,80 @@ public class CenterOrderPlanServiceImpl extends ServiceImpl<CenterOrderPlanMappe
|
|
|
return r;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public R savePlanCost(List<CenterShipCost> costList) {
|
|
|
+ if (CollectionUtils.isEmpty(costList)) {
|
|
|
+ return R.fail("数据不能为空");
|
|
|
+ }
|
|
|
+ BladeUser bladeUser = AuthUtil.getUser();
|
|
|
+ LocalDateTime nowDate = LocalDateTime.now();
|
|
|
+ costList.forEach(cost -> {
|
|
|
+ cost.setTenantId(bladeUser.getTenantId());
|
|
|
+ cost.setUpdateUser(bladeUser.getUserId());
|
|
|
+ cost.setUpdateTime(nowDate);
|
|
|
+ });
|
|
|
+ boolean isSuccess = centerShipCostService.saveOrUpdateBatch(costList);
|
|
|
+ return isSuccess ? R.success("保存成功") : R.fail("保存失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public R<String> revokePlanOut(Long id) {
|
|
|
+ CenterOrderPlan centerOrderPlan = baseMapper.selectById(id);
|
|
|
+ if (!CommonEnum.ONE.info.equals(centerOrderPlan.getStatus())) {
|
|
|
+ return R.fail("非提交状态,不能撤销");
|
|
|
+ }
|
|
|
+ BladeUser bladeUser = AuthUtil.getUser();
|
|
|
+ List<CenterOrderPlanItem> centerOrderPlanItemList = centerOrderPlanItemService.list(new LambdaQueryWrapper<CenterOrderPlanItem>()
|
|
|
+ .eq(CenterOrderPlanItem::getTenantId, bladeUser.getTenantId()).eq(CenterOrderPlanItem::getIsDeleted, NumberEnum.Zero.number)
|
|
|
+ .eq(CenterOrderPlanItem::getPid, id));
|
|
|
+ if (CollectionUtils.isEmpty(centerOrderPlanItemList)) {
|
|
|
+ return R.fail("未找到出库明细数据,请刷新后重试");
|
|
|
+ }
|
|
|
+ List<CenterStockDesc> centerStockDescList = centerStockDescService.list(new LambdaQueryWrapper<CenterStockDesc>()
|
|
|
+ .eq(CenterStockDesc::getTenantId, bladeUser.getTenantId())
|
|
|
+ .eq(CenterStockDesc::getIsDeleted, 0)
|
|
|
+ .eq(CenterStockDesc::getCustomerId, centerOrderPlan.getCustomerId())
|
|
|
+ .eq(CenterStockDesc::getStorageId, centerOrderPlan.getStorageId())
|
|
|
+ .in(CenterStockDesc::getGoodsId, centerOrderPlanItemList.stream().map(CenterOrderPlanItem::getGoodsId).distinct().collect(Collectors.toList())));
|
|
|
+ List<CenterStockDesc> insertOrUpdateList = new ArrayList<>();
|
|
|
+ Map<String, List<CenterOrderPlanItem>> mapList = centerOrderPlanItemList.stream().filter(item -> !NumberEnum.ONE.number.equals(item.getIsDeleted()))
|
|
|
+ .collect(Collectors.groupingBy(plan -> plan.getBillId() + "-" + plan.getGoodsId() + "-" + plan.getDot() + "-" + plan.getRegionId()));
|
|
|
+ for (Map.Entry<String, List<CenterOrderPlanItem>> mapData : mapList.entrySet()) {
|
|
|
+ String[] params = mapData.getKey().split("-");
|
|
|
+ Long planId = Long.valueOf(params[0]);
|
|
|
+ Long goodsId = Long.valueOf(params[1]);
|
|
|
+ String dot = params[2];
|
|
|
+ Long regionId = Long.valueOf(params[3]);
|
|
|
+ CenterStockDesc desc = centerStockDescList.stream().filter(item -> item.getPlanId().equals(planId) && item.getGoodsId().equals(goodsId)
|
|
|
+ && item.getDot().equals(dot) && item.getRegionId().equals(regionId)).findFirst().orElse(null);
|
|
|
+ if (Objects.isNull(desc)) {
|
|
|
+ throw new RuntimeException("缺少库存数据,请联系管理员");
|
|
|
+ }
|
|
|
+ BigDecimal sum = mapData.getValue().stream().map(CenterOrderPlanItem::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ insertOrUpdateList.add(desc);
|
|
|
+ desc.setBalanceQuantity(desc.getBalanceQuantity().add(sum));
|
|
|
+ desc.setVersion(desc.getVersion() + 1);
|
|
|
+ desc.setUpdateUser(bladeUser.getUserId());
|
|
|
+ desc.setUpdateTime(new Date());
|
|
|
+ }
|
|
|
+ boolean isSuccess = centerStockDescService.saveOrUpdateBatch(insertOrUpdateList);
|
|
|
+ if (!isSuccess) {
|
|
|
+ throw new RuntimeException("撤销失败,请退出重试");
|
|
|
+ }
|
|
|
+ CenterOrderPlan updatePlan = new CenterOrderPlan();
|
|
|
+ updatePlan.setId(id);
|
|
|
+ updatePlan.setStatus(CommonEnum.ZERO.info);
|
|
|
+ updatePlan.setUpdateTime(new Date());
|
|
|
+ updatePlan.setUpdateUser(bladeUser.getUserId());
|
|
|
+ updatePlan.setVersion(centerOrderPlan.getVersion() + 1);
|
|
|
+ int updateCount = baseMapper.updateById(updatePlan);
|
|
|
+ if (updateCount <= 0) {
|
|
|
+ throw new RuntimeException("撤销失败,请退出重试");
|
|
|
+ }
|
|
|
+ return R.success("撤销成功");
|
|
|
+ }
|
|
|
+
|
|
|
private R<CenterOrderPlan> insertOrUpdatePlan (CenterOrderPlanVo centerOrderPlanVo, BladeUser bladeUser,
|
|
|
List<CenterOrderPlanItem> centerOrderPlanItemList) {
|
|
|
CenterOrderPlan insertCenterOrderPlan = new CenterOrderPlan();
|