lsh
2024-04-22 7c2e048de56976c6ee3757cebf414a0f5c8dcb58
#Ext
6个文件已修改
7个文件已添加
390 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/BasExtController.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/SiteController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/BasExt.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/BasExtMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/BasExtService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/BasExtServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/CodeBuilder.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/ExtProtocol.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/MelsecExtThread.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BasExtMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/deviceOperate/extOperate.html 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/BasExtController.java
New file
@@ -0,0 +1,123 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.DateUtils;
import com.zy.asrs.entity.BasExt;
import com.zy.asrs.service.BasExtService;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
public class BasExtController extends BaseController {
    @Autowired
    private BasExtService basExtService;
    @RequestMapping(value = "/basExt/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        return R.ok(basExtService.selectById(String.valueOf(id)));
    }
    @RequestMapping(value = "/basExt/list/auth")
    @ManagerAuth
    public R list(@RequestParam(defaultValue = "1")Integer curr,
                  @RequestParam(defaultValue = "10")Integer limit,
                  @RequestParam(required = false)String orderByField,
                  @RequestParam(required = false)String orderByType,
                  @RequestParam Map<String, Object> param){
        EntityWrapper<BasExt> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
        return R.ok(basExtService.selectPage(new Page<>(curr, limit), wrapper));
    }
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
        for (Map.Entry<String, Object> entry : map.entrySet()){
            String val = String.valueOf(entry.getValue());
            if (val.contains(RANGE_TIME_LINK)){
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
            } else {
                wrapper.like(entry.getKey(), val);
            }
        }
    }
    @RequestMapping(value = "/basExt/add/auth")
    @ManagerAuth
    public R add(BasExt basExt) {
        basExtService.insert(basExt);
        return R.ok();
    }
    @RequestMapping(value = "/basExt/update/auth")
    @ManagerAuth
    public R update(BasExt basExt){
        if (Cools.isEmpty(basExt) || null==basExt.getExtNo()){
            return R.error();
        }
        basExtService.updateById(basExt);
        return R.ok();
    }
    @RequestMapping(value = "/basExt/delete/auth")
    @ManagerAuth
    public R delete(@RequestParam(value="ids[]") Long[] ids){
         for (Long id : ids){
            basExtService.deleteById(id);
        }
        return R.ok();
    }
    @RequestMapping(value = "/basExt/export/auth")
    @ManagerAuth
    public R export(@RequestBody JSONObject param){
        EntityWrapper<BasExt> wrapper = new EntityWrapper<>();
        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
        Map<String, Object> map = excludeTrash(param.getJSONObject("basExt"));
        convert(map, wrapper);
        List<BasExt> list = basExtService.selectList(wrapper);
        return R.ok(exportSupport(list, fields));
    }
    @RequestMapping(value = "/basExtQuery/auth")
    @ManagerAuth
    public R query(String condition) {
        EntityWrapper<BasExt> wrapper = new EntityWrapper<>();
        wrapper.like("ext_no", condition);
        Page<BasExt> page = basExtService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (BasExt basExt : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", basExt.getExtNo());
            map.put("value", basExt.getExtNo());
            result.add(map);
        }
        return R.ok(result);
    }
    @RequestMapping(value = "/basExt/check/column/auth")
    @ManagerAuth
    public R query(@RequestBody JSONObject param) {
        Wrapper<BasExt> wrapper = new EntityWrapper<BasExt>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
        if (null != basExtService.selectOne(wrapper)){
            return R.parse(BaseRes.REPEAT).add(getComment(BasExt.class, String.valueOf(param.get("key"))));
        }
        return R.ok();
    }
}
src/main/java/com/zy/asrs/controller/SiteController.java
@@ -7,18 +7,23 @@
import com.zy.asrs.domain.vo.PlcErrorTableVo;
import com.zy.asrs.domain.vo.SiteTableVo;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.BasExt;
import com.zy.asrs.service.BasDevpService;
import com.zy.asrs.service.BasExtService;
import com.zy.asrs.utils.CommandUtils;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.ExtSlave;
import com.zy.core.model.Task;
import com.zy.core.model.protocol.ExtProtocol;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.DevpThread;
import com.zy.core.thread.BarcodeThread;
import com.zy.core.thread.MelsecExtThread;
import com.zy.core.thread.SiemensDevpThread;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -37,6 +42,8 @@
    private SlaveProperties slaveProperties;
    @Autowired
    private BasDevpService basDevpService;
    @Autowired
    private BasExtService basExtService;
    @GetMapping("/io/mode/info/site")
