自动化立体仓库 - WMS系统
#
pang.jiabao
2024-08-12 de8e16542594e01210aba8a72d18f2d2874681c2
src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
@@ -1,12 +1,16 @@
package com.zy.asrs.task.handler;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.Order;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.mapper.OrderMapper;
import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.WrkDetlService;
import com.zy.common.constant.MesConstant;
import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
@@ -16,7 +20,9 @@
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * @author pang.jiabao
@@ -27,11 +33,17 @@
@Service
public class GhjtHandler {
    @Resource
    private OrderMapper orderMapper;
    @Autowired
    private ApiLogService apiLogService;
    @Resource
    private WrkMastMapper wrkMastMapper;
    @Resource
    private WrkDetlService wrkDetlService;
    @Transactional
    public void startCkrwPushGwcs(WrkMast wrkMast) {
@@ -40,19 +52,24 @@
        Map<String, Object> headers = new HashMap<>();
        headers.put("Content-Type", "application/json;charset=UTF-8");
        // 下发给gwcs要走的路径标识
        int descFlag = getDescToGwcs(wrkMast);
        // 构造请求体
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("workNo", wrkMast.getWrkNo());
        jsonObject.put("staNo", wrkMast.getStaNo());
        jsonObject.put("barcode", wrkMast.getBarcode());
        jsonObject.put("sourceStaNo", wrkMast.getSourceStaNo());
        jsonObject.put("descFlag", descFlag); // 101出库时用,0只有一条路径,1理货贴标路径,2贴标打带路径
        String body = jsonObject.toJSONString();
        boolean success = false;
        String response = "";
        try {
            response = new HttpHandler.Builder()
                    .setUri(MesConstant.URL)
                    .setPath(MesConstant.PAKIN_URL)
                    .setUri(MesConstant.GWCS_IP_PORT)
                    .setPath(MesConstant.GWCS_DCKK_URL)
                    .setHeaders(headers)
                    .setJson(body)
                    .build()
@@ -85,13 +102,36 @@
        }
    }
    /**
     * 全板出库到3077或3106的任务,判断出库要走的路径
     * @param wrkMast 工作主档
     * @return 0.只有一条路径,1.理货贴标出库路径,2.贴标打带出库路径
     */
    private int getDescToGwcs(WrkMast wrkMast) {
        int flag = 0;
        if (wrkMast.getIoType() == 101 && (wrkMast.getStaNo() == 3077 || wrkMast.getStaNo() == 3106)) {
            List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
            // 出的物料有几个位置
            List<String> collect = wrkDetls.stream().map(WrkDetl::getOrigin).distinct().collect(Collectors.toList());
            if (collect.size() == 1) { // 一箱
                if (wrkDetls.size() == 1) { // 一卷去贴标
                     flag = 1;
                } else { // 多卷直接出
                }
            } else if(collect.size() == 2) { // 两箱去贴标打带
                    flag = 2;
            }
        }
        return flag;
    }
    @Transactional
    public void OutBoundCompleteReport(Order order) {
        // 获取请求头
        Map<String, Object> headers = new HashMap<>();
        headers.put("digi-type", "sync ");
        headers.put("digi-protocol", "raw");
        headers.put("Content-Type", "application/json;charset=UTF-8");
        // 构造请求体
        JSONObject jsonObject = new JSONObject();
@@ -110,6 +150,8 @@
                    .build()
                    .doPost();
            if (!Cools.isEmpty(response)) {
                order.setSettle(6L);
                orderMapper.updateById(order);
                success = true;
            } else {
                log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL + MesConstant.PAKIN_URL, body, response);