自动化立体仓库 - WMS系统
pang.jiabao
4 天以前 10e6a9a8adad2226f13a4e4704ca5b2ad5b9ef9a
src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -4,9 +4,9 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.mes.TransArrivalStation;
import com.zy.asrs.entity.mes.TransParent;
import com.zy.asrs.entity.mes.*;
import com.zy.asrs.entity.rcs.*;
import com.zy.asrs.enums.RcsRetMethodEnum;
import com.zy.asrs.mapper.BlockStationMapper;
@@ -23,6 +23,8 @@
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -40,6 +42,9 @@
    @Value("${mes.defaultUserId}")
    public long defaultUserId;
    @Value("${dj.url}")
    public String DJ_URL;
    @Resource
    private BasStationService basStationService;
@@ -55,6 +60,12 @@
    private TaskDetlServiceImpl taskDetlService;
    @Resource
    private WrkMastService wrkMastService;
    @Resource
    private WrkDetlService wrkDetlService;
    @Resource
    private OrderPakoutService orderPakoutService;
    // region 封锁区逻辑,目前只有一个大封锁区,任务全部转到滑块库处理,或直接写到滑块库
@@ -175,21 +186,23 @@
        String url = rcsFactory == 2 ? HX_URL : HIK_URL + "api/robot/controller/task/submit";
        String response = "";
        try {
            // 模拟返回
//            rcsReturn.setCode("SUCCESS");
//            success = true;
            response = sendPost(url, JSONObject.toJSONString(rcsTaskSubmit));
            if (!StringUtils.isEmpty(response) && response.contains("code")) {
                rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
                if ("SUCCESS".equals(rcsReturn.getCode())) {
                    // 模拟返回
//            rcsReturn.setCode("SUCCESS");
//            JSONObject jsonObject = new JSONObject();
//            jsonObject.put("robotTaskCode","2025121301");
//            rcsReturn.setData(jsonObject);
                    success = true;
                    log.info("呼叫agv搬运成功!url:{};request:{};response:{}", url, JSON.toJSONString(rcsTaskSubmit), response);
                } else {
                    log.error("呼叫agv搬运失败!url:{};request:{};response:{}", url, JSON.toJSONString(rcsTaskSubmit), response);
                }
            } else {
                log.error("呼叫agv搬运失败,response:{}",response);
                rcsReturn.setCode("ERROR");
            }
        } catch (Exception e) {
            log.error("呼叫agv搬运异常", e);
@@ -314,11 +327,11 @@
                    switch (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method))) {
                        case TASK_START: {
                            if (ioType == 1 || ioType == 10 || ioType == 53) {
                                wrkMast.setCrnStrTime(now);
                                wrkMast.setModiTime(now);
                                wrkMastService.updateById(wrkMast);
                            } else if (ioType == 101 || ioType == 110 || ioType == 103) {
                                wrkMast.setModiTime(now);
                                wrkMastService.updateById(wrkMast);
                            } else {
                                log.error("{}ioType{}不在end反馈处理中", wrkMast.getWrkNo(), ioType);
                            }
@@ -331,6 +344,44 @@
                                wrkMast.setModiTime(now);
                                wrkMastService.updateById(wrkMast);
                            } else if (ioType == 101 || ioType == 110 || ioType == 103) {
                                wrkMast.setWrkSts(14L);
                                wrkMast.setCrnEndTime(now);
                                wrkMast.setModiTime(now);
                                wrkMastService.updateById(wrkMast);
                                // 给TMS反馈出库货物信息
                                List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
                                if(!wrkDetls.isEmpty()) {
                                    WrkDetl wrkDetl = wrkDetls.get(0);
                                    String orderNo = wrkDetl.getOrderNo();
                                    if(!Cools.isEmpty(orderNo)) {
                                        OrderPakout orderPakout = orderPakoutService.selectByNo(orderNo);
                                        if (orderPakout != null) {
                                            MesInApply mesOutFeedback = new MesInApply();
                                            mesOutFeedback.setBillType(String.valueOf(orderPakout.getDocType()));
                                            mesOutFeedback.setOrderNo(orderNo);
                                            mesOutFeedback.setCreateTime( new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now));
                                            List<MesItemDetails> details = new ArrayList<>();
                                            for(WrkDetl detl:wrkDetls) {
                                                MesItemDetails detail = new MesItemDetails();
                                                detail.setItemNo(detl.getMatnr());
                                                detail.setAnfme(detl.getAnfme());
                                                details.add(detail);
                                            }
                                            mesOutFeedback.setDetails(details);
                                            String url = DJ_URL + "api/OutboundOrder/WmsOutFinish";
                                            String request = JSONObject.toJSONString(mesOutFeedback);
                                            String response = RcsServiceImpl.sendPost(url, request);
                                            if (!StringUtils.isEmpty(response) && response.contains("Success")){
                                                MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
                                                if("1".equals(mesReturn.getSuccess())) {
                                                    log.info("CTU出库反馈end,上报TMS成功,工作号:{},明细:{}",wrkMast.getWrkNo(),request);
                                                } else {
                                                    log.error("CTU出库反馈end,上报TMS失败!,工作号:{},明细:{}",wrkMast.getWrkNo(),request);
                                                }
                                            }
                                        }
                                    }
                                }
                            } else {
                                log.error("{}ioType{}不在end反馈处理中", wrkMast.getWrkNo(), ioType);
@@ -393,7 +444,7 @@
                        task.setModiUser(defaultUserId);
                        taskService.updateById(task);
                        // 任务完成
                        mesService.reporterTask(rcsReporterTask);
//                        mesService.reporterTask(rcsReporterTask);
                        // 更新接驳位置状态
@@ -433,6 +484,15 @@
                            mesService.applyOutStation(apply);
                        } else if (RcsRetMethodEnum.ARRIVE_OFF_STATION.getCode().equals(method)) {
                            mesService.outStation(apply);
                            // agv继续执行
                            // 源站点是产线,离站完成后给rcs反馈继续执行
                            if(task.getSourceStaNo().contains("TOOL")) {
                                TransInOutStationAllow inOutStationAllow = new TransInOutStationAllow();
                                inOutStationAllow.setTaskno(robotTaskCode);
                                inOutStationAllow.setStatus("Y");
                                inOutStationAllow.setAgvCode(singleRobotCode);
                                mesService.allowOutStation(inOutStationAllow);
                            }
                        }
                    } break;
                    case ARRIVE_ON_STATION: {