|
@@ -1,523 +1,520 @@
|
|
|
-package com.github.zuihou.business.mq;
|
|
|
-
|
|
|
-import com.alibaba.fastjson.JSONObject;
|
|
|
-import com.github.zuihou.authority.service.common.ParameterService;
|
|
|
-import com.github.zuihou.base.R;
|
|
|
-import com.github.zuihou.business.operationManagementCenter.dao.OrderMapper;
|
|
|
-import com.github.zuihou.business.operationManagementCenter.dao.PlanMapper;
|
|
|
-import com.github.zuihou.business.operationManagementCenter.dao.TTaskMapper;
|
|
|
-import com.github.zuihou.business.operationManagementCenter.dao.TaskNodeMapper;
|
|
|
-import com.github.zuihou.business.operationManagementCenter.entity.Order;
|
|
|
-import com.github.zuihou.business.operationManagementCenter.entity.TTask;
|
|
|
-import com.github.zuihou.business.operationManagementCenter.entity.TaskNode;
|
|
|
-import com.github.zuihou.business.operationManagementCenter.service.TaskNodeService;
|
|
|
-import com.github.zuihou.business.operationManagementCenter.service.TaskService;
|
|
|
-import com.github.zuihou.business.productionReadyCenter.dao.AutoNodeLogMapper;
|
|
|
-import com.github.zuihou.business.productionReadyCenter.dao.AutoNodeMapper;
|
|
|
-import com.github.zuihou.business.productionReadyCenter.dao.BomProcedureProgramGroupMapper;
|
|
|
-import com.github.zuihou.business.productionReadyCenter.entity.AAutoNodeLog;
|
|
|
-import com.github.zuihou.business.productionReadyCenter.entity.BomProcedureProgramGroup;
|
|
|
-import com.github.zuihou.business.productionReadyCenter.service.AutoNodeService;
|
|
|
-import com.github.zuihou.business.util.DynamicRabbitMq;
|
|
|
-import com.github.zuihou.business.util.MsgUtil;
|
|
|
-import com.github.zuihou.business.websocket.WebSocketServer;
|
|
|
-import com.github.zuihou.common.constant.BizConstant;
|
|
|
-import com.github.zuihou.common.constant.CacheKey;
|
|
|
-import com.github.zuihou.common.constant.ParameterKey;
|
|
|
-import com.github.zuihou.common.util.StringUtil;
|
|
|
-import com.github.zuihou.context.BaseContextHandler;
|
|
|
-import com.github.zuihou.database.mybatis.conditions.Wraps;
|
|
|
-import com.google.common.collect.Maps;
|
|
|
-import org.slf4j.Logger;
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.data.redis.core.RedisTemplate;
|
|
|
-import org.springframework.http.HttpEntity;
|
|
|
-import org.springframework.stereotype.Component;
|
|
|
-import org.springframework.web.client.RestTemplate;
|
|
|
-
|
|
|
-import java.text.NumberFormat;
|
|
|
-import java.util.*;
|
|
|
-
|
|
|
-@Component
|
|
|
-public class TaskWork {
|
|
|
- @Autowired
|
|
|
- private TaskService taskService;
|
|
|
- @Autowired
|
|
|
- private AutoNodeService autoNodeService;
|
|
|
- @Autowired
|
|
|
- private OrderMapper orderMapper;
|
|
|
- @Autowired
|
|
|
- private PlanMapper planMapper;
|
|
|
- @Autowired
|
|
|
- private TTaskMapper taskMapper;
|
|
|
- @Autowired
|
|
|
- private AutoNodeLogMapper autoNodeLogMapper;
|
|
|
- @Autowired
|
|
|
- private BomProcedureProgramGroupMapper bomProcedureProgramGroupMapper;
|
|
|
- @Autowired
|
|
|
- private ParameterService parameterService;
|
|
|
- @Autowired
|
|
|
- private RestTemplate restTemplate;
|
|
|
- @Autowired
|
|
|
- private RedisTemplate<String,Object> redisTemplate;
|
|
|
- @Autowired
|
|
|
- private TaskNodeService taskNodeService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private TaskNodeMapper taskNodeMapper;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private DynamicRabbitMq dynamicRabbitMq;
|
|
|
-
|
|
|
- //总控IP
|
|
|
- private String ZK_ip = "192.168.1.41";
|
|
|
-
|
|
|
- //总控端口
|
|
|
- private String ZK_port="4840";
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private MsgUtil msgUtil;
|
|
|
-
|
|
|
- private static Logger logger = LoggerFactory.getLogger(TaskWork.class);
|
|
|
- //@Scheduled(cron="*/9 * * * * ?") //9秒执行一次
|
|
|
- public void updateTaskStatusJob1(String taskId){
|
|
|
- logger.info("======================="+taskId);
|
|
|
- BaseContextHandler.setTenant("0000");
|
|
|
-
|
|
|
- //String temUrl = parameterService.getValue(ParameterKey.AUTOPROGRAMEURL, null);
|
|
|
- //String autoProgrameUrl = parameterService.getValue(ParameterKey.AUTOPROGRAMEURL, null);
|
|
|
- //查出待执行的任务
|
|
|
- //List<TTask> taskList = taskService.list(Wraps.<TTask>lbQ().eq(TTask::getStatus,"1").eq(TTask::getDraftFlag,"0").le(TTask::getExpectStartTime,new Date()));
|
|
|
- Map qMap = new HashMap();
|
|
|
- qMap.put("mulstatus",StringUtil.changeIdsArrToSubQueryStr("1,2"));
|
|
|
- qMap.put("id",taskId);
|
|
|
- List<TTask> taskList = taskMapper.getPrepareTask(qMap);
|
|
|
-
|
|
|
- //计划,订单MAP,用做提升性能,本次更新过的就不更新了
|
|
|
- Map<String,String>planMap = new HashMap<String,String>();
|
|
|
- Map<String,String>OrderMap = new HashMap<String,String>();
|
|
|
- if(taskList!=null&&taskList.size()>0){
|
|
|
- for(TTask task:taskList){
|
|
|
- try{
|
|
|
- //把本次待执行任务全部改成进行中
|
|
|
- //taskMapper.updateTaskBegin();
|
|
|
- if("1".equals(task.getStatus())){//下发的数据才更新状态
|
|
|
- task.setStatus("2").setStartTime(new Date());
|
|
|
- taskMapper.updateById(task);
|
|
|
- if(!planMap.containsKey(String.valueOf(task.getPlanId()))){
|
|
|
- //设置计划开始
|
|
|
- planMapper.updateproduceStatusBegin();
|
|
|
- planMap.put(String.valueOf(task.getPlanId()),String.valueOf(task.getPlanId()));
|
|
|
- }
|
|
|
-
|
|
|
- if(!OrderMap.containsKey(String.valueOf(task.getOrderId()))){
|
|
|
- ////设置订单开始
|
|
|
- orderMapper.updateproduceStatusBegin();
|
|
|
- OrderMap.put(String.valueOf(task.getOrderId()),String.valueOf(task.getOrderId()));
|
|
|
- }
|
|
|
- }
|
|
|
- msgUtil.redis_set(CacheKey.PRESOURCE_CURRENT_TASK+"_"+task.getResourceId(), task.getId());
|
|
|
- msgUtil.redis_set(CacheKey.PRESOURCE_CURRENT_TASK_OBJECT+"_"+task.getResourceId(), task);
|
|
|
- boolean f = false;
|
|
|
- //执行任务对应的自动化程序
|
|
|
- /*AutoNode model = new AutoNode();
|
|
|
- model.setProcedureId(task.getProcedureId());
|
|
|
- List<AutoNode> autoNodeList = autoNodeMapper.getNodeList(model);*/
|
|
|
- Map map = new HashMap();
|
|
|
- map.put("taskId",task.getId());
|
|
|
- List<TaskNode>taskNodeList = taskNodeService.getTaskNodeList(map);
|
|
|
-
|
|
|
- if(taskNodeList!=null&&taskNodeList.size()>0){
|
|
|
- Map queryMap = new HashMap<>();
|
|
|
- queryMap.put("procedureId",task.getProcedureId());
|
|
|
- queryMap.put("haveFile","1");
|
|
|
- List<BomProcedureProgramGroup>bomProcedureProgramGroupList = bomProcedureProgramGroupMapper.getProgramGroupList(queryMap);
|
|
|
- for(int i = 0;i<taskNodeList.size();i++){
|
|
|
- String autoProgrameUrl = "";
|
|
|
- TaskNode taskNode = taskNodeList.get(i);
|
|
|
- //对接接口类型
|
|
|
- if("01".equals(taskNode.getInterfaceType())){//总控
|
|
|
- autoProgrameUrl = parameterService.getValue(ParameterKey.PLCPROGRAMEURL, null);
|
|
|
- }else{
|
|
|
- autoProgrameUrl = parameterService.getValue(ParameterKey.AUTOPROGRAMEURL, null);
|
|
|
- }
|
|
|
-
|
|
|
- //把当前节点存放缓存
|
|
|
- msgUtil.redis_set(CacheKey.TASK_CURRENT_NODE+"_"+task.getResourceId(), taskNode.getAutoNode().getId());
|
|
|
-// String code = taskNode.getAutoNodeCode();
|
|
|
-// autoProgrameUrl+="?func="+code;
|
|
|
-// autoProgrameUrl+="&ip="+task.getIp()+"&port="+task.getPort();
|
|
|
- String fileName = "";
|
|
|
- if(bomProcedureProgramGroupList!=null&&bomProcedureProgramGroupList.size()>0){
|
|
|
- fileName = bomProcedureProgramGroupList.get(0).getSubmittedFileName();
|
|
|
- //autoProgrameUrl+="&fileName="+fileName;
|
|
|
- }
|
|
|
- List<AAutoNodeLog> autoNodeLogList = autoNodeLogMapper.selectList(Wraps.<AAutoNodeLog>lbQ().eq(AAutoNodeLog::getTaskNodeId,taskNode.getId()));
|
|
|
- //插入执行日志
|
|
|
- AAutoNodeLog log = new AAutoNodeLog();
|
|
|
- if(autoNodeLogList==null||autoNodeLogList.size()==0){
|
|
|
- log.setTaskNodeId(taskNode.getId()).setAutoNodeId(taskNode.getAutoNode().getTaskId())
|
|
|
- .setOrderId(task.getOrderId()).setTaskId(task.getId()).setExeStatus("2")
|
|
|
- .setStartTime(new Date()).setFeedbackFile(fileName);
|
|
|
- autoNodeLogMapper.insert(log);
|
|
|
- }else{
|
|
|
- log = autoNodeLogList.get(0);
|
|
|
- log.setFeedbackFile(fileName);
|
|
|
- }
|
|
|
-
|
|
|
- //更新节点任务
|
|
|
- taskNode.setExeStatus("2");
|
|
|
- taskNode.setStartTime(new Date());
|
|
|
- taskNodeMapper.updateAllById(taskNode);
|
|
|
-
|
|
|
- //推送
|
|
|
- this.pushTask(task);
|
|
|
-
|
|
|
- logger.info("===============================请求地址"+autoProgrameUrl);
|
|
|
- String returnData = "";
|
|
|
- try {
|
|
|
- if(!"0".equals(taskNode.getNodeType())){//人工上下料或质检
|
|
|
- //不用调接口,直接返回成功
|
|
|
- returnData = "success";
|
|
|
- }else{
|
|
|
- String jsonParam = getRequestParam(taskNode,task,bomProcedureProgramGroupList);
|
|
|
- HttpEntity<String> formEntity = new HttpEntity<String>(jsonParam);
|
|
|
- returnData = restTemplate.postForObject(autoProgrameUrl,formEntity, String.class);
|
|
|
- }
|
|
|
- }catch(Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- JSONObject errJsonObject = new JSONObject();
|
|
|
- errJsonObject.put("msg",e.getMessage());
|
|
|
- returnData = errJsonObject.toJSONString();
|
|
|
- logger.error("调用接口发生异常"+e.getMessage());
|
|
|
- }
|
|
|
- logger.info("===============================接口返回"+returnData);
|
|
|
- if(returnData.indexOf("success")>=0){
|
|
|
- //TODO
|
|
|
-// if(1==1){
|
|
|
- //判断值是否需要循环自检
|
|
|
- if(!"0".equals(taskNode.getNodeType())){//人工上下料或质检
|
|
|
- msgUtil.redis_set(CacheKey.TASK_CURRENT_NODE_STATUS+"_"+taskNode.getId(), "0");
|
|
|
- String b = checkLoading(taskNode);
|
|
|
- }else{//调用机器
|
|
|
- if("1".equals(taskNode.getSelfExamine())){//需要自检的,需要停顿一会,避免取数不及时
|
|
|
- Thread.sleep(1500L);
|
|
|
- String b = polling(task,taskNode,fileName);
|
|
|
- if("0".equals(b)){//需要跳出
|
|
|
- //插入执行日志
|
|
|
- log.setExeResult("0");
|
|
|
- autoNodeLogMapper.updateAllById(log);
|
|
|
- f = true;
|
|
|
- break;
|
|
|
- }else{//需要复位
|
|
|
- //成功后需要复位
|
|
|
- if(autoNodeService.getNodeTypeReset(taskNode.getAutoNodeCode())){
|
|
|
- String jsonParam = getResetRequestParam(taskNode,task);
|
|
|
- HttpEntity<String> formEntity = new HttpEntity<String>(jsonParam);
|
|
|
- returnData = restTemplate.postForObject(autoProgrameUrl,formEntity, String.class);
|
|
|
- if(returnData.indexOf("success")<0){
|
|
|
- //插入执行日志
|
|
|
- log.setExeResult("0");
|
|
|
- JSONObject jsonErrorObject = JSONObject.parseObject(returnData);
|
|
|
- log.setFeedback(jsonErrorObject.getString("msg"));
|
|
|
- autoNodeLogMapper.updateAllById(log);
|
|
|
- f = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- //处理出库入库
|
|
|
- R<String> r = taskNodeService.taskNodeStock(taskNode, task);
|
|
|
- //插入执行日志
|
|
|
- log.setExeStatus("3");
|
|
|
- if(r.getIsSuccess()){
|
|
|
- log.setExeResult("1").setEndTime(new Date());
|
|
|
- autoNodeLogMapper.updateAllById(log);
|
|
|
- }else{
|
|
|
- log.setExeResult("0").setFeedback(r.getMsg()).setEndTime(new Date());
|
|
|
- autoNodeLogMapper.updateAllById(log);
|
|
|
- f = true;
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- //更新节点任务
|
|
|
- taskNode.setExeStatus("3").setExeResult("1").setEndTime(new Date());
|
|
|
- taskNodeMapper.updateAllById(taskNode);
|
|
|
-
|
|
|
- //把当前完成的节点放入缓存,用于推送任务完成的百分比
|
|
|
- NumberFormat numberFormat = NumberFormat.getInstance();
|
|
|
- numberFormat.setMaximumFractionDigits(2);
|
|
|
- msgUtil.redis_set(CacheKey.TASK_CURRENT_NODE_PERCENT+"_"+task.getResourceId(), numberFormat.format(100*(float)(i+1) /(float)taskNodeList.size()));
|
|
|
- task.setProcess(Double.parseDouble(numberFormat.format(100*(float)(i+1) /(float)taskNodeList.size())));
|
|
|
- if(i==taskNodeList.size()-1){
|
|
|
- task.setStatus("3");
|
|
|
- task.setEndTime(new Date());
|
|
|
- taskMapper.updateById(task);
|
|
|
- //推送
|
|
|
- //删除正在执行的缓存
|
|
|
- msgUtil.redis_del(Arrays.asList(new String[] {CacheKey.PRESOURCE_CURRENT_TASK+"_"+task.getResourceId(),CacheKey.PRESOURCE_CURRENT_TASK_OBJECT+"_"+task.getResourceId(),CacheKey.TASK_CURRENT_NODE+"_"+task.getResourceId()}));
|
|
|
- this.pushTask(task);
|
|
|
- }else{//主要更新完成比例
|
|
|
- taskMapper.updateById(task);
|
|
|
- }
|
|
|
- }else{//TODO
|
|
|
- //插入执行日志
|
|
|
- log.setExeResult("0");
|
|
|
- JSONObject jsonErrorObject = JSONObject.parseObject(returnData);
|
|
|
- log.setFeedback(jsonErrorObject.getString("msg"));
|
|
|
- autoNodeLogMapper.updateAllById(log);
|
|
|
- f = true;
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- //更新订单表里的完成数量等等字段
|
|
|
- if(i==0&&"1".equals(task.getFirstProcedureFlag())){
|
|
|
- Order order = orderMapper.selectById(task.getOrderId());
|
|
|
- order.setProduceNum((order.getProduceNum()==null?0:order.getProduceNum())+1);
|
|
|
- orderMapper.updateAllById(order);
|
|
|
- }
|
|
|
- //更新订单表里的完成数量等等字段,一个任务执行完的时候更相信
|
|
|
- if(i==taskNodeList.size()-1&&"1".equals(task.getLastProcedureFlag())){
|
|
|
- Order order = orderMapper.selectById(task.getOrderId());
|
|
|
- order.setCompleteNum((order.getCompleteNum()==null?0:order.getCompleteNum())+1);
|
|
|
- orderMapper.updateAllById(order);
|
|
|
-
|
|
|
- //设置计划结束
|
|
|
- planMapper.updateproduceStatusFinish();
|
|
|
- ////设置订单结束
|
|
|
- orderMapper.updateproduceStatusFinish();
|
|
|
- }
|
|
|
- }
|
|
|
- }else{//没有节点直接改成已完成
|
|
|
- task.setStatus("3").setEndTime(new Date());
|
|
|
- taskMapper.updateById(task);
|
|
|
- }
|
|
|
- if(f){
|
|
|
- break;
|
|
|
- }
|
|
|
- }catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- logger.info("===============================接口返回",e);
|
|
|
- }finally {
|
|
|
- //删除正在执行的缓存
|
|
|
- msgUtil.redis_del(Arrays.asList(new String[] {CacheKey.PRESOURCE_CURRENT_TASK+"_"+task.getResourceId(),CacheKey.PRESOURCE_CURRENT_TASK_OBJECT+"_"+task.getResourceId(),CacheKey.TASK_CURRENT_NODE+"_"+task.getResourceId()}));
|
|
|
- }
|
|
|
- }
|
|
|
- //查询出下一个任务,并推送到设备上
|
|
|
- TTask task = taskList.get(0);
|
|
|
- List<TTask>nextTaskList = taskService.list(Wraps.<TTask>lbQ().eq(TTask::getBomBatchNo,task.getBomBatchNo()).gt(TTask::getProcedureSort,task.getProcedureSort()).orderByAsc(TTask::getProcedureSort));
|
|
|
- if(nextTaskList!=null&&nextTaskList.size()>0){
|
|
|
- TTask t = nextTaskList.get(0);
|
|
|
- dynamicRabbitMq.sendMsg(t.getResourceId().toString(),t.getId().toString());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- public String checkLoading(TaskNode taskNode)throws Exception{
|
|
|
- String redisData = "";
|
|
|
- try {
|
|
|
- redisData = msgUtil.redis_get(CacheKey.TASK_CURRENT_NODE_STATUS+"_"+taskNode.getId()).toString();
|
|
|
- }catch (Exception e){
|
|
|
- Thread.sleep(1000);
|
|
|
- logger.error("缓存获取异常",e);
|
|
|
- return checkLoading(taskNode);
|
|
|
- }
|
|
|
-
|
|
|
- if(!"1".equals(redisData)){
|
|
|
- Thread.sleep(1000);
|
|
|
- return checkLoading(taskNode);
|
|
|
- }else{
|
|
|
- msgUtil.redis_del(CacheKey.TASK_CURRENT_NODE_STATUS+"_"+taskNode.getId());
|
|
|
- return "1";
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public String polling(TTask task,TaskNode taskNode,String fileName)throws Exception{
|
|
|
- String ip = task.getIp();
|
|
|
- String port = task.getPort();
|
|
|
- if(autoNodeService.getNodeTypeResourceLoading(taskNode.getAutoNodeCode())){
|
|
|
- ip = ZK_ip;
|
|
|
- port = ZK_port;
|
|
|
- }
|
|
|
- String redisData = "";
|
|
|
- try {
|
|
|
- redisData = msgUtil.redis_get(ip+":"+port).toString();
|
|
|
- }catch (Exception e){
|
|
|
- Thread.sleep(1000);
|
|
|
- logger.error("缓存获取异常",e);
|
|
|
- return polling(task,taskNode,fileName);
|
|
|
- }
|
|
|
-
|
|
|
- JSONObject returnJson = JSONObject.parseObject(redisData);
|
|
|
- String conf = taskNode.getExamineMatchConf();
|
|
|
- JSONObject confJson = JSONObject.parseObject(conf);
|
|
|
-
|
|
|
- /*if(!testbreak(returnJson,confJson)){//需要跳出
|
|
|
- return "0";
|
|
|
- }*/
|
|
|
-
|
|
|
- if(autoNodeService.getNodeTypeResourceLoading(taskNode.getAutoNodeCode())){
|
|
|
- if(!testSuccessResourceLoading(returnJson,confJson,fileName)){//尚未成功
|
|
|
- Thread.sleep(1000);
|
|
|
- return polling(task,taskNode,fileName);
|
|
|
- }else{
|
|
|
- return "1";
|
|
|
- }
|
|
|
- }else{
|
|
|
- if(!testSuccess(returnJson,confJson,fileName)){//尚未成功
|
|
|
- Thread.sleep(1000);
|
|
|
- return polling(task,taskNode,fileName);
|
|
|
- }else{
|
|
|
- return "1";
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 自检的数据,从缓存验证是否成功
|
|
|
- * @param returnJson
|
|
|
- * @param confJson
|
|
|
- * @return
|
|
|
- */
|
|
|
- public boolean testbreak(JSONObject returnJson,JSONObject confJson){
|
|
|
- boolean f = true;
|
|
|
- String proRunState = returnJson.get("ProRunState")==null?"":returnJson.get("ProRunState").toString();
|
|
|
- //先写死,后面要考虑怎么配置。
|
|
|
- if("2".equals(proRunState)||"3".equals(proRunState)){
|
|
|
- f = false;
|
|
|
- }
|
|
|
- /*for(String key:confJson.keySet()){
|
|
|
- if(returnJson.containsKey(key)){
|
|
|
- if(returnJson.getString(key)!=null&&returnJson.getString(key).equals(confJson.getString(key))){
|
|
|
- f = false;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }*/
|
|
|
- return f;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 自检的数据,从缓存验证是否成功
|
|
|
- * @param returnJson
|
|
|
- * @param confJson
|
|
|
- * @return
|
|
|
- */
|
|
|
- public boolean testSuccess(JSONObject returnJson,JSONObject confJson,String fileName){
|
|
|
- boolean f = true;
|
|
|
- String mainProgNo = returnJson.getString("MainProgNo").toUpperCase();
|
|
|
- String tmpFileName = fileName.replace(".","_").toUpperCase();
|
|
|
-
|
|
|
- for(String key:confJson.keySet()){
|
|
|
- if(!mainProgNo.endsWith(tmpFileName)){
|
|
|
- logger.info("================================hhh"+mainProgNo);
|
|
|
- logger.info("*****************************"+tmpFileName);
|
|
|
- f = false;
|
|
|
- break;
|
|
|
- }
|
|
|
- if(returnJson.containsKey(key)){
|
|
|
- if(returnJson.getString(key)!=null&&!returnJson.getString(key).equals(confJson.getString(key))){
|
|
|
- f = false;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return f;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 自检的数据,从缓存验证是否成功
|
|
|
- * @param returnJson
|
|
|
- * @param confJson
|
|
|
- * @return
|
|
|
- */
|
|
|
- public boolean testSuccessResourceLoading(JSONObject returnJson,JSONObject confJson,String fileName){
|
|
|
- boolean f = true;
|
|
|
- for(String key:confJson.keySet()){
|
|
|
- if(returnJson.containsKey(key)){
|
|
|
- if(returnJson.getString(key)!=null&&!returnJson.getString(key).toUpperCase().equals(confJson.getString(key)==null?"":confJson.getString(key).toUpperCase())){
|
|
|
- f = false;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return f;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- public void pushTask(TTask task){
|
|
|
- Map<String,Object> rmap = Maps.newHashMap();
|
|
|
- rmap.put("id",task.getResourceId());
|
|
|
- Map<String,Object> pmap = taskService.getExeTaskByResourceList(rmap);
|
|
|
- Object o = pmap.get("orderList");
|
|
|
- Map<String,Object >pushMap = new HashMap<>();
|
|
|
- pushMap.put("type",WebSocketServer.PUSH_TYPE_RESOURCE_TASK);
|
|
|
- pushMap.put(String.valueOf(task.getResourceId()),pmap);
|
|
|
- msgUtil.pushTask(task, pushMap);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 生成请求参数
|
|
|
- * @param task
|
|
|
- * @return
|
|
|
- */
|
|
|
- public String getRequestParam(TaskNode taskNode , TTask task, List<BomProcedureProgramGroup>bomProcedureProgramGroupList){
|
|
|
- JSONObject jsonObject = new JSONObject();
|
|
|
- jsonObject.put("businessType",taskNode.getAutoNodeCode());
|
|
|
- //机器上下料相关
|
|
|
- if(autoNodeService.getNodeTypeResourceLoading(taskNode.getAutoNodeCode())){
|
|
|
- jsonObject.put("url",ZK_ip);
|
|
|
- jsonObject.put("port",ZK_port);
|
|
|
- }else{
|
|
|
- jsonObject.put("url",task.getIp());
|
|
|
- jsonObject.put("port",task.getPort());
|
|
|
- }
|
|
|
-
|
|
|
- if(bomProcedureProgramGroupList!=null&&bomProcedureProgramGroupList.size()>0){
|
|
|
- String fileName = bomProcedureProgramGroupList.get(0).getSubmittedFileName();
|
|
|
- jsonObject.put("data",fileName);
|
|
|
- }
|
|
|
- logger.info("节点请求参数"+jsonObject.toJSONString());
|
|
|
- return jsonObject.toJSONString();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 生成复位请求参数
|
|
|
- * @param task
|
|
|
- * @return
|
|
|
- */
|
|
|
- public String getResetRequestParam(TaskNode taskNode , TTask task){
|
|
|
- JSONObject jsonObject = new JSONObject();
|
|
|
-
|
|
|
- jsonObject.put("businessType",taskNode.getAutoNodeCode()+BizConstant.TASK_NODE_RESET_KEYWORD);
|
|
|
-// if(BizConstant.TASK_NODE_DRYREQUEST.equals(taskNode.getAutoNodeCode())){
|
|
|
-// jsonObject.put("businessType",BizConstant.TASK_NODE_RESET_DRYREQUEST);
|
|
|
-// }else if(BizConstant.TASK_NODE_CLEANREQUEST.equals(taskNode.getAutoNodeCode())){
|
|
|
-// jsonObject.put("businessType",BizConstant.TASK_NODE_RESET_CLEANREQUEST);
|
|
|
-// }else if(BizConstant.TASK_NODE_MARKREQUEST.equals(taskNode.getAutoNodeCode())){
|
|
|
-// jsonObject.put("businessType",BizConstant.TASK_NODE_RESET_MARKREQUEST);
|
|
|
+//package com.github.zuihou.business.mq;
|
|
|
+//
|
|
|
+//import com.alibaba.fastjson.JSONObject;
|
|
|
+//import com.github.zuihou.authority.service.common.ParameterService;
|
|
|
+//import com.github.zuihou.base.R;
|
|
|
+//import com.github.zuihou.business.operationManagementCenter.dao.OrderMapper;
|
|
|
+//import com.github.zuihou.business.operationManagementCenter.dao.PlanMapper;
|
|
|
+//import com.github.zuihou.business.operationManagementCenter.dao.TTaskMapper;
|
|
|
+//import com.github.zuihou.business.operationManagementCenter.dao.TaskNodeMapper;
|
|
|
+//import com.github.zuihou.business.operationManagementCenter.entity.Order;
|
|
|
+//import com.github.zuihou.business.operationManagementCenter.entity.TTask;
|
|
|
+//import com.github.zuihou.business.operationManagementCenter.entity.TaskNode;
|
|
|
+//import com.github.zuihou.business.operationManagementCenter.service.TaskNodeService;
|
|
|
+//import com.github.zuihou.business.operationManagementCenter.service.TaskService;
|
|
|
+//import com.github.zuihou.business.productionReadyCenter.dao.AutoNodeLogMapper;
|
|
|
+//import com.github.zuihou.business.productionReadyCenter.entity.AAutoNodeLog;
|
|
|
+//import com.github.zuihou.business.productionReadyCenter.service.AutoNodeService;
|
|
|
+//import com.github.zuihou.business.util.DynamicRabbitMq;
|
|
|
+//import com.github.zuihou.business.util.MsgUtil;
|
|
|
+//import com.github.zuihou.business.websocket.WebSocketServer;
|
|
|
+//import com.github.zuihou.common.constant.BizConstant;
|
|
|
+//import com.github.zuihou.common.constant.CacheKey;
|
|
|
+//import com.github.zuihou.common.constant.ParameterKey;
|
|
|
+//import com.github.zuihou.common.util.StringUtil;
|
|
|
+//import com.github.zuihou.context.BaseContextHandler;
|
|
|
+//import com.github.zuihou.database.mybatis.conditions.Wraps;
|
|
|
+//import com.google.common.collect.Maps;
|
|
|
+//import org.slf4j.Logger;
|
|
|
+//import org.slf4j.LoggerFactory;
|
|
|
+//import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+//import org.springframework.data.redis.core.RedisTemplate;
|
|
|
+//import org.springframework.http.HttpEntity;
|
|
|
+//import org.springframework.stereotype.Component;
|
|
|
+//import org.springframework.web.client.RestTemplate;
|
|
|
+//
|
|
|
+//import java.text.NumberFormat;
|
|
|
+//import java.util.*;
|
|
|
+//
|
|
|
+//@Component
|
|
|
+//public class TaskWork {
|
|
|
+// @Autowired
|
|
|
+// private TaskService taskService;
|
|
|
+// @Autowired
|
|
|
+// private AutoNodeService autoNodeService;
|
|
|
+// @Autowired
|
|
|
+// private OrderMapper orderMapper;
|
|
|
+// @Autowired
|
|
|
+// private PlanMapper planMapper;
|
|
|
+// @Autowired
|
|
|
+// private TTaskMapper taskMapper;
|
|
|
+// @Autowired
|
|
|
+// private AutoNodeLogMapper autoNodeLogMapper;
|
|
|
+//// @Autowired
|
|
|
+//// private BomProcedureProgramGroupMapper bomProcedureProgramGroupMapper;
|
|
|
+// @Autowired
|
|
|
+// private ParameterService parameterService;
|
|
|
+// @Autowired
|
|
|
+// private RestTemplate restTemplate;
|
|
|
+// @Autowired
|
|
|
+// private RedisTemplate<String,Object> redisTemplate;
|
|
|
+// @Autowired
|
|
|
+// private TaskNodeService taskNodeService;
|
|
|
+//
|
|
|
+// @Autowired
|
|
|
+// private TaskNodeMapper taskNodeMapper;
|
|
|
+//
|
|
|
+// @Autowired
|
|
|
+// private DynamicRabbitMq dynamicRabbitMq;
|
|
|
+//
|
|
|
+// //总控IP
|
|
|
+// private String ZK_ip = "192.168.1.41";
|
|
|
+//
|
|
|
+// //总控端口
|
|
|
+// private String ZK_port="4840";
|
|
|
+//
|
|
|
+// @Autowired
|
|
|
+// private MsgUtil msgUtil;
|
|
|
+//
|
|
|
+// private static Logger logger = LoggerFactory.getLogger(TaskWork.class);
|
|
|
+// //@Scheduled(cron="*/9 * * * * ?") //9秒执行一次
|
|
|
+// public void updateTaskStatusJob1(String taskId){
|
|
|
+// logger.info("======================="+taskId);
|
|
|
+// BaseContextHandler.setTenant("0000");
|
|
|
+//
|
|
|
+// //String temUrl = parameterService.getValue(ParameterKey.AUTOPROGRAMEURL, null);
|
|
|
+// //String autoProgrameUrl = parameterService.getValue(ParameterKey.AUTOPROGRAMEURL, null);
|
|
|
+// //查出待执行的任务
|
|
|
+// //List<TTask> taskList = taskService.list(Wraps.<TTask>lbQ().eq(TTask::getStatus,"1").eq(TTask::getDraftFlag,"0").le(TTask::getExpectStartTime,new Date()));
|
|
|
+// Map qMap = new HashMap();
|
|
|
+// qMap.put("mulstatus",StringUtil.changeIdsArrToSubQueryStr("1,2"));
|
|
|
+// qMap.put("id",taskId);
|
|
|
+// List<TTask> taskList = taskMapper.getPrepareTask(qMap);
|
|
|
+//
|
|
|
+// //计划,订单MAP,用做提升性能,本次更新过的就不更新了
|
|
|
+// Map<String,String>planMap = new HashMap<String,String>();
|
|
|
+// Map<String,String>OrderMap = new HashMap<String,String>();
|
|
|
+// if(taskList!=null&&taskList.size()>0){
|
|
|
+// for(TTask task:taskList){
|
|
|
+// try{
|
|
|
+// //把本次待执行任务全部改成进行中
|
|
|
+// //taskMapper.updateTaskBegin();
|
|
|
+// if("1".equals(task.getStatus())){//下发的数据才更新状态
|
|
|
+// task.setStatus("2").setStartTime(new Date());
|
|
|
+// taskMapper.updateById(task);
|
|
|
+// if(!planMap.containsKey(String.valueOf(task.getPlanId()))){
|
|
|
+// //设置计划开始
|
|
|
+// planMapper.updateproduceStatusBegin();
|
|
|
+// planMap.put(String.valueOf(task.getPlanId()),String.valueOf(task.getPlanId()));
|
|
|
+// }
|
|
|
+//
|
|
|
+// if(!OrderMap.containsKey(String.valueOf(task.getOrderId()))){
|
|
|
+// ////设置订单开始
|
|
|
+// orderMapper.updateproduceStatusBegin();
|
|
|
+// OrderMap.put(String.valueOf(task.getOrderId()),String.valueOf(task.getOrderId()));
|
|
|
+// }
|
|
|
+// }
|
|
|
+// msgUtil.redis_set(CacheKey.PRESOURCE_CURRENT_TASK+"_"+task.getResourceId(), task.getId());
|
|
|
+// msgUtil.redis_set(CacheKey.PRESOURCE_CURRENT_TASK_OBJECT+"_"+task.getResourceId(), task);
|
|
|
+// boolean f = false;
|
|
|
+// //执行任务对应的自动化程序
|
|
|
+// /*AutoNode model = new AutoNode();
|
|
|
+// model.setProcedureId(task.getProcedureId());
|
|
|
+// List<AutoNode> autoNodeList = autoNodeMapper.getNodeList(model);*/
|
|
|
+// Map map = new HashMap();
|
|
|
+// map.put("taskId",task.getId());
|
|
|
+// List<TaskNode>taskNodeList = taskNodeService.getTaskNodeList(map);
|
|
|
+//
|
|
|
+// if(taskNodeList!=null&&taskNodeList.size()>0){
|
|
|
+// Map queryMap = new HashMap<>();
|
|
|
+// queryMap.put("procedureId",task.getProcedureId());
|
|
|
+// queryMap.put("haveFile","1");
|
|
|
+// List<BomProcedureProgramGroup>bomProcedureProgramGroupList = bomProcedureProgramGroupMapper.getProgramGroupList(queryMap);
|
|
|
+// for(int i = 0;i<taskNodeList.size();i++){
|
|
|
+// String autoProgrameUrl = "";
|
|
|
+// TaskNode taskNode = taskNodeList.get(i);
|
|
|
+// //对接接口类型
|
|
|
+// if("01".equals(taskNode.getInterfaceType())){//总控
|
|
|
+// autoProgrameUrl = parameterService.getValue(ParameterKey.PLCPROGRAMEURL, null);
|
|
|
+// }else{
|
|
|
+// autoProgrameUrl = parameterService.getValue(ParameterKey.AUTOPROGRAMEURL, null);
|
|
|
+// }
|
|
|
+//
|
|
|
+// //把当前节点存放缓存
|
|
|
+// msgUtil.redis_set(CacheKey.TASK_CURRENT_NODE+"_"+task.getResourceId(), taskNode.getAutoNode().getId());
|
|
|
+//// String code = taskNode.getAutoNodeCode();
|
|
|
+//// autoProgrameUrl+="?func="+code;
|
|
|
+//// autoProgrameUrl+="&ip="+task.getIp()+"&port="+task.getPort();
|
|
|
+// String fileName = "";
|
|
|
+// if(bomProcedureProgramGroupList!=null&&bomProcedureProgramGroupList.size()>0){
|
|
|
+// fileName = bomProcedureProgramGroupList.get(0).getSubmittedFileName();
|
|
|
+// //autoProgrameUrl+="&fileName="+fileName;
|
|
|
+// }
|
|
|
+// List<AAutoNodeLog> autoNodeLogList = autoNodeLogMapper.selectList(Wraps.<AAutoNodeLog>lbQ().eq(AAutoNodeLog::getTaskNodeId,taskNode.getId()));
|
|
|
+// //插入执行日志
|
|
|
+// AAutoNodeLog log = new AAutoNodeLog();
|
|
|
+// if(autoNodeLogList==null||autoNodeLogList.size()==0){
|
|
|
+// log.setTaskNodeId(taskNode.getId()).setAutoNodeId(taskNode.getAutoNode().getTaskId())
|
|
|
+// .setOrderId(task.getOrderId()).setTaskId(task.getId()).setExeStatus("2")
|
|
|
+// .setStartTime(new Date()).setFeedbackFile(fileName);
|
|
|
+// autoNodeLogMapper.insert(log);
|
|
|
+// }else{
|
|
|
+// log = autoNodeLogList.get(0);
|
|
|
+// log.setFeedbackFile(fileName);
|
|
|
+// }
|
|
|
+//
|
|
|
+// //更新节点任务
|
|
|
+// taskNode.setExeStatus("2");
|
|
|
+// taskNode.setStartTime(new Date());
|
|
|
+// taskNodeMapper.updateAllById(taskNode);
|
|
|
+//
|
|
|
+// //推送
|
|
|
+// this.pushTask(task);
|
|
|
+//
|
|
|
+// logger.info("===============================请求地址"+autoProgrameUrl);
|
|
|
+// String returnData = "";
|
|
|
+// try {
|
|
|
+// if(!"0".equals(taskNode.getNodeType())){//人工上下料或质检
|
|
|
+// //不用调接口,直接返回成功
|
|
|
+// returnData = "success";
|
|
|
+// }else{
|
|
|
+// String jsonParam = getRequestParam(taskNode,task,bomProcedureProgramGroupList);
|
|
|
+// HttpEntity<String> formEntity = new HttpEntity<String>(jsonParam);
|
|
|
+// returnData = restTemplate.postForObject(autoProgrameUrl,formEntity, String.class);
|
|
|
+// }
|
|
|
+// }catch(Exception e){
|
|
|
+// e.printStackTrace();
|
|
|
+// JSONObject errJsonObject = new JSONObject();
|
|
|
+// errJsonObject.put("msg",e.getMessage());
|
|
|
+// returnData = errJsonObject.toJSONString();
|
|
|
+// logger.error("调用接口发生异常"+e.getMessage());
|
|
|
+// }
|
|
|
+// logger.info("===============================接口返回"+returnData);
|
|
|
+// if(returnData.indexOf("success")>=0){
|
|
|
+// //TODO
|
|
|
+//// if(1==1){
|
|
|
+// //判断值是否需要循环自检
|
|
|
+// if(!"0".equals(taskNode.getNodeType())){//人工上下料或质检
|
|
|
+// msgUtil.redis_set(CacheKey.TASK_CURRENT_NODE_STATUS+"_"+taskNode.getId(), "0");
|
|
|
+// String b = checkLoading(taskNode);
|
|
|
+// }else{//调用机器
|
|
|
+// if("1".equals(taskNode.getSelfExamine())){//需要自检的,需要停顿一会,避免取数不及时
|
|
|
+// Thread.sleep(1500L);
|
|
|
+// String b = polling(task,taskNode,fileName);
|
|
|
+// if("0".equals(b)){//需要跳出
|
|
|
+// //插入执行日志
|
|
|
+// log.setExeResult("0");
|
|
|
+// autoNodeLogMapper.updateAllById(log);
|
|
|
+// f = true;
|
|
|
+// break;
|
|
|
+// }else{//需要复位
|
|
|
+// //成功后需要复位
|
|
|
+// if(autoNodeService.getNodeTypeReset(taskNode.getAutoNodeCode())){
|
|
|
+// String jsonParam = getResetRequestParam(taskNode,task);
|
|
|
+// HttpEntity<String> formEntity = new HttpEntity<String>(jsonParam);
|
|
|
+// returnData = restTemplate.postForObject(autoProgrameUrl,formEntity, String.class);
|
|
|
+// if(returnData.indexOf("success")<0){
|
|
|
+// //插入执行日志
|
|
|
+// log.setExeResult("0");
|
|
|
+// JSONObject jsonErrorObject = JSONObject.parseObject(returnData);
|
|
|
+// log.setFeedback(jsonErrorObject.getString("msg"));
|
|
|
+// autoNodeLogMapper.updateAllById(log);
|
|
|
+// f = true;
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// //处理出库入库
|
|
|
+// R<String> r = taskNodeService.taskNodeStock(taskNode, task);
|
|
|
+// //插入执行日志
|
|
|
+// log.setExeStatus("3");
|
|
|
+// if(r.getIsSuccess()){
|
|
|
+// log.setExeResult("1").setEndTime(new Date());
|
|
|
+// autoNodeLogMapper.updateAllById(log);
|
|
|
+// }else{
|
|
|
+// log.setExeResult("0").setFeedback(r.getMsg()).setEndTime(new Date());
|
|
|
+// autoNodeLogMapper.updateAllById(log);
|
|
|
+// f = true;
|
|
|
+// break;
|
|
|
+// }
|
|
|
+//
|
|
|
+// //更新节点任务
|
|
|
+// taskNode.setExeStatus("3").setExeResult("1").setEndTime(new Date());
|
|
|
+// taskNodeMapper.updateAllById(taskNode);
|
|
|
+//
|
|
|
+// //把当前完成的节点放入缓存,用于推送任务完成的百分比
|
|
|
+// NumberFormat numberFormat = NumberFormat.getInstance();
|
|
|
+// numberFormat.setMaximumFractionDigits(2);
|
|
|
+// msgUtil.redis_set(CacheKey.TASK_CURRENT_NODE_PERCENT+"_"+task.getResourceId(), numberFormat.format(100*(float)(i+1) /(float)taskNodeList.size()));
|
|
|
+// task.setProcess(Double.parseDouble(numberFormat.format(100*(float)(i+1) /(float)taskNodeList.size())));
|
|
|
+// if(i==taskNodeList.size()-1){
|
|
|
+// task.setStatus("3");
|
|
|
+// task.setEndTime(new Date());
|
|
|
+// taskMapper.updateById(task);
|
|
|
+// //推送
|
|
|
+// //删除正在执行的缓存
|
|
|
+// msgUtil.redis_del(Arrays.asList(new String[] {CacheKey.PRESOURCE_CURRENT_TASK+"_"+task.getResourceId(),CacheKey.PRESOURCE_CURRENT_TASK_OBJECT+"_"+task.getResourceId(),CacheKey.TASK_CURRENT_NODE+"_"+task.getResourceId()}));
|
|
|
+// this.pushTask(task);
|
|
|
+// }else{//主要更新完成比例
|
|
|
+// taskMapper.updateById(task);
|
|
|
+// }
|
|
|
+// }else{//TODO
|
|
|
+// //插入执行日志
|
|
|
+// log.setExeResult("0");
|
|
|
+// JSONObject jsonErrorObject = JSONObject.parseObject(returnData);
|
|
|
+// log.setFeedback(jsonErrorObject.getString("msg"));
|
|
|
+// autoNodeLogMapper.updateAllById(log);
|
|
|
+// f = true;
|
|
|
+// break;
|
|
|
+// }
|
|
|
+//
|
|
|
+// //更新订单表里的完成数量等等字段
|
|
|
+// if(i==0&&"1".equals(task.getFirstProcedureFlag())){
|
|
|
+// Order order = orderMapper.selectById(task.getOrderId());
|
|
|
+// order.setProduceNum((order.getProduceNum()==null?0:order.getProduceNum())+1);
|
|
|
+// orderMapper.updateAllById(order);
|
|
|
+// }
|
|
|
+// //更新订单表里的完成数量等等字段,一个任务执行完的时候更相信
|
|
|
+// if(i==taskNodeList.size()-1&&"1".equals(task.getLastProcedureFlag())){
|
|
|
+// Order order = orderMapper.selectById(task.getOrderId());
|
|
|
+// order.setCompleteNum((order.getCompleteNum()==null?0:order.getCompleteNum())+1);
|
|
|
+// orderMapper.updateAllById(order);
|
|
|
+//
|
|
|
+// //设置计划结束
|
|
|
+// planMapper.updateproduceStatusFinish();
|
|
|
+// ////设置订单结束
|
|
|
+// orderMapper.updateproduceStatusFinish();
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }else{//没有节点直接改成已完成
|
|
|
+// task.setStatus("3").setEndTime(new Date());
|
|
|
+// taskMapper.updateById(task);
|
|
|
+// }
|
|
|
+// if(f){
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }catch (Exception e){
|
|
|
+// e.printStackTrace();
|
|
|
+// logger.info("===============================接口返回",e);
|
|
|
+// }finally {
|
|
|
+// //删除正在执行的缓存
|
|
|
+// msgUtil.redis_del(Arrays.asList(new String[] {CacheKey.PRESOURCE_CURRENT_TASK+"_"+task.getResourceId(),CacheKey.PRESOURCE_CURRENT_TASK_OBJECT+"_"+task.getResourceId(),CacheKey.TASK_CURRENT_NODE+"_"+task.getResourceId()}));
|
|
|
+// }
|
|
|
+// }
|
|
|
+// //查询出下一个任务,并推送到设备上
|
|
|
+// TTask task = taskList.get(0);
|
|
|
+// List<TTask>nextTaskList = taskService.list(Wraps.<TTask>lbQ().eq(TTask::getBomBatchNo,task.getBomBatchNo()).gt(TTask::getProcedureSort,task.getProcedureSort()).orderByAsc(TTask::getProcedureSort));
|
|
|
+// if(nextTaskList!=null&&nextTaskList.size()>0){
|
|
|
+// TTask t = nextTaskList.get(0);
|
|
|
+// dynamicRabbitMq.sendMsg(t.getResourceId().toString(),t.getId().toString());
|
|
|
+// }
|
|
|
// }
|
|
|
-
|
|
|
- //机器上下料相关
|
|
|
- if(autoNodeService.getNodeTypeResourceLoading(taskNode.getAutoNodeCode())){
|
|
|
- jsonObject.put("url",ZK_ip);
|
|
|
- jsonObject.put("port",ZK_port);
|
|
|
- }else{
|
|
|
- jsonObject.put("url",task.getIp());
|
|
|
- jsonObject.put("port",task.getPort());
|
|
|
- }
|
|
|
- logger.info("复位请求参数"+jsonObject.toJSONString());
|
|
|
- return jsonObject.toJSONString();
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
+//
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// public String checkLoading(TaskNode taskNode)throws Exception{
|
|
|
+// String redisData = "";
|
|
|
+// try {
|
|
|
+// redisData = msgUtil.redis_get(CacheKey.TASK_CURRENT_NODE_STATUS+"_"+taskNode.getId()).toString();
|
|
|
+// }catch (Exception e){
|
|
|
+// Thread.sleep(1000);
|
|
|
+// logger.error("缓存获取异常",e);
|
|
|
+// return checkLoading(taskNode);
|
|
|
+// }
|
|
|
+//
|
|
|
+// if(!"1".equals(redisData)){
|
|
|
+// Thread.sleep(1000);
|
|
|
+// return checkLoading(taskNode);
|
|
|
+// }else{
|
|
|
+// msgUtil.redis_del(CacheKey.TASK_CURRENT_NODE_STATUS+"_"+taskNode.getId());
|
|
|
+// return "1";
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// public String polling(TTask task,TaskNode taskNode,String fileName)throws Exception{
|
|
|
+// String ip = task.getIp();
|
|
|
+// String port = task.getPort();
|
|
|
+// if(autoNodeService.getNodeTypeResourceLoading(taskNode.getAutoNodeCode())){
|
|
|
+// ip = ZK_ip;
|
|
|
+// port = ZK_port;
|
|
|
+// }
|
|
|
+// String redisData = "";
|
|
|
+// try {
|
|
|
+// redisData = msgUtil.redis_get(ip+":"+port).toString();
|
|
|
+// }catch (Exception e){
|
|
|
+// Thread.sleep(1000);
|
|
|
+// logger.error("缓存获取异常",e);
|
|
|
+// return polling(task,taskNode,fileName);
|
|
|
+// }
|
|
|
+//
|
|
|
+// JSONObject returnJson = JSONObject.parseObject(redisData);
|
|
|
+// String conf = taskNode.getExamineMatchConf();
|
|
|
+// JSONObject confJson = JSONObject.parseObject(conf);
|
|
|
+//
|
|
|
+// /*if(!testbreak(returnJson,confJson)){//需要跳出
|
|
|
+// return "0";
|
|
|
+// }*/
|
|
|
+//
|
|
|
+// if(autoNodeService.getNodeTypeResourceLoading(taskNode.getAutoNodeCode())){
|
|
|
+// if(!testSuccessResourceLoading(returnJson,confJson,fileName)){//尚未成功
|
|
|
+// Thread.sleep(1000);
|
|
|
+// return polling(task,taskNode,fileName);
|
|
|
+// }else{
|
|
|
+// return "1";
|
|
|
+// }
|
|
|
+// }else{
|
|
|
+// if(!testSuccess(returnJson,confJson,fileName)){//尚未成功
|
|
|
+// Thread.sleep(1000);
|
|
|
+// return polling(task,taskNode,fileName);
|
|
|
+// }else{
|
|
|
+// return "1";
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+//
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 自检的数据,从缓存验证是否成功
|
|
|
+// * @param returnJson
|
|
|
+// * @param confJson
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// public boolean testbreak(JSONObject returnJson,JSONObject confJson){
|
|
|
+// boolean f = true;
|
|
|
+// String proRunState = returnJson.get("ProRunState")==null?"":returnJson.get("ProRunState").toString();
|
|
|
+// //先写死,后面要考虑怎么配置。
|
|
|
+// if("2".equals(proRunState)||"3".equals(proRunState)){
|
|
|
+// f = false;
|
|
|
+// }
|
|
|
+// /*for(String key:confJson.keySet()){
|
|
|
+// if(returnJson.containsKey(key)){
|
|
|
+// if(returnJson.getString(key)!=null&&returnJson.getString(key).equals(confJson.getString(key))){
|
|
|
+// f = false;
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }*/
|
|
|
+// return f;
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 自检的数据,从缓存验证是否成功
|
|
|
+// * @param returnJson
|
|
|
+// * @param confJson
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// public boolean testSuccess(JSONObject returnJson,JSONObject confJson,String fileName){
|
|
|
+// boolean f = true;
|
|
|
+// String mainProgNo = returnJson.getString("MainProgNo").toUpperCase();
|
|
|
+// String tmpFileName = fileName.replace(".","_").toUpperCase();
|
|
|
+//
|
|
|
+// for(String key:confJson.keySet()){
|
|
|
+// if(!mainProgNo.endsWith(tmpFileName)){
|
|
|
+// logger.info("================================hhh"+mainProgNo);
|
|
|
+// logger.info("*****************************"+tmpFileName);
|
|
|
+// f = false;
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// if(returnJson.containsKey(key)){
|
|
|
+// if(returnJson.getString(key)!=null&&!returnJson.getString(key).equals(confJson.getString(key))){
|
|
|
+// f = false;
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// return f;
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 自检的数据,从缓存验证是否成功
|
|
|
+// * @param returnJson
|
|
|
+// * @param confJson
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// public boolean testSuccessResourceLoading(JSONObject returnJson,JSONObject confJson,String fileName){
|
|
|
+// boolean f = true;
|
|
|
+// for(String key:confJson.keySet()){
|
|
|
+// if(returnJson.containsKey(key)){
|
|
|
+// if(returnJson.getString(key)!=null&&!returnJson.getString(key).toUpperCase().equals(confJson.getString(key)==null?"":confJson.getString(key).toUpperCase())){
|
|
|
+// f = false;
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// return f;
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// public void pushTask(TTask task){
|
|
|
+// Map<String,Object> rmap = Maps.newHashMap();
|
|
|
+// rmap.put("id",task.getResourceId());
|
|
|
+// Map<String,Object> pmap = taskService.getExeTaskByResourceList(rmap);
|
|
|
+// Object o = pmap.get("orderList");
|
|
|
+// Map<String,Object >pushMap = new HashMap<>();
|
|
|
+// pushMap.put("type",WebSocketServer.PUSH_TYPE_RESOURCE_TASK);
|
|
|
+// pushMap.put(String.valueOf(task.getResourceId()),pmap);
|
|
|
+// msgUtil.pushTask(task, pushMap);
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 生成请求参数
|
|
|
+// * @param task
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// public String getRequestParam(TaskNode taskNode , TTask task, List<BomProcedureProgramGroup>bomProcedureProgramGroupList){
|
|
|
+// JSONObject jsonObject = new JSONObject();
|
|
|
+// jsonObject.put("businessType",taskNode.getAutoNodeCode());
|
|
|
+// //机器上下料相关
|
|
|
+// if(autoNodeService.getNodeTypeResourceLoading(taskNode.getAutoNodeCode())){
|
|
|
+// jsonObject.put("url",ZK_ip);
|
|
|
+// jsonObject.put("port",ZK_port);
|
|
|
+// }else{
|
|
|
+// jsonObject.put("url",task.getIp());
|
|
|
+// jsonObject.put("port",task.getPort());
|
|
|
+// }
|
|
|
+//
|
|
|
+// if(bomProcedureProgramGroupList!=null&&bomProcedureProgramGroupList.size()>0){
|
|
|
+// String fileName = bomProcedureProgramGroupList.get(0).getSubmittedFileName();
|
|
|
+// jsonObject.put("data",fileName);
|
|
|
+// }
|
|
|
+// logger.info("节点请求参数"+jsonObject.toJSONString());
|
|
|
+// return jsonObject.toJSONString();
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 生成复位请求参数
|
|
|
+// * @param task
|
|
|
+// * @return
|
|
|
+// */
|
|
|
+// public String getResetRequestParam(TaskNode taskNode , TTask task){
|
|
|
+// JSONObject jsonObject = new JSONObject();
|
|
|
+//
|
|
|
+// jsonObject.put("businessType",taskNode.getAutoNodeCode()+BizConstant.TASK_NODE_RESET_KEYWORD);
|
|
|
+//// if(BizConstant.TASK_NODE_DRYREQUEST.equals(taskNode.getAutoNodeCode())){
|
|
|
+//// jsonObject.put("businessType",BizConstant.TASK_NODE_RESET_DRYREQUEST);
|
|
|
+//// }else if(BizConstant.TASK_NODE_CLEANREQUEST.equals(taskNode.getAutoNodeCode())){
|
|
|
+//// jsonObject.put("businessType",BizConstant.TASK_NODE_RESET_CLEANREQUEST);
|
|
|
+//// }else if(BizConstant.TASK_NODE_MARKREQUEST.equals(taskNode.getAutoNodeCode())){
|
|
|
+//// jsonObject.put("businessType",BizConstant.TASK_NODE_RESET_MARKREQUEST);
|
|
|
+//// }
|
|
|
+//
|
|
|
+// //机器上下料相关
|
|
|
+// if(autoNodeService.getNodeTypeResourceLoading(taskNode.getAutoNodeCode())){
|
|
|
+// jsonObject.put("url",ZK_ip);
|
|
|
+// jsonObject.put("port",ZK_port);
|
|
|
+// }else{
|
|
|
+// jsonObject.put("url",task.getIp());
|
|
|
+// jsonObject.put("port",task.getPort());
|
|
|
+// }
|
|
|
+// logger.info("复位请求参数"+jsonObject.toJSONString());
|
|
|
+// return jsonObject.toJSONString();
|
|
|
+// }
|
|
|
+//}
|
|
|
+//
|