123
ZY
2025-05-10 a56259ffabbdd3dba89d60e4da2c06a1b88e6220
src/main/java/com/zy/asrs/controller/DevopsController.java
@@ -6,7 +6,6 @@
import com.core.common.R;
import com.zy.asrs.domain.devops.DevopsMessage;
import com.zy.asrs.domain.devops.ErrorType;
import com.zy.asrs.domain.vo.SiteTableVo;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.mapper.WrkMastMapper;
@@ -20,7 +19,6 @@
import com.zy.core.enums.CrnStatusType;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.CrnSlave;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.protocol.CrnProtocol;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
@@ -30,9 +28,7 @@
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/devops")
@@ -59,15 +55,26 @@
            //先查询堆垛机是否在工作
            WrkMast working = wrkMastMapper.selectWorking(crnSlave.getId());
            for (WrkMast wrkMast : wrkMasts) {
                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                if (crnProtocol == null) {
                    crnProtocol = new CrnProtocol();
                }
                devopsMessage = new DevopsMessage();
                devopsMessage.setWrkNo(wrkMast.getWrkNo());
                if (working != null) {
                    //在工作,则判断是否未当前这条
                    if (working.getWrkNo().equals(wrkMast.getWrkNo())) {
                        devopsMessage.setError("该工作档正在出库,请稍后");
                        if (crnProtocol.getTaskNo().intValue() == working.getWrkNo()) {
                            devopsMessage.setError("该工作档正在执行,请稍后");
                        } else {
                            devopsMessage.setError("该工作档状态不对,与堆垛机的工作号不匹配");
                            devopsMessage.setMethod("结合任务情况进行操作;如果实际已完成,就将工作档完成;如果未完成,则调整工作档状态");
                        }
                    } else {
                        devopsMessage.setError(working.getWrkNo() + "号工作档正在出库,请稍后");
                        devopsMessage.setError(working.getWrkNo() + "号工作档正在执行,请稍后");
                    }
                    devopsMessages.add(devopsMessage);
                    continue;
                }
                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
@@ -75,23 +82,21 @@
                List<ErrorType> staError = isStaError(staProtocol, wrkMast);
                for (ErrorType type : staError) {
                    if (!Cools.isEmpty(devopsMessage.getError())) {
                        devopsMessage.setError(devopsMessage.getError() + "\n" + type.getDesc());
                        devopsMessage.setMethod(devopsMessage.getMethod() + "\n" + type.getMethod());
                        devopsMessage.setError(devopsMessage.getError() + ";" + type.getDesc());
                        devopsMessage.setMethod(devopsMessage.getMethod() + ";" + type.getMethod());
                    } else {
                        devopsMessage.setError(type.getDesc()+ ";");
                        devopsMessage.setMethod(type.getMethod()+ ";" );
                        devopsMessage.setError(type.getDesc());
                        devopsMessage.setMethod(type.getMethod());
                    }
                }
                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                List<ErrorType> crnError = isCrnError(crnProtocol, wrkMast);
                for (ErrorType type : crnError) {
                    if (!Cools.isEmpty(devopsMessage.getError())) {
                        devopsMessage.setError(devopsMessage.getError() + "\n" + type.getDesc());
                        devopsMessage.setMethod(devopsMessage.getMethod() + "\n" + type.getMethod());
                        devopsMessage.setError(devopsMessage.getError() + ";" + type.getDesc());
                        devopsMessage.setMethod(devopsMessage.getMethod() + ";" + type.getMethod());
                    } else {
                        devopsMessage.setError(type.getDesc()+ ";");
                        devopsMessage.setMethod(type.getMethod()+ ";");
                        devopsMessage.setError(type.getDesc());
                        devopsMessage.setMethod(type.getMethod());
                    }
                }
                devopsMessages.add(devopsMessage);
@@ -174,32 +179,104 @@
    @PostMapping("/site/list")
    @ManagerAuth(memo = "站点信息表")
    public R siteTable() {
        List<SiteTableVo> list = new ArrayList<>();
        // 内存数据
        Map<Integer, StaProtocol> station = new HashMap<>();
        for (DevpSlave devp : slaveProperties.getDevp()) {
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
            station.putAll(devpThread.getStation());
        }
        List<DevopsMessage> devopsMessages = new ArrayList<>();
        DevopsMessage devopsMessage;
        List<Integer> outSta = slaveProperties.getOutSta();
        List<Integer> inSta = slaveProperties.getInSta();
        // 持久数据
        List<BasDevp> basDevps = basDevpService.selectList(new EntityWrapper<BasDevp>().orderBy("dev_no"));
        for (BasDevp devp : basDevps) {
            StaProtocol staProtocol = station.get(devp.getDevNo());
            if (null == staProtocol) {
                continue;
        for (Integer out : outSta) {
            for (BasDevp devp : basDevps) {
                if (devp.getDevNo().equals(out)) {
                    devopsMessage = new DevopsMessage();
                    devopsMessage.setStaNo(out);
                    devopsMessage.setType("出库站点");
                    if (devp.getLoading().equalsIgnoreCase("Y")) {
                        devopsMessage.setError(ErrorType.YOUWU.getDesc());
                        devopsMessage.setMethod("请将物料挪走,才能出库");
                    } else {
                        List<ErrorType> crnError = isOutStaError(devp);
                        for (ErrorType type : crnError) {
                            if (!Cools.isEmpty(devopsMessage.getError())) {
                                devopsMessage.setError(devopsMessage.getError() + ";" + type.getDesc());
                                devopsMessage.setMethod(devopsMessage.getMethod() + ";" + type.getMethod());
                            } else {
                                devopsMessage.setError(type.getDesc());
                                devopsMessage.setMethod(type.getMethod());
                            }
                        }
                    }
                    devopsMessages.add(devopsMessage);
                }
            }
            SiteTableVo vo = new SiteTableVo();
            vo.setDevNo(devp.getDevNo());    // 站点编号
            vo.setWorkNo(staProtocol.getWorkNo());   //  工作号
            vo.setAutoing(staProtocol.isAutoing() ? "Y" : "N");     //  自动
            vo.setLoading(staProtocol.isLoading() ? "Y" : "N");     // 有物
            vo.setInEnable(staProtocol.isInEnable() ? "Y" : "N");   // 可入
            vo.setOutEnable(staProtocol.isOutEnable() ? "Y" : "N"); // 可出
            vo.setPakMk(staProtocol.isPakMk()?"Y":"N");       // 入库标记
            vo.setStaNo(staProtocol.getStaNo());                // 目标站
            vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N");     // 空板信号
            list.add(vo);
        }
        return R.ok().add(list);
        for (Integer in : inSta) {
            for (BasDevp devp : basDevps) {
                if (devp.getDevNo().equals(in)) {
                    devopsMessage = new DevopsMessage();
                    devopsMessage.setStaNo(in);
                    devopsMessage.setType("入库站点");
                    if (devp.getLoading().equalsIgnoreCase("Y")) {
                        List<ErrorType> crnError = isInStaError(devp);
                        for (ErrorType type : crnError) {
                            if (!Cools.isEmpty(devopsMessage.getError())) {
                                devopsMessage.setError(devopsMessage.getError() + ";" + type.getDesc());
                                devopsMessage.setMethod(devopsMessage.getMethod() + ";" + type.getMethod());
                            } else {
                                devopsMessage.setError(type.getDesc());
                                devopsMessage.setMethod(type.getMethod());
                            }
                        }
                    } else {
                        devopsMessage.setError(ErrorType.WUWU.getDesc());
                        devopsMessage.setMethod(ErrorType.WUWU.getMethod());
                    }
                    devopsMessages.add(devopsMessage);
                }
            }
        }
        return R.ok().add(devopsMessages);
    }
    private List<ErrorType> isOutStaError(BasDevp devp) {
        List<ErrorType> types = new ArrayList<>();
        // 自动
        if (devp.getAutoing().equalsIgnoreCase("Y")) {
            types.add(ErrorType.FEIZIDONG);
        }
        // 有物
        if (devp.getLoading().equalsIgnoreCase("Y")) {
            types.add(ErrorType.YOUWU);
        } // 工作号是否为0
        if (devp.getWrkNo() != null) {
            types.add(ErrorType.GONGZUOHAO);
        }
        // 目标站点
        //TODO
//        if (devp.getStaNo() == null) {
//            types.add(ErrorType.STANO);
//        }
        return types;
    }
    private List<ErrorType> isInStaError(BasDevp devp) {
        List<ErrorType> types = new ArrayList<>();
        // 自动
        if (devp.getAutoing().equalsIgnoreCase("Y")) {
            types.add(ErrorType.FEIZIDONG);
        }
        // 工作号是否为0
        if (devp.getWrkNo() != null) {
            types.add(ErrorType.GONGZUOHAO);
        }
        // 目标站点
//        if (staProtocol.getStaNo() == null) {
//            types.add(ErrorType.STANO);
//        }
        return types;
    }
}