rev:合同台账功能优化

This commit is contained in:
2024-09-14 14:31:50 +08:00
parent cbec03671b
commit 9ccc7715fd
5 changed files with 140 additions and 43 deletions

View File

@@ -194,6 +194,21 @@
ENDQUERY
ENDIF
IF 输入.flag = "9"
QUERY
SELECT
pp.*
FROM
purchase_contract_view pp
WHERE
1=1
OPTION 输入.no_ids <> ""
pp.vbillcode in 输入.no_ids
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -186,8 +186,8 @@ public class PcsIfPurchaseorderprocServiceImpl implements PcsIfPurchaseorderproc
orderTab.update(json);
}
@Override
public Map<String, Object> ledgerQuery(Map whereJson, Pageable page) {
public Map<String, Object> ledgerQuery2(Map whereJson, Pageable page) {
String material_code = MapUtil.getStr(whereJson, "material_code");
HashMap<String, String> map = new HashMap<>();
map.put("flag", "11");
@@ -257,9 +257,101 @@ public class PcsIfPurchaseorderprocServiceImpl implements PcsIfPurchaseorderproc
}
@Override
public Map<String, Object> receiveQuery(Map whereJson, Pageable page) {
public Map<String, Object> ledgerQuery(Map whereJson, Pageable page) {
String material_code = MapUtil.getStr(whereJson, "material_code");
HashMap<String, String> map = new HashMap<>();
map.put("flag", "11");
map.put("begin_time", MapUtil.getStr(whereJson, "begin_time"));
map.put("end_time", MapUtil.getStr(whereJson, "end_time"));
if (!ObjectUtil.isEmpty(material_code)) {
//处理转义字符
if (material_code.contains("\\")) {
material_code = material_code.replace("\\", "\\\\\\");
}
map.put("material_code", "%" + material_code + "%");
}
String vbillcode = MapUtil.getStr(whereJson, "vbillcode");
JSONObject json = WQL.getWO("QPCS_IF_PURCHASEORDERPROC02").addParam("vbillcode", vbillcode).addParam("flag", "2").pageQuery(WqlUtil.getHttpContext(page), "mst.receive_date desc");
String proc_status = MapUtil.getStr(whereJson, "proc_status");
String contract_no = MapUtil.getStr(whereJson, "contract_no");
String supp_name = MapUtil.getStr(whereJson, "supp_name");
String iszero = MapUtil.getStr(whereJson, "iszero");
if (!ObjectUtil.isEmpty(vbillcode)) {
map.put("vbillcode", "%" + vbillcode + "%");
}
if (!ObjectUtil.isEmpty(proc_status)) {
map.put("proc_status", proc_status);
}
if (!ObjectUtil.isEmpty(contract_no)) {
map.put("contract_no", "%" + contract_no + "%");
}
if (!ObjectUtil.isEmpty(supp_name)) {
map.put("supp_name", "%" + supp_name + "%");
}
String classIds = classstandardService.getAllChildIdStr(MaterOptTypeEnum.ZLFL.getClass_idStr());
map.put("classIds",classIds);
List<JSONObject> content = WQL.getWO("QPCS_IF_PURCHASEORDERPROC02")
.addParamMap(map).process().getResultJSONArray(0).toJavaList(JSONObject.class);
String no_ids = content.stream()
.filter(row -> ObjectUtil.isNotEmpty(row.getString("contract_no")))
.map(row -> row.getString("contract_no"))
.collect(Collectors.joining("','"));
// 查询erp视图 QTY_HT 重量 QTY_ZT 未到货重量NORIGTAXMNY 合同金额
List<JSONObject> ja = WQL.getWO("QERP").setDbname("dataSource1").addParam("flag", "8").addParam("no_ids", "('"+no_ids+"')").process().getResultJSONArray(0).toJavaList(JSONObject.class);
for (int i = 0; i < content.size(); i++) {
JSONObject jsonObject = content.get(i);
Optional<JSONObject> first = ja.stream()
.filter(row -> row.getString("vbillcode").equals(jsonObject.getString("contract_no"))
&& row.getString("item_code").equals(jsonObject.getString("material_code"))).findAny();
jsonObject.put("subscribedate",first.isPresent() ? first.get().get("subscribedate"): "");
// 合同重量
jsonObject.put("qty_ht",first.isPresent() ? first.get().get("qty_ht"): 0);
// 合同未到货重量
jsonObject.put("qty_zt",first.isPresent() ? first.get().get("qty_zt"): 0);
// 合同金额
jsonObject.put("norigtaxmny",first.isPresent() ? first.get().get("norigtaxmny"): 0);
}
// 判断是否有'合同未到货重量'的条件
if (ObjectUtil.isNotEmpty(iszero)) {
boolean is_zero = "true".equals(iszero);
if (is_zero) {
// 过滤掉不为零的数据
content = content.stream()
.filter(row -> row.getDoubleValue("qty_zt") == 0)
.collect(Collectors.toList());
} else {
// 过滤掉为零的数据
content = content.stream()
.filter(row -> row.getDoubleValue("qty_zt") != 0)
.collect(Collectors.toList());
}
}
// 根据签订时间排序(倒序)
content = content.stream()
.sorted(Comparator.comparing(row -> row.getString("subscribedate"),Comparator.reverseOrder()))
.collect(Collectors.toList());
// 组织分页查询并返回
Map<String, Object> json = PageUtil.toPage(
PageUtil.toPage(page.getPageNumber(), page.getPageSize(), content),
content.size()
);
return json;
}
@Override
public Map<String, Object> receiveQuery(Map whereJson, Pageable page) {
String id = MapUtil.getStr(whereJson, "id");
JSONObject json = WQL.getWO("QPCS_IF_PURCHASEORDERPROC02").addParam("source_billdtl_id", id).addParam("flag", "2").pageQuery(WqlUtil.getHttpContext(page), "mst.receive_date desc");
return json;
}

View File

@@ -21,6 +21,7 @@
输入.proc_status TYPEAS s_string
输入.contract_no TYPEAS s_string
输入.supp_name TYPEAS s_string
输入.source_billdtl_id TYPEAS s_string
输入.classIds TYPEAS f_string
输入.vbillcodes TYPEAS f_string
输入.iszero TYPEAS f_string
@@ -153,7 +154,7 @@
oder.remark
FROM
PCS_IF_PurchaseOrderProc oder
LEFT JOIN PCS_RC_ReceiveDtl dtl ON dtl.source_billdtl_id = oder.id AND dtl.source_bill_code = oder.vbillcode
LEFT JOIN PCS_RC_ReceiveDtl dtl ON dtl.source_billdtl_id = oder.id
LEFT JOIN md_cs_supplierbase supp ON oder.VEND_ID = supp.ext_id
LEFT JOIN md_me_materialbase mater ON oder.ITEM_ID = mater.ext_id
LEFT JOIN (
@@ -165,7 +166,7 @@
max( a.receive_id ) AS receive_id
FROM
PCS_RC_ReceiveDtl a
LEFT JOIN PCS_IF_PurchaseOrderProc p ON a.source_billdtl_id = p.id AND a.source_bill_code = p.vbillcode
LEFT JOIN PCS_IF_PurchaseOrderProc p ON a.source_billdtl_id = p.id
GROUP BY
a.source_billdtl_id
)
@@ -217,19 +218,11 @@
IF 输入.flag = "2"
PAGEQUERY
SELECT
oder.contract_no,
dtl.receive_code,
mater.material_code,
mater.material_name,
dtl.pcsn,
dtl.receive_qty,
dtl.instor_qty,
dtl.qty_unit_name,
dtl.status,
mst.input_optname,
oder.honor_time,
supp.honour_days,
mst.receive_date
mst.receive_code,
LEFT(mst.input_time,10) as input_time,
dtl.receive_qty,
dtl.receive_qty * oder.PRICE_TAX AS valmoney,
DATE_ADD(LEFT(mst.input_time,10),INTERVAL supp.honour_days DAY) AS plan_date
FROM
PCS_RC_ReceiveDtl dtl
LEFT JOIN PCS_IF_PurchaseOrderProc oder ON oder.id = dtl.source_billdtl_id
@@ -237,7 +230,7 @@
LEFT JOIN PCS_RC_ReceiveMst mst ON dtl.receive_id = mst.receive_id
LEFT JOIN md_cs_supplierbase supp ON oder.VEND_ID = supp.ext_id
WHERE
oder.vbillcode = 输入.vbillcode
dtl.source_billdtl_id = 输入.source_billdtl_id
ENDSELECT
ENDPAGEQUERY