|
|
@@ -1,13 +1,18 @@
|
|
|
package com.uas.platform.b2b.erp.service.impl;
|
|
|
|
|
|
+import com.uas.platform.b2b.core.util.StringUtil;
|
|
|
import com.uas.platform.b2b.dao.*;
|
|
|
+import com.uas.platform.b2b.erp.exception.ExceptionNote;
|
|
|
+import com.uas.platform.b2b.erp.model.OrderDetailPrice;
|
|
|
import com.uas.platform.b2b.erp.model.ProdInOutRefreshPrice;
|
|
|
import com.uas.platform.b2b.erp.model.PurchaseProdInOut;
|
|
|
import com.uas.platform.b2b.erp.service.PurchaseProdInOutService;
|
|
|
+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.support.SystemSession;
|
|
|
-import com.uas.platform.core.exception.NotFoundException;
|
|
|
+import org.apache.axis.utils.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
@@ -42,6 +47,12 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
|
|
|
@Autowired
|
|
|
private ProductDao productDao;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private NotExistOrderService orderService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PurchaseService purchaseService;
|
|
|
+
|
|
|
@Override
|
|
|
public List<PurchaseAcceptItem> convertProdInOuts(List<PurchaseProdInOut> prodInOuts) throws Exception {
|
|
|
List<PurchaseAcceptItem> acceptItems = new ArrayList<PurchaseAcceptItem>();
|
|
|
@@ -52,34 +63,44 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
|
|
|
Enterprise vendor = enterpriseDao.findEnterpriseByUu(accept.getVendUU());
|
|
|
// 采购验收单不存在,供应商UU号存在对应供应商
|
|
|
if (accepts2.size() == 0 && vendor != null) {
|
|
|
- for (Iterator<PurchaseAcceptItem> it = accept.getAcceptItems().iterator(); it.hasNext();) {// 设置明细对应的采购单明细
|
|
|
+ // 设置明细对应的采购单明细
|
|
|
+ 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) {// 对应的采购单存在
|
|
|
- item.setOrderItem(purchaseOrderItems.get(0));// 对应的采购单明细set进去
|
|
|
+ // 对应的采购单存在
|
|
|
+ if (purchaseOrderItems.size() > 0) {
|
|
|
+ // 对应的采购单明细set进去
|
|
|
+ item.setOrderItem(purchaseOrderItems.get(0));
|
|
|
item.setOrderItemId(purchaseOrderItems.get(0).getId());
|
|
|
- item.setAccept(accept);// 设置主记录
|
|
|
+ // 设置主记录
|
|
|
+ item.setAccept(accept);
|
|
|
item.setErpDate(new Date());
|
|
|
item.setProdcode(purchaseOrderItems.get(0).getProduct().getCode());
|
|
|
item.setProdId(purchaseOrderItems.get(0).getProductId());
|
|
|
acceptItems.add(item);
|
|
|
} else {
|
|
|
- throw new NotFoundException(enUU + ",采购验收单对应的采购单[" + item.getOrderItem().getOrder().getCode() + "]第[" + item.getOrderItem().getNumber() + "]行明细不存在");
|
|
|
+ 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 {
|
|
|
List<Product> prod = productDao.findByEnUUAndCode(enUU, item.getProdcode());
|
|
|
if (prod.size() > 0) {
|
|
|
item.setProduct(prod.get(0));
|
|
|
item.setProdId(prod.get(0).getId());
|
|
|
- } else {// 物料不存在先进行存储
|
|
|
+ } else {
|
|
|
+ // 物料不存在先进行存储
|
|
|
Product product = new Product();
|
|
|
product.setCode(item.getProdcode());
|
|
|
product.setEnUU(enUU);
|
|
|
Long proId = ProductUtils.updateOne(product);
|
|
|
-// item.setProduct(product);
|
|
|
item.setProdId(proId);
|
|
|
}
|
|
|
item.setAccept(accept);
|
|
|
@@ -87,6 +108,9 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
|
|
|
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>();
|
|
|
@@ -94,8 +118,8 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
|
|
|
PurchaseAcceptItem hadItem = itHaditems.next();
|
|
|
haditemsBatchCode.add(hadItem.getBatchCode());
|
|
|
}
|
|
|
-
|
|
|
- for (Iterator<PurchaseAcceptItem> it = accept.getAcceptItems().iterator(); it.hasNext();) {// 设置明细对应的采购单明细
|
|
|
+ // 设置明细对应的采购单明细
|
|
|
+ for (Iterator<PurchaseAcceptItem> it = accept.getAcceptItems().iterator(); it.hasNext();) {
|
|
|
PurchaseAcceptItem item = it.next();
|
|
|
if (haditemsBatchCode.contains(item.getBatchCode())) {
|
|
|
//已上传的明细不要
|
|
|
@@ -105,13 +129,13 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
|
|
|
List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao
|
|
|
.findByEnUUAndOrderCodeAndNumber(enUU, item.getOrderItem().getOrder().getCode(),
|
|
|
item.getOrderItem().getNumber());
|
|
|
-
|
|
|
- if (purchaseOrderItems.size() > 0) {// 对应的采购单存在
|
|
|
- item.setOrderItem(purchaseOrderItems.get(0));// 对应的采购单明细set进去
|
|
|
+ // 对应的采购单存在
|
|
|
+ if (purchaseOrderItems.size() > 0) {
|
|
|
+ // 对应的采购单明细set进去
|
|
|
+ item.setOrderItem(purchaseOrderItems.get(0));
|
|
|
item.setOrderItemId(purchaseOrderItems.get(0).getId());
|
|
|
-
|
|
|
- item.setAccept(accepts2.get(0));// 设置主记录
|
|
|
-
|
|
|
+ // 设置主记录
|
|
|
+ item.setAccept(accepts2.get(0));
|
|
|
item.setErpDate(new Date());
|
|
|
item.setProdcode(purchaseOrderItems.get(0).getProduct().getCode());
|
|
|
item.setProdId(purchaseOrderItems.get(0).getProductId());
|
|
|
@@ -124,7 +148,8 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
|
|
|
if (prod.size() > 0) {
|
|
|
item.setProduct(prod.get(0));
|
|
|
item.setProdId(prod.get(0).getId());
|
|
|
- } else {// 物料不存在先进行存储
|
|
|
+ } else {
|
|
|
+ // 物料不存在先进行存储
|
|
|
Product product = new Product();
|
|
|
product.setCode(item.getProdcode());
|
|
|
product.setEnUU(enUU);
|
|
|
@@ -132,8 +157,6 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
|
|
|
item.setProduct(product);
|
|
|
item.setProdId(proId);
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
item.setAccept(accepts2.get(0));
|
|
|
item.setErpDate(new Date());
|
|
|
acceptItems.add(item);
|
|
|
@@ -155,36 +178,32 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
|
|
|
Enterprise vendor = enterpriseDao.findEnterpriseByUu(returnn.getVendUU());
|
|
|
// 采购验收单不存在,供应商UU号存在对应供应商
|
|
|
if (returns2.size() == 0 && vendor != null) {
|
|
|
- for (PurchaseReturnItem returnItem : returnn.getReturnItems()) {// 设置明细对应的采购单明细
|
|
|
- if (returnItem.getOrderItem() != null) {
|
|
|
+ // 设置明细对应的采购单明细
|
|
|
+ for (PurchaseReturnItem returnItem : returnn.getReturnItems()) {
|
|
|
+ if (null != returnItem.getOrderDetno() && null != returnItem.getOrderCode()) {
|
|
|
List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao
|
|
|
- .findByEnUUAndOrderCodeAndNumber(enUU, returnItem.getOrderItem().getOrder().getCode(),
|
|
|
- returnItem.getOrderItem().getNumber());
|
|
|
- if (purchaseOrderItems.size() > 0) {// 对应的采购单存在
|
|
|
- returnItem.setOrderItem(purchaseOrderItems.get(0));// 对应的采购单明细set进去
|
|
|
+ .findByEnUUAndOrderCodeAndNumber(enUU, returnItem.getOrderCode(), returnItem.getOrderDetno());
|
|
|
+ // 对应的采购单存在
|
|
|
+ if (purchaseOrderItems.size() > 0) {
|
|
|
returnItem.setOrderItemId(purchaseOrderItems.get(0).getId());
|
|
|
- returnItem.setProduct(purchaseOrderItems.get(0).getProduct());
|
|
|
returnItem.setProdId(purchaseOrderItems.get(0).getProductId());
|
|
|
returnItem.setProdCode(purchaseOrderItems.get(0).getProduct().getCode());
|
|
|
- } else {
|
|
|
- // 如果采购单号不存在,设置为空值
|
|
|
- returnItem.getOrderItem().getOrder().setCode(null);
|
|
|
}
|
|
|
} else {
|
|
|
List<Product> prod = productDao.findByEnUUAndCode(enUU, returnItem.getProdCode());
|
|
|
if (prod.size() > 0) {
|
|
|
- returnItem.setProduct(prod.get(0));
|
|
|
returnItem.setProdId(prod.get(0).getId());
|
|
|
- } else {// 物料不存在先进行存储
|
|
|
+ } else {
|
|
|
+ // 物料不存在先进行存储
|
|
|
Product product = new Product();
|
|
|
product.setCode(returnItem.getProdCode());
|
|
|
product.setEnUU(enUU);
|
|
|
Long proId = ProductUtils.updateOne(product);
|
|
|
-// returnItem.setProduct(product);
|
|
|
returnItem.setProdId(proId);
|
|
|
}
|
|
|
}
|
|
|
- returnItem.setPurchaseReturn(returnn);// 设置主记录
|
|
|
+ // 设置主记录
|
|
|
+ returnItem.setPurchaseReturn(returnn);
|
|
|
returnItem.setErpDate(new Date());
|
|
|
returnItems.add(returnItem);
|
|
|
}
|
|
|
@@ -201,17 +220,21 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
|
|
|
PurchaseBadIn badIn = prodInOut.conventToBadIn();
|
|
|
List<PurchaseBadIn> badIns = purchaseBadInDao.findByEnUUAndCode(enUU, badIn.getCode());
|
|
|
Enterprise vendor = enterpriseDao.findEnterpriseByUu(badIn.getVendUU());
|
|
|
- // 采购验收单不存在,供应商UU号存在对应供应商
|
|
|
+ // 不良品入库单不存在,供应商UU号存在对应供应商
|
|
|
if (badIns.size() == 0 && vendor != null) {
|
|
|
- for (Iterator<PurchaseBadInItem> it = badIn.getBadInItems().iterator(); it.hasNext();) {// 设置明细对应的采购单明细
|
|
|
+ // 设置明细对应的采购单明细
|
|
|
+ for (Iterator<PurchaseBadInItem> it = badIn.getBadInItems().iterator(); it.hasNext();) {
|
|
|
PurchaseBadInItem badInItem = it.next();
|
|
|
List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao.findByEnUUAndOrderCodeAndNumber(
|
|
|
enUU, badInItem.getOrderItem().getOrder().getCode(), badInItem.getOrderItem().getNumber());
|
|
|
- if (purchaseOrderItems.size() > 0) {// 对应的采购单存在
|
|
|
- badInItem.setOrderItem(purchaseOrderItems.get(0));// 对应的采购单明细set进去
|
|
|
+ // 对应的采购单存在
|
|
|
+ if (purchaseOrderItems.size() > 0) {
|
|
|
+ // 对应的采购单明细set进去
|
|
|
+ badInItem.setOrderItem(purchaseOrderItems.get(0));
|
|
|
badInItem.setOrderItemId(purchaseOrderItems.get(0).getId());
|
|
|
- badInItem.setBadIn(badIn);// 设置主记录
|
|
|
- badInItem.setErpDate(new Date());
|
|
|
+ // 设置主记录
|
|
|
+ badInItem.setBadIn(badIn);
|
|
|
+ badInItem.setErpDate(new Date(System.currentTimeMillis()));
|
|
|
badInItems.add(badInItem);
|
|
|
} else {
|
|
|
it.remove();
|
|
|
@@ -233,16 +256,20 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
|
|
|
// 不良品出库单不存在,供应商UU号存在对应供应商
|
|
|
if (badOuts.size() == 0 && vendor != null) {
|
|
|
if (badOut.getBadOutItems() != null) {
|
|
|
- for (Iterator<PurchaseBadOutItem> it = badOut.getBadOutItems().iterator(); it.hasNext();) {// 设置明细对应的采购单明细
|
|
|
+ // 设置明细对应的采购单明细
|
|
|
+ for (Iterator<PurchaseBadOutItem> it = badOut.getBadOutItems().iterator(); it.hasNext();) {
|
|
|
PurchaseBadOutItem badOutItem = it.next();
|
|
|
List<PurchaseOrderItem> purchaseOrderItems = purchaseOrderItemDao.findByEnUUAndOrderCodeAndNumber(
|
|
|
enUU, badOutItem.getOrderItem().getOrder().getCode(),
|
|
|
badOutItem.getOrderItem().getNumber());
|
|
|
- if (purchaseOrderItems.size() > 0) {// 对应的采购单存在
|
|
|
- badOutItem.setOrderItem(purchaseOrderItems.get(0));// 对应的采购单明细set进去
|
|
|
+ // 对应的采购单存在
|
|
|
+ if (purchaseOrderItems.size() > 0) {
|
|
|
+ // 对应的采购单明细set进去
|
|
|
+ badOutItem.setOrderItem(purchaseOrderItems.get(0));
|
|
|
badOutItem.setOrderItemId(purchaseOrderItems.get(0).getId());
|
|
|
- badOutItem.setBadOut(badOut);// 设置主记录
|
|
|
- badOutItem.setErpDate(new Date());
|
|
|
+ // 设置主记录
|
|
|
+ badOutItem.setBadOut(badOut);
|
|
|
+ badOutItem.setErpDate(new Date(System.currentTimeMillis()));
|
|
|
badOutItems.add(badOutItem);
|
|
|
} else {
|
|
|
it.remove();
|
|
|
@@ -320,17 +347,25 @@ public class PurchaseProdInOutServiceImpl implements PurchaseProdInOutService {
|
|
|
@Override
|
|
|
public List<PurchaseAcceptItem> convertPirceForProdIn(List<ProdInOutRefreshPrice> prodInOuts) {
|
|
|
List<PurchaseAcceptItem> acceptItems = new ArrayList<PurchaseAcceptItem>();
|
|
|
- if(!CollectionUtils.isEmpty(prodInOuts)) {
|
|
|
- for(ProdInOutRefreshPrice prod : prodInOuts) {
|
|
|
+ List<OrderDetailPrice> detailPriceList = new ArrayList<>();
|
|
|
+ if (!CollectionUtils.isEmpty(prodInOuts)) {
|
|
|
+ for (ProdInOutRefreshPrice prod : prodInOuts) {
|
|
|
PurchaseAcceptItem acceptItem = purchaseAcceptItemDao.findByEnUUAndCodeAndNumber(
|
|
|
SystemSession.getUser().getEnterprise().getUu(), prod.getPbu_inoutno(), prod.getPbu_pdno());
|
|
|
if (null != acceptItem) {
|
|
|
acceptItem.setOrderPrice(prod.getPbu_orderprice());
|
|
|
acceptItem.setTaxrate(prod.getPbu_taxrate());
|
|
|
acceptItems.add(acceptItem);
|
|
|
+ if (null != acceptItem.getOrderItemId()) {
|
|
|
+ detailPriceList.add(new OrderDetailPrice(acceptItem.getOrderItemId(), acceptItem.getOrderPrice(), acceptItem.getTaxrate()));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ // 更新对应的采购单信息
|
|
|
+ if (!CollectionUtils.isEmpty(detailPriceList)) {
|
|
|
+ purchaseService.refreshPrice(detailPriceList, OrderType.saleaccept.name());
|
|
|
+ }
|
|
|
return acceptItems;
|
|
|
}
|
|
|
|