package com.zg.project.wisdom.service.impl;

import com.zg.common.utils.DateUtils;
import com.zg.project.wisdom.domain.DdTask;
import com.zg.project.wisdom.domain.WcsTaskResult;
import com.zg.project.wisdom.mapper.AgvTaskResultMapper;
import com.zg.project.wisdom.mapper.DdTaskMapper;
import com.zg.project.wisdom.mapper.WcsTaskResultMapper;
import com.zg.project.wisdom.service.IWcsTaskResultService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
@Slf4j
@Service
public class WcsTaskResultServiceImpl implements IWcsTaskResultService {

    @Autowired
    private WcsTaskResultMapper wcsTaskResultMapper;

    @Autowired
    private DdTaskMapper ddTaskMapper;

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void handleWcsCallback(WcsTaskResult dto) {

        String taskId = dto.getTaskId();
        Date now = DateUtils.getNowDate();

        // 1️⃣ 先记录 WCS 回调日志
        WcsTaskResult record = new WcsTaskResult();
        record.setTaskId(taskId);
        record.setTaskStatus(dto.getTaskStatus());
        record.setMsg(dto.getMsg());
        record.setOwner("wcs");
        record.setIsDelete("0");
        record.setCreateBy("wcs");
        record.setCreateTime(now);
        record.setUpdateTime(now);
        wcsTaskResultMapper.insertWcsTaskResult(record);

    }

//    @Override
//    @Transactional(rollbackFor = Exception.class)
//    public void handleWcsCallback(WcsTaskResult dto) {
//
//        String taskId = dto.getTaskId();
//        Date now = DateUtils.getNowDate();
//
//        // ✅ 仅立库：TaskStatus=1 视为成功，并同步完成主任务
//        if (taskId != null && taskId.length() >= 3) {
//
//            String taskNo = taskId.substring(0, taskId.length() - 2);
//            DdTask ddTask = ddTaskMapper.selectByTaskNo(taskNo);
//
//            if (ddTask != null
//                    && Integer.valueOf(1).equals(ddTask.getDispatchMode())
//                    && "1".equals(dto.getTaskStatus())) {
//
//                // 1) 回调日志状态：1 -> 3（成功）
//                dto.setTaskStatus("3");
//
//                // 2) 主任务完成：dd_task.task_status -> 2
//                DdTask update = new DdTask();
//                update.setId(ddTask.getId());
//                update.setTaskStatus(2);       // 已完成
//                update.setUpdateBy("wcs");
//                update.setUpdateTime(now);
//                ddTaskMapper.updateDdTask(update);
//            }
//        }
//
//        // 1️⃣ 先记录 WCS 回调日志（原逻辑不变，只是 dto 可能已被修正为 3）
//        WcsTaskResult record = new WcsTaskResult();
//        record.setTaskId(taskId);
//        record.setTaskStatus(dto.getTaskStatus());
//        record.setMsg(dto.getMsg());
//        record.setOwner("wcs");
//        record.setIsDelete("0");
//        record.setCreateBy("wcs");
//        record.setCreateTime(now);
//        record.setUpdateTime(now);
//        wcsTaskResultMapper.insertWcsTaskResult(record);
//    }



    @Override
    public boolean checkTaskStatusExists(String taskId) {
        return wcsTaskResultMapper.countByTaskId(taskId) > 0;
    }
}
