#
tqs
2022-12-03 3f02e208daff9a760d3a0ea5680a0138e0a23e03
#
4个文件已修改
5个文件已添加
505 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/BasRgvErrLog.java 261 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/BasRgvErrLogMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/BasRgvErrLogService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/BasRgvErrLogServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/CodeBuilder.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BasRgvErrLogMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/BasRgvErrLog.java
New file
@@ -0,0 +1,261 @@
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 io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
@Data
@TableName("asr_bas_rgv_err_log")
public class BasRgvErrLog implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value= "")
    @TableId(value = "id", type = IdType.INPUT)
    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("rtv_no")
    private Integer rtvNo;
    /**
     * 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 BasRgvErrLog() {}
    public BasRgvErrLog(String uuid,Integer wrkNo,Date startTime,Date endTime,Long wrkSts,Integer ioType,Integer rtvNo,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.rtvNo = rtvNo;
        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;
    }
//    BasRgvErrLog basRgvErrLog = new BasRgvErrLog(
//            null,    // [非空]
//            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 getUpdateTime$(){
        if (Cools.isEmpty(this.updateTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
    }
}
src/main/java/com/zy/asrs/mapper/BasRgvErrLogMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.mapper;
import com.zy.asrs.entity.BasRgvErrLog;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface BasRgvErrLogMapper extends BaseMapper<BasRgvErrLog> {
}
src/main/java/com/zy/asrs/service/BasRgvErrLogService.java
New file
@@ -0,0 +1,13 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.BasErrLog;
import com.zy.asrs.entity.BasRgvErrLog;
import com.baomidou.mybatisplus.service.IService;
public interface BasRgvErrLogService extends IService<BasRgvErrLog> {
    BasRgvErrLog findLatestByTaskNo(Integer rgvNo, Integer taskNo);
    BasRgvErrLog findLatest(Integer rgvNo);
}
src/main/java/com/zy/asrs/service/impl/BasRgvErrLogServiceImpl.java
New file
@@ -0,0 +1,39 @@
package com.zy.asrs.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.entity.BasErrLog;
import com.zy.asrs.mapper.BasRgvErrLogMapper;
import com.zy.asrs.entity.BasRgvErrLog;
import com.zy.asrs.service.BasRgvErrLogService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("basRgvErrLogService")
public class BasRgvErrLogServiceImpl extends ServiceImpl<BasRgvErrLogMapper, BasRgvErrLog> implements BasRgvErrLogService {
    @Override
    public BasRgvErrLog findLatestByTaskNo(Integer rgvNo, Integer taskNo) {
        List<BasRgvErrLog> basRgvErrLog = this.baseMapper.selectList(new EntityWrapper<BasRgvErrLog>()
                .eq("rgv_no", rgvNo)
                .eq("wrk_no", taskNo)
                .orderBy("start_time", false));
        if (basRgvErrLog == null || basRgvErrLog.size() == 0) {
            return null;
        } else {
            return basRgvErrLog.get(0);
        }
    }
    @Override
    public BasRgvErrLog findLatest(Integer crnNo) {
        List<BasRgvErrLog> basErrLogs = this.baseMapper.selectList(new EntityWrapper<BasErrLog>().eq("crn_no", crnNo).orderBy("start_time", false));
        if (basErrLogs == null || basErrLogs.size() == 0) {
            return null;
        } else {
            return basErrLogs.get(0);
        }
    }
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -9,6 +9,7 @@
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.BasCrnErrorMapper;
import com.zy.asrs.mapper.BasRgvErrMapper;
import com.zy.asrs.mapper.WaitPakinMapper;
import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.service.*;
@@ -68,8 +69,6 @@
    @Autowired
    private WrkDetlService wrkDetlService;
    @Autowired
    private WaitPakinMapper waitPakinMapper;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private StaDescService staDescService;
@@ -85,6 +84,10 @@
    private BasErrLogService basErrLogService;
    @Autowired
    private BasCrnErrorMapper basCrnErrorMapper;
    @Autowired
    private BasRgvErrMapper basRgvErrMapper;
    @Autowired
    private BasRgvErrLogService basRgvErrLogService;
    @Value("${wms.url}")
    private String wmsUrl;
@@ -1736,6 +1739,138 @@
    }
    /**
     * 异常信息记录
     */
    public synchronized void recErr() {
        try {
            this.recCrnErr();
            this.recRgvErr();
        } catch (Exception e) {
            log.error("recErr fail", e);
        }
    }
    /**
     * RGV异常信息记录
     */
    public synchronized void recRgvErr() {
        Date now = new Date();
        for (RgvSlave rgv : slaveProperties.getRgv()) {
            // 获取RGV信息
            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
            if (rgvProtocol == null) {
                continue;
            }
            if (true) {
                // 有任务
                if (rgvProtocol.getTaskNo1() != 0 || rgvProtocol.getTaskNo2() != 0) {
                    Integer taskNo = rgvProtocol.getTaskNo1() > 0 ? rgvProtocol.getTaskNo1().intValue() : rgvProtocol.getTaskNo2().intValue();
                    BasRgvErrLog latest = basRgvErrLogService.findLatestByTaskNo(rgv.getId(), taskNo);
                    // 有异常
                    if (latest == null) {
                        if (rgvProtocol.getAlarm() != null && rgvProtocol.getAlarm() > 0) {
                            WrkMast wrkMast = wrkMastMapper.selectById(taskNo);
                            if (wrkMast == null) {
                                continue;
                            }
                            BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm());
                            String errName = rgvErr == null ? String.valueOf(rgvProtocol.getAlarm()) : rgvErr.getErrName();
                            BasRgvErrLog basRgvErrLog = new BasRgvErrLog(
                                    null,    // 编号
                                    wrkMast.getWrkNo(),    // 工作号
                                    now,    // 发生时间
                                    null,    // 结束时间
                                    wrkMast.getWrkSts(),    // 工作状态
                                    wrkMast.getIoType(),    // 入出库类型
                                    rgv.getId(),    // 堆垛机
                                    null,    // plc
                                    wrkMast.getLocNo(),    // 目标库位
                                    wrkMast.getStaNo(),    // 目标站
                                    wrkMast.getSourceStaNo(),    // 源站
                                    wrkMast.getSourceLocNo(),    // 源库位
                                    wrkMast.getBarcode(),    // 条码
                                    (int) rgvProtocol.getAlarm(),    // 异常码
                                    errName,    // 异常
                                    1,    // 异常情况
                                    now,    // 添加时间
                                    null,    // 添加人员
                                    now,    // 修改时间
                                    null,    // 修改人员
                                    "任务中异常"    // 备注
                            );
                            if (!basRgvErrLogService.insert(basRgvErrLog)) {
                                log.error("RGV异常记录失败 ===>> [id:{}] [error:{}]", rgv.getId(), errName);
                            }
                        }
                    } else {
                        // 异常修复
                        if (rgvProtocol.getAlarm() == null || rgvProtocol.getAlarm() == 0) {
                            latest.setEndTime(now);
                            latest.setUpdateTime(now);
                            latest.setStatus(2);
                            if (!basRgvErrLogService.updateById(latest)) {
                                log.error("堆垛机plc异常记录修复失败 ===>> [id:{}] [errLogId:{}]", rgv.getId(), latest.getId());
                            }
                        }
                    }
                    // 无任务
                } else {
                    BasRgvErrLog latest = basRgvErrLogService.findLatest(rgv.getId());
                    // 有异常
                    if (rgvProtocol.getAlarm() != null && rgvProtocol.getAlarm() > 0) {
                        // 记录新异常
                        if (latest == null || (latest.getErrCode() != rgvProtocol.getAlarm().intValue())) {
                            BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm());
                            String errName = rgvErr == null ? String.valueOf(rgvProtocol.getAlarm()) : rgvErr.getErrName();
                            BasRgvErrLog basRgvErrLog = new BasRgvErrLog(
                                    null,    // 编号
                                    null,    // 工作号
                                    now,    // 发生时间
                                    null,    // 结束时间
                                    null,    // 工作状态
                                    null,    // 入出库类型
                                    rgv.getId(),    // 堆垛机
                                    null,    // plc
                                    null,    // 目标库位
                                    null,    // 目标站
                                    null,    // 源站
                                    null,    // 源库位
                                    null,    // 条码
                                    (int) rgvProtocol.getAlarm(),    // 异常码
                                    errName,    // 异常
                                    1,    // 异常情况
                                    now,    // 添加时间
                                    null,    // 添加人员
                                    now,    // 修改时间
                                    null,    // 修改人员
                                    "无任务异常"    // 备注
                            );
                            if (!basRgvErrLogService.insert(basRgvErrLog)) {
                                log.error("RGV异常记录失败 ===>> [id:{}] [error:{}]", rgv.getId(), errName);
                            }
                        }
                        // 无异常
                    } else {
                        // 异常修复
                        if (latest != null && latest.getStatus() == 1) {
                            latest.setEndTime(now);
                            latest.setUpdateTime(now);
                            latest.setStatus(2);
                            if (!basRgvErrLogService.updateById(latest)) {
                                log.error("RGV异常记录修复失败 ===>> [id:{}] [errLogId:{}]", rgv.getId(), latest.getId());
                            }
                        }
                    }
                }
            }
        }
    }
    /**
     * 堆垛机异常信息记录
     */
    public synchronized void recCrnErr() {
@@ -1852,7 +1987,6 @@
        }
    }
    // -------------------------------------------------------------------------------
