From cfa2d1bf7847e5c982c68e0892f5d2ca64638934 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期五, 20 三月 2026 16:20:24 +0800
Subject: [PATCH] #
---
src/main/webapp/views/wrkMast/wrkMast.html | 10 +++
src/main/java/com/zy/asrs/entity/WrkMast.java | 6 ++
src/main/webapp/static/js/wrkMast/wrkMast.js | 6 ++
src/main/java/com/zy/asrs/controller/WrkMastController.java | 106 +++++++++++++++++++++++++++++++++++
4 files changed, 127 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/WrkMastController.java b/src/main/java/com/zy/asrs/controller/WrkMastController.java
index 15d282d..dec4c89 100644
--- a/src/main/java/com/zy/asrs/controller/WrkMastController.java
+++ b/src/main/java/com/zy/asrs/controller/WrkMastController.java
@@ -10,7 +10,9 @@
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
+import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkDetlService;
import com.zy.asrs.service.WrkMastService;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
@@ -23,6 +25,9 @@
@Autowired
private WrkMastService wrkMastService;
+
+ @Autowired
+ private WrkDetlService wrkDetlService;
@RequestMapping(value = "/wrkMast/{id}/auth")
@ManagerAuth
@@ -39,7 +44,10 @@
@RequestParam(required = false)String condition,
@RequestParam Map<String, Object> param){
excludeTrash(param);
+ String detlMatnr = getAndRemove(param, "matnr");
+ String detlMaktx = getAndRemove(param, "maktx");
EntityWrapper<WrkMast> wrapper = new EntityWrapper<>();
+ applyWrkDetlFilter(wrapper, detlMatnr, detlMaktx);
convert(param, wrapper);
allLike(WrkMast.class, param.keySet(), wrapper, condition);
if (!Cools.isEmpty(orderByField)){
@@ -50,7 +58,9 @@
}else {
wrapper.orderBy("appe_time", false);
}
- return R.ok(wrkMastService.selectPage(new Page<>(curr, limit), wrapper));
+ Page<WrkMast> page = wrkMastService.selectPage(new Page<>(curr, limit), wrapper);
+ fillDetlSummary(page.getRecords());
+ return R.ok(page);
}
private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
@@ -108,11 +118,105 @@
List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
EntityWrapper<WrkMast> wrapper = new EntityWrapper<>();
Map<String, Object> map = excludeTrash(param.getJSONObject("wrkMast"));
+ String detlMatnr = getAndRemove(map, "matnr");
+ String detlMaktx = getAndRemove(map, "maktx");
+ applyWrkDetlFilter(wrapper, detlMatnr, detlMaktx);
convert(map, wrapper);
List<WrkMast> list = wrkMastService.selectList(wrapper);
+ fillDetlSummary(list);
return R.ok(exportSupport(list, fields));
}
+ private String getAndRemove(Map<String, Object> map, String key) {
+ Object val = map.remove(key);
+ if (val == null) {
+ return null;
+ }
+ String str = String.valueOf(val).trim();
+ if (Cools.isEmpty(str) || "null".equalsIgnoreCase(str)) {
+ return null;
+ }
+ return str;
+ }
+
+ private void applyWrkDetlFilter(EntityWrapper<WrkMast> wrapper, String matnr, String maktx) {
+ if (Cools.isEmpty(matnr) && Cools.isEmpty(maktx)) {
+ return;
+ }
+ EntityWrapper<WrkDetl> detlWrapper = (EntityWrapper<WrkDetl>) new EntityWrapper<WrkDetl>().setSqlSelect("distinct wrk_no");
+ if (!Cools.isEmpty(matnr)) {
+ detlWrapper.like("matnr", matnr);
+ }
+ if (!Cools.isEmpty(maktx)) {
+ detlWrapper.like("maktx", maktx);
+ }
+ List<WrkDetl> detls = wrkDetlService.selectList(detlWrapper);
+ if (detls.isEmpty()) {
+ wrapper.eq("wrk_no", -1);
+ return;
+ }
+ Set<Integer> wrkNos = new LinkedHashSet<>();
+ for (WrkDetl detl : detls) {
+ if (detl != null && detl.getWrkNo() != null) {
+ wrkNos.add(detl.getWrkNo());
+ }
+ }
+ if (wrkNos.isEmpty()) {
+ wrapper.eq("wrk_no", -1);
+ return;
+ }
+ wrapper.in("wrk_no", wrkNos);
+ }
+
+ private void fillDetlSummary(List<WrkMast> masts) {
+ if (masts == null || masts.isEmpty()) {
+ return;
+ }
+ Set<Integer> wrkNos = new LinkedHashSet<>();
+ for (WrkMast mast : masts) {
+ if (mast != null && mast.getWrkNo() != null) {
+ wrkNos.add(mast.getWrkNo());
+ }
+ }
+ if (wrkNos.isEmpty()) {
+ return;
+ }
+ EntityWrapper<WrkDetl> wrapper = (EntityWrapper<WrkDetl>) new EntityWrapper<WrkDetl>()
+ .setSqlSelect("wrk_no, matnr, maktx")
+ .in("wrk_no", wrkNos);
+ List<WrkDetl> detls = wrkDetlService.selectList(wrapper);
+
+ Map<Integer, LinkedHashSet<String>> matnrByWrkNo = new HashMap<>();
+ Map<Integer, LinkedHashSet<String>> maktxByWrkNo = new HashMap<>();
+ for (WrkDetl detl : detls) {
+ if (detl == null || detl.getWrkNo() == null) {
+ continue;
+ }
+ Integer wrkNo = detl.getWrkNo();
+ if (!Cools.isEmpty(detl.getMatnr())) {
+ matnrByWrkNo.computeIfAbsent(wrkNo, k -> new LinkedHashSet<>()).add(detl.getMatnr());
+ }
+ if (!Cools.isEmpty(detl.getMaktx())) {
+ maktxByWrkNo.computeIfAbsent(wrkNo, k -> new LinkedHashSet<>()).add(detl.getMaktx());
+ }
+ }
+
+ for (WrkMast mast : masts) {
+ if (mast == null || mast.getWrkNo() == null) {
+ continue;
+ }
+ LinkedHashSet<String> matnrs = matnrByWrkNo.get(mast.getWrkNo());
+ if (matnrs != null && !matnrs.isEmpty()) {
+ mast.setMatnr(String.join(",", matnrs));
+ }
+ LinkedHashSet<String> maktxs = maktxByWrkNo.get(mast.getWrkNo());
+ if (maktxs != null && !maktxs.isEmpty()) {
+ mast.setMaktx(String.join(",", maktxs));
+ }
+ }
+ }
+
+
@RequestMapping(value = "/wrkMastQuery/auth")
@ManagerAuth
public R query(String condition) {
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index 4f21fd1..9962b3c 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -318,6 +318,12 @@
@TableField("is_suplus")
private Integer isSuplus;
+ @TableField(exist = false)
+ private String matnr;
+
+ @TableField(exist = false)
+ private String maktx;
+
/**
* 婊℃澘
*/
diff --git a/src/main/webapp/static/js/wrkMast/wrkMast.js b/src/main/webapp/static/js/wrkMast/wrkMast.js
index dd64486..9ddb72a 100644
--- a/src/main/webapp/static/js/wrkMast/wrkMast.js
+++ b/src/main/webapp/static/js/wrkMast/wrkMast.js
@@ -27,6 +27,12 @@
,{field: 'ioType$', align: 'center',title: '鍏ュ嚭搴撶被鍨�', width: 140}
,{field: 'ioPri', align: 'center',title: '浼樺厛绾�', width: 95}
,{field: 'barcode', align: 'center',title: 'SN', width: 120}
+ ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿', width: 160, templet: function (d) {
+ return d.matnr ? d.matnr.split(',').join('<br>') : '';
+ }}
+ ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О', width: 200, templet: function (d) {
+ return d.maktx ? d.maktx.split(',').join('<br>') : '';
+ }}
,{field: 'crnNo$', align: 'center',title: '鍫嗗灈鏈�', width: 95}
,{field: 'sourceStaNo$', align: 'center',title: '婧愮珯', width: 95}
,{field: 'staNo$', align: 'center',title: '鐩爣绔�', width: 95}
diff --git a/src/main/webapp/views/wrkMast/wrkMast.html b/src/main/webapp/views/wrkMast/wrkMast.html
index b27d6c8..9b35152 100644
--- a/src/main/webapp/views/wrkMast/wrkMast.html
+++ b/src/main/webapp/views/wrkMast/wrkMast.html
@@ -73,6 +73,16 @@
<input class="layui-input" type="text" name="crn_no" placeholder="鍫嗗灈鏈哄彿" autocomplete="off">
</div>
</div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="matnr" placeholder="鍟嗗搧缂栧彿" autocomplete="off">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="maktx" placeholder="鍟嗗搧鍚嶇О" autocomplete="off">
+ </div>
+ </div>
<!-- 鏃ユ湡鑼冨洿 -->
<div class="layui-inline" style="width: 300px">
<div class="layui-input-inline">
--
Gitblit v1.9.1