opt:优化前端查询

This commit is contained in:
DESKTOP-5DIJMF9\admin
2025-02-26 13:05:33 +08:00
parent 99e74eca0b
commit e54878bbe8
5 changed files with 259 additions and 27 deletions

View File

@@ -7,8 +7,12 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.FileUtil;
@@ -23,10 +27,13 @@ import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl;
import org.nl.wms.ext.mes.service.LmsToMesService;
import org.nl.wms.ext.mes.service.impl.LmsToMesServiceImpl;
import org.nl.wms.ext.sap.service.impl.LmsToSapServiceImpl;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.service.TaskService;
import org.nl.wms.st.returns.service.InAndOutReturnService;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
@@ -41,6 +48,8 @@ import java.util.stream.Collectors;
public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
private final ISysUserService iSysUserService;
@Resource
private IschBaseTaskService schBaseTaskService;
@Override
public Map<String, Object> pageQuery(Map whereJson, Pageable page) {
@@ -53,6 +62,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
map.put("bill_status", MapUtil.getStr(whereJson, "bill_status"));
map.put("bill_type", MapUtil.getStr(whereJson, "bill_type"));
map.put("is_upload", MapUtil.getStr(whereJson, "is_upload"));
map.put("upload_mes", MapUtil.getStr(whereJson, "upload_mes"));
map.put("upload_sap", MapUtil.getStr(whereJson, "upload_sap"));
String begin_time = MapUtil.getStr(whereJson, "begin_time");
if (StrUtil.isNotEmpty(begin_time)) {
map.put("begin_time", begin_time.substring(0,10)+" 00:00:00");
@@ -260,6 +271,9 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
// 返检出库回传mes
if (StrUtil.equals(bill_type, "1006")) {
JSONArray disArr = WQL.getWO("QST_IVT_INANDOUTRETRUN").addParam("flag", "2").addParam("iostorinv_id", jo_mst.getString("iostorinv_id")).process().getResultJSONArray(0);
// 判断是否有未完成的任务
ifUnTask(disArr.toJavaList(JSONObject.class));
for (int j = 0; j < disArr.size(); j++) {
JSONObject json = disArr.getJSONObject(j);
// 删除对应的包装关系
@@ -368,6 +382,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
// 改切出库回传mes
if (StrUtil.equals(bill_type, "1003")) {
JSONArray disArr = WQL.getWO("QST_IVT_INANDOUTRETRUN").addParam("flag", "2").addParam("iostorinv_id", jo_mst.getString("iostorinv_id")).process().getResultJSONArray(0);
// 判断是否有未完成的任务
ifUnTask(disArr.toJavaList(JSONObject.class));
for (int j = 0; j < disArr.size(); j++) {
JSONObject json = disArr.getJSONObject(j);
@@ -1492,6 +1508,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
// 改切出库回传mes
if (StrUtil.equals(bill_type, "1003")) {
JSONArray disArr = WQL.getWO("QST_IVT_INANDOUTRETRUN").addParam("flag", "2").addParam("iostorinv_id", jo_mst.getString("iostorinv_id")).process().getResultJSONArray(0);
// 判断是否有未完成的任务
ifUnTask(disArr.toJavaList(JSONObject.class));
for (int j = 0; j < disArr.size(); j++) {
JSONObject json = disArr.getJSONObject(j);
// 删除对应的包装关系
@@ -1530,6 +1548,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
// 返检出库回传mes
if (StrUtil.equals(bill_type, "1006")) {
JSONArray disArr = WQL.getWO("QST_IVT_INANDOUTRETRUN").addParam("flag", "2").addParam("iostorinv_id", jo_mst.getString("iostorinv_id")).process().getResultJSONArray(0);
// 判断是否有未完成的任务
ifUnTask(disArr.toJavaList(JSONObject.class));
for (int j = 0; j < disArr.size(); j++) {
JSONObject json = disArr.getJSONObject(j);
// 删除对应的包装关系
@@ -1699,5 +1719,28 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService {
}
}
/**
* 判断返检/改切出库是否有未完成的任务
* @param disList出库单明细木箱号
*/
private void ifUnTask(List<JSONObject> disList) {
// 查询有没有未完成的任务
List<String> box_no = disList.stream()
.map(row -> row.getString("box_no"))
.collect(Collectors.toList());
List<SchBaseTask> taskList = schBaseTaskService.list(
new QueryWrapper<SchBaseTask>().lambda()
.in(SchBaseTask::getVehicle_code, box_no)
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code(""))
.ne(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
);
if (ObjectUtil.isNotEmpty(taskList)) {
throw new BadRequestException("请等待木箱【"+taskList.stream().map(SchBaseTask::getVehicle_code).collect(Collectors.joining(","))+"】的所有任务完成之后再回传!");
}
}
}

View File

@@ -21,6 +21,8 @@
输入.stor_id TYPEAS s_string
输入.bill_status TYPEAS s_string
输入.is_upload TYPEAS s_string
输入.upload_mes TYPEAS s_string
输入.upload_sap TYPEAS s_string
输入.begin_time TYPEAS s_string
输入.end_time TYPEAS s_string
输入.vbeln TYPEAS s_string
@@ -96,6 +98,12 @@
OPTION 输入.is_upload <> ""
mst.is_upload = 输入.is_upload
ENDOPTION
OPTION 输入.upload_mes <> ""
mst.upload_mes = 输入.upload_mes
ENDOPTION
OPTION 输入.upload_sap <> ""
mst.upload_sap = 输入.upload_sap
ENDOPTION
OPTION 输入.begin_time <> ""
mst.input_time >= 输入.begin_time
ENDOPTION

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
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;
@@ -59,6 +60,7 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
}
map.put("with", with);
map.put("begin_time", begin_time);
map.put("pcsn", pcsn);
map.put("end_time", end_time);
if (ObjectUtil.isNotEmpty(customer_name)) {
@@ -90,7 +92,21 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
map.put("bill_type", joiner.toString());
}
map.put("with", with);
map.put("pcsn", pcsn);
// 空格查询
if (StrUtil.isNotEmpty(pcsn)){
// 判断是否有空格
boolean matches = pcsn.matches(".*\\s.*");
if (matches) {
String[] s = pcsn.split(" ");
String pcsn_in = String.join("','", Arrays.asList(s));
map.put("pcsn_in", "('"+pcsn_in+"')");
map.put("pcsn", "");
} else {
map.put("pcsn", pcsn);
}
}
if (ObjectUtil.isNotEmpty(customer_name)) {
map.put("customer_name", "%" + customer_name + "%");
}
@@ -189,7 +205,7 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
String customer_name = MapUtil.getStr(map, "customer_name");
JSONObject mapParam = new JSONObject();
mapParam.put("flag", "1");
mapParam.put("flag", "11");
mapParam.put("stor_id", stor_id);
if (ObjectUtil.isNotEmpty(bill_types)) {
StringJoiner joiner = new StringJoiner(",", "(", ")");
@@ -263,7 +279,7 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
String pcsn = MapUtil.getStr(map, "pcsn");
String customer_name = MapUtil.getStr(map, "customer_name");
map.put("flag", "2");
map.put("flag", "22");
map.put("stor_id", stor_id);
if (ObjectUtil.isNotEmpty(bill_types)) {
StringJoiner joiner = new StringJoiner(",", "(", ")");
@@ -273,7 +289,21 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
map.put("bill_type", joiner.toString());
}
map.put("with", with);
map.put("pcsn", pcsn);
// 空格查询
if (StrUtil.isNotEmpty(pcsn)){
// 判断是否有空格
boolean matches = pcsn.matches(".*\\s.*");
if (matches) {
String[] s = pcsn.split(" ");
String pcsn_in = String.join("','", Arrays.asList(s));
map.put("pcsn_in", "('"+pcsn_in+"')");
map.put("pcsn", "");
} else {
map.put("pcsn", pcsn);
}
}
if (ObjectUtil.isNotEmpty(customer_name)) {
map.put("customer_name", "%" + customer_name + "%");
}
@@ -379,33 +409,40 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
mp.put("管件描述", json.getString("paper_name"));
mp.put("客户编码", json.getString("customer_name"));
mp.put("发货客户名称", json.getString("customer_description"));
if (ObjectUtil.isEmpty(json.getString("sale_order_name"))) {
throw new BadRequestException("子卷" + json.getString("pcsn") + "销售订单为空!");
}
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("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("行号", "");
}
}
// 原销售订单
if (ObjectUtil.isEmpty(jsonSub)) {
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("行号", "");
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("原行号", "");
}
}
} else {
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("行号", "");
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("原行号", "");
}
}
}

View File

@@ -21,6 +21,7 @@
输入.begin_time TYPEAS s_string
输入.end_time TYPEAS s_string
输入.customer_name TYPEAS s_string
输入.pcsn_in TYPEAS f_string
[临时表]
@@ -148,6 +149,109 @@
ENDPAGEQUERY
ENDIF
IF 输入.flag = "11"
QUERY
SELECT
mst.stor_name,
dis.sect_name,
mst.bill_type,
dtl.vbeln,
base.cust_name,
mst.estimated_freight,
dis.box_no,
mater.material_code,
mater.material_name,
dis.pcsn,
sub.sap_pcsn,
sub.net_weight,
dis.qty_unit_name,
sub.customer_name,
sub.customer_description,
sub.sale_order_name,
mst.input_time,
sub.width,
sub.thickness,
sub.mass_per_unit_area,
mst.input_optname,
case when plan.paper_tube_or_FRP = '1' then '纸管' when plan.paper_tube_or_FRP = '2' then 'FRP管' end AS paper_type,
case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_material when plan.paper_tube_or_FRP = '2' then plan.FRP_material end AS paper_code,
case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_description when plan.paper_tube_or_FRP = '2' then plan.FRP_description end AS paper_name,
mst.remark,
stor.stor_name AS in_stor_name
FROM
(
SELECT
MAX( a.iostorinvdis_id ) AS iostorinvdis_id
FROM
st_ivt_iostorinvdis a
LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id
WHERE
b.io_type = '1'
OPTION 输入.bill_type <> ""
b.bill_type IN 输入.bill_type
ENDOPTION
OPTION 输入.pcsn <> ""
a.pcsn = 输入.pcsn
ENDOPTION
AND b.bill_status = '99'
GROUP BY
pcsn
) AS c
LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = c.iostorinvdis_id
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
LEFT 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_me_materialbase mater ON mater.material_id = dis.material_id
LEFT JOIN st_ivt_bsrealstorattr stor ON stor.stor_id = mst.out_stor_id
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no
LEFT JOIN (SELECT
container_name,
MAX(paper_tube_or_FRP) AS paper_tube_or_FRP,
MAX(paper_tube_material) AS paper_tube_material,
MAX(paper_tube_description) AS paper_tube_description,
MAX(paper_tube_model) AS paper_tube_model,
MAX(FRP_material) AS FRP_material,
MAX(FRP_description) AS FRP_description,
MAX(FRP_model) AS FRP_model
FROM
pdm_bi_slittingproductionplan plan1
WHERE
plan1.is_delete = '0'
GROUP BY container_name) plan ON plan.container_name = sub.container_name
WHERE
mst.io_type = '1'
AND mst.is_delete = '0'
AND mst.bill_status = '99'
OPTION 输入.stor_id <> ""
mst.stor_id = 输入.stor_id
ENDOPTION
OPTION 输入.bill_type <> ""
mst.bill_type IN 输入.bill_type
ENDOPTION
OPTION 输入.begin_time <> ""
mst.input_time >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
mst.input_time <= 输入.end_time
ENDOPTION
OPTION 输入.with <> ""
CONCAT(sub.width,'*',sub.thickness) = 输入.with
ENDOPTION
OPTION 输入.customer_name <> ""
(sub.customer_name LIKE 输入.customer_name OR
sub.customer_description LIKE 输入.customer_name)
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "2"
PAGEQUERY
SELECT
@@ -200,6 +304,9 @@
OPTION 输入.pcsn <> ""
a.pcsn = 输入.pcsn
ENDOPTION
OPTION 输入.pcsn_in <> ""
a.pcsn IN 输入.pcsn_in
ENDOPTION
OPTION 输入.begin_time <> ""
b.confirm_time >= 输入.begin_time
ENDOPTION
@@ -316,6 +423,9 @@
OPTION 输入.pcsn <> ""
a.pcsn = 输入.pcsn
ENDOPTION
OPTION 输入.pcsn_in <> ""
a.pcsn IN 输入.pcsn_in
ENDOPTION
OPTION 输入.begin_time <> ""
b.confirm_time >= 输入.begin_time
ENDOPTION
@@ -376,7 +486,7 @@
plan1.is_delete = '0'
GROUP BY container_name) plan ON plan.container_name = sub.container_name
WHERE 1=1
limit 0,10000
limit 0,50000
ENDSELECT
ENDQUERY
ENDIF