src/main/java/com/zy/asrs/entity/BasShuttleErrLog.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/mapper/BasShuttleErrLogMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/BasShuttleErrLogService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/BasShuttleErrLogServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/BasShuttleErrLogMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/entity/BasShuttleErrLog.java
New file @@ -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; } } src/main/java/com/zy/asrs/mapper/BasShuttleErrLogMapper.java
New file @@ -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> { } src/main/java/com/zy/asrs/service/BasShuttleErrLogService.java
New file @@ -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); } src/main/java/com/zy/asrs/service/impl/BasShuttleErrLogServiceImpl.java
New file @@ -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); } } } 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("四向穿梭车plc异常记录失败 ===>> [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("四向穿梭车plc异常记录修复失败 ===>> [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("四向穿梭车plc异常记录失败 ===>> [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("四向穿梭车plc异常记录修复失败 ===>> [id:{}] [errLogId:{}]", shuttleSlave.getId(), latest.getId()); } } } } } } /** * 堆垛机异常信息记录 */ private void recCrnErr(){ src/main/resources/mapper/BasShuttleErrLogMapper.xml
New file @@ -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>