自动化立体仓库 - WMS系统
pang.jiabao
2024-06-26 f5f7f213ad99c626d19e16af44ae965e5ead938e
src/main/java/com/zy/common/web/WcsController.java
@@ -11,6 +11,7 @@
import com.zy.common.model.StartupDto;
import com.zy.common.service.CommonService;
import com.zy.common.web.param.SearchLocParam;
import lombok.Synchronized;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@@ -74,10 +75,21 @@
            return R.error("高低检测信号不能为空");
        }
        // 源站点状态检测
        BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
        if (Cools.isEmpty(sourceStaNo)){
            return R.error("入库站点不存在");
        }
        sourceStaNo.setLocType1(param.getLocType1());
        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
        locTypeDto.setLocType1(param.getLocType1());
        // 限制只能有一个在设备上走状态
        int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("wrk_sts", 2).eq("source_sta_no", param.getSourceStaNo()));
        if (count > 0) {
            return R.error("已有在设备上走工作档");
        }
        StartupDto dto = null;
        switch (param.getIoType()) {
@@ -90,7 +102,7 @@
            default:
                break;
        }
        log.info("WCS入库接口返参:{},托盘码:{}", dto, param.getBarcode());
        return R.ok().add(dto);
    }
@@ -103,7 +115,12 @@
        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
        // 检索库位
        List<String> matNos = pltBarcodes.stream().map(PltBarcode::getMatNo).distinct().collect(Collectors.toList());
        StartupDto dto = commonService.getLocNo(1, 1, devpNo, false, matNos, locTypeDto,0);
        StartupDto dto;
        if (devpNo == 304) {
            dto = commonService.getLocNoBy304(barcode);
        } else {
            dto = commonService.getLocNo(1, 1, devpNo, false, matNos, locTypeDto,0);
        }
        int workNo = dto.getWorkNo();
        // 生成工作档
@@ -134,7 +151,7 @@
        // 生成工作档明细
        List<MatCodeCountDto> matDtos = new ArrayList<>();
        pltBarcodes.forEach(elem -> {
            matDtos.add(new MatCodeCountDto(elem.getBillNo(), elem.getSeqNo(), elem.getMatNo(), elem.getQty()));
            matDtos.add(new MatCodeCountDto(elem.getBillNo(), elem.getSeqNo(), elem.getMatNo(), elem.getSupplier(), elem.getQty(),elem.getSource(),elem.getVendor(),elem.getMemo()));
            //更新组托数据状态为入库中
            Wrapper<PltBarcode> wrapper = new EntityWrapper<PltBarcode>().eq("barcode", elem.getBarcode())
@@ -165,12 +182,18 @@
        return dto;
    }
    @Synchronized
    @Transactional
    public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto) {
        // 源站点状态检测
        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
        // 检索库位
        StartupDto dto = commonService.getLocNo(1, 10, devpNo, true, null, locTypeDto,0);
        StartupDto dto;
        if (devpNo >= 300) {
            dto = commonService.emptyIngetLocNo(devpNo);
        } else {
            dto = commonService.getLocNo(1, 10, devpNo, true, null, locTypeDto, 0);
        }
        int workNo = dto.getWorkNo();
        // 生成工作档
        WrkMast wrkMast = new WrkMast();