src/main/java/com/zy/common/CodeBuilder.java
@@ -20,7 +20,7 @@
        generator.url="localhost:1433;databasename=xjhsasrs";
        generator.username="sa";
        generator.password="sa@123";
        generator.table="asr_bas_rgv_err";
        generator.table="asr_bas_rgv_err_log";
        generator.packagePath="com.zy.asrs";
        generator.controller = false;
src/main/java/com/zy/core/MainProcess.java
@@ -72,8 +72,8 @@
//                    mainService.rgvOutDStnToOutStn();
                    //////////////////////////////////////////////////////////////////
                    // 堆垛机异常信息记录
                    mainService.recCrnErr();
                    // 异常信息记录
                    mainService.recErr();
                    // 入库  ===>> 空栈板初始化入库,叉车入库站放货
                    mainService.storeEmptyPlt();
                    // 出库  ===>> 工作档信息写入led显示器
src/main/resources/application.yml
@@ -36,7 +36,7 @@
  enable: false
wms:
  url: localhost:8080/stwms
  url: localhost:8080/hswms
# 下位机配置
wcs-slave:
src/main/resources/mapper/BasRgvErrLogMapper.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.BasRgvErrLogMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasRgvErrLog">
        <result 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="rtv_no" property="rtvNo" />
        <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>