pang.jiabao
2025-05-13 688e299d29bd76cbd30bf3d7267bdc9afad954b0
src/main/java/com/zy/asrs/task/TaskReportScheduler.java
@@ -4,14 +4,22 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.exception.CoolException;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.domain.enums.WorkNoType;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.TaskWrk;
import com.zy.asrs.entity.TaskWrkReport;
import com.zy.asrs.entity.TaskWrkReportLog;
import com.zy.asrs.entity.wms.WmsFeedback;
import com.zy.asrs.mapper.TaskWrkMapper;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.TaskWrkReportLogService;
import com.zy.asrs.service.TaskWrkReportService;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.Synchro;
import lombok.extern.slf4j.Slf4j;
@@ -20,6 +28,7 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.Date;
@@ -43,19 +52,28 @@
    @Value("${wms.url}")
    private String wmsUrl;
    @Value("${wms.TaskExecCallback}")
    @Value("${wms.taskExecCallback}")
    private String TaskExecCallback;
    @Resource
    private TaskWrkMapper taskWrkMapper;
    @Scheduled(cron = "0/3 * * * * ? ")
    public void execute() throws IOException {
        Page<TaskWrkReport> taskWrkReportPage = taskWrkReportService.selectPage(new Page<>(0, 100), new EntityWrapper<TaskWrkReport>().orderBy("createTime", true));
    @Resource
    private LocMastService locMastService;
    @Resource
    private CommonService commonService;
    @Scheduled(cron = "0/5 * * * * ? ")
    public synchronized void execute() throws IOException {
        Page<TaskWrkReport> taskWrkReportPage = taskWrkReportService.selectPage(new Page<>(0, 100), new EntityWrapper<TaskWrkReport>().orderBy("create_time", true));
        if (taskWrkReportPage.getRecords() != null) {
            //新增一个过滤机制
            for (TaskWrkReport taskWrk : taskWrkReportPage.getRecords()) {
                WmsFeedback wmsFeedback = getWmsFeedback(taskWrk);
                String response = "";
                Boolean bool = false;
                boolean bool = false;
                try {
                    log.info("wcs手动完成任务上报wms={}", taskWrk);
                    response = new HttpHandler.Builder()
@@ -65,17 +83,22 @@
                            .setJson(JSON.toJSONString(wmsFeedback))
                            .build()
                            .doPost();
                    JSONObject jsonObject = JSON.parseObject(response);
                    TaskWrkReportLog taskWrkLog = new TaskWrkReportLog();
                    Synchro.Copy(taskWrk, taskWrkLog);
                    taskWrkLog.setId(null);
                    if (!taskWrkReportLogService.insert(taskWrkLog)) {
                        throw new CoolException("转历史档失败" + taskWrkLog);
                    if (!Cools.isEmpty(response)) {
                        JSONObject jsonObject = JSON.parseObject(response);
                        if (Integer.parseInt(String.valueOf(jsonObject.get("code"))) == 200) {
                            TaskWrkReportLog taskWrkLog = new TaskWrkReportLog();
                            Synchro.Copy(taskWrk, taskWrkLog);
                            taskWrkLog.setId(null);
                            if (!taskWrkReportLogService.insert(taskWrkLog)) {
                                throw new CoolException("转历史档失败" + taskWrkLog);
                            }
                            if (!taskWrkReportService.deleteById(taskWrk)) {
                                throw new CoolException("任务档删除失败" + taskWrkLog);
                            }
                            bool = true;
                        }
                    }
                    if (!taskWrkReportService.deleteById(taskWrk)) {
                        throw new CoolException("任务档删除失败" + taskWrkLog);
                    }
                    bool = true;
                } catch (Exception e) {
                    log.error("wcs手动完成任务上报wms失败{},返回值={}", taskWrk, response);
                } finally {
@@ -93,6 +116,61 @@
    }
//    @Scheduled(cron = "0/5 * * * * ? ")
    public synchronized void autoMoveLoc() {
        int flag = 1; // 1.跑23号堆垛机前7列,1号堆垛机1,9层 2.跑23号堆垛机后8-12列,1号堆垛机2-8层
        for(int i = 1; i <= 3; i++ ){
            // 获取堆垛机对应任务
            Integer count = taskWrkMapper.selectCount(new EntityWrapper<TaskWrk>().eq("crn_no", i));
            if (count == 0) {
                // 获取堆垛机巷道在库库位
                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "F").eq("crn_no", i));
                if (locMast != null) {
                    // 获取一个移动的目标库位
                    LocMast locMast1;
                    if (flag == 1) {
                        if (i == 1) {
                            locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0")
                                    .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1").in("lev1",1,9));
                        } else {
                            locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0")
                                    .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1").le("bay1",7));
                        }
                    } else {
                        if (i == 1) {
                            locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0")
                                    .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1").in("lev1",2,3,4,5,6,7,8));
                        } else {
                            locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0")
                                    .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1").gt("bay1",7));
                        }
                    }
                    if (locMast1 != null) {
                        // 创建移库任务
                        TaskWrk taskWrk = new TaskWrk();
                        Date now = new Date();
                        taskWrk.setTaskNo(locMast1.getLocNo());//任务号
                        taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type));
                        taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收
                        taskWrk.setCreateTime(now);
                        taskWrk.setIoType(3);//任务类型
                        taskWrk.setIoPri(11);//优先级
                        taskWrk.setBarcode(locMast.getBarcode());//条码
                        taskWrk.setCrnNo(locMast.getCrnNo());
                        taskWrk.setWrkSts(11);
                        taskWrk.setStartPoint(locMast.getLocNo());//起点
                        taskWrk.setTargetPoint(locMast1.getLocNo());
                        taskWrkMapper.insert(taskWrk);
                        locMast1.setStatus("1");
                        locMastService.updateById(locMast1);
                    }
                }
            }
        }
    }
    private WmsFeedback getWmsFeedback(TaskWrkReport taskWrk) {
        WmsFeedback feedback = new WmsFeedback();