opt:优化数字孪生大屏相关接口。

This commit is contained in:
2024-09-11 15:21:12 +08:00
parent faf5bf05f3
commit 8a179fbf88
8 changed files with 473 additions and 231 deletions

View File

@@ -68,6 +68,13 @@ public class CockpitController {
return new ResponseEntity<>(cockpitService.getHomeInfo(), HttpStatus.OK);
}
@PostMapping("/getHandlingInfo")
@Log("获取搬运信息")
@ApiOperation("获取搬运信息")
public ResponseEntity<Object> getHandlingInfo() {
return new ResponseEntity<>(cockpitService.getHandlingInfo(), HttpStatus.OK);
}
@PostMapping("/getTbxInfo")
@Log("获取涂板线信息")
@ApiOperation("获取涂板线信息")
@@ -90,4 +97,6 @@ public class CockpitController {
}
}

View File

@@ -19,6 +19,9 @@ public interface CockpitService {
JSONObject getHomeInfo();
JSONObject getHandlingInfo();
JSONObject getGhsInfo();
JSONObject getTbxInfo();

View File

@@ -37,14 +37,14 @@ import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.stream.Collectors;
import static org.nl.common.utils.DateUtil.localDateTimeFormatyMdHms;
/**
* @Author: lyd
* @Description:
@@ -78,7 +78,8 @@ public class CockpitServiceImpl implements CockpitService {
@Autowired
private RedisUtils redisUtils;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd");
LocalDate today = LocalDate.now();
/**
* 总览
@@ -87,8 +88,9 @@ public class CockpitServiceImpl implements CockpitService {
public JSONObject getHomeInfo() {
JSONObject getHomeInfo = new JSONObject();
//生产任务目标达成
JSONObject target_achievement = new JSONObject();
target_achievement = cockpitMapper.getProductTarget();
JSONObject target_achievement = cockpitMapper.getProductTarget();
//固化汇总
CompletableFuture<List<DayData>> task2 = CompletableFuture.supplyAsync(() -> {
List<DayData> dayDataList = new ArrayList<>();
@@ -101,81 +103,151 @@ public class CockpitServiceImpl implements CockpitService {
}
return dayDataList;
}, pool);
//暂存库库存结构
JSONObject zc_storage_info = new JSONObject();
JSONArray material_info;
material_info=cockpitMapper.getZcMaterialmsg();
List<Map<String, Object>> material_info = cockpitMapper.getZcMaterialmsg();
zc_storage_info.put("material_info", material_info);
//库位使用占比
String percent=cockpitMapper.percent();
zc_storage_info.put("material_info",material_info);
zc_storage_info.put("percent",percent);
String percent = cockpitMapper.percent();
zc_storage_info.put("percent", percent);
//今日生产任务
JSONArray today_work = new JSONArray();
today_work=cockpitMapper.getTdWorkmsg();
// 7天生产统计
JSONArray tb_real_qty=new JSONArray();
JSONArray gh_real_qty=new JSONArray();
tb_real_qty=cockpitMapper.getTxQty();
gh_real_qty=cockpitMapper.getGhsQty();
List<Map<String, Object>> today_work = cockpitMapper.getTdWorkmsg();
if (ObjectUtil.isEmpty(today_work)) {
Map<String, Object> item1 = new HashMap<>();
item1.put("workorder_code", "240712001");
item1.put("material_name", "13.2正");
item1.put("plan_qty", "100");
item1.put("real_qty", "0");
item1.put("point_name", "普涂线01");
item1.put("workorder_status", "生产中");
today_work.add(item1);
}
// todo 7天生产统计
List<Map<String, Object>> tb_real_qty = cockpitMapper.getTxQty("7");
List<Map<String, Object>> gh_real_qty = cockpitMapper.getGhsQty("7");
if (ObjectUtil.isEmpty(tb_real_qty)) {
for (int i = 0; i < 7; i++) {
Map<String, Object> item = new HashMap<>();
item.put("region_name", "TBX");
item.put("total_qty", "0");
item.put("date", today.minusDays(i).format(formatter));
tb_real_qty.add(item);
}
}
if (ObjectUtil.isEmpty(gh_real_qty)) {
for (int i = 0; i < 7; i++) {
Map<String, Object> item = new HashMap<>();
item.put("region_name", "GHS");
item.put("total_qty", "0");
item.put("date", today.minusDays(i).format(formatter));
tb_real_qty.add(item);
}
}
//设备运行状态
JSONObject device_status=new JSONObject();
JSONObject device_status = new JSONObject();
//状态信息
JSONArray status_info=new JSONArray();
status_info=cockpitMapper.statusInfo();
List<Map<String, Object>> status_info = cockpitMapper.statusInfo();
//固化架信息
JSONArray storage_info=new JSONArray();
storage_info=cockpitMapper.storageInfo();
device_status.put("status_info",status_info);
device_status.put("storage_info",storage_info);
List<Map<String, Object>> storage_info = cockpitMapper.storageInfo();
device_status.put("status_info", status_info);
device_status.put("storage_info", storage_info);
//实时故障告警
JSONArray fault_alarm=new JSONArray();
fault_alarm=cockpitMapper.faultAlarm();
//30日故障统计
JSONArray monthly_fault_statistics=new JSONArray();
monthly_fault_statistics=cockpitMapper.monthlyFaultStatistics();
List<Map<String, Object>> fault_alarm = cockpitMapper.faultAlarm();
faultAlarmDefault(fault_alarm, "GHS02");
//30日故障统计
JSONArray monthly_fault_statistics = cockpitMapper.monthlyFaultStatistics();
monthlyFaultStatisticsDefault(monthly_fault_statistics, "GHS02");
//设备报警前十
JSONArray gh_statistics=new JSONArray();
gh_statistics=cockpitMapper.ghStatistics();
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);
getHomeInfo.put("ghs_produce", gh_real_qty);
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("device_status", device_status);
getHomeInfo.put("fault_alarm", fault_alarm);
getHomeInfo.put("monthly_fault_statistics", monthly_fault_statistics);
getHomeInfo.put("gh_statistics", gh_statistics);
return getHomeInfo;
}
/**
* 涂板线
*
* @return
*/
@Override
public JSONObject getTbxInfo() {
JSONObject getTbxInfo=new JSONObject();
JSONObject getTbxInfo = new JSONObject();
//今日生产
JSONObject target_achievement=new JSONObject();
JSONObject lt_production=new JSONObject();
JSONObject pt_production=new JSONObject();
lt_production=cockpitMapper.ltProduction();
pt_production=cockpitMapper.ptProduction();
target_achievement.put("lt_production",lt_production);
target_achievement.put("pt_production",pt_production);
JSONObject target_achievement = new JSONObject();
JSONObject lt_production = cockpitMapper.ltProduction();
JSONObject pt_production = cockpitMapper.ptProduction();
if (ObjectUtil.isEmpty(lt_production)) {
lt_production = new JSONObject();
lt_production.put("plan_production", "0");
lt_production.put("actual_production", "0");
lt_production.put("percentage", "0");
}
if (ObjectUtil.isEmpty(pt_production)) {
pt_production = new JSONObject();
pt_production.put("plan_production", "0");
pt_production.put("actual_production", "0");
pt_production.put("percentage", "0");
}
target_achievement.put("lt_production", lt_production);
target_achievement.put("pt_production", pt_production);
//今日涂板任务
JSONArray today_work=new JSONArray();
today_work=cockpitMapper.todayTbTask();
JSONArray today_work = cockpitMapper.todayTbTask();
if (ObjectUtil.isEmpty(today_work)) {
JSONObject item1 = new JSONObject();
item1.put("workorder_code", "240712002");
item1.put("material_name", "13.2正");
item1.put("plan_qty", "100");
item1.put("real_qty", "0");
item1.put("point_name", "连涂线01");
item1.put("workorder_status", "生产中");
today_work.add(item1);
}
//实时故障告警
JSONArray fault_alarm=new JSONArray();
fault_alarm=cockpitMapper.FaultTime("TBX");
//30日故障统计
JSONArray monthly_fault_statistics=new JSONArray();
monthly_fault_statistics=cockpitMapper.FaultTotal("TBX");
getTbxInfo.put("target_achievement",target_achievement);
getTbxInfo.put("today_work",today_work);
getTbxInfo.put("fault_alarm",fault_alarm);
getTbxInfo.put("monthly_fault_statistics",monthly_fault_statistics);
List<Map<String, Object>> fault_alarm = cockpitMapper.FaultTime("TBX");
faultAlarmDefault(fault_alarm, "LTX02");
//30日故障统计
JSONArray monthly_fault_statistics = cockpitMapper.FaultTotal("TBX");
monthlyFaultStatisticsDefault(monthly_fault_statistics, "LTX02");
//todo 近30日生产
// JSONArray monthly_produce_statistics = cockpitMapper.FaultTotal("TBX");
List<Map<String, Object>> monthly_produce_statistics = new ArrayList<>();
if (ObjectUtil.isEmpty(monthly_produce_statistics)) {
for (int i = 0; i < 30; i++) {
Map<String, Object> item1 = new HashMap<>();
item1.put("region_name", "LT");
item1.put("total_qty", "0");
item1.put("date", today.minusDays(i).format(formatter));
Map<String, Object> item2 = new HashMap<>();
item2.put("region_name", "PT");
item2.put("total_qty", "0");
item2.put("date", today.minusDays(i).format(formatter));
Map<String, Object> item3 = new HashMap<>();
item3.put("region_name", "total");
item3.put("total_qty", "0");
item3.put("date", today.minusDays(i).format(formatter));
monthly_produce_statistics.add(item1);
monthly_produce_statistics.add(item2);
monthly_produce_statistics.add(item3);
}
}
getTbxInfo.put("target_achievement", target_achievement);
getTbxInfo.put("today_work", today_work);
getTbxInfo.put("fault_alarm", fault_alarm);
getTbxInfo.put("monthly_fault_statistics", monthly_fault_statistics);
getTbxInfo.put("monthly_produce_statistics", monthly_produce_statistics);
return getTbxInfo;
}
@@ -185,23 +257,53 @@ public class CockpitServiceImpl implements CockpitService {
*/
@Override
public JSONObject getGhsInfo() {
JSONObject getGhsInfo=new JSONObject();
//固化汇总
JSONArray curing_summary=new JSONArray();
curing_summary=cockpitMapper.curingSummary();
JSONObject getGhsInfo = new JSONObject();
//固化汇总
JSONArray curing_summary = cockpitMapper.curingSummary();
//todo 近30天固化数据
List<Map<String, Object>> monthly_gh_qty = cockpitMapper.getGhsQty("30");
if (ObjectUtil.isEmpty(monthly_gh_qty)) {
for (int i = 0; i < 30; i++) {
Map<String, Object> item = new HashMap<>();
item.put("region_name", "GH");
item.put("total_qty", "0");
item.put("date", today.minusDays(i).format(formatter));
monthly_gh_qty.add(item);
}
}
//todo 近固化物料汇总
List<Map<String, Object>> gh_material_summary = new ArrayList<>();
if (ObjectUtil.isEmpty(gh_material_summary)) {
Map<String, Object> item1 = new HashMap<>();
item1.put("material_name", "1.9A正");
item1.put("material_spec", "正涂片极板1.9A/大片");
item1.put("qty", "2000");
item1.put("type", "入库");
Map<String, Object> item2 = new HashMap<>();
item2.put("material_name", "15A负");
item2.put("material_spec", "负涂片极板15A/大片");
item2.put("qty", "3000");
item2.put("type", "出库");
gh_material_summary.add(item1);
gh_material_summary.add(item2);
}
//实时故障告警
JSONArray fault_alarm=new JSONArray();
fault_alarm=cockpitMapper.FaultTime("GH");
//30日故障统计
JSONArray monthly_fault_statistics=new JSONArray();
monthly_fault_statistics=cockpitMapper.FaultTotal("GH");
getGhsInfo.put("curing_summary",curing_summary);
getGhsInfo.put("fault_alarm",fault_alarm);
getGhsInfo.put("monthly_fault_statistics",monthly_fault_statistics);
return getGhsInfo;
List<Map<String, Object>> fault_alarm = cockpitMapper.FaultTime("GH");
faultAlarmDefault(fault_alarm,"GHS02");
//30日故障统计
JSONArray monthly_fault_statistics = cockpitMapper.FaultTotal("GH");
monthlyFaultStatisticsDefault(monthly_fault_statistics, "GHS02");
getGhsInfo.put("curing_summary", curing_summary);
getGhsInfo.put("monthly_gh_qty", monthly_gh_qty);
getGhsInfo.put("gh_material_summary", gh_material_summary);
getGhsInfo.put("fault_alarm", fault_alarm);
getGhsInfo.put("monthly_fault_statistics", monthly_fault_statistics);
return getGhsInfo;
}
/**
* 暂存区
* @return
@@ -210,27 +312,86 @@ public class CockpitServiceImpl implements CockpitService {
public JSONObject getZcqInfo() {
JSONObject getZcqInfo = new JSONObject();
//暂存库
JSONObject temporary_storage = new JSONObject();
temporary_storage = cockpitMapper.temporaryStorage();
JSONObject temporary_storage = cockpitMapper.temporaryStorage();
//暂存区库存
JSONArray inventory = new JSONArray();
inventory=cockpitMapper.inventory();
JSONArray inventory =cockpitMapper.inventory();
//货位货位信息
JSONArray task_info=new JSONArray();
task_info=cockpitMapper.taskInfo();
JSONArray task_info=cockpitMapper.taskInfo();
getZcqInfo.put("temporary_storage",temporary_storage);
getZcqInfo.put("inventory",inventory);
getZcqInfo.put("task_info",task_info);
return getZcqInfo;
}
/**
* 获取搬运信息
*/
@Override
public JSONObject getHandlingInfo() {
JSONObject getHandlingInfo = new JSONObject();
//设备运行状态
JSONObject device_status = new JSONObject();
// //状态信息
// List<Map<String, Object>> agv_info = cockpitMapper.statusInfo();
// //状态信息
// List<Map<String, Object>> rgv_info = cockpitMapper.statusInfo();
// //状态信息
// List<Map<String, Object>> conveyor_info = cockpitMapper.statusInfo();
List<Map<String, Object>> agv_info = new ArrayList<>();
List<Map<String, Object>> rgv_info = new ArrayList<>();
List<Map<String, Object>> conveyor_info = new ArrayList<>();
if (ObjectUtil.isEmpty(agv_info) || ObjectUtil.isEmpty(rgv_info)) {
Map<String, Object> item1 = new HashMap<>();
item1.put("item_name", "0");
item1.put("item_qty", "5");
Map<String, Object> item2 = new HashMap<>();
item2.put("item_name", "1");
item2.put("item_qty", "8");
if (ObjectUtil.isEmpty(agv_info)) {
agv_info.add(item1);
agv_info.add(item2);
}
if (ObjectUtil.isEmpty(rgv_info)) {
rgv_info.add(item1);
rgv_info.add(item2);
}
}
if (ObjectUtil.isEmpty(conveyor_info)) {
Map<String, Object> item1 = new HashMap<>();
item1.put("item_name", "1");
item1.put("item_qty", "10");
Map<String, Object> item2 = new HashMap<>();
item2.put("item_name", "2");
item2.put("item_qty", "8");
Map<String, Object> item3 = new HashMap<>();
item3.put("item_name", "3");
item3.put("item_qty", "5");
conveyor_info.add(item1);
conveyor_info.add(item2);
conveyor_info.add(item3);
}
device_status.put("status_info", agv_info);
device_status.put("status_info", rgv_info);
device_status.put("status_info", conveyor_info);
//实时故障告警
List<Map<String, Object>> fault_alarm = cockpitMapper.faultAlarm();
faultAlarmDefault(fault_alarm, "RGV02");
//近30日故障统计
//JSONArray monthly_fault_statistics = cockpitMapper.monthlyFaultStatistics();
JSONArray monthly_fault_statistics = new JSONArray();
monthlyFaultStatisticsDefault(monthly_fault_statistics, "RGV01");
getHandlingInfo.put("device_status", device_status);
getHandlingInfo.put("fault_alarm", fault_alarm);
getHandlingInfo.put("monthly_fault_statistics", monthly_fault_statistics);
return getHandlingInfo;
}
/**
* 设备ui
*/
@Override
public JSONObject equipmentInfo(String deviceCode) {
JSONObject res = new JSONObject();
SchBasePoint point = pointService.getById(deviceCode);
List<SchBasePoint> points;
@@ -408,10 +569,10 @@ public class CockpitServiceImpl implements CockpitService {
//
JSONArray RGV = (JSONArray) redisUtils.get("RGV");
JSONArray site = (JSONArray) redisUtils.get("site");
// array.add(baoshijian);
// array.add(guhuashi);
// array.add(AGV);
// array.add(RGV);
// array.add(baoshijian);
// array.add(guhuashi);
// array.add(AGV);
// array.add(RGV);
// 固化室详情
JSONArray ghsInteriorList = cockpitMapper.getGHSInteriorList();
@@ -685,7 +846,24 @@ public class CockpitServiceImpl implements CockpitService {
// 返回包含故障数和故障率的对象
return new DeviceFaultStatistics(totalFaults, faultRate);
}
private static void faultAlarmDefault( List<Map<String, Object>> fault_alarm,String device_name) {
if (ObjectUtil.isEmpty(fault_alarm)) {
Map<String, Object> item1 = new HashMap<>();
item1.put("device_name", device_name);
item1.put("fault_cause", "过载");
item1.put("alarm_time", localDateTimeFormatyMdHms(LocalDateTime.now()));
fault_alarm.add(item1);
}
}
private static void monthlyFaultStatisticsDefault(JSONArray monthly_fault_statistics, String deviceCode) {
if (ObjectUtil.isEmpty(monthly_fault_statistics)) {
JSONObject item = new JSONObject();
item.put("device_code", deviceCode);
item.put("alarm_qty", "1");
monthly_fault_statistics.add(item);
}
}
/**
* 定时统计近七天数据

View File

@@ -13,6 +13,7 @@ import org.nl.wms.cockpit.service.dao.zcq.TaskInfo;
import org.nl.wms.cockpit.service.dao.zcq.ZcqInfo;
import java.util.List;
import java.util.Map;
/**
* @Author: lyd
@@ -82,15 +83,15 @@ public interface CockpitMapper {
//获取生产中的工单数据
JSONObject getProductTarget();
//获取暂存库库存信息
JSONArray getZcMaterialmsg();
List<Map<String, Object>> getZcMaterialmsg();
//库位使用占比
String percent();
//获取今日创建的每一条工单的信息
JSONArray getTdWorkmsg();
List<Map<String, Object>> getTdWorkmsg();
//7天涂板实际生产
JSONArray getTxQty();
List<Map<String, Object>> getTxQty(String days);
//7天固化室实际生产
JSONArray getGhsQty();
List<Map<String, Object>> getGhsQty(String days);
//查询所传设备当前生产的工单信息
JSONObject getDeviceWorker(String devicecode);
//根据所传的物料id获取物料名称
@@ -108,7 +109,7 @@ public interface CockpitMapper {
//今日涂板任务
JSONArray todayTbTask();
//实时故障告警
JSONArray FaultTime(String region_code);
List<Map<String, Object>> FaultTime(String region_code);
//进30日故障统计
JSONArray FaultTotal(String region_code);
//固化汇总
@@ -118,15 +119,15 @@ public interface CockpitMapper {
//暂存区库存
JSONArray inventory();
//状态信息
JSONArray statusInfo();
List<Map<String, Object>> statusInfo();
//固化架信息
JSONArray storageInfo();
List<Map<String, Object>> storageInfo();
//实时故障告警
JSONArray faultAlarm();
List<Map<String, Object>> faultAlarm();
//进30日故障统计
JSONArray monthlyFaultStatistics();
//设备报警前十
JSONArray ghStatistics();
List<Map<String, Object>> ghStatistics();
//货位货位信息
JSONArray taskInfo();
}

View File

@@ -219,14 +219,17 @@
WHERE failure_time LIKE CONCAT(CURDATE(), '%');
</select>
<select id="getProductTarget" resultType="com.alibaba.fastjson.JSONObject">
SELECT COUNT(*) AS await_curing,
SUM( plan_qty ) AS expected_production,
SUM( real_qty ) AS actual_production,
(SUM( real_qty )/SUM( plan_qty ))AS percentage
FROM pdm_bd_workorder
WHERE workorder_status=3
SELECT
COUNT(*) AS await_curing,
SUM(plan_qty) AS expected_production,
SUM(real_qty) AS actual_production,
ROUND(SUM(real_qty) * 1.0 / NULLIF(SUM(plan_qty), 0)) AS percentage
FROM
pdm_bd_workorder
WHERE
workorder_status = 3;
</select>
<select id="getZcMaterialmsg" resultType="com.alibaba.fastjson.JSONObject">
<select id="getZcMaterialmsg" resultType="java.util.HashMap">
SELECT
m.material_name AS item_name,
m.standard_qty AS item_qty
@@ -236,7 +239,7 @@
WHERE p.region_code = 'ZC'
AND p.vehicle_code IS NOT NULL
</select>
<select id="getTdWorkmsg" resultType="com.alibaba.fastjson.JSONObject">
<select id="getTdWorkmsg" resultType="java.util.HashMap">
SELECT
w.workorder_code,
m.material_name AS material_name,
@@ -248,33 +251,35 @@
LEFT JOIN md_base_material m ON m.material_id = w.material_id
WHERE DATE(w.update_time) = CURDATE()
</select>
<select id="getTxQty" resultType="com.alibaba.fastjson.JSONObject">
SELECT
DATE_FORMAT(create_time,'%Y-%m-%d') AS date,
SUM(real_qty) AS total_qty,
'TBX' AS region_name
FROM
pdm_bd_workorder
WHERE
create_time >= CURDATE() - INTERVAL 7 DAY
GROUP BY
DATE_FORMAT(create_time,'%Y-%m-%d')
ORDER BY
date;
<select id="getTxQty" resultType="java.util.HashMap">
SELECT
DATE_FORMAT(create_time,'%Y-%m-%d') AS date,
SUM(real_qty) AS total_qty,
'TBX' AS region_name
FROM
pdm_bd_workorder
WHERE
create_time >= CURDATE() - INTERVAL #{days} DAY
AND region_code='TBX'
GROUP BY
DATE_FORMAT(create_time,'%Y-%m-%d')
ORDER BY
date;
</select>
<select id="getGhsQty" resultType="com.alibaba.fastjson.JSONObject">
SELECT
DATE_FORMAT(create_time,'%Y-%m-%d') AS date,
SUM(material_qty) AS total_qty,
'GHS' AS region_name
FROM
sch_base_vehiclematerialgroup
WHERE
create_time >= CURDATE() - INTERVAL 7 DAY
GROUP BY
DATE_FORMAT(create_time,'%Y-%m-%d')
ORDER BY
date;
<select id="getGhsQty" resultType="java.util.HashMap">
SELECT
DATE_FORMAT(create_time,'%Y-%m-%d') AS date,
SUM(material_qty) AS total_qty,
'GHS' AS region_name
FROM
sch_base_vehiclematerialgroup
WHERE
create_time >= CURDATE() - INTERVAL #{days} DAY
AND region_code='GH'
GROUP BY
DATE_FORMAT(create_time,'%Y-%m-%d')
ORDER BY
date;
</select>
<select id="getDeviceWorker" resultType="com.alibaba.fastjson.JSONObject">
SELECT *
@@ -333,26 +338,28 @@
DATE_FORMAT(w.create_time, '%Y-%m-%d');
</select>
<select id="ltProduction" resultType="com.alibaba.fastjson.JSONObject">
SELECT
SUM(w.plan_qty) AS plan_production,
SUM(w.real_qty) AS actual_production,
SUM(w.real_qty)/SUM(w.plan_qty)*100 AS percentage
FROM
`pdm_bd_workorder` w
WHERE
w.workorder_status=3
And DATE(w.create_time)=CURDATE()
And point_code LIKE 'LT%'
SELECT
SUM(w.plan_qty) AS plan_production,
SUM(w.real_qty) AS actual_production,
ROUND(SUM(w.real_qty) / SUM(w.plan_qty) * 100) AS percentage
FROM
`pdm_bd_workorder` w
WHERE
w.workorder_status = 3
AND DATE(w.create_time) = CURDATE()
AND point_code LIKE 'LT%';
</select>
<select id="ptProduction" resultType="com.alibaba.fastjson.JSONObject">
SELECT
SUM(w.plan_qty) AS plan_production
FROM
`pdm_bd_workorder` w
WHERE
w.workorder_status=3
And DATE(w.create_time)=CURDATE()
And point_code LIKE 'PT%'
SELECT
SUM(w.plan_qty) AS plan_production,
SUM(w.real_qty) AS actual_production,
ROUND(SUM(w.real_qty) / SUM(w.plan_qty) * 100) AS percentage
FROM
`pdm_bd_workorder` w
WHERE
w.workorder_status=3
And DATE(w.create_time)=CURDATE()
And point_code LIKE 'PT%'
</select>
<select id="todayTbTask" resultType="com.alibaba.fastjson.JSONObject">
SELECT
@@ -369,7 +376,7 @@
w.workorder_status=3
And DATE(w.create_time)=CURDATE()
</select>
<select id="FaultTime" resultType="com.alibaba.fastjson.JSONObject">
<select id="FaultTime" resultType="java.util.HashMap">
SELECT
d1.device_code,
d1.failure_info AS fault_cause,
@@ -387,57 +394,72 @@
And d1.current_status=1
</select>
<select id="FaultTotal" resultType="com.alibaba.fastjson.JSONObject">
SELECT
device_code,
COUNT(*) AS alarm_qty
FROM
das_device_fault
WHERE
region_code = #{region_code}
And current_status=1
GROUP BY
device_code;
SELECT
device_code,
COUNT(*) AS alarm_qty
FROM
das_device_fault
WHERE
region_code = #{region_code}
And current_status=1
GROUP BY
device_code;
</select>
<select id="curingSummary" resultType="com.alibaba.fastjson.JSONObject">
SELECT
p.point_status,
SELECT
CASE
WHEN p.point_status = 1 THEN '待机'
WHEN p.point_status = 2 THEN '工艺进行中'
WHEN p.point_status = 3 THEN '进板中'
WHEN p.point_status = 4 THEN '出板中'
WHEN p.point_status = 5 THEN '故障'
END AS item_name,
COUNT(*) AS item_qty
FROM `sch_base_point` p
WHERE p.region_code = 'GH'
AND p.point_type =1
GROUP BY
point_status;
FROM
`sch_base_point` p
WHERE
p.region_code = 'GH'
AND p.point_type = 1
GROUP BY
p.point_status;
</select>
<select id="temporaryStorage" resultType="com.alibaba.fastjson.JSONObject">
SELECT
SUM(CASE WHEN region_code = 'ZC' THEN 1 ELSE 0 END) AS total,
SUM(CASE WHEN point_status = 2 THEN 1 ELSE 0 END) AS free,
SUM(CASE WHEN point_status = 2 THEN 1 ELSE 0 END) * 1.0 /
NULLIF(SUM(CASE WHEN region_code = 'ZC' THEN 1 ELSE 0 END), 0)*100 AS percentage
FROM
sch_base_point
WHERE
region_code = 'ZC';
SELECT
SUM( CASE WHEN region_code = 'ZC' THEN 1 ELSE 0 END ) AS total,
SUM( CASE WHEN point_status = 2 THEN 1 ELSE 0 END ) AS free,
SUM( CASE WHEN region_code = 'KJW' AND point_status = 0 THEN 1 ELSE 0 END ) AS empty_num,
ROUND( SUM( CASE WHEN point_status = 2 THEN 1 ELSE 0 END ) * 1.0 / NULLIF( SUM( CASE WHEN region_code = 'ZC' THEN 1 ELSE 0 END ), 0 ) * 100, 0)
AS percentage
FROM
sch_base_point
WHERE
region_code = 'ZC'
OR region_code = 'KJW';
</select>
<select id="percent" resultType="java.lang.String">
SELECT
SUM(CASE WHEN point_status = 2 THEN 1 ELSE 0 END) * 1.0 /
NULLIF(SUM(CASE WHEN region_code = 'ZC' THEN 1 ELSE 0 END), 0)*100 AS percentage
FROM
sch_base_point
WHERE
region_code = 'ZC';
SELECT
ROUND(SUM(CASE WHEN point_status = 2 THEN 1 ELSE 0 END) * 1.0 /
NULLIF(SUM(CASE WHEN region_code = 'ZC' THEN 1 ELSE 0 END), 0) * 100, 0) AS percentage
FROM
sch_base_point
WHERE
region_code = 'ZC';
</select>
<select id="statusInfo" resultType="com.alibaba.fastjson.JSONObject">
SELECT
p.is_used AS item_name,
COUNT(*) AS item_qty
FROM
`sch_base_point` p
GROUP BY
p.is_used;
<select id="statusInfo" resultType="java.util.HashMap">
SELECT
CASE
WHEN p.is_used = true THEN 1
ELSE 0
END AS item_name,
COUNT(*) AS item_qty
FROM
`sch_base_point` p
GROUP BY
item_name;
</select>
<select id="storageInfo" resultType="com.alibaba.fastjson.JSONObject">
<select id="storageInfo" resultType="java.util.HashMap">
SELECT
p.point_status AS item_name,
COUNT(*) AS item_qty
@@ -448,48 +470,72 @@ FROM
GROUP BY
p.point_status;
</select>
<select id="faultAlarm" resultType="com.alibaba.fastjson.JSONObject">
WITH RankedFaults AS (
SELECT
device_code AS device_name,
failure_info AS fault_cause,
failure_time AS alarm_time,
ROW_NUMBER() OVER (PARTITION BY device_code ORDER BY failure_time DESC) AS rn
FROM das_device_fault
WHERE current_status = 1
)
SELECT
device_name,
fault_cause,
alarm_time
FROM RankedFaults
WHERE rn = 1;
<select id="faultAlarm1" resultType="java.util.HashMap">
WITH RankedFaults AS (
SELECT
device_code AS device_name,
failure_info AS fault_cause,
failure_time AS alarm_time,
ROW_NUMBER() OVER (PARTITION BY device_code ORDER BY failure_time DESC) AS rn
FROM das_device_fault
WHERE current_status = 1
)
SELECT
device_name,
fault_cause,
alarm_time
FROM RankedFaults
WHERE rn = 1;
</select>
<select id="faultAlarm" resultType="java.util.HashMap">
SELECT
d.device_code AS device_name,
d.failure_info AS fault_cause,
d.failure_time AS alarm_time
FROM
das_device_fault d
INNER JOIN (
SELECT
device_code,
MAX(failure_time) AS max_time
FROM
das_device_fault
WHERE
current_status = 1
GROUP BY
device_code
) m ON d.device_code = m.device_code
AND d.failure_time = m.max_time
WHERE
d.current_status = 1;
</select>
<select id="monthlyFaultStatistics" resultType="com.alibaba.fastjson.JSONObject">
SELECT
region_code AS region_name,
COUNT(*) AS alarm_qty
FROM
das_device_fault
GROUP BY
region_code;
SELECT
region_code AS region_name,
COUNT(*) AS alarm_qty
FROM
das_device_fault
GROUP BY
region_code;
</select>
<select id="ghStatistics" resultType="com.alibaba.fastjson.JSONObject">
SELECT
device_name,
error_number
FROM (
SELECT
device_code AS device_name,
COUNT(*) AS error_number
FROM
das_device_fault
GROUP BY
device_code
) AS device_errors
ORDER BY
error_number DESC
LIMIT 10;
<select id="ghStatistics" resultType="java.util.HashMap">
SELECT
device_name,
error_number
FROM (
SELECT
device_code AS device_name,
COUNT(*) AS error_number
FROM
das_device_fault
GROUP BY
device_code
) AS device_errors
ORDER BY
error_number DESC
LIMIT 10;
</select>
<select id="inventory" resultType="com.alibaba.fastjson.JSONObject">
<![CDATA[
@@ -514,6 +560,7 @@ LIMIT 10;
SELECT
p.point_code AS device_code,
m.material_name AS material_name,
m.material_spec AS material_spec,
p.vehicle_type,
p.vehicle_code,
m.standard_qty AS qty,

View File

@@ -6,7 +6,7 @@ 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:3307}/${DB_NAME: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}