Browse Source

撤销与保存费用明细接口

liyuan 3 months ago
parent
commit
45185fb292

+ 1 - 1
blade-service-api/tire-center-warehouse-api/src/main/java/com/ecp/tire/center/warehouse/api/ship/entity/CenterShipCost.java

@@ -72,7 +72,7 @@ public class CenterShipCost implements Serializable {
 	 * 是否删除
 	 * 1 删除
 	 */
-	@ApiModelProperty(value = "单据id")
+	@ApiModelProperty(value = "是否删除")
 	private Integer isDeleted;
 	/**
 	 * 单据类型 1 入库、2出库

+ 12 - 0
blade-service/tire-center-warehouse/src/main/java/com/ecp/tire/center/warehouse/plan/controller/CenterOrderPlanController.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.ecp.tire.center.warehouse.api.plan.entity.CenterOrderPlan;
 import com.ecp.tire.center.warehouse.api.plan.vo.CenterOrderPlanVo;
+import com.ecp.tire.center.warehouse.api.ship.entity.CenterShipCost;
 import com.ecp.tire.center.warehouse.api.stock.vo.CenterExportPlanInVo;
 import com.ecp.tire.center.warehouse.api.stock.vo.CenterStockImportCodeExcel;
 import com.ecp.tire.center.warehouse.api.storage.vo.PlanAuditVo;
@@ -152,4 +153,15 @@ public class CenterOrderPlanController{
 	}
 
 
+	@PostMapping("/savePlanCost")
+	public R savePlanCost(@RequestBody List<CenterShipCost> costList) {
+		return centerOrderPlanService.savePlanCost(costList);
+	}
+
+	@PostMapping("/revokePlanOut")
+	@RepeatSubmit
+	public R<String> revokePlanOut(@RequestParam("id") Long id) {
+		return centerOrderPlanService.revokePlanOut(id);
+	}
+
 }

+ 74 - 0
blade-service/tire-center-warehouse/src/main/java/com/ecp/tire/center/warehouse/plan/impl/CenterOrderPlanServiceImpl.java

@@ -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();

+ 17 - 0
blade-service/tire-center-warehouse/src/main/java/com/ecp/tire/center/warehouse/plan/service/ICenterOrderPlanService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ecp.tire.center.warehouse.api.plan.entity.CenterOrderPlan;
 import com.ecp.tire.center.warehouse.api.plan.vo.CenterOrderPlanVo;
+import com.ecp.tire.center.warehouse.api.ship.entity.CenterShipCost;
 import com.ecp.tire.center.warehouse.api.stock.vo.CenterExportPlanInVo;
 import com.ecp.tire.center.warehouse.api.storage.vo.PlanAuditVo;
 import org.springblade.core.mp.support.Query;
@@ -92,4 +93,20 @@ public interface ICenterOrderPlanService extends IService<CenterOrderPlan> {
 	 * @return 结果
 	 */
 	R<String> revokePlanIn(Long id);
+
+	/**
+	 * 保存计划费用
+	 *
+	 * @param costList 费用信息
+	 * @return 结果
+	 */
+	R savePlanCost(List<CenterShipCost> costList);
+
+	/**
+	 * 撤销出库计划
+	 *
+	 * @param id 出库计划id
+	 * @return 结果
+	 */
+	R<String> revokePlanOut(Long id);
 }