自动化立体仓库 - WMS系统
#
zyx
2024-06-06 b2a895946c2e261eec55e6e86daf44fb21825818
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -20,6 +20,7 @@
import com.zy.common.utils.Synchro;
import com.zy.system.entity.User;
import com.zy.system.service.SaasLogService;
import lombok.Synchronized;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -103,6 +104,7 @@
    private PlaQtyService plaQtyService;
    @Autowired
    private SaasLogService saasLogService;
@@ -1236,6 +1238,7 @@
    @Override
    @Transactional
    @Synchronized
    public void plaPakout(String brand, String locNo, String batch, Integer packageNo, String orderNo, String plaQtyId, String wrkNo, Double anfme, boolean isReplace) {
        Pla pla = plaService.selectByBatchAndPackageNo(batch, packageNo,brand);
@@ -1265,6 +1268,7 @@
        manPakOut.setCount(manPakOut.getCount() + anfme);
        if (manPakOut.getAnfme().equals(manPakOut.getCount())){
            manPakOut.setStatus(1);
            manPakOut.setUpdateTime(new Date());
            manPakOutService.updateById(manPakOut);
        }
@@ -1332,8 +1336,13 @@
        //还原旧物料状态
        Pla plaOld = plaService.selectByBatchAndPackageNo(manPakOut.getBatch(), Integer.parseInt(manPakOut.getBarcode()), manPakOut.getMaktx());
        //更新新物料信息
        plaNew.setQtyAnfme(plaOld.getQtyAnfme());
        plaNew.setStatus(plaOld.getStatus());
        plaService.updateById(plaNew);
        plaOld.setStatus(GlobleParameter.PLA_STATUS_1);
        plaOld.setQtyAnfme(0.0);
        plaOld.setQtyAnfme(plaOld.getQtyAnfme() - manPakOut.getCount());
        plaService.updateById(plaOld);
@@ -1348,8 +1357,55 @@
        manPakOut.setMaktx(plaNew.getBrand());
        manPakOut.setBatch(plaNew.getBatch());
        manPakOut.setBarcode(plaNew.getPackageNo() + "");
        manPakOut.setUpdateTime(new Date());
        manPakOutService.updateById(manPakOut);
    }
    @Override
    public List<Pla> pdaSelectInfmt(String barcode) {
        EntityWrapper<Pla> plaEntityWrapper = new EntityWrapper<>();
        String[] split = barcode.split(";");
        if (split.length == 4){
            plaEntityWrapper.eq("brand",split[0]);
            plaEntityWrapper.eq("batch",split[1]);
            plaEntityWrapper.eq("package_no",split[2]);
            plaEntityWrapper.eq("line",split[3]);
        }else if (split.length == 1){
            Node node = nodeService.selectOne(new EntityWrapper<Node>().eq("name", barcode));
            if (Cools.isEmpty(node)){
                throw new CoolException("请检查输入的库位码");
            }
            plaEntityWrapper.eq("loc_no",barcode);
            plaEntityWrapper.notLike("status","全部出库");
        }else {
            throw new CoolException("条码信息有误!");
        }
        List<Pla> plaList = plaService.selectList(plaEntityWrapper);
        if (Cools.isEmpty(plaList)){
            throw new CoolException("未查询到库存物料信息");
        }
        return plaList;
    }
    public boolean checkMaximum(String locNo, int packageNum){
        Node node = nodeService.selectByUuid(locNo);
        Node nodeParent = nodeService.selectById(node.getParentId());
        if(Cools.isEmpty(nodeParent.getMajor())){
            return true;
        }
        //当前库存包数
        int count = plaService.selectCount(new EntityWrapper<Pla>().eq("loc_no", locNo)
                .notIn("status", "全部出库"));
        if(nodeParent.getMajor() < count + packageNum){
            return false;
        }
        return true;
    }
}