提交采购业务流程

This commit is contained in:
liuy 2024-08-22 17:58:46 +08:00
parent 571aefd6c5
commit 18f1335aa5
14 changed files with 485 additions and 168 deletions

View File

@ -1,6 +1,7 @@
package com.hzya.frame.plugin.lets.entity;
import com.hzya.frame.web.entity.BaseEntity;
/**
* (BdBusitype)实体类
*
@ -8,30 +9,30 @@ import com.hzya.frame.web.entity.BaseEntity;
* @since 2023-11-21 10:57:24
*/
public class BdBusitypeEntity extends BaseEntity {
private String busicode;
private String businame;
private Integer busiprop;
private Integer defaultgather;
private String defstr2;
private String defstr3;
private String defstr4;
private String defstr5;
private Integer dr;
private String encapsulate;
private String fktype;
private String isdapclassified;
private String isitem;
private String issrqr;
private String mnecode;
private String owetype;
private String pkBusitype;
private String pkCorp;
private String receipttype;
private String sktype;
private String ts;
private String verifyrule;
private String ystype;
private String busicode;
private String businame;
private Integer busiprop;
private Integer defaultgather;
private String defstr2;
private String defstr3;
private String defstr4;
private String defstr5;
private Integer dr;
private String encapsulate;
private String fktype;
private String isdapclassified;
private String isitem;
private String issrqr;
private String mnecode;
private String owetype;
private String pkBusitype;
private String pkCorp;
private String receipttype;
private String sktype;
private String ts;
private String verifyrule;
private String ystype;
public String getBusicode() {

View File

@ -13,6 +13,7 @@ import com.hzya.frame.plugin.lets.dao.*;
import com.hzya.frame.plugin.lets.entity.*;
import com.hzya.frame.plugin.lets.ofsvo.QueryOfsSoSaleOutVo;
import com.hzya.frame.plugin.lets.u8cdto.*;
import com.hzya.frame.plugin.lets.util.OfsStandardUtil;
import com.hzya.frame.plugin.lets.util.QueryBdBusitypeUtil;
import com.hzya.frame.plugin.lets.util.RdclUtil;
import com.hzya.frame.ttxofs.dto.InterfaceParamDto;
@ -20,6 +21,12 @@ import com.hzya.frame.ttxofs.dto.ofspoorder.OfsPoOrderBean;
import com.hzya.frame.ttxofs.dto.ofspoorder.OfsPoOrderData;
import com.hzya.frame.ttxofs.dto.ofspoorder.OfsPoOrderDetails;
import com.hzya.frame.ttxofs.dto.ofspoorder.OfsPoOrderHeader;
import com.hzya.frame.ttxofs.dto.ofspurchasereturnorder.PurchaseReturnOrder;
import com.hzya.frame.ttxofs.dto.ofspurchasereturnorder.PurchaseReturnOrderDetails;
import com.hzya.frame.ttxofs.dto.ofspurchasereturnorder.PurchaseReturnOrderHeader;
import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.DetailsDto;
import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDetailsDto;
import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDto;
import com.hzya.frame.ttxofs.dto.stock.StockinOrderSearchResponse;
import com.hzya.frame.ttxofs.service.OfsUnifiedService;
import com.hzya.frame.web.entity.JsonResultEntity;
@ -77,6 +84,9 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
@Autowired
private RdclUtil rdclUtil;
@Autowired
private OfsStandardUtil ofsStandardUtil;
@Override
public void initialize() {
logger.info(getPluginLabel() + "執行初始化方法initialize()");
@ -125,21 +135,22 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
@Override
public void run() {
try {
List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoArrayList = new ArrayList<>();
//OFS采退出库
List<HeaderDetailsDto> returnGoodHeaderDetailsDataDtoArrayList = new ArrayList<>();
QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
queryOfsSoSaleOutVo.setClosedAt_start(startTime);
queryOfsSoSaleOutVo.setClosedAt_end(endTime);
queryOfsSoSaleOutVo.setClientCode("LETS");
queryOfsSoSaleOutVo.setPageNo(1L);
queryOfsSoSaleOutVo.setPageSize(50L);
queryOfsSoSaleOutVo.setInternalInstructionType("PURCHASE");
queryOfsSoSaleOutVo.setInternalInstructionType("PURCHASE_RETURN");
queryOfsSoSaleOutVo.setStatus(900L);
queryOfsReturnGoods(queryOfsSoSaleOutVo, returnGoodHeaderDetailsDataDtoArrayList, 1L);
ofsStandardUtil.queryOfsSaleOrder(queryOfsSoSaleOutVo, returnGoodHeaderDetailsDataDtoArrayList, 1L, "ofs.shipment.search");
logger.info("数据返回行数:{}", returnGoodHeaderDetailsDataDtoArrayList.size());
if (returnGoodHeaderDetailsDataDtoArrayList.size() > 0) {
getSet(returnGoodHeaderDetailsDataDtoArrayList);
} else {
logger.info("没有查询到任何数据!不需要同步");
logger.info("没有查询到任何数据!不需要发起同步逻辑!!");
}
} catch (Exception e) {
logger.error("startImplement方法抛出异常", e);
@ -169,20 +180,20 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
@Override
public void run() {
try {
List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoArrayList = new ArrayList<>();
List<HeaderDetailsDto> returnGoodHeaderDetailsDataDtoArrayList = new ArrayList<>();
QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
queryOfsSoSaleOutVo.setClientCode("LETS");
queryOfsSoSaleOutVo.setPageNo(1L);
queryOfsSoSaleOutVo.setPageSize(50L);
queryOfsSoSaleOutVo.setCode(code);
queryOfsSoSaleOutVo.setInternalInstructionType("PURCHASE");
queryOfsSoSaleOutVo.setInternalInstructionType("PURCHASE_RETURN");
queryOfsSoSaleOutVo.setStatus(900L);
queryOfsReturnGoods(queryOfsSoSaleOutVo, returnGoodHeaderDetailsDataDtoArrayList, 1L);
ofsStandardUtil.queryOfsSaleOrder(queryOfsSoSaleOutVo, returnGoodHeaderDetailsDataDtoArrayList, 1L, "ofs.shipment.search");
logger.info("数据返回行数:{}", returnGoodHeaderDetailsDataDtoArrayList.size());
if (returnGoodHeaderDetailsDataDtoArrayList.size() > 0) {
getSet(returnGoodHeaderDetailsDataDtoArrayList);
} else {
logger.info("没有查询到任何数据!不需要同步");
logger.info("没有查询到任何数据!不需要发起同步逻辑!!");
}
} catch (Exception e) {
logger.error("startImplement方法抛出异常", e);
@ -195,7 +206,7 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
} catch (Exception e) {
logger.error("thread.join()异常", e);
}
String threadNameStrEnd = StrUtil.format("开始代理品牌采购OFS采购入库单生成U8C采购订单 售后入库单号:{}", code);
String threadNameStrEnd = StrUtil.format("结束代理品牌采购OFS采购入库单生成U8C采购订单 售后入库单号:{}", code);
logger.info(threadNameStrEnd);
}
@ -206,42 +217,42 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
* @param headerDetailsDtoList 查询结果集
* @param pageNo 从第pageNo页开始查询
*/
private void queryOfsReturnGoods(QueryOfsSoSaleOutVo queryOfsSoSaleOutVo, List<StockinOrderSearchResponse.StockinOrder> headerDetailsDtoList, Long pageNo) throws Exception {
Long pageSize = 200L;
queryOfsSoSaleOutVo.setPageNo(pageNo);
queryOfsSoSaleOutVo.setPageSize(pageSize);
InterfaceParamDto interfaceParamDto = new InterfaceParamDto();
interfaceParamDto.setApi("ofs.receipt.search");
interfaceParamDto.setData(JSON.toJSONString(queryOfsSoSaleOutVo));
StockinOrderSearchResponse rertunGoodsRootBean = (StockinOrderSearchResponse) ofsUnifiedService.unified(interfaceParamDto);
if (rertunGoodsRootBean != null) {
if ("false".equals(rertunGoodsRootBean.getError()) && "0".equals(rertunGoodsRootBean.getCode()) && "Success".equals(rertunGoodsRootBean.getMsg())) {
List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = rertunGoodsRootBean.getData();
if (stockinOrderList != null && stockinOrderList.size() > 0) {
headerDetailsDtoList.addAll(stockinOrderList);
//TODO OFS没有提供分页字段等待开发
}
} else {
logger.error("查询失败,失败原因:{}", JSON.toJSON(interfaceParamDto));
}
} else {
logger.error("rertunGoodsRootBean为空interfaceParamDto对象的结果集json{}", JSON.toJSON(interfaceParamDto));
}
}
// private void queryOfsReturnGoods(QueryOfsSoSaleOutVo queryOfsSoSaleOutVo, List<StockinOrderSearchResponse.StockinOrder> headerDetailsDtoList, Long pageNo) throws Exception {
// Long pageSize = 200L;
// queryOfsSoSaleOutVo.setPageNo(pageNo);
// queryOfsSoSaleOutVo.setPageSize(pageSize);
//
// InterfaceParamDto interfaceParamDto = new InterfaceParamDto();
// interfaceParamDto.setApi("ofs.receipt.search");
// interfaceParamDto.setData(JSON.toJSONString(queryOfsSoSaleOutVo));
// StockinOrderSearchResponse rertunGoodsRootBean = (StockinOrderSearchResponse) ofsUnifiedService.unified(interfaceParamDto);
// if (rertunGoodsRootBean != null) {
// if ("false".equals(rertunGoodsRootBean.getError()) && "0".equals(rertunGoodsRootBean.getCode()) && "Success".equals(rertunGoodsRootBean.getMsg())) {
// List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = rertunGoodsRootBean.getData();
// if (stockinOrderList != null && stockinOrderList.size() > 0) {
// headerDetailsDtoList.addAll(stockinOrderList);
//
// //TODO OFS没有提供分页字段等待开发
// }
// } else {
// logger.error("查询失败,失败原因:{}", JSON.toJSON(interfaceParamDto));
// }
// } else {
// logger.error("rertunGoodsRootBean为空interfaceParamDto对象的结果集json{}", JSON.toJSON(interfaceParamDto));
// }
// }
/**
* 环境预配置
*
* @param returnGoodHeaderDetailsDataDtoArrayList 购入库单
* @param returnGoodHeaderDetailsDataDtoArrayList 退出库单
* @author liuyang
*/
private void getSet(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoArrayList) throws Exception {
private void getSet(List<HeaderDetailsDto> returnGoodHeaderDetailsDataDtoArrayList) throws Exception {
//过滤成功的数据
List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = filterData(returnGoodHeaderDetailsDataDtoArrayList);
List<HeaderDetailsDto> headerDetailsDtos = filterData(returnGoodHeaderDetailsDataDtoArrayList);
//执行推送主逻辑
implement(stockinOrderList);
implement(headerDetailsDtos);
}
/**
@ -249,8 +260,8 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
*
* @author liuyang
*/
private List<StockinOrderSearchResponse.StockinOrder> filterData(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoArrayList) {
List<StockinOrderSearchResponse.StockinOrder> headerDetailsDtoList1 = new ArrayList<>();
private List<HeaderDetailsDto> filterData(List<HeaderDetailsDto> returnGoodHeaderDetailsDataDtoArrayList) {
List<HeaderDetailsDto> headerDetailsDtoList1 = new ArrayList<>();
if (returnGoodHeaderDetailsDataDtoArrayList != null && returnGoodHeaderDetailsDataDtoArrayList.size() > 0) {
//TODO 出库单明细主键需要O返回目前没有已经提需求
headerDetailsDtoList1.addAll(returnGoodHeaderDetailsDataDtoArrayList);
@ -263,20 +274,20 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
*
* @author liuyang
*/
private void implement(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoList) throws Exception {
if (returnGoodHeaderDetailsDataDtoList != null && returnGoodHeaderDetailsDataDtoList.size() > 0) {
private void implement(List<HeaderDetailsDto> headerDetailsDtos) throws Exception {
if (headerDetailsDtos != null && headerDetailsDtos.size() > 0) {
try {
// 查询基本档案
List<PoOrderSonDto> poOrderSonDtos = queryBasicArchives(returnGoodHeaderDetailsDataDtoList);
// 转换基本档案
List<PoOrderRerturnSonDto> poOrderRerturnSonDtos = queryBasicArchives(headerDetailsDtos);
// 代理品牌采购业务流程
BdBusitypeEntity bdBusitypeEntity = u8cOperationFlow();
// 查询采购收发类别
BdRdclEntity bdRdclEntity = rdclUtil.queryRdClObject("102");
if (poOrderSonDtos != null && poOrderSonDtos.size() > 0) {
for (int i = 0; i < poOrderSonDtos.size(); i++) {
PoOrderSonDto poOrderSonDto = poOrderSonDtos.get(i);
List<StockinOrderSearchResponse.StockinOrder.StockinB> details = poOrderSonDto.getDetails();
if (poOrderRerturnSonDtos != null && poOrderRerturnSonDtos.size() > 0) {
for (int i = 0; i < poOrderRerturnSonDtos.size(); i++) {
PoOrderRerturnSonDto poOrderSonDto = poOrderRerturnSonDtos.get(i);
List<DetailsDto> details = poOrderSonDto.getDetails();
//生成业务日期
String generateBusinessDate = createGenerateBusinessDate(poOrderSonDto);
@ -289,12 +300,13 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
BdCalbodyEntity bdCalbodyEntity = poOrderSonDto.getBdCalbodyEntity();//收货库存组织
BdStordocEntity bdStordocEntity = poOrderSonDto.getBdStordocEntity();//收货仓库
OfsPoOrderData ofsPoOrderData = poOrderSonDto.getOfsPoOrderData();//OFS采购订单
OfsPoOrderHeader ofsPoOrderDataHeader = ofsPoOrderData.getHeader();
List<OfsPoOrderDetails> ofsPoOrderDataDetails = ofsPoOrderData.getDetails();
PurchaseReturnOrder purchaseReturnOrder = poOrderSonDto.getPurchaseReturnOrder();//OFS采退订单
PurchaseReturnOrderHeader header = purchaseReturnOrder.getHeader();
List<PurchaseReturnOrderDetails> details1 = purchaseReturnOrder.getDetails();
//采购订单表头
PoOrderParentDto poOrderParentDto = new PoOrderParentDto();
poOrderParentDto.setBreturn(true);//确认退货
poOrderParentDto.setCbiztype(bdBusitypeEntity.getPkBusitype());//业务流程
poOrderParentDto.setCdeptid(bdDeptdocEntity.getPkDeptdoc());//采购部门
poOrderParentDto.setCoperator("0001A110000000000U3D");//制单人
@ -315,37 +327,37 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
poOrderParentDto.setVdef20(poOrderSonDto.getId());//原单主键
//收发类别
// poOrderParentDto.setPk_defdoc3(bdRdclEntity.getPkRdcl());
// poOrderParentDto.setVdef3(bdRdclEntity.getRdname());
poOrderParentDto.setPk_defdoc3(bdRdclEntity.getPkRdcl());
poOrderParentDto.setVdef3(bdRdclEntity.getRdname());
//采购订单明细行
List<PoOrderChildrenDto> poOrderChildrenDtoList = new ArrayList<>();
for (int j = 0; j < details.size(); j++) {
StockinOrderSearchResponse.StockinOrder.StockinB stockinB = details.get(j);
OfsPoOrderDetails ofsPoOrderDetail = findOfsPoOrderDetail(ofsPoOrderDataDetails, stockinB);
DetailsDto detailsDto = details.get(j);
PurchaseReturnOrderDetails ofsPoOrderDetail = findOfsPoOrderDetail(details1, detailsDto);
//TODO 测试
stockinB.setReceivedQty("1");
detailsDto.setShipQty("1");
ofsPoOrderDetail.setFulfillAmount("10");
//2024年8月20日 16:02:21 已经和妮姐万万确认采购公司和收货公司目前是一致的暂时不用区分取数逻辑
BdInvmandocEntity bdInvmandocEntity = queryInventoryMan(stockinB, bdCorpEntity.getPkCorp());
String receivedQty = stockinB.getReceivedQty();//实收数量
String fulfillAmount = ofsPoOrderDetail.getFulfillAmount();//收累计总金额
BdInvmandocEntity bdInvmandocEntity = queryInventoryMan(detailsDto, bdCorpEntity.getPkCorp());
String receivedQty = detailsDto.getShipQty();//实发数量
String fulfillAmount = ofsPoOrderDetail.getFulfillAmount();//际进价
//原币含税单价
BigDecimal noriginalcurprice = null;
try {
noriginalcurprice = new BigDecimal(fulfillAmount).divide(new BigDecimal(receivedQty), 20, BigDecimal.ROUND_HALF_UP).setScale(4, BigDecimal.ROUND_HALF_UP);
} catch (Exception e) {
logger.error("计算采购入库单原币含税单价失败", e);
Assert.state(false, "计算采购入库单原币含税单价失败 原因:{}", e.getMessage());
logger.error("计算采退出库单原币含税单价失败", e);
Assert.state(false, "计算采退出库单原币含税单价失败 原因:{}", e.getMessage());
}
PoOrderChildrenDto poOrderChildrenDto = new PoOrderChildrenDto();
poOrderChildrenDto.setCmangid(bdInvmandocEntity.getPkInvmandoc());//存货管理id
poOrderChildrenDto.setNordernum(receivedQty);//订货数量
poOrderChildrenDto.setNordernum("-" + new BigDecimal(receivedQty).stripTrailingZeros().toPlainString());//订货数量
poOrderChildrenDto.setNorgtaxprice(noriginalcurprice.stripTrailingZeros().toPlainString());//原币含税单价
poOrderChildrenDto.setPk_arrvcorp(bdCorpEntity.getPkCorp());//收货公司
poOrderChildrenDto.setPk_arrvstoorg(bdCalbodyEntity.getPkCalbody());//收货库存组织
@ -391,19 +403,20 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
}
/**
* 档案转换
* 档案转换(OFS->U8C)
*
* @param returnGoodHeaderDetailsDataDtoList 采退出库单
* @author liuyang
*/
private List<PoOrderSonDto> queryBasicArchives(List<StockinOrderSearchResponse.StockinOrder> returnGoodHeaderDetailsDataDtoList) {
List<PoOrderSonDto> poOrderSonDtoArrayList = new ArrayList<>();
private List<PoOrderRerturnSonDto> queryBasicArchives(List<HeaderDetailsDto> returnGoodHeaderDetailsDataDtoList) {
List<PoOrderRerturnSonDto> poOrderSonDtoArrayList = new ArrayList<>();
if (returnGoodHeaderDetailsDataDtoList != null && returnGoodHeaderDetailsDataDtoList.size() > 0) {
try {
for (int i = 0; i < returnGoodHeaderDetailsDataDtoList.size(); i++) {
StockinOrderSearchResponse.StockinOrder stockinOrder = returnGoodHeaderDetailsDataDtoList.get(i);
StockinOrderSearchResponse.StockinOrder.StockinH header = stockinOrder.getHeader();
List<StockinOrderSearchResponse.StockinOrder.StockinB> details = stockinOrder.getDetails();
HeaderDetailsDto headerDetailsDto = returnGoodHeaderDetailsDataDtoList.get(i);
HeaderDto header = headerDetailsDto.getHeader();
List<DetailsDto> details = headerDetailsDto.getDetails();
//采购公司
String companyCode = header.getCompanyCode();
@ -445,11 +458,16 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
Assert.state(false, "根据采购公司主键:{} 匹配到多个采购组织", bdCorpEntityList.get(0).getPkCorp());
}
//2024年8月22日 15:30:09 如果purchaseReturnOrder为null那么在queryPurchaseReturnOrder会抛出异常此处不需要验证purchaseReturnOrder是否为null
PurchaseReturnOrder purchaseReturnOrder = queryPurchaseReturnOrder(header.getRefOrderCode());
PurchaseReturnOrderHeader header1 = purchaseReturnOrder.getHeader();
// List<PurchaseReturnOrderDetails> details1 = purchaseReturnOrder.getDetails();
//客商基本档案(供应商类型)
//2024年8月20日 14:47:55 丽知商城OFS 供应商客商档案传递到U8C的客商
//其中自定义项1作为原系统编码因此统一传到自定义项一已经和大家确认好了没有关系的放心大胆传吧宝贝
String shipFromCode = header.getShipFromCode();
Assert.notNull(shipFromCode, "O供应商编码不能为空没有办法完成业务逻辑请配置供应商编码");
String shipFromCode = header1.getShipFromCode();
Assert.notNull(shipFromCode, "O供应商编码不能为空没有办法完成业务逻辑请配置供应商编码(采退)");
Assert.state(!"".equals(shipFromCode.trim()), "O供应商编码不能为空没有办法完成业务逻辑请配置供应商编码");
BdCubasdocEntity bdCubasdocEntity = new BdCubasdocEntity();
bdCubasdocEntity.setDataSourceCode("lets_u8c");
@ -503,22 +521,19 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
Assert.state(false, "根据O仓库编码+U8C收货库存组织主键匹配到U8C仓库多个", facilityCode, bdCalbodyEntities.get(0).getPkCalbody());
}
//查询OFS采购订单
OfsPoOrderData ofsPoOrderData = queryOfsPoOrder(header.getRefOrderCode());
PoOrderRerturnSonDto poOrderRerturnSonDto = new PoOrderRerturnSonDto();
poOrderRerturnSonDto.setBdCorpEntity(bdCorpEntityList.get(0));
poOrderRerturnSonDto.setBdDeptdocEntity(bdDeptdocEntityList.get(0));
poOrderRerturnSonDto.setBdPurorgEntity(bdPurorgEntityList.get(0));
poOrderRerturnSonDto.setBdCubasdocEntity(bdCubasdocEntityList.get(0));
poOrderRerturnSonDto.setBdCumandocEntity(bdCumandocEntityList.get(0));
poOrderRerturnSonDto.setBdCalbodyEntity(bdCalbodyEntities.get(0));
poOrderRerturnSonDto.setBdStordocEntity(bdStordocEntityList.get(0));
poOrderRerturnSonDto.setDetails(details);
poOrderRerturnSonDto.setPurchaseReturnOrder(purchaseReturnOrder);
PoOrderSonDto poOrderSonDto = new PoOrderSonDto();
poOrderSonDto.setBdCorpEntity(bdCorpEntityList.get(0));
poOrderSonDto.setBdDeptdocEntity(bdDeptdocEntityList.get(0));
poOrderSonDto.setBdPurorgEntity(bdPurorgEntityList.get(0));
poOrderSonDto.setBdCubasdocEntity(bdCubasdocEntityList.get(0));
poOrderSonDto.setBdCumandocEntity(bdCumandocEntityList.get(0));
poOrderSonDto.setOfsPoOrderData(ofsPoOrderData);
poOrderSonDto.setBdCalbodyEntity(bdCalbodyEntities.get(0));
poOrderSonDto.setBdStordocEntity(bdStordocEntityList.get(0));
poOrderSonDto.setDetails(details);
BeanUtil.copyPropertiesV2(header, poOrderSonDto);
poOrderSonDtoArrayList.add(poOrderSonDto);
BeanUtil.copyPropertiesV2(header, poOrderRerturnSonDto);
poOrderSonDtoArrayList.add(poOrderRerturnSonDto);
}
//成功
} catch (Exception e) {
@ -551,7 +566,7 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
*
* @author liuyang
*/
private String createGenerateBusinessDate(PoOrderSonDto poOrderSonDto) {
private String createGenerateBusinessDate(PoOrderRerturnSonDto poOrderSonDto) {
//TODO 测试
poOrderSonDto.setShipAt("2024-08-19");
if (poOrderSonDto != null && poOrderSonDto.getShipAt() != null) {
@ -565,8 +580,8 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
}
return businessFormat;
} else {
logger.error("生成采购订单入库日期失败或者shipAt为空! json{}", JSON.toJSON(poOrderSonDto));
Assert.state(false, "生成采购订单入库日期失败或者shipAt为空! json{}", JSON.toJSON(poOrderSonDto));
logger.error("生成采退出库日期失败或者shipAt为空! json{}", JSON.toJSON(poOrderSonDto));
Assert.state(false, "生成采退出库日期失败或者shipAt为空! json{}", JSON.toJSON(poOrderSonDto));
return null;
}
}
@ -574,23 +589,23 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
/**
* 查询存货管理档案
*
* @param pkCorp 发货公司主键
* @param stockinB 采购入库单明细行
* @param pkCorp 发货公司主键
* @param detailsDto 采购入库单明细行
* @author liuyang
*/
private BdInvmandocEntity queryInventoryMan(StockinOrderSearchResponse.StockinOrder.StockinB stockinB, String pkCorp) throws Exception {
Assert.notNull(stockinB, "sonDetailsDto不能为空");
Assert.notNull(stockinB.getSkuCode(), "O存货商家编码不能为空");
private BdInvmandocEntity queryInventoryMan(DetailsDto detailsDto, String pkCorp) throws Exception {
Assert.notNull(detailsDto, "sonDetailsDto不能为空");
Assert.notNull(detailsDto.getSkuCode(), "O存货商家编码不能为空");
Assert.notNull(pkCorp, "发货公司主键不能为空");
BdInvmandocEntity bdInvmandocEntity = new BdInvmandocEntity();
bdInvmandocEntity.setInvcode(stockinB.getSkuCode());
bdInvmandocEntity.setInvcode(detailsDto.getSkuCode());
bdInvmandocEntity.setPkCorp(pkCorp);
List<BdInvmandocEntity> bdInvmandocEntity2 = iBdInvmandocDao.queryBdInvmandocByInvcodeList(bdInvmandocEntity);
if (bdInvmandocEntity2.size() == 0) {
Assert.state(false, "根据O商家编码{} U8C发货公司主键{}没有查询到存货管理档案", stockinB.getSkuCode(), pkCorp);
Assert.state(false, "根据O商家编码{} U8C发货公司主键{}没有查询到存货管理档案", detailsDto.getSkuCode(), pkCorp);
} else if (bdInvmandocEntity2.size() >= 2) {
Assert.state(false, "根据O商家编码{} U8C发货公司主键{}没有查询到存货管理档案", stockinB.getSkuCode(), pkCorp);
Assert.state(false, "根据O商家编码{} U8C发货公司主键{}没有查询到存货管理档案", detailsDto.getSkuCode(), pkCorp);
}
return bdInvmandocEntity2.get(0);
}
@ -639,26 +654,24 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
* 应该通过明细行主键匹配但是只能根据sku匹配目前的实现逻辑
* 查找OFS采购订单明细行主要是为了带出实付金额通过实付金额/实收数量=含税单价
*
* @param ofsPoOrderDataDetails OFS采订单明细行所有对象
* @param stockinB OFS采购入库单明细行对象
* @param ofsPoOrderDataDetails OFS采退订单明细行所有对象
* @param detailsDto OFS采退入库单明细行对象
* @author liuyang
*/
private OfsPoOrderDetails findOfsPoOrderDetail(List<OfsPoOrderDetails> ofsPoOrderDataDetails, StockinOrderSearchResponse.StockinOrder.StockinB stockinB) {
if (ofsPoOrderDataDetails != null && ofsPoOrderDataDetails.size() > 0 && stockinB != null) {
// 2024年8月20日 23:33:11 先使用sku验证然后O接口更新明细id使用明细id匹配
// 2024年8月20日 23:36:04 使用sku匹配在某种角度来说是错误的
// 2024年8月21日 14:23:02 O接口已经返回明细行主键根据这个匹配
private PurchaseReturnOrderDetails findOfsPoOrderDetail(List<PurchaseReturnOrderDetails> ofsPoOrderDataDetails, DetailsDto detailsDto) {
if (ofsPoOrderDataDetails != null && ofsPoOrderDataDetails.size() > 0 && detailsDto != null) {
for (int i = 0; i < ofsPoOrderDataDetails.size(); i++) {
Assert.notNull(ofsPoOrderDataDetails.get(i).getId(), "采购订单明细行主键不能为空!");
Assert.notNull(stockinB.getRefOrderDetailId(), "采购入库单明细行对应的关联采购订单的明细行主键不能为空!");
if (ofsPoOrderDataDetails.get(i).getId().equals(stockinB.getRefOrderDetailId())) {
Assert.notNull(ofsPoOrderDataDetails.get(i).getId(), "采退订单明细行主键不能为空!");
Assert.notNull(detailsDto.getRefOrderDetailId(), "采退出库单明细行对应的关联采退订单的明细行主键不能为空!");
if (ofsPoOrderDataDetails.get(i).getId().equals(detailsDto.getRefOrderDetailId())) {
return ofsPoOrderDataDetails.get(0);
}
}
} else {
logger.error("findOfsPoOrderDetail方法对应的ofsPoOrderDataDetails不能为空否则业务目标无法完成");
}
Assert.state(false, "无法匹配到采购订单明细行业务逻辑无法完成根据sku编码{}查找,但是在采购订单中无法匹配!", stockinB.getSkuCode());
Assert.state(false, "无法匹配到采退订单明细行,业务逻辑无法完成!");
return null;
}
@ -724,4 +737,25 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
}
return null;
}
/**
* 查询采退订单
*
* @param code 采退订单号
* @author liuyang
*/
private PurchaseReturnOrder queryPurchaseReturnOrder(String code) throws Exception {
List<PurchaseReturnOrder> headerDetailsDtoList = new ArrayList<>();
QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
queryOfsSoSaleOutVo.setCode(code);
queryOfsSoSaleOutVo.setClientCode("LETS");
queryOfsSoSaleOutVo.setPageNo(1L);
queryOfsSoSaleOutVo.setPageSize(50L);
ofsStandardUtil.queryPurchaseReturnOrder(queryOfsSoSaleOutVo, headerDetailsDtoList, 1L, "ofs.purchaseReturnOrder.search");
if (headerDetailsDtoList.size() > 0) {
return headerDetailsDtoList.get(0);
}
Assert.state(false, "根据OFS采购订单号:{}无法查询到OFS采购订单信息", code);
return null;
}
}

View File

@ -13,6 +13,7 @@ import com.hzya.frame.plugin.lets.dao.*;
import com.hzya.frame.plugin.lets.entity.*;
import com.hzya.frame.plugin.lets.ofsvo.QueryOfsSoSaleOutVo;
import com.hzya.frame.plugin.lets.u8cdto.*;
import com.hzya.frame.plugin.lets.util.OfsStandardUtil;
import com.hzya.frame.plugin.lets.util.QueryBdBusitypeUtil;
import com.hzya.frame.plugin.lets.util.RdclUtil;
import com.hzya.frame.ttxofs.dto.InterfaceParamDto;
@ -77,6 +78,9 @@ public class ProxyPurchaseWarehous extends PluginBaseEntity {
@Autowired
private RdclUtil rdclUtil;
@Autowired
private OfsStandardUtil ofsStandardUtil;
@Override
public void initialize() {
logger.info(getPluginLabel() + "執行初始化方法initialize()");
@ -132,10 +136,9 @@ public class ProxyPurchaseWarehous extends PluginBaseEntity {
queryOfsSoSaleOutVo.setClientCode("LETS");
queryOfsSoSaleOutVo.setPageNo(1L);
queryOfsSoSaleOutVo.setPageSize(50L);
// queryOfsSoSaleOutVo.setCode(code);
queryOfsSoSaleOutVo.setInternalInstructionType("PURCHASE");
queryOfsSoSaleOutVo.setStatus(900L);
queryOfsReturnGoods(queryOfsSoSaleOutVo, returnGoodHeaderDetailsDataDtoArrayList, 1L);
ofsStandardUtil.queryOfsReturnGoods(queryOfsSoSaleOutVo, returnGoodHeaderDetailsDataDtoArrayList, 1L, "ofs.receipt.search");
logger.info("数据返回行数:{}", returnGoodHeaderDetailsDataDtoArrayList.size());
if (returnGoodHeaderDetailsDataDtoArrayList.size() > 0) {
getSet(returnGoodHeaderDetailsDataDtoArrayList);
@ -163,7 +166,7 @@ public class ProxyPurchaseWarehous extends PluginBaseEntity {
* @author liuyang
*/
public void startImplement(String code) {
String threadNameStr = StrUtil.format("代理品牌采购OFS采购入库单生成U8C采购订单 售后入库单号", code);
String threadNameStr = StrUtil.format("代理品牌采购OFS采购入库单生成U8C采购订单 采购入库单号:{}", code);
logger.info(threadNameStr);
Thread thread = new Thread(new Runnable() {
@ -177,8 +180,8 @@ public class ProxyPurchaseWarehous extends PluginBaseEntity {
queryOfsSoSaleOutVo.setPageSize(50L);
queryOfsSoSaleOutVo.setCode(code);
queryOfsSoSaleOutVo.setInternalInstructionType("PURCHASE");
// queryOfsSoSaleOutVo.setStatus(900L);
queryOfsReturnGoods(queryOfsSoSaleOutVo, returnGoodHeaderDetailsDataDtoArrayList, 1L);
queryOfsSoSaleOutVo.setStatus(900L);
ofsStandardUtil.queryOfsReturnGoods(queryOfsSoSaleOutVo, returnGoodHeaderDetailsDataDtoArrayList, 1L, "ofs.receipt.search");
logger.info("数据返回行数:{}", returnGoodHeaderDetailsDataDtoArrayList.size());
if (returnGoodHeaderDetailsDataDtoArrayList.size() > 0) {
getSet(returnGoodHeaderDetailsDataDtoArrayList);
@ -205,30 +208,30 @@ public class ProxyPurchaseWarehous extends PluginBaseEntity {
* @param headerDetailsDtoList 查询结果集
* @param pageNo 从第pageNo页开始查询
*/
private void queryOfsReturnGoods(QueryOfsSoSaleOutVo queryOfsSoSaleOutVo, List<StockinOrderSearchResponse.StockinOrder> headerDetailsDtoList, Long pageNo) throws Exception {
Long pageSize = 200L;
queryOfsSoSaleOutVo.setPageNo(pageNo);
queryOfsSoSaleOutVo.setPageSize(pageSize);
InterfaceParamDto interfaceParamDto = new InterfaceParamDto();
interfaceParamDto.setApi("ofs.receipt.search");
interfaceParamDto.setData(JSON.toJSONString(queryOfsSoSaleOutVo));
StockinOrderSearchResponse rertunGoodsRootBean = (StockinOrderSearchResponse) ofsUnifiedService.unified(interfaceParamDto);
if (rertunGoodsRootBean != null) {
if ("false".equals(rertunGoodsRootBean.getError()) && "0".equals(rertunGoodsRootBean.getCode()) && "Success".equals(rertunGoodsRootBean.getMsg())) {
List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = rertunGoodsRootBean.getData();
if (stockinOrderList != null && stockinOrderList.size() > 0) {
headerDetailsDtoList.addAll(stockinOrderList);
//TODO OFS没有提供分页字段等待开发
}
} else {
logger.error("查询失败,失败原因:{}", JSON.toJSON(interfaceParamDto));
}
} else {
logger.error("rertunGoodsRootBean为空interfaceParamDto对象的结果集json{}", JSON.toJSON(interfaceParamDto));
}
}
// private void queryOfsReturnGoods(QueryOfsSoSaleOutVo queryOfsSoSaleOutVo, List<StockinOrderSearchResponse.StockinOrder> headerDetailsDtoList, Long pageNo) throws Exception {
// Long pageSize = 200L;
// queryOfsSoSaleOutVo.setPageNo(pageNo);
// queryOfsSoSaleOutVo.setPageSize(pageSize);
//
// InterfaceParamDto interfaceParamDto = new InterfaceParamDto();
// interfaceParamDto.setApi("ofs.receipt.search");
// interfaceParamDto.setData(JSON.toJSONString(queryOfsSoSaleOutVo));
// StockinOrderSearchResponse rertunGoodsRootBean = (StockinOrderSearchResponse) ofsUnifiedService.unified(interfaceParamDto);
// if (rertunGoodsRootBean != null) {
// if ("false".equals(rertunGoodsRootBean.getError()) && "0".equals(rertunGoodsRootBean.getCode()) && "Success".equals(rertunGoodsRootBean.getMsg())) {
// List<StockinOrderSearchResponse.StockinOrder> stockinOrderList = rertunGoodsRootBean.getData();
// if (stockinOrderList != null && stockinOrderList.size() > 0) {
// headerDetailsDtoList.addAll(stockinOrderList);
//
// //TODO OFS没有提供分页字段等待开发
// }
// } else {
// logger.error("查询失败,失败原因:{}", JSON.toJSON(interfaceParamDto));
// }
// } else {
// logger.error("rertunGoodsRootBean为空interfaceParamDto对象的结果集json{}", JSON.toJSON(interfaceParamDto));
// }
// }
/**
* 环境预配置
@ -314,8 +317,8 @@ public class ProxyPurchaseWarehous extends PluginBaseEntity {
poOrderParentDto.setVdef20(poOrderSonDto.getId());//原单主键
//收发类别
// poOrderParentDto.setPk_defdoc3(bdRdclEntity.getPkRdcl());
// poOrderParentDto.setVdef3(bdRdclEntity.getRdname());
poOrderParentDto.setPk_defdoc3(bdRdclEntity.getPkRdcl());
poOrderParentDto.setVdef3(bdRdclEntity.getRdname());
//采购订单明细行
List<PoOrderChildrenDto> poOrderChildrenDtoList = new ArrayList<>();
@ -448,8 +451,8 @@ public class ProxyPurchaseWarehous extends PluginBaseEntity {
//2024年8月20日 14:47:55 丽知商城OFS 供应商客商档案传递到U8C的客商
//其中自定义项1作为原系统编码因此统一传到自定义项一已经和大家确认好了没有关系的放心大胆传吧宝贝
String shipFromCode = header.getShipFromCode();
Assert.notNull(shipFromCode, "O供应商编码不能为空没有办法完成业务逻辑请配置供应商编码");
Assert.state(!"".equals(shipFromCode.trim()), "O供应商编码不能为空没有办法完成业务逻辑请配置供应商编码");
Assert.notNull(shipFromCode, "O供应商编码不能为空没有办法完成业务逻辑请配置供应商编码(采购)");
Assert.state(!"".equals(shipFromCode.trim()), "O供应商编码不能为空没有办法完成业务逻辑请配置供应商编码(采购)");
BdCubasdocEntity bdCubasdocEntity = new BdCubasdocEntity();
bdCubasdocEntity.setDataSourceCode("lets_u8c");
bdCubasdocEntity.setDr(0L);

View File

@ -16,7 +16,7 @@ public class PoOrderParentDto {
private String bislatest;
private Boolean bisreplenish;
private String bpubtoec;
private String breturn;
private Boolean breturn;
private Boolean bsocooptome;
private String caccountbankid;
private String caccountyear;

View File

@ -0,0 +1,71 @@
package com.hzya.frame.plugin.lets.u8cdto;
import com.hzya.frame.plugin.lets.entity.*;
//import com.hzya.frame.ttxofs.dto.ofspoorder.OfsPoOrderData;
import com.hzya.frame.ttxofs.dto.ofspurchasereturnorder.PurchaseReturnOrder;
import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.DetailsDto;
import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDto;
import lombok.Data;
import java.util.List;
/**
* @Authorliuyang
* @Packagecom.hzya.frame.plugin.lets.u8cdto
* @ProjectkangarooDataCenterV3
* @namePoOrderSonDto
* @Date2024/8/20 14:51
* @FilenamePoOrderSonDto
*/
@Data
public class PoOrderRerturnSonDto extends HeaderDto {
/**
* 采购公司
*/
private BdCorpEntity bdCorpEntity;
/**
* 采购部门
*/
private BdDeptdocEntity bdDeptdocEntity;
/**
* 采购组织
*/
private BdPurorgEntity bdPurorgEntity;
/**
* 客商基本档案-供应商
*/
private BdCubasdocEntity bdCubasdocEntity;
/**
* 客商管理档案-供应商
*/
private BdCumandocEntity bdCumandocEntity;
/**
* 明细行
*/
private List<DetailsDto> details;
/**
* OFS采购订单
*/
// private OfsPoOrderData ofsPoOrderData;
/**
* 收货库存组织
*/
private BdCalbodyEntity bdCalbodyEntity;
/**
* 收货仓库
*/
private BdStordocEntity bdStordocEntity;
/**
* 采退订单
*/
private PurchaseReturnOrder purchaseReturnOrder;
}

View File

@ -0,0 +1,12 @@
package com.hzya.frame.plugin.lets.util;
/**
* @Authorliuyang
* @Packagecom.hzya.frame.plugin.lets.util
* @ProjectkangarooDataCenterV3
* @nameOfsStandardUti
* @Date2024/8/22 15:01
* @FilenameOfsStandardUti
*/
public class OfsStandardUti {
}

View File

@ -4,6 +4,8 @@ import cn.hutool.core.lang.Assert;
import com.alibaba.fastjson.JSON;
import com.hzya.frame.plugin.lets.ofsvo.QueryOfsSoSaleOutVo;
import com.hzya.frame.ttxofs.dto.InterfaceParamDto;
import com.hzya.frame.ttxofs.dto.ofspurchasereturnorder.PurchaseReturnOrder;
import com.hzya.frame.ttxofs.dto.ofspurchasereturnorder.PurchaseReturnOrderBean;
import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDetailsDto;
import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.SaleOutReturnMessageDto;
import com.hzya.frame.ttxofs.dto.stock.StockinOrderSearchResponse;
@ -111,4 +113,39 @@ public class OfsStandardUtil {
logger.error("rertunGoodsRootBean为空interfaceParamDto对象的结果集json{}", JSON.toJSON(interfaceParamDto));
}
}
/**
* OFS采退订单查询
*
* @author liuyang
*/
public void queryPurchaseReturnOrder(QueryOfsSoSaleOutVo queryOfsSoSaleOutVo, List<PurchaseReturnOrder> headerDetailsDtoList, Long pageNo, String api) throws Exception {
Assert.notNull(queryOfsSoSaleOutVo, "queryOfsSoSaleOutVo不能为空!");
Assert.notNull(headerDetailsDtoList, "headerDetailsDtoList不能为空!");
Assert.notNull(pageNo, "pageNo不能为空!");
Assert.notNull(api, "api不能为空!");
Long pageSize = 200L;
queryOfsSoSaleOutVo.setPageNo(pageNo);
queryOfsSoSaleOutVo.setPageSize(pageSize);
InterfaceParamDto interfaceParamDto = new InterfaceParamDto();
interfaceParamDto.setApi(api);
interfaceParamDto.setData(JSON.toJSONString(queryOfsSoSaleOutVo));
PurchaseReturnOrderBean purchaseReturnOrderBean = (PurchaseReturnOrderBean) ofsUnifiedService.unified(interfaceParamDto);
if (purchaseReturnOrderBean != null) {
if ("false".equals(purchaseReturnOrderBean.getError()) && "0".equals(purchaseReturnOrderBean.getCode()) && "Success".equals(purchaseReturnOrderBean.getMsg())) {
List<PurchaseReturnOrder> purchaseReturnOrders = purchaseReturnOrderBean.getData();
if (purchaseReturnOrders != null && purchaseReturnOrders.size() > 0) {
headerDetailsDtoList.addAll(purchaseReturnOrders);
//TODO OFS没有提供分页字段等待开发
}
} else {
logger.error("查询失败,失败原因:{}", JSON.toJSON(interfaceParamDto));
}
} else {
logger.error("purchaseReturnOrderBean为空interfaceParamDto对象的结果集json{}", JSON.toJSON(interfaceParamDto));
}
}
}

View File

@ -7,8 +7,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import static org.junit.Assert.*;
/**
* @Authorliuyang
* @Packagecom.hzya.frame.plugin.lets.plugin.purchase
@ -27,7 +25,7 @@ public class ProxyPurchaseReturnTest {
@Test
public void startImplement() {
try {
proxyPurchaseReturn.startImplement("LETS-SH2024082000000006");
proxyPurchaseReturn.startImplement("LETS-SH2024082200000006");
} catch (Exception e) {
e.printStackTrace();
}

View File

@ -0,0 +1,52 @@
package com.hzya.frame.plugin.lets.util;
import com.alibaba.fastjson2.JSON;
import com.hzya.frame.WebappApplication;
import com.hzya.frame.plugin.lets.ofsvo.QueryOfsSoSaleOutVo;
import com.hzya.frame.ttxofs.dto.ofspurchasereturnorder.PurchaseReturnOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.*;
/**
* 测试采退订单
*
* @Authorliuyang
* @Packagecom.hzya.frame.plugin.lets.util
* @ProjectkangarooDataCenterV3
* @nameOfsStandardUtilTest
* @Date2024/8/22 15:01
* @FilenameOfsStandardUtilTest
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = WebappApplication.class)
public class OfsStandardUtilTest {
@Autowired
private OfsStandardUtil ofsStandardUtil;
@Test
public void queryPurchaseReturnOrder() {
try {
List<PurchaseReturnOrder> headerDetailsDtoList = new ArrayList<>();
QueryOfsSoSaleOutVo queryOfsSoSaleOutVo = new QueryOfsSoSaleOutVo();
queryOfsSoSaleOutVo.setCode("LETS-PR2024082000000001");
queryOfsSoSaleOutVo.setClientCode("LETS");
queryOfsSoSaleOutVo.setPageNo(1L);
queryOfsSoSaleOutVo.setPageSize(50L);
ofsStandardUtil.queryPurchaseReturnOrder(queryOfsSoSaleOutVo, headerDetailsDtoList, 1L, "ofs.purchaseReturnOrder.search");
if (headerDetailsDtoList != null && headerDetailsDtoList.size() > 0) {
System.out.println(JSON.toJSONString(headerDetailsDtoList));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -6,6 +6,7 @@ import com.hzya.frame.ttxofs.dto.ofsBaseSearch.OfsShopReturnMessageDto;
import com.hzya.frame.ttxofs.dto.ofsBaseSearch.OfsSupplierReturnMessageDto;
import com.hzya.frame.ttxofs.dto.ofsTransferOrderSearch.OFSTranseferOrderSearchResponse;
import com.hzya.frame.ttxofs.dto.ofspoorder.OfsPoOrderBean;
import com.hzya.frame.ttxofs.dto.ofspurchasereturnorder.PurchaseReturnOrderBean;
import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.SaleOutReturnMessageDto;
import com.hzya.frame.ttxofs.dto.ofssalesordersearch.SaleOrderMessageDto;
import com.hzya.frame.ttxofs.dto.returngoodordersearch.RerturnGoodsOrderSearchJsonRootBean;
@ -41,7 +42,8 @@ public class ApiDtoCacheMap {
apiDtoCacheMap.put("ofs.inventory.class.search", new OFSSKUClassSearchResponse());//OFS存货分类查询接口
apiDtoCacheMap.put("ofs.returnOrder.search", new RerturnGoodsOrderSearchJsonRootBean());//售后订单
apiDtoCacheMap.put("ofs.purchaseOrder.search", new OfsPoOrderBean());//采购订单
apiDtoCacheMap.put("ofs.purchaseReturnOrder.search", new PurchaseReturnOrderBean());//采退订单
}
}

View File

@ -0,0 +1,9 @@
package com.hzya.frame.ttxofs.dto.ofspurchasereturnorder;
import java.util.List;
@lombok.Data
public class PurchaseReturnOrder {
private PurchaseReturnOrderHeader header;
private List<PurchaseReturnOrderDetails> details;
}

View File

@ -0,0 +1,10 @@
package com.hzya.frame.ttxofs.dto.ofspurchasereturnorder;
import com.hzya.frame.ttxofs.basics.ReturnMessageBasics;
import java.util.List;
@lombok.Data
public class PurchaseReturnOrderBean extends ReturnMessageBasics {
private List<PurchaseReturnOrder> data;
}

View File

@ -0,0 +1,36 @@
package com.hzya.frame.ttxofs.dto.ofspurchasereturnorder;
import lombok.Data;
@Data
public class PurchaseReturnOrderDetails {
private String clientCode;
private String id;
private String companyCode;
private String purchaseReturnOrderId;
private String purchaseReturnOrderCode;
private String sourceLineNum;
private String skuCode;
private String skuName;
private String requestQty;
private String openQty;
private String fulfillQty;
private String quantityUM;
private String buyPrice;
private String discountPrice;
private String discount;
private String totalAmount;
private String totalWeight;
private String totalVolume;
private String totalVolumeWeight;
private String fulfillAmount;
private String fulfillWeight;
private String fulfillVolume;
private String weightUM;
private String volumeUM;
private String inventorySts;
private String created;
private String createdBy;
private String lastUpdated;
private String lastUpdatedBy;
}

View File

@ -0,0 +1,52 @@
package com.hzya.frame.ttxofs.dto.ofspurchasereturnorder;
import lombok.Data;
@Data
public class PurchaseReturnOrderHeader {
private String id;
private String clientCode;
private String companyCode;
private String facilityCode;
private String code;
private String status;
private String refOrderCode;
private String refOrderId;
private String internalOrderType;
private String bizChannel;
private String shipFromCode;
private String vendorCode;
private String vendorName;
private String shipToAttentionTo;
private String shipToCountry;
private String shipToState;
private String shipToCity;
private String shipToDistrict;
private String shipToAddress;
private String shipToPostalCode;
private String shipToPhone;
private String shipToMobile;
private String shipToFax;
private String shipToEmail;
private String totalAmount;
private String totalLines;
private String totalQty;
private String totalWeight;
private String totalVolume;
private String totalVolumeWeight;
private String totalFulfillQty;
private String totalFulfillAmount;
private String totalFulfillWeight;
private String totalFulfillVolume;
private String weightUM;
private String volumeUM;
private String sourcePlatformCode;
private String sourceOrderId;
private String sourceOrderCode;
private String auditBy;
private String auditAt;
private String created;
private String createdBy;
private String lastUpdated;
private String lastUpdatedBy;
}