云
4 天以前 f02d0df2f1dfc7a8b775cf50d45375e57628a5ef
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package cn.iocoder.yudao.module.mes.service.qc.ncr;
 
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ncr.MesQcNcrDO;
import cn.iocoder.yudao.module.mes.enums.qc.MesNcrDispositionEnum;
import org.springframework.stereotype.Component;
 
import java.util.Objects;
 
/** 库存隔离和销毁闭环尚未建立前,禁止通过入库伪造完成处置。 */
@Component
public class MesQcNcrStockClosureGuard {
 
    public void validateBeforeDispose(Integer disposition) {
        if (Objects.equals(disposition, MesNcrDispositionEnum.SCRAP.getType())) {
            throw new ServiceException(400, "报废处置暂不可执行:需先建立不合格品隔离入库、销毁确认及销毁出库闭环,避免重复入库或账实不符");
        }
        if (Objects.equals(disposition, MesNcrDispositionEnum.CONCESSION.getType())) {
            throw new ServiceException(400, "让步放行暂不可执行:需先完成来源单据、原批次和库存的放行闭环,避免重复入库或放行错误批次");
        }
    }
 
    public void validateBeforeClose(MesQcNcrDO ncr) {
        if (Objects.equals(ncr.getDisposition(), MesNcrDispositionEnum.SCRAP.getType())) {
            throw new ServiceException(400, "报废处理单暂不可关闭:尚未建立隔离库存的销毁确认和销毁出库闭环,请保留单据等待处理");
        }
        if (Objects.equals(ncr.getDisposition(), MesNcrDispositionEnum.CONCESSION.getType())) {
            throw new ServiceException(400, "让步放行处理单暂不可关闭:尚未完成来源单据、原批次和库存的放行核验,请保留单据等待处理");
        }
    }
}