设备大屏

This commit is contained in:
2022-09-09 16:11:20 +08:00
parent f5600766d1
commit 5c3197722b
6 changed files with 1013 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
package org.nl.wms.sb.bigscreen.rest;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.annotation.Log;
import org.nl.wms.sb.bigscreen.service.DeviceBigScreenService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor
@Api(tags = "设备管理综合查询")
@RequestMapping("/api/deviceBigScreen")
@Slf4j
public class DeviceBigScreenController {
private final DeviceBigScreenService deviceBigScreenService;
@PostMapping("/getDeviceTime")
@Log("设备每日开机时长")
@ApiOperation("设备每日开机时长")
public ResponseEntity<Object> getDeviceTime(){
return new ResponseEntity<>(deviceBigScreenService.getDeviceTime(),HttpStatus.OK);
}
@PostMapping("/getDeviceNumber")
@Log("设备数量")
@ApiOperation("设备数量")
public ResponseEntity<Object> getDeviceNumber(){
return new ResponseEntity<>(deviceBigScreenService.getDeviceNumber(),HttpStatus.OK);
}
@PostMapping("/getDeviceFault")
@Log("年故障类别")
@ApiOperation("年故障类别")
public ResponseEntity<Object> getDeviceFault(){
return new ResponseEntity<>(deviceBigScreenService.getDeviceFault(),HttpStatus.OK);
}
@PostMapping("/getDeviceRunStatus")
@Log("设备运行状态")
@ApiOperation("设备运行状态")
public ResponseEntity<Object> getDeviceRunStatus(){
return new ResponseEntity<>(deviceBigScreenService.getDeviceRunStatus(),HttpStatus.OK);
}
@PostMapping("/getDeviceYearStatus")
@Log("设备年计划保养状态")
@ApiOperation("设备年计划保养状态")
public ResponseEntity<Object> getDeviceYearStatus(){
return new ResponseEntity<>(deviceBigScreenService.getDeviceYearStatus(),HttpStatus.OK);
}
@PostMapping("/getDeviceYearMainPlan")
@Log("设备年保养计划监控")
@ApiOperation("设备年保养计划监控")
public ResponseEntity<Object> getDeviceYearMainPlan(){
return new ResponseEntity<>(deviceBigScreenService.getDeviceYearMainPlan(),HttpStatus.OK);
}
@PostMapping("/getDeviceGroupStatus")
@Log("近30天班组情况")
@ApiOperation("近30天班组情况")
public ResponseEntity<Object> getDeviceGroupStatus(){
return new ResponseEntity<>(deviceBigScreenService.getDeviceGroupStatus(),HttpStatus.OK);
}
}

View File

@@ -0,0 +1,48 @@
package org.nl.wms.sb.bigscreen.service;
import com.alibaba.fastjson.JSONObject;
public interface DeviceBigScreenService {
/**
* 设备每日开机时长
* @return JSONObject
*/
JSONObject getDeviceTime();
/**
* 设备数量
* @return JSONObject
*/
JSONObject getDeviceNumber();
/**
* 年故障类别
* @return JSONObject
*/
JSONObject getDeviceFault();
/**
* 设备运行状态
* @return JSONObject
*/
JSONObject getDeviceRunStatus();
/**
* 设备年计划保养状态
* @return JSONObject
*/
JSONObject getDeviceYearStatus();
/**
* 设备年保养计划监控
* @return JSONObject
*/
JSONObject getDeviceYearMainPlan();
/**
* 近30天班组情况
* @return JSONObject
*/
JSONObject getDeviceGroupStatus();
}

View File

