自动化立体仓库 - WMS系统
*
lsh
16 小时以前 9d831229b5a8c238ce55f4ee8de7433c56cbe3a8
*
4个文件已修改
175 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/LocDetlController.java 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/OrderMesXGHYParam.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/locDetl/locDetl.js 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locDetl/locDetl.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/LocDetlController.java
@@ -9,14 +9,10 @@
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.ManLocDetl;
import com.zy.asrs.entity.Mat;
import com.core.common.*;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.OrderInspectionRollParam;
import com.zy.asrs.entity.param.OrderMesXGHYParam;
import com.zy.asrs.entity.param.QualityGroupListParam;
import com.zy.asrs.entity.result.OrderPakoutDetailVo;
import com.zy.asrs.mapper.LocDetlMapper;
@@ -47,11 +43,18 @@
    private MatService matService;
    @Autowired
    private ApiLogService apiLogService;
    @Autowired
    private SnowflakeIdWorker snowflakeIdWorker;
    @Value("${srXghyMes.qualityFinishedCheckoutUrl}")
    private String qualityFinishedCheckoutUrl;
    @Value("${srXghyMes.qualityFinishedCheckout}")
    private String qualityFinishedCheckout;
    @Value("${srXghyMes.productInventoryUrl}")
    private String productInventoryUrl;
    @Value("${srXghyMes.productInventory}")
    private String productInventory;
    @RequestMapping(value = "/locDetl/update")
    public R update1() {
@@ -385,4 +388,51 @@
        return R.error("上报失败").add("上报失败");
    }
    @RequestMapping(value = "/synchronize/mes/locDetl/report/auth")
    @ManagerAuth(memo = "同步库存至MES")
    public R synchronizeLocDetlMes() {
        List<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>());
        if (locDetlList.isEmpty()) {
            return R.error("库存为空!!!");
        }
        OrderMesXGHYParam orderMesXGHYParam = new OrderMesXGHYParam(locDetlList,"in","成品入库");
        orderMesXGHYParam.setBarcode(String.valueOf(snowflakeIdWorker.nextId()));
        orderMesXGHYParam.setPalletizingNo(1);
        String response = "";
        boolean success = false;
        try {
            response = new HttpHandler.Builder()
                    .setUri(productInventoryUrl)
                    .setPath(productInventory)
                    .setJson(JSON.toJSONString(orderMesXGHYParam))
                    .build()
                    .doPost();
            JSONObject jsonObject = JSON.parseObject(response);
            if (jsonObject.getBoolean("state")) {
                success = true;
            } else {
                return R.error("同步库存至MES");
            }
        } catch (Exception e) {
            return R.error("同步库存至MES"+e.getMessage());
        } finally {
            try {
                // 保存接口日志
                apiLogService.save(
                        "同步库存至MES",
                        productInventoryUrl+"/"+productInventory,
                        null,
                        "127.0.0.1",
                        JSON.toJSONString(orderMesXGHYParam),
                        response,
                        success
                );
            } catch (Exception e) { }
        }
        return R.error("上报失败").add("上报失败");
    }
}
src/main/java/com/zy/asrs/entity/param/OrderMesXGHYParam.java
@@ -1,6 +1,7 @@
package com.zy.asrs.entity.param;
import com.core.common.DateUtils;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.WrkDetl;
import lombok.Data;
@@ -76,6 +77,16 @@
                this.orderSerialNumber = sampleWrkDetl.getOrderNo();
            }
            public Roll(LocDetl sampleLocDetl) {
                this.boxNo = sampleLocDetl.getBatch();
                this.rollNo = sampleLocDetl.getModel();
                this.specs = sampleLocDetl.getMatnr();
                this.length = sampleLocDetl.getPrice().toString();
                this.splices = sampleLocDetl.getSpecs();
                this.netWeight = sampleLocDetl.getWeight().toString();
                this.grossWeight = sampleLocDetl.getVolume().toString();
            }
            @Override
            public String toString() {
                return String.format(
@@ -170,6 +181,76 @@
        this.matList = boxList;
    }
    public OrderMesXGHYParam(List<LocDetl> locDetls, String outOrIn,String stockType) {
        // 按batch字段分组,每个batch对应一个Box
        Map<String, List<LocDetl>> batchGroup = locDetls.stream()
                .collect(Collectors.groupingBy(LocDetl::getBatch));
        List<OrderMesXGHYParam.Box> boxList = new ArrayList<>();
        // 处理每个batch分组
        for (Map.Entry<String, List<LocDetl>> entry : batchGroup.entrySet()) {
            String batch = entry.getKey();
            List<LocDetl> batchWrkDetls = entry.getValue();
            // 创建Box对象
            OrderMesXGHYParam.Box box = new OrderMesXGHYParam.Box();
            box.setBoxNo(batch); // batch对应boxNo
            box.setOutOrIn(outOrIn); // batch对应boxNo
            // 按model字段分组,每个model对应一个roll
            Map<String, List<LocDetl>> modelGroup = batchWrkDetls.stream()
                    .collect(Collectors.groupingBy(LocDetl::getModel));
            List<OrderMesXGHYParam.Box.Roll> rollList = new ArrayList<>();
            String wideInWidth = null;
            String thickness = null;
            String boxPos = null;
            String boxType = null;
            String packageGroupNo = null;    //包装组号(徐工没有,只有箱号卷号一对一)  //null
            // 处理每个model分组
            for (Map.Entry<String, List<LocDetl>> modelEntry : modelGroup.entrySet()) {
                List<LocDetl> modelWrkDetls = modelEntry.getValue();
                LocDetl sampleWrkDetl = modelWrkDetls.get(0);
                String matnr = sampleWrkDetl.getMatnr();
                String[] firstSplit = matnr.split("μm×");
                if (firstSplit.length == 2) {
                    thickness = firstSplit[0];  // 5.2
                    String[] secondSplit = firstSplit[1].split("mm");
                    if (secondSplit.length > 0) {
                        wideInWidth = secondSplit[0];  // 834.1
                    } else {
                        continue;
                    }
                } else {
                    continue;
                }
                boxPos = sampleWrkDetl.getOrigin();
                boxType = sampleWrkDetl.getBrand$();
                stockType = sampleWrkDetl.getManu();
                packageGroupNo = sampleWrkDetl.getDeadTime();
                OrderMesXGHYParam.Box.Roll roll = new OrderMesXGHYParam.Box.Roll(sampleWrkDetl);
                rollList.add(roll);
            }
            box.setWideInWidth(wideInWidth);
            box.setThickness(thickness);
            box.setBoxPos(boxPos);
            box.setBoxType(boxType);
            box.setStockType(stockType);
            box.setPackageGroupNo(packageGroupNo);
            box.setRolls(rollList);
            boxList.add(box);
        }
        // 设置到主对象中
        this.matList = boxList;
    }
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
src/main/webapp/static/js/locDetl/locDetl.js
@@ -470,6 +470,35 @@
        })
    }
    // 同步库存至MES
    form.on('submit(synchronize)', function (data) {
        layer.confirm('确认向MES同步库存?', {
            shade: .1,
            skin: 'layui-layer-admin'
        }, function (i) {
            $.ajax({
                url: baseUrl + "/synchronize/mes/locDetl/report/auth",
                headers: {'token': localStorage.getItem('token')},
                method: 'POST',
                success: function (res) {
                    layer.closeAll('loading');
                    if (res.code === 200){
                        if (insTbCount === 0) {
                            insTb.reload({page: {curr: 1}});
                        } else {
                            $(".layui-laypage-btn")[0].click();
                        }
                        layer.msg(res.msg, {icon: 1});
                    } else if (res.code === 403){
                        top.location.href = baseUrl+"/";
                    }else {
                        layer.msg(res.msg, {icon: 2});
                    }
                }
            })
        });
    });
    // 复选框事件
    form.on('checkbox(detailCheckbox)', function (data) {
        var el = data.elem;
src/main/webapp/views/locDetl/locDetl.html
@@ -60,6 +60,7 @@
    <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>
        <button id="unreason" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="synchronize">同步库存至MES</button>
<!--        <button id="unreason" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="unreason">查看异常数据</button>-->
    </div>