Browse Source

撤回收货

1021934019@qq.com 4 years ago
parent
commit
630ebce656

+ 9 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/DeliveryController.java

@@ -198,4 +198,13 @@ public class DeliveryController extends BladeController {
 	}
 
 
+	@PostMapping("cancel")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "撤回收货", notes = "撤回收货")
+	public R cancel(@RequestBody Delivery delivery)
+	{
+		deliveryService.cancel(delivery);
+		return R.success("操作成功");
+	}
+
 }

+ 8 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/ExportDeliveryController.java

@@ -192,5 +192,13 @@ public class ExportDeliveryController extends BladeController {
 		return R.success("操作成功");
 	}
 
+	@PostMapping("cancel")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "撤回收货", notes = "撤回收货")
+	public R cancel(@RequestBody Delivery delivery)
+	{
+		deliveryService.cancel(delivery);
+		return R.success("操作成功");
+	}
 
 }

+ 8 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/controller/ImportDeliveryController.java

@@ -193,6 +193,14 @@ public class ImportDeliveryController extends BladeController {
 		deliveryService.comfire(delivery);
 		return R.success("操作成功");
 	}
+	@PostMapping("cancel")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "撤回收货", notes = "撤回收货")
+	public R cancel(@RequestBody Delivery delivery)
+	{
+		deliveryService.cancel(delivery);
+		return R.success("操作成功");
+	}
 	/**
 	 * 确认发货通知单
 	 */

+ 4 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/IDeliveryService.java

@@ -67,6 +67,10 @@ public interface IDeliveryService extends IService<Delivery> {
 	 */
 	void comfire(Delivery delivery);
 
+	/**
+	 * 撤销收货
+	 * */
+    void cancel(Delivery delivery);
 
 
 }

+ 4 - 5
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java