@@ -0,0 +1,469 @@
package org.nl.wms.sb.bigscreen.service.impl;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.wms.sb.bigscreen.service.DeviceBigScreenService;
import org.nl.wql.WQL;
import org.nl.wql.core.bean.WQLObject;
import org.springframework.stereotype.Service;
import java.util.Date;
@Service
@RequiredArgsConstructor
@Slf4j
public class DeviceBigScreenServiceImpl implements DeviceBigScreenService {
@Override
public JSONObject getDeviceTime() {
/* 查询设备运行记录表
* 1.获取当前日期 - 前14天的日期
* 2.根据日期查询每个部门当前日期的总时长
*/
JSONObject map = new JSONObject();
JSONObject resultJson = new JSONObject();
JSONObject resultData = new JSONObject();
JSONArray resultArr = new JSONArray();
// 1.1获取当前日期 - 前14天的日期
String now = DateUtil.now();
for (int i = 0; i < 14; i++) {
JSONObject json = new JSONObject();
String run_date = DateUtil.offsetDay(DateUtil.parse(now), -i).toString().substring(0, 10);
// 棒料事业部H900000 矿用合金事业部H800000 型材事业部H400000 混合料厂H1300000 武汉运营保障部H1200200 精密零件事业部H1000000
map.put("flag", "1");
map.put("run_date", run_date);
map.put("dept_code", "H900000");
// 1.2查询棒料事业部总时长
JSONObject json_bl = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParamMap(map).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(json_bl)) {
json.put("dept_name_bl", NumberUtil.round(NumberUtil.div(json_bl.getString("run_times"), "60"), 1).toString());
} else {
json.put("dept_name_bl", "0");
}
// 1.3查询矿用合金事业部总时长
map.put("dept_code", "H800000");
JSONObject json_ky = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParamMap(map).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(json_ky)) {
json.put("dept_name_ky", NumberUtil.round(NumberUtil.div(json_ky.getString("run_times"), "60"), 1).toString());
} else {
json.put("dept_name_ky", "0");
}
// 1.4查询型材事业部总时长
map.put("dept_code", "H400000");
JSONObject json_xc = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParamMap(map).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(json_xc)) {
json.put("dept_name_xc", NumberUtil.round(NumberUtil.div(json_xc.getString("run_times"), "60"), 1).toString());
} else {
json.put("dept_name_xc", "0");
}
// 1.5查询混合料厂总时长
map.put("dept_code", "H1300000");
JSONObject json_hh = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParamMap(map).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(json_hh)) {
json.put("dept_name_hh", NumberUtil.round(NumberUtil.div(json_hh.getString("run_times"), "60"), 1).toString());
} else {
json.put("dept_name_hh", "0");
}
// 1.6查询武汉运营保障部总时长
map.put("dept_code", "H1200200");
JSONObject json_wh = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParamMap(map).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(json_wh)) {
json.put("dept_name_wh", NumberUtil.round(NumberUtil.div(json_wh.getString("run_times"), "60"), 1).toString());
} else {
json.put("dept_name_wh", "0");
}
// 1.7查询精密零件事业部总时长
map.put("dept_code", "H1000000");
JSONObject json_jm = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParamMap(map).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(json_jm)) {
json.put("dept_name_jm", NumberUtil.round(NumberUtil.div(json_jm.getString("run_times"), "60"), 1).toString());
} else {
json.put("dept_name_jm", "0");
}
// 当前日期
json.put("device_date", run_date);
resultArr.add(json);
}
resultData.put("device_time_arr", resultArr);
resultJson.put("srb", resultData);
resultJson.put("code", "1");
resultJson.put("desc", "查询成功");
return resultJson;
}
@Override
public JSONObject getDeviceNumber() {
/* 查询设备档案表
* 1.获取总设备台数和在用台数
* 2.获取6个部门各有多少台数
*/
WQLObject fileTab = WQLObject.getWQLObject("EM_BI_EquipmentFile"); // 设备档案表
JSONObject resultJson = new JSONObject();
JSONObject resultData = new JSONObject();
JSONArray resultArr = new JSONArray();
// 1.获取总设备台数:未报废的、未删除
JSONArray allArr = fileTab.query("status NOT IN ('90','91') and is_delete ='0'").getResultJSONArray(0);
resultData.put("device_all_num", String.valueOf(allArr.size()));
// 2.获取在用台数
JSONArray useArr = fileTab.query("status = '10' and is_delete ='0'").getResultJSONArray(0);
resultData.put("device_use_num", String.valueOf(useArr.size()));
// 3.1获取各个部门的台数:
// 棒料事业部H900000 矿用合金事业部H800000 型材事业部H400000 混合料厂H1300000 武汉运营保障部H1200200 精密零件事业部H1000000
JSONObject map = new JSONObject();
map.put("flag", "2");
// 3.2 棒料事业部
map.put("dept_code", "H900000");
JSONObject num_bl = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParamMap(map).process().uniqueResult(0);
JSONObject json_bl = new JSONObject();
json_bl.put("dept_name", "棒料事业部");
json_bl.put("device_num", num_bl.getString("num"));
resultArr.add(json_bl);
// 3.3 矿用合金事业部
map.put("dept_code", "H800000");
JSONObject num_ky = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParamMap(map).process().uniqueResult(0);
JSONObject json_ky = new JSONObject();
json_ky.put("dept_name", "矿用合金事业部");
json_ky.put("device_num", num_ky.getString("num"));
resultArr.add(json_ky);
// 3.4 型材事业部
map.put("dept_code", "H400000");
JSONObject num_xc = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParamMap(map).process().uniqueResult(0);
JSONObject json_xc = new JSONObject();
json_xc.put("dept_name", "型材事业部");
json_xc.put("device_num", num_xc.getString("num"));
resultArr.add(json_xc);
// 3.5 混合料厂
map.put("dept_code", "H1300000");
JSONObject num_hh = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParamMap(map).process().uniqueResult(0);
JSONObject json_hh = new JSONObject();
json_hh.put("dept_name", "混合料厂");
json_hh.put("device_num", num_hh.getString("num"));
resultArr.add(json_hh);
// 3.6 武汉运营保障部
map.put("dept_code", "H1200200");
JSONObject num_wh = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParamMap(map).process().uniqueResult(0);
JSONObject json_wh = new JSONObject();
json_wh.put("dept_name", "武汉运营保障部");
json_wh.put("device_num", num_wh.getString("num"));
resultArr.add(json_wh);
// 3.7 精密零件事业部
map.put("dept_code", "H1000000");
JSONObject num_jm = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParamMap(map).process().uniqueResult(0);
JSONObject json_jm = new JSONObject();
json_jm.put("dept_name", "精密零件事业部");
json_jm.put("device_num", num_jm.getString("num"));
resultArr.add(json_jm);
resultData.put("device_all_arr", resultArr);
resultJson.put("srb", resultData);
resultJson.put("code", "1");
resultJson.put("desc", "查询成功");
return resultJson;
}
@Override
public JSONObject getDeviceFault() {
/* 查询报修单
* 1.故障前10且未删除并已通过的报修单
*/
JSONObject resultJson = new JSONObject();
JSONObject resultData = new JSONObject();
JSONArray arr = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParam("flag", "3").process().getResultJSONArray(0);
resultData.put("device_fault_arr", arr);
resultJson.put("srb", resultData);
resultJson.put("code", "1");
resultJson.put("desc", "查询成功");
return resultJson;
}
@Override
public JSONObject getDeviceRunStatus() {
/*
* 查询档案表
* 1.查询档案表中的设备状态台数
*/
JSONObject resultJson = new JSONObject();
JSONObject resultData = new JSONObject();
JSONArray resultArr = new JSONArray();
// 1.根据部门分组
JSONArray deptArr = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParam("flag", "4").process().getResultJSONArray(0);
for (int i = 0; i < deptArr.size(); i++) {
JSONObject json = deptArr.getJSONObject(i);
JSONObject jsonObject = new JSONObject();
jsonObject.put("dept_name", json.getString("name"));
// 2.根据部门找到对应的状态台数
JSONObject map = new JSONObject();
map.put("flag", "5");
map.put("dept_code", json.getString("code"));
// 正常台数
map.put("status", "10");
JSONObject normal_num = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParamMap(map).process().uniqueResult(0);
jsonObject.put("normal_num", normal_num.getString("num"));
// 故障台数
map.put("status", "20");
JSONObject fault_num = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParamMap(map).process().uniqueResult(0);
jsonObject.put("fault_num", fault_num.getString("num"));
// 委外台数
map.put("status", "30");
JSONObject out_num = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParamMap(map).process().uniqueResult(0);
jsonObject.put("out_num", out_num.getString("num"));
// 保养台数
map.put("status", "40");
JSONObject main_num = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParamMap(map).process().uniqueResult(0);
jsonObject.put("main_num", main_num.getString("num"));
resultArr.add(jsonObject);
}
resultData.put("device_run_arr", resultArr);
resultJson.put("srb", resultData);
resultJson.put("code", "1");
resultJson.put("desc", "查询成功");
return resultJson;
}
@Override
public JSONObject getDeviceYearStatus() {
/*
* 查询保养计划单
* 1.查询保养计划为年计划的保养计划
* 2.完成率:已保养台数/需保养台数
*/
JSONObject resultJson = new JSONObject();
JSONObject resultData = new JSONObject();
JSONArray resultArr = new JSONArray();
// 1.根据部门分组
JSONArray deptArr = WQL.getWO("EM_DEVICEBIGSCREEN_02").addParam("flag", "1").process().getResultJSONArray(0);
for (int i = 0; i < deptArr.size(); i++) {
JSONObject json = deptArr.getJSONObject(i);
JSONObject jsonObject = new JSONObject();
jsonObject.put("dept_name", json.getString("name"));
// 2.根据部门code查询对应的保养台数未保养台数等
JSONObject map = new JSONObject();
map.put("flag", "2");
map.put("dept_code", json.getString("code"));
// 需保养台数: 开始日期和计划日期都为空
JSONObject need_num = WQL.getWO("EM_DEVICEBIGSCREEN_02").addParamMap(map).process().uniqueResult(0);
jsonObject.put("need_num", need_num.getString("num"));
// 已保养台数:开始日期和计划日期都不为空
map.put("flag", "3");
JSONObject end_num = WQL.getWO("EM_DEVICEBIGSCREEN_02").addParamMap(map).process().uniqueResult(0);
jsonObject.put("end_num", end_num.getString("num"));
// 在保养台数:开始日期不能为空,结束日期为空
map.put("flag", "4");
JSONObject begin_num = WQL.getWO("EM_DEVICEBIGSCREEN_02").addParamMap(map).process().uniqueResult(0);
jsonObject.put("begin_num", begin_num.getString("num"));
// 未保养台数 = 需保养台数
jsonObject.put("not_num", jsonObject.getString("need_num"));
// 完成率:已保养台数/需保养台数
String div = NumberUtil.div(jsonObject.getShort("end_num"), jsonObject.getShort("need_num")).toString();
jsonObject.put("confirm_rate", NumberUtil.round(NumberUtil.mul(div, "100"), 2));
resultArr.add(jsonObject);
}
resultData.put("device_year_arr", resultArr);
resultJson.put("srb", resultData);
resultJson.put("code", "1");
resultJson.put("desc", "查询成功");
return resultJson;
}
@Override
public JSONObject getDeviceYearMainPlan() {
/*
* 查询保养单明细
*/
JSONObject resultJson = new JSONObject();
JSONObject resultData = new JSONObject();
JSONArray arr = WQL.getWO("EM_DEVICEBIGSCREEN_01").addParam("flag", "7").process().getResultJSONArray(0);
for (int i = 0; i < arr.size(); i++) {
JSONObject json = arr.getJSONObject(i);
// 保养倒计时: 计划日期 - 当前日期
Date date1 = DateUtil.parse(DateUtil.today()); // 当前日期
Date date2 = DateUtil.parse(json.getString("plan_time")); // 计划日期
long betweenDay = DateUtil.between(date1, date2, DateUnit.HOUR, false);
json.put("main_time", String.valueOf(betweenDay));
// 延期时间: 计划日期 - 实际结束时间 为负数则为延期
String real_end_date = json.getString("real_end_date");
if (ObjectUtil.isNotEmpty(real_end_date)) {
Date date3 = DateUtil.parse(real_end_date); // 实际结束时间
long betweenDay2 = DateUtil.between(date3, date2, DateUnit.DAY, false);
if (betweenDay2 < 0) {
json.put("putoff_time", String.valueOf(betweenDay2)+ "");
json.put("remark", "延期");
}
}
}
resultData.put("device_year_arr", arr);
resultJson.put("srb", resultData);
resultJson.put("code", "1");
resultJson.put("desc", "查询成功");
return resultJson;
}
@Override
public JSONObject getDeviceGroupStatus() {
/*
* 查询档案表
* 1.根据使用班组进行分组
* 2.查询每个班组有多少台设备(未删除)
* 3.MTBF运行时间/故障次数(运行时间查运行记录表,故障次数查报修单)备注:此班组的所有设备
* 4.MTTR故障时间/故障次数(故障时间查运行记录表) 备注:此班组的所有设备
* 5.OEE
* (生产时间-准备时间-故障时间-工装调整时间)/(生产时间-准备时间-工装调整时间) *
* 单个产品生产时间*生产总量/
* (生产时间-准备时间-故障时间-工装调整时间)*
* (生产总量-不合格数)/生产总量
* 备注:此班组的所有设备;单个产品生产时间:设备档案表取此设备理论节拍
* 6.总维修时间:报修完成时间-报修时间(都查报修单) 备注:此班组的所有设备
*/
JSONObject resultJson = new JSONObject();
JSONObject resultData = new JSONObject();
JSONArray resultArr = new JSONArray();
// 1.根据使用班组进行分组
JSONArray useArr = WQL.getWO("EM_DEVICEBIGSCREEN_03").addParam("flag", "1").process().getResultJSONArray(0);
// 2.查询每个班组有多少台设备
for (int i = 0; i < useArr.size(); i++) {
JSONObject jsonUse = useArr.getJSONObject(i);
JSONObject json = new JSONObject();
json.put("group_name", jsonUse.getString("name"));
JSONObject map = new JSONObject();
map.put("flag", "2");
map.put("dept_code", jsonUse.getString("code"));
// 每个班组中的所有设备
JSONArray deviceArr = WQL.getWO("EM_DEVICEBIGSCREEN_03").addParamMap(map).process().getResultJSONArray(0);
// 3.查询每台设备近三十天的运行情况
String begin_time = DateUtil.offsetDay(DateUtil.parse(DateUtil.now()), -30).toString().substring(0, 10);
String end_time = DateUtil.today();
String run_time_all = "0"; // 所有设备总运行时间
String error_num_all = "0"; // 所有设备总故障次数
String error_time_all = "0"; // 所有设备总故障时间
String oee_all = "0"; // 所有设备总oee
String device_all_time = "0"; // 所有设备的维修时间
for (int j = 0; j < deviceArr.size(); j++) {
JSONObject jsonDevice = deviceArr.getJSONObject(j);
map.put("flag","3");
map.put("begin_time",begin_time);
map.put("end_time",end_time);
map.put("devicerecord_id",jsonDevice.getString("devicerecord_id"));
// 查询单台30天中平均每天的运行指标
JSONObject jsonRun = WQL.getWO("EM_DEVICEBIGSCREEN_03").addParamMap(map).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonRun)) {
run_time_all = NumberUtil.add(run_time_all,jsonRun.getString("run_times")).toString();
error_time_all = NumberUtil.add(error_time_all,jsonRun.getString("error_times")).toString();
oee_all = NumberUtil.add(oee_all,jsonRun.getString("oee_value")).toString();
}
// 查询单台30天当中的故障次数
map.put("flag","4");
JSONObject jsonErrorNum = WQL.getWO("EM_DEVICEBIGSCREEN_03").addParamMap(map).process().uniqueResult(0);
error_num_all = NumberUtil.add(error_num_all,jsonErrorNum.getString("num")).toString();
map.put("flag","5");
// 查询单台30天当中的报修单
String one_all_time = "0"; // 一台设备30天的维修时间
JSONArray jsonReArr = WQL.getWO("EM_DEVICEBIGSCREEN_03").addParamMap(map).process().getResultJSONArray(0);
for (int k = 0; k < jsonReArr.size(); k++) {
JSONObject jsonObject = jsonReArr.getJSONObject(k);
Date date_finish_time = DateUtil.parse(jsonObject.getString("finish_time")); // 报修完成时间
Date date_create_time = DateUtil.parse(jsonObject.getString("create_time")); // 报修时间
// 一台设备一天的维修时间
long one_day_time = DateUtil.between(date_create_time, date_finish_time, DateUnit.HOUR, false);
one_all_time = NumberUtil.add(one_all_time,String.valueOf(one_day_time)).toString();
}
device_all_time = NumberUtil.add(device_all_time,one_all_time).toString();
}
// 4.计算MTBF运行时间/故障次数
try {
String device_mtbf = NumberUtil.div(run_time_all, error_num_all).toString();
json.put("device_mtbf", NumberUtil.round(device_mtbf, 2).toString());
} catch (Exception e){
json.put("device_mtbf", "0");
}
// 5.计算MTTR故障时间/故障次数
try {
String device_mttr = NumberUtil.div(error_time_all, error_num_all).toString();
json.put("device_mttr", NumberUtil.round(device_mttr, 2).toString());
} catch (Exception e){
json.put("device_mttr", "0");
}
// 6.计算平均OEE: 所有设备OEE / 设备台数
try {
String oee = NumberUtil.div(oee_all, String.valueOf(deviceArr.size())).toString();
json.put("device_oee", NumberUtil.round(oee, 2).toString());
} catch (Exception e){
json.put("device_oee", "0");
}
// 7.维修时间
json.put("device_time", device_all_time);
resultArr.add(json);
}
resultData.put("device_group_arr", resultArr);
resultJson.put("srb", resultData);
resultJson.put("code", "1");
resultJson.put("desc", "查询成功");
return resultJson;
}
}

