diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/service/dto/DownloadWordDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/service/dto/DownloadWordDto.java index 05fb5952..e120c283 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/service/dto/DownloadWordDto.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/service/dto/DownloadWordDto.java @@ -41,4 +41,10 @@ public class DownloadWordDto implements Serializable { @WordProperty("资产使用人") private String user_name; + @WordProperty("投产日期") + private String beginuse_date; + + @WordProperty("存放地点") + private String setting_place; + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/service/impl/DeviceScrapServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/service/impl/DeviceScrapServiceImpl.java index 3a41fcd9..1cc1bf0f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/service/impl/DeviceScrapServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/service/impl/DeviceScrapServiceImpl.java @@ -140,6 +140,8 @@ public class DeviceScrapServiceImpl implements DeviceScrapService { .oraginal_value(jsonFile.getString("oraginal_value")) .net_amount(jsonFile.getString("net_amount")) .belong_dept(jsonDept.getString("name")) + .beginuse_date(jsonFile.getString("beginuse_date")) + .setting_place(jsonFile.getString("setting_place")) .user_name(jsonFile.getString("user_name")).build(); // 获取本地模板 String path = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("DEVICE_WORD_PATH").getValue(); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/rest/DeviceooestatController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/rest/DeviceooestatController.java index b446650c..7bbc1ef9 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/rest/DeviceooestatController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/rest/DeviceooestatController.java @@ -16,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.Map; /** @@ -39,4 +41,18 @@ public class DeviceooestatController { return new ResponseEntity<>(deviceooestatService.queryAll(whereJson, page), HttpStatus.OK); } + @GetMapping("/queryDtl") + @Log("设备OEE指标分析查询明细") + @ApiOperation("设备OEE指标分析查询明细") + //@PreAuthorize("@el.check('devicesparepartivt:list')") + public ResponseEntity queryDtl(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(deviceooestatService.queryDtl(whereJson, page), HttpStatus.OK); + } + + @ApiOperation("导出数据") + @GetMapping(value = "/download") + public void download(HttpServletResponse response, @RequestParam Map whereJson) throws IOException { + deviceooestatService.download(whereJson, response); + } + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/service/DeviceooestatService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/service/DeviceooestatService.java index 4297cc3d..4cf457bd 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/service/DeviceooestatService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/service/DeviceooestatService.java @@ -25,4 +25,15 @@ public interface DeviceooestatService { */ Map queryAll(Map whereJson, Pageable page); + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + Map queryDtl(Map whereJson, Pageable page); + + void download(Map whereJson, HttpServletResponse response) throws IOException; + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/service/impl/DeviceooestatServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/service/impl/DeviceooestatServiceImpl.java index 9485c107..38897d1a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/service/impl/DeviceooestatServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/service/impl/DeviceooestatServiceImpl.java @@ -5,9 +5,11 @@ package org.nl.wms.sb.stat.service.impl; 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.utils.FileUtil; import org.nl.wms.basedata.master.service.ClassstandardService; import org.nl.wms.sb.stat.service.DeviceooestatService; import org.nl.wql.WQL; @@ -15,8 +17,9 @@ import org.nl.wql.util.WqlUtil; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import java.util.HashMap; -import java.util.Map; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.*; /** * @author Liuxy @@ -51,15 +54,63 @@ public class DeviceooestatServiceImpl implements DeviceooestatService { map.put("classIds", classIds); } - if (ObjectUtil.isEmpty(begin_time)) { - map.put("flag", "1"); - } else { - map.put("flag", "2"); - map.put("begin_time",begin_time); - map.put("end_time",end_time); - } + map.put("flag", "2"); + map.put("begin_time",begin_time); + map.put("end_time",end_time); JSONObject json = WQL.getWO("EM_DEVICEOOESTAT001").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "file.device_code ASC"); return json; } + + @Override + public Map queryDtl(Map whereJson, Pageable page) { + + String begin_time = MapUtil.getStr(whereJson, "startTime"); + String end_time = MapUtil.getStr(whereJson, "endTime"); + String devicerecord_id = MapUtil.getStr(whereJson, "devicerecord_id"); + + HashMap map = new HashMap<>(); + map.put("flag", "1"); + map.put("begin_time", begin_time); + map.put("end_time", end_time); + map.put("devicerecord_id", devicerecord_id); + JSONObject json = WQL.getWO("EM_DEVICEOOESTAT001").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "run.run_date ASC"); + + return json; + } + + @Override + public void download(Map whereJson, HttpServletResponse response) throws IOException { + String begin_time = MapUtil.getStr(whereJson, "startTime"); + String end_time = MapUtil.getStr(whereJson, "endTime"); + String devicerecord_id = MapUtil.getStr(whereJson, "devicerecord_id"); + + HashMap map = new HashMap<>(); + map.put("flag", "1"); + map.put("begin_time", begin_time); + map.put("end_time", end_time); + map.put("devicerecord_id", devicerecord_id); + + JSONArray rows = WQL.getWO("EM_DEVICEOOESTAT001").addParamMap(map).process().getResultJSONArray(0); + + 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("run_date")); + dtl_map.put("设备编码", jo.getString("device_code")); + dtl_map.put("设备名称", jo.getString("device_name")); + dtl_map.put("工作时间(分钟)", jo.getString("run_times")); + dtl_map.put("准备时间(分钟)", jo.getString("prepare_times")); + dtl_map.put("故障时间(分钟)", jo.getString("error_times")); + dtl_map.put("工装调整时间(分钟)", jo.getString("adjust_times")); + dtl_map.put("生产总量", jo.getString("product_qty")); + dtl_map.put("不合格数", jo.getString("nok_qty")); + dtl_map.put("理论生产节拍(分钟)", jo.getString("theory_beat")); + dtl_map.put("OEE指标", jo.getString("oee_value")); + list.add(dtl_map); + } + FileUtil.downloadExcel(list, response); + + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/wql/EM_DEVICEOOESTAT001.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/wql/EM_DEVICEOOESTAT001.wql index 3375bee9..ef244d68 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/wql/EM_DEVICEOOESTAT001.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/wql/EM_DEVICEOOESTAT001.wql @@ -19,6 +19,7 @@ 输入.begin_time TYPEAS s_string 输入.end_time TYPEAS s_string 输入.dept_code TYPEAS s_string + 输入.devicerecord_id TYPEAS s_string [临时表] @@ -82,6 +83,10 @@ run.run_date <= 输入.end_time ENDOPTION + OPTION 输入.devicerecord_id <> "" + run.devicerecord_id = 输入.devicerecord_id + ENDOPTION + ENDSELECT ENDPAGEQUERY ENDIF diff --git a/mes/qd/src/views/wms/sb/run/devicescrap/index.vue b/mes/qd/src/views/wms/sb/run/devicescrap/index.vue index 0f1073b9..76ecfb78 100644 --- a/mes/qd/src/views/wms/sb/run/devicescrap/index.vue +++ b/mes/qd/src/views/wms/sb/run/devicescrap/index.vue @@ -264,22 +264,29 @@ export default { return this.dict.label.DEVICE_ATTRIBUTE_SCODE[row.device_type] }, scrap() { - const _selectData = this.$refs.table.selection - const data = _selectData[0] - // if (data.status !== '10') { - // return this.crud.notify('设备未启用或不存在', CRUD.NOTIFICATION_TYPE.INFO) - // } - if (data.device_is_delete === '1') { - return this.crud.notify('设备不存在或被删除', CRUD.NOTIFICATION_TYPE.INFO) - } - if (data.status === '10' || data.status === '11') { - crudDevicescrap.scrap(data).then(res => { - this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS) - this.crud.toQuery() - }) - } else { - return this.crud.notify('设备状态不正确,需启动设备或完成维修单及保养单', CRUD.NOTIFICATION_TYPE.INFO) - } + const msg = '是否继续' + this.$confirm(msg, '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + const _selectData = this.$refs.table.selection + const data = _selectData[0] + // if (data.status !== '10') { + // return this.crud.notify('设备未启用或不存在', CRUD.NOTIFICATION_TYPE.INFO) + // } + if (data.device_is_delete === '1') { + return this.crud.notify('设备不存在或被删除', CRUD.NOTIFICATION_TYPE.INFO) + } + if (data.status === '10' || data.status === '11') { + crudDevicescrap.scrap(data).then(res => { + this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS) + this.crud.toQuery() + }) + } else { + return this.crud.notify('设备状态不正确,需启动设备或完成维修单及保养单', CRUD.NOTIFICATION_TYPE.INFO) + } + }) }, downloadWord() { const msg = '是否继续' diff --git a/mes/qd/src/views/wms/sb/stat/deviceooestat/DtlDialog.vue b/mes/qd/src/views/wms/sb/stat/deviceooestat/DtlDialog.vue new file mode 100644 index 00000000..985b2e6a --- /dev/null +++ b/mes/qd/src/views/wms/sb/stat/deviceooestat/DtlDialog.vue @@ -0,0 +1,191 @@ + + + + + diff --git a/mes/qd/src/views/wms/sb/stat/deviceooestat/index.vue b/mes/qd/src/views/wms/sb/stat/deviceooestat/index.vue index e08c013b..a23b2842 100644 --- a/mes/qd/src/views/wms/sb/stat/deviceooestat/index.vue +++ b/mes/qd/src/views/wms/sb/stat/deviceooestat/index.vue @@ -12,7 +12,7 @@ label-suffix=":" > - + - + + + @@ -67,6 +71,7 @@ + @@ -82,11 +87,12 @@ import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect' import '@riophae/vue-treeselect/dist/vue-treeselect.css' import crudMaterialbase from '@/api/wms/basedata/master/materialbase' import DateRangePicker from '@/components/DateRangePicker' +import DtlDialog from '@/views/wms/sb/stat/deviceooestat/DtlDialog' const defaultForm = { runrecord_id: null, devicerecord_id: null, run_date: null, run_times: null, prepare_times: null, error_times: null, adjust_times: null, product_qty: null, nok_qty: null, oee_value: null, remark: null, create_id: null, create_name: null, create_time: null } export default { name: 'Deviceooestat', - components: { pagination, crudOperation, rrOperation, udOperation, Treeselect, DateRangePicker }, + components: { DtlDialog, pagination, crudOperation, rrOperation, udOperation, Treeselect, DateRangePicker }, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { return CRUD({ @@ -108,8 +114,11 @@ export default { return { classes: [], class_idStr: null, + openParam: null, + changeTimeAge: null, materOpt_code: '23', deviceDialog: false, + openDtldialog: false, permission: { } } @@ -160,6 +169,24 @@ export default { return obj }) }) + }, + openDtl(row) { + if (!this.changeTimeAge) { + return this.crud.notify('请选择日期', CRUD.NOTIFICATION_TYPE.INFO) + } + this.openParam = { + 'dtlFrom': row, + 'time': this.changeTimeAge + } + this.openDtldialog = true + }, + changeTime(val) { + debugger + this.changeTimeAge = { + 'startTime': val[0], + 'endTime': val[1] + } + this.crud.toQuery() } } }