From a1bd5fc40223cee3445fc62b7555afee7bbcdab5 Mon Sep 17 00:00:00 2001 From: pjb <pjb123456> Date: 星期二, 12 八月 2025 16:06:49 +0800 Subject: [PATCH] 小车异常 --- src/main/java/com/zy/asrs/domain/param/RgvCircularShuttleParam.java | 2 src/main/java/com/zy/core/thread/RgvThread.java | 30 +++++++ src/main/java/com/zy/asrs/controller/RgvController.java | 31 +++++++ src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 3 src/main/webapp/views/index.html | 97 ++++++++++++++++++++++++ src/main/java/com/zy/asrs/entity/BasRgvErrLog.java | 46 +++++++++- src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 4 + 7 files changed, 206 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java index 10af29a..e24ad49 100644 --- a/src/main/java/com/zy/asrs/controller/RgvController.java +++ b/src/main/java/com/zy/asrs/controller/RgvController.java @@ -62,6 +62,8 @@ @Autowired private MainServiceImpl mainService; @Autowired + private BasRgvErrLogService basRgvErrLogService; + @Autowired private BasDevpPositionService basDevpPositionService; @Autowired private BasCircularShuttleService basCircularShuttleService; @@ -492,6 +494,21 @@ 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()); + } } } } @@ -527,4 +544,18 @@ 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); + } + } \ No newline at end of file diff --git a/src/main/java/com/zy/asrs/domain/param/RgvCircularShuttleParam.java b/src/main/java/com/zy/asrs/domain/param/RgvCircularShuttleParam.java index bc1ca9e..04a7574 100644 --- a/src/main/java/com/zy/asrs/domain/param/RgvCircularShuttleParam.java +++ b/src/main/java/com/zy/asrs/domain/param/RgvCircularShuttleParam.java @@ -22,7 +22,9 @@ * 0:姝e父锛�1锛氱鐢� */ private Integer status; + private Integer error; private String status$ = "鏈煡"; + private String error$ = "-"; private Long position = 0L; public RgvCircularShuttleParam(){}; diff --git a/src/main/java/com/zy/asrs/entity/BasRgvErrLog.java b/src/main/java/com/zy/asrs/entity/BasRgvErrLog.java index 1d57f34..bceb92b 100644 --- a/src/main/java/com/zy/asrs/entity/BasRgvErrLog.java +++ b/src/main/java/com/zy/asrs/entity/BasRgvErrLog.java @@ -1,15 +1,20 @@ 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") @@ -126,7 +131,7 @@ private String error; /** - * 寮傚父鎯呭喌 1: 鏈鐞� 2: 宸蹭慨澶� + * 寮傚父鎯呭喌 1: 鏈鐞� 2: 宸蹭慨澶� */ @ApiModelProperty(value= "寮傚父鎯呭喌 1: 鏈鐞� 2: 宸蹭慨澶� ") private Integer status; @@ -169,6 +174,33 @@ 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; diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java index 79458bd..e5b80a8 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -499,6 +499,9 @@ break; } wrkMast.setWrkSts(2L); + if (wrkMast.getIoType()==120){ + wrkMast.setWrkSts(53L); + } Date now = new Date(); wrkMast.setRgvFinishTime(now); wrkMastService.updateById(wrkMast); diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java index b44627f..955956d 100644 --- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java @@ -4,6 +4,9 @@ import com.zy.core.enums.*; import lombok.Data; +import java.util.ArrayList; +import java.util.List; + /** * Created by vincent on 2020/8/7 */ @@ -104,6 +107,7 @@ * 寮傚父鐮� */ public Short alarm; + public List<Integer> alarmList = new ArrayList<>(); /** * 蹇冭烦鎸囦护 1-2姣忕鍒囨崲涓�娆� diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java index 2225e69..1d95911 100644 --- a/src/main/java/com/zy/core/thread/RgvThread.java +++ b/src/main/java/com/zy/core/thread/RgvThread.java @@ -8,7 +8,9 @@ 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; @@ -24,7 +26,10 @@ 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绾跨▼ @@ -45,6 +50,7 @@ * 宸ヤ綅2澶嶄綅淇″彿 */ private boolean resetFlag2 = false; + private boolean alarmChangeSign = false; public RgvThread(RgvSlave slave) { this.slave = slave; @@ -147,6 +153,7 @@ 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(); @@ -164,6 +171,20 @@ // 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 { @@ -176,6 +197,15 @@ 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) { } diff --git a/src/main/webapp/views/index.html b/src/main/webapp/views/index.html index 6cced2e..bbcb785 100644 --- a/src/main/webapp/views/index.html +++ b/src/main/webapp/views/index.html @@ -100,6 +100,19 @@ 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%; @@ -356,6 +369,10 @@ label="鐘舵��"> </el-table-column> <el-table-column + prop="error$" + label="寮傚父"> + </el-table-column> + <el-table-column label="鎿嶄綔" type="template"> <template slot-scope="scope"> @@ -370,6 +387,38 @@ </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> @@ -379,6 +428,7 @@ activeNames: ['1'], valueLeft: '0', valueRight: '0', + valueRight1: '0', licenseDay: ' ', licenseDayI: 100, valueSystem: false, @@ -387,6 +437,7 @@ energyGatheringRing: [], tableDataLeft: [], tableDataRight: [], + tableDataRight1: [], devpPos1:[ {dev_no: 116,pos:633980}, {dev_no: 117,pos:604043}, @@ -442,6 +493,7 @@ this.getTableDataTrack() this.getTableDataLeft() this.getTableDataRight() + this.getTableDataRight1() this.getValueSystem() this.getLicenseDays() @@ -451,6 +503,7 @@ this.getTableDataTrack() this.getTableDataLeft() this.getTableDataRight() + this.getTableDataRight1() this.getValueSystem() this.getLicenseDays() @@ -465,6 +518,18 @@ 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) } } }, @@ -537,6 +602,22 @@ 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}) { @@ -636,6 +717,22 @@ } }); }, + 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 -- Gitblit v1.9.1