package com.zy.asrs.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.AppAuth; import com.core.common.Cools; import com.core.common.DateUtils; import com.zy.asrs.entity.AgvWarn; import com.zy.asrs.entity.AgvWrkMast; import com.zy.asrs.entity.param.AgvWarnBody; import com.zy.asrs.entity.param.AgvWarnCallBackParam; import com.zy.asrs.service.AgvWarnService; import com.zy.asrs.service.AgvWrkMastService; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.utils.AppAuthUtil; import com.zy.common.web.BaseController; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import java.util.*; /** * 上报事件类型(eventType): *  task:上报任务状态。 *  task_allocated: 上报任务分配给机器人。 *  tote_load:上报取箱状态。 *  tote_unload:上报放箱状态。 *  robot_reach:机器人到达工作站。 *  weight:称重事件回调。 *  rfid:RFID识别事件回调。 * * 任务状态(status): *  success:成功。 *  fail:失败。 *  cancel:取消。 *  suspend:挂起。 */ @Slf4j @RestController @RequestMapping("/agv") public class AgvWarnController extends BaseController { @Autowired private ApiLogService apiLogService; @Autowired private AgvWarnService agvWarnService; @Autowired private AgvWrkMastService agvWrkMastService; @PostMapping("/service/rest/agvCallbackService/warnCallback") @AppAuth(memo = "AGV告警回调") public Object taskEventStaus(@RequestBody AgvWarnCallBackParam param, HttpServletRequest request) { //og.info("AGV告警回调:{}", JSON.toJSONString(param)); AppAuthUtil.auth("", param, request); List agvWarnBodies = param.getData(); // List agvWarnBodies = JSONArray.parseArray(data, AgvWarnBody.class); AgvWarn agvWarn = null; List agvWarns = new ArrayList<>(); List updates = new ArrayList<>(); for (AgvWarnBody body : agvWarnBodies) { List agvWarnList = agvWarnService.selectList(new EntityWrapper().eq("robot_code", body.getRobotCode()).eq("warn_content", body.getWarnContent())); if (Cools.isEmpty(agvWarnList)) { agvWarn = new AgvWarn(); agvWarn.setBeginTime(body.getBeginDate()); agvWarn.setAppeTime(new Date()); agvWarn.setTimes(0); agvWarn.setModiTime(DateUtils.convert(body.getBeginDate(), DateUtils.yyyyMMddHHmmss_F)); agvWarn.setRobotCode(body.getRobotCode()); agvWarn.setWarnContent(body.getWarnContent()); if (body.getTaskCode() != null) { try { AgvWrkMast agvWrkMast = agvWrkMastService.selectById(Math.abs(Integer.parseInt(body.getTaskCode()))); if (agvWrkMast != null) { agvWarn.setLocNo(agvWrkMast.getLocNo()); agvWarn.setSourceLocNo(agvWrkMast.getSourceLocNo()); } } catch (Exception e) { log.info("任务不存在"); } } agvWarns.add(agvWarn); } else { agvWarn = agvWarnList.get(0); agvWarn.setWarnContent(agvWarn.getWarnContent().contains(body.getWarnContent()) ? body.getWarnContent() : agvWarn.getWarnContent() + "、" + body.getWarnContent()); agvWarn.setModiTime(new Date()); if (body.getTaskCode() != null) { try { AgvWrkMast agvWrkMast = agvWrkMastService.selectById(body.getTaskCode()); if (agvWrkMast != null) { agvWarn.setLocNo(agvWrkMast.getLocNo()); agvWarn.setSourceLocNo(agvWrkMast.getSourceLocNo()); } } catch (Exception e) { log.info("任务不存在"); } } updates.add(agvWarn); } } if (!Cools.isEmpty(agvWarns)) { agvWarnService.insertBatch(agvWarns); } if (!Cools.isEmpty(updates)) { agvWarnService.updateBatchById(updates); } Map result = new HashMap<>(); logPost(JSONObject.toJSONString(param), JSONObject.toJSONString(result), true); result.put("code", 0); result.put("message", "成功"); result.put("reqCode", param.getReqCode()); return result; } private void logPost(String param, String response, boolean success) { apiLogService.save( "ESS任务回调", "/phyzwms/agv/task/event/status", null, null, param, response, success ); } }