package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.core.common.Cools; 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.service.ApiLogService; import com.zy.asrs.service.OrderService; import com.zy.asrs.service.ReportToThirdService; import com.zy.nc.SendUtil; import com.zy.nc.entity.NccCgCgdhdWms; import com.zy.nc.entity.NccSaleXsfhmxWms; import com.zy.nc.util.NcResultMessage; import com.zy.nc.vo.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Service @Slf4j public class ReportToThirdServiceImpl implements ReportToThirdService { @Autowired private ApiLogService apiLogService; @Autowired private OrderService orderService; @Value("${NYNC.ip}") private String nyncIp; @Value("${NYNC.port}") private String port; @Value("${NYNC.saveRefDelivery}") private String saveRefDelivery; @Override public void report(Order order, List orderDetls, DocType docType) { int step = (Cools.isEmpty(order.getStep()) || order.getStep() == 0) ? 0 : order.getStep(); NcResultMessage response = null; Object process1 = null; Object process2 = null; Object process3 = null; try { switch (order.getDocType$().toString()) { case "销售发货": process1 = processXSFH(orderDetls); //发送请求 response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1)); if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("response:{}", response); step = 10; } break; case "转库": process1 = processQTRK(orderDetls); //发送请求 response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1)); if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("response:{}", response); step = 10; } break; case "采购到货": process1 = processCGDH(orderDetls); //发送请求 response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1)); if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("response:{}", response); step = 10; } break; case "产成品入库单": if (step == 2) { process3 = processQTRK(orderDetls); //发送请求 response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process3)); if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("response:{}", response); step = 10; } } else if (step == 1) { process2 = processGENERALOUT(orderDetls); //发送请求 response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process2)); if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("response:{}", response); step = 2; } process3 = processQTRK(orderDetls); //发送请求 response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process3)); if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("response:{}", response); step = 10; } } else if (step == 0) { process1 = processZK(orderDetls); //发送请求 response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1)); if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("response:{}", response); step = 1; } process2 = processGENERALOUT(orderDetls); //发送请求 response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process2)); if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("response:{}", response); step = 2; } process3 = processQTRK(orderDetls); //发送请求 response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process3)); if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("response:{}", response); step = 10; } } break; // case "内部调拨": // break; default: throw new CoolException("不能识别的单据类型"); } if (step == 10) { // 修改订单状态 4.完成 ===>> 6.已上报 if (!orderService.updateSettle(order.getId(), 6L, null)) { throw new CoolException("服务器内部错误,请联系管理员"); } } else if (step != 0) { // 修改订单状态 做标记 if (!orderService.updateSettleStep(order.getId(), 6L, null, step)) { throw new CoolException("服务器内部错误,请联系管理员"); } } } catch (Exception e) { e.printStackTrace(); throw new CoolException("调用接口报错,请联系管理员"); } finally { reportApiLog(response, order.getDocType$(), nyncIp, saveRefDelivery); } } private Object processXSFH(List orderDetls) { //组装对象数据 Map data = new HashMap(); SaleOutHeadVO saleOutHeadVO = new SaleOutHeadVO(); saleOutHeadVO.setPk_org("FYT"); saleOutHeadVO.setCwarehouseid("6101"); SaleOutBodyVO saleOutBodyVO = null; List saleOutBodyVOList = new ArrayList<>(); for (OrderDetl orderDetl : orderDetls) { saleOutBodyVO = new SaleOutBodyVO(); String remark = orderDetl.getRemark(); if (!Cools.isEmpty(remark)) { NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class); saleOutBodyVO.setCsourcetype("4331"); saleOutBodyVO.setClocationid("610101"); saleOutBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid()); saleOutBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid()); saleOutHeadVO.setVdef2(nccSaleXsfhmxWms.getVdef2()); saleOutHeadVO.setVdef3(nccSaleXsfhmxWms.getVdef3()); saleOutHeadVO.setVdef4(nccSaleXsfhmxWms.getVdef4()); saleOutHeadVO.setVdef7(nccSaleXsfhmxWms.getVdef7()); saleOutHeadVO.setVdef8(nccSaleXsfhmxWms.getVdef8()); saleOutHeadVO.setVdef13(nccSaleXsfhmxWms.getVdef13()); saleOutHeadVO.setVdef14(nccSaleXsfhmxWms.getVdef14()); } saleOutBodyVO.setVbatchcode(orderDetl.getBatch()); saleOutBodyVO.setNshouldnum(orderDetl.getAnfme()); saleOutBodyVO.setNnum(orderDetl.getQty()); saleOutBodyVOList.add(saleOutBodyVO); } data.put("SaleOutHeadVO", saleOutHeadVO); data.put("SaleOutBodyVO", saleOutBodyVOList); return data; } private Object processQTRK(List orderDetls) { //组装对象数据 Map data = new HashMap(); GeneralInHeadVO generalInHeadVO = new GeneralInHeadVO(); generalInHeadVO.setPk_org("FYT"); generalInHeadVO.setCwarehouseid("6101"); GeneralInBodyVO generalInBodyVO = null; List generalInBodyVOS = new ArrayList<>(); for (OrderDetl orderDetl : orderDetls) { generalInBodyVO = new GeneralInBodyVO(); String remark = orderDetl.getRemark(); if (!Cools.isEmpty(remark)) { NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class); generalInBodyVO.setCsourcetype("4331"); generalInBodyVO.setClocationid("610101"); generalInBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid()); generalInBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid()); generalInBodyVO.setNnum(orderDetl.getQty()); generalInBodyVO.setVbatchcode(orderDetl.getBatch()); generalInBodyVO.setCmaterialoid(orderDetl.getMatnr()); } generalInBodyVOS.add(generalInBodyVO); } data.put("GeneralInHeadVO", generalInHeadVO); data.put("GeneralInBodyVO", generalInBodyVOS); return data; } private Object processZK(List orderDetls) { //组装对象数据 Map data = new HashMap(); WhsTransBillHeaderVO whsTransBillHeaderVO = new WhsTransBillHeaderVO(); whsTransBillHeaderVO.setPk_org("FYT"); whsTransBillHeaderVO.setCwarehouseid("6101"); WhsTransBillBodyVO whsTransBillBodyVO = null; List whsTransBillBodyVOS = new ArrayList<>(); for (OrderDetl orderDetl : orderDetls) { whsTransBillBodyVO = new WhsTransBillBodyVO(); String remark = orderDetl.getRemark(); if (!Cools.isEmpty(remark)) { NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class); whsTransBillBodyVO.setCsourcetype("4331"); whsTransBillBodyVO.setClocationid("610101"); whsTransBillBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid()); whsTransBillBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid()); whsTransBillBodyVO.setNnum(orderDetl.getQty()); whsTransBillBodyVO.setVbatchcode(orderDetl.getBatch()); whsTransBillBodyVO.setCmaterialoid(orderDetl.getMatnr()); } whsTransBillBodyVOS.add(whsTransBillBodyVO); } data.put("WhsTransBillHeaderVO", whsTransBillHeaderVO); data.put("WhsTransBillBodyVO", whsTransBillBodyVOS); return data; } private Object processCGDH(List orderDetls) { //组装对象数据 Map data = new HashMap(); ic_purchasein_h ic_purchasein_h = new ic_purchasein_h(); ic_purchasein_h.setPk_org("FYT"); ic_purchasein_h.setCwarehouseid("6101"); ic_purchasein_b ic_purchasein_b = null; List ic_purchasein_bs = new ArrayList<>(); for (OrderDetl orderDetl : orderDetls) { ic_purchasein_b = new ic_purchasein_b(); String remark = orderDetl.getRemark(); if (!Cools.isEmpty(remark)) { NccCgCgdhdWms nccCgCgdhdWms = JSONObject.parseObject(remark, NccCgCgdhdWms.class); ic_purchasein_b.setCsourcebillbid(nccCgCgdhdWms.getPkArriveorderB()); ic_purchasein_b.setCsourcebillhid(nccCgCgdhdWms.getPkArriveorder()); ic_purchasein_b.setCmaterialvid(orderDetl.getMaktx()); ic_purchasein_b.setNnum(orderDetl.getQty()); ic_purchasein_b.setNshouldassistnum(orderDetl.getQty()); //ic_purchasein_b.setNorigprice(nccSaleXsfhmxWms.getNorigprice().doubleValue()); } ic_purchasein_bs.add(ic_purchasein_b); } data.put("ic_purchasein_h", ic_purchasein_h); data.put("ic_purchasein_b", ic_purchasein_b); return data; } /** * @param orderDetls * @return */ private Object processGENERALOUT(List orderDetls) { //组装对象数据 Map data = new HashMap(); ic_purchasein_h ic_purchasein_h = new ic_purchasein_h(); ic_purchasein_h.setPk_org("FYT"); ic_purchasein_h.setCwarehouseid("6101"); ic_purchasein_b ic_purchasein_b = null; List ic_purchasein_bs = new ArrayList<>(); for (OrderDetl orderDetl : orderDetls) { ic_purchasein_b = new ic_purchasein_b(); String remark = orderDetl.getRemark(); if (!Cools.isEmpty(remark)) { NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class); } ic_purchasein_bs.add(ic_purchasein_b); } data.put("ic_purchasein_h", ic_purchasein_h); data.put("ic_purchasein_b", ic_purchasein_b); return data; } private Boolean reportApiLog(Object data, String docType, String url, String path) { String response = ""; boolean success = false; apiLogService.save( docType, url + path, null, "127.0.0.1", JSON.toJSONString(data), response, success ); return false; } }