#
luxiaotao1123
2022-03-09 462e0f4475665ec5596965bfb2a91b19badba446
#
2个文件已修改
5个文件已添加
349 ■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/BasSte.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/BasSteMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/BasSteService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/BasSteServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SteThread.java 137 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BasSteMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/BasSte.java
New file
@@ -0,0 +1,134 @@
package com.zy.asrs.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 io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
@Data
@TableName("asr_bas_ste")
public class BasSte implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 穿梭车号
     */
    @ApiModelProperty(value= "穿梭车号")
    @TableId(value = "ste_no", type = IdType.INPUT)
    @TableField("ste_no")
    private Integer steNo;
    /**
     * 可入
     */
    @ApiModelProperty(value= "可入")
    @TableField("in_enable")
    private String inEnable;
    /**
     * 可出
     */
    @ApiModelProperty(value= "可出")
    @TableField("out_enable")
    private String outEnable;
    /**
     * 状态
     */
    @ApiModelProperty(value= "状态")
    @TableField("ste_sts")
    private Integer steSts;
    /**
     * 任务号
     */
    @ApiModelProperty(value= "任务号")
    @TableField("wrk_no")
    private Integer wrkNo;
    /**
     * 任务号
     */
    @ApiModelProperty(value= "堆垛机号")
    @TableField("crn_no")
    private Integer crnNo;
    /**
     * 错误码
     */
    @ApiModelProperty(value= "错误码")
    @TableField("ste_err")
    private Long steErr;
    /**
     * 标记
     */
    @ApiModelProperty(value= "标记")
    @TableField("pak_mk")
    private String pakMk;
    @ApiModelProperty(value= "")
    private Integer status;
    /**
     * 添加人员
     */
    @ApiModelProperty(value= "添加人员")
    @TableField("create_by")
    private Long createBy;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @TableField("create_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 修改人员
     */
    @ApiModelProperty(value= "修改人员")
    @TableField("update_by")
    private Long updateBy;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @TableField("update_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
     * 备注
     */
    @ApiModelProperty(value= "备注")
    private String memo;
    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/BasSteMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.mapper;
import com.zy.asrs.entity.BasSte;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface BasSteMapper extends BaseMapper<BasSte> {
}
src/main/java/com/zy/asrs/service/BasSteService.java
New file
@@ -0,0 +1,10 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.BasSte;
import com.baomidou.mybatisplus.service.IService;
public interface BasSteService extends IService<BasSte> {
    BasSte findByCrnNo(Integer crnNo);
}
src/main/java/com/zy/asrs/service/impl/BasSteServiceImpl.java
New file
@@ -0,0 +1,30 @@
package com.zy.asrs.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.mapper.BasSteMapper;
import com.zy.asrs.entity.BasSte;
import com.zy.asrs.service.BasSteService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@Service("basSteService")
public class BasSteServiceImpl extends ServiceImpl<BasSteMapper, BasSte> implements BasSteService {
    @Override
    public BasSte findByCrnNo(Integer crnNo) {
        List<BasSte> basStes = this.selectList(new EntityWrapper<BasSte>().eq("crn_no", crnNo));
        if (Cools.isEmpty(basStes)) {
            return null;
        }
        if (basStes.size() > 1) {
            log.warn("目前有{}台穿梭车归属于{}号堆垛机!!!", basStes.size(), crnNo);
        }
        return basStes.get(0);
    }
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -85,6 +85,8 @@
    private BasErrLogService basErrLogService;
    @Autowired
    private BasCrnErrorMapper basCrnErrorMapper;
    @Autowired
    private BasSteService basSteService;
    @Value("${wms.url}")
    private String wmsUrl;
src/main/java/com/zy/core/thread/SteThread.java
@@ -4,19 +4,15 @@
import HslCommunication.Core.Types.OperateResultExOne;
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.alibaba.fastjson.JSON;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.BasCrnOpt;
import com.zy.asrs.entity.BasCrnp;
import com.zy.asrs.service.BasCrnOptService;
import com.zy.asrs.service.BasCrnpService;
import com.zy.core.ThreadHandler;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.enums.CrnStatusType;
import com.zy.core.enums.CrnTaskModeType;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.SteSlave;
import com.zy.core.model.Task;
@@ -158,16 +154,16 @@
                if (null == steProtocol) {
                    steProtocol = new SteProtocol();
                }
                steProtocol.setMode(siemensS7Net.getByteTransform().TransInt16(result.Content, 0));
                steProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 2));
                steProtocol.setStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 4));
                steProtocol.setBay(siemensS7Net.getByteTransform().TransInt16(result.Content, 6));
                steProtocol.setLevel(siemensS7Net.getByteTransform().TransInt16(result.Content, 8));
                steProtocol.setForkPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 10));
                steProtocol.setLiftPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 12));
                steProtocol.setWalkPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 14));
                steProtocol.setLoaded(siemensS7Net.getByteTransform().TransInt16(result.Content, 16));
                steProtocol.setAlarm(siemensS7Net.getByteTransform().TransInt16(result.Content, 18));
//                steProtocol.setMode(siemensS7Net.getByteTransform().TransInt16(result.Content, 0));
//                steProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 2));
//                steProtocol.setStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 4));
//                steProtocol.setBay(siemensS7Net.getByteTransform().TransInt16(result.Content, 6));
//                steProtocol.setLevel(siemensS7Net.getByteTransform().TransInt16(result.Content, 8));
//                steProtocol.setForkPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 10));
//                steProtocol.setLiftPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 12));
//                steProtocol.setWalkPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 14));
//                steProtocol.setLoaded(siemensS7Net.getByteTransform().TransInt16(result.Content, 16));
//                steProtocol.setAlarm(siemensS7Net.getByteTransform().TransInt16(result.Content, 18));
                OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