View File

@@ -0,0 +1,178 @@
[交易说明]
交易名: 设备大屏查询
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
[数据库]
--指定数据库为空采用默认值默认为db.properties中列出的第一个库
[IO定义]
#################################################
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.run_date TYPEAS s_string
输入.dept_code TYPEAS s_string
输入.status TYPEAS s_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
[临时变量]
--所有中间过程变量均可在此处定义
[业务过程]
##########################################
# 1、输入输出检查 #
##########################################
##########################################
# 2、主过程前处理 #
##########################################
##########################################
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
QUERY
SELECT
sum(run.run_times) AS run_times,
max(dept.name) AS name
FROM
EM_BI_DeviceRunRecord run
LEFT JOIN EM_BI_EquipmentFile file ON file.devicerecord_id = run.devicerecord_id
LEFT JOIN sys_dept dept ON dept.dept_id = file.use_deptid
WHERE
dept.code = 输入.dept_code
AND run.run_date = 输入.run_date
group by dept.code
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "2"
QUERY
SELECT
count(file.devicerecord_id) AS num
FROM
EM_BI_EquipmentFile file
LEFT JOIN sys_dept dept ON dept.dept_id = file.use_deptid
WHERE
dept.code = 输入.dept_code
AND file.status NOT IN ('90','91')
AND file.is_delete = '0'
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "3"
QUERY
SELECT
count(re.device_faultclass_id) AS device_fault_num,
class.device_faultclass_name AS device_fault_type
FROM
EM_BI_DeviceRepairRequest re
LEFT JOIN em_bi_devicefaultclass class ON class.device_faultclass_id = re.device_faultclass_id
WHERE
re.is_delete = '0'
AND re.is_passed = '1'
group by re.device_faultclass_id
ORDER BY device_fault_num DESC
LIMIT 0,10
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "4"
QUERY
SELECT
dept.code,
dept.name
FROM
EM_BI_EquipmentFile file
LEFT JOIN sys_dept dept ON dept.dept_id = file.use_deptid
WHERE
file.is_delete = '0'
AND file.status not in ('00','11','90','91')
group by file.use_deptid
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "5"
QUERY
SELECT
count(file.devicerecord_id) AS num
FROM
EM_BI_EquipmentFile file
LEFT JOIN sys_dept dept ON dept.dept_id = file.use_deptid
WHERE
file.is_delete = '0'
AND dept.code = 输入.dept_code
AND file.status = 输入.status
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "6"
QUERY
SELECT
dept.code,
dept.name
FROM
EM_BI_DeviceMaintenancePlanMst mst
LEFT JOIN EM_BI_EquipmentFile file ON mst.devicerecord_id = file.devicerecord_id
LEFT JOIN sys_dept dept ON dept.dept_id = file.use_deptid
WHERE
mst.is_delete = '0'
AND mst.maintenancecycle = '01'
group by file.use_deptid
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "7"
QUERY
SELECT
dept.name AS dept_name,
file.device_name,
file.device_code,
item.contents AS plan_content,
mst.plan_start_date AS plan_time,
mst.confirm_optname AS impl_name,
mst.real_start_date AS impl_time,
mst.remark,
mst.real_end_date
FROM
EM_BI_DeviceMaintenancePlanDtl dtl
LEFT JOIN EM_BI_DeviceMaintenanceItems item ON item.maint_item_id = dtl.maint_item_id
LEFT JOIN EM_BI_DeviceMaintenancePlanMst mst ON mst.maint_plan_id = dtl.maint_plan_id
LEFT JOIN EM_BI_EquipmentFile file ON mst.devicerecord_id = file.devicerecord_id
LEFT JOIN sys_dept dept ON dept.dept_id = file.use_deptid
WHERE
mst.is_delete = '0'
AND mst.maintenancecycle = '01'
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -0,0 +1,116 @@
[交易说明]
交易名: 设备大屏查询-计划保养状态查询
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
[数据库]
--指定数据库为空采用默认值默认为db.properties中列出的第一个库
[IO定义]
#################################################
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.dept_code TYPEAS s_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
[临时变量]
--所有中间过程变量均可在此处定义
[业务过程]
##########################################
# 1、输入输出检查 #
##########################################
##########################################
# 2、主过程前处理 #
##########################################
##########################################
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
QUERY
SELECT
dept.code,
dept.name
FROM
EM_BI_DeviceMaintenancePlanMst mst
LEFT JOIN EM_BI_EquipmentFile file ON mst.devicerecord_id = file.devicerecord_id
LEFT JOIN sys_dept dept ON dept.dept_id = file.use_deptid
WHERE
mst.is_delete = '0'
AND mst.maintenancecycle = '01'
group by file.use_deptid
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "2"
QUERY
SELECT
count(mst.maint_plan_id) AS num
FROM
EM_BI_DeviceMaintenancePlanMst mst
LEFT JOIN EM_BI_EquipmentFile file ON mst.devicerecord_id = file.devicerecord_id
LEFT JOIN sys_dept dept ON dept.dept_id = file.use_deptid
WHERE
mst.is_delete = '0'
AND mst.maintenancecycle = '01'
AND dept.code = 输入.dept_code
AND mst.real_start_date is null
AND mst.real_end_date is null
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "3"
QUERY
SELECT
count(mst.maint_plan_id) AS num
FROM
EM_BI_DeviceMaintenancePlanMst mst
LEFT JOIN EM_BI_EquipmentFile file ON mst.devicerecord_id = file.devicerecord_id
LEFT JOIN sys_dept dept ON dept.dept_id = file.use_deptid
WHERE
mst.is_delete = '0'
AND mst.maintenancecycle = '01'
AND dept.code = 输入.dept_code
AND mst.real_start_date is not null
AND mst.real_end_date is not null
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "4"
QUERY
SELECT
count(mst.maint_plan_id) AS num
FROM
EM_BI_DeviceMaintenancePlanMst mst
LEFT JOIN EM_BI_EquipmentFile file ON mst.devicerecord_id = file.devicerecord_id
LEFT JOIN sys_dept dept ON dept.dept_id = file.use_deptid
WHERE
mst.is_delete = '0'
AND mst.maintenancecycle = '01'
AND dept.code = 输入.dept_code
AND mst.real_start_date is not null
AND mst.real_end_date is null
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -0,0 +1,130 @@
[交易说明]
交易名: 设备大屏查询-近30天班组情况
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
[数据库]
--指定数据库为空采用默认值默认为db.properties中列出的第一个库
[IO定义]
#################################################
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.begin_time TYPEAS s_string
输入.end_time TYPEAS s_string
输入.dept_code TYPEAS s_string
输入.devicerecord_id TYPEAS s_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
[临时变量]
--所有中间过程变量均可在此处定义
[业务过程]
##########################################
# 1、输入输出检查 #
##########################################
##########################################
# 2、主过程前处理 #
##########################################
##########################################
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
QUERY
SELECT
dept.code,
dept.name
FROM
EM_BI_EquipmentFile file
LEFT JOIN sys_dept dept ON dept.dept_id = file.use_groupid
WHERE
file.is_delete = '0'
AND file.status not in ('90','91')
group by file.use_groupid
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "2"
QUERY
SELECT
file.*
FROM
EM_BI_EquipmentFile file
LEFT JOIN sys_dept dept ON dept.dept_id = file.use_groupid
WHERE
file.is_delete = '0'
AND file.status not in ('90','91')
AND dept.code = 输入.dept_code
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "3"
QUERY
SELECT
ROUND(sum(run.run_times),2) AS run_times,
ROUND(sum(run.prepare_times),2) AS prepare_times,
ROUND(sum(run.error_times),2) AS error_times,
ROUND(sum(run.adjust_times),2) AS adjust_times,
ROUND(sum(run.product_qty),2) AS product_qty,
ROUND(sum(run.nok_qty),2) AS nok_qty,
ROUND(sum(run.oee_value),2) AS oee_value
FROM
EM_BI_DeviceRunRecord run
LEFT JOIN EM_BI_EquipmentFile file ON run.devicerecord_id = file.devicerecord_id
WHERE
run.devicerecord_id = 输入.devicerecord_id
AND ( run.run_date BETWEEN 输入.begin_time AND 输入.end_time)
group by run.devicerecord_id
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "4"
QUERY
SELECT
count(re.request_id) AS num
FROM
EM_BI_DeviceRepairRequest re
WHERE
re.devicerecord_id = 输入.devicerecord_id
AND re.is_delete = '0'
AND ( re.fault_time BETWEEN 输入.begin_time AND 输入.end_time)
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "5"
QUERY
SELECT
re.*
FROM
EM_BI_DeviceRepairRequest re
WHERE
re.devicerecord_id = 输入.devicerecord_id
AND re.is_delete = '0'
AND ( re.fault_time BETWEEN 输入.begin_time AND 输入.end_time)
ENDSELECT
ENDQUERY
ENDIF