feat(成品库存管理 和 子卷包装):
- 修复子卷包装 未按查询时间进行导出问题。 - 移除导出功能断点 - 修复WQL查询语句中的字段引用错误。 - 物性字段拆分功能,兼容历史数据。 - 添加新的物性值字段映射,包括客户要求规格幅宽。
This commit is contained in:
@@ -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<String, Object> 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) {
|
||||
|
||||
@@ -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<String, Object> 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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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 <> ""
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
>
|
||||
<el-option
|
||||
v-for="item in isPlanProducList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
@@ -98,6 +99,7 @@
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.sub_package_relation"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
@@ -144,6 +146,7 @@
|
||||
>
|
||||
<el-option
|
||||
v-for="item in typeList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
@@ -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(() => {
|
||||
|
||||
Reference in New Issue
Block a user