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>