| | |
| | | package com.zy.asrs.controller; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.annotations.ManagerAuth; |
| | | import com.core.common.Cools; |
| | | import com.core.common.R; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.domain.enums.CrnStatusType; |
| | | import com.zy.asrs.domain.param.SystemSwitchParam; |
| | | import com.zy.asrs.domain.vo.CrnDetailVo; |
| | | import com.zy.asrs.domain.vo.CrnLatestDataVo; |
| | | import com.zy.asrs.entity.BasCrnpErr; |
| | | import com.zy.asrs.entity.DeviceConfig; |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.service.BasCrnpErrService; |
| | | import com.zy.asrs.service.DeviceConfigService; |
| | | import com.zy.asrs.service.WrkMastService; |
| | | import com.zy.common.CodeRes; |
| | | import com.zy.core.Slave; |
| | | import com.zy.core.ThreadHandler; |
| | | import com.zy.core.cache.SlaveConnection; |
| | | import com.zy.core.enums.CrnModeType; |
| | | import com.zy.core.enums.SlaveType; |
| | | import com.zy.core.model.protocol.CrnProtocol; |
| | | import com.zy.core.properties.SystemProperties; |
| | | import com.zy.core.thread.CrnThread; |
| | | import com.zy.core.thread.impl.ZySiemensCrnThread; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 主控图接口 |
| | |
| | | @RestController |
| | | @RequestMapping("/console") |
| | | public class ConsoleController { |
| | | |
| | | @Autowired |
| | | private DeviceConfigService deviceConfigService; |
| | | @Autowired |
| | | private WrkMastService wrkMastService; |
| | | @Autowired |
| | | private BasCrnpErrService basCrnpErrService; |
| | | |
| | | @PostMapping("/system/running/status") |
| | | @ManagerAuth(memo = "系统运行状态") |
| | |
| | | return R.ok().add(Cools.add("status", SystemProperties.WCS_RUNNING_STATUS.get())); |
| | | } |
| | | |
| | | // @PostMapping("/latest/data/site") |
| | | // @ManagerAuth(memo = "站点实时数据") |
| | | // public R siteLatestData(){ |
| | | // List<SiteLatestDataVo> vos = new ArrayList<>(); |
| | | // Map<Integer, StaProtocol> stations = new HashMap<>(); |
| | | // for (DevpSlave devp : slaveProperties.getDevp()) { |
| | | // DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); |
| | | // if (null != devpThread) { |
| | | // stations.putAll(devpThread.getStation()); |
| | | // } |
| | | // } |
| | | // for (Map.Entry<Integer, StaProtocol> entry : stations.entrySet()) { |
| | | // SiteLatestDataVo vo = new SiteLatestDataVo(); |
| | | // StaProtocol staProtocol = entry.getValue(); |
| | | // vo.setSiteId(String.valueOf(entry.getKey())); // 站点编号 |
| | | // vo.setWorkNo(staProtocol.getWorkNo()); // 工作号 |
| | | // vo.setSiteStatus(SiteStatusType.process(staProtocol)); // 状态 |
| | | // vos.add(vo); |
| | | // } |
| | | // return R.ok().add(vos); |
| | | // } |
| | | |
| | | @PostMapping("/latest/data/crn") |
| | | @ManagerAuth(memo = "堆垛机实时数据") |
| | | public R crnLatestData(){ |
| | | List<CrnLatestDataVo> vos = new ArrayList<>(); |
| | | |
| | | List<DeviceConfig> crnList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Crn))); |
| | | for (DeviceConfig deviceConfig : crnList) { |
| | | // 获取堆垛机信息 |
| | | CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, deviceConfig.getDeviceNo()); |
| | | if (crnThread == null) { |
| | | continue; |
| | | } |
| | | |
| | | CrnProtocol crnProtocol = crnThread.getStatus(); |
| | | if (crnProtocol == null) { |
| | | continue; |
| | | } |
| | | CrnLatestDataVo vo = new CrnLatestDataVo(); |
| | | vo.setCrnId(crnProtocol.getCrnNo()); // 堆垛机编号 |
| | | |
| | | vo.setOffset((double) new Random().nextInt(560)); // 堆垛机偏移量 |
| | | vo.setBay(crnProtocol.getBay()); // 当前列 |
| | | /** |
| | | * 堆垛机状态判断 |
| | | */ |
| | | if (crnProtocol.getAlarm() > 0) { |
| | | vo.setCrnStatus(CrnStatusType.MACHINE_ERROR); |
| | | } else { |
| | | if (crnProtocol.getTaskNo()>0) { |
| | | WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo()); |
| | | if (wrkMast != null) { |
| | | vo.setCrnStatus(CrnStatusType.process(wrkMast.getIoType())); |
| | | } else { |
| | | vo.setCrnStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO: CrnStatusType.MACHINE_UN_AUTO); |
| | | } |
| | | } else { |
| | | vo.setCrnStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO: CrnStatusType.MACHINE_UN_AUTO); |
| | | } |
| | | } |
| | | vos.add(vo); |
| | | } |
| | | return R.ok().add(vos); |
| | | } |
| | | |
| | | // @PostMapping("/latest/data/rgv") |
| | | // @ManagerAuth(memo = "RGV实时数据") |
| | | // public R rgvLatestData(){ |
| | | // List<RgvLatestDataVo> vos = new ArrayList<>(); |
| | | // for (RgvSlave rgvSlave : slaveProperties.getRgv()) { |
| | | // // 获取堆垛机信息 |
| | | // RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | // if (rgvThread == null) { |
| | | // continue; |
| | | // } |
| | | // RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | // if (rgvProtocol == null) { |
| | | // continue; |
| | | // } |
| | | // RgvLatestDataVo vo = new RgvLatestDataVo(); |
| | | // vo.setRgvId(rgvProtocol.getRgvNo()); // RGV编号 |
| | | // vo.setTrackSiteNo(String.valueOf(rgvProtocol.getRgvPos())); |
| | | // vo.setRgvStatus(rgvProtocol.getStatusType()); |
| | | // vos.add(vo); |
| | | // |
| | | // } |
| | | // Object object = redisUtil.get("rgvLatestData"); |
| | | // List<Object> siteLatestDataVos = JSON.parseArray(object.toString()); |
| | | // return R.ok().add(siteLatestDataVos); |
| | | // } |
| | | |
| | | // @PostMapping("/latest/data/barcode") |
| | | // @ManagerAuth(memo = "条码扫描仪实时数据") |
| | | // public R barcodeLatestData(){ |
| | | // List<BarcodeDataVo> list = new ArrayList<>(); |
| | | // for (Slave barcode : slaveProperties.getBarcode()) { |
| | | // BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcode.getId()); |
| | | // if (null == barcodeThread) { |
| | | // continue; |
| | | // } |
| | | // BarcodeDataVo vo = new BarcodeDataVo(); |
| | | // vo.setBarcodeId(barcode.getId()); |
| | | // vo.setCodeValue(barcodeThread.getBarcode()); |
| | | // list.add(vo); |
| | | // } |
| | | // return R.ok().add(list); |
| | | // } |
| | | |
| | | @PostMapping("/crn/detail") |
| | | @ManagerAuth(memo = "堆垛机设备数据详情") |
| | | public R crnDetail(@RequestParam Integer crnNo){ |
| | | if (Cools.isEmpty(crnNo)){ |
| | | return R.parse(CodeRes.EMPTY); |
| | | } |
| | | CrnDetailVo vo = new CrnDetailVo(); |
| | | |
| | | DeviceConfig deviceConfig = deviceConfigService.selectOne(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Crn)) |
| | | .eq("device_no", crnNo) |
| | | ); |
| | | |
| | | if (deviceConfig == null) { |
| | | return R.error("设备不存在"); |
| | | } |
| | | |
| | | CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnNo); |
| | | CrnProtocol crnProtocol = crnThread.getStatus(); |
| | | vo.setCrnNo(crnNo); |
| | | vo.setWorkNo(crnProtocol.getTaskNo()); |
| | | vo.setCrnStatus(crnProtocol.getStatusType().desc); |
| | | |
| | | if (crnProtocol.getAlarm() > 0) { |
| | | BasCrnpErr crnError = basCrnpErrService.selectById(crnProtocol.getAlarm()); |
| | | vo.setError(crnError == null ? "未知异常" : crnError.getErrName()); |
| | | } |
| | | |
| | | if (crnProtocol.getTaskNo() > 0) { |
| | | WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo()); |
| | | if (wrkMast != null) { |
| | | vo.setSourceStaNo(String.valueOf(wrkMast.getSourceStaNo())); |
| | | vo.setStaNo(String.valueOf(wrkMast.getStaNo())); |
| | | vo.setWrkSts(wrkMast.getWrkSts$()); // 工作状态 |
| | | vo.setIoType(wrkMast.getIoType$()); // 入出库类型 |
| | | vo.setSourceLocNo(wrkMast.getSourceLocNo$()); |
| | | vo.setLocNo(wrkMast.getLocNo$()); |
| | | vo.setCrnStatus(crnProtocol.getStatusType().desc); |
| | | vo.setError(""); // todo |
| | | } |
| | | } |
| | | return R.ok().add(vo); |
| | | } |
| | | |
| | | } |