From 2bcc9447a43cca0423330af5d36d4573eff01730 Mon Sep 17 00:00:00 2001 From: liuxy Date: Thu, 7 Sep 2023 10:52:04 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E8=AE=BE=E5=A4=87=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E5=88=86=E6=9E=90=E7=AE=A1=E7=90=86=EF=BC=9A=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E6=95=85=E9=9A=9C=E5=88=86=E6=9E=90=E3=80=81=E7=BB=B4?= =?UTF-8?q?=E4=BF=AE=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stat/rest/DevicePairQueryController.java | 51 ++ .../stat/rest/DevicefaultcaeController.java | 58 +++ .../stat/service/DevicePairQueryService.java | 35 ++ .../stat/service/DevicefaultcaeService.java | 42 ++ .../service/dto/DevicesparepartivtDto.java | 84 ++++ .../impl/DevicePairQueryServiceImpl.java | 197 ++++++++ .../impl/DevicefaultcaeServiceImpl.java | 181 ++++++++ .../stat/wql/EM_BI_DEVICEPAIRQUERY_01.wql | 266 +++++++++++ .../stat/wql/EM_DEVICEFAULTCAE_01.wql | 170 +++++++ .../stat/devicefaultcae/DtlDialog.vue | 158 +++++++ .../stat/devicefaultcae/devicefaultcae.js | 34 ++ .../stat/devicefaultcae/index.vue | 339 ++++++++++++++ .../stat/devicerepairquery/index.vue | 439 ++++++++++++++++++ 13 files changed, 2054 insertions(+) create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/rest/DevicePairQueryController.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/rest/DevicefaultcaeController.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/DevicePairQueryService.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/DevicefaultcaeService.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/dto/DevicesparepartivtDto.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/impl/DevicePairQueryServiceImpl.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/impl/DevicefaultcaeServiceImpl.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/wql/EM_BI_DEVICEPAIRQUERY_01.wql create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/wql/EM_DEVICEFAULTCAE_01.wql create mode 100644 mes/qd/src/views/wms/device_manage/stat/devicefaultcae/DtlDialog.vue create mode 100644 mes/qd/src/views/wms/device_manage/stat/devicefaultcae/devicefaultcae.js create mode 100644 mes/qd/src/views/wms/device_manage/stat/devicefaultcae/index.vue create mode 100644 mes/qd/src/views/wms/device_manage/stat/devicerepairquery/index.vue diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/rest/DevicePairQueryController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/rest/DevicePairQueryController.java new file mode 100644 index 00000000..a557d972 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/rest/DevicePairQueryController.java @@ -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 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 getDeviceInfo(@RequestBody JSONObject whereJson){ + return new ResponseEntity<>(devicePairQueryService.getDeviceInfo(whereJson), HttpStatus.OK); + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/rest/DevicefaultcaeController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/rest/DevicefaultcaeController.java new file mode 100644 index 00000000..10e0647d --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/rest/DevicefaultcaeController.java @@ -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 query(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(devicefaultcaeService.queryAll(whereJson, page), HttpStatus.OK); + } + + @GetMapping("/dtlQuery") + @ApiOperation("明细查询") + public ResponseEntity dtlQuery(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(devicefaultcaeService.dtlQuery(whereJson, page), HttpStatus.OK); + } + + @PostMapping("/getFaultList") + @ApiOperation("获取故障下拉框") + public ResponseEntity 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); + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/DevicePairQueryService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/DevicePairQueryService.java new file mode 100644 index 00000000..4302a2b5 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/DevicePairQueryService.java @@ -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 + */ + Map queryAll(Map whereJson, Pageable page); + + void download(Map whereJson, HttpServletResponse response) throws IOException; + + /** + * 获取数据 + * @param whereJson + * @return JSONObject + */ + JSONObject getDeviceInfo(JSONObject whereJson); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/DevicefaultcaeService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/DevicefaultcaeService.java new file mode 100644 index 00000000..a2fc9131 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/DevicefaultcaeService.java @@ -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 + */ + Map queryAll(Map whereJson, Pageable page); + + void download(Map whereJson, HttpServletResponse response) throws IOException; + + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + Map dtlQuery(Map whereJson, Pageable page); + + JSONArray getFaultList(); + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/dto/DevicesparepartivtDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/dto/DevicesparepartivtDto.java new file mode 100644 index 00000000..15ca3c67 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/dto/DevicesparepartivtDto.java @@ -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; +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/impl/DevicePairQueryServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/impl/DevicePairQueryServiceImpl.java new file mode 100644 index 00000000..cb8b3402 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/impl/DevicePairQueryServiceImpl.java @@ -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 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 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 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> 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 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; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/impl/DevicefaultcaeServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/impl/DevicefaultcaeServiceImpl.java new file mode 100644 index 00000000..e95412c0 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/service/impl/DevicefaultcaeServiceImpl.java @@ -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 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 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 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> list = new ArrayList<>(); + for (int i = 0; i < rows.size(); i++) { + JSONObject jo = rows.getJSONObject(i); + Map 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 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 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; + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/wql/EM_BI_DEVICEPAIRQUERY_01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/wql/EM_BI_DEVICEPAIRQUERY_01.wql new file mode 100644 index 00000000..2f9ac00a --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/wql/EM_BI_DEVICEPAIRQUERY_01.wql @@ -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 \ No newline at end of file diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/wql/EM_DEVICEFAULTCAE_01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/wql/EM_DEVICEFAULTCAE_01.wql new file mode 100644 index 00000000..1f55acbe --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/stat/wql/EM_DEVICEFAULTCAE_01.wql @@ -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 diff --git a/mes/qd/src/views/wms/device_manage/stat/devicefaultcae/DtlDialog.vue b/mes/qd/src/views/wms/device_manage/stat/devicefaultcae/DtlDialog.vue new file mode 100644 index 00000000..1b60e84b --- /dev/null +++ b/mes/qd/src/views/wms/device_manage/stat/devicefaultcae/DtlDialog.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/mes/qd/src/views/wms/device_manage/stat/devicefaultcae/devicefaultcae.js b/mes/qd/src/views/wms/device_manage/stat/devicefaultcae/devicefaultcae.js new file mode 100644 index 00000000..3657d05e --- /dev/null +++ b/mes/qd/src/views/wms/device_manage/stat/devicefaultcae/devicefaultcae.js @@ -0,0 +1,34 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/devicefaultcae', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/devicefaultcae/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/devicefaultcae', + method: 'put', + data + }) +} + +export function getFaultList() { + return request({ + url: 'api/devicefaultcae/getFaultList', + method: 'post' + }) +} + +export default { add, edit, del, getFaultList } diff --git a/mes/qd/src/views/wms/device_manage/stat/devicefaultcae/index.vue b/mes/qd/src/views/wms/device_manage/stat/devicefaultcae/index.vue new file mode 100644 index 00000000..ad22ecbb --- /dev/null +++ b/mes/qd/src/views/wms/device_manage/stat/devicefaultcae/index.vue @@ -0,0 +1,339 @@ + + + + + diff --git a/mes/qd/src/views/wms/device_manage/stat/devicerepairquery/index.vue b/mes/qd/src/views/wms/device_manage/stat/devicerepairquery/index.vue new file mode 100644 index 00000000..d9547766 --- /dev/null +++ b/mes/qd/src/views/wms/device_manage/stat/devicerepairquery/index.vue @@ -0,0 +1,439 @@ + + + + +