自动化立体仓库 - WMS系统
#
Junjie
2025-08-02 09b2e40a121c7ac1c5141eb788ab0de1eddb5503
#
4个文件已修改
85 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/InventoryCheckOrderDetl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/ReportToThirdService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/InventoryCheckOrderDetl.java
@@ -62,6 +62,12 @@
    @TableField("cwarehouseid")
    private String cwarehouseid;
    @ApiModelProperty(value = "")
    @TableField("cstateid")
    private String cstateid;
    private Double weight;
    public InventoryCheckOrderDetl() {
    }
src/main/java/com/zy/asrs/service/ReportToThirdService.java
@@ -11,6 +11,6 @@
    boolean reportTkrk(WaitPakin waitPakin);
    boolean reportCheckOrder(String matnr, String batch);
    boolean reportCheckOrder(List<InventoryCheckOrderDetl> checkOrderDetls);
}
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -1250,21 +1250,15 @@
        if (checkOrderDetlList.isEmpty()) {
            throw new CoolException("盘点单无物料明细");
        }
        InventoryCheckOrderDetl orderDetl = checkOrderDetlList.get(0);
        List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>()
                .eq("matnr", orderDetl.getMatnr())
                .eq("batch", orderDetl.getBatch())
        );
        boolean complete = true;
        for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) {
        for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetlList) {
            if (!checkOrderDetl.getStatus().equals("2")) {
                complete = false;
            }
        }
        if (complete) {
            boolean result = reportToThirdService.reportCheckOrder(orderDetl.getMatnr(), orderDetl.getBatch());
            boolean result = reportToThirdService.reportCheckOrder(checkOrderDetlList);
            if (!result) {
                throw new CoolException("盘点单上报失败");
            }
src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java
@@ -270,26 +270,30 @@
    }
    @Override
    public boolean reportCheckOrder(String matnr, String batch) {
        List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>()
                .eq("matnr", matnr)
                .eq("batch", batch)
        );
        ArrayList<String> warehouseIdList = new ArrayList<>();
    public boolean reportCheckOrder(List<InventoryCheckOrderDetl> checkOrderDetls) {
        ArrayList<String> orderNoList = new ArrayList<>();
        HashMap<String, List<InventoryCheckOrderDetl>> map = new HashMap<>();
        for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) {
            if (!warehouseIdList.contains(checkOrderDetl.getCwarehouseid())) {
                warehouseIdList.add(checkOrderDetl.getCwarehouseid());
            if (map.containsKey(checkOrderDetl.getCwarehouseid())) {
                List<InventoryCheckOrderDetl> list = map.get(checkOrderDetl.getCwarehouseid());
                list.add(checkOrderDetl);
                map.put(checkOrderDetl.getCwarehouseid(), list);
            }else {
                List<InventoryCheckOrderDetl> list = new ArrayList<>();
                list.add(checkOrderDetl);
                map.put(checkOrderDetl.getCwarehouseid(), list);
            }
            if (!orderNoList.contains(checkOrderDetl.getOrderNo())) {
                orderNoList.add(checkOrderDetl.getOrderNo());
            }
        }
        boolean result = true;
        for (String cwarehouseid : warehouseIdList) {
            Object process1 = processInvcount(matnr, batch, cwarehouseid);
        for (Map.Entry<String, List<InventoryCheckOrderDetl>> entry : map.entrySet()) {
            String cwarehouseid = entry.getKey();
            List<InventoryCheckOrderDetl> list = entry.getValue();
            Object process1 = processInvcount(list, cwarehouseid);
            //发送请求
            NcResultMessage response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, invcountAdd, JSONObject.toJSONString(process1));
            log.info("盘点单response:{}", response);
@@ -299,7 +303,6 @@
                result = false;
            }
        }
        if (result) {
            List<InventoryCheckOrder> inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>()
@@ -431,29 +434,41 @@
        return data;
    }
    private Object processInvcount(String matnr, String batch, String cwarehouseid) {
        List<InventoryCheckOrderDetl> inventoryCheckOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>()
                .eq("matnr", matnr)
                .eq("batch", batch)
                .eq("cwarehouseid", cwarehouseid)
        );
    private Object processInvcount(List<InventoryCheckOrderDetl> inventoryCheckOrderDetls, String cwarehouseid) {
        if (inventoryCheckOrderDetls.isEmpty()) {
            throw new CoolException("盘点明细不存在");
        }
        //合并数量
        BigDecimal checkAnfmeDecimal = new BigDecimal(0);
        HashMap<String, InventoryCheckOrderDetl> map = new HashMap<>();
        for (InventoryCheckOrderDetl checkOrderDetl : inventoryCheckOrderDetls) {
            String key = checkOrderDetl.getMatnr() + "_" + checkOrderDetl.getBatch() + "_" + checkOrderDetl.getCstateid();
            if (map.containsKey(key)) {
                InventoryCheckOrderDetl orderDetl = map.get(key);
                BigDecimal checkAnfmeDecimal = BigDecimal.valueOf(orderDetl.getCheckAnfme());
            checkAnfmeDecimal = checkAnfmeDecimal.add(BigDecimal.valueOf(checkOrderDetl.getCheckAnfme()));
        }
        //计算辅数量
        Double weight = MatUtils.calcWeight(matnr, checkAnfmeDecimal.doubleValue());
                Double weight = MatUtils.calcWeight(orderDetl.getMatnr(), checkAnfmeDecimal.doubleValue());
                orderDetl.setCheckAnfme(checkAnfmeDecimal.doubleValue());
                orderDetl.setWeight(weight);
                map.put(key, orderDetl);
            } else {
                //计算辅数量
                Double weight = MatUtils.calcWeight(checkOrderDetl.getMatnr(), checkOrderDetl.getCheckAnfme());
                checkOrderDetl.setWeight(weight);
                map.put(key, checkOrderDetl);
            }
        }
        //组装对象数据
        Map<String, Object> data = new HashMap<String, Object>();
        List<InvCountBodyVO> invCountBodyVOList = new ArrayList<>();
        for (Map.Entry<String, InventoryCheckOrderDetl> entry : map.entrySet()) {
            InventoryCheckOrderDetl checkOrderDetl = entry.getValue();
            String matnr = checkOrderDetl.getMatnr();
            String batch = checkOrderDetl.getBatch();
        NccScPcdaWms nccScPcdaWms = nccScPcdaWmsService.selectOne(new EntityWrapper<NccScPcdaWms>()
                .eq("WLBM", matnr)
@@ -465,11 +480,13 @@
        InvCountBodyVO invCountBodyVO = new InvCountBodyVO();
        invCountBodyVO.setCmaterialoid(matnr);
        invCountBodyVO.setVbatchcode(batch);
        invCountBodyVO.setNcountnum(checkAnfmeDecimal.doubleValue());
        invCountBodyVO.setNcountastnum(weight);
            invCountBodyVO.setNcountnum(checkOrderDetl.getCheckAnfme());
            invCountBodyVO.setNcountastnum(checkOrderDetl.getWeight());
        invCountBodyVO.setCstateid(nccScPcdaWms.getPkStorestate());
        invCountBodyVO.setPk_batchcode(nccScPcdaWms.getPkBatchcode());
        invCountBodyVOList.add(invCountBodyVO);
        }
        InvCountHeaderVO invCountHeaderVO = new InvCountHeaderVO();
        invCountHeaderVO.setPk_org("FYT");