|
|
@@ -11,6 +11,7 @@ import com.uas.platform.b2b.erp.service.PurchaseService;
|
|
|
import com.uas.platform.b2b.model.*;
|
|
|
import com.uas.platform.b2b.ps.ProductUtils;
|
|
|
import com.uas.platform.b2b.service.NotExistOrderService;
|
|
|
+import com.uas.platform.b2b.service.NotExistProductService;
|
|
|
import com.uas.platform.b2b.support.CollectionUtil;
|
|
|
import com.uas.platform.b2b.support.SystemSession;
|
|
|
import org.apache.axis.utils.StringUtils;
|
|
|
@@ -51,10 +52,10 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
|
|
|
private EnterpriseDao enterpriseDao;
|
|
|
|
|
|
@Autowired
|
|
|
- private ProductDao productDao;
|
|
|
+ private NotExistOrderService orderService;
|
|
|
|
|
|
@Autowired
|
|
|
- private NotExistOrderService orderService;
|
|
|
+ private NotExistProductService productService;
|
|
|
|
|
|
@Autowired
|
|
|
private PurchaseService purchaseService;
|
|
|
@@ -68,125 +69,173 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
|
|
|
Map<String, ProductInfo> products = ProductUtils.findByEnUUAndCodes(enUU, productCodes);
|
|
|
for (PurchaseProdInOut prodInOut : prodInOuts) {
|
|
|
PurchaseAccept accept = prodInOut.convent();
|
|
|
- List<PurchaseAccept> accepts2 = purchaseAcceptDao.findByEnUUAndCode(enUU, accept.getCode());
|
|
|
+ List<PurchaseAccept> existAccepts = purchaseAcceptDao.findByEnUUAndCode(enUU, accept.getCode());
|
|
|
Enterprise vendor = enterpriseDao.findEnterpriseByUu(accept.getVendUU());
|
|
|
// 采购验收单不存在,供应商UU号存在对应供应商
|
|
|
- if (accepts2.size() == 0 && vendor != null) {
|
|
|
- // 设置明细对应的采购单明细
|
|
|
- List<NotExistOrders> ordersList = new ArrayList<>();
|
|
|
- String sign = "";
|
|
|
- for (Iterator<PurchaseAcceptItem> it = accept.getAcceptItems().iterator(); it.hasNext();) {
|
|
|
- PurchaseAcceptItem item = it.next();
|
|
|
- if (item.getOrderItem() != null) {
|
|
|
- List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao
|
|
|
- .findByEnUUAndOrderCodeAndNumber(enUU, item.getOrderItem().getOrder().getCode(),
|
|
|
- item.getOrderItem().getNumber());
|
|
|
- // 对应的采购单存在
|
|
|
- if (purchaseOrderItems.size() > 0) {
|
|
|
- // 对应的采购单明细set进去
|
|
|
- item.setOrderItem(purchaseOrderItems.get(0));
|
|
|
- item.setOrderItemId(purchaseOrderItems.get(0).getId());
|
|
|
- // 设置主记录
|
|
|
- item.setAccept(accept);
|
|
|
- item.setErpDate(new Date());
|
|
|
- item.setProdcode(purchaseOrderItems.get(0).getProduct().getCode());
|
|
|
- item.setProdId(purchaseOrderItems.get(0).getProductId());
|
|
|
- acceptItems.add(item);
|
|
|
- } else {
|
|
|
- if (StringUtils.isEmpty(sign)) {
|
|
|
- sign = StringUtil.uuid();
|
|
|
- }
|
|
|
- ordersList.add(new NotExistOrders(enUU, item.getOrderItem().getOrder().getCode(),
|
|
|
- com.uas.platform.b2b.temporary.model.OrderType.saleItem.name(), item.getOrderItem().getNumber(), sign));
|
|
|
- }
|
|
|
- } else {
|
|
|
- ProductInfo productInfo = products.get(item.getProdcode());
|
|
|
- if (null != productInfo) {
|
|
|
- item.setProduct(productInfo);
|
|
|
- item.setProdId(productInfo.getId());
|
|
|
- } else {
|
|
|
- // 物料不存在先进行存储
|
|
|
- Product product = new Product();
|
|
|
- product.setCode(item.getProdcode());
|
|
|
- product.setEnUU(enUU);
|
|
|
- Long proId = ProductUtils.updateOne(product);
|
|
|
- item.setProdId(proId);
|
|
|
- }
|
|
|
- item.setAccept(accept);
|
|
|
- item.setErpDate(new Date());
|
|
|
- acceptItems.add(item);
|
|
|
- }
|
|
|
- }
|
|
|
- if (!CollectionUtils.isEmpty(ordersList)) {
|
|
|
- orderService.batchSave(ordersList, ExceptionNote.SALEITEM_NOTFOUND.getPhrase(), sign);
|
|
|
- }
|
|
|
- } else if (accepts2.size() > 0 && vendor != null) {
|
|
|
- Set<PurchaseAcceptItem> haditems = accepts2.get(0).getAcceptItems();
|
|
|
- List<String> haditemsBatchCode = new ArrayList<String>();
|
|
|
- for (Iterator<PurchaseAcceptItem> itHaditems = haditems.iterator(); itHaditems.hasNext();) {
|
|
|
- PurchaseAcceptItem hadItem = itHaditems.next();
|
|
|
- haditemsBatchCode.add(hadItem.getBatchCode());
|
|
|
- }
|
|
|
- // 设置明细对应的采购单明细
|
|
|
- for (Iterator<PurchaseAcceptItem> it = accept.getAcceptItems().iterator(); it.hasNext();) {
|
|
|
- PurchaseAcceptItem item = it.next();
|
|
|
- if (haditemsBatchCode.contains(item.getBatchCode())) {
|
|
|
- //已上传的明细不要
|
|
|
- it.remove();
|
|
|
- } else {
|
|
|
- if (item.getOrderItem() != null) {
|
|
|
- List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao
|
|
|
- .findByEnUUAndOrderCodeAndNumber(enUU, item.getOrderItem().getOrder().getCode(),
|
|
|
- item.getOrderItem().getNumber());
|
|
|
- // 对应的采购单存在
|
|
|
- if (purchaseOrderItems.size() > 0) {
|
|
|
- // 对应的采购单明细set进去
|
|
|
- item.setOrderItem(purchaseOrderItems.get(0));
|
|
|
- item.setOrderItemId(purchaseOrderItems.get(0).getId());
|
|
|
- // 设置主记录
|
|
|
- item.setAccept(accepts2.get(0));
|
|
|
- item.setErpDate(new Date());
|
|
|
- item.setProdcode(purchaseOrderItems.get(0).getProduct().getCode());
|
|
|
- item.setProdId(purchaseOrderItems.get(0).getProductId());
|
|
|
- acceptItems.add(item);
|
|
|
- } else {
|
|
|
- it.remove();
|
|
|
- }
|
|
|
- } else {
|
|
|
- List<Product> prods = ProductUtils.findByEnUUAndCode(enUU, item.getProdcode());
|
|
|
- if (prods.size() > 0) {
|
|
|
- item.setProdId(prods.get(0).getId());
|
|
|
- } else {
|
|
|
- // 物料不存在先进行存储
|
|
|
- Product product = new Product();
|
|
|
- product.setCode(item.getProdcode());
|
|
|
- product.setEnUU(enUU);
|
|
|
- Long proId = ProductUtils.updateOne(product);
|
|
|
- item.setProdId(proId);
|
|
|
- }
|
|
|
- item.setAccept(accepts2.get(0));
|
|
|
- item.setErpDate(new Date());
|
|
|
- acceptItems.add(item);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ if (existAccepts.size() == 0 && vendor != null) {
|
|
|
+ acceptItems = notExistAccept(accept, products, enUU);
|
|
|
+ } else if (existAccepts.size() > 0 && vendor != null) {
|
|
|
+ acceptItems = existAccept(accept, existAccepts.get(0), products, enUU);
|
|
|
}
|
|
|
}
|
|
|
return acceptItems;
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
+ /**
|
|
|
+ * B2B验收单存在时处理方法
|
|
|
+ *
|
|
|
+ * @param accept ERP上传的单据转成之后的采购验收单数据
|
|
|
+ * @param existAccept B2B已存在的采购验收单数据
|
|
|
+ * @param products 查询的物料信息
|
|
|
+ * @param enUU 企业UU
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<PurchaseAcceptItem> existAccept(PurchaseAccept accept, PurchaseAccept existAccept, Map<String, ProductInfo> products, long enUU) {
|
|
|
+ List<PurchaseAcceptItem> acceptItems = new ArrayList<>();
|
|
|
+ Set<PurchaseAcceptItem> hadItems = existAccept.getAcceptItems();
|
|
|
+ List<String> hadItemsBatchCode = new ArrayList<String>();
|
|
|
+ for (Iterator<PurchaseAcceptItem> itHaditems = hadItems.iterator(); itHaditems.hasNext();) {
|
|
|
+ PurchaseAcceptItem hadItem = itHaditems.next();
|
|
|
+ hadItemsBatchCode.add(hadItem.getBatchCode());
|
|
|
+ }
|
|
|
+ List<NotExistProduct> notExistProducts = new ArrayList<>();
|
|
|
+ List<NotExistOrders> ordersList = new ArrayList<>();
|
|
|
+ String uuid = "";
|
|
|
+ // 设置明细对应的采购单明细
|
|
|
+ for (Iterator<PurchaseAcceptItem> it = accept.getAcceptItems().iterator(); it.hasNext();) {
|
|
|
+ PurchaseAcceptItem item = it.next();
|
|
|
+ if (hadItemsBatchCode.contains(item.getBatchCode())) {
|
|
|
+ //已上传的明细不要
|
|
|
+ it.remove();
|
|
|
+ } else {
|
|
|
+ if (item.getOrderItem() != null) {
|
|
|
+ List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao
|
|
|
+ .findByEnUUAndOrderCodeAndNumber(enUU, item.getOrderItem().getOrder().getCode(),
|
|
|
+ item.getOrderItem().getNumber());
|
|
|
+ // 对应的采购单存在
|
|
|
+ if (purchaseOrderItems.size() > 0) {
|
|
|
+ // 对应的采购单明细set进去
|
|
|
+ item.setOrderItem(purchaseOrderItems.get(0));
|
|
|
+ item.setOrderItemId(purchaseOrderItems.get(0).getId());
|
|
|
+ // 设置主记录
|
|
|
+ item.setAccept(existAccept);
|
|
|
+ item.setErpDate(new Date(System.currentTimeMillis()));
|
|
|
+ item.setProdcode(purchaseOrderItems.get(0).getProduct().getCode());
|
|
|
+ ProductInfo productInfo = products.get(item.getProdcode());
|
|
|
+ item.setProduct(productInfo);
|
|
|
+ item.setProdId(purchaseOrderItems.get(0).getProductId());
|
|
|
+ acceptItems.add(item);
|
|
|
+ } else {
|
|
|
+ if (StringUtils.isEmpty(uuid)) {
|
|
|
+ uuid = StringUtil.uuid();
|
|
|
+ }
|
|
|
+ ordersList.add(new NotExistOrders(enUU, item.getOrderItem().getOrder().getCode(),
|
|
|
+ com.uas.platform.b2b.temporary.model.OrderType.saleItem.name(), item.getOrderItem().getNumber(), uuid));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ ProductInfo productInfo = products.get(item.getProdcode());
|
|
|
+ if (null != productInfo) {
|
|
|
+ item.setProduct(productInfo);
|
|
|
+ item.setProdId(productInfo.getId());
|
|
|
+ } else {
|
|
|
+ if (StringUtils.isEmpty(uuid)) {
|
|
|
+ uuid = StringUtil.uuid();
|
|
|
+ }
|
|
|
+ notExistProducts.add(new NotExistProduct(item.getProductCode(), enUU, OrderType.saleaccept.name(), item.getAccept().getCode(), item.getNumber(), uuid));
|
|
|
+ }
|
|
|
+ item.setAccept(existAccept);
|
|
|
+ item.setErpDate(new Date(System.currentTimeMillis()));
|
|
|
+ acceptItems.add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!CollectionUtils.isEmpty(ordersList)) {
|
|
|
+ orderService.batchSave(ordersList, ExceptionNote.SALEITEM_NOTFOUND.getPhrase(), uuid);
|
|
|
+ }
|
|
|
+ if (!CollectionUtils.isEmpty(notExistProducts)) {
|
|
|
+ productService.batchSave(notExistProducts, ExceptionNote.SALE_ACCEPT_PRODUCT_NOTFOUND.getPhrase(), uuid);
|
|
|
+ }
|
|
|
+ return acceptItems;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * B2B采购验收单不存在时处理方法
|
|
|
+ *
|
|
|
+ * @param accept ERP上传的单据转成之后的采购验收单数据
|
|
|
+ * @param products 通过物料编号查询的物料信息
|
|
|
+ * @param enUU 企业UU
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<PurchaseAcceptItem> notExistAccept(PurchaseAccept accept, Map<String, ProductInfo> products, Long enUU) {
|
|
|
+ List<PurchaseAcceptItem> acceptItems = new ArrayList<>();
|
|
|
+ List<NotExistProduct> notExistProducts = new ArrayList<>();
|
|
|
+ List<NotExistOrders> ordersList = new ArrayList<>();
|
|
|
+ String uuid = "";
|
|
|
+ for (Iterator<PurchaseAcceptItem> it = accept.getAcceptItems().iterator(); it.hasNext();) {
|
|
|
+ PurchaseAcceptItem item = it.next();
|
|
|
+ if (item.getOrderItem() != null) {
|
|
|
+ List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao
|
|
|
+ .findByEnUUAndOrderCodeAndNumber(enUU, item.getOrderItem().getOrder().getCode(),
|
|
|
+ item.getOrderItem().getNumber());
|
|
|
+ // 对应的采购单存在
|
|
|
+ if (purchaseOrderItems.size() > 0) {
|
|
|
+ // 对应的采购单明细set进去
|
|
|
+ item.setOrderItem(purchaseOrderItems.get(0));
|
|
|
+ item.setOrderItemId(purchaseOrderItems.get(0).getId());
|
|
|
+ // 设置主记录
|
|
|
+ item.setAccept(accept);
|
|
|
+ item.setErpDate(new Date());
|
|
|
+ item.setProdcode(purchaseOrderItems.get(0).getProduct().getCode());
|
|
|
+ item.setProdId(purchaseOrderItems.get(0).getProductId());
|
|
|
+ acceptItems.add(item);
|
|
|
+ } else {
|
|
|
+ if (StringUtils.isEmpty(uuid)) {
|
|
|
+ uuid = StringUtil.uuid();
|
|
|
+ }
|
|
|
+ ordersList.add(new NotExistOrders(enUU, item.getOrderItem().getOrder().getCode(),
|
|
|
+ com.uas.platform.b2b.temporary.model.OrderType.saleItem.name(), item.getOrderItem().getNumber(), uuid));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ ProductInfo productInfo = products.get(item.getProdcode());
|
|
|
+ if (null != productInfo) {
|
|
|
+ item.setProduct(productInfo);
|
|
|
+ item.setProdId(productInfo.getId());
|
|
|
+ } else {
|
|
|
+ if (StringUtils.isEmpty(uuid)) {
|
|
|
+ uuid = StringUtil.uuid();
|
|
|
+ }
|
|
|
+ notExistProducts.add(new NotExistProduct(item.getProductCode(), enUU, OrderType.saleaccept.name(), item.getAccept().getCode(), item.getNumber(), uuid));
|
|
|
+ }
|
|
|
+ item.setAccept(accept);
|
|
|
+ item.setErpDate(new Date());
|
|
|
+ acceptItems.add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!CollectionUtils.isEmpty(ordersList)) {
|
|
|
+ orderService.batchSave(ordersList, ExceptionNote.SALEITEM_NOTFOUND.getPhrase(), uuid);
|
|
|
+ }
|
|
|
+ if (!CollectionUtils.isEmpty(notExistProducts)) {
|
|
|
+ productService.batchSave(notExistProducts, ExceptionNote.SALE_ACCEPT_PRODUCT_NOTFOUND.getPhrase(), uuid);
|
|
|
+ }
|
|
|
+ return acceptItems;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
public List<PurchaseReturnItem> convertReturns(List<PurchaseProdInOut> prodInOuts) throws Exception {
|
|
|
List<PurchaseReturnItem> returnItems = new ArrayList<PurchaseReturnItem>();
|
|
|
long enUU = SystemSession.getUser().getEnterprise().getUu();
|
|
|
+ Set<String> codeStr = CollectionUtil.getProductCodeCollection(prodInOuts);
|
|
|
+ Map<String, ProductInfo> products = ProductUtils.findByEnUUAndCodes(enUU, codeStr);
|
|
|
+ List<NotExistProduct> notExistProducts = new ArrayList<>();
|
|
|
+ String uuid = "";
|
|
|
for (PurchaseProdInOut prodInOut : prodInOuts) {
|
|
|
- PurchaseReturn returnn = prodInOut.conventToReturn();
|
|
|
- List<PurchaseReturn> returns2 = purchaseReturnDao.findByEnUUAndCode(enUU, returnn.getCode());
|
|
|
- Enterprise vendor = enterpriseDao.findEnterpriseByUu(returnn.getVendUU());
|
|
|
+ PurchaseReturn purchaseReturn = prodInOut.conventToReturn();
|
|
|
+ List<PurchaseReturn> existReturn = purchaseReturnDao.findByEnUUAndCode(enUU, purchaseReturn.getCode());
|
|
|
+ Enterprise vendor = enterpriseDao.findEnterpriseByUu(purchaseReturn.getVendUU());
|
|
|
// 采购验收单不存在,供应商UU号存在对应供应商
|
|
|
- if (returns2.size() == 0 && vendor != null) {
|
|
|
+ if (existReturn.size() == 0 && vendor != null) {
|
|
|
// 设置明细对应的采购单明细
|
|
|
- for (PurchaseReturnItem returnItem : returnn.getReturnItems()) {
|
|
|
+ for (PurchaseReturnItem returnItem : purchaseReturn.getReturnItems()) {
|
|
|
if (null != returnItem.getOrderDetno() && null != returnItem.getOrderCode()) {
|
|
|
List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao
|
|
|
.findByEnUUAndOrderCodeAndNumber(enUU, returnItem.getOrderCode(), returnItem.getOrderDetno());
|
|
|
@@ -194,28 +243,34 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
|
|
|
if (purchaseOrderItems.size() > 0) {
|
|
|
returnItem.setOrderItemId(purchaseOrderItems.get(0).getId());
|
|
|
returnItem.setProdId(purchaseOrderItems.get(0).getProductId());
|
|
|
+ ProductInfo productInfo = products.get(returnItem.getProdCode());
|
|
|
+ returnItem.setProduct(productInfo);
|
|
|
returnItem.setProdCode(purchaseOrderItems.get(0).getProduct().getCode());
|
|
|
}
|
|
|
} else {
|
|
|
- List<Product> prod = ProductUtils.findByEnUUAndCode(enUU, returnItem.getProdCode());
|
|
|
- if (prod.size() > 0) {
|
|
|
- returnItem.setProdId(prod.get(0).getId());
|
|
|
+ ProductInfo productInfo = products.get(returnItem.getProdCode());
|
|
|
+ if (null != productInfo) {
|
|
|
+ returnItem.setProdId(productInfo.getId());
|
|
|
+ returnItem.setProduct(productInfo);
|
|
|
+ returnItem.setProdCode(productInfo.getCode());
|
|
|
} else {
|
|
|
- // 物料不存在先进行存储
|
|
|
- Product product = new Product();
|
|
|
- product.setCode(returnItem.getProdCode());
|
|
|
- product.setEnUU(enUU);
|
|
|
- Long proId = ProductUtils.updateOne(product);
|
|
|
- returnItem.setProdId(proId);
|
|
|
+ if (StringUtils.isEmpty(uuid)) {
|
|
|
+ uuid = StringUtil.uuid();
|
|
|
+ }
|
|
|
+ notExistProducts.add(new NotExistProduct(returnItem.getProdCode(), enUU, OrderType.salereturn.name(),
|
|
|
+ returnItem.getPurchaseReturn().getCode(), returnItem.getNumber(), uuid));
|
|
|
}
|
|
|
}
|
|
|
// 设置主记录
|
|
|
- returnItem.setPurchaseReturn(returnn);
|
|
|
+ returnItem.setPurchaseReturn(purchaseReturn);
|
|
|
returnItem.setErpDate(new Date());
|
|
|
returnItems.add(returnItem);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ if (!CollectionUtils.isEmpty(notExistProducts)) {
|
|
|
+ productService.batchSave(notExistProducts, ExceptionNote.SALE_RETURN_PRODUCT_NOTFOUND.getPhrase(), uuid);
|
|
|
+ }
|
|
|
return returnItems;
|
|
|
}
|
|
|
|