|
|
@@ -25,7 +25,6 @@ import com.trade.purchase.order.enums.OrderTypeEnum;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springblade.client.entity.CorpsDesc;
|
|
|
-import org.springblade.client.entity.GoodsDesc;
|
|
|
import org.springblade.client.feign.ICorpsDescClient;
|
|
|
import org.springblade.client.feign.IGoodsDescClient;
|
|
|
import org.springblade.client.feign.IRedisClient;
|
|
|
@@ -43,11 +42,15 @@ import org.springblade.deliver.goods.mapper.DeliveryItemsMapper;
|
|
|
import org.springblade.deliver.goods.service.IDeliveryItemsService;
|
|
|
import org.springblade.deliver.goods.vo.*;
|
|
|
import org.springblade.finance.feign.IFinanceClient;
|
|
|
-import org.springblade.mocha.entity.*;
|
|
|
+import org.springblade.mocha.entity.BusinessOverpaymentItem;
|
|
|
+import org.springblade.mocha.entity.BusinessPointsItem;
|
|
|
+import org.springblade.mocha.entity.Overpayment;
|
|
|
+import org.springblade.mocha.entity.Points;
|
|
|
import org.springblade.mocha.enums.OverpaymentEnum;
|
|
|
import org.springblade.mocha.feign.IBusinessOverpaymentClient;
|
|
|
import org.springblade.mocha.feign.IBusinessPointsClient;
|
|
|
import org.springblade.purchase.sales.entity.Order;
|
|
|
+import org.springblade.purchase.sales.entity.OrderItems;
|
|
|
import org.springblade.purchase.sales.feign.IOrderDescClient;
|
|
|
import org.springblade.purchase.sales.feign.IOrderItemsClient;
|
|
|
import org.springblade.stock.entity.StockGoods;
|
|
|
@@ -257,7 +260,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
&& s.getStorageId().equals(delivery.getStorageId())
|
|
|
).findFirst().orElse(null);
|
|
|
stock = this.getStock(delivery.getTradeType(), deliveryItems.getCorpId(), delivery.getStorageId(), deliveryItems);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
stock = this.getStock(delivery.getTradeType(), deliveryItems.getCorpId(), delivery.getStorageId(), deliveryItems);
|
|
|
}
|
|
|
}
|
|
|
@@ -318,7 +321,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
} else {
|
|
|
deliveryItems.setInventoryNumber(BigDecimal.ZERO);
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
if (stockGoods != null) {
|
|
|
deliveryItems.setInventoryNumber(stockGoods.getSurplusRouteQuantity());
|
|
|
} else if (stock != null) {
|
|
|
@@ -513,7 +516,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
if (ObjectUtils.isNotNull(sysClient.getParamService("synchronous"))
|
|
|
&& "1".equals(sysClient.getParamService("synchronous"))) {
|
|
|
stockGoods.setOutAmount(stockGoods.getOutAmount().subtract(deliveryItems.getDeliveryAmount()));//出库金额减
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
stockGoods.setOutAmount(stockGoods.getOutAmount().subtract(deliveryItems.getContractAmount()));//出库金额减
|
|
|
}
|
|
|
}
|
|
|
@@ -629,6 +632,10 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
if (!"681169".equals(AuthUtil.getTenantId())) {
|
|
|
if (stockGoods.getLockingQuantity().compareTo(deliveryItems.getActualQuantity()) < 0) {
|
|
|
throw new RuntimeException(stockGoods.getCode() + "更新库存总账失败,锁定库存不足");
|
|
|
+ } else {
|
|
|
+ if (ObjectUtils.isNotNull(sysClient.getParamService("inventory")) && "1".equals(sysClient.getParamService("inventory"))) {
|
|
|
+ stockGoods.setLockingQuantity(stockGoods.getLockingQuantity().subtract(deliveryItems.getActualQuantity()));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
stockGoods.setLockingQuantity(stockGoods.getLockingQuantity().subtract(deliveryItems.getActualQuantity()));
|
|
|
@@ -638,11 +645,11 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
stockGoods.setUpdateTime(new Date());
|
|
|
stockGoods.setUpdateUser(SecureUtil.getUserId());
|
|
|
if (!new BigDecimal("0.00").equals(stockGoods.getBalanceAmount()) &&
|
|
|
- !new BigDecimal("0.00").equals(stockGoods.getBalanceQuantity())){
|
|
|
+ !new BigDecimal("0.00").equals(stockGoods.getBalanceQuantity())) {
|
|
|
//库存金额
|
|
|
stockGoods.setBalanceAmount(stockGoods.getBalanceAmount().subtract(deliveryItems.getDeliveryAmount()));
|
|
|
stockGoods.setStockPrice(stockGoods.getBalanceAmount().divide(stockGoods.getBalanceQuantity(), MathContext.DECIMAL32));
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
stockGoods.setStockPrice(new BigDecimal("0.00"));
|
|
|
}
|
|
|
boolean updateStock = stockGoodsClient.updateStock(stockGoods);
|
|
|
@@ -723,9 +730,9 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
//库存金额
|
|
|
stockGoods.setBalanceAmount(deliveryItems.getDeliveryAmount());
|
|
|
if (!new BigDecimal("0.00").equals(stockGoods.getBalanceAmount()) &&
|
|
|
- !new BigDecimal("0.00").equals(stockGoods.getBalanceQuantity())){
|
|
|
+ !new BigDecimal("0.00").equals(stockGoods.getBalanceQuantity())) {
|
|
|
stockGoods.setStockPrice(stockGoods.getBalanceAmount().divide(stockGoods.getBalanceQuantity(), MathContext.DECIMAL32));
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
stockGoods.setStockPrice(new BigDecimal("0.00"));
|
|
|
}
|
|
|
|
|
|
@@ -1040,6 +1047,109 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void receivingInventory(String tradeType, Long id, OrderItems e) {
|
|
|
+ //查询库存账
|
|
|
+ R<StockGoods> stockById = stockGoodsClient.getStockById(id);
|
|
|
+ if (!stockById.isSuccess()) {
|
|
|
+ throw new RuntimeException("查询库存账出错");
|
|
|
+ }
|
|
|
+ if (stockById.getData() == null) {
|
|
|
+ throw new RuntimeException("库存账不存在");
|
|
|
+ }
|
|
|
+ StockGoods stockGoods = stockById.getData();
|
|
|
+ if (!"681169".equals(AuthUtil.getTenantId())) {
|
|
|
+ if (stockGoods.getLockingQuantity().compareTo(e.getOrderQuantity()) < 0) {
|
|
|
+ throw new RuntimeException(stockGoods.getCode() + "更新库存总账失败,锁定库存不足");
|
|
|
+ } else {
|
|
|
+ if (ObjectUtils.isNotNull(sysClient.getParamService("inventory")) && "1".equals(sysClient.getParamService("inventory"))) {
|
|
|
+ stockGoods.setLockingQuantity(stockGoods.getLockingQuantity().subtract(e.getOrderQuantity()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ stockGoods.setLockingQuantity(stockGoods.getLockingQuantity().subtract(e.getOrderQuantity()));
|
|
|
+ stockGoods.setUpdateTime(new Date());
|
|
|
+ stockGoods.setUpdateUser(SecureUtil.getUserId());
|
|
|
+ boolean updateStock = stockGoodsClient.updateStock(stockGoods);
|
|
|
+ if (!updateStock) {
|
|
|
+ throw new RuntimeException(stockGoods.getCode() + "更新库存总账失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void saveStockInventory(String tradeType, Long corpId, Long storageId, OrderItems deliveryItems, String orderType) {
|
|
|
+ StockGoods stockGoods = new StockGoods();
|
|
|
+ stockGoods.setGoodsId(deliveryItems.getItemId());//商品id
|
|
|
+ //入库数量
|
|
|
+ stockGoods.setInDate(new Date());//入库日期
|
|
|
+ stockGoods.setInQuantity(deliveryItems.getActualQuantity());//入库数量
|
|
|
+ stockGoods.setOutQuantity(BigDecimal.ZERO);//出库数量
|
|
|
+ stockGoods.setLockingQuantity(BigDecimal.ZERO);//锁定数量
|
|
|
+ stockGoods.setBalanceQuantity(deliveryItems.getActualQuantity());//结余数量
|
|
|
+ stockGoods.setEnRouteQuantity(BigDecimal.ZERO);//在途数量
|
|
|
+ stockGoods.setInAmount(deliveryItems.getAmount());//入库金额
|
|
|
+ stockGoods.setSurplusRouteQuantity(deliveryItems.getActualQuantity());//可用数量
|
|
|
+ //进口贸易 还需要追加码单重量 和 发票重量
|
|
|
+ if (tradeType.equals(OrderTypeEnum.IMPORT.getType())) {
|
|
|
+ stockGoods.setBillNo(deliveryItems.getBillNo());//提单号
|
|
|
+ stockGoods.setContractNumber(deliveryItems.getBillNo());//合同号
|
|
|
+ stockGoods.setStorageId(storageId);//仓库id
|
|
|
+ stockGoods.setCntrNo(deliveryItems.getCntrNo());//箱号
|
|
|
+
|
|
|
+
|
|
|
+ stockGoods.setInWeight(deliveryItems.getInvoiceWeight());//入库发票重量
|
|
|
+ stockGoods.setOutWeight(new BigDecimal(0.00));//出库发票重量
|
|
|
+ stockGoods.setLockingWeight(new BigDecimal(0.00));//锁定发票重量
|
|
|
+ stockGoods.setBalanceWeight(deliveryItems.getInvoiceWeight());//结余发票重量
|
|
|
+ stockGoods.setInVolumn(deliveryItems.getBillWeight());//入库码单重量
|
|
|
+ stockGoods.setOutVolumn(new BigDecimal(0.00));//出库码单重量
|
|
|
+ stockGoods.setLockingVolumn(new BigDecimal(0.00));//锁定码单重量
|
|
|
+ stockGoods.setBalanceVolumn(deliveryItems.getBillWeight());//结余码单重量
|
|
|
+
|
|
|
+ stockGoods.setTradeType("JK");
|
|
|
+ if (ObjectUtil.isNotEmpty(orderType)) {
|
|
|
+ stockGoods.setOrderType(orderType);
|
|
|
+ } else {
|
|
|
+ stockGoods.setOrderType(deliveryItems.getBillType());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //国内
|
|
|
+ else if (tradeType.equals(OrderTypeEnum.DOMESTIC.getType())) {
|
|
|
+ stockGoods.setCorpId(corpId);
|
|
|
+ stockGoods.setStorageId(storageId);
|
|
|
+ stockGoods.setItemType(deliveryItems.getSpecificationAndModel());//规格明细
|
|
|
+ stockGoods.setTradeType("GN");
|
|
|
+ //商品 规格 供应商 仓库
|
|
|
+ }
|
|
|
+ //出口
|
|
|
+ else if (tradeType.equals(OrderTypeEnum.EXPORT.getType())) {
|
|
|
+ stockGoods.setTradeType("CK");
|
|
|
+ stockGoods.setItemType(deliveryItems.getSpecificationAndModel());//规格明细
|
|
|
+ }
|
|
|
+ //经销商
|
|
|
+ else if (tradeType.equals(OrderTypeEnum.DEALER.getType())) {
|
|
|
+ stockGoods.setTradeType("JXS");
|
|
|
+ stockGoods.setStorageId(storageId);
|
|
|
+ }
|
|
|
+ stockGoods.setCntrNo(deliveryItems.getCntrNo());
|
|
|
+ stockGoods.setCreateUser(SecureUtil.getUserId());
|
|
|
+ stockGoods.setTenantId(SecureUtil.getTenantId());
|
|
|
+ stockGoods.setCreateTime(new Date());
|
|
|
+ //库存金额
|
|
|
+ stockGoods.setBalanceAmount(deliveryItems.getAmount());
|
|
|
+ if (!new BigDecimal("0.00").equals(stockGoods.getBalanceAmount()) &&
|
|
|
+ !new BigDecimal("0.00").equals(stockGoods.getBalanceQuantity())) {
|
|
|
+ stockGoods.setStockPrice(stockGoods.getBalanceAmount().divide(stockGoods.getBalanceQuantity(), MathContext.DECIMAL32));
|
|
|
+ } else {
|
|
|
+ stockGoods.setStockPrice(new BigDecimal("0.00"));
|
|
|
+ }
|
|
|
+
|
|
|
+ R saveStock = stockGoodsClient.saveStock(stockGoods);
|
|
|
+ if (!saveStock.isSuccess()) {
|
|
|
+ throw new SecurityException("插入库存失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 将Object转换成List类型
|
|
|
*
|