add:设备统计分析管理:设备故障分析、维修记录

This commit is contained in:
2023-09-07 10:52:04 +08:00
parent 1b42409a01
commit 2bcc9447a4
13 changed files with 2054 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
package org.nl.wms.device_manage.stat.rest;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.wms.device_manage.stat.service.DevicePairQueryService;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
/**
* @author Liuxy
* @date 2022-09-30
**/
@RestController
@RequiredArgsConstructor
@Api(tags = "维修记录")
@RequestMapping("/api/devicerepairquery")
@Slf4j
public class DevicePairQueryController {
private final DevicePairQueryService devicePairQueryService;
@GetMapping
@ApiOperation("维修记录查询")
public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) {
return new ResponseEntity<>(devicePairQueryService.queryAll(whereJson, page), HttpStatus.OK);
}
@ApiOperation("导出数据")
@GetMapping(value = "/download")
public void download(HttpServletResponse response, @RequestParam Map whereJson) throws IOException {
devicePairQueryService.download(whereJson, response);
}
@PostMapping("/getDeviceInfo")
@ApiOperation("获取数据")
public ResponseEntity<Object> getDeviceInfo(@RequestBody JSONObject whereJson){
return new ResponseEntity<>(devicePairQueryService.getDeviceInfo(whereJson), HttpStatus.OK);
}
}

View File

@@ -0,0 +1,58 @@
package org.nl.wms.device_manage.stat.rest;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.wms.device_manage.stat.service.DevicefaultcaeService;
import org.nl.wms.device_manage.stat.service.dto.DevicesparepartivtDto;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
/**
* @author Liuxy
* @date 2022-06-28
**/
@RestController
@RequiredArgsConstructor
@Api(tags = "设备故障分析")
@RequestMapping("/api/devicefaultcae")
@Slf4j
public class DevicefaultcaeController {
private final DevicefaultcaeService devicefaultcaeService;
@GetMapping
@ApiOperation("设备故障分析查询")
public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) {
return new ResponseEntity<>(devicefaultcaeService.queryAll(whereJson, page), HttpStatus.OK);
}
@GetMapping("/dtlQuery")
@ApiOperation("明细查询")
public ResponseEntity<Object> dtlQuery(@RequestParam Map whereJson, Pageable page) {
return new ResponseEntity<>(devicefaultcaeService.dtlQuery(whereJson, page), HttpStatus.OK);
}
@PostMapping("/getFaultList")
@ApiOperation("获取故障下拉框")
public ResponseEntity<Object> getFaultList() {
return new ResponseEntity<>(devicefaultcaeService.getFaultList(),HttpStatus.CREATED);
}
@ApiOperation("导出数据")
@GetMapping(value = "/download")
public void download(HttpServletResponse response, @RequestParam Map whereJson) throws IOException {
devicefaultcaeService.download(whereJson, response);
}
}

View File

@@ -0,0 +1,35 @@
package org.nl.wms.device_manage.stat.service;
import com.alibaba.fastjson.JSONObject;
import org.springframework.data.domain.Pageable;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
/**
* @author Liuxy
* @description 服务接口
* @date 2022-06-28
**/
public interface DevicePairQueryService {
/**
* 查询数据分页
*
* @param whereJson 条件
* @param page 分页参数
* @return Map<String, Object>
*/
Map<String, Object> queryAll(Map whereJson, Pageable page);
void download(Map whereJson, HttpServletResponse response) throws IOException;
/**
* 获取数据
* @param whereJson
* @return JSONObject
*/
JSONObject getDeviceInfo(JSONObject whereJson);
}

View File

