pang.jiabao
2025-09-17 217fc3ea29c4e80e845df72c941ec9a2219af5dd
记录输送线异常日志
4个文件已添加
2个文件已修改
694 ■■■■■ 已修改文件
src/main/java/com/zy/core/MainProcess.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/entity/BasDevpErrLog.java 456 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/mapper/BasDevpErrLogMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/service/BasDevpErrLogService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/service/impl/BasDevpErrLogServiceImpl.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/service/impl/MainServiceImpl.java 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java
@@ -58,6 +58,9 @@
                    // 堆垛机异常信息记录
                    mainService.recCrnErr(7);
                    // 输送线异常信息记录
                    mainService.recDevpErr();
                    // 入库  ===>> 空栈板初始化入库,叉车入库站放货
                    mainService.storeEmptyPlt(8);
src/main/java/com/zy/entity/BasDevpErrLog.java
New file
@@ -0,0 +1,456 @@
package com.zy.entity;
import com.baomidou.mybatisplus.annotations.TableField;
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.system.entity.User;
import com.zy.system.service.UserService;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
@TableName("asr_bas_devp_err_log")
public class BasDevpErrLog implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ID
     */
    @ApiModelProperty(value= "ID")
    @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")
    private Date startTime;
    /**
     * 结束时间
     */
    @ApiModelProperty(value= "结束时间")
    @TableField("end_time")
    private Date endTime;
    /**
     * 工作状态
     */
    @ApiModelProperty(value= "工作状态")
    @TableField("wrk_sts")
    private Long wrkSts;
    /**
     * 入出库类型
     */
    @ApiModelProperty(value= "入出库类型")
    @TableField("io_type")
    private Integer ioType;
    /**
     * 堆垛机
     */
    @ApiModelProperty(value= "堆垛机")
    @TableField("crn_no")
    private Integer crnNo;
    /**
     * 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")
    private Date createTime;
    /**
     * 添加人员
     */
    @ApiModelProperty(value= "添加人员")
    @TableField("create_by")
    private Long createBy;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @TableField("update_time")
    private Date updateTime;
    /**
     * 修改人员
     */
    @ApiModelProperty(value= "修改人员")
    @TableField("update_by")
    private Long updateBy;
    /**
     * 备注
     */
    @ApiModelProperty(value= "备注")
    private String memo;
    public BasDevpErrLog() {}
    public BasDevpErrLog(String uuid, Integer wrkNo, Date startTime, Date endTime, Long wrkSts, Integer ioType, Integer crnNo, 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.crnNo = crnNo;
        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;
    }
