Commit 839f0fb4 LN

增加NS200看板

1 个父辈 13d6993a
正在显示 20 个修改的文件 包含 327 行增加35 行删除
...@@ -148,8 +148,8 @@ public class MenuInit { ...@@ -148,8 +148,8 @@ public class MenuInit {
addDefaultFunctionMenu(9, poutOut, "入库单", "inList", "system/inList/index", "headIcon"); addDefaultFunctionMenu(9, poutOut, "入库单", "inList", "system/inList/index", "headIcon");
addDefaultFunctionMenu(10, poutOut, "物料入库", "putIn", "system/putIn/index", "headIcon"); addDefaultFunctionMenu(10, poutOut, "物料入库", "putIn", "system/putIn/index", "headIcon");
addDefaultFunctionMenu(11, poutOut, "转储入库", "dumpWarehousing", "system/dumpWarehousing/index", "headIcon"); // addDefaultFunctionMenu(11, poutOut, "转储入库", "dumpWarehousing", "system/dumpWarehousing/index", "headIcon");
addDefaultFunctionMenu(12, poutOut, "单盘入库", "singleDiskWarehousing", "system/singleDiskWarehousing/index", "headIcon"); // addDefaultFunctionMenu(12, poutOut, "单盘入库", "singleDiskWarehousing", "system/singleDiskWarehousing/index", "headIcon");
addDefaultFunctionMenu(13, poutOut, "呆滞物料", "sluggishMaterials", "system/sluggishMaterials/index", "sMaterial"); addDefaultFunctionMenu(13, poutOut, "呆滞物料", "sluggishMaterials", "system/sluggishMaterials/index", "sMaterial");
addDefaultFunctionMenu(14,poutOut, "安全库存", "safetyInventory", "system/safetyInventory/index", "safeInventory"); addDefaultFunctionMenu(14,poutOut, "安全库存", "safetyInventory", "system/safetyInventory/index", "safeInventory");
addDefaultFunctionMenu(15, poutOut,"过期物料", "expireMaterials", "system/expireMaterials/index", "sMaterial"); addDefaultFunctionMenu(15, poutOut,"过期物料", "expireMaterials", "system/expireMaterials/index", "sMaterial");
......
package com.neotel.smfcore.core.dashboard.bean.dto.first; package com.neotel.smfcore.core.dashboard.bean.dto.first;
import com.neotel.smfcore.core.storage.bean.UsageItem;
import com.neotel.smfcore.core.system.service.po.DataLog; import com.neotel.smfcore.core.system.service.po.DataLog;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -13,6 +14,8 @@ import java.util.Map; ...@@ -13,6 +14,8 @@ import java.util.Map;
public class ElecKanbanBoxStatusDto { public class ElecKanbanBoxStatusDto {
private String id; private String id;
private String cid;
/** /**
* 设备名称 * 设备名称
*/ */
...@@ -69,5 +72,9 @@ public class ElecKanbanBoxStatusDto { ...@@ -69,5 +72,9 @@ public class ElecKanbanBoxStatusDto {
private float maxHumidity = 100.0F; private float maxHumidity = 100.0F;
@ApiModelProperty("客户端上传数据,closeLock为enable时此按钮状态为可用,openLock为enable时,此按钮状态为可用" + @ApiModelProperty("客户端上传数据,closeLock为enable时此按钮状态为可用,openLock为enable时,此按钮状态为可用" +
"客户端收到服务器openLock为doit时,执行打开门锁动作,closeLock为doit时,执行关闭门锁" ) "客户端收到服务器openLock为doit时,执行打开门锁动作,closeLock为doit时,执行关闭门锁" )
private Map<String, String> data = new HashMap<>(); private Map<String, String> data = null;
@ApiModelProperty("使用情况")
private Map<String, UsageItem> usageMap = null;
} }
...@@ -129,6 +129,7 @@ public class SmdBoxController { ...@@ -129,6 +129,7 @@ public class SmdBoxController {
dto.setTodayOutCount(outCount); dto.setTodayOutCount(outCount);
dto.setName(storage.getName()); dto.setName(storage.getName());
dto.setId(storage.getId()); dto.setId(storage.getId());
dto.setCid(storage.getCid());
Collection<DataLog> queueTasks = taskService.getQueueTasks(cid); Collection<DataLog> queueTasks = taskService.getQueueTasks(cid);
if (queueTasks != null){ if (queueTasks != null){
dto.setTaskList((List<DataLog>) queueTasks); dto.setTaskList((List<DataLog>) queueTasks);
...@@ -140,6 +141,7 @@ public class SmdBoxController { ...@@ -140,6 +141,7 @@ public class SmdBoxController {
dto.setMaxHumidity(msdSettiings.getMaxHumidity()); dto.setMaxHumidity(msdSettiings.getMaxHumidity());
dto.setMinTemperature(msdSettiings.getMinTemperature()); dto.setMinTemperature(msdSettiings.getMinTemperature());
dto.setMaxTemperature(msdSettiings.getMaxTemperature()); dto.setMaxTemperature(msdSettiings.getMaxTemperature());
dto.setUsageMap(storage.getUsageMap());
resultList.add(dto); resultList.add(dto);
} }
return resultList; return resultList;
......
...@@ -45,7 +45,16 @@ public class EquipStatusBean implements Serializable { ...@@ -45,7 +45,16 @@ public class EquipStatusBean implements Serializable {
/** /**
* 仅显示的日志消息集合
*/
private List<EquipMsg> showLogs = new ArrayList<>();
/**
* 发上来的数据 * 发上来的数据
*
* NS200定义:
* key=tPCount,value=今天已打印数量
* key=tNGCount,value=今天NG数量
* key=MES,value=MES最后一次对接信息:格式参考NsMesInfo
*/ */
private Map<String, Object> data = new HashMap<>(); private Map<String, Object> data = new HashMap<>();
...@@ -114,5 +123,17 @@ public class EquipStatusBean implements Serializable { ...@@ -114,5 +123,17 @@ public class EquipStatusBean implements Serializable {
return null; return null;
} }
public String getShowMsg(Locale locale){
MessageType[] types=new MessageType[]{MessageType.ERROR,MessageType.WARNING,MessageType.INFO,MessageType.SHOW };
for (MessageType type :
types) {
EquipMsg showMsg= getMsgByType(type.name());
if(showMsg!=null){
return showMsg.getShowMsg(locale);
}
}
return "";
}
} }
package com.neotel.smfcore.core.equipment.bean.ns;
import cn.hutool.core.date.DateTime;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class NsMesInfo implements Serializable
{
private String status="OK";
private DateTime time;
private String request="";
private String response="";
}
...@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; ...@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.core.agv.util.AgvCache; import com.neotel.smfcore.core.agv.util.AgvCache;
import com.neotel.smfcore.core.equipment.bean.EquipMsg; import com.neotel.smfcore.core.equipment.bean.EquipMsg;
import com.neotel.smfcore.core.equipment.bean.EquipStatusBean; import com.neotel.smfcore.core.equipment.bean.EquipStatusBean;
import com.neotel.smfcore.core.equipment.bean.ns.NsMesInfo;
import com.neotel.smfcore.core.equipment.enums.EquipmentType; import com.neotel.smfcore.core.equipment.enums.EquipmentType;
import com.neotel.smfcore.core.equipment.handler.IEquipmentHandler; import com.neotel.smfcore.core.equipment.handler.IEquipmentHandler;
import com.neotel.smfcore.core.message.util.DeviceMessageUtil; import com.neotel.smfcore.core.message.util.DeviceMessageUtil;
...@@ -73,6 +74,18 @@ public class BaseEquipHandler implements IEquipmentHandler { ...@@ -73,6 +74,18 @@ public class BaseEquipHandler implements IEquipmentHandler {
} }
} }
} }
if(statusBean.getData().containsKey("MES")) {
try {
NsMesInfo mesInfo = (NsMesInfo) statusBean.getData().get("MES");
if(mesInfo!=null){
EquipStatusUtil.updateNsMesInfo(statusBean.getCid(),mesInfo);
}
} catch (Exception ex) {
log.error(""+ex);
}
}
EquipStatusUtil.updateStatusBean(statusBean); EquipStatusUtil.updateStatusBean(statusBean);
} catch (Exception e) { } catch (Exception e) {
......
package com.neotel.smfcore.core.equipment.rest; package com.neotel.smfcore.core.equipment.rest;
import com.neotel.smfcore.common.utils.StringUtils; import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.device.util.EquipmentCache; import com.neotel.smfcore.core.equipment.util.EquipmentCache;
import com.neotel.smfcore.core.equipment.bean.EquipStatusBean; import com.neotel.smfcore.core.equipment.bean.EquipStatusBean;
import com.neotel.smfcore.core.equipment.enums.EquipmentType; import com.neotel.smfcore.core.equipment.enums.EquipmentType;
import com.neotel.smfcore.core.equipment.handler.IEquipmentHandler; import com.neotel.smfcore.core.equipment.handler.IEquipmentHandler;
......
package com.neotel.smfcore.core.equipment.rest; package com.neotel.smfcore.core.equipment.rest;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.core.device.bean.StatusBean; import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.device.util.EquipmentCache; import com.neotel.smfcore.core.equipment.bean.ns.NsMesInfo;
import com.neotel.smfcore.core.equipment.rest.dto.NsViewDto;
import com.neotel.smfcore.core.equipment.util.EquipmentCache;
import com.neotel.smfcore.core.equipment.bean.EquipMsg; import com.neotel.smfcore.core.equipment.bean.EquipMsg;
import com.neotel.smfcore.core.equipment.bean.EquipStatusBean; import com.neotel.smfcore.core.equipment.bean.EquipStatusBean;
import com.neotel.smfcore.core.equipment.bean.EquipStatusDto; import com.neotel.smfcore.core.equipment.rest.dto.EquipStatusDto;
import com.neotel.smfcore.core.equipment.service.po.Equipment; ; import com.neotel.smfcore.core.equipment.service.po.Equipment;
import com.neotel.smfcore.core.message.enums.MessageType; import com.neotel.smfcore.core.message.enums.MessageType;
import com.neotel.smfcore.core.message.service.po.Message;
import com.neotel.smfcore.core.storage.enums.DeviceType; import com.neotel.smfcore.core.storage.enums.DeviceType;
import com.neotel.smfcore.core.storage.service.po.Storage; import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.system.util.DevicesStatusUtil; import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
...@@ -58,26 +60,7 @@ public class EquipViewController { ...@@ -58,26 +60,7 @@ public class EquipViewController {
}else{ }else{
dto.setOnLine(true); dto.setOnLine(true);
dto.setStatus(bean.getStatus()); dto.setStatus(bean.getStatus());
EquipMsg showMsg= bean.getMsgByType(MessageType.ERROR.name()); dto.setMsg(bean.getShowMsg(locale));
if(showMsg==null){
showMsg=bean.getMsgByType(MessageType.WARNING.name());
}
if(showMsg==null){
showMsg=bean.getMsgByType(MessageType.INFO.name());
}
if(showMsg==null){
showMsg=bean.getMsgByType(MessageType.SHOW.name());
}
if(showMsg!=null){
dto.setMsg(showMsg.getShowMsg(locale));
}
// if(bean.getMsgList()!=null){
// for (EquipMsg msg : bean.getMsgList()){
// if(msg.getType().equals(MessageType.ERROR.name())){
// dto.setMsg(msg.getShowMsg(locale));
// }
// }
// }
} }
} }
...@@ -102,4 +85,37 @@ public class EquipViewController { ...@@ -102,4 +85,37 @@ public class EquipViewController {
} }
return resultList; return resultList;
} }
@ApiOperation("获取看板数据")
@GetMapping("nsView")
@PreAuthorize("@el.check('equipmentView:info')")
public NsViewDto nsView(String cid, HttpServletRequest servletRequest){
Equipment equip = equipmentCache.getEquipment(cid);
if (equip == null) {
throw new ValidateException("smfcore.equip.notExist","设备不存在");
}
NsViewDto dto=new NsViewDto();
dto.setCid(cid);
dto.setName(equip.getName());
EquipStatusBean bean= EquipStatusUtil.getStatusBean(equip.getCid());
if(bean!=null){
if(bean.timeOut()){
dto.setStatus(0);
}else{
dto.setStatus(bean.getStatus());
dto.setMsg(bean.getShowMsg(servletRequest.getLocale()));
dto.setData(bean.getData());
dto.setShowLogs(bean.getMsgList());
NsMesInfo mesInfo=EquipStatusUtil.getNsMesInfo(cid);
if(mesInfo!=null){
dto.setMesInfo(mesInfo);
}
}
}
return dto;
}
} }
package com.neotel.smfcore.core.equipment.bean; package com.neotel.smfcore.core.equipment.rest.dto;
import com.neotel.smfcore.core.equipment.enums.EquipmentType; import com.neotel.smfcore.core.equipment.enums.EquipmentType;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
package com.neotel.smfcore.core.equipment.rest.dto;
import com.neotel.smfcore.core.equipment.bean.EquipMsg;
import com.neotel.smfcore.core.equipment.bean.ns.NsMesInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Data
public class NsViewDto implements Serializable {
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("CID")
private String cid;
@ApiModelProperty("设备状态,0=离线,1=正常运行中, 2=急停")
private int status=0;
@ApiModelProperty("文字显示")
private String msg = "";
@ApiModelProperty("Mes信息")
private NsMesInfo mesInfo = null;
@ApiModelProperty("仅显示的日志消息集合")
private List<EquipMsg> showLogs = new ArrayList<>();
/**
* 发上来的数据
*
* NS200定义:
* key=tPCount,value=今天已打印数量
* key=tNGCount,value=今天NG数量
* key=MES,value=MES最后一次对接信息:格式参考NsMesInfo
*/
private Map<String, Object> data = new HashMap<>();
}
package com.neotel.smfcore.core.device.util; package com.neotel.smfcore.core.equipment.util;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
......
...@@ -3,7 +3,7 @@ package com.neotel.smfcore.core.message.util; ...@@ -3,7 +3,7 @@ package com.neotel.smfcore.core.message.util;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.core.device.bean.StatusBean; import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.device.util.EquipmentCache; import com.neotel.smfcore.core.equipment.util.EquipmentCache;
import com.neotel.smfcore.core.equipment.service.po.Equipment; import com.neotel.smfcore.core.equipment.service.po.Equipment;
import com.neotel.smfcore.core.language.util.MessageUtils; import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.core.message.enums.MessageType; import com.neotel.smfcore.core.message.enums.MessageType;
...@@ -14,8 +14,6 @@ import com.neotel.smfcore.core.message.util.bean.DeviceInfo; ...@@ -14,8 +14,6 @@ import com.neotel.smfcore.core.message.util.bean.DeviceInfo;
import com.neotel.smfcore.core.storage.service.po.Storage; import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos; import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.util.DevicesStatusUtil; import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
......
...@@ -262,6 +262,9 @@ public class SpBoxController { ...@@ -262,6 +262,9 @@ public class SpBoxController {
public List<SpTaskDto> filterTask(TaskQueryCondition criteria, HttpServletRequest request) { public List<SpTaskDto> filterTask(TaskQueryCondition criteria, HttpServletRequest request) {
String storageId = criteria.getStorageId(); String storageId = criteria.getStorageId();
if(ObjectUtil.isEmpty(storageId)){
return new ArrayList<>();
}
Storage storage = dataCache.getStorageById(storageId); Storage storage = dataCache.getStorageById(storageId);
if (!storage.isSolderPaste()) { if (!storage.isSolderPaste()) {
return new ArrayList<>(); return new ArrayList<>();
......
package com.neotel.smfcore.core.system.util; package com.neotel.smfcore.core.system.util;
import cn.hutool.core.date.DateTime;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.neotel.smfcore.core.equipment.bean.EquipStatusBean; import com.neotel.smfcore.core.equipment.bean.EquipStatusBean;
import com.neotel.smfcore.core.equipment.bean.ns.NsMesInfo;
import com.neotel.smfcore.core.message.util.DeviceMessageUtil; import com.neotel.smfcore.core.message.util.DeviceMessageUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -18,9 +20,9 @@ public class EquipStatusUtil { ...@@ -18,9 +20,9 @@ public class EquipStatusUtil {
protected static Map<String, EquipStatusBean> statusMap = Maps.newConcurrentMap(); protected static Map<String, EquipStatusBean> statusMap = Maps.newConcurrentMap();
/** /**
* CID的设备故障消息(key 为 cid) * NS设备最后一次MES通信信息(key 为 cid,value是最后一次MesInfo)
*/ */
private static Map<String, EquipStatusBean> clientMsgs = Maps.newConcurrentMap(); private static Map<String, NsMesInfo> NsMesInfoMap = Maps.newConcurrentMap();
/** /**
...@@ -38,6 +40,22 @@ public class EquipStatusUtil { ...@@ -38,6 +40,22 @@ public class EquipStatusUtil {
statusMap.put(statusBean.getCid(), statusBean); statusMap.put(statusBean.getCid(), statusBean);
} }
public static void updateNsMesInfo(String cid,NsMesInfo nsMesInfo) {
if(nsMesInfo==null){
return;
}
if(nsMesInfo.getTime()==null){
nsMesInfo.setTime(DateTime.now());
}
NsMesInfoMap.put(cid, nsMesInfo);
}
public static NsMesInfo getNsMesInfo(String cid){
NsMesInfo mesInfo= NsMesInfoMap.get(cid);
return mesInfo;
}
/** /**
* 获取所有的设备信息 * 获取所有的设备信息
* @return * @return
......
package com.neotel.smfcore.custom.duo;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.utils.JsonUtil;
import com.neotel.smfcore.common.utils.StorageConstants;
import com.neotel.smfcore.core.device.bean.BoxStatusBean;
import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.storage.bean.UsageItem;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
@Slf4j
@RestController
@RequestMapping("/rest/api")
public class DuoController {
@Autowired
private DataCache dataCache;
@ApiOperation("S001 MES或AGV系统获取料仓状态信息")
@RequestMapping("/boxDoorInfo")
@AnonymousAccess
public ResultBean boxDoorInfo( @RequestBody Map<String, Object> paramMap) {
Collection<Storage> storageList = Lists.newArrayList();
storageList.addAll(dataCache.getAllStorage().values());
List<Map<String, Object>> results = Lists.newArrayList();
for (Storage storage : storageList) {
StatusBean statusBean = DevicesStatusUtil.getStatusBean(storage.getCid());
if (statusBean == null) {
statusBean = new StatusBean();
}
Map<String, BoxStatusBean> boxStatusMap = statusBean.getBoxStatus();
int status = -1;
String shelfS = statusBean.getData().getOrDefault("shelfState", "OFFLINE");
if (boxStatusMap != null) {
BoxStatusBean boxStatusBean = boxStatusMap.get("1");
if (boxStatusBean != null) {
status = boxStatusBean.getStatus();
}
}
int storageStatus = status;
if (status == StorageConstants.STATUS.OFFLINE || statusBean.timeOut()) {
//离线
storageStatus = -1;
shelfS = "OFFLINE";
}
String msg = statusBean.getMsg();
String msgType = statusBean.getDeviceType();
Map<String, Object> itemMap = new HashMap<>();
itemMap.put("cid", storage.getCid());
Map<String, UsageItem> usageMap = storage.getUsageMap();
List<String> reelSize = new ArrayList<>();
for (UsageItem usageItem : usageMap.values()) {
String sizeStr = usageItem.getSizeStr();
reelSize.add(sizeStr);
}
String s = StringUtil.join(reelSize.toArray(), ",");
itemMap.put("reelSize", s);
itemMap.put("status", shelfS);
//查找料仓正在出库中的任务
itemMap.put("hSerial", "");
results.add(itemMap);
}
return ResultBean.newOkResult(results);
}
@ApiOperation("S002 MES或AGV系统操作料仓门打开或关闭")
@RequestMapping("/boxDoorOp")
@AnonymousAccess
public ResultBean boxDoorOp(@RequestBody Map<String, Object> paramList) {
// 请求参数参数名参数描述类型是否必填备注
// cid料仓编号String是
// op操作String是OPEN=开门,CLOSE=关门
// 参数示例{"cid":"001","op":"OPEN"}
// 返回结果参数名参数描述类型是否必填备注
// code状态码。Integer是0为正常。其他为异常。
// msg提示消息String是
// data
//
// 返回示例{ "code": 0, "msg": "ok", "data": ""}
log.info("{}收到数据为:{}", "boxDoorOp", JsonUtil.toJsonStr(paramList));
String cid = paramList.get("cid").toString();
String op = paramList.get("op").toString();
StatusBean statusBean = DevicesStatusUtil.getStatusBean(cid);
if (statusBean == null || statusBean.timeOut()) {
return ResultBean.newErrorResult(1, "smfcore.duo.offline", "设备{0}离线", new String[]{cid});
}
// closeLock 为enable时此按钮状态为可用,openLock 为enable时,此按钮状态为可用已读
// 客户端收到服务器openLock为doit时,执行打开门锁动作,closeLock为doit时,执行关闭门锁
String opKey = "";
if (op.equals("OPEN")) {
opKey = "openLock";
}
if (op.equals("CLOSE")) {
opKey = "closeLock";
}
if (ObjectUtil.isNotEmpty(opKey)) {
String openLock = statusBean.getData().getOrDefault(opKey, "");
if (openLock.equals("enable")) {
String opValue = "doit";
log.info("boxDoorOp:cid=" + cid + "," + opKey + "=" + opValue);
DevicesStatusUtil.addOp(cid, opKey, opValue);
return ResultBean.newOkResult("smfcore.msg.ok", "操作成功");
}
}
return ResultBean.newErrorResult(2,"smfcore.msg.op.fail","操作失败");
}
}
...@@ -381,3 +381,6 @@ smfcore.agv.awaitingInstruction=\u7B49\u5F85\u6307\u793A ...@@ -381,3 +381,6 @@ smfcore.agv.awaitingInstruction=\u7B49\u5F85\u6307\u793A
smfcore.agv.operation=AGV\u5728\u8FD0\u884C\u4E2D smfcore.agv.operation=AGV\u5728\u8FD0\u884C\u4E2D
smfcore.boxmimokanban=\u4E91\u6599\u4ED3\u770B\u677F smfcore.boxmimokanban=\u4E91\u6599\u4ED3\u770B\u677F
smfcore.neoai=Neo Ai smfcore.neoai=Neo Ai
smfcore.duo.offline=\u8BBE\u5907{0}\u79BB\u7EBF
smfcore.msg.op.fail=\u64CD\u4F5C\u5931\u8D25
smfcore.equip.notExist=\u8BBE\u5907\u4E0D\u5B58\u5728
\ No newline at end of file \ No newline at end of file
...@@ -372,3 +372,6 @@ smfcore.agv.awaitingInstruction=Awaiting instruction ...@@ -372,3 +372,6 @@ smfcore.agv.awaitingInstruction=Awaiting instruction
smfcore.agv.operation=AGV is in operation smfcore.agv.operation=AGV is in operation
smfcore.boxmimokanban=SMD BOX KANBAN smfcore.boxmimokanban=SMD BOX KANBAN
smfcore.neoai=Neo Ai smfcore.neoai=Neo Ai
smfcore.duo.offline=Equipment {0} offline
smfcore.msg.op.fail=failure of an operation
smfcore.equip.notExist=Device does not exist
\ No newline at end of file \ No newline at end of file
...@@ -368,3 +368,6 @@ smfcore.agv.operation=AGV\u52D5\u4F5C\u4E2D\u3067\u3059 ...@@ -368,3 +368,6 @@ smfcore.agv.operation=AGV\u52D5\u4F5C\u4E2D\u3067\u3059
smfcore.boxmimokanban=\u30AF\u30E9\u30A6\u30C9\u5009\u5EAB\u30AB\u30F3\u30D0\u30F3 smfcore.boxmimokanban=\u30AF\u30E9\u30A6\u30C9\u5009\u5EAB\u30AB\u30F3\u30D0\u30F3
smfcore.neoai=Neo Ai smfcore.neoai=Neo Ai
smfcore.duo.offline=\u8BBE\u5907{0}\u79BB\u7EBF
smfcore.msg.op.fail=\u64CD\u4F5C\u5931\u8D25
smfcore.equip.notExist=\u8BBE\u5907\u4E0D\u5B58\u5728
\ No newline at end of file \ No newline at end of file
...@@ -368,3 +368,6 @@ smfcore.agv.operation=AGV\u5728\u8FD0\u884C\u4E2D ...@@ -368,3 +368,6 @@ smfcore.agv.operation=AGV\u5728\u8FD0\u884C\u4E2D
smfcore.boxmimokanban=\u4E91\u6599\u4ED3\u770B\u677F smfcore.boxmimokanban=\u4E91\u6599\u4ED3\u770B\u677F
smfcore.neoai=Neo Ai smfcore.neoai=Neo Ai
smfcore.duo.offline=\u8BBE\u5907{0}\u79BB\u7EBF
smfcore.msg.op.fail=\u64CD\u4F5C\u5931\u8D25
smfcore.equip.notExist=\u8BBE\u5907\u4E0D\u5B58\u5728
\ No newline at end of file \ No newline at end of file
...@@ -368,3 +368,6 @@ smfcore.agv.operation=AGV\u6B63\u5728\u904B\u884C ...@@ -368,3 +368,6 @@ smfcore.agv.operation=AGV\u6B63\u5728\u904B\u884C
smfcore.boxmimokanban=\u96F2\u6599\u5009\u770B\u677F smfcore.boxmimokanban=\u96F2\u6599\u5009\u770B\u677F
smfcore.neoai=Neo Ai smfcore.neoai=Neo Ai
smfcore.duo.offline=\u8A2D\u5099{0}\u96E2\u7DDA
smfcore.msg.op.fail=\u64CD\u4F5C\u5931\u6557
smfcore.equip.notExist=\u8A2D\u5099\u4E0D\u5B58\u5728
\ No newline at end of file \ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!