Просмотр исходного кода

能科接口功能处理和运行延迟处理

oyq28 2 дней назад
Родитель
Сommit
32fb05e5ab

+ 7 - 7
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/mq/TaskWorkNode.java

@@ -562,11 +562,11 @@ public class TaskWorkNode {
                                        String jsonParam = getRequestParam(conMap);
                                        specialCallBackMyselfFlag = true;
                                     }else{
-//                                           try {
-//                                               Thread.sleep(1000);
-//                                           } catch (InterruptedException e) {
-//                                               e.printStackTrace();
-//                                           }
+                                           try {
+                                               Thread.sleep(1000);
+                                           } catch (InterruptedException e) {
+                                               e.printStackTrace();
+                                           }
 
                                            //组装接口参数
                                         HttpHeaders headers = new HttpHeaders();
@@ -624,7 +624,7 @@ public class TaskWorkNode {
                 String isUpload = retJson.containsKey("isUpload")? retJson.getString("isUpload").trim() : "false";
                 if (code.equals("true")) {
                     //回调处理
-                    log.setExeStatus("2").setEndTime(new Date()).setSendStatus("1").setExeResult("").setFeedback("");
+                    log.setExeStatus("2").setEndTime(new Date()).setSendStatus("1").setExeResult("").setFeedback(retJson.containsKey("imcsTOccsEnable")? "imcsTOccsEnable" : "");
 //                    msgUtil.redis_del(CacheKey.TASK_CURRENT_NODE_CONDITION + "_" + taskNode.getId());
 //                    msgUtil.redis_del(CacheKey.TASK_CURRENT_NODE_PARAMS + "_" + taskNode.getId());
                 } else if (code.equals("false")) {
@@ -678,7 +678,7 @@ public class TaskWorkNode {
             if (log.getId() == null) {
                 autoNodeLogService.save(log);
             } else {
-                if(StringUtil.isNotEmpty(feedBack) && StringUtil.isNotEmpty(log.getFeedback()) && !log.getFeedback().equals(feedBack)) {
+                if(StringUtil.isNotEmpty(feedBack) && (feedBack.contains("imcsTOccsEnable") || !log.getFeedback().equals(feedBack))) {
                     log.setExecuteTime(new Date());
                     autoNodeLogService.updateAllById(log);
                 }

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

@@ -10,6 +10,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.beust.jcommander.internal.Maps;
 import com.github.zuihou.authority.entity.auth.User;
 import com.github.zuihou.authority.service.auth.UserService;
 import com.github.zuihou.authority.service.common.ParameterService;
@@ -39,6 +41,7 @@ import com.github.zuihou.business.productionResourceCenter.entity.Productionreso
 import com.github.zuihou.business.productionResourceCenter.entity.ZZone;
 import com.github.zuihou.business.productionResourceCenter.service.ProductionresourceBizService;
 import com.github.zuihou.business.productionResourceCenter.service.ZZoneService;
+import com.github.zuihou.business.statisticalAnalysis.ProductLinePerformanceService;
 import com.github.zuihou.business.util.MsgUtil;
 import com.github.zuihou.common.constant.CodeRuleModule;
 import com.github.zuihou.common.constant.ParameterKey;
@@ -51,11 +54,13 @@ import com.github.zuihou.log.annotation.SysLog;
 import com.github.zuihou.security.annotation.LoginUser;
 import com.github.zuihou.security.model.SysUser;
 import com.github.zuihou.tenant.service.CodeRuleService;
+import com.github.zuihou.tenant.vo.DeviceResourceSumVo;
 import com.google.common.collect.Lists;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.time.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.validation.annotation.Validated;
@@ -138,6 +143,9 @@ public class ProductionTasksController {
     @Autowired
     private DeviceRateLogService deviceRateLogService;
 
+    @Autowired
+    private ProductLinePerformanceService productLinePerformanceService;
+
 
     //MES->产线
     @ApiOperation(value = "任务下发通知接口", notes = "任务下发通知接口")
@@ -689,4 +697,44 @@ public class ProductionTasksController {
 
         return R2.success(returnData);
     }
+
+    @Scheduled(cron="0 0 0 * * ?")
+    public void collectDeviceRate(){
+         BaseContextHandler.setTenant("0000");
+         List<Productionresource> deviceList = productionresourceBizService.list(new LbqWrapper<Productionresource>().isNotNull(Productionresource::getModeSpecification));
+         Date yesterday = DateUtils.addDays(new Date(), -1);
+         String strDay = DateUtil.dateToString0(yesterday, "yyyy-MM-dd");
+         List<DeviceRateLog> dataList = Lists.newArrayList();
+         int count = deviceRateLogService.count(new LbqWrapper<DeviceRateLog>().eq(DeviceRateLog::getDate, strDay));
+         if(count > 0) return;
+
+         deviceList.stream().forEach(item -> {
+             DeviceRateLog deviceRateLog = DeviceRateLog.builder().code(item.getCode()).date(strDay).resourceId(item.getId()).build();
+             if(!item.getOnlineStatus().equals("1") || !item.getStatus().equals("1")){
+                 deviceRateLog.setDeviceRate("0");
+             }else{
+                 String rateVal = this.calDeviceRate(item.getId().toString(), strDay);
+                 deviceRateLog.setDeviceRate(rateVal);
+             }
+             dataList.add(deviceRateLog);
+         });
+         deviceRateLogService.saveBatch(dataList);
+    }
+
+     private String calDeviceRate(String deviceId, String date){
+        Map<String, Object> params = Maps.newHashMap();
+        //IPage
+         params.put("resourceId", deviceId);
+         params.put("startDate", date);
+         params.put("endDate",  DateUtil.dateToString0(new Date(), "yyyy-MM-dd"));
+         IPage<DeviceResourceSumVo> page = productLinePerformanceService.deviceResourceSum(new Page(1L, 10L), params);
+         DeviceResourceSumVo deviceResourceSumVo = page.getRecords().size()>0? page.getRecords().get(0) : null;
+         if(deviceResourceSumVo == null) return "0";
+
+         float avgActualTime = Integer.parseInt(deviceResourceSumVo.getAvgRealTime())/ 1230;
+         float performanceRate = 100 * Float.parseFloat(deviceResourceSumVo.getTotalExpectTime())/ Integer.parseInt(deviceResourceSumVo.getTotalRealTime());
+
+         int rateVal = Math.round(avgActualTime * performanceRate);
+        return String.valueOf(rateVal);
+     }
 }