|
|
@@ -1,11 +1,14 @@
|
|
|
package cn.iocoder.yudao.module.mes.service.wm.returnsales;
|
|
|
|
|
|
+import cn.hutool.core.util.ObjUtil;
|
|
|
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.detail.MesWmReturnSalesDetailSaveReqVO;
|
|
|
+import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesDO;
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesDetailDO;
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesLineDO;
|
|
|
import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnsales.MesWmReturnSalesDetailMapper;
|
|
|
+import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnSalesStatusEnum;
|
|
|
import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService;
|
|
|
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
|
|
|
import jakarta.annotation.Resource;
|
|
|
@@ -17,8 +20,7 @@ import java.math.BigDecimal;
|
|
|
import java.util.List;
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
-import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_RETURN_SALES_DETAIL_NOT_EXISTS;
|
|
|
-import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_RETURN_SALES_DETAIL_QUANTITY_EXCEED;
|
|
|
+import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
|
|
|
|
|
|
/**
|
|
|
* MES 销售退货明细 Service 实现类
|
|
|
@@ -35,6 +37,9 @@ public class MesWmReturnSalesDetailServiceImpl implements MesWmReturnSalesDetail
|
|
|
@Resource
|
|
|
@Lazy
|
|
|
private MesWmReturnSalesLineService returnSalesLineService;
|
|
|
+ @Resource
|
|
|
+ @Lazy
|
|
|
+ private MesWmReturnSalesService returnSalesService;
|
|
|
|
|
|
@Resource
|
|
|
private MesWmWarehouseAreaService warehouseAreaService;
|
|
|
@@ -67,7 +72,10 @@ public class MesWmReturnSalesDetailServiceImpl implements MesWmReturnSalesDetail
|
|
|
@Override
|
|
|
public void deleteReturnSalesDetail(Long id) {
|
|
|
// 校验存在
|
|
|
- validateReturnSalesDetailExists(id);
|
|
|
+ MesWmReturnSalesDetailDO detail = validateReturnSalesDetailExists(id);
|
|
|
+ // 校验退货单为待上架状态才允许删除明细
|
|
|
+ validateReturnSalesStatusApproved(detail.getReturnId());
|
|
|
+
|
|
|
// 删除
|
|
|
returnSalesDetailMapper.deleteById(id);
|
|
|
}
|
|
|
@@ -92,10 +100,27 @@ public class MesWmReturnSalesDetailServiceImpl implements MesWmReturnSalesDetail
|
|
|
returnSalesDetailMapper.deleteByReturnId(returnId);
|
|
|
}
|
|
|
|
|
|
- private void validateReturnSalesDetailExists(Long id) {
|
|
|
- if (returnSalesDetailMapper.selectById(id) == null) {
|
|
|
+ @Override
|
|
|
+ public void deleteReturnSalesDetailByLineId(Long lineId) {
|
|
|
+ returnSalesDetailMapper.deleteByLineId(lineId);
|
|
|
+ }
|
|
|
+
|
|
|
+ private MesWmReturnSalesDetailDO validateReturnSalesDetailExists(Long id) {
|
|
|
+ MesWmReturnSalesDetailDO detail = returnSalesDetailMapper.selectById(id);
|
|
|
+ if (detail == null) {
|
|
|
throw exception(WM_RETURN_SALES_DETAIL_NOT_EXISTS);
|
|
|
}
|
|
|
+ return detail;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 校验退货单为待上架状态(明细操作仅允许在待上架状态)
|
|
|
+ */
|
|
|
+ private void validateReturnSalesStatusApproved(Long returnId) {
|
|
|
+ MesWmReturnSalesDO returnSales = returnSalesService.validateReturnSalesExists(returnId);
|
|
|
+ if (ObjUtil.notEqual(MesWmReturnSalesStatusEnum.APPROVED.getStatus(), returnSales.getStatus())) {
|
|
|
+ throw exception(WM_RETURN_SALES_STATUS_NOT_APPROVED);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -104,6 +129,8 @@ public class MesWmReturnSalesDetailServiceImpl implements MesWmReturnSalesDetail
|
|
|
private void validateReturnSalesDetailSaveData(MesWmReturnSalesDetailSaveReqVO reqVO) {
|
|
|
// 校验父数据存在
|
|
|
MesWmReturnSalesLineDO line = returnSalesLineService.validateReturnSalesLineExists(reqVO.getLineId());
|
|
|
+ // 校验退货单为待上架状态
|
|
|
+ validateReturnSalesStatusApproved(line.getReturnId());
|
|
|
// 校验仓库、库区、库位的关联关系
|
|
|
warehouseAreaService.validateWarehouseAreaExists(
|
|
|
reqVO.getWarehouseId(), reqVO.getLocationId(), reqVO.getAreaId());
|