@@ -119,6 +126,22 @@
        return R.ok().add(list);
    }
    @GetMapping("/list/ext/auth")
    @ManagerAuth(memo = "机械臂信息")
    public R extList(){
        List<SiteTableVo> list = new ArrayList<>();
        // 持久数据
        List<BasExt> basExts = basExtService.selectList(new EntityWrapper<BasExt>().orderBy("ext_no"));
        for (BasExt ext : basExts) {
            SiteTableVo vo = new SiteTableVo();
            vo.setDevNo(ext.getExtNo());    // 站点编号
            vo.setInEnable(ext.getExtTask());   // 可入  可取
            vo.setOutEnable(ext.getExtPut()); // 可出     可放
            list.add(vo);
        }
        return R.ok().add(list);
    }
    @PostMapping("/table/plc/errors")
    @ManagerAuth(memo = "输送设备plc异常信息表")
    public R plcErrorTable(){
src/main/java/com/zy/asrs/entity/BasExt.java
New file
@@ -0,0 +1,55 @@
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 io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
@Data
@TableName("asr_bas_ext")
public class BasExt implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 编号
     */
    @ApiModelProperty(value= "编号")
    @TableId(value = "ext_no", type = IdType.INPUT)
    @TableField("ext_no")
    private Integer extNo;
    /**
     * 允许取(checkBox)
     */
    @ApiModelProperty(value= "允许取(checkBox)")
    @TableField("ext_task")
    private String extTask = "N";
    /**
     * 允许放(checkBox)
     */
    @ApiModelProperty(value= "允许放(checkBox)")
    @TableField("ext_put")
    private String extPut = "N";
    public BasExt() {}
    public BasExt(Integer extNo,String extTask,String extPut) {
        this.extNo = extNo;
        this.extTask = extTask;
        this.extPut = extPut;
    }
//    BasExt basExt = new BasExt(
//            null,    // 编号[非空]
//            null,    // 允许取(checkBox)
//            null    // 允许放(checkBox)
//    );
}
src/main/java/com/zy/asrs/mapper/BasExtMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.mapper;
import com.zy.asrs.entity.BasExt;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface BasExtMapper extends BaseMapper<BasExt> {
}
src/main/java/com/zy/asrs/service/BasExtService.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.BasExt;
import com.baomidou.mybatisplus.service.IService;
public interface BasExtService extends IService<BasExt> {
}
src/main/java/com/zy/asrs/service/impl/BasExtServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.service.impl;
import com.zy.asrs.mapper.BasExtMapper;
import com.zy.asrs.entity.BasExt;
import com.zy.asrs.service.BasExtService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("basExtService")
public class BasExtServiceImpl extends ServiceImpl<BasExtMapper, BasExt> implements BasExtService {
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -29,13 +29,11 @@
import com.zy.core.model.command.LedCommand;
import com.zy.core.model.command.RgvCommand;
import com.zy.core.model.protocol.CrnProtocol;
import com.zy.core.model.protocol.ExtProtocol;
import com.zy.core.model.protocol.RgvProtocol;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.BarcodeThread;
import com.zy.core.thread.LedThread;
import com.zy.core.thread.SiemensDevpThread;
import com.zy.core.thread.SiemensRgvThread;
import com.zy.core.thread.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -360,6 +358,28 @@
        }
    }
    public synchronized void ExtTaskAndPut() throws InterruptedException {
        for (ExtSlave extSlave : slaveProperties.getExt()) {
//            if (!rgv.getDemo()) {
//                continue;
//            }
            MelsecExtThread extThread = (MelsecExtThread) SlaveConnection.get(SlaveType.Ext, extSlave.getId());
            ExtProtocol extProtocol = extThread.getExtProtocol();
            if (extProtocol == null) {
                continue;
            }
//            else {
//                extProtocol = extProtocol.clone();
//            }
            if (extProtocol.isTake()){//允许取
            }else if (extProtocol.isPut()){//允许放
            }
        }
    }
}
src/main/java/com/zy/common/CodeBuilder.java
@@ -17,10 +17,10 @@
//        generator.table="sys_host";
        // sqlserver
        generator.sqlOsType = SqlOsType.SQL_SERVER;
        generator.url="127.0.0.1:1433;databasename=ghtzasrs";
        generator.url="192.168.4.15:1433;databasename=ssdasrs";
        generator.username="sa";
        generator.password="sa@123";
        generator.table="man_vacuum_mast";
        generator.table="asr_bas_ext";
        generator.packagePath="com.zy.asrs";
        generator.js = false;
        generator.html = false;
