whycq
2022-03-16 4dd1de806329aee03af0cf9f63521af1da81d2df
Merge remote-tracking branch 'origin/bfwcs' into bfwcs
7个文件已修改
5个文件已添加
374 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/CarController.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/BasSteErr.java 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/BasSteErrMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/BasSteErrService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/BasSteErrServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/CodeBuilder.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/command/SteCommand.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/SteProtocol.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SteThread.java 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BasSteErrMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkMastMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/CarController.java
@@ -1,7 +1,37 @@
package com.zy.asrs.controller;
import com.zy.asrs.service.BasSteErrService;
import com.zy.asrs.service.BasSteService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.service.impl.MainServiceImpl;
import com.zy.core.properties.SlaveProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * 穿梭车接口
 * Created by vincent on 2022/3/14
 */
@Slf4j
@RestController
@RequestMapping("/car")
public class CarController {
    private SlaveProperties slaveProperties;
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private BasSteErrService basSteErrService;
    @Autowired
    private BasSteService basSteService;
    @Autowired
    private MainServiceImpl mainService;
    @Autowired
    private LocMastService locMastService;
}
src/main/java/com/zy/asrs/entity/BasSteErr.java
New file
@@ -0,0 +1,148 @@
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 org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
@TableName("asr_bas_ste_err")
public class BasSteErr implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 异常码
     */
    @ApiModelProperty(value= "异常码")
    @TableId(value = "error_code", type = IdType.INPUT)
    @TableField("error_code")
    private Long errorCode;
    /**
     * 异常
     */
    @ApiModelProperty(value= "异常")
    @TableField("err_name")
    private String errName;
    /**
     * 修改人员
     */
    @ApiModelProperty(value= "修改人员")
    @TableField("modi_user")
    private Long modiUser;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @TableField("modi_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date modiTime;
    /**
     * 添加人员
     */
    @ApiModelProperty(value= "添加人员")
    @TableField("appe_user")
    private Long appeUser;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @TableField("appe_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date appeTime;
    public BasSteErr() {}
    public BasSteErr(Long errorCode,String errName,Long modiUser,Date modiTime,Long appeUser,Date appeTime) {
        this.errorCode = errorCode;
        this.errName = errName;
        this.modiUser = modiUser;
        this.modiTime = modiTime;
        this.appeUser = appeUser;
        this.appeTime = appeTime;
    }
//    BasSteErr basSteErr = new BasSteErr(
//            null,    // 异常码[非空]
//            null,    // 异常
//            null,    // 修改人员
//            null,    // 修改时间
//            null,    // 添加人员
//            null    // 添加时间
//    );
    public Long getErrorCode() {
        return errorCode;
    }
    public void setErrorCode(Long errorCode) {
        this.errorCode = errorCode;
    }
    public String getErrName() {
        return errName;
    }
    public void setErrName(String errName) {
        this.errName = errName;
    }
    public Long getModiUser() {
        return modiUser;
    }
    public void setModiUser(Long modiUser) {
        this.modiUser = modiUser;
    }
    public Date getModiTime() {
        return modiTime;
    }
    public String getModiTime$(){
        if (Cools.isEmpty(this.modiTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
    }
    public void setModiTime(Date modiTime) {
        this.modiTime = modiTime;
    }
    public Long getAppeUser() {
        return appeUser;
    }
    public void setAppeUser(Long appeUser) {
        this.appeUser = appeUser;
    }
    public Date getAppeTime() {
        return appeTime;
    }
    public String getAppeTime$(){
        if (Cools.isEmpty(this.appeTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
    }
    public void setAppeTime(Date appeTime) {
        this.appeTime = appeTime;
    }
}
src/main/java/com/zy/asrs/mapper/BasSteErrMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.mapper;
import com.zy.asrs.entity.BasSteErr;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface BasSteErrMapper extends BaseMapper<BasSteErr> {
}
src/main/java/com/zy/asrs/service/BasSteErrService.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.BasSteErr;
import com.baomidou.mybatisplus.service.IService;
public interface BasSteErrService extends IService<BasSteErr> {
}
src/main/java/com/zy/asrs/service/impl/BasSteErrServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.service.impl;
import com.zy.asrs.mapper.BasSteErrMapper;
import com.zy.asrs.entity.BasSteErr;
import com.zy.asrs.service.BasSteErrService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("basSteErrService")
public class BasSteErrServiceImpl extends ServiceImpl<BasSteErrMapper, BasSteErr> implements BasSteErrService {
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -220,20 +220,6 @@
        for (DevpSlave devp : slaveProperties.getDevp()) {
            // 遍历拣料入库口
            for (DevpSlave.Sta pickSta : devp.getPickSta()) {
                // 获取条码扫描仪信息
                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
                if (barcodeThread == null) {
                    continue;
                }
                String barcode = barcodeThread.getBarcode();
                if(!Cools.isEmpty(barcode)) {
                    log.info("{}号条码扫描器检测条码信息:{}", pickSta.getBarcode(), barcode);
                    if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
                        continue;
                    }
                } else {
                    continue;
                }
                // 获取拣料入库站信息
                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
@@ -244,6 +230,22 @@
                    staProtocol = staProtocol.clone();
                }
                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){
                    // 获取条码扫描仪信息
                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
                    if (barcodeThread == null) {
                        continue;
                    }
                    String barcode = barcodeThread.getBarcode();
                    if(!Cools.isEmpty(barcode)) {
                        log.info("{}号条码扫描器检测条码信息:{}", pickSta.getBarcode(), barcode);
                        if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
                            continue;
                        }
                    } else {
                        continue;
                    }
                    WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
                    if (wrkMast == null) {
                        // 无拣料数据
src/main/java/com/zy/common/CodeBuilder.java
@@ -18,7 +18,7 @@
        generator.url="localhost:1433;databasename=bfasrs";
        generator.username="sa";
        generator.password="sa@123";
        generator.table="asr_bas_ste_opt";
        generator.table="asr_bas_ste_err";
        generator.packagePath="com.zy.asrs";
        generator.controller = false;
src/main/java/com/zy/core/model/command/SteCommand.java
@@ -54,10 +54,10 @@
    private Short init;
    // 复位信号 1=复位
    private Short reset;
    private Boolean reset;
    // 删除指令 1=删除
    private Short delete;
    private Boolean delete;
    // 托盘间距 中间托盘之间距离 单位毫米
    private Short space;
src/main/java/com/zy/core/model/protocol/SteProtocol.java
@@ -71,7 +71,7 @@
    public Boolean lowCharge;
    /**
     * 电池馈电     0,正常,1馈电
     * 电池馈电    0,欠电,1低电 2满电
     */
    public Short feed;
src/main/java/com/zy/core/thread/SteThread.java
@@ -126,7 +126,7 @@
     */
    private void readStatus(){
        try {
            OperateResultExOne<byte[]> result = siemensS7Net.Read("DB4", (short) 70);
            OperateResultExOne<byte[]> result = siemensS7Net.Read("V800", (short) 70);
            if (result.IsSuccess) {
                if (null == steProtocol) {
                    steProtocol = new SteProtocol();
@@ -134,36 +134,42 @@
                steProtocol.setSteNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 0));
                steProtocol.setMode(siemensS7Net.getByteTransform().TransInt16(result.Content, 2));
                steProtocol.setStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 4));
//                steProtocol.setExecute();
//                steProtocol.setWaiting();
                OperateResultExOne<Boolean> executeRes = siemensS7Net.ReadBool("V2001.0");
                if (executeRes.IsSuccess) {
                    steProtocol.setExecute(executeRes.Content);
                }
                OperateResultExOne<Boolean> waitingRes = siemensS7Net.ReadBool("V2001.1");
                if (waitingRes.IsSuccess) {
                    steProtocol.setWaiting(waitingRes.Content);
                }
                steProtocol.setAlarm(siemensS7Net.getByteTransform().TransInt32(result.Content, 6));
                steProtocol.setAlarm0(siemensS7Net.getByteTransform().TransInt32(result.Content, 10));
                steProtocol.setCharge(siemensS7Net.getByteTransform().TransInt16(result.Content, 14));
                steProtocol.setAlarm0(siemensS7Net.getByteTransform().TransInt32(result.Content, 8));
                steProtocol.setCharge(siemensS7Net.getByteTransform().TransInt16(result.Content, 10));
//                steProtocol.setFullCharge();
//                steProtocol.setLowCharge();
                steProtocol.setFeed(siemensS7Net.getByteTransform().TransInt16(result.Content, 16));
                steProtocol.setLoca(siemensS7Net.getByteTransform().TransInt16(result.Content, 18));
                steProtocol.setFeed(siemensS7Net.getByteTransform().TransInt16(result.Content, 14));
                steProtocol.setLoca(siemensS7Net.getByteTransform().TransInt16(result.Content, 16));
//                steProtocol.setCloser();
//                steProtocol.setSpeed();
                steProtocol.setPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 28));
                steProtocol.setLoad(siemensS7Net.getByteTransform().TransInt16(result.Content, 30));
                steProtocol.setTrack(siemensS7Net.getByteTransform().TransInt16(result.Content, 32));
                steProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 38));
                steProtocol.setTaskType(siemensS7Net.getByteTransform().TransInt16(result.Content, 42));
                steProtocol.setRow(siemensS7Net.getByteTransform().TransInt16(result.Content, 44));
                steProtocol.setBay(siemensS7Net.getByteTransform().TransInt16(result.Content, 46));
                steProtocol.setLev(siemensS7Net.getByteTransform().TransInt16(result.Content, 48));
                steProtocol.setPos(siemensS7Net.getByteTransform().TransInt16(result.Content, 18));
                steProtocol.setLoad(siemensS7Net.getByteTransform().TransInt16(result.Content, 20));
                steProtocol.setTrack(siemensS7Net.getByteTransform().TransInt16(result.Content, 22));
                steProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 24));
                steProtocol.setTaskType(siemensS7Net.getByteTransform().TransInt16(result.Content, 28));
                steProtocol.setRow(siemensS7Net.getByteTransform().TransInt16(result.Content, 30));
                steProtocol.setBay(siemensS7Net.getByteTransform().TransInt16(result.Content, 32));
                steProtocol.setLev(siemensS7Net.getByteTransform().TransInt16(result.Content, 34));
                steProtocol.setHisTaskNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 58));
                steProtocol.setHisTaskStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 62));
                steProtocol.setCheckQty(siemensS7Net.getByteTransform().TransInt16(result.Content, 64));
                steProtocol.setReady(siemensS7Net.getByteTransform().TransInt16(result.Content, 66));
                steProtocol.setChargeNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 68));
