|
|
@@ -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);
|
|
|
+ }
|
|
|
}
|