@@ -0,0 +1,42 @@
package org.nl.wms.device_manage.stat.service;
import com.alibaba.fastjson.JSONArray;
import org.nl.wms.device_manage.stat.service.dto.DevicesparepartivtDto;
import org.springframework.data.domain.Pageable;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
* @author Liuxy
* @description 服务接口
* @date 2022-06-28
**/
public interface DevicefaultcaeService {
/**
* 查询数据分页
*
* @param whereJson 条件
* @param page 分页参数
* @return Map<String, Object>
*/
Map<String, Object> queryAll(Map whereJson, Pageable page);
void download(Map whereJson, HttpServletResponse response) throws IOException;
/**
* 查询数据分页
*
* @param whereJson 条件
* @param page 分页参数
* @return Map<String, Object>
*/
Map<String, Object> dtlQuery(Map whereJson, Pageable page);
JSONArray getFaultList();
}

View File

@@ -0,0 +1,84 @@
package org.nl.wms.device_manage.stat.service.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author Liuxy
* @description /
* @date 2022-06-28
**/
@Data
public class DevicesparepartivtDto implements Serializable {
/** 库存记录标识 */
/**
* 防止精度丢失
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long stockrecord_id;
/**
* 备件唯一标识
*/
private String sparepart_only_id;
/**
* 物料标识
*/
private Long material_id;
/**
* 批次
*/
private String pcsn;
/**
* 仓库标识
*/
private Long stor_id;
/**
* 仓库名称
*/
private String stor_name;
/**
* 仓位标识
*/
private Long struct_id;
/**
* 仓位编码
*/
private String struct_code;
/**
* 仓位名称
*/
private String struct_name;
/**
* 库存数
*/
private BigDecimal ivt_qty;
/**
* 数量计量单位标识
*/
private Long qty_unit_id;
/**
* 数量计量单位名称
*/
private String qty_unit_name;
/**
* 入库时间
*/
private String instorage_time;
}

View File

