自动化立体仓库 - WMS系统
#
ytfl
2 天以前 acb1348d6746ea9e6a48542baa203123559518cf
src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java
@@ -20,6 +20,7 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -223,18 +224,49 @@
    }
    @Override
    public boolean reportCheckOrder(InventoryCheckOrder checkOrder) {
        Object process1 = processInvcount(checkOrder);
        //发送请求
        NcResultMessage response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, invcountAdd, JSONObject.toJSONString(process1));
        log.info("盘点单response:{}", response);
        if (!Cools.isEmpty(response) && response.isSuccess()) {
            log.info("盘点单response:{}", response);
            return true;
        } else {
//            remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100);
            return false;
    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<>();
        ArrayList<String> orderNoList = new ArrayList<>();
        for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) {
            if (!warehouseIdList.contains(checkOrderDetl.getCwarehouseid())) {
                warehouseIdList.add(checkOrderDetl.getCwarehouseid());
            }
            if (!orderNoList.contains(checkOrderDetl.getOrderNo())) {
                orderNoList.add(checkOrderDetl.getOrderNo());
            }
        }
        boolean result = true;
        for (String cwarehouseid : warehouseIdList) {
            Object process1 = processInvcount(matnr, batch, cwarehouseid);
            //发送请求
            NcResultMessage response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, invcountAdd, JSONObject.toJSONString(process1));
            log.info("盘点单response:{}", response);
            if (!Cools.isEmpty(response) && response.isSuccess()) {
                log.info("盘点单response:{}", response);
            } else {
                result = false;
            }
        }
        if (result) {
            List<InventoryCheckOrder> inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>()
                    .in("order_no", orderNoList)
                    .eq("status", 1)
            );
            for (InventoryCheckOrder inventoryCheckOrder : inventoryCheckOrders) {
                inventoryCheckOrder.setStatus("2");
                inventoryCheckOrderService.updateById(inventoryCheckOrder);
            }
        }
        return result;
    }
    private Object processXSFH(List<OrderDetl> orderDetls, Boolean flag) {
@@ -314,50 +346,45 @@
        return data;
    }
    private Object processInvcount(InventoryCheckOrder checkOrder) {
    private Object processInvcount(String matnr, String batch, String cwarehouseid) {
        List<InventoryCheckOrderDetl> inventoryCheckOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>()
                .eq("order_no", checkOrder.getOrderNo()));
                .eq("matnr", matnr)
                .eq("batch", batch)
                .eq("cwarehouseid", cwarehouseid)
        );
        if (inventoryCheckOrderDetls.isEmpty()) {
            throw new CoolException("盘点明细不存在");
        }
        //合并数量
        BigDecimal checkAnfmeDecimal = new BigDecimal(0);
        for (InventoryCheckOrderDetl checkOrderDetl : inventoryCheckOrderDetls) {
            checkAnfmeDecimal = checkAnfmeDecimal.add(BigDecimal.valueOf(checkOrderDetl.getCheckAnfme()));
        }
        //计算辅数量
        Double weight = MatUtils.calcWeight(matnr, checkAnfmeDecimal.doubleValue());
        //组装对象数据
        Map<String, Object> data = new HashMap<String, Object>();
        //仓库id
        String cwarehouseid = null;
        List<InvCountBodyVO> invCountBodyVOList = new ArrayList<>();
        for (InventoryCheckOrderDetl inventoryCheckOrderDetl : inventoryCheckOrderDetls) {
            List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>()
                    .eq("matnr", inventoryCheckOrderDetl.getMatnr())
                    .eq("batch", inventoryCheckOrderDetl.getBatch())
            );
            if (wrkDetls.isEmpty()) {
                throw new CoolException("工作档明细不存在");
            }
            NccScPcdaWms nccScPcdaWms = nccScPcdaWmsService.selectOne(new EntityWrapper<NccScPcdaWms>()
                    .eq("WLBM", inventoryCheckOrderDetl.getMatnr())
                    .eq("VBATCHCODE", inventoryCheckOrderDetl.getBatch())
            );
            if(null == nccScPcdaWms) {
                throw new CoolException("ERP数据库无法查询到盘点上报数据");
            }
            cwarehouseid = wrkDetls.get(0).getStandby1();
            //计算辅数量
            Double weight = MatUtils.calcWeight(inventoryCheckOrderDetl.getMatnr(), inventoryCheckOrderDetl.getCheckAnfme());
            InvCountBodyVO invCountBodyVO = new InvCountBodyVO();
            invCountBodyVO.setCmaterialoid(inventoryCheckOrderDetl.getMatnr());
            invCountBodyVO.setVbatchcode(inventoryCheckOrderDetl.getBatch());
            invCountBodyVO.setNcountnum(inventoryCheckOrderDetl.getCheckAnfme());
            invCountBodyVO.setNcountastnum(weight);
            invCountBodyVO.setCstateid(nccScPcdaWms.getPkStorestate());
            invCountBodyVO.setPk_batchcode(nccScPcdaWms.getPkBatchcode());
            invCountBodyVOList.add(invCountBodyVO);
        NccScPcdaWms nccScPcdaWms = nccScPcdaWmsService.selectOne(new EntityWrapper<NccScPcdaWms>()
                .eq("WLBM", matnr)
                .eq("VBATCHCODE", batch)
        );
        if (null == nccScPcdaWms) {
            throw new CoolException("ERP数据库无法查询到盘点上报数据");
        }
        InvCountBodyVO invCountBodyVO = new InvCountBodyVO();
        invCountBodyVO.setCmaterialoid(matnr);
        invCountBodyVO.setVbatchcode(batch);
        invCountBodyVO.setNcountnum(checkAnfmeDecimal.doubleValue());
        invCountBodyVO.setNcountastnum(weight);
        invCountBodyVO.setCstateid(nccScPcdaWms.getPkStorestate());
        invCountBodyVO.setPk_batchcode(nccScPcdaWms.getPkBatchcode());
        invCountBodyVOList.add(invCountBodyVO);
        InvCountHeaderVO invCountHeaderVO = new InvCountHeaderVO();
        invCountHeaderVO.setPk_org("FYT");