package com.zy.controller; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.R; import com.core.exception.CoolException; import com.zy.common.model.AgvTaskCompleteDto; import com.zy.common.web.BaseController; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.model.Task; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.thread.SiemensDevpThread; import com.zy.entity.BasDevp; import com.zy.entity.WrkMast; import com.zy.service.BasDevpService; import com.zy.service.WrkMastService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; /** * Created by vincent on 2022/4/8 */ @Slf4j @RestController @RequestMapping("open/asrs") public class OpenController extends BaseController { private static final boolean auth = true; public static final ArrayList APP_KEY_LIST = new ArrayList() {{ add("ea1f0459efc02a79f046f982767939ae"); }}; @Autowired private BasDevpService basDevpService; @Autowired private WrkMastService wrkMastService; /** * agv取放货完成,通知wcs */ @PostMapping("/agv/agvTaskComplete") public synchronized R agvTaskComplete(@RequestHeader(required = false) String appkey, @RequestBody AgvTaskCompleteDto param, HttpServletRequest request) { auth(appkey, param, request); // 给305写关门 BasDevp basDevp = basDevpService.selectOne(new EntityWrapper().eq("dev_no", 305)); if (basDevp.getWrkNo() != 0) { WrkMast wrkMast = wrkMastService.selectById(basDevp.getWrkNo()); if(wrkMast.getWhsType() != null && wrkMast.getWhsType() == 3) { SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); StaProtocol staProtocol305 = devpThread.getStation().get(305); if (!staProtocol305.getIfCloseDoor()) { // 没请求关闭 // 请求关闭 if(!MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 0))){ log.error("请求关门失败"); R.parse("请求关门失败"); } staProtocol305.setOpenAskDoor(false); wrkMast.setWhsType(4); wrkMastService.updateById(wrkMast); } } } else { return R.parse("无任务"); } return R.ok("请求关门成功"); } private void auth(String appkey, Object obj, HttpServletRequest request) { log.info("{}接口被访问;appkey:{};请求数据:{}", request.getRequestURI(), appkey, JSON.toJSONString(obj)); request.setAttribute("cache", obj); if (!auth) { return; } if (Cools.isEmpty(appkey)) { throw new CoolException("认证失败,请确认appkey无误!"); } if (!APP_KEY_LIST.contains(appkey)) { throw new CoolException("认证失败,请确认appkey无误!"); } } }