//                steProtocol.setHisTaskNo(siemensS7Net.getByteTransform().TransInt32(result.Content, 58));
//                steProtocol.setHisTaskStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 62));
//                steProtocol.setCheckQty(siemensS7Net.getByteTransform().TransInt16(result.Content, 64));
                steProtocol.setReady(siemensS7Net.getByteTransform().TransInt16(result.Content, 36));
//                steProtocol.setChargeNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 68));
                steProtocol.setHeart(siemensS7Net.getByteTransform().TransInt16(result.Content, 72));
                steProtocol.setCrnStopRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 74));
                steProtocol.setCrnStopFork(siemensS7Net.getByteTransform().TransInt16(result.Content, 76));
                steProtocol.setCrnAllowRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 78));
//                steProtocol.setHeart(siemensS7Net.getByteTransform().TransInt16(result.Content, 72));
                steProtocol.setCrnStopRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 38));
                steProtocol.setCrnStopFork(siemensS7Net.getByteTransform().TransInt16(result.Content, 40));
                steProtocol.setCrnAllowRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 42));
                OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
@@ -218,25 +224,25 @@
            // 作业
            if (command.getTaskMode() != 0) {
                // 1.任务号
                OperateResult result0 = siemensS7Net.Write("DB3.0", command.getTaskNo());
                OperateResult result0 = siemensS7Net.Write("V1000", command.getTaskNo());
                // 2.作业
                OperateResult result1 = siemensS7Net.Write("DB3.4", command.getTaskMode());
                OperateResult result1 = siemensS7Net.Write("V1000", command.getTaskMode());     // todo
                // 3.确认开始任务
                if (result0.IsSuccess && result1.IsSuccess) {
                    result = siemensS7Net.Write("D0", true);
                    result = siemensS7Net.Write("V2000.0", true);
                }
            // 其他指令
            } else {
                // 控制模式
                if (command.getControlMode() != null) {
                    result =  siemensS7Net.Write("DB3.20", command.getControlMode());
                    result =  siemensS7Net.Write("V1010", command.getControlMode());
                // 复位信号
                } else if (command.getReset() != null) {
                    result =  siemensS7Net.Write("DB3.26", command.getReset());
                    result =  siemensS7Net.Write("V2000.2", command.getReset());
                // 删除指令
                } else if (command.getDelete() != null) {
                    result =  siemensS7Net.Write("DB3.28", command.getDelete());
                    result =  siemensS7Net.Write("V2000.3", command.getDelete());
                // 无效指令
                } else {
                    return false;
@@ -252,25 +258,27 @@
            // 日志记录
            if (!command.getComplete() && command.getTaskMode() != 0) {
                BasSteOptService bean = SpringUtils.getBean(BasSteOptService.class);
                BasSteOpt basSteOpt = new BasSteOpt(
                        command.getTaskNo(),    // 任务号
                        command.getSteNo(),    // 穿梭车
                        new Date(),    // 下发时间
                        command.getTaskModeType().desc,    // 作业
                        null,    // 源排
                        null,    // 源列
                        null,    // 源层
                        null,    // 源站
                        null,    // 目标排
                        null,    // 目标列
                        null,    // 目标层
                        null,    // 目标站
                        null,    // 响应结果
                        null,    // 修改时间
                        null,    // 修改人员
                        null    // 备注
                );
                bean.insert(basSteOpt);
                if (null != bean) {
                    BasSteOpt basSteOpt = new BasSteOpt(
                            command.getTaskNo(),    // 任务号
                            command.getSteNo(),    // 穿梭车
                            new Date(),    // 下发时间
                            command.getTaskModeType().desc,    // 作业
                            null,    // 源排
                            null,    // 源列
                            null,    // 源层
                            null,    // 源站
                            null,    // 目标排
                            null,    // 目标列
                            null,    // 目标层
                            null,    // 目标站
                            null,    // 响应结果
                            null,    // 修改时间
                            null,    // 修改人员
                            null    // 备注
                    );
                    bean.insert(basSteOpt);
                }
            }
        } catch (Exception ignore) {}
@@ -308,7 +316,7 @@
                    if (basSte != null) {
                        // 更新plc数据块
                        short[] arr = new short[] {this.lastRow.shortValue(), this.lastBay.shortValue(), this.lastLev.shortValue()};
                        OperateResult result = siemensS7Net.Write("D0", arr);
                        OperateResult result = siemensS7Net.Write("V1002", arr);
                        if (result.IsSuccess) {
                            // 更新数据库
                            if (service.updatePos(this.lastRow, this.lastBay, this.lastLev) > 0) {
src/main/resources/mapper/BasSteErrMapper.xml
New file
@@ -0,0 +1,16 @@
<?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.BasSteErrMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasSteErr">
        <result column="error_code" property="errorCode" />
        <result column="err_name" property="errName" />
        <result column="modi_user" property="modiUser" />
        <result column="modi_time" property="modiTime" />
        <result column="appe_user" property="appeUser" />
        <result column="appe_time" property="appeTime" />
    </resultMap>
</mapper>
src/main/resources/mapper/WrkMastMapper.xml
@@ -106,7 +106,7 @@
    </select>
    <select id="selectPickStep" resultMap="BaseResultMap">
        select top 1 * from asr_wrk_mast where barcode=#{barcode} and wrk_sts=14 and (io_type=103 or io_type=107 or io_type=104)
        select top 1 * from asr_wrk_mast where barcode=#{barcode} and wrk_sts=17 and (io_type=103 or io_type=107 or io_type=104)
    </select>
    <select id="selectPakOutStep11" resultMap="BaseResultMap">