Просмотр исходного кода

Merge remote-tracking branch 'origin/dev' into dev

lazhaoqian 4 лет назад
Родитель
Сommit
a4c810647b

+ 21 - 0
blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/entity/StockGoods.java

@@ -283,6 +283,27 @@ public class StockGoods implements Serializable {
 		@TableField(exist = false)
 		private String updateUserName;
 
+		/**
+		 * 进口的采购订单号  出口销售订单号
+		 */
+		@ApiModelProperty(value = "进口的采购订单号  出口销售订单号")
+		private String orderNo;
+
+		/**
+		 * 进口的提单号
+		 */
+		@ApiModelProperty(value = "进口的提单号")
+		private String billNo;
+
+		/**
+		 * 合同号
+		 */
+		@ApiModelProperty(value = "合同号")
+		private String contractNumber;
+
+	@ApiModelProperty(value = "箱号")
+		private String cntrNo;
+
 
 
 }

+ 22 - 0
blade-service/blade-client/src/main/java/org/springblade/client/serial/controller/StorageDescController.java

@@ -16,6 +16,8 @@
  */
 package org.springblade.client.serial.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -27,6 +29,7 @@ import javax.validation.Valid;
 import org.springblade.client.entity.StorageDesc;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
@@ -36,6 +39,9 @@ import org.springblade.client.vo.StorageDescVO;
 import org.springblade.client.serial.service.IStorageDescService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.Collections;
+import java.util.List;
+
 /**
  * 库区表 控制器
  *
@@ -145,5 +151,21 @@ public class StorageDescController extends BladeController {
 		return R.status(storageDescService.removeByIds(Func.toLongList(ids)));
 	}
 
+	/**
+	 * 仓库列表全部返回
+	 */
+	@GetMapping("/storage/list")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "仓库列表", notes = "无需传入")
+	public List<?> storageList()
+	{
+		LambdaQueryWrapper<StorageDesc> storageDescLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		storageDescLambdaQueryWrapper
+			.eq(StorageDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(StorageDesc::getIsDeleted,0);
+		List<StorageDesc> list = storageDescService.list(storageDescLambdaQueryWrapper);
+		return CollectionUtils.isEmpty(list)?Collections.EMPTY_LIST:list;
+	}
+
 
 }

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

@@ -37,6 +37,8 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.deliver.goods.entity.Delivery;
 import org.springblade.deliver.goods.service.IDeliveryService;
 import org.springblade.deliver.goods.vo.DeliveryVO;
+import org.springblade.stock.feign.IStockGoodsClient;
+import org.springblade.stock.vo.StockGoodsVO;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
@@ -58,6 +60,7 @@ public class ImportDeliveryController extends BladeController {
 	private final IDeliveryService deliveryService;
 	private ICorpsDescClient corpsDescClient;//获取客户信息
 	private IUserClient iUserClient;//获取用户信息
+	private IStockGoodsClient stockGoodsClient;
 
 	/**
 	 * 详情
@@ -168,5 +171,36 @@ public class ImportDeliveryController extends BladeController {
 		return R.status(deliveryService.removeByIds(Func.toLongList(ids)));
 	}
 
+	@GetMapping("/findStockByConditions")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "查询库存", notes = "相关条件")
+	public StockGoodsVO findStockByConditions(@ApiParam(value = "供应商id", required = true) @RequestParam Long corpId,
+									  @ApiParam(value = "仓库id", required = true) @RequestParam Long storageId,
+									  @ApiParam(value = "货物id", required = true) @RequestParam Long goodId,
+									  @ApiParam(value = "箱号", required = true) @RequestParam String cntrNo,
+									  @ApiParam(value = "订单号", required = true) @RequestParam String billNo,
+									  @ApiParam(value = "合同号", required = true) @RequestParam String contractNumber) {
+
+		R<StockGoodsVO> stockGoodsVOR = stockGoodsClient.selectStock(corpId, storageId, goodId, null, null, cntrNo, billNo, contractNumber);
+		if(stockGoodsVOR.isSuccess())
+		{
+			StockGoodsVO data = stockGoodsVOR.getData();
+			return data;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	@PostMapping("comfire")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "确认收货", notes = "确认收货")
+	public R comfire(@RequestBody Delivery delivery)
+	{
+		deliveryService.comfire(delivery);
+		return R.success("操作成功");
+	}
+
 
 }

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

@@ -59,4 +59,11 @@ public interface IDeliveryService extends IService<Delivery> {
 	 */
 	R submit(Delivery delivery);
 
+	/**
+	 * 确认收货
+	 * @param delivery
+	 * @return
+	 */
+	void comfire(Delivery delivery);
+
 }

+ 47 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -17,6 +17,7 @@
 package org.springblade.deliver.goods.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import lombok.AllArgsConstructor;
 import org.springblade.client.entity.CorpsDesc;
@@ -26,21 +27,28 @@ import org.springblade.client.feign.IGoodsDescClient;
 import org.springblade.client.feign.ISerialClient;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.deliver.goods.entity.Delivery;
 import org.springblade.deliver.goods.entity.DeliveryFees;
 import org.springblade.deliver.goods.entity.DeliveryFiles;
 import org.springblade.deliver.goods.entity.DeliveryItems;
 import org.springblade.deliver.goods.mapper.DeliveryItemsMapper;
+import org.springblade.deliver.goods.service.IDeliveryItemsService;
 import org.springblade.deliver.goods.vo.DeliveryVO;
 import org.springblade.deliver.goods.mapper.DeliveryMapper;
 import org.springblade.deliver.goods.service.IDeliveryService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.stock.entity.StockGoods;
