#
Junjie
2024-10-12 39a729e911ca4e5fb1c629fabf71cc3cf02dade8
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/TaskTimer.java
@@ -1,24 +1,20 @@
package com.zy.asrs.wcs.core.timer;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.wcs.core.entity.Loc;
import com.zy.asrs.wcs.core.entity.Task;
import com.zy.asrs.wcs.core.entity.TaskLog;
import com.zy.asrs.common.utils.HttpHandler;
import com.zy.asrs.wcs.core.entity.*;
import com.zy.asrs.wcs.core.model.enums.LocStsType;
import com.zy.asrs.wcs.core.model.enums.TaskStsType;
import com.zy.asrs.wcs.core.service.LocService;
import com.zy.asrs.wcs.core.service.TaskLogService;
import com.zy.asrs.wcs.core.service.TaskService;
import com.zy.asrs.wcs.core.service.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
@Slf4j
@Component
@@ -28,6 +24,10 @@
    private TaskService taskService;
    @Autowired
    private TaskLogService taskLogService;
    @Autowired
    private MotionService motionService;
    @Autowired
    private MotionLogService motionLogService;
    @Autowired
    private LocService locService;
@@ -45,11 +45,48 @@
                .eq(Task::getStatus, 1)
                .in(Task::getTaskSts, taskSts));
        for (Task task : tasks) {
            if(task.getTaskSts().equals(TaskStsType.COMPLETE_INBOUND.sts) || task.getTaskSts().equals(TaskStsType.COMPLETE_OUTBOUND.sts)){
                boolean httpRequest = doHttpRequest(task, "127.0.0.1:8080", "/wms/open/asrs//wrkMast/finish/v1");
                if (!httpRequest) {
                    return;
                }
            }
            //记录库存信息
            updateRecordLoc(task);
            //任务转历史档
            saveTaskLog(task);
        }
    }
    private boolean doHttpRequest(Task requestParam, String url, String path){
        String response = "";
        boolean success = false;
        try {
        Map<String, Object> map = new HashMap<>();
        map.put("appkey", "ea1f0459efc02a79f046f982767939ae");
        Map<String, Object> map2 = new HashMap<>();
        map2.put("taskNo", requestParam.getWmsTaskNo());
        log.info("请求报文:"+ JSONObject.toJSONString(requestParam));
            response = new HttpHandler.Builder()
                    .setHeaders(map)
                    .setUri(url)
                    .setPath(path)
                    .setJson(JSONObject.toJSONString(map2))
                    .build()
                    .doPost();
            JSONObject jsonObject = JSON.parseObject(response);
            log.info("请求返回:"+response);
            String code = jsonObject.get("code").toString();
            if(code.equals("200")){
                success = true;
            }
        }catch (Exception e){
            log.info("请求报错"+e.getMessage());
        }
        return success;
    }
    //更新库存信息
@@ -87,16 +124,24 @@
    @Transactional
    public void saveTaskLog(Task task) {
        //创建历史档
        Date date = new Date();
        TaskLog taskLog = new TaskLog();
        taskLog.setTaskNo(task.getTaskNo());
        taskLog.setTaskData(JSON.toJSONString(task));
        taskLog.setCreateTime(date);
        taskLog.setUpdateTime(date);
        taskLog.sync(task);
        taskLog.setUpdateTime(new Date());
        taskLogService.save(taskLog);
        List<Motion> motions = motionService.list(new LambdaQueryWrapper<Motion>().eq(Motion::getTaskNo, task.getTaskNo()).eq(Motion::getHostId, task.getHostId()));
        for (Motion motion : motions) {
            //创建动作历史档
            MotionLog motionLog = new MotionLog();
            motionLog.sync(motion);
            motionLog.setUpdateTime(new Date());
            motionLogService.save(motionLog);
        }
        //删除源任务
        taskService.removeById(task.getId());
        //删除动作
        motionService.remove(new LambdaQueryWrapper<Motion>().eq(Motion::getTaskNo, task.getTaskNo()).eq(Motion::getHostId, task.getHostId()));
    }
}