@@ -0,0 +1,197 @@
package org.nl.wms.device_manage.stat.service.impl;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.common.utils.FileUtil;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.util.WqlUtil;
import org.nl.wms.device_manage.stat.service.DevicePairQueryService;
import org.nl.wms.masterdata_manage.备份master.service.ClassstandardService;
import org.nl.wms.system_manage.service.dept.ISysDeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
@Service
@RequiredArgsConstructor
@Slf4j
public class DevicePairQueryServiceImpl implements DevicePairQueryService {
private final ClassstandardService classstandardService;
@Autowired
private ISysDeptService deptService;
@Override
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
String repair_code = MapUtil.getStr(whereJson, "repair_code");
String device_code = MapUtil.getStr(whereJson, "device_code");
String invstatus = MapUtil.getStr(whereJson, "invstatus");
String material_type_id = MapUtil.getStr(whereJson, "material_type_id");
String class_idStr = (String) whereJson.get("class_idStr");
HashMap<String, String> map = new HashMap<>();
map.put("flag", "1");
map.put("invstatus",invstatus);
String begin_time = MapUtil.getStr(whereJson, "begin_time");
if (StrUtil.isNotEmpty(begin_time)) {
map.put("begin_time", begin_time.substring(0,10));
}
String end_time = MapUtil.getStr(whereJson, "end_time");
if (StrUtil.isNotEmpty(end_time)) {
map.put("end_time", end_time.substring(0,10));
}
if (ObjectUtil.isNotEmpty(repair_code)) map.put("repair_code","%"+repair_code+"%");
if (ObjectUtil.isNotEmpty(device_code)) map.put("device_code","%"+device_code+"%");
//处理物料当前节点的所有子节点
if (!StrUtil.isEmpty(material_type_id)) {
map.put("material_type_id", material_type_id);
String classIds = classstandardService.getChildIdStr(material_type_id);
map.put("classIds", classIds);
} else if (ObjectUtil.isNotEmpty(class_idStr)) {
String classIds = classstandardService.getAllChildIdStr(class_idStr);
map.put("classIds", classIds);
}
// 归属部门
String dept_id = MapUtil.getStr(whereJson, "dept_id");
if (!StrUtil.isEmpty(dept_id)) {
String deptIds = deptService.getChildIdStr(Long.parseLong(dept_id));
map.put("deptIds", deptIds);
}
JSONObject json = WQL.getWO("EM_BI_DEVICEPAIRQUERY_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "mst.input_time DESC");
JSONArray content = json.getJSONArray("content");
for (int i = 0; i < content.size(); i++) {
JSONObject jsonObject = content.getJSONObject(i);
String real_start_date = jsonObject.getString("real_start_date");
String real_end_date = jsonObject.getString("real_end_date");
if (ObjectUtil.isNotEmpty(real_start_date) && ObjectUtil.isNotEmpty(real_end_date)) {
Date date1 = DateUtil.parse(real_start_date);
Date date2 = DateUtil.parse(real_end_date);
long betweenDay = DateUtil.between(date1, date2, DateUnit.HOUR);
jsonObject.put("repair_time",String.valueOf(betweenDay));
}
}
return json;
}
@Override
public void download(Map whereJson, HttpServletResponse response) throws IOException {
String repair_code = MapUtil.getStr(whereJson, "repair_code");
String device_code = MapUtil.getStr(whereJson, "device_code");
String invstatus = MapUtil.getStr(whereJson, "invstatus");
String begin_time = MapUtil.getStr(whereJson, "begin_time");
String end_time = MapUtil.getStr(whereJson, "end_time");
String material_type_id = MapUtil.getStr(whereJson, "material_type_id");
String class_idStr = (String) whereJson.get("class_idStr");
HashMap<String, String> map = new HashMap<>();
map.put("flag", "1");
map.put("invstatus",invstatus);
map.put("begin_time",begin_time);
map.put("end_time",end_time);
if (ObjectUtil.isNotEmpty(repair_code)) map.put("repair_code","%"+repair_code+"%");
if (ObjectUtil.isNotEmpty(device_code)) map.put("device_code","%"+device_code+"%");
//处理物料当前节点的所有子节点
if (!StrUtil.isEmpty(material_type_id)) {
map.put("material_type_id", material_type_id);
String classIds = classstandardService.getChildIdStr(material_type_id);
map.put("classIds", classIds);
} else if (ObjectUtil.isNotEmpty(class_idStr)) {
String classIds = classstandardService.getAllChildIdStr(class_idStr);
map.put("classIds", classIds);
}
// 归属部门
String dept_id = MapUtil.getStr(whereJson, "dept_id");
if (!StrUtil.isEmpty(dept_id)) {
String deptIds = deptService.getChildIdStr(Long.parseLong(dept_id));
map.put("deptIds", deptIds);
}
JSONArray rows = WQL.getWO("EM_BI_DEVICEPAIRQUERY_01").addParamMap(map).process().getResultJSONArray(0);
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 0; i < rows.size(); i++) {
JSONObject jo = rows.getJSONObject(i);
String real_start_date = jo.getString("real_start_date");
String real_end_date = jo.getString("real_end_date");
String repair_time = "";
if (ObjectUtil.isNotEmpty(real_start_date) && ObjectUtil.isNotEmpty(real_end_date)) {
Date date1 = DateUtil.parse(real_start_date);
Date date2 = DateUtil.parse(real_end_date);
long betweenDay = DateUtil.between(date1, date2, DateUnit.HOUR);
repair_time = String.valueOf(betweenDay);
}
Map<String, Object> dtl_map = new LinkedHashMap<>();
dtl_map.put("维修单号", jo.getString("repair_code"));
dtl_map.put("设备编码", jo.getString("device_code"));
dtl_map.put("设备名称", jo.getString("device_name"));
dtl_map.put("设备自编码", jo.getString("extend_code"));
dtl_map.put("使用班组", jo.getString("use_name"));
dtl_map.put("故障等级", jo.getString("fault_level"));
dtl_map.put("单据状态", jo.getString("invstatus"));
dtl_map.put("计划维修日期", jo.getString("plan_start_date"));
dtl_map.put("创建人", jo.getString("input_optname"));
dtl_map.put("创建时间", jo.getString("input_time"));
dtl_map.put("报修人", jo.getString("bx_name"));
dtl_map.put("报修时间", jo.getString("bx_time"));
dtl_map.put("维修人", jo.getString("update_optname"));
dtl_map.put("维修开始时间", jo.getString("real_start_date"));
dtl_map.put("维修结束时间", jo.getString("real_end_date"));
dtl_map.put("维修用时(h)", repair_time);
dtl_map.put("维修确认人", jo.getString("confirm_optname"));
dtl_map.put("维修确认时间", jo.getString("confirm_time"));
dtl_map.put("故障类别", jo.getString("device_faultclass_name"));
dtl_map.put("故障描述", jo.getString("fault_comment"));
dtl_map.put("故障原因", jo.getString("fault_cause"));
dtl_map.put("问题分析", jo.getString("fault_analysis"));
dtl_map.put("处理措施", jo.getString("measure"));
dtl_map.put("审核人", jo.getString("audit_optname"));
dtl_map.put("审核时间", jo.getString("audit_time"));
dtl_map.put("源单号", jo.getString("source_bill_code"));
dtl_map.put("源单业务类型", jo.getString("source_bill_type"));
list.add(dtl_map);
}
FileUtil.downloadExcel(list, response);
}
@Override
public JSONObject getDeviceInfo(JSONObject whereJson) {
String repair_id = whereJson.getString("repair_id");
JSONObject map = new JSONObject();
map.put("flag", "2");
map.put("repair_id", repair_id);
JSONObject json = WQL.getWO("EM_BI_DEVICEPAIRQUERY_01").addParamMap(map).process().uniqueResult(0);
// 查询维修项目
map.put("flag", "3");
JSONArray dtlArr = WQL.getWO("EM_BI_DEVICEPAIRQUERY_01").addParamMap(map).process().getResultJSONArray(0);
// 查询维修记录更换记录
map.put("flag", "4");
JSONArray relArr = WQL.getWO("EM_BI_DEVICEPAIRQUERY_01").addParamMap(map).process().getResultJSONArray(0);
json.put("tableData1", dtlArr);
json.put("tableData2", relArr);
return json;
}
}

