设备大屏
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user