From 0ed95fb43567d27010365619c54e640fbcf51411 Mon Sep 17 00:00:00 2001 From: yangyufu Date: Wed, 11 Feb 2026 16:21:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=88=90=E5=93=81=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E7=AE=A1=E7=90=86=20=E5=92=8C=20=E5=AD=90=E5=8D=B7=E5=8C=85?= =?UTF-8?q?=E8=A3=85):=20-=20=E4=BF=AE=E5=A4=8D=E5=AD=90=E5=8D=B7=E5=8C=85?= =?UTF-8?q?=E8=A3=85=20=E6=9C=AA=E6=8C=89=E6=9F=A5=E8=AF=A2=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E8=BF=9B=E8=A1=8C=E5=AF=BC=E5=87=BA=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E3=80=82=20-=20=E7=A7=BB=E9=99=A4=E5=AF=BC=E5=87=BA=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E6=96=AD=E7=82=B9=20-=20=E4=BF=AE=E5=A4=8DWQL?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=AF=AD=E5=8F=A5=E4=B8=AD=E7=9A=84=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E5=BC=95=E7=94=A8=E9=94=99=E8=AF=AF=E3=80=82=20-=20?= =?UTF-8?q?=E7=89=A9=E6=80=A7=E5=AD=97=E6=AE=B5=E6=8B=86=E5=88=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E5=85=BC=E5=AE=B9=E5=8E=86=E5=8F=B2=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E3=80=82=20-=20=E6=B7=BB=E5=8A=A0=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E7=89=A9=E6=80=A7=E5=80=BC=E5=AD=97=E6=AE=B5=E6=98=A0=E5=B0=84?= =?UTF-8?q?=EF=BC=8C=E5=8C=85=E6=8B=AC=E5=AE=A2=E6=88=B7=E8=A6=81=E6=B1=82?= =?UTF-8?q?=E8=A7=84=E6=A0=BC=E5=B9=85=E5=AE=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../st/service/impl/StructivtServiceImpl.java | 107 +++++++++++++++++- .../impl/SubpackagerelationServiceImpl.java | 107 +++++++++++++++++- .../nl/wms/pdm/wql/PDM_BI_SUBPACKAGER01.wql | 4 +- lms/nladmin-ui/src/views/wms/pdm/bi/index.vue | 14 ++- 4 files changed, 223 insertions(+), 9 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java index e7e949dbf..5b2680f44 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java @@ -389,7 +389,8 @@ public class StructivtServiceImpl implements StructivtService { } mp.put("库龄", json.getString("stock_age")); mp.put("生产时长", json.getString("produce_age")); - mp.put("产品规格(幅宽)", json.getString("width")); + mp.put("产品实际规格幅宽", json.getString("width")); + mp.put("客户要求规格幅宽", json.getString("width_standard")); mp.put("产品厚度", json.getString("thickness")); mp.put("单位面积重量", json.getString("mass_per_unit_area")); mp.put("净重", json.getString("net_weight")); @@ -397,7 +398,20 @@ public class StructivtServiceImpl implements StructivtService { mp.put("长度", json.getString("length")); mp.put("接头数", json.getString("joint_type")); mp.put("计划外分切的子卷", json.getString("is_un_plan_production")); - mp.put("子卷的物性值1", json.getString("un_plan_product_property1")); + String unPlanProductProperty1 = json.getString("un_plan_product_property1"); + mp.put("子卷的物性值1", unPlanProductProperty1); + Object parsedData = parseJsonData(unPlanProductProperty1); + if (parsedData instanceof JSONArray) { + JSONArray jsonArray = (JSONArray) parsedData; + if (!jsonArray.isEmpty()) { + JSONObject firstItem = jsonArray.getJSONObject(0); + buildMap(mp, firstItem,true); + }else{ + buildMap(mp, null,false); + } + }else { + buildMap(mp, null,false); + } mp.put("子卷的物性值2", json.getString("un_plan_product_property2")); mp.put("子卷的物性值3", json.getString("un_plan_product_property3")); if ("1".equals(json.getString("remark"))) { @@ -412,7 +426,6 @@ public class StructivtServiceImpl implements StructivtService { mp.put("是否管控", json.getString("lock_type").equals("88") ? "是" : "否"); mp.put("是否需要重打外包装标签", json.getString("isreprintpackageboxlabel")); mp.put("是否需要拆包重打子卷标签", json.getString("isunpackbox")); - mp.put("客户要求规格幅宽", json.getString("width_standard")); mp.put("物料标准厚度", json.getString("thickness_request")); mp.put("管件类型", json.getString("paper_type")); mp.put("管件编码", json.getString("paper_code")); @@ -422,6 +435,94 @@ public class StructivtServiceImpl implements StructivtService { FileUtil.downloadExcel(list, response); } + /** + * @description: 如果是jsonObject 格式,则进行数据封装 + **/ + public void buildMap(Map map, JSONObject data,boolean flag){ + //为了兼容历史数据导出 + if(!flag){ + map.put("厚度/μm", ""); + map.put("单位面积质量/g/m²", ""); + map.put("单位面积质量极差/g/m²", ""); + map.put("拉伸强度/Mpa", ""); + map.put("(高温拉伸强度/Mpa)", ""); + map.put("延伸率/%", ""); + map.put("高温拉伸强度/Mpa", ""); + map.put("S面粗糙度Ra/μm", ""); + map.put("M面粗糙度Rz/μm", ""); + map.put("M面光泽度/GU", ""); + map.put("铜箔卷曲高度/mm", ""); + map.put("铬含量/ppm", ""); + map.put("抗氧化性能/150℃|10min", ""); + map.put("抗氧化性能/213℃30min", ""); + map.put("表面能/mN/m", ""); + map.put("剥离强度/N/mm", ""); + map.put("铜粉(一级、二级、三级)", ""); + map.put("可焊性", ""); + return; + } + //厚度/μm、 + map.put("厚度/μm",StrUtil.isNotBlank(data.getString("厚度/μm")) ? data.getString("厚度/μm") : ""); + //单位面积质量/g/m²、 + map.put("单位面积质量/g/m²",StrUtil.isNotBlank(data.getString("单位面积质量/g/m²")) ? data.getString("单位面积质量/g/m²") : ""); + //单位面积质量极差/g/m²、 + map.put("单位面积质量极差/g/m²",StrUtil.isNotBlank(data.getString("单位面积质量极差/g/m²")) ? data.getString("单位面积质量极差/g/m²") : ""); + //抗拉强度/Mpa + map.put("抗拉强度/Mpa",StrUtil.isNotBlank(data.getString("抗拉强度/Mpa")) ? data.getString("抗拉强度/Mpa") : ""); + //(高温拉伸强度/Mpa) + map.put("高温拉伸强度/Mpa",StrUtil.isNotBlank(data.getString("高温拉伸强度/Mpa")) ? data.getString("高温拉伸强度/Mpa") : ""); + //延伸率/% + map.put("延伸率/%",StrUtil.isNotBlank(data.getString("延伸率/%")) ? data.getString("延伸率/%") : ""); + // (高温延伸率/%) + map.put("(高温延伸率/%)",StrUtil.isNotBlank(data.getString("(高温延伸率/%)")) ? data.getString("(高温延伸率/%)") : ""); + //S面粗糙度Ra/μm + map.put("S面粗糙度Ra/μm",StrUtil.isNotBlank(data.getString("S面粗糙度Ra/μm")) ? data.getString("S面粗糙度Ra/μm") : ""); + //M面粗糙度Rz/μm + map.put("M面粗糙度Rz/μm",StrUtil.isNotBlank(data.getString("M面粗糙度Rz/μm")) ? data.getString("M面粗糙度Rz/μm") : ""); + //M面光泽度/GU + map.put("M面光泽度/GU",StrUtil.isNotBlank(data.getString("M面光泽度/GU")) ? data.getString("M面光泽度/GU") : ""); + //铜箔卷曲高度/mm + map.put("铜箔卷曲高度/mm",StrUtil.isNotBlank(data.getString("铜箔卷曲高度/mm")) ? data.getString("铜箔卷曲高度/mm") : ""); + //铬含量/ppm + map.put("铬含量/ppm",StrUtil.isNotBlank(data.getString("铬含量/ppm")) ? data.getString("铬含量/ppm") : ""); + //抗氧化性能/150℃|10min + map.put("抗氧化性能/150℃|10min",StrUtil.isNotBlank(data.getString("抗氧化性能/150℃|10min")) ? data.getString("抗氧化性能/150℃|10min") : ""); + // 抗氧化性能/213℃30min + map.put("抗氧化性能/213℃30min",StrUtil.isNotBlank(data.getString("抗氧化性能/213℃30min")) ? data.getString("抗氧化性能/213℃30min") : ""); + //表面能/mN/m + map.put("表面能/mN/m",StrUtil.isNotBlank(data.getString("表面能/mN/m")) ? data.getString("表面能/mN/m") : ""); + // 剥离强度/N/mm + map.put("剥离强度/N/mm",StrUtil.isNotBlank(data.getString("剥离强度/N/mm")) ? data.getString("剥离强度/N/mm") : ""); + //铜粉(一级、二级、三级) + map.put("铜粉(一级、二级、三级)",StrUtil.isNotBlank(data.getString("铜粉(一级、二级、三级)")) ? data.getString("铜粉(一级、二级、三级)") : ""); + //可焊性 + map.put("可焊性",StrUtil.isNotBlank(data.getString("可焊性")) ? data.getString("可焊性") : ""); + }; + public static Object parseJsonData(String jsonData) { + if (isValidArray(jsonData)) { + // 返回 JSONArray + return JSON.parseArray(jsonData); + } else { + // 返回原始字符串 + return jsonData; + } + } + /** + * @description: 判断是否为数组 + * @author ManMan.Yang + * @date: 2026/2/11 11:49 + **/ + public static boolean isValidArray(String jsonData) { + try { + JSONArray array = JSON.parseArray(jsonData); + // 如果解析成功且不为 null,则是有效数组 + return array != null; + } catch (Exception e) { + // 解析失败则不是有效数组 + return false; + } + } + @Override @Transactional(rollbackFor = Exception.class) public void save(JSONObject whereJson) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/service/impl/SubpackagerelationServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/service/impl/SubpackagerelationServiceImpl.java index 8ee5891e7..ac57a30d5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/service/impl/SubpackagerelationServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/service/impl/SubpackagerelationServiceImpl.java @@ -272,7 +272,22 @@ public class SubpackagerelationServiceImpl implements SubpackagerelationService mp.put("入库日期", json.getString("date_of_fg_inbound")); mp.put("木箱自身重量", json.getString("box_weight")); mp.put("保质期", json.getString("quality_guaran_period")); - mp.put("子卷的物性值1", json.getString("un_plan_product_property1")); + String unPlanProductProperty1 = json.getString("un_plan_product_property1"); + mp.put("子卷的物性值1", unPlanProductProperty1); + Object parsedData = parseJsonData(unPlanProductProperty1); + if (parsedData instanceof JSONArray) { + JSONArray jsonArray = (JSONArray) parsedData; + if (!jsonArray.isEmpty()) { + // 获取第一个元素 + JSONObject firstItem = jsonArray.getJSONObject(0); + // 动态遍历 JSONObject 的所有键值对 + buildMap(mp, firstItem,true); + }else{ + buildMap(mp, null,false); + } + }else { + buildMap(mp, null,false); + } mp.put("子卷的物性值2", json.getString("un_plan_product_property2")); mp.put("子卷的物性值3", json.getString("un_plan_product_property3")); mp.put("木箱料号", json.getString("box_type")); @@ -292,4 +307,94 @@ public class SubpackagerelationServiceImpl implements SubpackagerelationService FileUtil.downloadExcel(list, response); } + /** + * @description: 如果是jsonObject 格式,则进行数据封装 + * @author ManMan.Yang + * @date: 2026/2/11 13:32 + **/ + public void buildMap(Map map, JSONObject data,boolean flag){ + //为了兼容历史数据导出 + if(!flag){ + map.put("厚度/μm", ""); + map.put("单位面积质量/g/m²", ""); + map.put("单位面积质量极差/g/m²", ""); + map.put("拉伸强度/Mpa", ""); + map.put("(高温拉伸强度/Mpa)", ""); + map.put("延伸率/%", ""); + map.put("高温拉伸强度/Mpa", ""); + map.put("S面粗糙度Ra/μm", ""); + map.put("M面粗糙度Rz/μm", ""); + map.put("M面光泽度/GU", ""); + map.put("铜箔卷曲高度/mm", ""); + map.put("铬含量/ppm", ""); + map.put("抗氧化性能/150℃|10min", ""); + map.put("抗氧化性能/213℃30min", ""); + map.put("表面能/mN/m", ""); + map.put("剥离强度/N/mm", ""); + map.put("铜粉(一级、二级、三级)", ""); + map.put("可焊性", ""); + return; + } + //厚度/μm、 + map.put("厚度/μm",StrUtil.isNotBlank(data.getString("厚度/μm")) ? data.getString("厚度/μm") : ""); + //单位面积质量/g/m²、 + map.put("单位面积质量/g/m²",StrUtil.isNotBlank(data.getString("单位面积质量/g/m²")) ? data.getString("单位面积质量/g/m²") : ""); + //单位面积质量极差/g/m²、 + map.put("单位面积质量极差/g/m²",StrUtil.isNotBlank(data.getString("单位面积质量极差/g/m²")) ? data.getString("单位面积质量极差/g/m²") : ""); + //抗拉强度/Mpa + map.put("抗拉强度/Mpa",StrUtil.isNotBlank(data.getString("抗拉强度/Mpa")) ? data.getString("抗拉强度/Mpa") : ""); + //(高温拉伸强度/Mpa) + map.put("高温拉伸强度/Mpa",StrUtil.isNotBlank(data.getString("高温拉伸强度/Mpa")) ? data.getString("高温拉伸强度/Mpa") : ""); + //延伸率/% + map.put("延伸率/%",StrUtil.isNotBlank(data.getString("延伸率/%")) ? data.getString("延伸率/%") : ""); + // (高温延伸率/%) + map.put("(高温延伸率/%)",StrUtil.isNotBlank(data.getString("(高温延伸率/%)")) ? data.getString("(高温延伸率/%)") : ""); + //S面粗糙度Ra/μm + map.put("S面粗糙度Ra/μm",StrUtil.isNotBlank(data.getString("S面粗糙度Ra/μm")) ? data.getString("S面粗糙度Ra/μm") : ""); + //M面粗糙度Rz/μm + map.put("M面粗糙度Rz/μm",StrUtil.isNotBlank(data.getString("M面粗糙度Rz/μm")) ? data.getString("M面粗糙度Rz/μm") : ""); + //M面光泽度/GU + map.put("M面光泽度/GU",StrUtil.isNotBlank(data.getString("M面光泽度/GU")) ? data.getString("M面光泽度/GU") : ""); + //铜箔卷曲高度/mm + map.put("铜箔卷曲高度/mm",StrUtil.isNotBlank(data.getString("铜箔卷曲高度/mm")) ? data.getString("铜箔卷曲高度/mm") : ""); + //铬含量/ppm + map.put("铬含量/ppm",StrUtil.isNotBlank(data.getString("铬含量/ppm")) ? data.getString("铬含量/ppm") : ""); + //抗氧化性能/150℃|10min + map.put("抗氧化性能/150℃|10min",StrUtil.isNotBlank(data.getString("抗氧化性能/150℃|10min")) ? data.getString("抗氧化性能/150℃|10min") : ""); + // 抗氧化性能/213℃30min + map.put("抗氧化性能/213℃30min",StrUtil.isNotBlank(data.getString("抗氧化性能/213℃30min")) ? data.getString("抗氧化性能/213℃30min") : ""); + //表面能/mN/m + map.put("表面能/mN/m",StrUtil.isNotBlank(data.getString("表面能/mN/m")) ? data.getString("表面能/mN/m") : ""); + // 剥离强度/N/mm + map.put("剥离强度/N/mm",StrUtil.isNotBlank(data.getString("剥离强度/N/mm")) ? data.getString("剥离强度/N/mm") : ""); + //铜粉(一级、二级、三级) + map.put("铜粉(一级、二级、三级)",StrUtil.isNotBlank(data.getString("铜粉(一级、二级、三级)")) ? data.getString("铜粉(一级、二级、三级)") : ""); + //可焊性 + map.put("可焊性",StrUtil.isNotBlank(data.getString("可焊性")) ? data.getString("可焊性") : ""); + }; + public static Object parseJsonData(String jsonData) { + if (isValidArray(jsonData)) { + // 返回 JSONArray + return JSON.parseArray(jsonData); + } else { + // 返回原始字符串 + return jsonData; + } + } + /** + * @description: 判断是否为数组 + * @author ManMan.Yang + * @date: 2026/2/11 11:49 + **/ + public static boolean isValidArray(String jsonData) { + try { + JSONArray array = JSON.parseArray(jsonData); + // 如果解析成功且不为 null,则是有效数组 + return array != null; + } catch (Exception e) { + // 解析失败则不是有效数组 + return false; + } + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_BI_SUBPACKAGER01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_BI_SUBPACKAGER01.wql index 8aeabd1a3..3480866cc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_BI_SUBPACKAGER01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_BI_SUBPACKAGER01.wql @@ -299,11 +299,11 @@ ENDOPTION OPTION 输入.begin_time <> "" - sub.date_of_FG_inbound>= 输入.begin_time + date_of_FG_inbound>= 输入.begin_time ENDOPTION OPTION 输入.end_time <> "" - sub.date_of_FG_inbound <= 输入.end_time + date_of_FG_inbound <= 输入.end_time ENDOPTION OPTION 输入.status <> "" diff --git a/lms/nladmin-ui/src/views/wms/pdm/bi/index.vue b/lms/nladmin-ui/src/views/wms/pdm/bi/index.vue index 8cdd4a549..a1a2aa79d 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/bi/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/bi/index.vue @@ -62,6 +62,7 @@ > @@ -98,6 +99,7 @@ > @@ -144,6 +146,7 @@ > @@ -798,9 +801,7 @@ import udOperation from '@crud/UD.operation' import pagination from '@crud/Pagination' import { download } from '@/api/data' import { downloadFile } from '@/utils' -import crudUserStor from '@/views/wms/basedata/st/userStor/userStor' import crudPastivtquery from '@/views/wms/stat/pastivt/pastivtquery' -import { format } from 'date-fns' const defaultForm = { workorder_id: null, @@ -944,6 +945,14 @@ export default { methods: { // 钩子:在获取表格数据之前执行,false 则代表不获取数据 [CRUD.HOOK.beforeRefresh]() { + const rangeTime = this.query.createTime + if (rangeTime && Array.isArray(rangeTime) && rangeTime.length === 2) { + this.query.begin_time = this.query.createTime[0] + this.query.end_time = this.query.createTime[1] + } else { + this.query.begin_time = null + this.query.end_time = null + } return true }, toView(data) { @@ -1002,7 +1011,6 @@ export default { if (this.currentRow !== null) { this.showDtlLoading = true download('/api/subpackagerelation/download', this.crud.query).then(result => { - debugger downloadFile(result, '子卷包装', 'xlsx') this.showDtlLoading = false }).catch(() => {