View File

@@ -0,0 +1,181 @@
package org.nl.wms.device_manage.stat.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.FileUtil;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.WqlUtil;
import org.nl.wms.device_manage.stat.service.DevicefaultcaeService;
import org.nl.wms.device_manage.stat.service.dto.DevicesparepartivtDto;
import org.nl.wms.masterdata_manage.备份master.service.ClassstandardService;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
/**
* @author Liuxy
* @description 服务实现
* @date 2022-06-28
**/
@Service
@RequiredArgsConstructor
@Slf4j
public class DevicefaultcaeServiceImpl implements DevicefaultcaeService {
private final ClassstandardService classstandardService;
@Override
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
String material_type_id = MapUtil.getStr(whereJson, "material_type_id");
String class_idStr = (String) whereJson.get("class_idStr");
String device_gz = MapUtil.getStr(whereJson, "device_gz");
String device_code = MapUtil.getStr(whereJson, "device_code");
String dept_id = MapUtil.getStr(whereJson, "dept_id");
String begin_time = MapUtil.getStr(whereJson, "start_time");
String end_time = MapUtil.getStr(whereJson, "end_time");
if (ObjectUtil.isEmpty(begin_time)) {
throw new BadRequestException("请选择日期");
}
HashMap<String, String> map = new HashMap<>();
map.put("flag", "1");
if (ObjectUtil.isNotEmpty(begin_time) && ObjectUtil.isNotEmpty(end_time)) {
map.put("begin_time", begin_time.substring(0,10));
map.put("end_time", end_time.substring(0,10));
}
map.put("device_gz", device_gz);
if (ObjectUtil.isNotEmpty(device_code)) map.put("device_code", "%"+device_code+"%");
if (ObjectUtil.isNotEmpty(dept_id)) map.put("dept_id", "%"+dept_id+"%");
//处理设备当前节点的所有子节点
if (!StrUtil.isEmpty(material_type_id)) {
map.put("material_type_id", material_type_id);
String classIds = classstandardService.getChildIdStr(material_type_id);
map.put("classIds", classIds);
} else if (ObjectUtil.isNotEmpty(class_idStr)) {
String classIds = classstandardService.getAllChildIdStr(class_idStr);
map.put("classIds", classIds);
}
JSONObject json = WQL.getWO("EM_DEVICEFAULTCAE_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "dept_name,device_code");
/* // 处理平均故障间隔时间 && 平均故障修复时间*/
JSONArray content = json.getJSONArray("content");
for (int i = 0; i < content.size(); i++) {
JSONObject jsonObject = content.getJSONObject(i);
String devicerecord_id = jsonObject.getString("devicerecord_id");
/*
* 平均故障间隔时间:运行时间/故障次数(运行时间查运行记录表,故障次数查报修单)
* 平均故障修复时间:故障时间/故障次数(故障时间查运行记录表)
*/
// 根据此设备查询运行记录表计算 运行时间和故障时间
map.put("flag", "4");
map.put("devicerecord_id", devicerecord_id);
JSONObject runAndErr_time = WQL.getWO("EM_DEVICEFAULTCAE_01").addParamMap(map).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(runAndErr_time)) {
String run_times = runAndErr_time.getString("run_times"); // 运行时间
String error_times = runAndErr_time.getString("error_times"); // 故障时间时间
String error_num = jsonObject.getString("nunm"); // 故障次数
try {
// 计算平均故障间隔时间
String avgVal_time = NumberUtil.div(NumberUtil.div(run_times, error_num).toString(), "60").toString();
jsonObject.put("avgVal_time", NumberUtil.round(avgVal_time,2).toString());
} catch (Exception e) {
jsonObject.put("avgVal_time","0");
}
try {
// 平均故障修复时间
String avgRep_time = NumberUtil.div(NumberUtil.div(error_times, error_num).toString(), "60").toString();
jsonObject.put("avgRep_time", NumberUtil.round(avgRep_time,2).toString());
} catch (Exception e) {
jsonObject.put("avgRep_time","0");
}
}
}
json.put("content",content);
return json;
}
@Override
public void download(Map whereJson, HttpServletResponse response) throws IOException {
String begin_time = MapUtil.getStr(whereJson, "begin_time");
String end_time = MapUtil.getStr(whereJson, "end_time");
String devicerecord_id = MapUtil.getStr(whereJson, "devicerecord_id");
HashMap<String, String> map = new HashMap<>();
map.put("flag", "2");
map.put("begin_time",begin_time);
map.put("end_time",end_time);
map.put("devicerecord_id",devicerecord_id);
JSONArray rows = WQL.getWO("EM_DEVICEFAULTCAE_01").addParamMap(map).process().getResultJSONArray(0);
for (int j = 0; j < rows.size(); j++) {
JSONObject jsonObject = rows.getJSONObject(j);
if (ObjectUtil.isEmpty("outsourceaskfor_optid")) {
jsonObject.put("outsourceaskfor_optid","");
} else {
jsonObject.put("outsourceaskfor_optid","");
}
}
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 0; i < rows.size(); i++) {
JSONObject jo = rows.getJSONObject(i);
Map<String, Object> dtl_map = new LinkedHashMap<>();
dtl_map.put("报修时间", jo.getString("create_time"));
dtl_map.put("使用部门", jo.getString("name"));
dtl_map.put("故障类型", jo.getString("class_name"));
dtl_map.put("受理时间", jo.getString("process_time"));
dtl_map.put("开始维修", jo.getString("real_start_date"));
dtl_map.put("结束维修", jo.getString("real_end_date"));
dtl_map.put("生产验收", jo.getString("confirm_time"));
dtl_map.put("维修确认", jo.getString("audit_time"));
dtl_map.put("生产配合人", jo.getString("product_person_name"));
dtl_map.put("维修人", jo.getString("update_optname"));
list.add(dtl_map);
}
FileUtil.downloadExcel(list, response);
}
@Override
public Map<String, Object> dtlQuery(Map whereJson, Pageable page) {
String begin_time = MapUtil.getStr(whereJson, "begin_time");
String end_time = MapUtil.getStr(whereJson, "end_time");
String devicerecord_id = MapUtil.getStr(whereJson, "devicerecord_id");
HashMap<String, String> map = new HashMap<>();
map.put("flag", "2");
map.put("begin_time",begin_time);
map.put("end_time",end_time);
map.put("devicerecord_id",devicerecord_id);
JSONObject json = WQL.getWO("EM_DEVICEFAULTCAE_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "re.fault_time DESC");
return json;
}
@Override
public JSONArray getFaultList() {
JSONArray resultJSONArray = WQL.getWO("EM_DEVICEFAULTCAE_01").addParam("flag", "3").process().getResultJSONArray(0);
return resultJSONArray;
}
}

