add 大屏真实数据方法

This commit is contained in:
张江玮
2023-08-22 16:44:27 +08:00
parent b96e9ab76e
commit 0d23d432e0
42 changed files with 543 additions and 1092 deletions

View File

@@ -18,68 +18,68 @@ import java.sql.SQLException;
@Configuration
@Slf4j
public class DataBaseConfig {
@Value("${erp.sqlserver.enabled}")
private boolean sqlserverIsConnect;
@Value("${erp.sqlserver.jdbcurl}")
private String sqlserverJdbcUrl;
@Value("${erp.sqlserver.username}")
private String sqlserverUserName;
@Value("${erp.sqlserver.password}")
private String sqlserverPassword;
@Primary
@Bean(name = "dataSource")
@ConfigurationProperties(prefix = "spring.datasource.druid")
public DataSource dataSource() {
return new DruidDataSource();
}
@Bean("dataSource1")
@ConditionalOnExpression("${erp.sqlserver.enabled:true}")
public DataSource dataSource1() {
log.info("是否连接Sqlserver" + sqlserverIsConnect);
String jdbcUrl = sqlserverJdbcUrl;
String userName = sqlserverUserName;
String password = sqlserverPassword;
DruidDataSource druidDataSource = new DruidDataSource();
String className;
try {
className = DriverManager.getDriver(jdbcUrl.trim()).getClass().getName();
} catch (SQLException e) {
throw new RuntimeException("Get class name error: =" + jdbcUrl);
}
if (StrUtil.isEmpty(className)) {
DataTypeEnum dataTypeEnum = DataTypeEnum.urlOf(jdbcUrl);
if (null == dataTypeEnum) {
throw new RuntimeException("Not supported data type: jdbcUrl=" + jdbcUrl);
}
druidDataSource.setDriverClassName(dataTypeEnum.getDriver());
} else {
druidDataSource.setDriverClassName(className);
}
druidDataSource.setUrl(jdbcUrl);
druidDataSource.setUsername(userName);
druidDataSource.setPassword(password);
// 配置获取连接等待超时的时间
druidDataSource.setMaxWait(3000);
// 配置初始化大小、最小、最大
druidDataSource.setInitialSize(5);
druidDataSource.setMinIdle(5);
druidDataSource.setMaxActive(10);
// 如果链接出现异常则直接判定为失败而不是一直重试
druidDataSource.setBreakAfterAcquireFailure(true);
try {
druidDataSource.init();
} catch (SQLException e) {
log.error("Exception during pool initialization", e);
throw new RuntimeException(e.getMessage());
}
return druidDataSource;
}
//
// @Value("${erp.sqlserver.enabled}")
// private boolean sqlserverIsConnect;
// @Value("${erp.sqlserver.jdbcurl}")
// private String sqlserverJdbcUrl;
// @Value("${erp.sqlserver.username}")
// private String sqlserverUserName;
// @Value("${erp.sqlserver.password}")
// private String sqlserverPassword;
//
// @Primary
// @Bean(name = "dataSource")
// @ConfigurationProperties(prefix = "spring.datasource.druid")
// public DataSource dataSource() {
// return new DruidDataSource();
// }
//
// @Bean("dataSource1")
// @ConditionalOnExpression("${erp.sqlserver.enabled:true}")
// public DataSource dataSource1() {
// log.info("是否连接Sqlserver" + sqlserverIsConnect);
// String jdbcUrl = sqlserverJdbcUrl;
// String userName = sqlserverUserName;
// String password = sqlserverPassword;
// DruidDataSource druidDataSource = new DruidDataSource();
// String className;
// try {
// className = DriverManager.getDriver(jdbcUrl.trim()).getClass().getName();
// } catch (SQLException e) {
// throw new RuntimeException("Get class name error: =" + jdbcUrl);
// }
// if (StrUtil.isEmpty(className)) {
// DataTypeEnum dataTypeEnum = DataTypeEnum.urlOf(jdbcUrl);
// if (null == dataTypeEnum) {
// throw new RuntimeException("Not supported data type: jdbcUrl=" + jdbcUrl);
// }
// druidDataSource.setDriverClassName(dataTypeEnum.getDriver());
// } else {
// druidDataSource.setDriverClassName(className);
// }
//
//
// druidDataSource.setUrl(jdbcUrl);
// druidDataSource.setUsername(userName);
// druidDataSource.setPassword(password);
// // 配置获取连接等待超时的时间
// druidDataSource.setMaxWait(3000);
// // 配置初始化大小、最小、最大
// druidDataSource.setInitialSize(5);
// druidDataSource.setMinIdle(5);
// druidDataSource.setMaxActive(10);
//
// // 如果链接出现异常则直接判定为失败而不是一直重试
// druidDataSource.setBreakAfterAcquireFailure(true);
// try {
// druidDataSource.init();
// } catch (SQLException e) {
// log.error("Exception during pool initialization", e);
// throw new RuntimeException(e.getMessage());
// }
//
// return druidDataSource;
// }
}

