丽知:调拨订单,区分调拨-退货类型。公司对调,数量负数。

This commit is contained in:
zhengyf 2025-03-21 15:09:31 +08:00
parent f8bce54427
commit fc441b4b1f
2 changed files with 155 additions and 58 deletions

View File

@ -47,6 +47,7 @@ import java.util.stream.Collectors;
/**
* 20250303ofs调拨入库确认单--->U8C调拨入库订单
* 20250321 tag->李佳妮ofs数据字典U8_TRANSFER_CATEGORY/U8调拨出入库类关联关系 RETURN/调拨-退货 出入库公司位置对调数量为负数
* 存在多笔入库单
*/
public class TransferInPluginInitializer extends PluginBaseEntity {
@ -302,9 +303,24 @@ public class TransferInPluginInitializer extends PluginBaseEntity {
String format = "";
String response = "";
String ofsCode = "";
boolean isReturn = false;
try {
//ofs调拨订单号
String ofsRefOrderCode = ofsHeader.getRefOrderCode();
////////////////////////////////////////////////////////////////////////////////ofs调拨订单
List<OFSTranseferOrderSearchResponse.OFSTranseferOrder> ofsTranseferOrders = queryOfsTransderOrder(ofsHeader.getRefOrderCode());
if (ofsTranseferOrders == null || ofsTranseferOrders.size() == 0 || ofsTranseferOrders.size() > 1) {
Assert.state(false, "根据调拨出库单:{},的来源单据号:{}查询OFS调拨订单为空或不唯一。请检查。", ofsCode, ofsHeader.getRefOrderCode());
}
OFSTranseferOrderSearchResponse.OFSTranseferOrder ofsTranseferOrder = ofsTranseferOrders.get(0);
////////////////////////////////////////////////////////////////////////////////ofs调拨订单
//add by zyd 20250321 tag->李佳妮ofs数据字典U8_TRANSFER_CATEGORY/U8调拨出入库类关联关系 RETURN/调拨-退货 出入库公司位置对调数量为负数
if ("RETURN".equals(ofsTranseferOrder.getHeader().getOrderType())) {
isReturn = true;
}
//ofs调拨入库确认单单号
ofsCode = ofsHeader.getCode();
//ofs最后修改时间调入时间
@ -315,33 +331,50 @@ public class TransferInPluginInitializer extends PluginBaseEntity {
GeneralBillVO.Parentvo parentvo = new GeneralBillVO.Parentvo();
//coperatorid 制单人
parentvo.setCoperatorid("tbadmin");
//cwarehouseid 仓库
parentvo.setCwarehouseid(ofsHeader.getFacilityCode());
if (isReturn) {//需要反转
parentvo.setCwarehouseid(ofsTranseferOrder.getHeader().getFacilityCode());//出库仓库
} else {
parentvo.setCwarehouseid(ofsHeader.getFacilityCode());//入库仓库
}
//pk_calbody 库存组织
String corpCode = queryU8CEntityUtil.queryBdDefDocByPkDefDocList(ofsHeader.getCompanyCode());
String corpCode = "";
if (isReturn) {//需要反转
corpCode = queryU8CEntityUtil.queryBdDefDocByPkDefDocList(ofsTranseferOrder.getHeader().getCompanyCode());//出库公司
} else {
corpCode = queryU8CEntityUtil.queryBdDefDocByPkDefDocList(ofsHeader.getCompanyCode());//入库公司
}
parentvo.setPk_calbody(corpCode);
//pk_corp 公司
parentvo.setPk_corp(corpCode);
//pk_defdoc19 自定义项19ofs调拨订单号
parentvo.setVuserdef19(ofsRefOrderCode);
//dbilldate 单据日期
parentvo.setDbilldate(format.substring(0, 10));
////////////////////////////////////////////////////////////////////////////////ofs调拨订单
List<OFSTranseferOrderSearchResponse.OFSTranseferOrder> ofsTranseferOrders = queryOfsTransderOrder(ofsHeader.getRefOrderCode());
if (ofsTranseferOrders == null || ofsTranseferOrders.size() == 0 || ofsTranseferOrders.size() > 1) {
Assert.state(false, "根据调拨出库单:{},的来源单据号:{}查询OFS调拨订单为空或不唯一。请检查。", ofsCode, ofsHeader.getRefOrderCode());
}
OFSTranseferOrderSearchResponse.OFSTranseferOrder ofsTranseferOrder = ofsTranseferOrders.get(0);
////////////////////////////////////////////////////////////////////////////////ofs调拨订单
//pk_defdoc4 ofs调入店铺
String inShop = locateShop(ofsTranseferOrder.getHeader().getToCompanyCode());
if (inShop == null) {
Assert.state(false, "根据调入公司:{}未查询到对应的店铺请维护BDDP调拨公司对应店铺自定义项档案。", ofsTranseferOrder.getHeader().getCompanyCode());
if (isReturn) {//需要反转
String inShop = locateShop(ofsTranseferOrder.getHeader().getCompanyCode());
if (inShop == null) {
Assert.state(false, "根据调入公司:{}未查询到对应的店铺请维护BDDP调拨公司对应店铺自定义项档案。", ofsTranseferOrder.getHeader().getCompanyCode());
} else {
parentvo.setPk_defdoc4(inShop);
}
} else {
parentvo.setPk_defdoc4(inShop);
String inShop = locateShop(ofsTranseferOrder.getHeader().getToCompanyCode());
if (inShop == null) {
Assert.state(false, "根据调入公司:{}未查询到对应的店铺请维护BDDP调拨公司对应店铺自定义项档案。", ofsTranseferOrder.getHeader().getCompanyCode());
} else {
parentvo.setPk_defdoc4(inShop);
}
}
//U8C调拨出库单主表信息
List<IcGeneralHEntity> icGeneralHEntityList = queryIcGeneralHByVdef19(ofsRefOrderCode);
if (icGeneralHEntityList == null) {
@ -366,7 +399,11 @@ public class TransferInPluginInitializer extends PluginBaseEntity {
//cinventoryid 存货
childrenvo.setCinventoryid(detail.getSkuCode());
//ninnum 实收数量
childrenvo.setNinnum(detail.getReceivedQty());
if (isReturn) {//需要反转
childrenvo.setNinnum("-" + detail.getReceivedQty());
} else {
childrenvo.setNinnum(detail.getReceivedQty());
}
//csourcetype 来源单据类型编码
childrenvo.setCsourcetype("4Y");
//vsourcebillcode 来源单据号

View File

@ -54,6 +54,7 @@ import java.util.concurrent.locks.ReentrantLock;
/**
* 丽知OFS调拨出库订单--->U8C调拨订单自动生成调拨出库单保存签字
* 20250321 tag->李佳妮ofs数据字典U8_TRANSFER_CATEGORY/U8调拨出入库类关联关系 RETURN/调拨-退货 出入库公司位置对调数量为负数
*/
public class TransferOutPluginInitializer extends PluginBaseEntity {
Logger logger = LoggerFactory.getLogger(TransferOutPluginInitializer.class);
@ -285,6 +286,8 @@ public class TransferOutPluginInitializer extends PluginBaseEntity {
String modify = "";
String response = "";
String ofsCode = "";
boolean isReturn = false;
try {
//主表
StockoutOrderSearchResponse.StockoutOrder.StockoutH stockoutH = transferOutOrder.getHeader();
@ -299,6 +302,11 @@ public class TransferOutPluginInitializer extends PluginBaseEntity {
OFSTranseferOrderSearchResponse.OFSTranseferOrder ofsTranseferOrder = ofsTranseferOrders.get(0);
////////////////////////////////////////////////////////////////////////////////ofs调拨订单
//add by zyd 20250321 tag->李佳妮ofs数据字典U8_TRANSFER_CATEGORY/U8调拨出入库类关联关系 RETURN/调拨-退货 出入库公司位置对调数量为负数
if ("RETURN".equals(ofsTranseferOrder.getHeader().getOrderType())) {
isReturn = true;
}
//创建日期调拨出库创建时间
create = stockoutH.getCreated();
modify = stockoutH.getLastUpdated();
@ -310,52 +318,99 @@ public class TransferOutPluginInitializer extends PluginBaseEntity {
parentvo.setCoperatorid("tbadmin");
//cbiztypeid 业务流程编码
parentvo.setCbiztypeid("to01");
//coutcbid 调出组织编码 对应OFS->原库存地点公司
if (ofsTranseferOrder.getHeader().getCompanyCode() == null) {
Assert.state(false,"原库存地点公司为空请联系ofs方维护接口及数据库数据。");
String corpCode = "";
String toCorpCode = "";
if (isReturn) {//退货的需要反转
//coutcbid 调出组织编码 对应OFS->原库存地点公司
if (ofsTranseferOrder.getHeader().getCompanyCode() == null) {
Assert.state(false, "原库存地点公司为空请联系ofs方维护接口及数据库数据。");
}
corpCode = queryU8CEntityUtil.queryBdDefDocByPkDefDocList(ofsTranseferOrder.getHeader().getCompanyCode());
parentvo.setCincbid(corpCode);
//coutcorpid 调出公司编码 对应OFS->原库存地点公司
parentvo.setCincorpid(corpCode);
//coutwhid 调出仓库编码 对应OFS->原库存地点
parentvo.setCinwhid(ofsTranseferOrder.getHeader().getFacilityCode());
//cincbid 调入组织编码 对应OFS->目标库存地点公司
if (ofsTranseferOrder.getHeader().getToCompanyCode() == null) {
Assert.state(false, "目标库存地点公司为空请联系ofs方维护接口及数据库数据。");
}
toCorpCode = queryU8CEntityUtil.queryBdDefDocByPkDefDocList(ofsTranseferOrder.getHeader().getToCompanyCode());
parentvo.setCoutcbid(toCorpCode);
//cincorpid 调入公司编码 对应OFS->目标库存地点公司
parentvo.setCoutcorpid(toCorpCode);
//cinwhid 调入仓库编码 对应OFS->目标库存地点
parentvo.setCoutwhid(ofsTranseferOrder.getHeader().getToFacilityCode());
//pk_defdoc1 ofs调出店铺
String outShop = locateShop(ofsTranseferOrder.getHeader().getCompanyCode());
if (outShop == null) {
Assert.state(false, "根据调出公司:{}未查询到对应的店铺请维护BDDP调拨公司对应店铺自定义项档案。", ofsTranseferOrder.getHeader().getCompanyCode());
} else {
parentvo.setPk_defdoc4(outShop);
}
//pk_defdoc4 ofs调入店铺
String inShop = locateShop(ofsTranseferOrder.getHeader().getToCompanyCode());
if (inShop == null) {
Assert.state(false, "根据调入公司:{}未查询到对应的店铺请维护BDDP调拨公司对应店铺自定义项档案。", ofsTranseferOrder.getHeader().getCompanyCode());
} else {
parentvo.setPk_defdoc1(inShop);
}
} else {//正常调拨的不需要反转
//coutcbid 调出组织编码 对应OFS->原库存地点公司
if (ofsTranseferOrder.getHeader().getCompanyCode() == null) {
Assert.state(false, "原库存地点公司为空请联系ofs方维护接口及数据库数据。");
}
corpCode = queryU8CEntityUtil.queryBdDefDocByPkDefDocList(ofsTranseferOrder.getHeader().getCompanyCode());
parentvo.setCoutcbid(corpCode);
//coutcorpid 调出公司编码 对应OFS->原库存地点公司
parentvo.setCoutcorpid(corpCode);
//coutwhid 调出仓库编码 对应OFS->原库存地点
parentvo.setCoutwhid(ofsTranseferOrder.getHeader().getFacilityCode());
//cincbid 调入组织编码 对应OFS->目标库存地点公司
if (ofsTranseferOrder.getHeader().getToCompanyCode() == null) {
Assert.state(false, "目标库存地点公司为空请联系ofs方维护接口及数据库数据。");
}
toCorpCode = queryU8CEntityUtil.queryBdDefDocByPkDefDocList(ofsTranseferOrder.getHeader().getToCompanyCode());
parentvo.setCincbid(toCorpCode);
//cincorpid 调入公司编码 对应OFS->目标库存地点公司
parentvo.setCincorpid(toCorpCode);
//cinwhid 调入仓库编码 对应OFS->目标库存地点
parentvo.setCinwhid(ofsTranseferOrder.getHeader().getToFacilityCode());
//pk_defdoc1 ofs调出店铺
String outShop = locateShop(ofsTranseferOrder.getHeader().getCompanyCode());
if (outShop == null) {
Assert.state(false, "根据调出公司:{}未查询到对应的店铺请维护BDDP调拨公司对应店铺自定义项档案。", ofsTranseferOrder.getHeader().getCompanyCode());
} else {
parentvo.setPk_defdoc1(outShop);
}
//pk_defdoc4 ofs调入店铺
String inShop = locateShop(ofsTranseferOrder.getHeader().getToCompanyCode());
if (inShop == null) {
Assert.state(false, "根据调入公司:{}未查询到对应的店铺请维护BDDP调拨公司对应店铺自定义项档案。", ofsTranseferOrder.getHeader().getCompanyCode());
} else {
parentvo.setPk_defdoc4(inShop);
}
}
String corpCode = queryU8CEntityUtil.queryBdDefDocByPkDefDocList(ofsTranseferOrder.getHeader().getCompanyCode());
parentvo.setCoutcbid(corpCode);
//coutcorpid 调出公司编码 对应OFS->原库存地点公司
parentvo.setCoutcorpid(corpCode);
//coutwhid 调出仓库编码 对应OFS->原库存地点
parentvo.setCoutwhid(ofsTranseferOrder.getHeader().getFacilityCode());
//cincbid 调入组织编码 对应OFS->目标库存地点公司
if (ofsTranseferOrder.getHeader().getToCompanyCode() == null) {
Assert.state(false,"目标库存地点公司为空请联系ofs方维护接口及数据库数据。");
}
String toCorpCode = queryU8CEntityUtil.queryBdDefDocByPkDefDocList(ofsTranseferOrder.getHeader().getToCompanyCode());
parentvo.setCincbid(toCorpCode);
//cincorpid 调入公司编码 对应OFS->目标库存地点公司
parentvo.setCincorpid(toCorpCode);
//cinwhid 调入仓库编码 对应OFS->目标库存地点
parentvo.setCinwhid(ofsTranseferOrder.getHeader().getToFacilityCode());
//vnote 备注
parentvo.setVnote(ofsTranseferOrder.getHeader().getNotes());
//pk_defdoc1 ofs调出店铺
String outShop = locateShop(ofsTranseferOrder.getHeader().getCompanyCode());
if (outShop == null) {
Assert.state(false, "根据调出公司:{}未查询到对应的店铺请维护BDDP调拨公司对应店铺自定义项档案。", ofsTranseferOrder.getHeader().getCompanyCode());
} else {
//parentvo.setPk_defdoc1(ofsTranseferOrder.getHeader().getStoreCode());
parentvo.setPk_defdoc1(outShop);
}
//pk_defdoc4 ofs调入店铺
String inShop = locateShop(ofsTranseferOrder.getHeader().getToCompanyCode());
if (inShop == null) {
Assert.state(false, "根据调入公司:{}未查询到对应的店铺请维护BDDP调拨公司对应店铺自定义项档案。", ofsTranseferOrder.getHeader().getCompanyCode());
} else {
//parentvo.setPk_defdoc4(ofsTranseferOrder.getHeader().getToStoreCode());
parentvo.setPk_defdoc4(inShop);
}
//vuserdef17 来源系统
parentvo.setVdef17(ProfilesActiveConstant.sourceSystem1);
@ -377,14 +432,18 @@ public class TransferOutPluginInitializer extends PluginBaseEntity {
//cinvbasid 存货基本档案
children.setCinvbasid(ofsDetail.getSkuCode());
//nnum 数量
children.setNnum(BigDecimal.valueOf(Long.parseLong(ofsDetail.getShipQty())));
if (isReturn) {
children.setNnum(BigDecimal.valueOf(Long.parseLong(ofsDetail.getShipQty())).negate());//退货的取负数
} else {
children.setNnum(BigDecimal.valueOf(Long.parseLong(ofsDetail.getShipQty())));
}
childrenvo.add(children);
//ofs行id
// children.setPk_defdoc20(ofsDetail.getId());
children.setVbdef20(ofsDetail.getId());
//同公司价格不传
if(corpCode.equals(toCorpCode)){
if (corpCode.equals(toCorpCode)) {
continue;
}
//nprice 单价(含税单价)取上一次结账的单价 nmny金额 nnotaxmny无税金额 nnotaxprice 无税单价
@ -418,6 +477,7 @@ public class TransferOutPluginInitializer extends PluginBaseEntity {
String jsonStr = JSONUtil.toJsonStr(billVO);
mapStr = "{\"billvo\":" + jsonStr + "}";
ZTResult ztResult = pushU8CByApiCode.pushByCode(OverallConstant.getOverAllValue("approveqzCode"), mapStr);
// ZTResult ztResult = pushU8CByApiCode.pushByCode(OverallConstant.getOverAllValue("approveqzCode"), null);
//两层判断,一层中台转发,一层u8c返回
if ("false".equals(ztResult.getFlag())) {
//转发失败