package com.zy.asrs.task.handler; import com.alibaba.fastjson.JSONObject; import com.core.common.Cools; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.entity.mes.MesInApply; import com.zy.asrs.entity.mes.MesOutApply; import com.zy.asrs.entity.mes.TransTask; import com.zy.asrs.service.MesService; import com.zy.asrs.service.WrkMastService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; /** * @author pang.jiabao * @description 济南二机床加工相关定时任务 * @createDate 2025/12/10 14:25 */ @Slf4j @Service public class JlerHandler { @Resource private MesService mesService; @Value("${wms.wmsTransStartStation3}") public String WMS_TRANS_START_STATION_3; @Value("${wms.zpalletId}") public String WMS_ZPALLET_ID; @Resource private WrkMastService wrkMastService; @Transactional public void createAgvOutTasks(WrkMast wrkMast) { String memo = wrkMast.getMemo(); MesOutApply mesOutApply = null; if(!Cools.isEmpty(memo)) { mesOutApply = JSONObject.parseObject(memo, MesOutApply.class); } // 空托出库 if(wrkMast.getIoType() == 110) { if(mesOutApply == null) { // 不是mes下发的空托出库 TransTask transTask = new TransTask(); // transTask.setTaskno(mesOutApply.getTaskno()); // transTask.setTaskname(mesOutApply.getTaskname()); // transTask.setOrderNo(mesOutApply.getOrderNo()); transTask.setTransType("01"); transTask.setCurStationId(WMS_TRANS_START_STATION_3); // transTask.setNextProcess(mesOutApply.getProductLineId()); transTask.setNextStationId(wrkMast.getAgvSta()); transTask.setItemno(WMS_ZPALLET_ID); // 固定为空托的编码 transTask.setQty(1); // 空托只出1个 // transTask.setProductLineId(mesOutApply.getProductLineId()); transTask.setOperateType(1); transTask.setAgvFactory(1); JSONObject sendAgvTask = mesService.submitTask(transTask); if ("1".equals(sendAgvTask.getString("Success"))) { String taskno = sendAgvTask.getString("taskno"); if(Cools.isEmpty(wrkMast.getTaskNo())) { wrkMast.setTaskNo(taskno); } wrkMast.setCallAgv(1); wrkMastService.updateById(wrkMast); }else { log.error("出库下发agv运输任务失败:{}", JSONObject.toJSONString(transTask)); } } else { TransTask transTask = new TransTask(); transTask.setTaskno(mesOutApply.getTaskno()); transTask.setTaskname(mesOutApply.getTaskname()); transTask.setOrderNo(mesOutApply.getOrderNo()); transTask.setTransType(mesOutApply.getTransType()); transTask.setCurStationId(WMS_TRANS_START_STATION_3); transTask.setNextProcess(mesOutApply.getProductLineId()); transTask.setNextStationId(mesOutApply.getStationId()); transTask.setItemno(WMS_ZPALLET_ID); // 固定为空托的编码 transTask.setItemBarcode(new ArrayList<>()); // 没有零件二维码 transTask.setQty(1); // 空托只出1个 transTask.setProductLineId(mesOutApply.getProductLineId()); transTask.setOperateType(1); transTask.setAgvFactory(1); JSONObject sendAgvTask = mesService.submitTask(transTask); if ("1".equals(sendAgvTask.getString("Success"))) { // String taskno = sendAgvTask.getString("taskno"); // if(Cools.isEmpty(wrkMast.getTaskNo())) { // wrkMast.setTaskNo(taskno); // } wrkMast.setCallAgv(1); wrkMastService.updateById(wrkMast); }else { log.error("出库下发agv运输任务失败:{}", JSONObject.toJSONString(transTask)); } } } else if(wrkMast.getIoType() == 101) { // 满托出库 if(mesOutApply == null) { log.error("满托出库呼叫agv无transTask,任务号:{}",wrkMast.getWrkNo()); } else { TransTask transTask = new TransTask(); transTask.setTaskno(mesOutApply.getTaskno()); transTask.setTaskname(mesOutApply.getTaskname()); transTask.setOrderNo(mesOutApply.getOrderNo()); transTask.setTransType(mesOutApply.getTransType()); transTask.setCurStationId(WMS_TRANS_START_STATION_3); transTask.setNextProcess(mesOutApply.getProductLineId()); transTask.setNextStationId(mesOutApply.getStationId()); transTask.setItemno(mesOutApply.getItemno()); transTask.setQty(mesOutApply.getQty()); transTask.setProductLineId(mesOutApply.getProductLineId()); transTask.setItemBarcode(mesOutApply.getItemBarcode()); transTask.setTuoPanId(wrkMast.getBarcode()); transTask.setOperateType(1); transTask.setAgvFactory(1); JSONObject sendAgvTask = mesService.submitTask(transTask); if ("1".equals(sendAgvTask.getString("Success"))) { // String taskno = sendAgvTask.getString("taskno"); // if(Cools.isEmpty(wrkMast.getTaskNo())) { // wrkMast.setTaskNo(taskno); // } wrkMast.setCallAgv(1); wrkMastService.updateById(wrkMast); }else { log.error("出库下发agv运输任务失败:{}", JSONObject.toJSONString(transTask)); } } } else { log.error("出库呼叫agv任务类型错误,任务号:{}",wrkMast.getWrkNo()); } } }