自动化立体仓库 - WMS系统
zwl
昨天 ff66ddf96807fac02e01c7d2ecdfd1ba808af9c5
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -14,6 +14,7 @@
import com.zy.asrs.mapper.TagMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.support.WorkPublishLockKeys;
import com.zy.asrs.utils.MatUtils;
import com.zy.asrs.utils.OrderInAndOutUtil;
import com.zy.asrs.utils.Utils;
@@ -28,6 +29,7 @@
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.NodeUtils;
import com.zy.common.utils.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -121,6 +123,8 @@
    private WcsApiService wcsApiService;
    @Autowired
    private WorkService workService;
    @Autowired
    private RedisUtil redisUtil;
    @Autowired
    private BasCrnpService basCrnpService;
    @Autowired
@@ -406,6 +410,10 @@
        }
        if (param.getExecute() == null) {
            throw new CoolException("execute不能为空");
        }
        if (Objects.equals(param.getExecute(), 2)
                && redisUtil.hasKey(WorkPublishLockKeys.outboundUserNoLock(param.getOrderId()))) {
            return R.error("正在下发任务给WCS,无法中止");
        }
        List<WrkMast> activeTasks = findActiveOutboundTasks(param.getOrderId());
@@ -1504,11 +1512,11 @@
     * 7.11 出库通知单(传递有序无序规则)单条建单。
     */
    @Override
    public R outOrder(OutTaskParam param,int count) {
        return outOrder(param, count, 0);
    public R outOrder(OutTaskParam param,int count,int i) {
        return outOrder(param, count, 0 ,i);
    }
    private R outOrder(OutTaskParam param, int count, int teu) {
    private R outOrder(OutTaskParam param, int count, int teu , int i) {
        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "F").eq("barcode", param.getPalletId()));
        if (locMast == null) {
            throw new CoolException("没有找到托盘码=" + param.getPalletId() + "对应的库位");
@@ -1599,7 +1607,7 @@
            // 7.11:entryWmsCode、outDoorNo 复用明细备用字段。
            wrkDetl.setStandby1(param.getEntryWmsCode());
            wrkDetl.setStandby2(param.getOutDoorNo());
            wrkDetl.setSupp(param.getSeq()+"/"+count);
            wrkDetl.setSupp(count+"");
            wrkDetl.setTeu(param.getTeu());
            if (!wrkDetlService.insert(wrkDetl)) {
@@ -1627,20 +1635,22 @@
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R outOrderBatch(List<OutTaskParam> params) {
        int n = params.size();
        Map<String, Integer> batchLineCounts = new HashMap<>();
        Map<String, Integer> batchTeuCounts = buildOutOrderBatchTeuCounts(params);
        for (OutTaskParam outTaskParam : params) {
            batchLineCounts.merge(buildOutOrderBatchKey(outTaskParam), 1, Integer::sum);
        }
        for (OutTaskParam outTaskParam : params) {
            int count = batchLineCounts.getOrDefault(buildOutOrderBatchKey(outTaskParam), n);
            int teu = batchTeuCounts.getOrDefault(outTaskParam.getBatchSeq(), 1);
            R r = outOrder(outTaskParam, count, teu);
            if (!Objects.equals(r.get("code"), 200)) {
                throw new CoolException("出库建单失败");
    public R outOrderBatch(Map<String, List<OutTaskParam>> linesByBatchSeq,int count) {
        int i = 0;
        for (Map.Entry<String, List<OutTaskParam>> entry : linesByBatchSeq.entrySet()) {
            for (OutTaskParam outTaskParam : entry.getValue()) {
                if(outTaskParam.getSeq()!=0){
                    i= outTaskParam.getSeq();
                }else{
                    i++;
                }
                int teu = Cools.isEmpty(outTaskParam.getTeu())?0:outTaskParam.getTeu();
                R r = outOrder(outTaskParam, count, teu ,i);
                if (!Objects.equals(r.get("code"), 200)) {
                    throw new CoolException("出库建单失败");
                }
            }
        }
        return R.ok();
    }