package zy.cloud.wms.common.service; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import zy.cloud.wms.common.utils.VersionUtils; import zy.cloud.wms.manager.entity.*; import zy.cloud.wms.manager.service.LocDetlService; import zy.cloud.wms.manager.service.MatService; import zy.cloud.wms.manager.service.PakoutService; import zy.cloud.wms.manager.service.PriorService; import java.util.Date; import java.util.List; /** * Created by vincent on 2021/3/1 */ @Slf4j @Service("mainService") public class MainService { @Autowired private MatService matService; @Autowired private LocDetlService locDetlService; @Autowired private PakoutService pakoutService; @Autowired private PriorService priorService; @Autowired private SnowflakeIdWorker snowflakeIdWorker; @Transactional public void stockOutProcess(List list) { if (Cools.isEmpty(list)) { return; } Date now = new Date(); for (CustOrder custOrder : list) { // 判断物料是否存在 Mat mat = matService.selectByMatnr(custOrder.getUserCode()); if (null == mat) { throw new CoolException(custOrder.getUserCode() + "物料尚未更新。" + custOrder.getNumber() +"单据因此中断!"); } // 根据推荐库位查找库存 List priors = priorService.selectList(new EntityWrapper().eq("matnr", mat.getMatnr()).orderBy("prio")); if (!Cools.isEmpty(priors)) { for (Prior prior : priors) { LocDetl locDetl = locDetlService.getLocDetl(prior.getNodeId(), prior.getMatnr()); if (null != locDetl && locDetl.getAnfme() > 0) { // 保存出库通知单 Pakout pakout = new Pakout(); pakout.setWrkSts(1L); // pakout.setAnfme(); pakout.setZpallet(locDetl.getZpallet()); pakout.setLocNo(locDetl.getLocNo()); pakout.setNodeId(locDetl.getNodeId()); pakout.setWrkNo(String.valueOf(snowflakeIdWorker.nextId())); VersionUtils.setPakout(pakout, mat); pakout.setCreateTime(now); pakout.setUpdateTime(now); pakout.setStatus(1); if (!pakoutService.insert(pakout)) { throw new CoolException("保存出库通知单失败"); } } } } } } }