yaoyq 3 سال پیش
والد
کامیت
8c630d5961
1فایلهای تغییر یافته به همراه401 افزوده شده و 401 حذف شده
  1. 401 401
      imcs-admin-boot/imcs-authority-server/src/main/java/com/github/zuihou/job/TaskJobs1.java

+ 401 - 401
imcs-admin-boot/imcs-authority-server/src/main/java/com/github/zuihou/job/TaskJobs1.java

@@ -1,401 +1,401 @@
-package com.github.zuihou.job;
-
-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.websocket.WebSocketServer;
-import com.github.zuihou.common.constant.CacheKey;
-import com.github.zuihou.common.constant.ParameterKey;
-import com.github.zuihou.context.BaseContextHandler;
-import com.github.zuihou.database.mybatis.conditions.Wraps;
-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.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
-
-import java.text.NumberFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@Component
-public class TaskJobs1 {
-    @Autowired
-    private TaskService taskService;
-    @Autowired
-    private AutoNodeService autoNodeService;
-    @Autowired
-    private OrderMapper orderMapper;
-    @Autowired
-    private PlanMapper planMapper;
-    @Autowired
-    private AutoNodeMapper autoNodeMapper;
-    @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 WebSocketServer webSocketServer;
-    private static Logger logger = LoggerFactory.getLogger(TaskJobs1.class);
-    //@Scheduled(cron="*/9 * * * * ?")  //9秒执行一次
-    public void updateTaskStatusJob1(){
-        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","1");
-        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();
-                    task.setStatus("2");
-                    task.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()));
-                    }
-                    redisTemplate.opsForValue().set(CacheKey.PRESOURCE_CURRENT_TASK+"_"+task.getResourceId(), task.getId());
-                    redisTemplate.opsForValue().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 = temUrl;
-                            TaskNode taskNode = taskNodeList.get(i);
-                            //把当前节点存放缓存
-                            redisTemplate.opsForValue().set(CacheKey.TASK_CURRENT_NODE+"_"+task.getResourceId(), taskNode.getAutoNodeId());
-                            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::getAutoNodeId,taskNode.getAutoNodeId()).eq(AAutoNodeLog::getTaskId,task.getId()));
-                            //插入执行日志
-                            AAutoNodeLog log = new AAutoNodeLog();
-                            if(autoNodeLogList==null||autoNodeLogList.size()==0){
-                                log.setAutoNodeId(taskNode.getAutoNodeId());
-                                log.setOrderId(task.getOrderId());
-                                log.setTaskId(task.getId());
-                                log.setExeStatus("2");
-                                log.setStartTime(new Date());
-                                log.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{
-                                    returnData = restTemplate.getForObject(autoProgrameUrl, String.class);
-                                }
-                            }catch(Exception e){
-                                e.printStackTrace();
-                                logger.error("调用接口发生异常"+e.getMessage());
-                            }
-                            logger.info("===============================接口返回"+returnData);
-                            //if("success".equals(returnData)){
-                            //TODO
-                            if(1==1){
-                                //判断值是否需要循环自检
-                                if(!"0".equals(taskNode.getNodeType())){//人工上下料或质检
-                                    redisTemplate.opsForValue().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;
-                                        }
-                                    }
-                                }
-                                //处理出库入库
-                                R<String> r = taskNodeService.taskNodeStock(taskNode, task);
-                                //插入执行日志
-                                log.setExeStatus("3");
-                                if(r.getIsSuccess()){
-                                    log.setExeResult("1");
-                                    log.setEndTime(new Date());
-                                    autoNodeLogMapper.updateAllById(log);
-                                }else{
-                                    log.setExeResult("0");
-                                    log.setFeedback(r.getMsg());
-                                    log.setEndTime(new Date());
-                                    autoNodeLogMapper.updateAllById(log);
-                                    f = true;
-                                    break;
-                                }
-
-                                //更新节点任务
-                                taskNode.setExeStatus("3");
-                                taskNode.setExeResult("1");
-                                taskNode.setEndTime(new Date());
-                                taskNodeMapper.updateAllById(taskNode);
-
-                                //把当前完成的节点放入缓存,用于推送任务完成的百分比
-                                NumberFormat numberFormat = NumberFormat.getInstance();
-                                numberFormat.setMaximumFractionDigits(2);
-                                redisTemplate.opsForValue().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);
-                                    //推送
-                                    //删除正在执行的缓存
-                                    redisTemplate.delete(CacheKey.PRESOURCE_CURRENT_TASK+"_"+task.getResourceId());
-                                    redisTemplate.delete(CacheKey.PRESOURCE_CURRENT_TASK_OBJECT+"_"+task.getResourceId());
-                                    redisTemplate.delete(CacheKey.TASK_CURRENT_NODE+"_"+task.getResourceId());
-                                    this.pushTask(task);
-                                }else{//主要更新完成比例
-                                    taskMapper.updateById(task);
-                                }
-                            }else{//TODO
-                                //插入执行日志
-                                log.setExeResult("0");
-                                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);
-                            }
-                        }
-                    }else{//没有节点直接改成已完成
-                        task.setStatus("3");
-                        task.setEndTime(new Date());
-                        taskMapper.updateById(task);
-                    }
-                    if(f){
-                        break;
-                    }
-                }catch (Exception e){
-                    e.printStackTrace();
-                    logger.info("===============================接口返回",e);
-                }finally {
-                    //删除正在执行的缓存
-                    redisTemplate.delete(CacheKey.PRESOURCE_CURRENT_TASK+"_"+task.getResourceId());
-                    redisTemplate.delete(CacheKey.PRESOURCE_CURRENT_TASK_OBJECT+"_"+task.getResourceId());
-                    redisTemplate.delete(CacheKey.TASK_CURRENT_NODE+"_"+task.getResourceId());
-
-                }
-            }
-        }
-
-        //设置计划结束
-        planMapper.updateproduceStatusFinish();
-        ////设置订单结束
-        orderMapper.updateproduceStatusFinish();
-
-
-    }
-
-
-    public String checkLoading(TaskNode taskNode)throws Exception{
-        String redisData = "";
-        try {
-            redisData =   redisTemplate.opsForValue().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{
-            redisTemplate.delete(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();
-        String redisData = "";
-        try {
-            redisData =   redisTemplate.opsForValue().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(!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;
-    }
-
-
-    public void pushTask(TTask task){
-        Map<String,Object>rmap = new HashMap<>();
-        rmap.put("id",task.getResourceId());
-        Map<String,Object> pmap = taskService.getExeTaskByResourceList(rmap);
-        try {
-                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);
-                String pushMsg = JSONObject.toJSONString(pushMap);
-                webSocketServer.BroadCastInfo(pushMsg);
-        }catch (Exception e){
-            logger.error("推送异常======"+logger);
-        }
-    }
-}
-
+//package com.github.zuihou.job;
+//
+//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.websocket.WebSocketServer;
+//import com.github.zuihou.common.constant.CacheKey;
+//import com.github.zuihou.common.constant.ParameterKey;
+//import com.github.zuihou.context.BaseContextHandler;
+//import com.github.zuihou.database.mybatis.conditions.Wraps;
+//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.stereotype.Component;
+//import org.springframework.web.client.RestTemplate;
+//
+//import java.text.NumberFormat;
+//import java.util.Date;
+//import java.util.HashMap;
+//import java.util.List;
+//import java.util.Map;
+//
+//@Component
+//public class TaskJobs1 {
+//    @Autowired
+//    private TaskService taskService;
+//    @Autowired
+//    private AutoNodeService autoNodeService;
+//    @Autowired
+//    private OrderMapper orderMapper;
+//    @Autowired
+//    private PlanMapper planMapper;
+//    @Autowired
+//    private AutoNodeMapper autoNodeMapper;
+//    @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 WebSocketServer webSocketServer;
+//    private static Logger logger = LoggerFactory.getLogger(TaskJobs1.class);
+//    //@Scheduled(cron="*/9 * * * * ?")  //9秒执行一次
+//    public void updateTaskStatusJob1(){
+//        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","1");
+//        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();
+//                    task.setStatus("2");
+//                    task.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()));
+//                    }
+//                    redisTemplate.opsForValue().set(CacheKey.PRESOURCE_CURRENT_TASK+"_"+task.getResourceId(), task.getId());
+//                    redisTemplate.opsForValue().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 = temUrl;
+//                            TaskNode taskNode = taskNodeList.get(i);
+//                            //把当前节点存放缓存
+//                            redisTemplate.opsForValue().set(CacheKey.TASK_CURRENT_NODE+"_"+task.getResourceId(), taskNode.getAutoNodeId());
+//                            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::getAutoNodeId,taskNode.getAutoNodeId()).eq(AAutoNodeLog::getTaskId,task.getId()));
+//                            //插入执行日志
+//                            AAutoNodeLog log = new AAutoNodeLog();
+//                            if(autoNodeLogList==null||autoNodeLogList.size()==0){
+//                                log.setAutoNodeId(taskNode.getAutoNodeId());
+//                                log.setOrderId(task.getOrderId());
+//                                log.setTaskId(task.getId());
+//                                log.setExeStatus("2");
+//                                log.setStartTime(new Date());
+//                                log.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{
+//                                    returnData = restTemplate.getForObject(autoProgrameUrl, String.class);
+//                                }
+//                            }catch(Exception e){
+//                                e.printStackTrace();
+//                                logger.error("调用接口发生异常"+e.getMessage());
+//                            }
+//                            logger.info("===============================接口返回"+returnData);
+//                            //if("success".equals(returnData)){
+//                            //TODO
+//                            if(1==1){
+//                                //判断值是否需要循环自检
+//                                if(!"0".equals(taskNode.getNodeType())){//人工上下料或质检
+//                                    redisTemplate.opsForValue().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;
+//                                        }
+//                                    }
+//                                }
+//                                //处理出库入库
+//                                R<String> r = taskNodeService.taskNodeStock(taskNode, task);
+//                                //插入执行日志
+//                                log.setExeStatus("3");
+//                                if(r.getIsSuccess()){
+//                                    log.setExeResult("1");
+//                                    log.setEndTime(new Date());
+//                                    autoNodeLogMapper.updateAllById(log);
+//                                }else{
+//                                    log.setExeResult("0");
+//                                    log.setFeedback(r.getMsg());
+//                                    log.setEndTime(new Date());
+//                                    autoNodeLogMapper.updateAllById(log);
+//                                    f = true;
+//                                    break;
+//                                }
+//
+//                                //更新节点任务
+//                                taskNode.setExeStatus("3");
+//                                taskNode.setExeResult("1");
+//                                taskNode.setEndTime(new Date());
+//                                taskNodeMapper.updateAllById(taskNode);
+//
+//                                //把当前完成的节点放入缓存,用于推送任务完成的百分比
+//                                NumberFormat numberFormat = NumberFormat.getInstance();
+//                                numberFormat.setMaximumFractionDigits(2);
+//                                redisTemplate.opsForValue().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);
+//                                    //推送
+//                                    //删除正在执行的缓存
+//                                    redisTemplate.delete(CacheKey.PRESOURCE_CURRENT_TASK+"_"+task.getResourceId());
+//                                    redisTemplate.delete(CacheKey.PRESOURCE_CURRENT_TASK_OBJECT+"_"+task.getResourceId());
+//                                    redisTemplate.delete(CacheKey.TASK_CURRENT_NODE+"_"+task.getResourceId());
+//                                    this.pushTask(task);
+//                                }else{//主要更新完成比例
+//                                    taskMapper.updateById(task);
+//                                }
+//                            }else{//TODO
+//                                //插入执行日志
+//                                log.setExeResult("0");
+//                                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);
+//                            }
+//                        }
+//                    }else{//没有节点直接改成已完成
+//                        task.setStatus("3");
+//                        task.setEndTime(new Date());
+//                        taskMapper.updateById(task);
+//                    }
+//                    if(f){
+//                        break;
+//                    }
+//                }catch (Exception e){
+//                    e.printStackTrace();
+//                    logger.info("===============================接口返回",e);
+//                }finally {
+//                    //删除正在执行的缓存
+//                    redisTemplate.delete(CacheKey.PRESOURCE_CURRENT_TASK+"_"+task.getResourceId());
+//                    redisTemplate.delete(CacheKey.PRESOURCE_CURRENT_TASK_OBJECT+"_"+task.getResourceId());
+//                    redisTemplate.delete(CacheKey.TASK_CURRENT_NODE+"_"+task.getResourceId());
+//
+//                }
+//            }
+//        }
+//
+//        //设置计划结束
+//        planMapper.updateproduceStatusFinish();
+//        ////设置订单结束
+//        orderMapper.updateproduceStatusFinish();
+//
+//
+//    }
+//
+//
+//    public String checkLoading(TaskNode taskNode)throws Exception{
+//        String redisData = "";
+//        try {
+//            redisData =   redisTemplate.opsForValue().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{
+//            redisTemplate.delete(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();
+//        String redisData = "";
+//        try {
+//            redisData =   redisTemplate.opsForValue().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(!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;
+//    }
+//
+//
+//    public void pushTask(TTask task){
+//        Map<String,Object>rmap = new HashMap<>();
+//        rmap.put("id",task.getResourceId());
+//        Map<String,Object> pmap = taskService.getExeTaskByResourceList(rmap);
+//        try {
+//                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);
+//                String pushMsg = JSONObject.toJSONString(pushMap);
+//                webSocketServer.BroadCastInfo(pushMsg);
+//        }catch (Exception e){
+//            logger.error("推送异常======"+logger);
+//        }
+//    }
+//}
+//