@@ -319,7 +319,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 	public void saveStock(String tradeType,Long corpId,Long storageId,DeliveryItems deliveryItems){
 		StockGoods stockGoods = new StockGoods();
 		stockGoods.setGoodsId(deliveryItems.getItemId());//商品id
-		stockGoods.setItemType(deliveryItems.getSpecificationAndModel());//规格明细
+
 
 		//入库数量
 		stockGoods.setInDate(new Date());//入库日期
@@ -333,9 +333,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 		if (tradeType.equals(OrderTypeEnum.IMPORT.getType())){
 			stockGoods.setBillNo(deliveryItems.getBillNo());//提单号
 			stockGoods.setContractNumber(deliveryItems.getContractNumber());//合同号
-			stockGoods.setCorpId(corpId);//供应商
 			stockGoods.setStorageId(storageId);//仓库id
-			stockGoods.setTypeno(deliveryItems.getSpecificationAndModel());//规格型号
 			stockGoods.setCntrNo(deliveryItems.getCntrNo());//箱号
 
 
@@ -351,12 +349,13 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 		//国内
 		else if(tradeType.equals(OrderTypeEnum.DOMESTIC.getType()))
 		{
-			stockGoods.setStorageId(storageId);//仓库id
+			stockGoods.setItemType(deliveryItems.getSpecificationAndModel());//规格明细
+
 		}
 		//出口
 		else if(tradeType.equals(OrderTypeEnum.EXPORT.getType()))
 		{
-			stockGoods.setCorpId(corpId);//供应商
+			stockGoods.setItemType(deliveryItems.getSpecificationAndModel());//规格明细
 		}
 		stockGoods.setCreateUser(SecureUtil.getUserId());
 		stockGoods.setTenantId(SecureUtil.getTenantId());

+ 62 - 8
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -224,7 +224,8 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 	}
 
 	@Override
-	@Transactional
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional
 	public void comfire(Delivery delivery)
 	{
 		    //保存收货单主表 和 收货单明细
@@ -240,20 +241,20 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 				//不同的出口对应不同的查询条件
 				if(delivery.getTradeType().equals("JK"))
 				{
-					model.setCntrNo(e.getCntrNo());
-					model.setBillNo(e.getBillNo());
-					model.setCorpId(delivery.getCorpId());
-					model.setStorageId(delivery.getStorageId());
-					model.setItemType(e.getSpecificationAndModel());
+					model.setCntrNo(e.getCntrNo());//箱号
+					model.setBillNo(e.getBillNo());//提单号
+				/*	model.setCorpId(delivery.getCorpId());*/
+					model.setStorageId(delivery.getStorageId());//仓库
+					model.setContractNumber(e.getContractNumber());//采购订单号
 				}
 				else if(delivery.getTradeType().equals("CK"))
 				{
-					model.setCorpId(delivery.getCorpId());
+
 					model.setItemType(e.getSpecificationAndModel());
 				}
 				else if(delivery.getTradeType().equals("GN"))
 				{
-					model.setStorageId(delivery.getStorageId());
+
 					model.setItemType(e.getSpecificationAndModel());
 				}
 				else
@@ -288,7 +289,60 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional
+	public void cancel(Delivery delivery)
+	{
+		 //判断当前收货单状态,是否可以撤销
+         if(delivery.getDeliveryStatus()==null||!delivery.getDeliveryStatus().equals("已发货"))
+         {
+                throw new SecurityException("非已发货状态,禁止撤回");
+		 }
+
+		 List<DeliveryItems> deliveryItemsList = delivery.getDeliveryItemsList();
+		 deliveryItemsList.forEach(e->{
+			 //更新item已发数量
+			 BigDecimal inventoryNumber = e.getActualQuantity();
+			 R r = iOrderItemsClient.updateActualQuantity(e.getSrcId(), inventoryNumber, 2);
+			 if(!r.isSuccess())
+			 {
+				 throw new SecurityException("更新采购明细失败");
+			 }
+			 //查询stock,后续更新stock数量
+			 StockGoods model=new StockGoods();
+			 model.setGoodsId(e.getItemId());
+			 //不同的出口对应不同的查询条件
+			 if(delivery.getTradeType().equals("JK"))
+			 {
+				 model.setCntrNo(e.getCntrNo());//箱号
+				 model.setBillNo(e.getBillNo());//提单号
+				 /*	model.setCorpId(delivery.getCorpId());*/
+				 model.setStorageId(delivery.getStorageId());//仓库
+				 model.setContractNumber(e.getContractNumber());//采购订单号
+			 }
+			 else if(delivery.getTradeType().equals("CK"))
+			 {
 
+				 model.setItemType(e.getSpecificationAndModel());
+			 }
+			 else if(delivery.getTradeType().equals("GN"))
+			 {
+
+				 model.setItemType(e.getSpecificationAndModel());
+			 }
+			 else
+			 {
+				 throw new SecurityException("贸易类型未指定");
+			 }
+			 StockGoods stock=stockGoodsClient.getOneStock(model);
+			 //更新stock库存数量
+			 iDeliveryItemsService.revocationDeliverGoods(delivery.getTradeType(),stock.getId(),e);
+		 });
+		//更新收货单状态为:录入
+		delivery.setDeliveryStatus("录入");
+		baseMapper.updateById(delivery);
+	}
 
 
 }

+ 5 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/feign/StockGoodsClient.java

@@ -6,6 +6,7 @@ import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.formula.functions.T;
 import org.springblade.core.mp.support.Condition;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
@@ -20,6 +21,7 @@ import springfox.documentation.annotations.ApiIgnore;
 
 import javax.validation.Valid;
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 @Slf4j
@@ -107,7 +109,10 @@ public class StockGoodsClient implements IStockGoodsClient{
 	@Override
 	public StockGoods getOneStock(StockGoods stockGoods)
 	{
+		stockGoods.setTenantId(AuthUtil.getTenantId());
+		stockGoods.setCreateTime(new Date());
 		QueryWrapper<StockGoods> queryWrapper = Condition.getQueryWrapper(stockGoods);
+
 		return stockGoodsService.getOne(queryWrapper);
 	}
 }