feat(wms): 出库查询新增木箱编码和木箱描述字段
- 在出库查询界面添加木箱编码和木箱描述两个新字段 - 更新后端服务和数据库查询以支持新增字段
This commit is contained in:
@@ -29,7 +29,6 @@ import javax.servlet.http.HttpServletResponse;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
import java.util.concurrent.ConcurrentLinkedDeque;
|
import java.util.concurrent.ConcurrentLinkedDeque;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -45,7 +44,8 @@ import java.util.stream.Collectors;
|
|||||||
public class OutBillQueryServiceImpl implements OutBillQueryService {
|
public class OutBillQueryServiceImpl implements OutBillQueryService {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IpdmBiSubpackagerelationService ipdmBiSubpackagerelationService;
|
private IpdmBiSubpackagerelationService ipdmBiSubpackagerelationService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> queryAll(Map whereJson, Pageable page, String[] bill_types) {
|
public Map<String, Object> queryAll(Map whereJson, Pageable page, String[] bill_types) {
|
||||||
String stor_id = MapUtil.getStr(whereJson, "stor_id");
|
String stor_id = MapUtil.getStr(whereJson, "stor_id");
|
||||||
@@ -285,6 +285,7 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
|
|||||||
String end_time = MapUtil.getStr(map, "end_time");
|
String end_time = MapUtil.getStr(map, "end_time");
|
||||||
String pcsn = MapUtil.getStr(map, "pcsn");
|
String pcsn = MapUtil.getStr(map, "pcsn");
|
||||||
String customer_name = MapUtil.getStr(map, "customer_name");
|
String customer_name = MapUtil.getStr(map, "customer_name");
|
||||||
|
|
||||||
map.put("flag", "22");
|
map.put("flag", "22");
|
||||||
map.put("stor_id", stor_id);
|
map.put("stor_id", stor_id);
|
||||||
if (ObjectUtil.isNotEmpty(bill_types)) {
|
if (ObjectUtil.isNotEmpty(bill_types)) {
|
||||||
@@ -299,9 +300,11 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
|
|||||||
if (StrUtil.isNotEmpty(pcsn)){
|
if (StrUtil.isNotEmpty(pcsn)){
|
||||||
// 判断是否有空格
|
// 判断是否有空格
|
||||||
boolean matches = pcsn.matches(".*\\s.*");
|
boolean matches = pcsn.matches(".*\\s.*");
|
||||||
|
|
||||||
if (matches) {
|
if (matches) {
|
||||||
String[] s = pcsn.split(" ");
|
String[] s = pcsn.split(" ");
|
||||||
String pcsn_in = String.join("','", Arrays.asList(s));
|
String pcsn_in = String.join("','", Arrays.asList(s));
|
||||||
|
|
||||||
map.put("pcsn_in", "('"+pcsn_in+"')");
|
map.put("pcsn_in", "('"+pcsn_in+"')");
|
||||||
map.put("pcsn", "");
|
map.put("pcsn", "");
|
||||||
} else {
|
} else {
|
||||||
@@ -311,6 +314,7 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
|
|||||||
if (ObjectUtil.isNotEmpty(customer_name)) {
|
if (ObjectUtil.isNotEmpty(customer_name)) {
|
||||||
map.put("customer_name", "%" + customer_name + "%");
|
map.put("customer_name", "%" + customer_name + "%");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理时间
|
// 处理时间
|
||||||
if (ObjectUtil.isNotEmpty(begin_time) && ObjectUtil.isNotEmpty(end_time)) {
|
if (ObjectUtil.isNotEmpty(begin_time) && ObjectUtil.isNotEmpty(end_time)) {
|
||||||
String begin_time_today = begin_time.substring(0, 10);
|
String begin_time_today = begin_time.substring(0, 10);
|
||||||
@@ -342,122 +346,133 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
|
|||||||
for (List<JSONObject> jsonObjects : deque) {
|
for (List<JSONObject> jsonObjects : deque) {
|
||||||
datas.addAll(jsonObjects);
|
datas.addAll(jsonObjects);
|
||||||
}
|
}
|
||||||
List<Map<String, String>> list = new ArrayList<>();
|
ConcurrentLinkedDeque<List<Map<String,String>>> listDeque = new ConcurrentLinkedDeque<>();
|
||||||
for (int i = 0; i < resultJSONArray.size(); i++) {
|
Lists.partition(resultJSONArray,1000).stream().map((Function<List, CompletableFuture>) o->CompletableFuture.runAsync(() -> {
|
||||||
JSONObject json = resultJSONArray.getJSONObject(i);
|
List<Map<String, String>> items = new ArrayList<>();
|
||||||
Map<String, String> mp = new LinkedHashMap<>();
|
for (Object item : o) {
|
||||||
// 查询第一次入库的源销售订单
|
JSONObject json = (JSONObject) item;
|
||||||
JSONObject jsonSub = datas.stream()
|
Map<String, String> mp = new LinkedHashMap<>();
|
||||||
.filter(row -> row.getString("container_name").equals(json.getString("pcsn")))
|
// 查询第一次入库的源销售订单
|
||||||
.min(Comparator.comparing(row -> row.getString("insert_time")))
|
JSONObject jsonSub = datas.stream()
|
||||||
.orElse(null);
|
.filter(row -> row.getString("container_name").equals(json.getString("pcsn")))
|
||||||
|
.min(Comparator.comparing(row -> row.getString("insert_time")))
|
||||||
|
.orElse(null);
|
||||||
|
|
||||||
mp.put("仓库", json.getString("stor_name"));
|
mp.put("仓库", json.getString("stor_name"));
|
||||||
if (ObjectUtil.isNotEmpty(bill_type) && "1004".equals(bill_type)) {
|
if (ObjectUtil.isNotEmpty(bill_type) && "1004".equals(bill_type)) {
|
||||||
mp.put("移入仓库", json.getString("in_stor_name"));
|
mp.put("移入仓库", json.getString("in_stor_name"));
|
||||||
}
|
|
||||||
mp.put("库区", json.getString("sect_name"));
|
|
||||||
mp.put("生产区域", json.getString("pcsn").substring(0, 2));
|
|
||||||
String bill_type1 = json.getString("bill_type");
|
|
||||||
|
|
||||||
String bill_name = "";
|
|
||||||
switch (bill_type1) {
|
|
||||||
case "1001" :
|
|
||||||
bill_name = "发货出库";
|
|
||||||
break;
|
|
||||||
case "1003" :
|
|
||||||
bill_name = "改切出库";
|
|
||||||
break;
|
|
||||||
case "1004" :
|
|
||||||
bill_name = "调拨出库";
|
|
||||||
break;
|
|
||||||
case "1005" :
|
|
||||||
bill_name = "拆箱出库";
|
|
||||||
break;
|
|
||||||
case "1006" :
|
|
||||||
bill_name = "返检出库";
|
|
||||||
break;
|
|
||||||
case "1007" :
|
|
||||||
bill_name = "超期报废";
|
|
||||||
break;
|
|
||||||
case "1008" :
|
|
||||||
bill_name = "退货报废";
|
|
||||||
break;
|
|
||||||
case "1010" :
|
|
||||||
bill_name = "质量问题报废";
|
|
||||||
break;
|
|
||||||
case "1002" :
|
|
||||||
bill_name = "其他报废";
|
|
||||||
break;
|
|
||||||
case "1011" :
|
|
||||||
bill_name = "分拣出库";
|
|
||||||
break;
|
|
||||||
case "1009" :
|
|
||||||
bill_name = "手工出库";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
mp.put("业务类型", bill_name);
|
|
||||||
mp.put("交货单号", json.getString("vbeln"));
|
|
||||||
mp.put("物流公司", json.getString("cust_name"));
|
|
||||||
mp.put("运费", json.getString("estimated_freight"));
|
|
||||||
mp.put("木箱号", json.getString("box_no"));
|
|
||||||
mp.put("物料编码", json.getString("material_code"));
|
|
||||||
mp.put("物料名称", json.getString("material_name"));
|
|
||||||
mp.put("子卷号", json.getString("pcsn"));
|
|
||||||
mp.put("sap批次", json.getString("sap_pcsn"));
|
|
||||||
mp.put("净重", json.getString("net_weight"));
|
|
||||||
mp.put("单位", json.getString("qty_unit_name"));
|
|
||||||
mp.put("管件类型", json.getString("paper_type"));
|
|
||||||
mp.put("管件编码", json.getString("paper_code"));
|
|
||||||
mp.put("管件描述", json.getString("paper_name"));
|
|
||||||
mp.put("客户编码", json.getString("customer_name"));
|
|
||||||
mp.put("发货客户名称", json.getString("customer_description"));
|
|
||||||
mp.put("销售订单", json.getString("sale_order_name"));
|
|
||||||
mp.put("行号", "");
|
|
||||||
mp.put("原销售订单", json.getString("sale_order_name"));
|
|
||||||
mp.put("原行号", "");
|
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(json.getString("sale_order_name"))) {
|
|
||||||
try {
|
|
||||||
mp.put("销售订单", json.getString("sale_order_name").substring(0, json.getString("sale_order_name").indexOf("-")));
|
|
||||||
mp.put("行号", json.getString("sale_order_name").substring(json.getString("sale_order_name").indexOf("-") + 1, json.getString("sale_order_name").length()));
|
|
||||||
} catch (Exception e) {
|
|
||||||
mp.put("销售订单", json.getString("sale_order_name"));
|
|
||||||
mp.put("行号", "");
|
|
||||||
}
|
}
|
||||||
}
|
mp.put("库区", json.getString("sect_name"));
|
||||||
// 原销售订单
|
mp.put("生产区域", json.getString("pcsn").substring(0, 2));
|
||||||
if (ObjectUtil.isEmpty(jsonSub)) {
|
String bill_type1 = json.getString("bill_type");
|
||||||
|
|
||||||
|
String bill_name = "";
|
||||||
|
switch (bill_type1) {
|
||||||
|
case "1001" :
|
||||||
|
bill_name = "发货出库";
|
||||||
|
break;
|
||||||
|
case "1003" :
|
||||||
|
bill_name = "改切出库";
|
||||||
|
break;
|
||||||
|
case "1004" :
|
||||||
|
bill_name = "调拨出库";
|
||||||
|
break;
|
||||||
|
case "1005" :
|
||||||
|
bill_name = "拆箱出库";
|
||||||
|
break;
|
||||||
|
case "1006" :
|
||||||
|
bill_name = "返检出库";
|
||||||
|
break;
|
||||||
|
case "1007" :
|
||||||
|
bill_name = "超期报废";
|
||||||
|
break;
|
||||||
|
case "1008" :
|
||||||
|
bill_name = "退货报废";
|
||||||
|
break;
|
||||||
|
case "1010" :
|
||||||
|
bill_name = "质量问题报废";
|
||||||
|
break;
|
||||||
|
case "1002" :
|
||||||
|
bill_name = "其他报废";
|
||||||
|
break;
|
||||||
|
case "1011" :
|
||||||
|
bill_name = "分拣出库";
|
||||||
|
break;
|
||||||
|
case "1009" :
|
||||||
|
bill_name = "手工出库";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
mp.put("业务类型", bill_name);
|
||||||
|
mp.put("交货单号", json.getString("vbeln"));
|
||||||
|
mp.put("物流公司", json.getString("cust_name"));
|
||||||
|
mp.put("运费", json.getString("estimated_freight"));
|
||||||
|
mp.put("木箱号", json.getString("box_no"));
|
||||||
|
mp.put("木箱编码", json.getString("box_material_code"));
|
||||||
|
mp.put("木箱描述", json.getString("box_material_name"));
|
||||||
|
mp.put("物料编码", json.getString("material_code"));
|
||||||
|
mp.put("物料名称", json.getString("material_name"));
|
||||||
|
mp.put("子卷号", json.getString("pcsn"));
|
||||||
|
mp.put("sap批次", json.getString("sap_pcsn"));
|
||||||
|
mp.put("净重", json.getString("net_weight"));
|
||||||
|
mp.put("单位", json.getString("qty_unit_name"));
|
||||||
|
mp.put("管件类型", json.getString("paper_type"));
|
||||||
|
mp.put("管件编码", json.getString("paper_code"));
|
||||||
|
mp.put("管件描述", json.getString("paper_name"));
|
||||||
|
mp.put("客户编码", json.getString("customer_name"));
|
||||||
|
mp.put("发货客户名称", json.getString("customer_description"));
|
||||||
|
mp.put("销售订单", json.getString("sale_order_name"));
|
||||||
|
mp.put("行号", "");
|
||||||
|
mp.put("原销售订单", json.getString("sale_order_name"));
|
||||||
|
mp.put("原行号", "");
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(json.getString("sale_order_name"))) {
|
if (ObjectUtil.isNotEmpty(json.getString("sale_order_name"))) {
|
||||||
try {
|
try {
|
||||||
mp.put("原销售订单", json.getString("sale_order_name").substring(0, json.getString("sale_order_name").indexOf("-")));
|
mp.put("销售订单", json.getString("sale_order_name").substring(0, json.getString("sale_order_name").indexOf("-")));
|
||||||
mp.put("原行号", json.getString("sale_order_name").substring(json.getString("sale_order_name").indexOf("-") + 1, json.getString("sale_order_name").length()));
|
mp.put("行号", json.getString("sale_order_name").substring(json.getString("sale_order_name").indexOf("-") + 1, json.getString("sale_order_name").length()));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
mp.put("原销售订单", json.getString("sale_order_name"));
|
mp.put("销售订单", json.getString("sale_order_name"));
|
||||||
mp.put("原行号", "");
|
mp.put("行号", "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
// 原销售订单
|
||||||
if (ObjectUtil.isNotEmpty(jsonSub.getString("sale_order_name"))) {
|
if (ObjectUtil.isEmpty(jsonSub)) {
|
||||||
try {
|
if (ObjectUtil.isNotEmpty(json.getString("sale_order_name"))) {
|
||||||
mp.put("原销售订单", jsonSub.getString("sale_order_name").substring(0, jsonSub.getString("sale_order_name").indexOf("-")));
|
try {
|
||||||
mp.put("原行号", jsonSub.getString("sale_order_name").substring(jsonSub.getString("sale_order_name").indexOf("-") + 1, jsonSub.getString("sale_order_name").length()));
|
mp.put("原销售订单", json.getString("sale_order_name").substring(0, json.getString("sale_order_name").indexOf("-")));
|
||||||
} catch (Exception e) {
|
mp.put("原行号", json.getString("sale_order_name").substring(json.getString("sale_order_name").indexOf("-") + 1, json.getString("sale_order_name").length()));
|
||||||
mp.put("原销售订单", jsonSub.getString("sale_order_name"));
|
} catch (Exception e) {
|
||||||
mp.put("原行号", "");
|
mp.put("原销售订单", json.getString("sale_order_name"));
|
||||||
|
mp.put("原行号", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (ObjectUtil.isNotEmpty(jsonSub.getString("sale_order_name"))) {
|
||||||
|
try {
|
||||||
|
mp.put("原销售订单", jsonSub.getString("sale_order_name").substring(0, jsonSub.getString("sale_order_name").indexOf("-")));
|
||||||
|
mp.put("原行号", jsonSub.getString("sale_order_name").substring(jsonSub.getString("sale_order_name").indexOf("-") + 1, jsonSub.getString("sale_order_name").length()));
|
||||||
|
} catch (Exception e) {
|
||||||
|
mp.put("原销售订单", jsonSub.getString("sale_order_name"));
|
||||||
|
mp.put("原行号", "");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mp.put("业务员", json.getString("sales_owner"));
|
||||||
|
mp.put("出库日期", json.getString("input_time"));
|
||||||
|
mp.put("产品规格", String.format("%.0f", json.getDoubleValue("width")));
|
||||||
|
mp.put("产品厚度", json.getString("thickness"));
|
||||||
|
mp.put("单位面积", json.getString("mass_per_unit_area"));
|
||||||
|
mp.put("制单人", json.getString("input_optname"));
|
||||||
|
mp.put("备注", json.getString("remark"));
|
||||||
|
items.add(mp);
|
||||||
}
|
}
|
||||||
mp.put("业务员", json.getString("sales_owner"));
|
listDeque.add(items);
|
||||||
mp.put("出库日期", json.getString("input_time"));
|
})).parallel().forEach(CompletableFuture::join);
|
||||||
mp.put("产品规格", String.format("%.0f", json.getDoubleValue("width")));
|
List<Map<String, String>> list = new ArrayList<>();
|
||||||
mp.put("产品厚度", json.getString("thickness"));
|
for (List<Map<String, String>> maps : listDeque) {
|
||||||
mp.put("单位面积", json.getString("mass_per_unit_area"));
|
list.addAll(maps);
|
||||||
mp.put("制单人", json.getString("input_optname"));
|
|
||||||
mp.put("备注", json.getString("remark"));
|
|
||||||
list.add(mp);
|
|
||||||
}
|
}
|
||||||
Set<String> set = list.get(0).keySet();
|
Set<String> set = listDeque.getFirst().get(0).keySet();
|
||||||
int colIndex = 0;
|
int colIndex = 0;
|
||||||
String[] col = new String[set.size()];
|
String[] col = new String[set.size()];
|
||||||
for (String s : set) {
|
for (String s : set) {
|
||||||
@@ -465,6 +480,5 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
|
|||||||
colIndex++;
|
colIndex++;
|
||||||
}
|
}
|
||||||
new FileUtil().downloadExcelIO(list,col,response);
|
new FileUtil().downloadExcelIO(list,col,response);
|
||||||
// FileUtil.downloadExcel(list, response);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -266,6 +266,8 @@
|
|||||||
base.cust_name,
|
base.cust_name,
|
||||||
dis.sect_name,
|
dis.sect_name,
|
||||||
dis.box_no,
|
dis.box_no,
|
||||||
|
bib.material_code box_material_code,
|
||||||
|
bib.material_name box_material_name,
|
||||||
dis.qty_unit_name,
|
dis.qty_unit_name,
|
||||||
mater.material_code,
|
mater.material_code,
|
||||||
mater.material_name,
|
mater.material_name,
|
||||||
@@ -317,6 +319,7 @@
|
|||||||
a.pcsn
|
a.pcsn
|
||||||
) AS c
|
) AS c
|
||||||
inner JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = c.iostorinvdis_id
|
inner JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = c.iostorinvdis_id
|
||||||
|
inner JOIN bst_ivt_boxinfo bib ON dis.box_no = bib.box_no
|
||||||
inner JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
|
inner JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
|
||||||
inner JOIN st_ivt_iostorinvdtl dtl ON dtl.iostorinvdtl_id = dis.iostorinvdtl_id
|
inner JOIN st_ivt_iostorinvdtl dtl ON dtl.iostorinvdtl_id = dis.iostorinvdtl_id
|
||||||
LEFT JOIN md_cs_transportationbase base ON base.cust_code = mst.trans_code
|
LEFT JOIN md_cs_transportationbase base ON base.cust_code = mst.trans_code
|
||||||
@@ -385,6 +388,8 @@
|
|||||||
base.cust_name,
|
base.cust_name,
|
||||||
dis.sect_name,
|
dis.sect_name,
|
||||||
dis.box_no,
|
dis.box_no,
|
||||||
|
bib.material_code box_material_code,
|
||||||
|
bib.material_name box_material_name,
|
||||||
dis.qty_unit_name,
|
dis.qty_unit_name,
|
||||||
mater.material_code,
|
mater.material_code,
|
||||||
mater.material_name,
|
mater.material_name,
|
||||||
@@ -436,6 +441,7 @@
|
|||||||
a.pcsn
|
a.pcsn
|
||||||
) AS c
|
) AS c
|
||||||
inner JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = c.iostorinvdis_id
|
inner JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = c.iostorinvdis_id
|
||||||
|
inner JOIN bst_ivt_boxinfo bib ON dis.box_no = bib.box_no
|
||||||
inner JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
|
inner JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
|
||||||
inner JOIN st_ivt_iostorinvdtl dtl ON dtl.iostorinvdtl_id = dis.iostorinvdtl_id
|
inner JOIN st_ivt_iostorinvdtl dtl ON dtl.iostorinvdtl_id = dis.iostorinvdtl_id
|
||||||
LEFT JOIN md_cs_transportationbase base ON base.cust_code = mst.trans_code
|
LEFT JOIN md_cs_transportationbase base ON base.cust_code = mst.trans_code
|
||||||
|
|||||||
Reference in New Issue
Block a user