lxb 1 year ago
parent
commit
7627ede3a1

+ 5 - 2
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/DemoLine/YunjianConstant.java

@@ -40,7 +40,10 @@ public interface YunjianConstant {
     String DEMOLINE_RJQR_KW1 = "126";
     String DEMOLINE_RJQR_KW2 = "125";
 
-    //云箭目标库位
+    //RFID
+    String YUNJIAN_RFID = "YUNJIAN_RFID";
+
+    //目标库位
     String YUNJIAN_TARGET_STORE = "YUNJIAN_TARGET_STORE";
 
     //刀具机械手
@@ -200,7 +203,7 @@ public interface YunjianConstant {
     //示范线执行程序
     String DEMOLINE_EXEPRO_FLAG ="DEMOLINE_EXEPRO_FLAG";
 
-    //云箭多缓存位标志,
+    //多缓存位标志,
     String YUNJIAN_ROBORT_CACHE_FLAG ="YUNJIAN_ROBORT_CACHE_FLAG";
 
     //柔性机器人搬运标志,(不需要移动)

+ 1 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/centralToolMagazine/service/impl/ToolStorgeServiceImpl.java

@@ -237,7 +237,7 @@ public class ToolStorgeServiceImpl extends SuperCacheServiceImpl<ToolStorgeMappe
 
 
         for (ToolStorgePageDTO vo:toolStorgelist) {
-            CuttingTool cuttingTool = cuttingToolMapper.getToolId(vo.getToolCode());
+            CuttingTool cuttingTool = cuttingToolMapper.selectOne(new QueryWrap<CuttingTool>().lambda().eq(CuttingTool::getCutterCode,vo.getToolCode()));
             if(Objects.isNull(cuttingTool)){
                 throw BizException.wrap(10002,vo.getToolCode()+":无法识别【刀具】");
             }

+ 0 - 32
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/TaskNodeServiceImpl.java

@@ -1595,38 +1595,6 @@ public class TaskNodeServiceImpl extends SuperServiceImpl<TaskNodeMapper, TaskNo
             return toolTaskNodeService.toolTaskNodeCallback(bean);
         }
 
-        //更换手抓
-        /*if(StringUtil.isNotEmpty(stockType) && DemoLineConstant.TASK_TYPE_CHANGE.equals(stockType)){
-            if (StringUtils.isNotEmpty(code) && "1".equals(code)) {
-                String changeTargetHand = callBackJsonParam.getOrDefault("CHANGE_TARGET_HAND" + "_" + taskNodeId,"").toString();
-
-                if(StringUtil.isEmpty(changeTargetHand)){
-                    log.warn("【更换手抓】目的位置不存在");
-                    return R.fail(-5,"【更换手抓】目的位置不存在");
-                }
-                Productionresource productionresource = productionresourceBizMapper.selectOne(new QueryWrap<Productionresource>().lambda().eq(Productionresource::getCode, "FMS_JQR"));
-                if(changeTargetHand.equals(productionresource.getHandType())){
-                    return R.fail(-5,"【更换手抓】当前手抓类型和目标手抓类型一致");
-                }else{
-                    log.warn("【更换手抓】成功");
-                    //更新机器人手抓类型
-                    productionresource.setHandType(changeTargetHand);
-                    productionresourceBizMapper.updateById(productionresource);
-
-                    //移除缓存
-                    msgUtil.redis_del("CHANGE_HAND_OP");
-                    msgUtil.redis_del("CHANGE_TARGET_HAND");
-                    msgUtil.redis_del(repeatKey);
-                    return R.success();
-                }
-            }else{
-                msgUtil.redis_del(repeatKey);
-                log.warn("更换手抓失败");
-                return R.fail(-5,"更换手抓失败");
-            }
-
-        }
-*/
         TTask task = taskService.getById(taskId);
         Object taskInfoObject = msgUtil.redis_get(taskId);
 

+ 4 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/TaskServiceImpl.java

@@ -1501,7 +1501,10 @@ public class TaskServiceImpl extends SuperServiceImpl<TTaskMapper, TTask> implem
         }else if("capsule".equals(zZone.getNo())){
             productType = "C";
         }
-        String uniqueCode = productType + BizConstant.MARK_SEPARATOR + order.getOrderNo() + BizConstant.MARK_SEPARATOR + task.getTaskNo() + BizConstant.MARK_SEPARATOR + bom.getBomAlias() + BizConstant.MARK_SEPARATOR + orderMeterialInfo.get("bomBatchNo") + BizConstant.MARK_SEPARATOR + String.format("%06d", tWorkpiece.getSerialNo());
+        //String uniqueCode = productType + BizConstant.MARK_SEPARATOR + order.getOrderNo() + BizConstant.MARK_SEPARATOR + task.getTaskNo() + BizConstant.MARK_SEPARATOR + bom.getBomAlias() + BizConstant.MARK_SEPARATOR + orderMeterialInfo.get("bomBatchNo") + BizConstant.MARK_SEPARATOR + String.format("%06d", tWorkpiece.getSerialNo());
+        //例:子盘ID&夹具ID&订单编号&任务编号&产品代号&产品类型&产品批次号&节点ID
+        //上料前未确认子盘夹具
+        String uniqueCode = order.getOrderNo() + BizConstant.MARK_SEPARATOR + task.getTaskNo() + BizConstant.MARK_SEPARATOR + bom.getBomAlias() + productType + BizConstant.MARK_SEPARATOR + orderMeterialInfo.get("bomBatchNo");
         data.put("uniqueCode",uniqueCode);
         return R.success(data);
     }

