package com.zy.asrs.service.impl;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
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.NccSaleDbddWms;
|
import com.zy.nc.entity.NccSaleXsfhmxWms;
|
import com.zy.nc.entity.NccScZkmxbWms;
|
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;
|
|
@Value("${NYNC.saveRefWhsTrans}")
|
private String saveRefWhsTrans;
|
|
@Value("${NYNC.purchasein}")
|
private String purchasein;
|
|
@Value("${NYNC.whstrans}")
|
private String whstrans;
|
|
@Value("${NYNC.generalout}")
|
private String generalout;
|
|
@Value("${NYNC.dbdd}")
|
private String dbdd;
|
|
|
@Override
|
public void report(Order order, List<OrderDetl> orderDetls, DocType docType) {
|
int step = (Cools.isEmpty(order.getStep()) || order.getStep() == 0) ? 0 : order.getStep();
|
NcResultMessage response = null;
|
Object process1 = null;
|
Object process2 = null;
|
String memo = order.getMemo();
|
String remark = "";
|
try {
|
switch (order.getDocType$().toString()) {
|
case "销售退货":
|
process1 = processXSFH(orderDetls, true);
|
//发送请求
|
response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1));
|
if (!Cools.isEmpty(response) && response.isSuccess()) {
|
log.info("销售发货response:{}", response);
|
step = 10;
|
} else {
|
remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100);
|
}
|
break;
|
case "销售发货":
|
process1 = processXSFH(orderDetls, false);
|
//发送请求
|
response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1));
|
if (!Cools.isEmpty(response) && response.isSuccess()) {
|
log.info("销售发货response:{}", response);
|
step = 10;
|
} else {
|
remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100);
|
}
|
break;
|
case "转库-入库":
|
process1 = processZKRK(orderDetls);
|
//发送请求
|
response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefWhsTrans, JSONObject.toJSONString(process1));
|
if (!Cools.isEmpty(response) && response.isSuccess()) {
|
log.info("转库-入库response:{}", response);
|
step = 10;
|
} else {
|
remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100);
|
}
|
break;
|
case "采购到货":
|
process1 = processCGDH(orderDetls);
|
List<Object> cg = new ArrayList<>();
|
cg.add(process1);
|
//发送请求
|
response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, purchasein, JSONObject.toJSONString(cg));
|
if (!Cools.isEmpty(response) && response.isSuccess()) {
|
log.info("采购到货response:{}", response);
|
step = 10;
|
} else {
|
remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100);
|
}
|
break;
|
case "转库-出库":
|
if (step == 1) {
|
process2 = processGENERALOUT2(orderDetls, memo);
|
List<Object> zkck2 = new ArrayList<>();
|
zkck2.add(process2);
|
//发送请求
|
response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, generalout, JSONObject.toJSONString(zkck2));
|
if (!Cools.isEmpty(response) && response.isSuccess()) {
|
log.info("转库-出库2response:{}", response);
|
step = 10;
|
} else {
|
remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100);
|
}
|
} else {
|
process1 = processZKCK(order, orderDetls);
|
List<Object> zkck1 = new ArrayList<>();
|
zkck1.add(process1);
|
//发送请求
|
response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, whstrans, JSONObject.toJSONString(zkck1));
|
if (!Cools.isEmpty(response) && response.isSuccess()) {
|
step = 1;
|
log.info("转库-出库1response:{}", response);
|
memo = response.getData().toString();
|
|
process2 = processGENERALOUT2(orderDetls, memo);
|
List<Object> zkck2 = new ArrayList<>();
|
zkck2.add(process2);
|
//发送请求
|
response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, generalout, JSONObject.toJSONString(zkck2));
|
if (!Cools.isEmpty(response) && response.isSuccess()) {
|
log.info("转库-出库2response:{}", response);
|
step = 10;
|
} else {
|
remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100);
|
}
|
}
|
}
|
break;
|
case "集团内部调拨":
|
process1 = processDBDD(orderDetls);
|
//发送请求
|
response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, dbdd, JSONObject.toJSONString(process1));
|
if (!Cools.isEmpty(response) && response.isSuccess()) {
|
log.info("集团内部调拨response:{}", response);
|
step = 10;
|
} else {
|
remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100);
|
}
|
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(), 4L, null, step, memo, remark)) {
|
throw new CoolException("服务器内部错误,请联系管理员");
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
throw new CoolException("调用接口报错,请联系管理员");
|
} finally {
|
reportApiLog(response, order.getDocType$(), nyncIp, saveRefDelivery);
|
}
|
|
}
|
|
|
private Object processXSFH(List<OrderDetl> orderDetls, Boolean flag) {
|
//组装对象数据
|
Map<String, Object> data = new HashMap<String, Object>();
|
SaleOutHeadVO saleOutHeadVO = new SaleOutHeadVO();
|
saleOutHeadVO.setPk_org("FYT");
|
SaleOutBodyVO saleOutBodyVO = null;
|
List<SaleOutBodyVO> saleOutBodyVOList = new ArrayList<>();
|
for (OrderDetl orderDetl : orderDetls) {
|
if (orderDetl.getQty() <= 0) {
|
continue;
|
}
|
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());
|
}
|
saleOutHeadVO.setCwarehouseid(orderDetl.getStandby1());
|
|
saleOutBodyVO.setVbatchcode(orderDetl.getBatch());
|
saleOutBodyVO.setNshouldnum(flag ? -orderDetl.getQty() : orderDetl.getQty());
|
saleOutBodyVO.setNnum(flag ? -orderDetl.getQty() : orderDetl.getQty());
|
saleOutBodyVOList.add(saleOutBodyVO);
|
}
|
data.put("SaleOutHeadVO", saleOutHeadVO);
|
data.put("SaleOutBodyVO", saleOutBodyVOList);
|
return data;
|
}
|
|
private Object processZKRK(List<OrderDetl> orderDetls) {
|
//组装对象数据
|
Map<String, Object> data = new HashMap<String, Object>();
|
GeneralInHeadVO generalInHeadVO = new GeneralInHeadVO();
|
generalInHeadVO.setPk_org("FYT");
|
GeneralInBodyVO generalInBodyVO = null;
|
List<GeneralInBodyVO> generalInBodyVOS = new ArrayList<>();
|
for (OrderDetl orderDetl : orderDetls) {
|
generalInBodyVO = new GeneralInBodyVO();
|
String remark = orderDetl.getRemark();
|
if (!Cools.isEmpty(remark)) {
|
NccScZkmxbWms nccScZkmxbWms = JSONObject.parseObject(remark, NccScZkmxbWms.class);
|
generalInBodyVO.setCsourcebillbid(nccScZkmxbWms.getCspecialbid());
|
generalInBodyVO.setCsourcebillhid(nccScZkmxbWms.getCspecialhid());
|
|
generalInBodyVO.setNnum(orderDetl.getQty());
|
generalInBodyVO.setNshouldnum(orderDetl.getAnfme());
|
generalInBodyVO.setCsourcetype(nccScZkmxbWms.getZklxbm());
|
|
}
|
generalInHeadVO.setCwarehouseid(orderDetl.getStandby1());
|
generalInBodyVOS.add(generalInBodyVO);
|
}
|
data.put("GeneralInHeadVO", generalInHeadVO);
|
data.put("GeneralInBodyVO", generalInBodyVOS);
|
return data;
|
}
|
|
|
private Object processDBDD(List<OrderDetl> orderDetls) {
|
//组装对象数据
|
Map<String, Object> data = new HashMap<String, Object>();
|
IaIjBill iaIjBill = new IaIjBill();
|
iaIjBill.setPk_org("FYT");
|
//iaIjBill.setCwarehouseid("6101");
|
IaIjBillB iaIjBillB = null;
|
List<IaIjBillB> iaIjBillBS = new ArrayList<>();
|
for (OrderDetl orderDetl : orderDetls) {
|
iaIjBillB = new IaIjBillB();
|
String remark = orderDetl.getRemark();
|
if (!Cools.isEmpty(remark)) {
|
NccSaleDbddWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleDbddWms.class);
|
iaIjBillB.setCinventoryid(nccSaleXsfhmxWms.getWlbm());
|
iaIjBillB.setCinventoryvid(nccSaleXsfhmxWms.getWlbm());
|
iaIjBillB.setCsrcid(nccSaleXsfhmxWms.getCbillid());
|
iaIjBillB.setNnum(orderDetl.getQty().intValue() + "");
|
iaIjBillB.setPk_org("FYT");
|
}
|
iaIjBillBS.add(iaIjBillB);
|
}
|
data.put("ia_ijbill", iaIjBill);
|
data.put("ia_ijbill_b", iaIjBillBS);
|
return data;
|
}
|
|
private Object processZKCK(Order order, List<OrderDetl> orderDetls) {
|
//组装对象数据
|
Map<String, Object> data = new HashMap<String, Object>();
|
WhsTransBillHeaderVO whsTransBillHeaderVO = new WhsTransBillHeaderVO();
|
whsTransBillHeaderVO.setPk_org("FYT");
|
whsTransBillHeaderVO.setCotherwhid(order.getItemId());
|
whsTransBillHeaderVO.setCtrantypeid("4K-01");
|
WhsTransBillBodyVO whsTransBillBodyVO = null;
|
List<WhsTransBillBodyVO> 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.setNnum(orderDetl.getQty());
|
whsTransBillBodyVO.setCmaterialoid(orderDetl.getMatnr());
|
whsTransBillBodyVO.setVbatchcode(orderDetl.getBatch());
|
//}
|
whsTransBillHeaderVO.setCwarehouseid(orderDetl.getStandby1());
|
whsTransBillBodyVOS.add(whsTransBillBodyVO);
|
}
|
data.put("WhsTransBillHeaderVO", whsTransBillHeaderVO);
|
data.put("WhsTransBillBodyVO", whsTransBillBodyVOS);
|
return data;
|
}
|
|
|
private Object processCGDH(List<OrderDetl> orderDetls) {
|
//组装对象数据
|
Map<String, Object> data = new HashMap<String, Object>();
|
ic_purchasein_h ic_purchasein_h = new ic_purchasein_h();
|
ic_purchasein_h.setPk_org("FYT");
|
ic_purchasein_h.setCwarehouseid("6301");
|
ic_purchasein_h.setCfanaceorgoid("FYT");
|
ic_purchasein_b ic_purchasein_b = null;
|
List<ic_purchasein_b> 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_h.setCvendorid(nccCgCgdhdWms.getGysbm());
|
ic_purchasein_h.setCtrantypeid(nccCgCgdhdWms.getDhlxbm());
|
|
ic_purchasein_b.setCsourcebillbid(nccCgCgdhdWms.getPkArriveorderB());
|
ic_purchasein_b.setCsourcebillhid(nccCgCgdhdWms.getPkArriveorder());
|
ic_purchasein_b.setCmaterialvid(orderDetl.getMatnr());
|
ic_purchasein_b.setNnum(orderDetl.getQty());
|
ic_purchasein_b.setCsourcetype(nccCgCgdhdWms.getDhlxbm());
|
ic_purchasein_b.setVbatchcode(orderDetl.getBatch());
|
}
|
ic_purchasein_bs.add(ic_purchasein_b);
|
}
|
data.put("ic_purchasein_h", ic_purchasein_h);
|
data.put("ic_purchasein_b", ic_purchasein_bs);
|
return data;
|
}
|
|
/**
|
* @param orderDetls
|
* @return
|
*/
|
private Object processGENERALOUT(List<OrderDetl> orderDetls) {
|
//组装对象数据
|
Map<String, Object> data = new HashMap<String, Object>();
|
ic_generalout_h generalout_h = new ic_generalout_h();
|
generalout_h.setPk_org("FYT");
|
generalout_h.setCwarehouseid("6101");
|
ic_generalout_b generalout_b = null;
|
List<ic_generalout_b> ic_purchasein_bs = new ArrayList<>();
|
for (OrderDetl orderDetl : orderDetls) {
|
generalout_b = new ic_generalout_b();
|
String remark = orderDetl.getRemark();
|
if (!Cools.isEmpty(remark)) {
|
NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
|
generalout_b.setCmaterialvid(orderDetl.getMatnr());
|
generalout_b.setNshouldassistnum(orderDetl.getQty());
|
generalout_b.setVbatchcode(orderDetl.getBatch());
|
}
|
ic_purchasein_bs.add(generalout_b);
|
}
|
data.put("ic_generalout_h", generalout_h);
|
data.put("ic_generalout_b", ic_purchasein_bs);
|
return data;
|
}
|
|
|
/**
|
* @param orderDetls
|
* @return
|
*/
|
private Object processGENERALOUT2(List<OrderDetl> orderDetls, String memo) {
|
Object o = JSONObject.parseArray(memo).get(0);
|
JSONObject jsonObject = JSONObject.parseObject(o.toString());
|
String cspecialhid = JSONObject.parseObject(jsonObject.getString("ic.WhsTransBillHeaderVO")).getString("cspecialhid");
|
List<String> s = new ArrayList<>();
|
JSONArray objects = JSONObject.parseArray(jsonObject.getString("ic.WhsTransBillBodyVO"));
|
for (int i = 0; i < objects.size(); i++) {
|
s.add(objects.getJSONObject(i).getString("cspecialbid"));
|
}
|
|
//组装对象数据
|
Map<String, Object> data = new HashMap<String, Object>();
|
ic_generalout_h generalout_h = new ic_generalout_h();
|
generalout_h.setPk_org("FYT");
|
generalout_h.setCwarehouseid("6101");
|
ic_generalout_b generalout_b = null;
|
List<ic_generalout_b> ic_purchasein_bs = new ArrayList<>();
|
for (int i = 0; i < orderDetls.size(); i++) {
|
OrderDetl orderDetl = orderDetls.get(i);
|
generalout_b = new ic_generalout_b();
|
generalout_b.setCsourcebillbid(s.get(i));
|
generalout_b.setCsourcetype("4K-01");
|
generalout_b.setCsourcebillhid(cspecialhid);
|
generalout_b.setCmaterialvid(orderDetl.getMatnr());
|
generalout_b.setNshouldassistnum(orderDetl.getQty());
|
generalout_b.setVbatchcode(orderDetl.getBatch());
|
ic_purchasein_bs.add(generalout_b);
|
}
|
data.put("ic_generalout_h", generalout_h);
|
data.put("ic_generalout_b", ic_purchasein_bs);
|
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;
|
}
|
}
|