#
luxiaotao1123
2020-08-12 c51d235bb8242f7a5899f8e140088130b6ddccab
#
3个文件已修改
44 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/BarcodeThread.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -34,6 +34,7 @@
import java.util.stream.Collectors;
/**
 * 立体仓库WCS系统主流程业务
 * Created by vincent on 2020/8/6
 */
@Slf4j
@@ -70,37 +71,35 @@
        for (DevpSlave devp : slaveProperties.getDevp()) {
            // 遍历入库口
            for (DevpSlave.Sta inSta : devp.getInSta()) {
                // 获取条码
                // 获取条码扫描仪信息
                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
                String barcode = barcodeThread.getBarcode();
                // 获取入库站信息
                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
                // 判断是否满足入库条件
                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInreq1()
                        && !staProtocol.isEmptyMk() && staProtocol.isInreq1() && staProtocol.getWorkNo() ==0
                if (staProtocol.isAutoing() && staProtocol.isLoading()
                        && !staProtocol.isEmptyMk() && staProtocol.isInreq1() && staProtocol.getWorkNo()==0
                        && staProtocol.isPakMk() && !Cools.isEmpty(barcode)) {
                    // 判断重复工作档
                    WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
                    if (wrkMast != null) {
                        log.warn("工作档中已存在该站状态为1的数据,工作号-{}", wrkMast.getWrkNo());
                        log.warn("工作档中已存在该站状态为( 2.设备上走 )的数据,工作号={}", wrkMast.getWrkNo());
                        continue;
                    }
                    // 获取入库通知档
                    List<WaitPakin> waitPakins = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>().eq("barcode", barcode));
                    if (waitPakins.isEmpty()) {
                        log.warn("无此入库条码数据。条码号={}", barcode);
                        continue;
                    }
                    // 工作号
                    int workNo = commonService.getWorkNo(0);
                    // 检索库位
                    List<String> matNos = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
                    StartupDto startupDto = commonService.getLocNo(1, 1, inSta.getStaNo(), matNos);
                    String locNo = startupDto.getLocNo();
                    if (!waitPakins.isEmpty()) {
                        // 插入工作明细档
                        wrkDetlService.createWorkDetail(workNo, waitPakins, barcode);
                    } else {
                        log.warn("无此入库条码数据---{}", barcode);
                        continue;
                    }
                    // 插入工作明细档
                    wrkDetlService.createWorkDetail(workNo, waitPakins, barcode);
                    // 插入工作主档
                    wrkMast = new WrkMast();
@@ -134,6 +133,8 @@
                    if (!locMastService.updateById(locMast)){
                        throw new CoolException("改变库位状态失败");
                    }
                    // 命令下发区 --------------------------------------------------------------------------
                    // 更新站点信息 且 下发plc命令
                    barcodeThread.setBarcode("");
@@ -291,7 +292,7 @@
    }
    /**
     * 入出库  ===>>  堆垛机站到库位 堆垛机入出库作业下发
     * 入出库  ===>>  堆垛机入出库作业下发
     */
    public void crnIoExecute(){
        for (CrnSlave crn : slaveProperties.getCrn()) {
@@ -300,6 +301,7 @@
            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
            BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
            if (basCrnp == null) {
                log.error("{}号堆垛机尚未在数据库进行维护!", crn.getId());
                continue;
            }
            // 只有当堆垛机空闲 并且 无任务时才继续执行
@@ -342,7 +344,7 @@
            // 查询站点详细信息
            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
            if (staDetl == null) {
                log.error("入库库 ===>> 堆垛机站点在数据库不存在, 站点编号={}", crnStn.getStaNo());
                log.error("入库 ===>> 堆垛机站点在数据库不存在, 站点编号={}", crnStn.getStaNo());
                continue;
            }
            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staDetl.getCanining().equals("Y")) {
@@ -429,6 +431,8 @@
            if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting().equals("Y")
                    && staProtocol.getWorkNo() == 0) {
                // 命令下发区 --------------------------------------------------------------------------
                // 1.堆垛机开始移动
                CrnCommand crnCommand = new CrnCommand();
                crnCommand.setCrnNo(slave.getId()); // 堆垛机编号
                crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 工作号
@@ -532,8 +536,8 @@
                // 修改成功后复位堆垛机
                if (wrkMastMapper.updateById(wrkMast) > 0) {
                    // 命令下发区 -------------------------------------------------------------------------
                    // 复位
                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(3, new CrnCommand()))) {
                    // 堆垛机复位
                    if (!MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(3, new CrnCommand()))) {
                        log.error("堆垛机复位命令下发失败,工作号={}", wrkMast.getWrkNo());
                    }
                }
src/main/java/com/zy/core/thread/BarcodeThread.java
@@ -1,6 +1,5 @@
package com.zy.core.thread;
import HslCommunication.BasicFramework.SoftBasic;
import com.zy.core.Slave;
import com.zy.core.ThreadHandler;
import lombok.Data;
@@ -123,12 +122,13 @@
    }
    public static void main(String[] args) throws Exception {
        BarcodeThread barcodeThread = new BarcodeThread();
        BarcodeThread barcodeThread = new BarcodeThread(new Slave());
        barcodeThread.getSlave().setIp("192.168.2.150");
        barcodeThread.getSlave().setPort(51236);
        boolean connect = barcodeThread.connect();
        System.out.println(connect);
        barcodeThread.write("T".getBytes(), "T".length());
        byte[] read = barcodeThread.read(11, 1000);
        System.out.println(SoftBasic.ByteToHexString(read));
        System.out.println(new String(read));
    }
}
src/main/resources/application.yml
@@ -56,7 +56,7 @@
      row: 1
      bay: 1
      lev: 1
  # 站点
  # 输送线
  devp[0]:
    id: 1
    ip: 192.168.1.125