//    BasErrLog basErrLog = new BasErrLog(
//            null,    // 编号
//            null,    // 工作号
//            null,    // 发生时间
//            null,    // 结束时间
//            null,    // 工作状态
//            null,    // 入出库类型
//            null,    // 堆垛机
//            null,    // plc
//            null,    // 目标库位
//            null,    // 目标站
//            null,    // 源站
//            null,    // 源库位
//            null,    // 条码
//            null,    // 异常码
//            null,    // 异常
//            null,    // 异常情况
//            null,    // 添加时间
//            null,    // 添加人员
//            null,    // 修改时间
//            null,    // 修改人员
//            null    // 备注
//    );
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getUuid() {
        return uuid;
    }
    public void setUuid(String uuid) {
        this.uuid = uuid;
    }
    public Integer getWrkNo() {
        return wrkNo;
    }
    public void setWrkNo(Integer wrkNo) {
        this.wrkNo = wrkNo;
    }
    public Date getStartTime() {
        return startTime;
    }
    public String getStartTime$(){
        if (Cools.isEmpty(this.startTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.startTime);
    }
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }
    public Date getEndTime() {
        return endTime;
    }
    public String getEndTime$(){
        if (Cools.isEmpty(this.endTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime);
    }
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }
    public Long getWrkSts() {
        return wrkSts;
    }
    public void setWrkSts(Long wrkSts) {
        this.wrkSts = wrkSts;
    }
    public Integer getIoType() {
        return ioType;
    }
    public void setIoType(Integer ioType) {
        this.ioType = ioType;
    }
    public Integer getCrnNo() {
        return crnNo;
    }
    public void setCrnNo(Integer crnNo) {
        this.crnNo = crnNo;
    }
    public Integer getPlcNo() {
        return plcNo;
    }
    public void setPlcNo(Integer plcNo) {
        this.plcNo = plcNo;
    }
    public String getLocNo() {
        return locNo;
    }
    public void setLocNo(String locNo) {
        this.locNo = locNo;
    }
    public Integer getStaNo() {
        return staNo;
    }
    public void setStaNo(Integer staNo) {
        this.staNo = staNo;
    }
    public Integer getSourceStaNo() {
        return sourceStaNo;
    }
    public void setSourceStaNo(Integer sourceStaNo) {
        this.sourceStaNo = sourceStaNo;
    }
    public String getSourceLocNo() {
        return sourceLocNo;
    }
    public void setSourceLocNo(String sourceLocNo) {
        this.sourceLocNo = sourceLocNo;
    }
    public String getBarcode() {
        return barcode;
    }
    public void setBarcode(String barcode) {
        this.barcode = barcode;
    }
    public Integer getErrCode() {
        return errCode;
    }
    public void setErrCode(Integer errCode) {
        this.errCode = errCode;
    }
    public String getError() {
        return error;
    }
    public void setError(String error) {
        this.error = error;
    }
    public Integer getStatus() {
        return status;
    }
    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 void setStatus(Integer status) {
        this.status = status;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public String getCreateTime$(){
        if (Cools.isEmpty(this.createTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Long getCreateBy() {
        return createBy;
    }
    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 void setCreateBy(Long createBy) {
        this.createBy = createBy;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public String getUpdateTime$(){
        if (Cools.isEmpty(this.updateTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public Long getUpdateBy() {
        return updateBy;
    }
    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;
    }
    public void setUpdateBy(Long updateBy) {
        this.updateBy = updateBy;
    }
    public String getMemo() {
        return memo;
    }
    public void setMemo(String memo) {
        this.memo = memo;
    }
}
src/main/java/com/zy/mapper/BasDevpErrLogMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.entity.BasDevpErrLog;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface BasDevpErrLogMapper extends BaseMapper<BasDevpErrLog> {
}
src/main/java/com/zy/service/BasDevpErrLogService.java
New file
@@ -0,0 +1,11 @@
package com.zy.service;
import com.baomidou.mybatisplus.service.IService;
import com.zy.entity.BasDevpErrLog;
public interface BasDevpErrLogService extends IService<BasDevpErrLog> {
    BasDevpErrLog findLatestByTaskNo(Integer sourceStaNo, Integer taskNo);
    BasDevpErrLog findLatest(Integer sourceStaNo);
}
src/main/java/com/zy/service/impl/BasDevpErrLogServiceImpl.java
New file
@@ -0,0 +1,35 @@
package com.zy.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.zy.entity.BasDevpErrLog;
import com.zy.mapper.BasDevpErrLogMapper;
import com.zy.service.BasDevpErrLogService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("basDevpErrLogService")
public class BasDevpErrLogServiceImpl extends ServiceImpl<BasDevpErrLogMapper, BasDevpErrLog> implements BasDevpErrLogService {
    @Override
    public BasDevpErrLog findLatestByTaskNo(Integer sourceStaNo, Integer taskNo) {
        List<BasDevpErrLog> basErrLogs = this.baseMapper.selectList(new EntityWrapper<BasDevpErrLog>().eq("source_sta_no", sourceStaNo).eq("wrk_no", taskNo).orderBy("start_time", false));
        if (basErrLogs == null || basErrLogs.size() == 0) {
            return null;
        } else {
            return basErrLogs.get(0);
        }
    }
    @Override
    public BasDevpErrLog findLatest(Integer sourceStaNo) {
        List<BasDevpErrLog> basErrLogs = this.baseMapper.selectList(new EntityWrapper<BasDevpErrLog>().eq("source_sta_no", sourceStaNo).orderBy("start_time", false));
        if (basErrLogs == null || basErrLogs.size() == 0) {
            return null;
        } else {
            return basErrLogs.get(0);
        }
    }
}
src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -39,10 +39,8 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -88,6 +86,9 @@
    private WrkMastService wrkMastService;
    @Autowired
    private BasRgvMapService basRgvMapService;
    @Resource
    private BasDevpErrLogService basDevpErrLogService;
    @Value("${wms.url}")
    private String wmsUrl;
@@ -1123,6 +1124,174 @@
    }
    /**
     * 输送线异常
     */
    public synchronized void recDevpErr() {
        Date now = new Date();
        for (DevpSlave devp : slaveProperties.getDevp()) {
            Integer devpId = devp.getId();
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devpId);
            Map<Integer, StaProtocol> station = devpThread.getStation();
            for (Map.Entry<Integer, StaProtocol> entry : station.entrySet()) {
                Integer siteNo = entry.getKey();
                StaProtocol staProtocol = entry.getValue();
                Integer workNo = staProtocol.getWorkNo();
                // 输送线报警
                String plcErr = staPlcErr(staProtocol);
                if (staProtocol.isAutoing()) {
                    // 有任务
                    if (staProtocol.getWorkNo() != 0 && staProtocol.getWorkNo() <= 9000) {
                        // 获取输送线报警信息
                        BasDevpErrLog latestByTaskNo = basDevpErrLogService.findLatestByTaskNo(siteNo, workNo);
                        // 有异常
                        if (latestByTaskNo == null) {
                            if (!plcErr.equals("")) {
                                WrkMast wrkMast = wrkMastMapper.selectById(workNo);
                                if (wrkMast == null) {
                                    continue;
                                }
                                BasDevpErrLog basErrLog = new BasDevpErrLog(
                                        null,    // 编号
                                        wrkMast.getWrkNo(),    // 工作号
                                        now,    // 发生时间
                                        null,    // 结束时间
                                        wrkMast.getWrkSts(),    // 工作状态
                                        wrkMast.getIoType(),    // 入出库类型
                                        wrkMast.getCrnNo(),    // 堆垛机
                                        devpId,    // plc
                                        wrkMast.getLocNo(),    // 目标库位
                                        wrkMast.getStaNo(),    // 目标站
                                        siteNo,    // 源站
                                        wrkMast.getSourceLocNo(),    // 源库位
                                        wrkMast.getBarcode(),    // 条码
                                        0,    // 异常码
                                        plcErr,    // 异常
                                        1,    // 异常情况
                                        now,    // 添加时间
                                        null,    // 添加人员
                                        now,    // 修改时间
                                        null,    // 修改人员
                                        "任务中异常"    // 备注
                                );
                                if (!basDevpErrLogService.insert(basErrLog)) {
                                    log.error("输送线异常信息插入表asr_bas_devp_err_log异常:{}", basErrLog);
                                }
                            }
                        } else {
                            // 异常修复
                            if (plcErr.equals("")) {
                                latestByTaskNo.setEndTime(now);
                                latestByTaskNo.setUpdateTime(now);
                                latestByTaskNo.setStatus(2);
                                if (!basDevpErrLogService.updateById(latestByTaskNo)) {
                                    log.error("输送线异常记录修复失败asr_bas_devp_err_log异常:{}", latestByTaskNo);
                                }
                            }
                        }
                        // 无任务
                    } else {
                        BasDevpErrLog latest = basDevpErrLogService.findLatest(siteNo);
                        // 有异常
                        if (!plcErr.equals("")) {
                            // 记录新异常
                            if (latest == null || !latest.getError().equals(plcErr) || latest.getStatus() == 2 ) {
                                BasDevpErrLog basErrLog = new BasDevpErrLog(
                                        null,    // 编号
                                        null,    // 工作号
                                        now,    // 发生时间
                                        null,    // 结束时间
                                        null,    // 工作状态
                                        null,    // 入出库类型
                                        0,    // 堆垛机
                                        devpId,    // plc
                                        null,    // 目标库位
                                        null,    // 目标站
                                        siteNo,    // 源站
                                        null,    // 源库位
                                        null,    // 条码
                                        0,    // 异常码
                                        plcErr,    // 异常
                                        1,    // 异常情况
                                        now,    // 添加时间
                                        null,    // 添加人员
                                        now,    // 修改时间
                                        null,    // 修改人员
                                        "无任务异常"    // 备注
                                );
                                if (!basDevpErrLogService.insert(basErrLog)) {
                                    log.error("输送线异常记录asr_bas_devp_err_log异常:{}", basErrLog);
                                }
                            }
                            // 无异常
                        } else {
                            // 异常修复
                            if (latest != null && latest.getStatus() == 1) {
                                latest.setEndTime(now);
                                latest.setUpdateTime(now);
                                latest.setStatus(2);
                                if (!basDevpErrLogService.updateById(latest)) {
                                    log.error("输送线异常记录修复失败asr_bas_devp_err_log异常:{}", latest);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    // 获取输送线报警
    public String staPlcErr(StaProtocol staProtocol){
        Integer siteId = staProtocol.getSiteId();
        if (staProtocol.getBreakerErr()){
            return "断路器故障";
        }
        if (staProtocol.getInfraredErr()){
            return "光电异常";
        }
        if (staProtocol.getOutTimeErr()){
            return "运行超时";
        }
        if (staProtocol.getSeizeSeatErr()){
            return "占位超时";
        }
        if (staProtocol.getWrkYgoodsN()){
            return "有任务无货故障";
        }
        if (staProtocol.getInverterErr()){
            return "变频器故障";
        }
        if (staProtocol.getContactErr()){
            return "电机接触器故障";
        }
        if (staProtocol.getUpcontactErr()){
            return "顶升电机接触器故障";
        }
        if (staProtocol.isFrontErr()){
            return "前超限";
        }
        if (staProtocol.isBackErr()){
            return "后超限";
        }
        if (staProtocol.isHighErr()){
            return "高超限";
        }
        if (staProtocol.isLeftErr()){
            return "左超限";
        }
        if (staProtocol.isRightErr()){
            return "右超限";
        }
        if (staProtocol.isBarcodeErr() && siteId != 1083 && siteId != 1086 && siteId != 1089 ){
            return "扫码失败";
        }
        return "";
    }
    /**
     * 出库  ===>> 工作档信息写入led显示器
     */
    public synchronized void ledExecute(Integer mark) {