View File

@@ -4,9 +4,14 @@ import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.sch.manage.WorkOrderEnum;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
@@ -16,6 +21,8 @@ import java.util.stream.Collectors;
@Service
public class DashboardService {
private final WmsToAcsService wmsToAcsService;
/**
* 大屏首页报表
*
@@ -635,4 +642,143 @@ public class DashboardService {
private String randomFrom1To(int to) {
return String.valueOf(1 + (int) (Math.random() * to));
}
/**
* 首页真实数据,后期内部调用这个方法。
*
* @return 首页真实数据
*/
@SuppressWarnings("unused")
private JSONObject homepageData1() {
JSONObject result = new JSONObject();
// 当前设备情况---------------------------------------------------------------------------------------------------
JSONObject currentEquipmentCondition = new JSONObject();
result.put("currentEquipmentCondition", currentEquipmentCondition);
// 初始化 0
currentEquipmentCondition.put("running", 0);
currentEquipmentCondition.put("pausing", 0);
currentEquipmentCondition.put("shutdown", 0);
currentEquipmentCondition.put("inTrouble", 0);
// 真实获取
JSONArray pdmBiDevice = WQLObject.getWQLObject("pdm_bi_device").query().getResultJSONArray(0);
JSONObject acsResult = wmsToAcsService.getDeviceStatus(pdmBiDevice);
if (acsResult.getIntValue("status") == HttpStatus.OK.value()) {
JSONArray data = acsResult.getJSONArray("data");
currentEquipmentCondition.put("running", data.stream().filter(o -> ((JSONObject) o).getIntValue("device_status") == 2).count());
currentEquipmentCondition.put("pausing", data.stream().filter(o -> ((JSONObject) o).getIntValue("device_status") == 1).count());
currentEquipmentCondition.put("shutdown", data.stream().filter(o -> ((JSONObject) o).getIntValue("device_status") == 0).count());
currentEquipmentCondition.put("inTrouble", data.stream().filter(o -> ((JSONObject) o).getIntValue("device_status") == 3).count());
}
// 每月故障统计---------------------------------------------------------------------------------------------------
JSONObject monthlyFailureStatistics = new JSONObject();
result.put("monthlyFailureStatistics", monthlyFailureStatistics);
// 故障次数
JSONObject currentMonth = new JSONObject();
monthlyFailureStatistics.put("currentMonth", currentMonth);
// 初始化 0
currentMonth.put("mix", 0);
currentMonth.put("press", 0);
currentMonth.put("dry", 0);
currentMonth.put("sort", 0);
// 真实获取
JSONArray data = WQL.getWO("DASHBOARD").addParam("flag", "1").process().getResultJSONArray(0);
List<Object> mixData = data.stream().filter(o -> "HL".equals(((JSONObject) o).getString("region_code"))).collect(Collectors.toList());
List<Object> pressData = data.stream().filter(o -> "YZ".equals(((JSONObject) o).getString("region_code"))).collect(Collectors.toList());
List<Object> dryData = data.stream().filter(o -> "GZ".equals(((JSONObject) o).getString("region_code"))).collect(Collectors.toList());
List<Object> sortData = data.stream().filter(o -> "FJ".equals(((JSONObject) o).getString("region_code"))).collect(Collectors.toList());
currentMonth.put("mix", mixData.stream().filter(o -> {
JSONObject row = (JSONObject) o;
return DateUtil.thisYear() == row.getIntValue("year") && (DateUtil.thisMonth() + 1) == row.getIntValue("month");
}).count());
currentMonth.put("press", pressData.stream().filter(o -> {
JSONObject row = (JSONObject) o;
return DateUtil.thisYear() == row.getIntValue("year") && (DateUtil.thisMonth() + 1) == row.getIntValue("month");
}).count());
currentMonth.put("dry", dryData.stream().filter(o -> {
JSONObject row = (JSONObject) o;
return DateUtil.thisYear() == row.getIntValue("year") && (DateUtil.thisMonth() + 1) == row.getIntValue("month");
}).count());
currentMonth.put("sort", sortData.stream().filter(o -> {
JSONObject row = (JSONObject) o;
return DateUtil.thisYear() == row.getIntValue("year") && (DateUtil.thisMonth() + 1) == row.getIntValue("month");
}).count());
// 平均次数
JSONObject average = new JSONObject();
monthlyFailureStatistics.put("average", average);
// 真实获取
average.put("mix", mixData.isEmpty() ? 0 : mixData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size());
average.put("press", mixData.isEmpty() ? 0 : pressData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size());
average.put("dry", mixData.isEmpty() ? 0 : dryData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size());
average.put("sort", mixData.isEmpty() ? 0 : sortData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size());
// 当日工序生产统计------------------------------------------------------------------------------------------------
JSONObject dailyProductionStatistics = new JSONObject();
result.put("dailyProductionStatistics", dailyProductionStatistics);
// 今日各区域生产数据
data = WQL.getWO("DASHBOARD").addParam("flag", "2").process().getResultJSONArray(0);
// 混料
JSONObject mix = new JSONObject();
dailyProductionStatistics.put("mix", mix);
// 初始化 0
mix.put("planned", 0);
// 真实获取
mix.put("completed", String.format("%.2f", data.stream().filter(o -> "HL".equals(((JSONObject) o).getString("region_code"))).mapToInt(o -> ((JSONObject) o).getIntValue("weight")).sum() / 1000.00));
// 困料
JSONObject stand = new JSONObject();
dailyProductionStatistics.put("stand", stand);
// 当前所有存在的料盅数据
JSONArray cupData = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("is_delete = '0' AND vehicle_type = '1'").getResultJSONArray(0);
// 处理
stand.put("onStanding", String.format("%.2f", cupData.stream().filter(o -> "1".equals(((JSONObject) o).getString("stand_status"))).mapToInt(o -> ((JSONObject) o).getIntValue("weight")).sum() / 1000.00));
stand.put("completed", String.format("%.2f", cupData.stream().filter(o -> "23".contains(((JSONObject) o).getString("stand_status"))).mapToInt(o -> ((JSONObject) o).getIntValue("weight")).sum() / 1000.00));
// 压制
JSONObject press = new JSONObject();
dailyProductionStatistics.put("press", press);
// 初始化 0
press.put("planned", 0);
// 真实获取
press.put("completed", String.format("%.2f", data.stream().filter(o -> "YZ".equals(((JSONObject) o).getString("region_code"))).mapToInt(o -> ((JSONObject) o).getIntValue("qty")).sum() / 10000.00));
// 干燥
JSONObject dry = new JSONObject();
dailyProductionStatistics.put("dry", dry);
// 出窑时间为今天的数据
JSONArray outKilnData = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("vehicle_type = '2' AND TO_DAYS ( out_kiln_time ) = TO_DAYS ( NOW() )").getResultJSONArray(0);
// 处理
dry.put("planned", 0);
dry.put("completed", String.format("%.2f", outKilnData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("qty")).sum() / 10000.00));
// 分拣
JSONObject sort = new JSONObject();
dailyProductionStatistics.put("sort", sort);
sort.put("planned", 0);
// 真实获取
sort.put("completed", String.format("%.2f", data.stream().filter(o -> "FJ".equals(((JSONObject) o).getString("region_code"))).mapToInt(o -> ((JSONObject) o).getIntValue("qty")).sum() / 10000.00));
// 设备生产统计---------------------------------------------------------------------------------------------------
JSONArray equipmentProductionStatistics = new JSONArray();
result.put("equipmentProductionStatistics", equipmentProductionStatistics);
return result;
}
/**
* 大屏首页设备真实数据,后期内部调用这个方法。
*
* @return 大屏首页设备数据
*/
public JSONObject homepageEquipment1() {
JSONObject result = new JSONObject();
return result;
}
}

