From d91105438a87e013c6de439af89e49f055827b65 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 10 四月 2023 16:53:02 +0800
Subject: [PATCH] 四向穿梭车异常记录
---
src/main/java/com/zy/asrs/mapper/BasShuttleErrLogMapper.java | 12 +
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 123 +++++++++++++
src/main/java/com/zy/asrs/entity/BasShuttleErrLog.java | 283 +++++++++++++++++++++++++++++++
src/main/java/com/zy/asrs/service/BasShuttleErrLogService.java | 12 +
src/main/resources/mapper/BasShuttleErrLogMapper.xml | 32 +++
src/main/java/com/zy/asrs/service/impl/BasShuttleErrLogServiceImpl.java | 36 ++++
6 files changed, 498 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/BasShuttleErrLog.java b/src/main/java/com/zy/asrs/entity/BasShuttleErrLog.java
new file mode 100644
index 0000000..adf304d
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasShuttleErrLog.java
@@ -0,0 +1,283 @@
+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.core.common.SpringUtils;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("asr_bas_shuttle_err_log")
+public class BasShuttleErrLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value= "")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 缂栧彿
+ */
+ @ApiModelProperty(value= "缂栧彿")
+ private String uuid;
+
+ /**
+ * 宸ヤ綔鍙�
+ */
+ @ApiModelProperty(value= "宸ヤ綔鍙�")
+ @TableField("wrk_no")
+ private Integer wrkNo;
+
+ /**
+ * 鍙戠敓鏃堕棿
+ */
+ @ApiModelProperty(value= "鍙戠敓鏃堕棿")
+ @TableField("start_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date startTime;
+
+ /**
+ * 缁撴潫鏃堕棿
+ */
+ @ApiModelProperty(value= "缁撴潫鏃堕棿")
+ @TableField("end_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date endTime;
+
+ /**
+ * 宸ヤ綔鐘舵��
+ */
+ @ApiModelProperty(value= "宸ヤ綔鐘舵��")
+ @TableField("wrk_sts")
+ private Long wrkSts;
+
+ /**
+ * 鍏ュ嚭搴撶被鍨�
+ */
+ @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�")
+ @TableField("io_type")
+ private Integer ioType;
+
+ /**
+ * 绌挎杞�
+ */
+ @ApiModelProperty(value= "绌挎杞�")
+ @TableField("shuttle_no")
+ private Integer shuttleNo;
+
+ /**
+ * plc
+ */
+ @ApiModelProperty(value= "plc")
+ @TableField("plc_no")
+ private Integer plcNo;
+
+ /**
+ * 鐩爣搴撲綅
+ */
+ @ApiModelProperty(value= "鐩爣搴撲綅")
+ @TableField("loc_no")
+ private String locNo;
+
+ /**
+ * 鐩爣绔�
+ */
+ @ApiModelProperty(value= "鐩爣绔�")
+ @TableField("sta_no")
+ private Integer staNo;
+
+ /**
+ * 婧愮珯
+ */
+ @ApiModelProperty(value= "婧愮珯")
+ @TableField("source_sta_no")
+ private Integer sourceStaNo;
+
+ /**
+ * 婧愬簱浣�
+ */
+ @ApiModelProperty(value= "婧愬簱浣�")
+ @TableField("source_loc_no")
+ private String sourceLocNo;
+
+ /**
+ * 鏉$爜
+ */
+ @ApiModelProperty(value= "鏉$爜")
+ private String barcode;
+
+ /**
+ * 寮傚父鐮�
+ */
+ @ApiModelProperty(value= "寮傚父鐮�")
+ @TableField("err_code")
+ private Integer errCode;
+
+ /**
+ * 寮傚父
+ */
+ @ApiModelProperty(value= "寮傚父")
+ private String error;
+
+ /**
+ * 寮傚父鎯呭喌 1: 鏈鐞� 2: 宸蹭慨澶�
+ */
+ @ApiModelProperty(value= "寮傚父鎯呭喌 1: 鏈鐞� 2: 宸蹭慨澶� ")
+ private Integer status;
+
+ /**
+ * 娣诲姞鏃堕棿
+ */
+ @ApiModelProperty(value= "娣诲姞鏃堕棿")
+ @TableField("create_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**
+ * 娣诲姞浜哄憳
+ */
+ @ApiModelProperty(value= "娣诲姞浜哄憳")
+ @TableField("create_by")
+ private Long createBy;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @ApiModelProperty(value= "淇敼鏃堕棿")
+ @TableField("update_time")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
+ /**
+ * 淇敼浜哄憳
+ */
+ @ApiModelProperty(value= "淇敼浜哄憳")
+ @TableField("update_by")
+ private Long updateBy;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value= "澶囨敞")
+ private String memo;
+
+ public BasShuttleErrLog() {}
+
+ public BasShuttleErrLog(String uuid,Integer wrkNo,Date startTime,Date endTime,Long wrkSts,Integer ioType,Integer shuttleNo,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;
+ this.startTime = startTime;
+ this.endTime = endTime;
+ this.wrkSts = wrkSts;
+ this.ioType = ioType;
+ this.shuttleNo = shuttleNo;
+ this.plcNo = plcNo;
+ this.locNo = locNo;
+ this.staNo = staNo;
+ this.sourceStaNo = sourceStaNo;
+ this.sourceLocNo = sourceLocNo;
+ this.barcode = barcode;
+ this.errCode = errCode;
+ this.error = error;
+ this.status = status;
+ this.createTime = createTime;
+ this.createBy = createBy;
+ this.updateTime = updateTime;
+ this.updateBy = updateBy;
+ this.memo = memo;
+ }
+
+// BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog(
+// null, // 缂栧彿
+// null, // 宸ヤ綔鍙�
+// null, // 鍙戠敓鏃堕棿
+// null, // 缁撴潫鏃堕棿
+// null, // 宸ヤ綔鐘舵��
+// null, // 鍏ュ嚭搴撶被鍨�
+// null, // 绌挎杞�
+// null, // plc
+// null, // 鐩爣搴撲綅
+// null, // 鐩爣绔�
+// null, // 婧愮珯
+// null, // 婧愬簱浣�
+// null, // 鏉$爜
+// null, // 寮傚父鐮�
+// null, // 寮傚父
+// null, // 寮傚父鎯呭喌
+// null, // 娣诲姞鏃堕棿
+// null, // 娣诲姞浜哄憳
+// null, // 淇敼鏃堕棿
+// null, // 淇敼浜哄憳
+// null // 澶囨敞
+// );
+
+ public String getStartTime$(){
+ if (Cools.isEmpty(this.startTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.startTime);
+ }
+
+ public String getEndTime$(){
+ if (Cools.isEmpty(this.endTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime);
+ }
+
+ public String getStatus$(){
+ if (null == this.status){ return null; }
+ switch (this.status){
+ case 1:
+ return "鏈鐞�";
+ case 2:
+ return "宸蹭慨澶�";
+ default:
+ return String.valueOf(this.status);
+ }
+ }
+
+ public String getCreateTime$(){
+ if (Cools.isEmpty(this.createTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+ }
+
+ public String getCreateBy$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.selectById(this.createBy);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getUsername());
+ }
+ return null;
+ }
+
+ public String getUpdateTime$(){
+ if (Cools.isEmpty(this.updateTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+ }
+
+ public String getUpdateBy$(){
+ UserService service = SpringUtils.getBean(UserService.class);
+ User user = service.selectById(this.updateBy);
+ if (!Cools.isEmpty(user)){
+ return String.valueOf(user.getUsername());
+ }
+ return null;
+ }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/BasShuttleErrLogMapper.java b/src/main/java/com/zy/asrs/mapper/BasShuttleErrLogMapper.java
new file mode 100644
index 0000000..1486327
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/BasShuttleErrLogMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.BasShuttleErrLog;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BasShuttleErrLogMapper extends BaseMapper<BasShuttleErrLog> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/BasShuttleErrLogService.java b/src/main/java/com/zy/asrs/service/BasShuttleErrLogService.java
new file mode 100644
index 0000000..6b85a7b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/BasShuttleErrLogService.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.BasShuttleErrLog;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface BasShuttleErrLogService extends IService<BasShuttleErrLog> {
+
+ BasShuttleErrLog findLatestByTaskNo(Integer crnNo, Integer taskNo);
+
+ BasShuttleErrLog findLatest(Integer crnNo);
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasShuttleErrLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasShuttleErrLogServiceImpl.java
new file mode 100644
index 0000000..4501a67
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/BasShuttleErrLogServiceImpl.java
@@ -0,0 +1,36 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.BasErrLog;
+import com.zy.asrs.mapper.BasShuttleErrLogMapper;
+import com.zy.asrs.entity.BasShuttleErrLog;
+import com.zy.asrs.service.BasShuttleErrLogService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service("basShuttleErrLogService")
+public class BasShuttleErrLogServiceImpl extends ServiceImpl<BasShuttleErrLogMapper, BasShuttleErrLog> implements BasShuttleErrLogService {
+
+ @Override
+ public BasShuttleErrLog findLatestByTaskNo(Integer shuttleNo, Integer taskNo) {
+ List<BasShuttleErrLog> basShuttleErrLogs = this.baseMapper.selectList(new EntityWrapper<BasShuttleErrLog>().eq("shuttle_no", shuttleNo).eq("wrk_no", taskNo).orderBy("start_time", false));
+ if (basShuttleErrLogs == null || basShuttleErrLogs.size() == 0) {
+ return null;
+ } else {
+ return basShuttleErrLogs.get(0);
+ }
+ }
+
+ @Override
+ public BasShuttleErrLog findLatest(Integer shuttleNo) {
+ List<BasShuttleErrLog> basShuttleErrLogs = this.baseMapper.selectList(new EntityWrapper<BasShuttleErrLog>().eq("shuttle_no", shuttleNo).orderBy("start_time", false));
+ if (basShuttleErrLogs == null || basShuttleErrLogs.size() == 0) {
+ return null;
+ } else {
+ return basShuttleErrLogs.get(0);
+ }
+ }
+
+}
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 c3a8563..92fe3d4 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -68,6 +68,10 @@
@Autowired
private BasSteErrLogService basSteErrLogService;
@Autowired
+ private BasShuttleErrLogService basShuttleErrLogService;
+ @Autowired
+ private BasShuttleErrService basShuttleErrService;
+ @Autowired
private BasCrnErrorMapper basCrnErrorMapper;
@Autowired
private BasSteService basSteService;
@@ -2918,6 +2922,7 @@
*/
public void recErr() {
try {
+ this.recShuttleErr();
this.recCrnErr();
this.recSteErr();
} catch (Exception e) {
@@ -2926,6 +2931,124 @@
}
/**
+ * 鍥涘悜绌挎杞﹀紓甯镐俊鎭褰�
+ */
+ private void recShuttleErr() {
+ Date now = new Date();
+ for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) {
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId());
+ if (shuttleThread == null) {
+ continue;
+ }
+ ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null) {
+ continue;
+ }
+
+ if (shuttleProtocol.getTaskNo() != 0) {
+ //鏈変换鍔�
+ BasShuttleErrLog latest = basShuttleErrLogService.findLatestByTaskNo(shuttleSlave.getId(), shuttleProtocol.getTaskNo().intValue());
+ // 鏈夊紓甯�
+ if (latest == null) {
+ if (shuttleProtocol.getStatusErrorCode() != null && shuttleProtocol.getStatusErrorCode() > 0) {
+ WrkMast wrkMast = wrkMastMapper.selectById(shuttleProtocol.getTaskNo());
+ if (wrkMast == null) {
+ continue;
+ }
+ BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getStatusErrorCode().intValue());
+ String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName();
+ BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog(
+ null, // 缂栧彿
+ wrkMast.getWrkNo(), // 宸ヤ綔鍙�
+ now, // 鍙戠敓鏃堕棿
+ null, // 缁撴潫鏃堕棿
+ wrkMast.getWrkSts(), // 宸ヤ綔鐘舵��
+ wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨�
+ shuttleSlave.getId(), // 鍥涘悜绌挎杞�
+ null, // plc
+ wrkMast.getLocNo(), // 鐩爣搴撲綅
+ wrkMast.getStaNo(), // 鐩爣绔�
+ wrkMast.getSourceStaNo(), // 婧愮珯
+ wrkMast.getSourceLocNo(), // 婧愬簱浣�
+ wrkMast.getBarcode(), // 鏉$爜
+ (int) shuttleProtocol.getStatusErrorCode(), // 寮傚父鐮�
+ errName, // 寮傚父
+ 1, // 寮傚父鎯呭喌
+ now, // 娣诲姞鏃堕棿
+ null, // 娣诲姞浜哄憳
+ now, // 淇敼鏃堕棿
+ null, // 淇敼浜哄憳
+ "浠诲姟涓紓甯�" // 澶囨敞
+ );
+ if (!basShuttleErrLogService.insert(basShuttleErrLog)) {
+ News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName);
+ }
+ }
+ } else {
+ // 寮傚父淇
+ if (shuttleProtocol.getStatusErrorCode() == null || shuttleProtocol.getStatusErrorCode() == 0) {
+ latest.setEndTime(now);
+ latest.setUpdateTime(now);
+ latest.setStatus(2);
+ if (!basShuttleErrLogService.updateById(latest)) {
+ News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", shuttleSlave.getId(), latest.getId());
+ }
+ }
+ }
+ }else {
+ //鏃犱换鍔�
+ BasShuttleErrLog latest = basShuttleErrLogService.findLatest(shuttleSlave.getId());
+ // 鏈夊紓甯�
+ if (shuttleProtocol.getStatusErrorCode() != null && shuttleProtocol.getStatusErrorCode() > 0) {
+ // 璁板綍鏂板紓甯�
+ if (latest == null || (latest.getErrCode() != shuttleProtocol.getStatusErrorCode().intValue())) {
+ BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getStatusErrorCode().intValue());
+ String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName();
+ BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog(
+ null, // 缂栧彿
+ null, // 宸ヤ綔鍙�
+ now, // 鍙戠敓鏃堕棿
+ null, // 缁撴潫鏃堕棿
+ null, // 宸ヤ綔鐘舵��
+ null, // 鍏ュ嚭搴撶被鍨�
+ shuttleSlave.getId(), // 鍥涘悜绌挎杞�
+ null, // plc
+ null, // 鐩爣搴撲綅
+ null, // 鐩爣绔�
+ null, // 婧愮珯
+ null, // 婧愬簱浣�
+ null, // 鏉$爜
+ (int)shuttleProtocol.getStatusErrorCode(), // 寮傚父鐮�
+ errName, // 寮傚父
+ 1, // 寮傚父鎯呭喌
+ now, // 娣诲姞鏃堕棿
+ null, // 娣诲姞浜哄憳
+ now, // 淇敼鏃堕棿
+ null, // 淇敼浜哄憳
+ "鏃犱换鍔″紓甯�" // 澶囨敞
+ );
+ if (!basShuttleErrLogService.insert(basShuttleErrLog)) {
+ News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName);
+ }
+ }
+ // 鏃犲紓甯�
+ } else {
+ // 寮傚父淇
+ if (latest != null && latest.getStatus() == 1) {
+ latest.setEndTime(now);
+ latest.setUpdateTime(now);
+ latest.setStatus(2);
+ if (!basShuttleErrLogService.updateById(latest)) {
+ News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", shuttleSlave.getId(), latest.getId());
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
* 鍫嗗灈鏈哄紓甯镐俊鎭褰�
*/
private void recCrnErr(){
diff --git a/src/main/resources/mapper/BasShuttleErrLogMapper.xml b/src/main/resources/mapper/BasShuttleErrLogMapper.xml
new file mode 100644
index 0000000..e554833
--- /dev/null
+++ b/src/main/resources/mapper/BasShuttleErrLogMapper.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.mapper.BasShuttleErrLogMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasShuttleErrLog">
+ <id column="id" property="id" />
+ <result column="uuid" property="uuid" />
+ <result column="wrk_no" property="wrkNo" />
+ <result column="start_time" property="startTime" />
+ <result column="end_time" property="endTime" />
+ <result column="wrk_sts" property="wrkSts" />
+ <result column="io_type" property="ioType" />
+ <result column="ste_no" property="steNo" />
+ <result column="plc_no" property="plcNo" />
+ <result column="loc_no" property="locNo" />
+ <result column="sta_no" property="staNo" />
+ <result column="source_sta_no" property="sourceStaNo" />
+ <result column="source_loc_no" property="sourceLocNo" />
+ <result column="barcode" property="barcode" />
+ <result column="err_code" property="errCode" />
+ <result column="error" property="error" />
+ <result column="status" property="status" />
+ <result column="create_time" property="createTime" />
+ <result column="create_by" property="createBy" />
+ <result column="update_time" property="updateTime" />
+ <result column="update_by" property="updateBy" />
+ <result column="memo" property="memo" />
+
+ </resultMap>
+
+</mapper>
--
Gitblit v1.9.1