@@ -175,7 +171,7 @@
                if (steProtocol.getStatusType().equals(CrnStatusType.WAITING)) {
                    if (resetFlag) {
                        SteCommand steCommand = new SteCommand();
                        steCommand.setAckFinish((short)1);
//                        steCommand.setAckFinish((short)1);
                        if (write(steCommand)) {
                            resetFlag = false;
                        }
@@ -209,61 +205,62 @@
     * 写入数据
     */
    private boolean write(SteCommand command){
        if (null == command) {
            log.error("穿梭车写入命令为空");
            return false;
        }
        command.setCrnNo(slave.getId());
        short[] array = new short[10];
        array[0] = command.getAckFinish();
        array[1] = command.getTaskNo();
        array[2] = command.getTaskMode();
        array[3] = command.getSourcePosX();
        array[4] = command.getSourcePosY();
        array[5] = command.getSourcePosZ();
        array[6] = command.getDestinationPosX();
        array[7] = command.getDestinationPosY();
        array[8] = command.getDestinationPosZ();
        array[9] = command.getCommand();
        OperateResult result = siemensS7Net.Write("D0", array);
        if (command.getAckFinish() == 0) {
            short commandFinish = 1;
            result = siemensS7Net.Write("D9", commandFinish);
        }
        try {
            // 日志记录
            BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class);
            BasCrnOpt basCrnOpt = new BasCrnOpt(
                    command.getTaskNo().intValue(),    // 任务号
                    command.getCrnNo(),    // 穿梭车[非空]
                    new Date(),    // 下发时间
                    command.getTaskModeType().toString(),    // 模式
                    command.getSourcePosX().intValue(),    // 源排
                    command.getSourcePosY().intValue(),    // 源列
                    command.getSourcePosZ().intValue(),    // 源层
                    null,    // 源站
                    command.getDestinationPosX().intValue(),    // 目标排
                    command.getDestinationPosY().intValue(),    // 目标列
                    command.getDestinationPosZ().intValue(),    // 目标层
                    null,    // 目标站
                    null,    // 响应结果
                    null,    // 修改时间
                    null    // 修改人员
            );
            bean.insert(basCrnOpt);
        } catch (Exception ignore) {}
        if (result.IsSuccess) {
            log.info("穿梭车命令下发[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
            OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
            return true;
        } else {
            OutputQueue.CRN.offer(MessageFormat.format("【{0}】写入穿梭车plc数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
            log.error("写入穿梭车plc数据失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
            return false;
        }
        return true;
//        if (null == command) {
//            log.error("穿梭车写入命令为空");
//            return false;
//        }
//        command.setCrnNo(slave.getId());
//        short[] array = new short[10];
//        array[0] = command.getAckFinish();
//        array[1] = command.getTaskNo();
//        array[2] = command.getTaskMode();
//        array[3] = command.getSourcePosX();
//        array[4] = command.getSourcePosY();
//        array[5] = command.getSourcePosZ();
//        array[6] = command.getDestinationPosX();
//        array[7] = command.getDestinationPosY();
//        array[8] = command.getDestinationPosZ();
//        array[9] = command.getCommand();
//        OperateResult result = siemensS7Net.Write("D0", array);
//
//        if (command.getAckFinish() == 0) {
//            short commandFinish = 1;
//            result = siemensS7Net.Write("D9", commandFinish);
//        }
//
//        try {
//            // 日志记录
//            BasCrnOptService bean = SpringUtils.getBean(BasCrnOptService.class);
//            BasCrnOpt basCrnOpt = new BasCrnOpt(
//                    command.getTaskNo().intValue(),    // 任务号
//                    command.getCrnNo(),    // 穿梭车[非空]
//                    new Date(),    // 下发时间
//                    command.getTaskModeType().toString(),    // 模式
//                    command.getSourcePosX().intValue(),    // 源排
//                    command.getSourcePosY().intValue(),    // 源列
//                    command.getSourcePosZ().intValue(),    // 源层
//                    null,    // 源站
//                    command.getDestinationPosX().intValue(),    // 目标排
//                    command.getDestinationPosY().intValue(),    // 目标列
//                    command.getDestinationPosZ().intValue(),    // 目标层
//                    null,    // 目标站
//                    null,    // 响应结果
//                    null,    // 修改时间
//                    null    // 修改人员
//            );
//            bean.insert(basCrnOpt);
//        } catch (Exception ignore) {}
//
//        if (result.IsSuccess) {
//            log.info("穿梭车命令下发[id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
//            OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] >>>>> 命令下发: {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
//            return true;
//        } else {
//            OutputQueue.CRN.offer(MessageFormat.format("【{0}】写入穿梭车plc数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
//            log.error("写入穿梭车plc数据失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
//            return false;
//        }
    }
    @Override
src/main/resources/mapper/BasSteMapper.xml
New file
@@ -0,0 +1,24 @@
<?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.BasSteMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasSte">
        <result column="ste_no" property="steNo" />
        <result column="in_enable" property="inEnable" />
        <result column="out_enable" property="outEnable" />
        <result column="ste_sts" property="steSts" />
        <result column="wrk_no" property="wrkNo" />
        <result column="crn_no" property="crnNo" />
        <result column="ste_err" property="steErr" />
        <result column="pak_mk" property="pakMk" />
        <result column="status" property="status" />
        <result column="create_by" property="createBy" />
        <result column="create_time" property="createTime" />
        <result column="update_by" property="updateBy" />
        <result column="update_time" property="updateTime" />
        <result column="memo" property="memo" />
    </resultMap>
</mapper>