diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/rest/DeviceScrapController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/rest/DeviceScrapController.java index 23505055..8739f7a1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/rest/DeviceScrapController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/rest/DeviceScrapController.java @@ -14,6 +14,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; import java.util.Map; /** @@ -43,4 +44,12 @@ public class DeviceScrapController { deviceScrapService.scrap(whereJson); return new ResponseEntity<>(HttpStatus.OK); } + + @GetMapping("/downloadWord") + @Log("下载word") + @ApiOperation("下载word") + public ResponseEntity downloadWord(@RequestParam Map whereJson, HttpServletResponse response) { + deviceScrapService.downloadWord(whereJson,response); + return new ResponseEntity<>(HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/service/DeviceScrapService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/service/DeviceScrapService.java index df5867e7..497dde52 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/service/DeviceScrapService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/service/DeviceScrapService.java @@ -4,6 +4,7 @@ package org.nl.wms.sb.run.service; import com.alibaba.fastjson.JSONObject; import org.springframework.data.domain.Pageable; +import javax.servlet.http.HttpServletResponse; import java.util.Map; /** @@ -27,4 +28,10 @@ public interface DeviceScrapService { * @param whereJson 参数 */ void scrap(JSONObject whereJson); + + /** + * 下载word + * @param whereJson 参数 + */ + void downloadWord(Map whereJson, HttpServletResponse response); } 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 new file mode 100644 index 00000000..05fb5952 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/run/service/dto/DownloadWordDto.java @@ -0,0 +1,44 @@ +package org.nl.wms.sb.run.service.dto; + +import com.sushengren.easyword.annotation.WordProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DownloadWordDto implements Serializable { + + @WordProperty("资产名称") + private String assets_name; + + @WordProperty("资产编码") + private String assets_code; + + @WordProperty("规格型号") + private String device_spec; + + @WordProperty("出厂编码") + private String leavefactory_number; + + @WordProperty("出厂日期") + private String leavefactory_date; + + @WordProperty("原值") + private String oraginal_value; + + @WordProperty("净额") + private String net_amount; + + @WordProperty("资产所在单位") + private String belong_dept; + + @WordProperty("资产使用人") + private String user_name; + +} 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 6a41e8d3..a40c192b 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 @@ -8,17 +8,26 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; +import com.sushengren.easyword.EasyWord; +import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.exception.BadRequestException; +import org.nl.modules.system.service.impl.ParamServiceImpl; import org.nl.utils.SecurityUtils; +import org.nl.utils.SpringContextHolder; import org.nl.wms.basedata.master.service.ClassstandardService; import org.nl.wms.sb.run.service.DeviceScrapService; +import org.nl.wms.sb.run.service.dto.DownloadWordDto; import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; import org.nl.wql.util.WqlUtil; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; @@ -98,4 +107,46 @@ public class DeviceScrapServiceImpl implements DeviceScrapService { jsonLife.put("create_time",DateUtil.now()); lifeTab.insert(jsonLife); } + + @Override + public void downloadWord(Map whereJson, HttpServletResponse response) { + try { + WQLObject fileTab = WQLObject.getWQLObject("EM_BI_EquipmentFile"); + WQLObject deptTab = WQLObject.getWQLObject("sys_dept"); + + String devicerecord_id = MapUtil.getStr(whereJson, "devicerecord_id"); + JSONObject jsonFile = fileTab.query("devicerecord_id = '" + devicerecord_id + "'").uniqueResult(0); + + String belong_deptid = jsonFile.getString("belong_deptid"); + JSONObject jsonDept = new JSONObject(); + if (ObjectUtil.isNotEmpty(belong_deptid)) { + jsonDept = deptTab.query("dept_id = '"+belong_deptid+"'").uniqueResult(0); + } + + // 设置浏览器导出word格式文件 + response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); + // 设置文件名和字符集 + String fileName = URLEncoder.encode(jsonFile.getString("device_name")+"报废表", "UTF-8"); + response.setHeader("Content-Disposition", "attachment; filename*=UTf-8''"+fileName+".docx"); + // 处理数据 + DownloadWordDto data = DownloadWordDto.builder() + .assets_name(jsonFile.getString("assets_name")) + .assets_code(jsonFile.getString("assets_code")) + .device_spec(jsonFile.getString("device_spec")) + .leavefactory_number(jsonFile.getString("leavefactory_number")) + .leavefactory_date(jsonFile.getString("leavefactory_date")) + .oraginal_value(jsonFile.getString("oraginal_value")) + .net_amount(jsonFile.getString("net_amount")) + .belong_dept(jsonDept.getString("name")) + .user_name(jsonFile.getString("user_name")).build(); + // 获取本地模板 + String path = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("DEVICE_WORD_PATH").getValue(); + // 下载 + File file = new File(path); + EasyWord.of(file).doWrite(data).toOutputStream(response.getOutputStream()); + } catch (Exception e) { + System.out.println(e.getMessage()); + throw new BadRequestException("下载异常"); + } + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/service/impl/DevicesafetyqtyqueryServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/service/impl/DevicesafetyqtyqueryServiceImpl.java index 2e4830ec..38fa8973 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/service/impl/DevicesafetyqtyqueryServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/service/impl/DevicesafetyqtyqueryServiceImpl.java @@ -47,10 +47,12 @@ public class DevicesafetyqtyqueryServiceImpl implements DevicesafetyqtyqueryServ String class_idStr = (String) whereJson.get("class_idStr"); String material_code = MapUtil.getStr(whereJson, "material_code"); String type = MapUtil.getStr(whereJson, "type"); + String is_all = MapUtil.getStr(whereJson, "is_all"); HashMap map = new HashMap<>(); map.put("flag", "1"); map.put("type",type); + map.put("is_all",is_all); if (ObjectUtil.isNotEmpty(material_code)) map.put("material_code", "%"+material_code+"%"); //处理物料当前节点的所有子节点 if (!StrUtil.isEmpty(material_type_id)) { @@ -61,15 +63,7 @@ public class DevicesafetyqtyqueryServiceImpl implements DevicesafetyqtyqueryServ String classIds = classstandardService.getAllChildIdStr(class_idStr); map.put("classIds", classIds); } - JSONObject json = WQL.getWO("EM_DEVICESAFETQTYQUERY001").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "ivt.material_id DESC"); - - JSONArray content = json.getJSONArray("content"); - for (int i = 0; i < content.size(); i++) { - JSONObject jsonObject = content.getJSONObject(i); - if (ObjectUtil.isEmpty(jsonObject.getString("safe_ivt_up"))) jsonObject.put("safe_ivt_up","99999999"); - if (ObjectUtil.isEmpty(jsonObject.getString("safe_ivt_down"))) jsonObject.put("safe_ivt_down","0"); - } - json.put("content",content); + JSONObject json = WQL.getWO("EM_DEVICESAFETQTYQUERY001").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "a.material_id DESC"); return json; } @@ -156,10 +150,12 @@ public class DevicesafetyqtyqueryServiceImpl implements DevicesafetyqtyqueryServ String class_idStr = (String) whereJson.get("class_idStr"); String material_code = MapUtil.getStr(whereJson, "material_code"); String type = MapUtil.getStr(whereJson, "type"); + String is_all = MapUtil.getStr(whereJson, "is_all"); HashMap map = new HashMap<>(); map.put("flag", "1"); map.put("type",type); + map.put("is_all",is_all); if (ObjectUtil.isNotEmpty(material_code)) map.put("material_code", "%"+material_code+"%"); //处理物料当前节点的所有子节点 if (!StrUtil.isEmpty(material_type_id)) { @@ -172,12 +168,6 @@ public class DevicesafetyqtyqueryServiceImpl implements DevicesafetyqtyqueryServ } JSONArray rows = WQL.getWO("EM_DEVICESAFETQTYQUERY001").addParamMap(map).process().getResultJSONArray(0); - for (int i = 0; i < rows.size(); i++) { - JSONObject jsonObject = rows.getJSONObject(i); - if (ObjectUtil.isEmpty(jsonObject.getString("safe_ivt_up"))) jsonObject.put("safe_ivt_up","99999999"); - if (ObjectUtil.isEmpty(jsonObject.getString("safe_ivt_down"))) jsonObject.put("safe_ivt_down","0"); - } - List> list = new ArrayList<>(); for (int i = 0; i < rows.size(); i++) { JSONObject jo = rows.getJSONObject(i); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/wql/EM_DEVICESAFETQTYQUERY001.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/wql/EM_DEVICESAFETQTYQUERY001.wql index 76f59ec4..5ec610af 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/wql/EM_DEVICESAFETQTYQUERY001.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/stat/wql/EM_DEVICESAFETQTYQUERY001.wql @@ -17,6 +17,7 @@ 输入.classIds TYPEAS f_string 输入.material_code TYPEAS s_string 输入.type TYPEAS s_string + 输入.is_all TYPEAS s_string [临时表] @@ -43,43 +44,72 @@ IF 输入.flag = "1" PAGEQUERY - SELECT - mater.material_code, - mater.material_name, - MAX( class.class_name ) AS class_name, - MAX( saivt.safe_ivt_up ) AS safe_ivt_up, - MAX( saivt.safe_ivt_down ) AS safe_ivt_down, - sum(ivt.ivt_qty) AS ivt_qty, - MAX(ivt.qty_unit_name) AS qty_unit_name - FROM - EM_BI_DeviceSparePartIvt ivt - LEFT JOIN ST_IVT_MaterialSafeIvt saivt ON saivt.material_id = ivt.material_id - LEFT JOIN md_me_materialbase mater ON mater.material_id = ivt.material_id - LEFT JOIN md_pb_classstandard class ON mater.material_type_id = class.class_id - WHERE - 1=1 - OPTION 输入.classIds <> "" - class.class_id in 输入.classIds - ENDOPTION + SELECT + a.material_id, + a.material_code, + a.material_name, + a.class_name, + a.safe_ivt_up, + a.safe_ivt_down, + a.ivt_qty, + a.qty_unit_name + FROM + ( + SELECT + mater.material_id, + mater.material_code, + mater.material_name, + class.class_name, + ( + CASE + WHEN fivt.safe_ivt_up is null THEN 99999999 ELSE fivt.safe_ivt_up + END + ) AS safe_ivt_up, + ( + CASE + WHEN fivt.safe_ivt_down is null THEN 0 ELSE fivt.safe_ivt_down + END + ) AS safe_ivt_down, + ( + CASE + WHEN pivt.ivt_qty is null THEN 0 ELSE pivt.ivt_qty + END + ) AS ivt_qty, + unit.unit_name AS qty_unit_name + FROM + md_me_materialbase mater + LEFT JOIN md_pb_classstandard class ON mater.material_type_id = class.class_id + LEFT JOIN ST_IVT_MaterialSafeIvt fivt ON fivt.material_id = mater.material_id + LEFT JOIN md_pb_measureunit unit ON unit.measure_unit_id = mater.base_unit_id + LEFT JOIN ( + SELECT + SUM(ivt.ivt_qty) AS ivt_qty, + ivt.material_id + FROM + EM_BI_DeviceSparePartIvt ivt + WHERE + 1=1 + group by ivt.material_id + ) pivt ON pivt.material_id = mater.material_id + WHERE + 1=1 - OPTION 输入.material_code <> "" - (mater.material_code like 输入.material_code or - mater.material_name like 输入.material_code) - ENDOPTION + OPTION 输入.classIds <> "" + class.class_id in 输入.classIds + ENDOPTION - OPTION 输入.type = "01" - ivt.ivt_qty > saivt.safe_ivt_up - ENDOPTION + OPTION 输入.material_code <> "" + (mater.material_code like 输入.material_code or + mater.material_name like 输入.material_code) + ENDOPTION + ) AS a - OPTION 输入.type = "02" - ivt.ivt_qty < saivt.safe_ivt_down - ENDOPTION + WHERE + 1=1 - OPTION 输入.type = "03" - saivt.safe_ivt_up <= ivt.ivt_qty <= saivt.safe_ivt_up - ENDOPTION - - group by ivt.material_id + OPTION 输入.is_all <> "0" + a.safe_ivt_down > a.ivt_qty or a.ivt_qty > a.safe_ivt_up + ENDOPTION ENDSELECT ENDPAGEQUERY 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 3508eaa1..4c50e3ed 100644 --- a/mes/qd/src/views/wms/sb/run/devicescrap/index.vue +++ b/mes/qd/src/views/wms/sb/run/devicescrap/index.vue @@ -114,6 +114,17 @@ > 报废 + + 下载Word + @@ -161,6 +172,8 @@ 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 {download} from "@/api/data"; +import {downloadFile} from "@/utils"; const defaultForm = { status: null } export default { @@ -267,6 +280,15 @@ export default { } else { return this.crud.notify('设备状态不为正常或者闲置', CRUD.NOTIFICATION_TYPE.INFO) } + }, + downloadWord() { + const _selectData = this.$refs.table.selection + const data = _selectData[0] + download('/api/devicescrap/downloadWord', { 'devicerecord_id': data.devicerecord_id }).then(result => { + const name = data.device_name + '报废档案' + this.crud.toQuery() + downloadFile(result, name, 'docx') + }) } } } diff --git a/mes/qd/src/views/wms/sb/stat/devicesafetyqtyquery/index.vue b/mes/qd/src/views/wms/sb/stat/devicesafetyqtyquery/index.vue index 5cb5307d..215fec20 100644 --- a/mes/qd/src/views/wms/sb/stat/devicesafetyqtyquery/index.vue +++ b/mes/qd/src/views/wms/sb/stat/devicesafetyqtyquery/index.vue @@ -28,23 +28,10 @@ placeholder="编码、名称" /> + + + - @@ -68,9 +55,9 @@ - - - + + + @@ -186,16 +173,6 @@ export default { }) } }, - formatUp(row, cloum) { - if (row.safe_ivt_up === '') { - return '999999' - } - }, - formatDown(row, cloum) { - if (row.safe_ivt_down === '') { - return '0' - } - }, cellStyle({ row, column, rowIndex, columnIndex }) { const safe_ivt_down = parseInt(row.safe_ivt_down) const safe_ivt_up = parseInt(row.safe_ivt_up)