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