+import org.springblade.stock.feign.IStockGoodsClient;
+import org.springblade.stock.vo.StockGoodsVO;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -60,6 +68,9 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 	private DeliveryFilesServiceImpl deliveryFilesService;//发货文件信息
 	private IUserClient userClient;//获取用户信息
 	private ICorpsDescClient corpsDescClient;//获取客户信息
+	private IStockGoodsClient stockGoodsClient;
+
+	private final DeliveryItemsServiceImpl iDeliveryItemsService;
 
 	@Override
 	public IPage<DeliveryVO> selectDeliveryPage(IPage<DeliveryVO> page, DeliveryVO delivery) {
@@ -191,5 +202,41 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 		return R.data(delivery);
 	}
 
+	@Override
+	@Transactional
+	public void comfire(Delivery delivery)
+	{
+		    //保存收货单主表 和 收货单明细
+	       	this.submitDelivery(delivery);
+	       	//验证收货单库存与传入库存是否一致
+			List<DeliveryItems> deliveryItemsList = delivery.getDeliveryItemsList();
+		    deliveryItemsList.forEach(e->{
+		    	//传入库存
+				BigDecimal inventoryNumber = e.getInventoryNumber();
+				//实际库存
+				R<StockGoodsVO> stockGoodsVOR = stockGoodsClient.selectStock(delivery.getCorpId(), delivery.getStorageId(), e.getItemId(), null, null, e.getCntrNo(), e.getBillNo(), e.getContractNumber());
+				//todo 是否比较2个库存值, 暂未确定
+
+
+				StockGoodsVO data = stockGoodsVOR.getData();
+				//增加库存
+				if(Func.isEmpty(data))
+				{
+					iDeliveryItemsService.saveStock(delivery.getTradeType(),data.getCorpId(),data.getStorageId(),e);
+				}
+				//修改库存
+				else
+				{
+					iDeliveryItemsService.receiving(delivery.getTradeType(),data.getId(),e);
+				}
+
+
+			});
+
+
+
+		    //todo 修改原item数据
+	}
+
 
 }

+ 1 - 1
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/PurchaseSalesApplication.java

@@ -33,7 +33,7 @@ import org.springframework.cloud.client.SpringCloudApplication;
  */
 @EnableBladeFeign
 @SpringCloudApplication
-@SeataCloudApplication
+/*@SeataCloudApplication*/
 public class PurchaseSalesApplication {
 
 	public static void main(String[] args) {

+ 42 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/entrance/EntranceOrderController.java

@@ -1,5 +1,6 @@
 package org.springblade.purchase.sales.entrance;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -15,11 +16,16 @@ import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.purchase.sales.entity.Order;
+import org.springblade.purchase.sales.entity.OrderItems;
+import org.springblade.purchase.sales.service.IOrderItemsService;
 import org.springblade.purchase.sales.service.IOrderService;
 import org.springblade.purchase.sales.vo.OrderVO;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 进口销售单控制器
@@ -32,6 +38,8 @@ public class EntranceOrderController extends BladeController {
 
 	private final IOrderService orderService;
 
+	private final IOrderItemsService itemsService;
+
 	/**
 	 * 详情
 	 */
@@ -133,4 +141,38 @@ public class EntranceOrderController extends BladeController {
 		order.setTradeType(OrderTypeEnum.IMPORT.getType());
 		return R.data(orderService.deliverGoods(order));
 	}
+
+
+	/**
+	 * 根据提单号查询合同号
+	 * @param billNo
+	 * @return
+	 */
+	@GetMapping("/findContractNoByBillNo")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "通过提单号查询合同号", notes = "传入提单号")
+	public List<Order> findContractNoByBillNo(@ApiParam(value = "billNo", required = true) @RequestParam String billNo)
+	{
+		LambdaQueryWrapper<OrderItems> itemsLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		itemsLambdaQueryWrapper.eq(OrderItems::getBillNo,billNo.trim());
+		List<OrderItems> orderItems = itemsService.list(itemsLambdaQueryWrapper);
+		if(CollectionUtils.isEmpty(orderItems))
+		{
+			throw new SecurityException("无此提单号的记录");
+		}
+		List<Long> pids = orderItems.stream().map(OrderItems::getPid).distinct().collect(Collectors.toList());
+		if(CollectionUtils.isEmpty(pids))
+		{
+			return Collections.EMPTY_LIST;
+		}
+		else
+		{
+			LambdaQueryWrapper<Order> orderLambdaQueryWrapper=new LambdaQueryWrapper<>();
+			orderLambdaQueryWrapper.in(Order::getId,pids);
+			return orderService.list(orderLambdaQueryWrapper);
+		}
+
+	}
+
+
 }

+ 5 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java

@@ -86,6 +86,11 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 		lambdaQueryWrapper.eq(Func.isNotEmpty(lotNo),StockGoods::getLotNo,lotNo);//批次号
 		lambdaQueryWrapper.isNull(Func.isEmpty(lotNo),StockGoods::getLotNo);//批次号
 		lambdaQueryWrapper.eq(StockGoods::getTenantId,SecureUtil.getTenantId());//租户
+
+		lambdaQueryWrapper.eq(Func.isNotEmpty(cntrNo),StockGoods::getCntrNo,cntrNo);//收货单 箱号
+		lambdaQueryWrapper.eq(Func.isNotEmpty(billNo),StockGoods::getBillNo,billNo);//收货单 提单号
+		lambdaQueryWrapper.eq(Func.isNotEmpty(contractNumber),StockGoods::getContractNumber,contractNumber);//收货单 合同号
+
 		StockGoods stockGoods = baseMapper.selectOne(lambdaQueryWrapper);
 		return BeanUtil.copy(stockGoods, StockGoodsVO.class);
 	}