#
Junjie
2025-04-28 47e24ac5fae74d069d4108d1789f8d87dd44ec13
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -10,7 +10,6 @@
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.domain.enums.WorkNoType;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.Result;
import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.CommandUtils;
@@ -42,6 +41,7 @@
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@@ -96,9 +96,7 @@
    @Value("${wms.inboundTaskApplyPath}")
    private String inboundTaskApplyPath;
    @Value("${wms.TaskExecCallback}")
    private String TaskExecCallback;
    @Value("${wms.taskStatusFeedbackPath}")
    private String taskStatusFeedbackPath;
    private String taskExecCallback;
    public synchronized void generateStoreWrkFile1() {
        try {
@@ -167,13 +165,13 @@
                        }
                        HashMap<String, Object> requestParam = new HashMap<>();
                        requestParam.put("BoxNo", barcode);//托盘码
                        requestParam.put("TerminalNo", inSta.getStaNo());//入库口
                        requestParam.put("barcode", barcode);//托盘码
                        requestParam.put("stationCode", inSta.getStaNo());//入库口
                        if (back) {
                            requestParam.put("WCSStatus", 1);//失败
                            requestParam.put("WCSErrorMessage", errMsg);//失败原因
                            requestParam.put("wcsStatus", 1);//失败
                            requestParam.put("wcsErrorMessage", errMsg);//失败原因
                        }else {
                            requestParam.put("WCSStatus", 0);//成功
                            requestParam.put("wcsStatus", 0);//成功
                        }
                        String response = "";
@@ -186,6 +184,10 @@
                                    .build()
                                    .doPost();
                            JSONObject jsonObject = JSON.parseObject(response);
                            if (jsonObject.getInteger("code") != 200) {
                                log.info("条码:" + barcode + "申请WMS失败,response=" + JSON.toJSONString(jsonObject));
                                continue;
                            }
                            if (back) {
                                devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -193,73 +195,78 @@
                                continue;
                            }
                            int returnStatus = Integer.parseInt(jsonObject.get("ReturnStatus").toString());
                            if (returnStatus == 0) {
                                Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class);
                                // 创新一个入库工作档
                                TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo());
                                if(taskWrk != null) {
                                    log.info("任务:" + result.getTaskNo() + "已经存在");
                                    continue;
                                }
                            JSONObject result = jsonObject.getJSONObject("data");
                            Integer resultWrkNo = result.getInteger("wrkNo");
                            Integer resultStaNo = result.getInteger("stnNo");
                            String resultLocNo = result.getString("locNo");
                                String locNo = Utils.getLocNo(result.getRow(), result.getFloor(), result.getColumn());
                                LocMast locMast = locMastService.selectByLocNo(locNo);
                                if (locMast == null) {
                                    log.info(locNo + "库位不存在");
                                    continue;
                                }
                            // 创新一个入库工作档
                            TaskWrk taskWrk = taskWrkService.selectByTaskNo(String.valueOf(resultWrkNo));
                            if(taskWrk != null) {
                                log.info("任务:" + resultWrkNo + "已经存在");
                                continue;
                            }
                                if (!locMast.getLocSts().equals("O")) {
                                    log.info(locNo + "库位不处于空库位");
                                    continue;
                                }
                            LocMast locMast = locMastService.selectByLocNo(resultLocNo);
                            if (locMast == null) {
                                log.info(resultLocNo + "库位不存在");
                                continue;
                            }
                                Date now = new Date();
                                taskWrk = new TaskWrk();
                                taskWrk.setTaskNo(result.getTaskNo());//任务号
                                taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type));//获取入库工作号
                                taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收
                                taskWrk.setWrkSts(2);//2.设备上走
                                taskWrk.setCreateTime(now);
                                    taskWrk.setIoType(1);//任务类型
                                    taskWrk.setIoPri(13);//优先级
                                    taskWrk.setBarcode(barcode);//条码
                                    taskWrk.setCrnNo(locMast.getCrnNo());
                                    taskWrk.setTargetPoint(locNo);
                                    taskWrk.setStartPoint(String.valueOf(staProtocol.getStaNo()));
                                    if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
                                        taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
                                    }
                            if (!locMast.getLocSts().equals("O")) {
                                log.info(resultLocNo + "库位不处于空库位");
                                continue;
                            }
                                    if (!taskWrkService.insert(taskWrk)) {
                                        log.info("任务:" + result.getTaskNo() + "任务创建失败");
                                    continue;
                                }
                            Date now = new Date();
                            taskWrk = new TaskWrk();
                            taskWrk.setTaskNo(String.valueOf(resultWrkNo));//任务号
                            taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type));//获取入库工作号
                            taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收
                            taskWrk.setWrkSts(2);//2.设备上走
                            taskWrk.setCreateTime(now);
                            taskWrk.setIoType(1);//任务类型
                            taskWrk.setIoPri(13);//优先级
                            taskWrk.setBarcode(barcode);//条码
                            taskWrk.setCrnNo(locMast.getCrnNo());
                            taskWrk.setTargetPoint(resultLocNo);
                            taskWrk.setStartPoint(String.valueOf(staProtocol.getStaNo()));
                            if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
                                taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
                            }
                                locMast.setLocSts("S");
                                locMast.setModiTime(new Date());
                                locMastService.updateById(locMast);
                            if (!taskWrkService.insert(taskWrk)) {
                                log.info("任务:" + resultWrkNo + "任务创建失败");
                                continue;
                            }
                                StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                                        .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
                                staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
                                staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                            locMast.setLocSts("S");
                            locMast.setModiTime(new Date());
                            locMastService.updateById(locMast);
                                //上报
                                HashMap<String, Object> hashMap = new HashMap<>();
                                hashMap.put("TaskNo", taskWrk.getTaskNo());
                            StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                                    .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
                            staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
                            staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                                NotifyCustomDataDto customDataDto = new NotifyCustomDataDto();
                                customDataDto.setUri(wmsUrl);
                                customDataDto.setPath(taskStatusFeedbackPath);
                                customDataDto.setData(JSON.toJSONString(hashMap));
                                boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto);
                                if(notifyResult) {
                                    taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//任务派发
                                    taskWrkService.updateById(taskWrk);
                                }
                            //上报
                            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
                            HashMap<String, Object> hashMap = new HashMap<>();
                            hashMap.put("taskNo", taskWrk.getTaskNo());
                            hashMap.put("status", TaskStatusType.DISTRIBUTE.id);
                            hashMap.put("ioType", 1);
                            hashMap.put("barcode", taskWrk.getBarcode());
                            hashMap.put("reportTime", format.format(new Date()));
                            NotifyCustomDataDto customDataDto = new NotifyCustomDataDto();
                            customDataDto.setUri(wmsUrl);
                            customDataDto.setPath(taskExecCallback);
                            customDataDto.setData(JSON.toJSONString(hashMap));
                            boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto);
                            if(notifyResult) {
                                taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//任务派发
                                taskWrkService.updateById(taskWrk);
                            }
                        } catch (Exception e) {
                            log.error("请求入库调用接口失败");
@@ -597,12 +604,17 @@
                            }
                            //上报-出库任务开始时,WCS回调WMS
                            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
                            HashMap<String, Object> hashMap = new HashMap<>();
                            hashMap.put("TaskNo", taskWrk.getTaskNo());
                            hashMap.put("taskNo", taskWrk.getTaskNo());
                            hashMap.put("status", TaskStatusType.DISTRIBUTE.id);
                            hashMap.put("ioType", 1);
                            hashMap.put("barcode", taskWrk.getBarcode());
                            hashMap.put("reportTime", format.format(new Date()));
                            NotifyCustomDataDto customDataDto = new NotifyCustomDataDto();
                            customDataDto.setUri(wmsUrl);
                            customDataDto.setPath(taskStatusFeedbackPath);
                            customDataDto.setPath(taskExecCallback);
                            customDataDto.setData(JSON.toJSONString(hashMap));
                            boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto);
                            if(notifyResult) {
@@ -690,7 +702,7 @@
                        response = new HttpHandler.Builder()
                                // .setHeaders(headParam)
                                .setUri(wmsUrl)
                                .setPath(taskStatusFeedbackPath)
                                .setPath(taskExecCallback)
                                .setJson(JSON.toJSONString(headParam))
                                .build()
                                .doPost();
@@ -706,7 +718,7 @@
//                        throw new CoolException("wcs派发移库库任务上报wms失败");
                    }finally {
                        apiLogService.save("wcs派发移库任务上报wms"
                                , wmsUrl + taskStatusFeedbackPath
                                , wmsUrl + taskExecCallback
                                , null
                                , "127.0.0.1"
                                , JSON.toJSONString(headParam)