自动化立体仓库 - WMS系统
#
Junjie
3 天以前 d0a9f487ca90214ede66f6d33da80a16bf2bb0c0
src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java
@@ -5,21 +5,14 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.DocType;
import com.zy.asrs.entity.Order;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.entity.StoreType;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.service.ReportToThirdService;
import com.zy.asrs.service.StoreTypeService;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.MatUtils;
import com.zy.nc.SendUtil;
import com.zy.nc.entity.*;
import com.zy.nc.service.NccSaleXsfhmxWmsService;
import com.zy.nc.service.NccScPcdaWmsService;
import com.zy.nc.service.NccXsckmxTkWmsService;
import com.zy.nc.util.NcResultMessage;
import com.zy.nc.vo.*;
import lombok.extern.slf4j.Slf4j;
@@ -38,18 +31,20 @@
    @Autowired
    private ApiLogService apiLogService;
    @Autowired
    private OrderService orderService;
    @Autowired
    private WrkDetlService wrkDetlService;
    @Autowired
    private InventoryCheckOrderService inventoryCheckOrderService;
    @Autowired
    private InventoryCheckOrderDetlService inventoryCheckOrderDetlService;
    @Autowired
    private StoreTypeService storeTypeService;
    @Autowired
    private NccScPcdaWmsService nccScPcdaWmsService;
    @Autowired
    private NccXsckmxTkWmsService nccXsckmxTkWmsService;
    @Autowired
    private NccSaleXsfhmxWmsService nccSaleXsfhmxWmsService;
@@ -65,6 +60,9 @@
    @Value("${NYNC.saveRefWhsTrans}")
    private String saveRefWhsTrans;
    @Value("${NYNC.invcountAdd}")
    private String invcountAdd;
    @Value("${NYNC.purchasein}")
    private String purchasein;
@@ -210,13 +208,28 @@
    }
    @Override
    public boolean reportTkrk(String batch, String orderNo, Double anfme) {
        Object process1 = processTKRK(batch, orderNo, anfme);
    public boolean reportTkrk(String matnr, String batch, String orderNo, Double anfme) {
        Object process1 = processTKRK(matnr, batch, orderNo, anfme);
        //发送请求
        NcResultMessage response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, 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;
        }
    }
    @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);
@@ -263,17 +276,17 @@
        return data;
    }
    private Object processTKRK(String batch, String orderNo, Double anfme) {
        EntityWrapper<NccXsckmxTkWms> wrapper = new EntityWrapper<>();
        wrapper.eq("VBATCHCODE", batch).eq("VSOURCEBILLCODE", orderNo);
        NccXsckmxTkWms nccXsckmxTkWms = nccXsckmxTkWmsService.selectOne(wrapper);
        if (null == nccXsckmxTkWms) {
            throw new CoolException("未找到此条码");
        }
    private Object processTKRK(String matnr,String batch, String orderNo, Double anfme) {
//        EntityWrapper<NccXsckmxTkWms> wrapper = new EntityWrapper<>();
//        wrapper.eq("VBATCHCODE", batch).eq("VSOURCEBILLCODE", orderNo);
//        NccXsckmxTkWms nccXsckmxTkWms = nccXsckmxTkWmsService.selectOne(wrapper);
//        if (null == nccXsckmxTkWms) {
//            throw new CoolException("未找到此条码");
//        }
        NccSaleXsfhmxWms nccSaleXsfhmxWms = nccSaleXsfhmxWmsService.selectOne(new EntityWrapper<NccSaleXsfhmxWms>()
                .eq("VBILLCODE", nccXsckmxTkWms.getVsourcebillcode())
                .eq("WLBM", nccXsckmxTkWms.getWlbm())
                .eq("VBILLCODE", orderNo)
                .eq("WLBM", matnr)
        );
        if(null == nccSaleXsfhmxWms) {
            throw new CoolException("未找到销售单据");
@@ -288,17 +301,77 @@
        saleOutBodyVO = new SaleOutBodyVO();
        saleOutBodyVO.setCsourcetype("4331");
        saleOutBodyVO.setCsourcebillbid(nccXsckmxTkWms.getCsourcebillbid());
        saleOutBodyVO.setCsourcebillhid(nccXsckmxTkWms.getCsourcebillhid());
        saleOutBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid());
        saleOutBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid());
        saleOutHeadVO.setCwarehouseid(nccSaleXsfhmxWms.getFhckbm());
        saleOutBodyVO.setVbatchcode(nccXsckmxTkWms.getVbatchcode());
        saleOutBodyVO.setVbatchcode(batch);
        saleOutBodyVO.setNnum(anfme * -1);
        saleOutBodyVOList.add(saleOutBodyVO);
        data.put("SaleOutHeadVO", saleOutHeadVO);
        data.put("SaleOutBodyVO", saleOutBodyVOList);
        return data;
    }
    private Object processInvcount(InventoryCheckOrder checkOrder) {
        List<InventoryCheckOrderDetl> inventoryCheckOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>()
                .eq("order_no", checkOrder.getOrderNo()));
        if (inventoryCheckOrderDetls.isEmpty()) {
            throw new CoolException("盘点明细不存在");
        }
        //组装对象数据
        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);
        }
        InvCountHeaderVO invCountHeaderVO = new InvCountHeaderVO();
        invCountHeaderVO.setPk_org("FYT");
        invCountHeaderVO.setCtrantypeid("4R-01");
        invCountHeaderVO.setCwarehouseid(cwarehouseid);
        data.put("InvCountHeaderVO", invCountHeaderVO);
        data.put("InvCountBodyVO", invCountBodyVOList);
        data.put("paper", "1");
        data.put("splr", "0");
        ArrayList<Map<String, Object>> list = new ArrayList<>();
        list.add(data);
        return list;
    }
    private Object processZKRK(List<OrderDetl> orderDetls) {
@@ -408,7 +481,7 @@
            }
            whsTransBillBodyVO = new WhsTransBillBodyVO();
            whsTransBillBodyVO.setCstateid(nccScPcdaWms.getPkBatchcode());
            whsTransBillBodyVO.setCstateid(nccScPcdaWms.getPkStorestate());
            String remark = orderDetl.getRemark();
            //if (!Cools.isEmpty(remark)) {