src/main/java/com/zy/core/MainProcess.java
@@ -47,6 +47,8 @@
//                    mainService.RGVDemoShow0();
//                    mainService.RGVDemoShow1();
                    mainService.RGVDemoShow2();
                    //机械臂允许取货、允许放货
                    mainService.ExtTaskAndPut();
                } catch (Exception e) {
src/main/java/com/zy/core/model/protocol/ExtProtocol.java
@@ -7,10 +7,20 @@
@Data
public class ExtProtocol {
    private Integer extNo;
    private Integer extNo = 1;
    public boolean take;//允许取信号
    public boolean take = false;//允许取信号
    public boolean put;//允许放信号
    public boolean put = false;//允许放信号
    @Override
    public ExtProtocol clone() {
        try {
            return (ExtProtocol) super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return null;
    }
}
src/main/java/com/zy/core/thread/MelsecExtThread.java
@@ -4,7 +4,12 @@
import HslCommunication.Core.Types.OperateResultExOne;
import HslCommunication.Profinet.Melsec.MelsecMcNet;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.BasCrnp;
import com.zy.asrs.entity.BasExt;
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.BasExtService;
import com.zy.core.ThreadHandler;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
@@ -118,10 +123,25 @@
//                extProtocol.setMode(melsecMcNet.getByteTransform().TransInt16(result.Content, 0));
//                extProtocol.setTaskNo(melsecMcNet.getByteTransform().TransInt16(result.Content, 2));
                OutputQueue.Ext.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
// 根据实时信息更新数据库
                BasExtService extService = SpringUtils.getBean(BasExtService.class);
                BasExt basExt = new BasExt();
                basExt.setExtNo(slave.getId());
                basExt.setExtTask(extProtocol.isTake()?"Y":"N");
                basExt.setExtPut(extProtocol.isPut()?"Y":"N");
                if (!extService.updateById(basExt)){
                    log.error("MelsecExt"+" - 4"+" - 机械臂plc数据库更新失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
            } else {
                    OutputQueue.Ext.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
                }
            } else {
                BasExtService extService = SpringUtils.getBean(BasExtService.class);
                BasExt basExt = new BasExt();
                basExt.setExtNo(slave.getId());
                basExt.setExtTask("N");
                basExt.setExtPut("N");
                extService.updateById(basExt);
                OutputQueue.Ext.offer(MessageFormat.format("【{0}】{1}机械臂plc状态信息失败",DateUtils.convert(new Date()), slave.getId()));
                throw new CoolException(MessageFormat.format( "机械臂plc状态信息失败 ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort()));
            }
src/main/resources/mapper/BasExtMapper.xml
New file
@@ -0,0 +1,13 @@
<?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.BasExtMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasExt">
        <result column="ext_no" property="extNo" />
        <result column="ext_task" property="extTask" />
        <result column="ext_put" property="extPut" />
    </resultMap>
</mapper>
src/main/webapp/views/deviceOperate/extOperate.html
New file
@@ -0,0 +1,70 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ext设备</title>
    <link rel="stylesheet" href="../../static/wcs/css/element.css">
    <script type="text/javascript" src="../../static/wcs/js/jquery/jquery-3.3.1.min.js"></script>
    <script type="text/javascript" src="../../static/wcs/js/common.js"></script>
    <script type="text/javascript" src="../../static/wcs/js/vue.min.js"></script>
    <script type="text/javascript" src="../../static/wcs/js/element.js"></script>
</head>
<body>
    <div id="app" style="display: flex;justify-content: center;flex-wrap: wrap;">
        <div style="width: 100%;">
            <el-table border ref="singleTable" :data="tableData" highlight-current-row
                      max-height="450" style="width: 100%">
                <el-table-column property="devNo" label="机械臂编号">
                </el-table-column>
                <el-table-column property="inEnable" label="允许取">
                </el-table-column>
                <el-table-column property="outEnable" label="允许放">
                </el-table-column>
            </el-table>
        </div>
    </div>
    <script>
        var app = new Vue({
            el: '#app',
            data: {
                tableData: [],
            },
            created() {
                this.init()
            },
            watch: {
            },
            methods: {
                init() {
                    this.getTableData()
                    setInterval(() => {
                        this.getTableData()
                    }, 1000)
                },
                getTableData() {
                    let that = this;
                    $.ajax({
                        url: baseUrl + "/site/list/ext/auth",
                        headers: {
                            'token': localStorage.getItem('token')
                        },
                        data: {},
                        dataType: 'json',
                        contentType: 'application/json;charset=UTF-8',
                        method: 'GET',
                        success: function (res) {
                            console.log(res)
                            that.tableData = res.data
                        }
                    });
                }
            }
        })
    </script>
</body>
</html>