自动化立体仓库 - WMS系统
#
lty
12 小时以前 cfa2d1bf7847e5c982c68e0892f5d2ca64638934
#
4个文件已修改
128 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/WrkMastController.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkMast.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/wrkMast/wrkMast.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkMast/wrkMast.html 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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) {
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;
    /**
     * 满板
     */
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}
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">