View File

@@ -0,0 +1,266 @@
[交易说明]
交易名: 维修记录分页查询
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
[数据库]
--指定数据库为空采用默认值默认为db.properties中列出的第一个库
[IO定义]
#################################################
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.classIds TYPEAS f_string
输入.repair_type TYPEAS s_string
输入.invstatus TYPEAS s_string
输入.repair_code TYPEAS s_string
输入.begin_time TYPEAS s_string
输入.end_time TYPEAS s_string
输入.device_code TYPEAS s_string
输入.repair_id TYPEAS s_string
输入.deptIds TYPEAS f_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
[临时变量]
--所有中间过程变量均可在此处定义
[业务过程]
##########################################
# 1、输入输出检查 #
##########################################
##########################################
# 2、主过程前处理 #
##########################################
##########################################
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
PAGEQUERY
SELECT
mst.repair_id,
mst.devicerecord_id,
mst.repair_code,
file.device_code,
file.device_name,
file.extend_code,
d2.name AS use_name,
mst.fault_level,
mst.invstatus,
mst.plan_start_date,
mst.input_optname,
mst.input_time,
st.create_name AS bx_name,
st.create_time AS bx_time,
mst.update_optname,
mst.real_start_date,
mst.real_end_date,
mst.outsourceaskfor_optname,
mst.outsourceaskfor_time,
mst.outsourceback_remark,
mst.outsourceback_optname,
mst.outsourceback_time,
mst.confirm_optname,
mst.confirm_time,
fau.device_faultclass_name,
re.fault_comment,
re.fault_cause,
re.fault_analysis,
re.measure,
mst.audit_optname,
mst.audit_time,
mst.source_bill_code,
mst.source_bill_type
FROM
EM_BI_DeviceRepairMst mst
LEFT JOIN EM_BI_EquipmentFile file ON file.devicerecord_id = mst.devicerecord_id
LEFT JOIN md_pb_classstandard class ON file.material_type_id = class.class_id
LEFT JOIN sys_dept d2 ON file.use_deptid = d2.dept_id
LEFT JOIN EM_BI_DeviceRepairRequest st ON st.request_id = mst.source_bill_id AND mst.source_bill_type = 'BXD'
LEFT JOIN EM_BI_DeviceFaultClass fau ON st.device_faultclass_id = fau.device_faultclass_id
LEFT JOIN EM_BI_DeviceRepairRecord re ON mst.repair_id = re.repair_id
WHERE
mst.is_delete = '0'
AND file.is_delete = '0'
OPTION 输入.repair_code <> ""
(mst.repair_code like 输入.repair_code or
mst.repair_code like 输入.repair_code)
ENDOPTION
OPTION 输入.device_code <> ""
(file.device_code like 输入.device_code or
file.device_name like 输入.device_code)
ENDOPTION
OPTION 输入.classIds <> ""
class.class_id in 输入.classIds
ENDOPTION
OPTION 输入.invstatus <> ""
mst.invstatus = 输入.invstatus
ENDOPTION
OPTION 输入.repair_type <> ""
mst.repair_type = 输入.repair_type
ENDOPTION
OPTION 输入.begin_time <> ""
mst.plan_start_date >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
mst.plan_start_date <= 输入.end_time
ENDOPTION
OPTION 输入.deptIds <> ""
d2.dept_id in 输入.deptIds
ENDOPTION
ENDSELECT
ENDPAGEQUERY
ENDIF
IF 输入.flag = "2"
QUERY
SELECT
mst.repair_code,
mst.plan_start_date,
mst.maintenancecycle,
file.device_code,
dept.name AS use_name,
(
CASE
mst.fault_level
WHEN '01' THEN '紧急'
WHEN '02' THEN '一般'
WHEN '03' THEN '不紧急'
END
) AS fault_level,
fau.device_faultclass_name,
(
CASE
mst.invstatus
WHEN '01' THEN '生成'
WHEN '02' THEN '提交'
WHEN '03' THEN '维修开始'
WHEN '04' THEN '委外维修'
WHEN '05' THEN '委外验收'
WHEN '06' THEN '维修结束'
WHEN '07' THEN '班组确认'
WHEN '99' THEN '审核完毕'
END
) AS invstatus,
mst.remark,
st.create_time,
st.create_name,
st.product_person_name,
mst.real_start_date,
mst.real_end_date,
mst.update_optname,
mst.outsourceaskfor_time,
mst.outsourceaskfor_optname,
mst.outsourceback_remark,
mst.outsourceback_time,
mst.outsourceback_optname,
mst.confirm_time,
mst.confirm_optname,
mst.audit_time,
mst.audit_optname,
re.fault_comment,
re.fault_cause,
re.fault_analysis,
re.measure
FROM
EM_BI_DeviceRepairMst mst
LEFT JOIN EM_BI_EquipmentFile file ON mst.devicerecord_id = file.devicerecord_id
LEFT JOIN sys_dept dept ON file.use_deptid = dept.dept_id
LEFT JOIN EM_BI_DeviceRepairRequest st ON mst.source_bill_id = st.request_id
LEFT JOIN EM_BI_DeviceFaultClass fau ON fau.device_faultclass_id = st.device_faultclass_id
LEFT JOIN EM_BI_DeviceRepairRecord re ON re.repair_id = mst.repair_id
WHERE
mst.is_delete = '0'
AND file.is_delete = '0'
OPTION 输入.repair_id <> ""
mst.repair_id = 输入.repair_id
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "3"
QUERY
SELECT
item.repair_item_code,
item.repair_item_name,
item.requirement,
(
CASE
dtl.isfinish
WHEN '0' THEN '否'
ELSE '是'
END
) AS isfinish
FROM
EM_BI_DeviceRepairDtl dtl
LEFT JOIN EM_BI_DeviceRepairItems item ON dtl.repair_item_id = item.repair_item_id
WHERE
1=1
OPTION 输入.repair_id <> ""
dtl.repair_id = 输入.repair_id
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "4"
QUERY
SELECT
item.repair_item_code,
file.device_code,
mater.material_code,
mater.material_name,
re.new_sparepart_only_id,
re.old_sparepart_only_id
FROM
EM_BI_DeviceRepairReplaceRecord re
LEFT JOIN EM_BI_DeviceRepairItems item ON re.repair_item_id = item.repair_item_id
LEFT JOIN EM_BI_DeviceRepairMst mst ON mst.repair_id = re.repair_id
LEFT JOIN EM_BI_EquipmentFile file ON mst.devicerecord_id = file.devicerecord_id
LEFT JOIN md_me_materialbase mater ON re.material_id = mater.material_id
WHERE
mst.is_delete = '0'
AND file.is_delete = '0'
OPTION 输入.repair_id <> ""
re.repair_id = 输入.repair_id
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -0,0 +1,170 @@
[交易说明]
交易名: 设备故障分析分页查询
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
[数据库]
--指定数据库为空采用默认值默认为db.properties中列出的第一个库
[IO定义]
#################################################
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.classIds TYPEAS f_string
输入.classIds2 TYPEAS f_string
输入.device_code TYPEAS s_string
输入.dept_id TYPEAS s_string
输入.begin_time TYPEAS s_string
输入.end_time TYPEAS s_string
输入.devicerecord_id TYPEAS s_string
输入.device_gz TYPEAS s_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
[临时变量]
--所有中间过程变量均可在此处定义
[业务过程]
##########################################
# 1、输入输出检查 #
##########################################
##########################################
# 2、主过程前处理 #
##########################################
##########################################
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
PAGEQUERY
SELECT
count(re.devicerecord_id) AS nunm,
MAX(dept.name) AS dept_name,
MAX(class.class_name) AS class_name,
MAX(file.device_code) AS device_code,
MAX(file.device_model) AS device_model,
re.devicerecord_id,
MAX(file.device_name) AS device_name,
MAX(file.extend_code) AS extend_code
FROM
EM_BI_DeviceRepairRequest re
LEFT JOIN EM_BI_EquipmentFile file ON file.devicerecord_id = re.devicerecord_id
LEFT JOIN EM_BI_DeviceFaultClass fclass ON fclass.device_faultclass_id = re.device_faultclass_id
LEFT JOIN md_pb_classstandard class ON file.material_type_id = class.class_id
LEFT JOIN sys_dept dept ON file.use_deptid = dept.dept_id
WHERE
re.is_delete = '0'
OPTION 输入.classIds <> ""
class.class_id in 输入.classIds
ENDOPTION
OPTION 输入.device_gz <> ""
fclass.device_faultclass_id = 输入.device_gz
ENDOPTION
OPTION 输入.device_code <> ""
(file.device_code like 输入.device_code or
file.device_name like 输入.device_code)
ENDOPTION
OPTION 输入.dept_id <> ""
(dept.code like 输入.dept_id or
dept.name like 输入.dept_id)
ENDOPTION
OPTION 输入.begin_time <> ""
re.fault_time >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
re.fault_time <= 输入.end_time
ENDOPTION
GROUP BY re.devicerecord_id
ENDSELECT
ENDPAGEQUERY
ENDIF
IF 输入.flag = "2"
PAGEQUERY
SELECT
re.*,
dept.name,
fclass.device_faultclass_name AS class_name,
pari.real_start_date,
pari.real_end_date,
pari.outsourceaskfor_optid,
pari.confirm_time,
pari.audit_time,
pari.update_optname
FROM
EM_BI_DeviceRepairRequest re
LEFT JOIN EM_BI_EquipmentFile file ON file.devicerecord_id = re.devicerecord_id
LEFT JOIN EM_BI_DeviceFaultClass fclass ON fclass.device_faultclass_id = re.device_faultclass_id
LEFT JOIN sys_dept dept ON file.use_deptid = dept.dept_id
LEFT JOIN EM_BI_DeviceRepairMst pari ON pari.source_bill_id = re.request_id
WHERE
re.is_delete = '0'
OPTION 输入.devicerecord_id <> ""
re.devicerecord_id = 输入.devicerecord_id
ENDOPTION
OPTION 输入.begin_time <> ""
re.fault_time >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
re.fault_time <= 输入.end_time
ENDOPTION
ENDSELECT
ENDPAGEQUERY
ENDIF
IF 输入.flag = "3"
QUERY
SELECT
*
FROM
EM_BI_DeviceFaultClass
WHERE
is_delete = '0'
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "4"
QUERY
SELECT
SUM(re.run_times) AS run_times,
SUM(re.error_times) AS error_times
FROM
EM_BI_DeviceRunRecord re
WHERE
1=1
OPTION 输入.devicerecord_id <> ""
re.devicerecord_id = 输入.devicerecord_id
ENDOPTION
OPTION 输入.begin_time <> ""
re.run_date >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
re.run_date <= 输入.end_time
ENDOPTION
group by re.devicerecord_id
ENDSELECT
ENDQUERY
ENDIF