opt:优化首页接口查询方式;
add:增加搬运管理接口
This commit is contained in:
@@ -18,8 +18,8 @@ public enum AcsDefineEnum {
|
||||
//agv状态 1-关机2-运行中3-交通管制4-任务等待5-充电中6-故障中7-低电量
|
||||
AGV_STATUS(MapOf.of("关机", "1", "运行中", "2", "交通管制", "3", "任务等待", "4", "充电中", "5", "故障中", "6", "低电量", "7")),
|
||||
|
||||
//RGV状态 1-空闲 2-任务未派发 3-执行任务中 4-任务完成
|
||||
RGV_STATUS(MapOf.of("1","IDLE","2","SENT","3","WORK","4","COMPLETE")),
|
||||
//RGV状态 1-空闲 2-任务执行中 3-充电 4-故障 5-未知 6-不可利用
|
||||
RGV_STATUS(MapOf.of("1","IDLE","2","EXECUTING","3","CHARGING","4","ERROR","5","UNKNOWN","6","UNAVAILABLE")),
|
||||
|
||||
//载具类型
|
||||
VEHICLE_TYPE(MapOf.of("普涂", "1", "连涂", "2")),
|
||||
|
||||
@@ -38,8 +38,8 @@ public class CockpitController {
|
||||
}
|
||||
|
||||
@PostMapping("/allDeviceStatus")
|
||||
@Log("秒刷接口")
|
||||
@ApiOperation("秒刷接口")
|
||||
@Log("秒级接口")
|
||||
@ApiOperation("秒级接口")
|
||||
public ResponseEntity<Object> allDeviceStatus() {
|
||||
return new ResponseEntity<>(cockpitService.allDeviceStatus(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,9 @@ package org.nl.wms.cockpit.service;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description:
|
||||
@@ -17,7 +20,7 @@ public interface CockpitService {
|
||||
JSONArray acceptDeviceFaultInfo();
|
||||
|
||||
|
||||
JSONObject getHomeInfo();
|
||||
HashMap<String, Object> getHomeInfo();
|
||||
|
||||
JSONObject getHandlingInfo();
|
||||
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
package org.nl.wms.cockpit.service.dao;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.FieldNameConstants;
|
||||
import org.nl.common.base.ErrorData;
|
||||
import org.nl.wms.cockpit.service.dao.home.DayData;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 公共类
|
||||
*
|
||||
* @author gbx
|
||||
* @since 2024-01-04
|
||||
*/
|
||||
@Data
|
||||
@FieldNameConstants
|
||||
public class CommonData {
|
||||
|
||||
private WeekWorkorderStatistics week_workorder_statistics;
|
||||
|
||||
|
||||
@Data
|
||||
public static class WeekWorkorderStatistics extends ErrorData {
|
||||
private List<DayData> day1 =new ArrayList<>();
|
||||
private List<DayData> day2=new ArrayList<>();
|
||||
private List<DayData> day3=new ArrayList<>();
|
||||
private List<DayData> day4=new ArrayList<>();
|
||||
private List<DayData> day5=new ArrayList<>();
|
||||
private List<DayData> day6=new ArrayList<>();
|
||||
private List<DayData> day7=new ArrayList<>();
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
package org.nl.wms.cockpit.service.dao.ghs;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 设备故障率
|
||||
*
|
||||
* @author gbx
|
||||
* @since 2024-01-12
|
||||
*/
|
||||
@Data
|
||||
public class DeviceFaultStatistics {
|
||||
private final long totalFaults;
|
||||
private final double faultRate;
|
||||
|
||||
public DeviceFaultStatistics(long totalFaults, double faultRate) {
|
||||
this.totalFaults = totalFaults;
|
||||
this.faultRate = faultRate;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
package org.nl.wms.cockpit.service.dao.ghs;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nl.wms.cockpit.service.dao.CommonData;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 固化室大屏页面
|
||||
*
|
||||
* @author gbx
|
||||
* @since 2024-01-04
|
||||
*/
|
||||
@Data
|
||||
public class GhsInfo implements Serializable {
|
||||
private CuringSummary curing_summary;
|
||||
private CommonData.WeekWorkorderStatistics week_workorder_statistics;
|
||||
private TaskInfo task_info;
|
||||
private DeviceStatus device_status;
|
||||
private FaultAlarm fault_alarm;
|
||||
private MonthlyFaultStatistics monthly_fault_statistics;
|
||||
|
||||
@Data
|
||||
public static class CuringSummary {
|
||||
private String item_name;
|
||||
private String item_qty;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Data
|
||||
public static class TaskInfo {
|
||||
private String task_type;
|
||||
private String device_name;
|
||||
private String point_code1;
|
||||
private String point_code2;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class DeviceStatus {
|
||||
private String item_name;
|
||||
private String item_qty;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class FaultAlarm {
|
||||
private String device_name;
|
||||
private String fault_cause;
|
||||
private String alarm_time;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class MonthlyFaultStatistics {
|
||||
private String device_name;
|
||||
private String alarm_qty;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,90 +0,0 @@
|
||||
package org.nl.wms.cockpit.service.dao.home;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.FieldNameConstants;
|
||||
import org.nl.common.base.ErrorData;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 首页总览大屏页面
|
||||
*
|
||||
* @author gbx
|
||||
* @since 2024-01-04
|
||||
*/
|
||||
@Data
|
||||
@FieldNameConstants
|
||||
public class HomeInfo {
|
||||
private TargetAchievement target_achievement;
|
||||
private ZCStorageInfo zc_storage_info;
|
||||
private TodayWork today_work;
|
||||
private WorkorderStatistics workorder_statistics;
|
||||
private DeviceStatus device_status;
|
||||
private FaultAlarm fault_alarm;
|
||||
private MonthlyFaultStatistics monthly_fault_statistics;
|
||||
|
||||
|
||||
|
||||
@Data
|
||||
public static class ZCStorageInfo extends ErrorData {
|
||||
private List<DayData> material_info;
|
||||
private String empty_stock;
|
||||
private String freePoint;
|
||||
private String pointCount;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class TodayWork extends ErrorData {
|
||||
private String workorder_code;
|
||||
private String material_name;
|
||||
private String plan_qty;
|
||||
private String real_qty;
|
||||
private String point_name;
|
||||
private String workorder_status;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class WorkorderStatistics {
|
||||
private Day1 day1;
|
||||
|
||||
@Data
|
||||
public static class Day1 {
|
||||
private String tb_real_qty;
|
||||
private String gh_real_qty;
|
||||
}
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class DeviceStatus {
|
||||
private StatusInfo status_info;
|
||||
private StorageInfo storage_info;
|
||||
|
||||
@Data
|
||||
public static class StatusInfo {
|
||||
private String item_name;
|
||||
private String item_qty;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class StorageInfo {
|
||||
private String item_name;
|
||||
private String tem_qty;
|
||||
}
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class FaultAlarm {
|
||||
private String device_name;
|
||||
private String fault_cause;
|
||||
private String alarm_time;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class MonthlyFaultStatistics {
|
||||
private String device_name;
|
||||
private String alarm_qty;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,79 +0,0 @@
|
||||
package org.nl.wms.cockpit.service.dao.tbx;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.FieldNameConstants;
|
||||
|
||||
/**
|
||||
* 涂板线大屏页面
|
||||
*
|
||||
* @author gbx
|
||||
* @since 2024-01-04
|
||||
*/
|
||||
@Data
|
||||
@FieldNameConstants
|
||||
public class TbxInfo {
|
||||
private TargetAchievement target_achievement;
|
||||
private WeekWorkorderStatistics week_workorder_statistics;
|
||||
private DeviceStatus device_status;
|
||||
private FaultAlarm fault_alarm;
|
||||
private MonthlyFaultStatistics monthly_fault_statistics;
|
||||
|
||||
@Data
|
||||
public static class TargetAchievement {
|
||||
private LTProduction lt_production;
|
||||
private PTProduction pt_production;
|
||||
|
||||
@Data
|
||||
public static class LTProduction {
|
||||
private String plan_production;
|
||||
private String actual_production;
|
||||
private String percentage;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class PTProduction {
|
||||
private String plan_production;
|
||||
private String actual_production;
|
||||
private String percentage;
|
||||
}
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class WeekWorkorderStatistics {
|
||||
private Day1 day1;
|
||||
|
||||
@Data
|
||||
public static class Day1 {
|
||||
private String item_name;
|
||||
private String item_qty;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Data
|
||||
public static class DeviceStatus {
|
||||
private DeviceName device_name;
|
||||
|
||||
@Data
|
||||
public static class DeviceName {
|
||||
private String item_name;
|
||||
private String item_qty;
|
||||
}
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class FaultAlarm {
|
||||
private String device_name;
|
||||
private String fault_cause;
|
||||
private String alarm_time;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class MonthlyFaultStatistics {
|
||||
private String device_name;
|
||||
private String alarm_qty;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
package org.nl.wms.cockpit.service.dao.zcq;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 暂存区库存结构
|
||||
*
|
||||
* @author gbx
|
||||
* @since 2024-01-10
|
||||
*/
|
||||
@Data
|
||||
public class Inventory {
|
||||
private String point_name;
|
||||
private String material_name;
|
||||
private String quantity;
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
package org.nl.wms.cockpit.service.dao.zcq;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 暂存区大屏页面
|
||||
*
|
||||
* @author gbx
|
||||
* @since 2024-01-04
|
||||
*/
|
||||
public class ZcqInfo {
|
||||
private TemporaryStorage temporary_storage;
|
||||
private Inventory inventory;
|
||||
private TaskInfo task_info;
|
||||
private DeviceStatus device_status;
|
||||
private FaultAlarm fault_alarm;
|
||||
private MonthlyFaultStatistics monthly_fault_statistics;
|
||||
|
||||
@Data
|
||||
public static class TemporaryStorage {
|
||||
private String total;
|
||||
private String free;
|
||||
private String percentage;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class Inventory {
|
||||
private String material_name;
|
||||
private String quantity;
|
||||
}
|
||||
|
||||
|
||||
@Data
|
||||
public static class DeviceStatus {
|
||||
private DeviceName device_name;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class DeviceName {
|
||||
private String item_name;
|
||||
private String item_qty;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class FaultAlarm {
|
||||
private String device_name;
|
||||
private String fault_cause;
|
||||
private String alarm_time;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class MonthlyFaultStatistics {
|
||||
private String device_name;
|
||||
private String alarm_qty;
|
||||
}
|
||||
}
|
||||
@@ -3,43 +3,30 @@ package org.nl.wms.cockpit.service.impl;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.enums.AcsDefineEnum;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.ColaBeanUtils;
|
||||
import org.nl.common.utils.RedisUtils;
|
||||
import org.nl.wms.cockpit.service.CockpitService;
|
||||
import org.nl.wms.cockpit.service.dao.CommonData;
|
||||
import org.nl.wms.cockpit.service.dao.home.DayData;
|
||||
import org.nl.wms.cockpit.service.dao.home.HomeInfo;
|
||||
import org.nl.wms.cockpit.service.dao.home.TargetAchievement;
|
||||
import org.nl.wms.cockpit.service.dao.zcq.TaskInfo;
|
||||
import org.nl.wms.cockpit.service.mapper.CockpitMapper;
|
||||
import org.nl.wms.pdm.solidifyplan.service.impl.PdmBdSolidifyPlanServiceImpl;
|
||||
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task_manage.enums.RegionCodeConstant;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -58,17 +45,9 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private IPdmBdWorkorderService workorderService;
|
||||
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private CockpitMapper cockpitMapper;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("threadPoolExecutor")
|
||||
@@ -86,77 +65,163 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
* 总览
|
||||
*/
|
||||
@Override
|
||||
public JSONObject getHomeInfo() {
|
||||
JSONObject getHomeInfo = new JSONObject();
|
||||
//生产任务目标达成
|
||||
JSONObject target_achievement = cockpitMapper.getProductTarget();
|
||||
List<Map<String, Object>> productionSummaryList = new ArrayList<>();
|
||||
for (String itemName : Arrays.asList("1", "2", "3")) {
|
||||
Map<String, Object> item = new HashMap<>();
|
||||
item.put("item_name", itemName);
|
||||
item.put("item_qty", "0");
|
||||
productionSummaryList.add(item);
|
||||
}
|
||||
JSONObject production_summary = cockpitMapper.getProductionsummary();
|
||||
if (ObjectUtil.isNotEmpty(production_summary)) {
|
||||
productionSummaryList.forEach(item -> {
|
||||
String key = item.get("item_name").toString().toLowerCase();
|
||||
if (ObjectUtil.isNotEmpty(production_summary.get(key))) {
|
||||
item.put("item_qty", production_summary.get(key).toString());
|
||||
}
|
||||
});
|
||||
}
|
||||
//暂存库库存结构
|
||||
JSONObject zc_storage_info = new JSONObject();
|
||||
List<Map<String, Object>> material_info = cockpitMapper.getZcMaterialmsg();
|
||||
zc_storage_info.put("material_info", material_info);
|
||||
//库位使用占比
|
||||
String percent = cockpitMapper.percent();
|
||||
zc_storage_info.put("percent", percent);
|
||||
//今日生产任务
|
||||
List<Map<String, Object>> today_work = cockpitMapper.getTdWorkmsg();
|
||||
if (ObjectUtil.isEmpty(today_work)) {
|
||||
Map<String, Object> item1 = new HashMap<>();
|
||||
item1.put("workorder_code", "240918001");
|
||||
item1.put("material_name", "TS_12Z中负");
|
||||
item1.put("plan_qty", "100");
|
||||
item1.put("real_qty", "0");
|
||||
item1.put("point_name", "普涂线01");
|
||||
item1.put("workorder_status", "生产中");
|
||||
today_work.add(item1);
|
||||
}
|
||||
List<Map<String, Object>> tb_real_qty = cockpitMapper.getTxQty("7", "TBX");
|
||||
List<Map<String, Object>> gh_real_qty = cockpitMapper.getGhsQty("7");
|
||||
List<Map<String, Object>> tb_real_qty_default = new ArrayList<>();
|
||||
List<Map<String, Object>> gh_real_qty_default = new ArrayList<>();
|
||||
getWeekWorkStatistics(tb_real_qty, tb_real_qty_default, "TBX", 7);
|
||||
getWeekWorkStatistics(gh_real_qty, gh_real_qty_default, "GHS", 7);
|
||||
public HashMap<String, Object> getHomeInfo() {
|
||||
HashMap<String, Object> getHomeInfo = new HashMap<>();
|
||||
//设备运行状态
|
||||
JSONObject device_status = new JSONObject();
|
||||
//库存结构
|
||||
JSONObject zc_storage_info = new JSONObject();
|
||||
//状态信息
|
||||
List<Map<String, Object>> status_info = cockpitMapper.statusInfo();
|
||||
CompletableFuture<List<Map<String, Object>>> task1 = CompletableFuture.supplyAsync(() -> cockpitMapper.statusInfo(), pool);
|
||||
task1.thenAccept((result) -> {
|
||||
device_status.put("status_info", result);
|
||||
}).exceptionally((e) -> {
|
||||
log.error("状态信息: {}", e.getMessage(), e);
|
||||
return null;
|
||||
});
|
||||
//固化架信息
|
||||
List<Map<String, Object>> storage_info = cockpitMapper.storageInfo();
|
||||
device_status.put("status_info", status_info);
|
||||
device_status.put("storage_info", storage_info);
|
||||
CompletableFuture<List<Map<String, Object>>> task2 = CompletableFuture.supplyAsync(() -> cockpitMapper.storageInfo(), pool);
|
||||
task2.thenAccept((result) -> {
|
||||
device_status.put("storage_info", result);
|
||||
}).exceptionally((e) -> {
|
||||
log.error("固化架信息: {}", e.getMessage(), e);
|
||||
return null;
|
||||
});
|
||||
//暂存库库存结构
|
||||
CompletableFuture<List<Map<String, Object>>> task3 = CompletableFuture.supplyAsync(() -> cockpitMapper.getZcMaterialmsg(), pool);
|
||||
task3.thenAccept((result) -> {
|
||||
zc_storage_info.put("material_info", result);
|
||||
}).exceptionally((e) -> {
|
||||
log.error("暂存库库存结构: {}", e.getMessage(), e);
|
||||
zc_storage_info.put("material_info", "");
|
||||
return null;
|
||||
});
|
||||
//库位使用占比
|
||||
CompletableFuture<String> task4 = CompletableFuture.supplyAsync(() -> cockpitMapper.percent(), pool);
|
||||
task4.thenAccept((result) -> {
|
||||
zc_storage_info.put("percent", result);
|
||||
}).exceptionally((e) -> {
|
||||
log.error("库位使用占比: {}", e.getMessage(), e);
|
||||
zc_storage_info.put("percent", "");
|
||||
return null;
|
||||
});
|
||||
//生产任务目标达成
|
||||
CompletableFuture<JSONObject> task5 = CompletableFuture.supplyAsync(() -> cockpitMapper.getProductTarget(), pool);
|
||||
task5.thenAccept((result) -> {
|
||||
getHomeInfo.put("target_achievement", result);
|
||||
}).exceptionally((e) -> {
|
||||
log.error("获取生产任务目标达成: {}", e.getMessage(), e);
|
||||
getHomeInfo.put("target_achievement", null);
|
||||
return null;
|
||||
});
|
||||
//生产汇总
|
||||
CompletableFuture<JSONObject> task6 = CompletableFuture.supplyAsync(() -> cockpitMapper.getProductionsummary(), pool);
|
||||
task6.thenAccept((result) -> {
|
||||
List<Map<String, Object>> productionSummaryList = new ArrayList<>();
|
||||
for (String itemName : Arrays.asList("1", "2", "3")) {
|
||||
Map<String, Object> item = new HashMap<>();
|
||||
item.put("item_name", itemName);
|
||||
item.put("item_qty", "0");
|
||||
productionSummaryList.add(item);
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(result)) {
|
||||
productionSummaryList.forEach(item -> {
|
||||
String key = item.get("item_name").toString().toLowerCase();
|
||||
if (ObjectUtil.isNotEmpty(result.get(key))) {
|
||||
item.put("item_qty", result.get(key).toString());
|
||||
}
|
||||
});
|
||||
}
|
||||
getHomeInfo.put("production_summary", productionSummaryList);
|
||||
}).exceptionally((e) -> {
|
||||
log.error("生产汇总: {}", e.getMessage(), e);
|
||||
getHomeInfo.put("production_summary", null);
|
||||
return null;
|
||||
});
|
||||
|
||||
//今日生产任务
|
||||
CompletableFuture<List<Map<String, Object>>> task7 = CompletableFuture.supplyAsync(() -> cockpitMapper.getTdWorkmsg(), pool);
|
||||
task7.thenAccept((result) -> {
|
||||
List<Map<String, Object>> today_work = new ArrayList<>();
|
||||
if (ObjectUtil.isEmpty(result)) {
|
||||
//测试数据,上线后删除
|
||||
Map<String, Object> item1 = new HashMap<>();
|
||||
item1.put("workorder_code", "240918001");
|
||||
item1.put("material_name", "TS_12Z中负");
|
||||
item1.put("plan_qty", "100");
|
||||
item1.put("real_qty", "0");
|
||||
item1.put("point_name", "普涂线01");
|
||||
item1.put("workorder_status", "生产中");
|
||||
today_work.add(item1);
|
||||
}
|
||||
getHomeInfo.put("today_work", today_work);
|
||||
}).exceptionally((e) -> {
|
||||
log.error("今日生产任务: {}", e.getMessage(), e);
|
||||
getHomeInfo.put("today_work", null);
|
||||
return null;
|
||||
});
|
||||
//固化一周生产
|
||||
CompletableFuture<List<Map<String, Object>>> task8 = CompletableFuture.supplyAsync(() -> cockpitMapper.getGhsQty("7"), pool);
|
||||
task8.thenAccept((result) -> {
|
||||
List<Map<String, Object>> gh_real_qty_default = new ArrayList<>();
|
||||
getWeekWorkStatistics(result, gh_real_qty_default, "GHS", 7);
|
||||
getHomeInfo.put("ghs_produce", gh_real_qty_default);
|
||||
}).exceptionally((e) -> {
|
||||
log.error("固化一周生产: {}", e.getMessage(), e);
|
||||
getHomeInfo.put("ghs_produce", null);
|
||||
return null;
|
||||
});
|
||||
//涂板一周生产
|
||||
CompletableFuture<List<Map<String, Object>>> task9 = CompletableFuture.supplyAsync(() -> cockpitMapper.getTxQty("7", "TBX"), pool);
|
||||
task9.thenAccept((result) -> {
|
||||
List<Map<String, Object>> tb_real_qty_default = new ArrayList<>();
|
||||
getWeekWorkStatistics(result, tb_real_qty_default, "TBX", 7);
|
||||
getHomeInfo.put("tbx_produce", tb_real_qty_default);
|
||||
}).exceptionally((e) -> {
|
||||
log.error("涂板一周生产: {}", e.getMessage(), e);
|
||||
getHomeInfo.put("tbx_produce", null);
|
||||
return null;
|
||||
});
|
||||
|
||||
//实时故障告警
|
||||
List<Map<String, Object>> fault_alarm = cockpitMapper.faultAlarm();
|
||||
faultAlarmDefault(fault_alarm, "TS_GHS02");
|
||||
CompletableFuture<List<Map<String, Object>>> task10 = CompletableFuture.supplyAsync(() -> cockpitMapper.faultAlarm(), pool);
|
||||
task10.thenAccept((result) -> {
|
||||
//测试数据,上线后删除
|
||||
faultAlarmDefault(result, "TS_GHS02");
|
||||
getHomeInfo.put("fault_alarm", result);
|
||||
}).exceptionally((e) -> {
|
||||
log.error("实时故障告警: {}", e.getMessage(), e);
|
||||
getHomeInfo.put("fault_alarm", null);
|
||||
return null;
|
||||
});
|
||||
//近30日故障统计
|
||||
JSONArray monthly_fault_statistics = cockpitMapper.monthlyFaultStatistics();
|
||||
monthlyFaultStatisticsDefault(monthly_fault_statistics, "TS_GHS02");
|
||||
CompletableFuture<JSONArray> task11 = CompletableFuture.supplyAsync(() -> cockpitMapper.monthlyFaultStatistics(), pool);
|
||||
task11.thenAccept((result) -> {
|
||||
//测试数据,上线后删除
|
||||
monthlyFaultStatisticsDefault(result, "TS_GHS02");
|
||||
getHomeInfo.put("monthly_fault_statistics", result);
|
||||
}).exceptionally((e) -> {
|
||||
log.error("近30日故障统计: {}", e.getMessage(), e);
|
||||
getHomeInfo.put("monthly_fault_statistics", null);
|
||||
return null;
|
||||
});
|
||||
//设备报警前十
|
||||
List<Map<String, Object>> gh_statistics = cockpitMapper.ghStatistics();
|
||||
getHomeInfo.put("target_achievement", target_achievement);
|
||||
getHomeInfo.put("zc_storage_info", zc_storage_info);
|
||||
getHomeInfo.put("today_work", today_work);
|
||||
getHomeInfo.put("tbx_produce", tb_real_qty_default);
|
||||
getHomeInfo.put("ghs_produce", gh_real_qty_default);
|
||||
CompletableFuture<List<Map<String, Object>>> task12 = CompletableFuture.supplyAsync(() -> cockpitMapper.ghStatistics(), pool);
|
||||
task12.thenAccept((result) -> {
|
||||
getHomeInfo.put("gh_statistics", result);
|
||||
}).exceptionally((e) -> {
|
||||
log.error("设备报警前十: {}", e.getMessage(), e);
|
||||
getHomeInfo.put("gh_statistics", null);
|
||||
return null;
|
||||
});
|
||||
CompletableFuture<Void> allQuery = CompletableFuture.allOf(task1, task2, task3, task4, task5, task6, task7, task8, task9, task10, task11, task12);
|
||||
CompletableFuture<HashMap<String, Object>> future = allQuery.thenApply((result) -> getHomeInfo).exceptionally((e) -> {
|
||||
log.error(e.getMessage(), e);
|
||||
return null;
|
||||
});
|
||||
future.join();
|
||||
getHomeInfo.put("device_status", device_status);
|
||||
getHomeInfo.put("fault_alarm", fault_alarm);
|
||||
getHomeInfo.put("monthly_fault_statistics", monthly_fault_statistics);
|
||||
getHomeInfo.put("gh_statistics", gh_statistics);
|
||||
getHomeInfo.put("production_summary", productionSummaryList);
|
||||
getHomeInfo.put("zc_storage_info", zc_storage_info);
|
||||
return getHomeInfo;
|
||||
}
|
||||
|
||||
@@ -231,9 +296,11 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
}
|
||||
//实时故障告警
|
||||
List<Map<String, Object>> fault_alarm = cockpitMapper.FaultTime("TBX");
|
||||
//测试数据,上线后删除
|
||||
faultAlarmDefault(fault_alarm, "TS_LTX02");
|
||||
//近30日故障统计
|
||||
JSONArray monthly_fault_statistics = cockpitMapper.FaultTotal("TBX");
|
||||
//测试数据,上线后删除
|
||||
monthlyFaultStatisticsDefault(monthly_fault_statistics, "TS_LTX02");
|
||||
List<Map<String, Object>> monthly_produce_statistics = cockpitMapper.getTbxMonthlyStatistics();
|
||||
List<Map<String, Object>> tbxMonthlyStatistics = new ArrayList<>();
|
||||
@@ -328,6 +395,7 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
}
|
||||
});
|
||||
} else {
|
||||
//测试数据,上线后删除
|
||||
Map<String, Object> item1 = new HashMap<>();
|
||||
item1.put("material_name", "TS_1.9A正");
|
||||
item1.put("material_spec", "正涂片极板/1.9A/大片");
|
||||
@@ -343,9 +411,11 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
}
|
||||
//实时故障告警
|
||||
List<Map<String, Object>> fault_alarm = cockpitMapper.FaultTime("GH");
|
||||
//测试数据,上线后删除
|
||||
faultAlarmDefault(fault_alarm, "TS_GHS02");
|
||||
//近30日故障统计
|
||||
JSONArray monthly_fault_statistics = cockpitMapper.FaultTotal("GH");
|
||||
//测试数据,上线后删除
|
||||
monthlyFaultStatisticsDefault(monthly_fault_statistics, "TS_GHS02");
|
||||
getGhsInfo.put("curing_summary", curing_summary);
|
||||
getGhsInfo.put("monthly_gh_qty", monthly_gh_qty_default);
|
||||
@@ -437,6 +507,7 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
faultAlarmDefault(fault_alarm, "AGV08");
|
||||
//近30日故障统计
|
||||
JSONArray monthly_fault_statistics = cockpitMapper.monthlyFaultStatistics();
|
||||
//测试数据,上线后删除
|
||||
if (ObjectUtil.isEmpty(monthly_fault_statistics)) {
|
||||
JSONObject item = new JSONObject();
|
||||
item.put("region_name", "TS_GHS");
|
||||
@@ -769,109 +840,70 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
@Override
|
||||
public JSONArray allDeviceStatus() {
|
||||
JSONArray array = new JSONArray();
|
||||
// Random random = new Random();
|
||||
// int lowerBound = 10000;
|
||||
// int upperBound = 18000;
|
||||
JSONArray baoshijian = (JSONArray) redisUtils.get("baoshijian1");
|
||||
JSONArray guhuashi = (JSONArray) redisUtils.get("guhuashi1");
|
||||
JSONArray AGV = (JSONArray) redisUtils.get("AGV1");
|
||||
JSONArray RGV = (JSONArray) redisUtils.get("RGV1");
|
||||
JSONArray site = (JSONArray) redisUtils.get("site1");
|
||||
array.add(baoshijian);
|
||||
array.add(guhuashi);
|
||||
array.add(AGV);
|
||||
array.add(RGV);
|
||||
array.add(site);
|
||||
//读取设备缓存信息
|
||||
CompletableFuture<List<Map<String, Object>>> task1 = CompletableFuture.supplyAsync(() -> {
|
||||
JSONArray baoshijian = (JSONArray) redisUtils.get("baoshijian1");
|
||||
JSONArray guhuashi = (JSONArray) redisUtils.get("guhuashi1");
|
||||
JSONArray AGV = (JSONArray) redisUtils.get("AGV1");
|
||||
JSONArray RGV = (JSONArray) redisUtils.get("RGV1");
|
||||
JSONArray site = (JSONArray) redisUtils.get("site1");
|
||||
array.add(baoshijian);
|
||||
array.add(guhuashi);
|
||||
array.add(AGV);
|
||||
array.add(RGV);
|
||||
array.add(site);
|
||||
return null;
|
||||
}, pool);
|
||||
task1.exceptionally((e) -> {
|
||||
log.error("读取设备缓存信息: {}", e.getMessage(), e);
|
||||
return null;
|
||||
});
|
||||
// 固化室详情
|
||||
JSONArray ghsInteriorList = cockpitMapper.getGHSInteriorList();
|
||||
JSONObject ghsDetail = new JSONObject();
|
||||
ghsDetail.put("ghs_detail", ghsInteriorList);
|
||||
array.add(ghsDetail);
|
||||
CompletableFuture<JSONArray> task2 = CompletableFuture.supplyAsync(() -> cockpitMapper.getGHSInteriorList(), pool);
|
||||
task2.thenAccept((result) -> {
|
||||
JSONObject ghsDetail = new JSONObject();
|
||||
ghsDetail.put("ghs_detail", result);
|
||||
array.add(ghsDetail);
|
||||
}).exceptionally((e) -> {
|
||||
log.error("固化室详情{}", e.getMessage(), e);
|
||||
JSONObject ghsDetail = new JSONObject();
|
||||
ghsDetail.put("ghs_detail", null);
|
||||
array.add(ghsDetail);
|
||||
return null;
|
||||
});
|
||||
// 输送线详情
|
||||
JSONArray ssxInteriorList = cockpitMapper.getSSXInteriorList();
|
||||
JSONObject ssxDetail = new JSONObject();
|
||||
ssxDetail.put("ssx_detail", ssxInteriorList);
|
||||
array.add(ssxDetail);
|
||||
// 库位
|
||||
JSONArray zcList = cockpitMapper.getZCList();
|
||||
JSONObject storage = new JSONObject();
|
||||
storage.put("storage", zcList);
|
||||
array.add(storage);
|
||||
return array;
|
||||
}
|
||||
|
||||
public ConcurrentHashMap<String, Object> equipmentInfo1(String deviceCode) {
|
||||
ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<>();
|
||||
CompletableFuture<JSONArray> listCompletableFuture = CompletableFuture.supplyAsync(() -> {
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("one", "1");
|
||||
jsonObject.put("two", "2");
|
||||
array.add(jsonObject);
|
||||
return array;
|
||||
}, pool);
|
||||
listCompletableFuture.thenAccept(result -> {
|
||||
map.put("DayShiftList", result);
|
||||
CompletableFuture<JSONArray> task3 = CompletableFuture.supplyAsync(() -> cockpitMapper.getSSXInteriorList(), pool);
|
||||
task3.thenAccept((result) -> {
|
||||
JSONObject ssxDetail = new JSONObject();
|
||||
ssxDetail.put("ssx_detail", result);
|
||||
array.add(ssxDetail);
|
||||
}).exceptionally((e) -> {
|
||||
map.put("DayShiftList", null);
|
||||
log.error("输送线详情{}", e.getMessage(), e);
|
||||
JSONObject ssxDetail = new JSONObject();
|
||||
ssxDetail.put("ssx_detail", ssxDetail);
|
||||
array.add(ssxDetail);
|
||||
return null;
|
||||
});
|
||||
|
||||
CompletableFuture<JSONArray> listShiftProductionFuture = CompletableFuture.supplyAsync(() -> {
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("one", "3");
|
||||
jsonObject.put("two", "4");
|
||||
array.add(jsonObject);
|
||||
jsonObject.put("one", "6");
|
||||
jsonObject.put("two", "7");
|
||||
array.add(jsonObject);
|
||||
return array;
|
||||
}, pool);
|
||||
listCompletableFuture.thenAccept(result -> {
|
||||
map.put("DayShiftList", result);
|
||||
// 库位详情
|
||||
CompletableFuture<JSONArray> task4 = CompletableFuture.supplyAsync(() -> cockpitMapper.getZCList(), pool);
|
||||
task4.thenAccept((result) -> {
|
||||
JSONObject storage = new JSONObject();
|
||||
storage.put("storage", result);
|
||||
array.add(storage);
|
||||
}).exceptionally((e) -> {
|
||||
map.put("DayShiftList", null);
|
||||
log.error("库位详情{}", e.getMessage(), e);
|
||||
JSONObject storage = new JSONObject();
|
||||
storage.put("storage", null);
|
||||
array.add(storage);
|
||||
return null;
|
||||
});
|
||||
CompletableFuture<JSONArray> listProductionTaskFuture = CompletableFuture.supplyAsync(() -> {
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("one", "1");
|
||||
jsonObject.put("two", "2");
|
||||
array.add(jsonObject);
|
||||
return array;
|
||||
}, pool);
|
||||
listCompletableFuture.thenAccept(result -> {
|
||||
map.put("DayShiftList", result);
|
||||
}).exceptionally((e) -> {
|
||||
map.put("DayShiftList", null);
|
||||
return null;
|
||||
});
|
||||
// 提交
|
||||
CompletableFuture<Void> allQuery = CompletableFuture.allOf(listCompletableFuture, listShiftProductionFuture, listProductionTaskFuture);
|
||||
CompletableFuture<ConcurrentHashMap<String, Object>> future = allQuery.thenApply((result) -> map).exceptionally((e) -> {
|
||||
CompletableFuture<Void> allQuery = CompletableFuture.allOf(task1, task2, task3, task4);
|
||||
CompletableFuture<JSONArray> future = allQuery.thenApply((result) -> array).exceptionally((e) -> {
|
||||
log.error(e.getMessage(), e);
|
||||
return null;
|
||||
});
|
||||
future.join();
|
||||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
* 暂存区库存结构-空库存
|
||||
*/
|
||||
public HomeInfo.ZCStorageInfo getTemporaryStorage() {
|
||||
HomeInfo.ZCStorageInfo zCStorageInfo = new HomeInfo.ZCStorageInfo();
|
||||
zCStorageInfo.setMaterial_info(cockpitMapper.getTemporaryStorage());
|
||||
List<SchBasePoint> pointList = pointService.list(new LambdaUpdateWrapper<SchBasePoint>().eq(SchBasePoint::getRegion_code, "ZC").eq(SchBasePoint::getIs_used, 1));
|
||||
long freePoint = pointList.stream().filter(r -> "1".equals(r.getPoint_status())).count();
|
||||
int pointCount = pointList.size();
|
||||
//空库存百分比
|
||||
double percentageFree = Math.round(((double) freePoint / (double) pointCount) * 100);
|
||||
zCStorageInfo.setFreePoint(String.valueOf(freePoint));
|
||||
zCStorageInfo.setPointCount(String.valueOf(pointCount));
|
||||
zCStorageInfo.setEmpty_stock(String.valueOf(percentageFree));
|
||||
return zCStorageInfo;
|
||||
return array;
|
||||
}
|
||||
|
||||
|
||||
@@ -894,150 +926,7 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生产任务
|
||||
*/
|
||||
public List<HomeInfo.TodayWork> getWorkOrders(String type) {
|
||||
// 获取今天的日期时间范围
|
||||
LocalDateTime startOfDay = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0);
|
||||
LocalDateTime endOfDay = startOfDay.plusDays(1).minusNanos(1);
|
||||
// 查询今天的工单信息
|
||||
List<PdmBdWorkorder> todayWorkOrders = workorderService.list(new LambdaUpdateWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getIs_delete, 0)
|
||||
.between(PdmBdWorkorder::getCreate_time, startOfDay, endOfDay)
|
||||
.and(StringUtils.isNotBlank(type), i -> i.eq(PdmBdWorkorder::getRegion_code, type)));
|
||||
return ColaBeanUtils.copyListProperties(todayWorkOrders, HomeInfo.TodayWork::new);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生产目标达成
|
||||
*/
|
||||
public TargetAchievement getWorkOrderList(String regionCode, String type, Integer days) {
|
||||
TargetAchievement targetAchievement;
|
||||
targetAchievement = cockpitMapper.getCompletionPercent(regionCode, type, days);
|
||||
if (targetAchievement != null) {
|
||||
// 计算完成百分比
|
||||
BigDecimal completionPercentage = targetAchievement.getActual_production().divide(targetAchievement.getExpected_production(), 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100"));
|
||||
int roundedPercentage = completionPercentage.intValue();
|
||||
targetAchievement.setPercentage(roundedPercentage);
|
||||
} else {
|
||||
targetAchievement = new TargetAchievement();
|
||||
}
|
||||
return targetAchievement;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 7天生产统计
|
||||
* type:1涂板线,2固化室
|
||||
*/
|
||||
public CommonData.WeekWorkorderStatistics getWeekWorkStatistics(String type) {
|
||||
// 过滤近5天的数据
|
||||
CommonData.WeekWorkorderStatistics weekWorkorderStatistics = new CommonData.WeekWorkorderStatistics();
|
||||
List<DayData> weekWorkorder;
|
||||
List<TargetAchievement> tbxWorkOrder = new ArrayList<>();
|
||||
List<TargetAchievement> ghworkOrders = new ArrayList<>();
|
||||
//涂板线和固化室7天统计
|
||||
if (RegionCodeConstant.COATED_PLATE_LINE_AREA.equals(type)) {
|
||||
tbxWorkOrder = cockpitMapper.getWorkOrders(type, 7);
|
||||
} else if (RegionCodeConstant.CURING_ZONE.equals(type)) {
|
||||
ghworkOrders = cockpitMapper.getGhActualProduction(7);
|
||||
} else {
|
||||
tbxWorkOrder = cockpitMapper.getWorkOrders(RegionCodeConstant.COATED_PLATE_LINE_AREA, 7);
|
||||
ghworkOrders = cockpitMapper.getGhActualProduction(7);
|
||||
}
|
||||
if (tbxWorkOrder.size() > 0 || ghworkOrders.size() > 0) {
|
||||
weekWorkorder = isWithinLastDayss(tbxWorkOrder, ghworkOrders, 1, type);
|
||||
weekWorkorderStatistics.setDay1(weekWorkorder);
|
||||
weekWorkorder = isWithinLastDayss(tbxWorkOrder, ghworkOrders, 2, type);
|
||||
weekWorkorderStatistics.setDay2(weekWorkorder);
|
||||
weekWorkorder = isWithinLastDayss(tbxWorkOrder, ghworkOrders, 3, type);
|
||||
weekWorkorderStatistics.setDay3(weekWorkorder);
|
||||
weekWorkorder = isWithinLastDayss(tbxWorkOrder, ghworkOrders, 4, type);
|
||||
weekWorkorderStatistics.setDay4(weekWorkorder);
|
||||
weekWorkorder = isWithinLastDayss(tbxWorkOrder, ghworkOrders, 5, type);
|
||||
weekWorkorderStatistics.setDay5(weekWorkorder);
|
||||
weekWorkorder = isWithinLastDayss(tbxWorkOrder, ghworkOrders, 6, type);
|
||||
weekWorkorderStatistics.setDay6(weekWorkorder);
|
||||
weekWorkorder = isWithinLastDayss(tbxWorkOrder, ghworkOrders, 7, type);
|
||||
weekWorkorderStatistics.setDay7(weekWorkorder);
|
||||
}
|
||||
return weekWorkorderStatistics;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 7天生产统计-获取每天对应的数值
|
||||
* vehicle_type:
|
||||
*/
|
||||
private List<DayData> isWithinLastDayss(List<TargetAchievement> tbxWorkOrder, List<TargetAchievement> ghworkOrders, int days, String type) {
|
||||
List<DayData> dayDataList = new ArrayList<>();
|
||||
DayData dayData = new DayData();
|
||||
tbxWorkOrder = tbxWorkOrder.stream().filter(workOrder -> isThisDays(workOrder, days)).collect(Collectors.toList());
|
||||
ghworkOrders = ghworkOrders.stream().filter(workOrder -> isThisDays(workOrder, days)).collect(Collectors.toList());
|
||||
if (type.equals(RegionCodeConstant.COATED_PLATE_LINE_AREA)) {
|
||||
List<TargetAchievement> lt;
|
||||
List<TargetAchievement> pt;
|
||||
dayData.setItem_name("连涂计划数");
|
||||
lt = tbxWorkOrder.stream().filter(workOrder -> "1".equals(workOrder.getVehicle_type())).collect(Collectors.toList());
|
||||
dayData.setItem_qty(calculateTotalPlanQty(lt));
|
||||
dayDataList.add(dayData);
|
||||
dayData = new DayData();
|
||||
dayData.setItem_name("连涂完成数");
|
||||
dayData.setItem_qty(calculateTotalRealQty(lt));
|
||||
dayDataList.add(dayData);
|
||||
pt = tbxWorkOrder.stream().filter(workOrder -> "2".equals(workOrder.getVehicle_type())).collect(Collectors.toList());
|
||||
dayData = new DayData();
|
||||
dayData.setItem_name("普涂计划数");
|
||||
dayData.setItem_qty(calculateTotalRealQty(pt));
|
||||
dayDataList.add(dayData);
|
||||
dayData = new DayData();
|
||||
dayData.setItem_name("普涂完成数");
|
||||
dayData.setItem_qty(calculateTotalRealQty(pt));
|
||||
dayDataList.add(dayData);
|
||||
} else if (type.equals(RegionCodeConstant.CURING_ZONE)) {
|
||||
dayData.setItem_name("固化生产");
|
||||
dayData.setItem_qty(calculateTotalRealQty(ghworkOrders));
|
||||
dayDataList.add(dayData);
|
||||
} else {
|
||||
dayData.setItem_name("连涂生产");
|
||||
dayData.setItem_qty(calculateTotalRealQty(tbxWorkOrder));
|
||||
dayDataList.add(dayData);
|
||||
dayData = new DayData();
|
||||
dayData.setItem_name("固化生产");
|
||||
dayData.setItem_qty(calculateTotalRealQty(ghworkOrders));
|
||||
dayDataList.add(dayData);
|
||||
}
|
||||
return dayDataList;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 7天生产统计-计算计划生产总和
|
||||
*/
|
||||
private String calculateTotalPlanQty(List<TargetAchievement> workOrders) {
|
||||
BigDecimal result = workOrders.stream().map(TargetAchievement::getExpected_production).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 7天生产统计-计算实际生产总和
|
||||
*/
|
||||
private String calculateTotalRealQty(List<TargetAchievement> workOrders) {
|
||||
BigDecimal result = workOrders.stream().map(TargetAchievement::getActual_production).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 7天生产统计-过滤某日的工单
|
||||
*/
|
||||
private boolean isThisDays(TargetAchievement workOrder, int days) {
|
||||
LocalDate createDate = LocalDate.parse(workOrder.getCreate_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
LocalDate today = LocalDate.now();
|
||||
LocalDate daysAgo = today.minusDays(days);
|
||||
return !createDate.isBefore(daysAgo) && createDate.isBefore(today.plusDays(1));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -1066,15 +955,4 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 定时统计近七天数据
|
||||
*/
|
||||
@Async("taskExecutor")
|
||||
//@Scheduled(cron = "0/10 * * * * *")
|
||||
public void executeWeekWorkStatistics() {
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
package org.nl.wms.cockpit.service.mapper;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.apache.ibatis.annotations.Insert;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.nl.wms.cockpit.service.dao.DasDeviceFault;
|
||||
import org.nl.wms.cockpit.service.dao.home.DayData;
|
||||
import org.nl.wms.cockpit.service.dao.home.TargetAchievement;
|
||||
import org.nl.wms.cockpit.service.dao.zcq.TaskInfo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
@@ -6,10 +6,10 @@ spring:
|
||||
druid:
|
||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
||||
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||||
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:xftn_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:stand_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||||
username: ${DB_USER:root}
|
||||
password: ${DB_PWD:123456}
|
||||
password: ${DB_PWD:123456789}
|
||||
# password: ${DB_PWD:P@ssw0rd}
|
||||
# 初始连接数
|
||||
initial-size: 5
|
||||
|
||||
Reference in New Issue
Block a user