自动化立体仓库 - WMS系统
6efbf154b3ed88d376763b9d9807256c7bd5eaeb..c528736e1c65a8a49277efeefeca257efddeb34a
4 天以前 skyouc
no message
c52873 对比 | 目录
4 天以前 skyouc
no message
9c5c1d 对比 | 目录
4 天以前 skyouc
no message
49857a 对比 | 目录
4 天以前 skyouc
no message
937689 对比 | 目录
4 天以前 skyouc
no message
6af7cd 对比 | 目录
4 天以前 skyouc
no message
764d12 对比 | 目录
7个文件已修改
209 ■■■■■ 已修改文件
src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OutController.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/QueryTaskParam.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/WorkMastScheduler.java 87 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java
@@ -193,37 +193,40 @@
                mast.setWrkSts(4L);
            } else if (mast.getIoType() == 101 || mast.getIoType() == 110 || mast.getIoType() == 103 || mast.getIoType() == 104 || mast.getIoType() == 107) {
                //TODO 恢复正常后,这里代码要注释掉
                if (mast.getIoType() == 103  || mast.getIoType() == 107) {
                    List<WrkDetl> wrkDetls103 = wrkDetlService
                            .selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", mast.getWrkNo()));
                    if (wrkDetls103.isEmpty()) {
                        throw new CoolException("拣料出库 ===>> 更新订单完成数量失败; [workNo=" + mast.getWrkNo());
                    }
                    for (WrkDetl wrkDetl : wrkDetls103) {
                        // 更新订单完成数量
                        OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
                                wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                                wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                        if (orderDetlPakout == null) {
                            orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
                if (mast.getWrkSts() != 14) {
                    //TODO 恢复正常后,这里代码要注释掉
                    if (mast.getIoType() == 103) {
                        List<WrkDetl> wrkDetls103 = wrkDetlService
                                .selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", mast.getWrkNo()));
                        if (wrkDetls103.isEmpty()) {
                            throw new CoolException("拣料出库 ===>> 更新订单完成数量失败; [workNo=" + mast.getWrkNo());
                        }
                        for (WrkDetl wrkDetl : wrkDetls103) {
                            // 更新订单完成数量
                            OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
                                    wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                                    wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                    wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                        }
                        if (!Cools.isEmpty(orderDetlPakout)) {
                            if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
                                    wrkDetl.getMatnr(),
                                    orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                                    wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                    wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
                                    wrkDetl.getAnfme())) {
                                throw new CoolException("全板出库 ===>> 更新订单完成数量失败; [workNo=" + mast.getWrkNo());
                            if (orderDetlPakout == null) {
                                orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
                                        wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                                        wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                            }
                            if (!Cools.isEmpty(orderDetlPakout)) {
                                if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
                                        wrkDetl.getMatnr(),
                                        orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                                        wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
                                        wrkDetl.getAnfme())) {
                                    throw new CoolException("全板出库 ===>> 更新订单完成数量失败; [workNo=" + mast.getWrkNo());
                                }
                            }
                        }
                    }
                    mast.setWrkSts(14L);
                }
                mast.setWrkSts(14L);
            }
            if (!wrkMastService.updateById(mast)) {
                throw new CoolException("任务状态修改失败!!");
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -11,6 +11,8 @@
import com.zy.asrs.entity.param.*;
import com.zy.asrs.mapper.ReportQueryMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.service.impl.BasStationDetlServiceImpl;
import com.zy.asrs.service.impl.BasStationServiceImpl;
import com.zy.common.model.DetlDto;
import com.zy.common.web.BaseController;
import lombok.extern.slf4j.Slf4j;
@@ -51,6 +53,10 @@
    private MatService matService;
    @Autowired
    private WaitPakinService waitPakinService;
    @Autowired
    private BasStationServiceImpl basStationService;
    @Autowired
    private BasStationDetlService basStationDetlService;
    /**
@@ -81,20 +87,31 @@
        if (Cools.isEmpty(param)) {
            return R.parse(BaseRes.PARAM);
        }
        if (Cools.isEmpty(param.getTaskNo())) {
            return R.error("任务号[taskNo]不能为空");
        }
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",param.getTaskNo()));
        if (wrkMast == null) {
            return R.error("任务不存在");
        }
        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(Integer.valueOf(param.getTaskNo()));
        HashMap<String, Object> map = new HashMap<>();
        map.put("taskNo", param.getTaskNo());
        map.put("ioType", wrkMast.getIoType());
        map.put("wrkDetls", wrkDetls);
        if (param.getTaskType().equals("crn")) {
            if (Cools.isEmpty(param.getTaskNo())) {
                return R.error("任务号[taskNo]不能为空");
            }
            WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",param.getTaskNo()));
            if (wrkMast == null) {
                return R.error("任务不存在");
            }
            List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(Integer.valueOf(param.getTaskNo()));
            map.put("taskNo", param.getTaskNo());
            map.put("ioType", wrkMast.getIoType());
            map.put("wrkDetls", wrkDetls);
        } else {
            BasStation basStation = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", param.getAgvSite()));
            if (Objects.isNull(basStation)) {
                return R.error("站点不存在,请联系管理员检查站点信息!!");
            }
            List<BasStationDetl> basStationDetls = basStationDetlService.selectList(new EntityWrapper<BasStationDetl>().eq("dev_no", param.getAgvSite()));
            map.put("taskNo", param.getAgvSite());
            map.put("ioType", 1);
            map.put("wrkDetls", basStationDetls);
        }
        return R.ok().add(map);
    }
src/main/java/com/zy/asrs/controller/OutController.java
@@ -7,12 +7,14 @@
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.api.enums.LocAreaType;
import com.zy.api.enums.MatLocType;
import com.zy.asrs.entity.*;
import com.zy.asrs.enums.LocStsType;
import com.zy.asrs.service.*;
import com.zy.asrs.service.impl.BasAreasServiceImpl;
import com.zy.asrs.service.impl.BasStationServiceImpl;
import com.zy.asrs.service.impl.LocCacheServiceImpl;
import com.zy.asrs.service.impl.MatServiceImpl;
import com.zy.common.model.LocDto;
import com.zy.common.model.TaskDto;
import com.zy.common.web.BaseController;
@@ -61,6 +63,8 @@
    private LocCacheServiceImpl locCacheService;
    @Autowired
    private BasStationServiceImpl basStationService;
    @Autowired
    private MatService matService;
    @PostMapping("/out/pakout/orderDetlIds/auth")
@@ -169,10 +173,20 @@
                        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo()));
                        locDto.setFrozen(locDetl.getFrozen());
                        locDto.setFrozenLoc(locMast.getFrozen());
                        List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), currentIssue >= available ? 101 : 103);
                        locDto.setStaNos(staNos);
                        locDto.setBrand(orderDetl.getBrand());
                        Mat mat = matService.selectOne(new EntityWrapper<Mat>()
                                .eq("matnr", locDetl.getMatnr())
                                .eq("supp_code", locDetl.getSuppCode()));
                        if (Objects.isNull(mat)) {
                            throw new CoolException("物料基础信息不存在!!");
                        }
                        if (!Objects.isNull(mat.getLocType()) && mat.getLocType().equals(Long.parseLong(MatLocType.EO_HOLDING.type))) {
                            locDto.setStaNos(Arrays.asList(240));
                        } else {
                            List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), currentIssue >= available ? 101 : 103);
                            locDto.setStaNos(staNos);
                        }
                        locDto.setBrand(orderDetl.getBrand());
                        locDto.setStandby1(orderDetl.getStandby1());
                        locDto.setStandby2(orderDetl.getStandby2());
                        locDto.setStandby3(orderDetl.getStandby3());
src/main/java/com/zy/asrs/entity/param/QueryTaskParam.java
@@ -7,4 +7,8 @@
    private String taskNo;
    private String taskType;
    private String agvSite;
}
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -1731,7 +1731,7 @@
            throw new CoolException("容器编码未维护,请维护后再操作!!");
        }
        Integer whsType = 2;
        Integer whsType = 1;
        Short lcoType = 1;
        //用于判断料箱托盘,料箱,笼框
        if (!container.getType().equals(ContainerType.CONTAINER_TYPE_BOX.type)) {
src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -20,10 +20,8 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
 * Created by vincent on 2020/7/7
@@ -83,8 +81,6 @@
            }
        }
    }
    /**
     * 任务自动下发出库任务
     *
@@ -97,29 +93,70 @@
        if (wrkMasts.isEmpty()) {
            return;
        }
//        Collections.shuffle(wrkMasts);
        wrkMasts.forEach(wrkMast -> {
            WorkTaskParams params = new WorkTaskParams();
            if (wrkMast.getIoType().equals(11)) {
                CompleteParam param = new CompleteParam();
                param.setTaskNo(wrkMast.getWrkNo() + "");
                param.setSourceLocNo(wrkMast.getSourceLocNo());
                param.setLocNo(wrkMast.getLocNo());
//                param.set
                mobileService.taskMove(param, 9527L);
            } else if (wrkMast.getIoType() > 100) {
                params.setType("out")
                        .setTaskNo(wrkMast.getWrkNo() + "")
                        .setLocNo(wrkMast.getSourceLocNo())
                        .setBarcode(wrkMast.getBarcode())
                        .setStaNo(wrkMast.getStaNo())
                        .setTaskPri(wrkMast.getIoPri().intValue());
                wcsApiService.pubWrkToWcs(params);
        Map<Integer, List<WrkMast>> listMap = wrkMasts.stream().collect(Collectors.groupingBy(WrkMast::getCrnNo));
        listMap.keySet().forEach(key -> {
            List<WrkMast> wrkMasts1 = listMap.get(key);
            Collections.shuffle(wrkMasts1);
            Integer crnNos = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", key));
            if (crnNos < 6) {
                wrkMasts1.forEach(wrkMast -> {
                    WorkTaskParams params = new WorkTaskParams();
                    if (wrkMast.getIoType().equals(11)) {
                        CompleteParam param = new CompleteParam();
                        param.setTaskNo(wrkMast.getWrkNo() + "");
                        param.setSourceLocNo(wrkMast.getSourceLocNo());
                        param.setLocNo(wrkMast.getLocNo());
                        mobileService.taskMove(param, 9527L);
                    } else if (wrkMast.getIoType() > 100) {
                        params.setType("out")
                                .setTaskNo(wrkMast.getWrkNo() + "")
                                .setLocNo(wrkMast.getSourceLocNo())
                                .setBarcode(wrkMast.getBarcode())
                                .setStaNo(wrkMast.getStaNo())
                                .setTaskPri(wrkMast.getIoPri().intValue());
                        wcsApiService.pubWrkToWcs(params);
                    }
                });
            }
        });
    }
//    /**
//     * 任务自动下发出库任务
//     *
//     * @author Ryan
//     * @date 2026/1/10 14:42
//     */
//    @Scheduled(cron = "0/5 * * * * ? ")
//    private void autoPubTasks() {
//        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", Arrays.asList(11L, 1L)));
//        if (wrkMasts.isEmpty()) {
//            return;
//        }
////        Collections.shuffle(wrkMasts);
//        wrkMasts.forEach(wrkMast -> {
//            WorkTaskParams params = new WorkTaskParams();
//            if (wrkMast.getIoType().equals(11)) {
//                CompleteParam param = new CompleteParam();
//                param.setTaskNo(wrkMast.getWrkNo() + "");
//                param.setSourceLocNo(wrkMast.getSourceLocNo());
//                param.setLocNo(wrkMast.getLocNo());
////                param.set
//                mobileService.taskMove(param, 9527L);
//            } else if (wrkMast.getIoType() > 100) {
//                params.setType("out")
//                        .setTaskNo(wrkMast.getWrkNo() + "")
//                        .setLocNo(wrkMast.getSourceLocNo())
//                        .setBarcode(wrkMast.getBarcode())
//                        .setStaNo(wrkMast.getStaNo())
//                        .setTaskPri(wrkMast.getIoPri().intValue());
//                wcsApiService.pubWrkToWcs(params);
//            }
//        });
//
//    }
    /**
     * AGV任务自动下发出库任务
     *
src/main/java/com/zy/common/service/CommonService.java
@@ -182,7 +182,7 @@
                    int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", i));
                    if (count < minCount) {
                        minCount = count;
                        crnNo = 6;
                        crnNo = i;
                    }
                }