View File

@@ -0,0 +1,73 @@
[交易说明]
交易名: 基础点位分页查询
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
[数据库]
--指定数据库为空采用默认值默认为db.properties中列出的第一个库
[IO定义]
#################################################
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
[临时变量]
--所有中间过程变量均可在此处定义
[业务过程]
##########################################
# 1、输入输出检查 #
##########################################
##########################################
# 2、主过程前处理 #
##########################################
##########################################
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
QUERY
SELECT
device.region_code,
YEAR ( failure_time ) AS "year",
MONTH ( failure_time ) AS "month",
COUNT ( data_id ) AS "count"
FROM
das_device_number ddn
LEFT JOIN pdm_bi_device device ON ddn.device_code = device.device_code
GROUP BY
`year`,
`month`,
device.region_code
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "2"
QUERY
SELECT
d.region_code,
wod.qty,
wod.weight,
wo.plan_qty
FROM
pdm_bd_work_order_daliy wod
LEFT JOIN pdm_bd_workorder wo ON wod.workorder_id = wo.workorder_id
LEFT JOIN pdm_bi_device d ON wo.device_id = d.device_id
WHERE
TO_DAYS ( wod.date ) = TO_DAYS ( NOW() )
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -2,7 +2,6 @@ package org.nl.wms.sch.manage;
/**
* @author zhangjiangwei
* @date 2023/03/03 10:42
*/
public class ACSSystem {

View File

@@ -2,7 +2,6 @@ package org.nl.wms.sch.manage;
/**
* @author zhangjiangwei
* @date 2023/04/12 21:44
*/
public class AutoCreate {

View File

@@ -19,7 +19,6 @@ import java.util.ArrayList;
/**
* @author zhangjiangwei
* @date 2023/05/10 10:48
*/
@Slf4j
@RequiredArgsConstructor

View File

@@ -7,7 +7,6 @@ import lombok.Getter;
* 生成方式枚举类
*
* @author 张江玮
* @date 2022/11/01 15:57
*/
@AllArgsConstructor
public enum CreateMode {

View File

@@ -1,6 +1,5 @@
package org.nl.wms.sch.manage;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.util.Arrays;
@@ -8,7 +7,6 @@ import java.util.stream.Collectors;
/**
* @author zhangjiangwei
* @date 2023/03/03 9:41
*/
@RequiredArgsConstructor
public enum LockType {

View File

@@ -3,10 +3,9 @@ package org.nl.wms.sch.manage;
import lombok.RequiredArgsConstructor;
/**
* 任务状态
* 点位状态
*
* @author zhangjiangwei
* @date 2023/03/03 9:26
*/
@RequiredArgsConstructor
public enum PointStatus {

View File

@@ -10,7 +10,6 @@ import java.util.stream.Collectors;
* 区域枚举类
*
* @author 张江玮
* @date 2022/11/22 16:16
*/
@RequiredArgsConstructor
public enum Region {

View File

@@ -9,7 +9,6 @@ import java.util.stream.Collectors;
* 入库类型
*
* @author zhangjiangwei
* @date 2023/05/19 09:53
*/
@RequiredArgsConstructor
public enum RegionInType {

View File

@@ -7,7 +7,6 @@ import java.util.stream.Collectors;
/**
* @author zhangjiangwei
* @date 2023/05/20 14:06
*/
@RequiredArgsConstructor
public enum RegionOutType {

View File

@@ -7,7 +7,6 @@ import java.util.Arrays;
/**
* @author zhangjiangwei
* @date 2023/03/03 10:21
*/
@RequiredArgsConstructor
public enum TaskType {

View File

@@ -7,7 +7,6 @@ import lombok.RequiredArgsConstructor;
* acs反馈任务状态
*
* @author zhangjiangwei
* @date 2023/03/07 11:27
*/
@RequiredArgsConstructor
@Getter

View File

@@ -15,7 +15,6 @@ import org.springframework.stereotype.Component;
/**
* @author zhangjiangwei
* @date 2023/04/28 15:27
*/
@RequiredArgsConstructor
@Component

View File

@@ -15,7 +15,6 @@ import org.springframework.stereotype.Component;
/**
* @author zhangjiangwei
* @date 2023/04/21 09:15
*/
@RequiredArgsConstructor
@Component

View File

@@ -18,7 +18,6 @@ import org.springframework.stereotype.Component;
* 辽宁晟华混料 叫空 任务类
*
* @author zhangjiangwei
* @date 2023/03/03 9:08
*/
@RequiredArgsConstructor
@Component

View File

@@ -18,7 +18,6 @@ import org.springframework.stereotype.Component;
* 辽宁晟华压制 叫空 任务类
*
* @author zhangjiangwei
* @date 2023/04/04 11:36
*/
@RequiredArgsConstructor
@Component

View File

@@ -15,7 +15,6 @@ import org.springframework.stereotype.Component;
/**
* @author zhangjiangwei
* @date 2023/04/14 21:28
*/
@RequiredArgsConstructor
@Component

View File

@@ -15,7 +15,6 @@ import org.springframework.stereotype.Component;
/**
* @author zhangjiangwei
* @date 2023/04/07 15:51
*/
@RequiredArgsConstructor
@Component

View File

@@ -17,7 +17,6 @@ import org.springframework.stereotype.Component;
/**
* @author zhangjiangwei
* @date 2023/05/10 10:04
*/
@RequiredArgsConstructor
@Component

View File

@@ -16,7 +16,6 @@ import org.springframework.stereotype.Component;
/**
* @author zhangjiangwei
* @date 2023/04/14 21:29
*/
@RequiredArgsConstructor
@Component

View File

@@ -15,7 +15,6 @@ import org.springframework.stereotype.Component;
/**
* @author zhangjiangwei
* @date 2023/05/10 10:25
*/
@RequiredArgsConstructor
@Component

View File

@@ -15,7 +15,6 @@ import org.springframework.stereotype.Component;
/**
* @author zhangjiangwei
* @date 2023/04/28 12:33
*/
@RequiredArgsConstructor
@Component
@@ -294,8 +293,6 @@ public class FJSendMaterialTask extends AbstractAcsTask {
}
if (TaskType.SEND_MATERIAL.value().equals(task.getString("task_type"))) {
JSONObject point2 = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + point_code2 + "'").uniqueResult(0);
JSONObject workorder = WQL
.getWO("SEND_MATERIAL_TASK")
.addParam("flag", "7")

View File

@@ -17,7 +17,6 @@ import org.springframework.stereotype.Component;
* 辽宁晟华混料 送料入库 任务类
*
* @author zhangjiangwei
* @date 2023/03/06 14:28
*/
@RequiredArgsConstructor
@Component

View File

@@ -14,7 +14,6 @@ import org.springframework.stereotype.Component;
/**
* @author zhangjiangwei
* @date 2023/04/12 22:12
*/
@RequiredArgsConstructor
@Component

View File

@@ -15,7 +15,6 @@ import org.springframework.stereotype.Component;
/**
* @author zhangjiangwei
* @date 2023/04/05 17:39
*/
@RequiredArgsConstructor
@Component

View File

@@ -17,7 +17,6 @@ import org.springframework.stereotype.Component;
/**
* @author zhangjiangwei
* @date 2023/05/04 10:05
*/
@RequiredArgsConstructor
@Component

View File

@@ -17,7 +17,6 @@ import org.springframework.stereotype.Component;
/**
* @author zhangjiangwei
* @date 2023/05/04 09:40
*/
@RequiredArgsConstructor
@Component

View File

@@ -15,7 +15,6 @@ import org.nl.wms.sch.manage.*;
* 辽宁晟华任务工具类
*
* @author zhangjiangwei
* @date 2023/03/06 14:32
*/
public class TaskUtils {

View File

@@ -2,7 +2,6 @@ package org.nl.wms.sch.util;
/**
* @author zhangjiangwei
* @date 2023/04/04 15:41
*/
public class PointUtils {

View File

@@ -10,10 +10,10 @@ import java.util.HashMap;
*/
public class MapOf implements Serializable {
public static <K> HashMap of(K... key){
HashMap map = new HashMap<>();
for (int i = 0; i < (key.length & ~1); i=i+2) {
map.put(key[i],key[i+1]);
public static <K> HashMap<K, K> of(K... key) {
HashMap<K, K> map = new HashMap<>();
for (int i = 0; i < (key.length & ~1); i = i + 2) {
map.put(key[i], key[i + 1]);
}
return map;
}