@@ -416,6 +489,7 @@
            whsTransBillBodyVO.setNnum(orderDetl.getQty());
            whsTransBillBodyVO.setCmaterialoid(orderDetl.getMatnr());
            whsTransBillBodyVO.setVbatchcode(orderDetl.getBatch());
            whsTransBillBodyVO.setPk_batchcode(nccScPcdaWms.getPkBatchcode());
            //}
            whsTransBillHeaderVO.setCwarehouseid(orderDetl.getStandby1());
            whsTransBillBodyVOS.add(whsTransBillBodyVO);
@@ -447,10 +521,11 @@
        ic_generalout_b generalout_b = null;
        List<ic_generalout_b> ic_purchasein_bs = new ArrayList<>();
        for (int i = 0; i < orderDetls.size(); i++) {
//            NccScPcdaWms nccScPcdaWms = nccScPcdaWmsService.selectOne(new EntityWrapper<NccScPcdaWms>().eq("vbatchcode", orderDetls.get(i).getBatch()).eq("wlbm", orderDetls.get(i).getMatnr()));
//            if (nccScPcdaWms == null) {
//                throw new CoolException("批次[{}]物料[{}]未找到" + orderDetls.get(i).getBatch() + orderDetls.get(i).getMatnr());
//            }
            NccScPcdaWms nccScPcdaWms = nccScPcdaWmsService.selectOne(new EntityWrapper<NccScPcdaWms>().eq("vbatchcode", orderDetls.get(i).getBatch()).eq("wlbm", orderDetls.get(i).getMatnr()));
            if (nccScPcdaWms == null) {
                throw new CoolException("批次[{}]物料[{}]未找到" + orderDetls.get(i).getBatch() + orderDetls.get(i).getMatnr());
            }
            OrderDetl orderDetl = orderDetls.get(i);
            generalout_h.setCwarehouseid(orderDetl.getStandby1());
            generalout_b = new ic_generalout_b();
@@ -458,7 +533,8 @@
            generalout_b.setCsourcetype("4K-01");
            generalout_b.setCsourcebillhid(cspecialhid);
            generalout_b.setCmaterialvid(orderDetl.getMatnr());
            //generalout_b.setCstateid(nccScPcdaWms.getVcode());
            generalout_b.setCstateid(nccScPcdaWms.getPkStorestate());
            generalout_b.setPk_batchcode(nccScPcdaWms.getPkBatchcode());
            StoreType storeType = storeTypeService.selectOne(new EntityWrapper<StoreType>().eq("store_id", orderDetl.getStandby1()));
            generalout_b.setCdptvid(storeType.getDepartmentId());
            generalout_b.setBillmaker(renyuan);