| | |
| | | @Autowired |
| | | private MainServiceImpl mainService; |
| | | @Autowired |
| | | private BasRgvErrLogService basRgvErrLogService; |
| | | @Autowired |
| | | private BasDevpPositionService basDevpPositionService; |
| | | @Autowired |
| | | private BasCircularShuttleService basCircularShuttleService; |
| | |
| | | if (rgvCircularShuttleParam.getStatus()==0){ |
| | | rgvCircularShuttleParam.setStatus$(rgvProtocol.statusType.desc); |
| | | } |
| | | if (rgvProtocol.getAlarmList().isEmpty()){ |
| | | rgvCircularShuttleParam.setError(0); |
| | | rgvCircularShuttleParam.setError$("-"); |
| | | } else { |
| | | StringBuilder alarmList = new StringBuilder(); |
| | | for (Integer alarm : rgvProtocol.getAlarmList()){ |
| | | BasRgvErr rgvErr = basRgvErrMapper.selectById(alarm); |
| | | alarmList.append((rgvErr==null || rgvErr.getErrName()==null)? "未知异常:"+alarm:rgvErr.getErrName()); |
| | | if (alarm.equals(rgvProtocol.getAlarmList().get(rgvProtocol.getAlarmList().size() - 1))){ |
| | | break; |
| | | } |
| | | alarmList.append("---"); |
| | | } |
| | | rgvCircularShuttleParam.setError$(alarmList.toString()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | @PostMapping("/task/rgv/circular/shuttle/mast/position/data/v1") |
| | | // @ManagerAuth(memo = "作业信息") |
| | | public R rgvCircularShuttleV1(){ |
| | | List<BasRgvErrLog> result = new ArrayList<>(); |
| | | for (int i = 1 ; i<11; i ++){ |
| | | BasRgvErrLog basRgvErrLog = basRgvErrLogService.selectOne(new EntityWrapper<BasRgvErrLog>().eq("rgv_no", i).orderBy("id", false)); |
| | | if (basRgvErrLog!=null){ |
| | | result.add(basRgvErrLog); |
| | | } |
| | | } |
| | | return R.ok().add(result); |
| | | } |
| | | |
| | | } |
| | |
| | | * 0:正常,1:禁用 |
| | | */ |
| | | private Integer status; |
| | | private Integer error; |
| | | private String status$ = "未知"; |
| | | private String error$ = "-"; |
| | | private Long position = 0L; |
| | | |
| | | public RgvCircularShuttleParam(){}; |
| | |
| | | package com.zy.asrs.entity; |
| | | |
| | | import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | import com.core.common.Cools; |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.asrs.mapper.BasRgvErrMapper; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.io.Serializable; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @TableName("asr_bas_rgv_err_log") |
| | |
| | | private String error; |
| | | |
| | | /** |
| | | * 异常情况 1: 未处理 2: 已修复 |
| | | * 异常情况 1: 未处理 2: 已修复 |
| | | */ |
| | | @ApiModelProperty(value= "异常情况 1: 未处理 2: 已修复 ") |
| | | private Integer status; |
| | |
| | | |
| | | public BasRgvErrLog() {} |
| | | |
| | | public BasRgvErrLog(List<Integer> alarmLists , Short taskNo,Integer rgvNo) { |
| | | BasRgvErrMapper basRgvErrMapper = SpringUtils.getBean(BasRgvErrMapper.class); |
| | | StringBuilder alarmList = new StringBuilder(); |
| | | for (Integer alarm : alarmLists){ |
| | | BasRgvErr rgvErr = basRgvErrMapper.selectById(alarm); |
| | | alarmList.append((rgvErr==null || rgvErr.getErrName()==null)? "未知异常:"+alarm:rgvErr.getErrName()); |
| | | if (alarm.equals(alarmLists.get(alarmLists.size() - 1))){ |
| | | this.errCode = alarm; |
| | | break; |
| | | } |
| | | alarmList.append("---"); |
| | | } |
| | | this.error = alarmList.toString(); |
| | | Date now = new Date(); |
| | | this.uuid = String.valueOf(now.getTime()); |
| | | this.wrkNo = taskNo.intValue(); |
| | | this.startTime = now; |
| | | this.endTime = now; |
| | | this.rgvNo = rgvNo; |
| | | this.status = 1; |
| | | this.createTime = now; |
| | | this.createBy = 9999L; |
| | | this.updateTime = now; |
| | | this.updateBy = 9999L; |
| | | this.memo = "异常自动记录"; |
| | | } |
| | | |
| | | public BasRgvErrLog(String uuid,Integer wrkNo,Date startTime,Date endTime,Long wrkSts,Integer ioType,Integer rgvNo,Integer plcNo,String locNo,Integer staNo,Integer sourceStaNo,String sourceLocNo,String barcode,Integer errCode,String error,Integer status,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) { |
| | | this.uuid = uuid; |
| | | this.wrkNo = wrkNo; |
| | |
| | | break; |
| | | } |
| | | wrkMast.setWrkSts(2L); |
| | | if (wrkMast.getIoType()==120){ |
| | | wrkMast.setWrkSts(53L); |
| | | } |
| | | Date now = new Date(); |
| | | wrkMast.setRgvFinishTime(now); |
| | | wrkMastService.updateById(wrkMast); |
| | |
| | | import com.zy.core.enums.*; |
| | | import lombok.Data; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/8/7 |
| | | */ |
| | |
| | | * 异常码 |
| | | */ |
| | | public Short alarm; |
| | | public List<Integer> alarmList = new ArrayList<>(); |
| | | |
| | | /** |
| | | * 心跳指令 1-2每秒切换一次 |
| | |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.asrs.entity.BasRgv; |
| | | import com.zy.asrs.entity.BasRgvErrLog; |
| | | import com.zy.asrs.entity.BasRgvOpt; |
| | | import com.zy.asrs.service.BasRgvErrLogService; |
| | | import com.zy.asrs.service.BasRgvOptService; |
| | | import com.zy.asrs.service.BasRgvService; |
| | | import com.zy.core.ThreadHandler; |
| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | import java.text.MessageFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.HashSet; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * RGV线程 |
| | |
| | | * 工位2复位信号 |
| | | */ |
| | | private boolean resetFlag2 = false; |
| | | private boolean alarmChangeSign = false; |
| | | |
| | | public RgvThread(RgvSlave slave) { |
| | | this.slave = slave; |
| | |
| | | OperateResultExOne<byte[]> result = siemensNet.Read("DB100.0", (short) 20); |
| | | // OperateResultExOne<byte[]> resultV = siemensNet.Read("DB20.16", (short) 2); |
| | | // OperateResultExOne<byte[]> resultE = siemensNet.Read("DB20.26", (short) 2); |
| | | OperateResultExOne<byte[]> resultError = siemensNet.Read("DB13.0", (short) 13); |
| | | if (result.IsSuccess) { |
| | | if (null == rgvProtocol) { |
| | | rgvProtocol = new RgvProtocol(); |
| | |
| | | // rgvProtocol.setInstantaneousSpeed((double) siemensNet.getByteTransform().TransInt16(resultV.Content, 0)); |
| | | // rgvProtocol.setEndStaM(siemensNet.getByteTransform().TransInt16(resultE.Content, 0)); |
| | | // rgvProtocol.setRgvPos((long)NumUtils.GetRandomIntInRange(1737000)); |
| | | |
| | | boolean[] statusAlarmList = siemensNet.getByteTransform().TransBool(resultError.Content, 0, 13); |
| | | int alarmCount = 0; |
| | | List<Integer> alarmList = new ArrayList<>(); |
| | | for (boolean alarmSign : statusAlarmList){ |
| | | alarmCount++; |
| | | if (alarmSign){ |
| | | alarmList.add(alarmCount); |
| | | } |
| | | } |
| | | alarmChangeSign = new HashSet<>(alarmList).equals(new HashSet<>(rgvProtocol.getAlarmList())); |
| | | rgvProtocol.setAlarmList(alarmList); |
| | | |
| | | |
| | | OutputQueue.RGV.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId())); |
| | | |
| | | try { |
| | |
| | | if (!basRgvService.updateById(rgvProtocol.toSqlModel(basRgv))){ |
| | | log.error("RGV plc数据库更新失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()); |
| | | } |
| | | try{ |
| | | if (!alarmChangeSign && !alarmList.isEmpty()){ |
| | | BasRgvErrLogService basRgvErrLogService = SpringUtils.getBean(BasRgvErrLogService.class); |
| | | BasRgvErrLog basRgvErrLog = new BasRgvErrLog(rgvProtocol.getAlarmList(), rgvProtocol.getTaskNo1(), rgvProtocol.getRgvNo()); |
| | | basRgvErrLogService.insert(basRgvErrLog); |
| | | } |
| | | } catch (Exception e){ |
| | | log.error("RGV异常信息保存失败!!"); |
| | | } |
| | | } catch (Exception ignore) { |
| | | |
| | | } |
| | |
| | | z-index: 1000; /* 确保在其他元素之上 */ |
| | | } |
| | | |
| | | .task-bar-right1 { |
| | | position: fixed; |
| | | top: 5%; |
| | | /*transform: translateY(-50%);*/ |
| | | width: 25%; /* 设置宽度 */ |
| | | background-color: rgba(255, 255, 255, 0); /* 半透明背景 */ |
| | | |
| | | border-radius: 5px; |
| | | padding: 10px; |
| | | box-shadow: 0 0 10px rgba(0, 0, 0, 0); |
| | | z-index: 1000; /* 确保在其他元素之上 */ |
| | | } |
| | | |
| | | .task-bar-right { |
| | | position: fixed; |
| | | top: 1%; |
| | |
| | | label="状态"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="error$" |
| | | label="异常"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="操作" |
| | | type="template"> |
| | | <template slot-scope="scope"> |
| | |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | <div class="task-bar-right1 right-task-bar"> |
| | | <div> |
| | | <el-tooltip :content="'Switch value: ' + valueRight1" placement="top"> |
| | | <el-switch |
| | | v-model="valueRight1" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949" |
| | | active-value="100" |
| | | inactive-value="0"> |
| | | </el-switch> |
| | | </el-tooltip> |
| | | </div> |
| | | <div v-if="valueRight1 === '100' " class="task-bar-div1"> |
| | | <el-table |
| | | :data="tableDataRight1" |
| | | style="width: 100%" |
| | | :row-class-name="tableRowClassName"> |
| | | <el-table-column |
| | | prop="rgvNo" |
| | | label="小车号"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="error" |
| | | label="异常"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="createTime$" |
| | | label="记录日期"> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <script> |
| | |
| | | activeNames: ['1'], |
| | | valueLeft: '0', |
| | | valueRight: '0', |
| | | valueRight1: '0', |
| | | licenseDay: ' ', |
| | | licenseDayI: 100, |
| | | valueSystem: false, |
| | |
| | | energyGatheringRing: [], |
| | | tableDataLeft: [], |
| | | tableDataRight: [], |
| | | tableDataRight1: [], |
| | | devpPos1:[ |
| | | {dev_no: 116,pos:633980}, |
| | | {dev_no: 117,pos:604043}, |
| | |
| | | this.getTableDataTrack() |
| | | this.getTableDataLeft() |
| | | this.getTableDataRight() |
| | | this.getTableDataRight1() |
| | | this.getValueSystem() |
| | | this.getLicenseDays() |
| | | |
| | |
| | | this.getTableDataTrack() |
| | | this.getTableDataLeft() |
| | | this.getTableDataRight() |
| | | this.getTableDataRight1() |
| | | this.getValueSystem() |
| | | this.getLicenseDays() |
| | | |
| | |
| | | |
| | | if (val.length >= 1){ |
| | | this.handleChangeValueRight(1) |
| | | } |
| | | } |
| | | }, |
| | | handleChange1(val) { |
| | | console.log(val); |
| | | if (val.length === 0){ |
| | | valueRight1 = '0'; |
| | | } else { |
| | | console.log("2222"+val); |
| | | |
| | | if (val.length >= 1){ |
| | | this.handleChangeValueRight1(1) |
| | | } |
| | | } |
| | | }, |
| | |
| | | valueRight = '100'; |
| | | default: |
| | | valueRight = '0'; |
| | | } |
| | | }, |
| | | handleChangeValueRight1(val) { |
| | | console.log("33333"+val); |
| | | |
| | | switch (val){ |
| | | case 1: |
| | | valueRight1 = '100'; |
| | | case 2: |
| | | valueRight1 = '100'; |
| | | case 3: |
| | | valueRight1 = '100'; |
| | | case 4: |
| | | valueRight1 = '100'; |
| | | default: |
| | | valueRight1 = '0'; |
| | | } |
| | | }, |
| | | tableRowClassName({row, rowIndex}) { |
| | |
| | | } |
| | | }); |
| | | }, |
| | | getTableDataRight1() { |
| | | let that = this; |
| | | $.ajax({ |
| | | url: baseUrl + "/rgv/task/rgv/circular/shuttle/mast/position/data/v1", |
| | | headers: { |
| | | 'token': localStorage.getItem('token') |
| | | }, |
| | | data: {}, |
| | | dataType: 'json', |
| | | contentType: 'application/json;charset=UTF-8', |
| | | method: 'post', |
| | | success: function (res) { |
| | | that.tableDataRight1 = res.data |
| | | } |
| | | }); |
| | | }, |
| | | getTableDataRgv() { |
| | | let that = this; |
| | | // that.tableDataRgv = busPsto |