| | |
| | | |
| | | public interface BasRgvErrService extends IService<BasRgvErr> { |
| | | |
| | | BasRgvErr findLatest(int i); |
| | | } |
| | |
| | | @Service("basRgvErrService") |
| | | public class BasRgvErrServiceImpl extends ServiceImpl<BasRgvErrMapper, BasRgvErr> implements BasRgvErrService { |
| | | |
| | | @Override |
| | | public BasRgvErr findLatest(int i) { |
| | | return null; |
| | | } |
| | | } |
| | |
| | | import com.zy.common.utils.HttpHandler; |
| | | import com.zy.core.CrnThread; |
| | | import com.zy.core.DevpThread; |
| | | import com.zy.core.RgvThread; |
| | | import com.zy.core.cache.MessageQueue; |
| | | import com.zy.core.cache.SlaveConnection; |
| | | import com.zy.core.enums.*; |
| | |
| | | private FillingMastService fillingMastService; |
| | | @Autowired |
| | | private VacuumMastService vacuumMastService; |
| | | @Autowired |
| | | private BasErrLogService basErrLogService; |
| | | @Autowired |
| | | private WrkMastStaService wrkMastStaService; |
| | | @Autowired |
| | | private BasRgvErrService basRgvErrService; |
| | | |
| | | @Value("${wms.url}") |
| | | private String wmsUrl; |
| | |
| | | } |
| | | } |
| | | |
| | | public synchronized void recCrnErr() { |
| | | Date now = new Date(); |
| | | |
| | | // 获取堆垛机信息 |
| | | SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, 1); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | if (rgvProtocol == null) { |
| | | return; |
| | | } |
| | | if (true) { |
| | | // if (crnProtocol.getModeType() != CrnModeType.STOP) { |
| | | // 有任务 |
| | | if (rgvProtocol.getTaskNo1() != 0) { |
| | | |
| | | BasErrLog latest = basErrLogService.findLatestByTaskNo(1, rgvProtocol.getTaskNo1()); |
| | | // 有异常 |
| | | if (latest == null) { |
| | | if (rgvProtocol.getAlarm() != null && rgvProtocol.getAlarm() > 0) { |
| | | WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>() |
| | | .setSqlSelect("TOP 1 wrk_no as wrkNo , wrk_sts as wrkSts,wrk_start as wrkStart,wrk_end as wrkEnd, create_time as createTime") |
| | | .eq("wrk_No", rgvProtocol.getTaskNo1()) |
| | | .orderBy("create_time", false) |
| | | |
| | | ); |
| | | if (wrkMastSta == null) { |
| | | return; |
| | | } |
| | | BasRgvErr rgvErr = basRgvErrService.selectById(rgvProtocol.getAlarm()); |
| | | String errName = rgvErr == null ? String.valueOf(rgvProtocol.getAlarm()) : rgvErr.getErrName(); |
| | | BasErrLog basErrLog = new BasErrLog( |
| | | null, // 编号 |
| | | wrkMastSta.getWrkNo().intValue(), // 工作号 |
| | | now, // 发生时间 |
| | | null, // 结束时间 |
| | | wrkMastSta.getWrkSts().longValue(), // 工作状态 |
| | | wrkMastSta.getType(), // 入出库类型 |
| | | 1, // 堆垛机 |
| | | null, // plc |
| | | null, // 目标库位 |
| | | wrkMastSta.getWrkEnd(), // 目标站 |
| | | wrkMastSta.getWrkEnd(), // 源站 |
| | | null, // 源库位 |
| | | null, // 条码 |
| | | (int) rgvProtocol.getAlarm(), // 异常码 |
| | | errName, // 异常 |
| | | 1, // 异常情况 |
| | | now, // 添加时间 |
| | | null, // 添加人员 |
| | | now, // 修改时间 |
| | | null, // 修改人员 |
| | | "任务中异常" // 备注 |
| | | ); |
| | | if (!basErrLogService.insert(basErrLog)) { |
| | | |
| | | } |
| | | } |
| | | } else { |
| | | // 异常修复 |
| | | if (rgvProtocol.getAlarm() == null || rgvProtocol.getAlarm() == 0) { |
| | | latest.setEndTime(now); |
| | | latest.setUpdateTime(now); |
| | | latest.setStatus(2); |
| | | if (!basErrLogService.updateById(latest)) { |
| | | |
| | | } |
| | | } |
| | | } |
| | | // 无任务 |
| | | } else { |
| | | BasErrLog latest = basErrLogService.findLatest(1); |
| | | |
| | | // 有异常 |
| | | if (rgvProtocol.getAlarm() != null && rgvProtocol.getAlarm() > 0) { |
| | | |
| | | // 记录新异常 |
| | | if (latest == null || (latest.getErrCode() != rgvProtocol.getAlarm().intValue())) { |
| | | BasRgvErr rgvErr = basRgvErrService.selectById(rgvProtocol.getAlarm()); |
| | | String errName = rgvErr == null ? String.valueOf(rgvProtocol.getAlarm()) : rgvErr.getErrName(); |
| | | BasErrLog basErrLog = new BasErrLog( |
| | | null, // 编号 |
| | | null, // 工作号 |
| | | now, // 发生时间 |
| | | null, // 结束时间 |
| | | null, // 工作状态 |
| | | null, // 入出库类型 |
| | | 1, // 堆垛机 |
| | | null, // plc |
| | | null, // 目标库位 |
| | | null, // 目标站 |
| | | null, // 源站 |
| | | null, // 源库位 |
| | | null, // 条码 |
| | | (int) rgvProtocol.getAlarm(), // 异常码 |
| | | errName, // 异常 |
| | | 1, // 异常情况 |
| | | now, // 添加时间 |
| | | null, // 添加人员 |
| | | now, // 修改时间 |
| | | null, // 修改人员 |
| | | "无任务异常" // 备注 |
| | | ); |
| | | if (!basErrLogService.insert(basErrLog)) { |
| | | |
| | | } |
| | | } |
| | | // 无异常 |
| | | } else { |
| | | // 异常修复 |
| | | if (latest != null && latest.getStatus() == 1) { |
| | | latest.setEndTime(now); |
| | | latest.setUpdateTime(now); |
| | | latest.setStatus(2); |
| | | if (!basErrLogService.updateById(latest)) { |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | // News.infoNoLog(""+mark+" - 0"+" - 堆垛机异常信息记录执行完成"); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | continue; |
| | | } |
| | | // 演示 |
| | | // mainService.getRgvTask(); |
| | | // mainService.RGVDemoShow0(); |
| | | // mainService.RGVDemoShow1(); |
| | | // mainService.RGVDemoShow2(); |
| | | //任务生成 |
| | | // mainService.DevpTaskAndPut(); |
| | | // //执行小车货物搬运任务 |
| | | // mainService.rgvRunWrkMastFullSta(); |
| | | mainService.getRgvTask(); |
| | | mainService.RGVDemoShow0(); |
| | | mainService.RGVDemoShow1(); |
| | | mainService.RGVDemoShow2(); |
| | | // 任务生成 |
| | | mainService.DevpTaskAndPut(); |
| | | //执行小车货物搬运任务 |
| | | mainService.rgvRunWrkMastFullSta(); |
| | | |
| | | mainService.recCrnErr(); |
| | | |
| | | |
| | | |
| | |
| | | } |
| | | rgvProtocol.setMode((short) -1); |
| | | rgvProtocol.setStatus((short)-1); |
| | | rgvProtocol.setTaskNo1(1002); |
| | | rgvProtocol.setTaskNo1(0); |
| | | rgvProtocol.setStatus1((short)-1); |
| | | rgvProtocol.setLoaded1((short)0); |
| | | rgvProtocol.setWalkPos((short)0); |
| | |
| | | */ |
| | | private void readStatus(){ |
| | | try { |
| | | OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 30); |
| | | OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 36); |
| | | if (result.IsSuccess) { |
| | | if (null == rgvProtocol || rgvProtocol.getRgvNo() == null) { |
| | | rgvProtocol = new RgvProtocol(); |
| | |
| | | ,{field: 'endTime$', align: 'center',title: '结束时间'} |
| | | ,{field: 'wrkSts$', align: 'center',title: '任务状态'} |
| | | ,{field: 'ioType$', align: 'center',title: '入出库类型'} |
| | | ,{field: 'crnNo', align: 'center',title: '堆垛机'} |
| | | ,{field: 'crnNo', align: 'center',title: '设备号'} |
| | | ,{field: 'plcNo', align: 'center',title: 'plc', hide: true} |
| | | ,{field: 'locNo', align: 'center',title: '目标库位', hide: true} |
| | | ,{field: 'staNo', align: 'center',title: '目标站', hide: true} |
| | |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="crn_no" placeholder="堆垛机" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="crn_no" placeholder="设备号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | |
| | | <span>设备位置</span> |
| | | </div> |
| | | <el-row > |
| | | <el-col :span="1" :offset="3"><el-card class="card-bg"></el-card></el-col> |
| | | <el-col :span="1" ><el-card class="card-bg"></el-card></el-col> |
| | | <el-col :span="1" ><el-card class="card-bg"></el-card></el-col> |
| | | <el-col :span="1" :offset="9"><div class="card-bg">7</div></el-col> |
| | | <el-col :span="1" ><div class="card-bg">5</div></el-col> |
| | | <el-col :span="1" ><div class="card-bg">3</div></el-col> |
| | | <el-col :span="1" ><div class="card-bg">1</div></el-col> |
| | | </el-row> |
| | | <el-row type="flex" justify="center"> |
| | | <el-col :span="18" > |
| | | <el-col :span="7" > |
| | | <el-slider v-model="value1" :min="min" :max="max" :format-tooltip="formatTooltip" > |
| | | </el-slider> |
| | | </el-col> |
| | |
| | | </el-row> |
| | | |
| | | <el-row > |
| | | <el-col :span="1" :offset="3"><el-card class="card-bg"></el-card></el-col> |
| | | <el-col :span="1" ><el-card class="card-bg"></el-card></el-col> |
| | | <el-col :span="1" ><el-card class="card-bg"></el-card></el-col> |
| | | <el-col :span="1" ><el-card class="card-bg"></el-card></el-col> |
| | | <el-col :span="1" :offset="13"><el-card class="card-bg"></el-card></el-col> |
| | | <el-col :span="1" ><el-card class="card-bg"></el-card></el-col> |
| | | <el-col :span="1" ><el-card class="card-bg"></el-card></el-col> |
| | | <el-col :span="1" :offset="8"><div class="card-bg">10</div></el-col> |
| | | <el-col :span="1" ><div class="card-bg">8</div></el-col> |
| | | <el-col :span="1" ><div class="card-bg">6</div></el-col> |
| | | <el-col :span="1" ><div class="card-bg">4</div></el-col> |
| | | |
| | | <el-col :span="1" :offset="3"><div class="card-bg">2</div></el-col> |
| | | <el-col :span="1" ><div class="card-bg"></div></el-col> |
| | | |
| | | |
| | | </el-row> |
| | | </el-card> |
| | | </div> |
| | |
| | | demo: 'X', |
| | | rgvMode: 0, |
| | | value1:50000, |
| | | min:8000, |
| | | max:80000 |
| | | min:8300, |
| | | max:75000 |
| | | }, |
| | | created() { |
| | | this.init() |
| | |
| | | method: 'post', |
| | | success: function (res) { |
| | | that.tableData = res.data |
| | | that.value1 = res.data.rgvPos |
| | | that.value1 = res.data[0].rgvPos |
| | | |
| | | } |
| | | }); |
| | | }, |
| | |
| | | pointer-events: none !important; |
| | | } |
| | | .card-bg{ |
| | | width: 100%; |
| | | height: 40px; |
| | | border-radius: 10px; |
| | | display: flex; |
| | | justify-content: center; /* 水平居中 */ |
| | | align-items: center; /* 垂直居中 */ |
| | | color: #f0f0f0; |
| | | background-color: #9d9d9d; |
| | | } |
| | | .el-slider { |