+ 1 - 1
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/util/MsgUtil.java

@@ -790,7 +790,7 @@ public class MsgUtil implements ApplicationContextAware {
         String returnData = null;
         try{
             returnData = restTemplate.postForObject(url, formEntity, String.class);
-        }catch(BizException ex){
+        }catch(Exception ex){
             logger.error("接口{}数据远程调用失败,参数:{},报错信息:{}", url,params,ex.getMessage());
         }
         return returnData;

+ 98 - 0
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/externalApi/MesController.java

@@ -0,0 +1,98 @@
+package com.github.zuihou.business.controller.externalApi;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.github.zuihou.base.R;
+import com.github.zuihou.business.productionResourceCenter.entity.Productionresource;
+import com.github.zuihou.business.util.MsgUtil;
+import com.github.zuihou.common.util.StringUtil;
+import com.github.zuihou.context.BaseContextHandler;
+import com.github.zuihou.log.annotation.SysLog;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+import java.util.Map;
+
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/mes")
+@Api(value = "MesController", tags = "测量")
+@SysLog(enabled = true)
+public class MesController {
+
+    @Autowired
+    private MsgUtil msgUtil;
+
+    @ApiOperation(value = "站内机床数据采集接口", notes = "站内机床数据采集接口")
+    @PostMapping("/dataCollector")
+    public R dataCollector(@RequestBody Map<String, Object> params) {
+        log.warn("【站内机床数据采集】MES请求参数:{}",JSONObject.toJSONString(params));
+        BaseContextHandler.setTenant("0000");
+        String resourceIp = params.getOrDefault("resourceIp","").toString();
+
+        if(StringUtil.isEmpty(resourceIp)){
+            return R.fail("请求参数中未包含设备IP");
+        }
+
+        String ccsUrl="http://localhost:9000/DeviceApi";
+
+        JSONObject jsonParam = new JSONObject();
+        jsonParam.put("serverUrl",resourceIp);
+        jsonParam.put("ip",resourceIp);
+        jsonParam.put("port","4840");
+        jsonParam.put("deviceType","Mazaka");
+        jsonParam.put("type","Collect");
+
+        String resultData = msgUtil.httpForPost(ccsUrl, jsonParam.toString());
+        if(StringUtil.isEmpty(resultData)){
+            return R.fail("上位机服务异常");
+        }
+        JSONObject returnObj = JSONObject.parseObject(resultData);
+
+        if("1".equals(returnObj.getString("code"))){
+            return R.fail(returnObj.getString("msg"));
+        }
+        String runDatasInfoStr = returnObj.getString("runDatasInfo");
+        JSONObject collectObj = new JSONObject();
+        if(StringUtil.isNotEmpty(runDatasInfoStr)){
+            JSONObject runDatasInfo = JSONObject.parseObject(runDatasInfoStr);
+            collectObj.put("ncSysTime",new Date()); //系统时间
+            collectObj.put("ncModel",runDatasInfo.get("ncModel")); //cnc型号
+            collectObj.put("machineCoordinate",runDatasInfo.get("machineCoordinate")); //机械坐标
+            collectObj.put("absoluteCoordinate",runDatasInfo.get("absoluteCoordinate")); //绝对坐标
+            collectObj.put("relativeCoordinate",runDatasInfo.get("relativeCoordinate")); //相对坐标
+            collectObj.put("spindleLoad",runDatasInfo.get("spindleLoad")); //主轴负载
+            collectObj.put("feedAxisLoad",runDatasInfo.get("feedAxisLoad")); //进给轴负载
+            collectObj.put("servoLoad",runDatasInfo.get("servoLoad")); //伺服负载
+            collectObj.put("workMode",runDatasInfo.get("runMode")); //工作模式
+            collectObj.put("powerOnTime",runDatasInfo.get("powerOnTime")); //开机时间
+            collectObj.put("ncRunTime",runDatasInfo.get("ncRunTime")); //循环启动时间
+            collectObj.put("workState",runDatasInfo.get("runStatus")); //工作状态
+            collectObj.put("mainProg",runDatasInfo.get("mainProg")); //主程序号
+            collectObj.put("partsCount",runDatasInfo.get("partsCount")); //工件数
+            collectObj.put("currentToolNo",runDatasInfo.get("currentToolNo")); //当前刀号
+            collectObj.put("actFeedSpeed",runDatasInfo.get("actFeedSpeed")); //进给速度
+            collectObj.put("feedRateOvr",runDatasInfo.get("feedRateOvr")); //进给倍率
+            collectObj.put("spindleRateOvr",runDatasInfo.get("spindleRateOvr")); //主轴倍率
+            collectObj.put("actSpindleSpeed",runDatasInfo.get("actSpindleSpeed")); //主轴速度
+        }
+
+        String toolsData = returnObj.getString("toolsData");
+        if(StringUtil.isNotEmpty(toolsData)){
+            collectObj.put("tools",JSONArray.parseArray(toolsData)); //机床刀具列表清单
+        }
+
+        collectObj.put("alarms",returnObj.get("errorsInfo")); //报警数据
+        return R.success(collectObj);
+    }
+
+}

+ 1 - 0
imcs-admin-boot/imcs-common/src/main/java/com/github/zuihou/common/properties/IgnoreTokenProperties.java

@@ -39,6 +39,7 @@ public class IgnoreTokenProperties {
             "/agv/**",
             "/taskNode/taskNodeCallback/**",
             "/toolTaskNode/toolTaskNodeCallback/**",
+            "/mes/dataCollector",
             "/workpiece/handMode/**",
             //"/tray/**",
             //"/mToolClamp/**",