package com.zy.api.controller; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.ManagerAuth; import com.core.common.R; import com.zy.api.controller.params.ReceviceTaskParams; import com.zy.api.controller.params.WorkTaskParams; import com.zy.api.service.WcsApiService; import com.zy.asrs.entity.LocAroundBind; import com.zy.asrs.entity.WaitPakin; import com.zy.asrs.service.LocAroundBindService; import com.zy.asrs.service.WaitPakinService; import com.zy.asrs.utils.Utils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Objects; @Api("WCS交互接口") @RequestMapping("/wcs") @RestController public class WcsApiController { @Autowired private WcsApiService wcsApiService; @Autowired private WaitPakinService waitPakinService; @Autowired private LocAroundBindService locAroundBindService; /** * 通知WCS锁定周边库位,及禁止任务执行 * @author Ryan * @date 2026/1/10 11:13 * @return com.core.common.R */ @ManagerAuth @ApiOperation("锁定机台周边库位执行任务") @PostMapping("/lock/locs") public R reportLockLocs(@RequestBody ReceviceTaskParams params) { if (Objects.isNull(params)) { return R.error("参数不能为空!!"); } if (Objects.isNull(params.getDevNo())) { return R.error("机台号不能为空!!"); } return wcsApiService.lockLocs(params); } /** * 回库搬运指令 * @author Ryan * @date 2026/1/10 13:08 * @param params * @return com.core.common.R */ // @ManagerAuth @ApiOperation("堆垛机回库搬运指令") @PostMapping("/back/loc") public synchronized R backLoc(@RequestBody String params) { if (Objects.isNull(params)) { return R.error("参数不能为空!!"); } return wcsApiService.backLocs(params); } /** * 下发任务至WCS * @author Ryan * @date 2026/1/10 13:57 * @param params * @return com.core.common.R */ @ManagerAuth @ApiOperation("下发任务至WCS") @PostMapping("/pub/wrks") public R pubWrkToWcs(@RequestBody WorkTaskParams params) { if (Objects.isNull(params)) { return R.error("参数不能为空!!"); } return wcsApiService.pubWrkToWcs(params); } @ManagerAuth @ApiOperation("设备执行状态回写-wcs任务完成回写") @PostMapping("/openapi/report") public R receviceTaskFromWcs(@RequestBody ReceviceTaskParams params) { if (Objects.isNull(params)) { return R.error("参数不能为空!!"); } return wcsApiService.receviceTaskFromWcs(params); } @ManagerAuth @ApiOperation("获取组托入库托盘信息") @PostMapping("/openapi/waitPakins") public R waitPakins() { List waitPakins = waitPakinService.selectList(new EntityWrapper().eq("io_status", "N")); return R.ok().add(waitPakins); } @ManagerAuth @ApiOperation("获取机台库位的数组") @GetMapping("/openapi/arr") public R arr() { int i = 0; int[] k = new int[] { 3, 0, 4, 1, 5, 2}; int c=0; int h=0; int i1 = 15; List locAroundBinds = locAroundBindService.selectList(new EntityWrapper().orderBy("dev_id")); String[] arr = new String[90]; for (LocAroundBind locAroundBind : locAroundBinds) { String s = Utils.WMSLocToWCSLoc(locAroundBind.getBlocNo()); int index = i*6+k[c]; arr[index] = s; c++; if (c==k.length) { c=0; i++; } if (i==i1){ i=0; h++; System.out.print("["); for (int j=0;j