Browse Source

2022年10月17 18:45

wangzhuo 3 years ago
parent
commit
8f7b63bdbe
17 changed files with 205 additions and 58 deletions
  1. 2 1
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/goods/enums/RedisKey.java
  2. 12 1
      blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/feign/IStockGoodsClient.java
  3. 12 0
      blade-service/blade-client/src/main/java/org/springblade/client/RedisClient.java
  4. 41 16
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java
  5. 48 25
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java
  6. 7 2
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/vojo/JDYentries.java
  7. 3 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.java
  8. 3 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml
  9. 1 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java
  10. 10 6
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  11. 5 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/controller/StockGoodsController.java
  12. 42 3
      blade-service/blade-stock/src/main/java/org/springblade/stock/feign/StockGoodsClient.java
  13. 2 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.java
  14. 3 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.xml
  15. 2 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/service/IStockGoodsService.java
  16. 8 0
      blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java
  17. 4 4
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderServiceImpl.java

+ 2 - 1
blade-service-api/blade-client-api/src/main/java/org/springblade/client/goods/enums/RedisKey.java

@@ -17,6 +17,7 @@ public class RedisKey {
 	public static final String REDIS_STORAGE_DESC = "storageDesc";
 	//用户
 	public static final String REDIS_USER = "user";
-
+	//库存
+	public static final String STOCK_GOODS = "stockGoods";
 
 }

+ 12 - 1
blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/feign/IStockGoodsClient.java

@@ -28,6 +28,8 @@ public interface IStockGoodsClient {
 	String LIST_STOCK_BY_CONDITIONS = API_PREFIX + "/listStockByCondition";
 	String POST_LIST_STOCK_BY_CONDITIONS = API_PREFIX + "/postListStockByCondition";
 	String GET_STOCK_NUMBER = API_PREFIX + "/getStockNumber";
+	String UPDATE_STOCK_GOODS = API_PREFIX + "/updateStockGoods";
+	String GET_STOCK_GOODS_ALL = API_PREFIX + "/selectStockGoodsAll";
 
 
 	@GetMapping("/stockgoods/stocklist")
@@ -96,7 +98,10 @@ public interface IStockGoodsClient {
 	 * @return
 	 */
 	@PostMapping(UPDATE_STOCK)
-	R updateStock(@RequestBody StockGoods stockGoods);
+	boolean updateStock(@RequestBody StockGoods stockGoods);
+
+	@PostMapping(UPDATE_STOCK_GOODS)
+	int updateStockGoods(@RequestBody StockGoods stockGoods);
 
 	/**
 	 * 根据库存账id获取库存id
@@ -128,4 +133,10 @@ public interface IStockGoodsClient {
 	 */
 	@GetMapping(GET_STOCK_NUMBER)
 	BigDecimal getStockNumber(@RequestParam("goodId")Long goodId,@RequestParam("tenantId")String tenantId);
+
+	/***
+	 * 获取租户下所有库区
+	 */
+	@GetMapping(GET_STOCK_GOODS_ALL)
+	List<StockGoods> selectStockGoodsAll();
 }

+ 12 - 0
blade-service/blade-client/src/main/java/org/springblade/client/RedisClient.java

@@ -15,6 +15,7 @@ import org.springblade.client.goods.enums.RedisKey;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
+import org.springblade.stock.feign.IStockGoodsClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -36,6 +37,7 @@ public class RedisClient implements IRedisClient {
 	private final IGoodsDescClient goodsDescClient;//获取商品信息
 	private final ICorpsDescClient corpsDescClient;//获取客户信息
 	private final IStorageClient iStorageClient;//获取仓库,库区信息
+	private final IStockGoodsClient stockGoodsClient;//获取库存帐信息
 	private final RedisTemplate<String, Object> redisTemplate;
 
 	@Override
@@ -95,11 +97,21 @@ public class RedisClient implements IRedisClient {
 				redisTemplate.opsForValue().getAndSet(type, iStorageClient.selectStorageDescAll());
 			}
 		}
+		//库存
+		if (RedisKey.STOCK_GOODS.equals(type)) {
+			if (redisTemplate.hasKey(type)) {
+				redisTemplate.opsForValue().set(type, stockGoodsClient.selectStockGoodsAll());
+				redisTemplate.persist(type);
+			} else {
+				redisTemplate.opsForValue().getAndSet(type, stockGoodsClient.selectStockGoodsAll());
+			}
+		}
 
 		System.out.println("商品:" + redisTemplate.opsForValue().get("goods"));
 		System.out.println("客户:" + redisTemplate.opsForValue().get("corps"));
 		System.out.println("仓库:" + redisTemplate.opsForValue().get("storageType"));
 		System.out.println("库区:" + redisTemplate.opsForValue().get("storageDesc"));
+		System.out.println("库存账:" + redisTemplate.opsForValue().get("stockGoods"));
 		return true;
 	}
 

+ 41 - 16
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java

@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 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.feign.ICorpsDescClient;
 import org.springblade.client.feign.IGoodsDescClient;
@@ -54,6 +55,7 @@ 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.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -72,6 +74,7 @@ import java.util.stream.Collectors;
  */
 @Service
 @AllArgsConstructor
+@Slf4j
 public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, DeliveryItems> implements IDeliveryItemsService {
 
 	private IUserClient iUserClient;//获取用户信息
@@ -84,6 +87,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 	private final IBusinessOverpaymentClient businessOverpaymentClient;
 	//获取客户信息
 	private final ICorpsDescClient corpsDescClient;
+	private final RedisTemplate<String, Object> redisTemplate;
 	@Override
 	public IPage<DeliveryItemsVO> selectDeliveryItemsPage(IPage<DeliveryItemsVO> page, DeliveryItemsVO deliveryItems) {
 		return page.setRecords(baseMapper.selectDeliveryItemsPage(page, deliveryItems));
@@ -375,8 +379,8 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 		}
 		stockGoods.setUpdateTime(new Date());
 		stockGoods.setUpdateUser(SecureUtil.getUserId());
-		R updateStock = stockGoodsClient.updateStock(stockGoods);
-		if (!updateStock.isSuccess()){
+		boolean updateStock = stockGoodsClient.updateStock(stockGoods);
+		if (!updateStock){
 			throw new RuntimeException("更新库存总账失败");
 		}
 		return stockGoods;
@@ -428,8 +432,8 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 		}
 		stockGoods.setUpdateTime(new Date());
 		stockGoods.setUpdateUser(SecureUtil.getUserId());
-		R updateStock = stockGoodsClient.updateStock(stockGoods);
-		if (!updateStock.isSuccess()){
+		boolean updateStock = stockGoodsClient.updateStock(stockGoods);
+		if (!updateStock){
 			throw new RuntimeException("更新库存总账失败");
 		}
 		return stockGoods;
@@ -481,8 +485,8 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 
 		stockGoods.setUpdateTime(new Date());
 		stockGoods.setUpdateUser(SecureUtil.getUserId());
-		R updateStock = stockGoodsClient.updateStock(stockGoods);
-		if (!updateStock.isSuccess()) {
+		boolean updateStock = stockGoodsClient.updateStock(stockGoods);
+		if (!updateStock) {
 			throw new RuntimeException("更新库存总账失败");
 		}
 		return stockGoods;
@@ -526,8 +530,8 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 		stockGoods.setCntrNo(deliveryItems.getCntrNo());
 		stockGoods.setUpdateTime(new Date());
 		stockGoods.setUpdateUser(SecureUtil.getUserId());
-		R updateStock = stockGoodsClient.updateStock(stockGoods);
-		if (!updateStock.isSuccess()) {
+		boolean updateStock = stockGoodsClient.updateStock(stockGoods);
+		if (!updateStock) {
 			throw new RuntimeException("更新库存总账失败");
 		}
 		return stockGoods;
@@ -796,8 +800,8 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 				stock.setBalanceQuantity(stock.getInQuantity().subtract(stock.getOutQuantity()));//结余数量 减
 				//出库金额加
 				stock.setOutAmount(stock.getOutAmount().add((stock.getInAmount().divide(stock.getInQuantity(), 5, RoundingMode.HALF_UP)).setScale(2, RoundingMode.HALF_UP).multiply(deliveryItems.getActualQuantity())));
-				R updateStock = stockGoodsClient.updateStock(stock);
-				if (!updateStock.isSuccess()){
+				boolean updateStock = stockGoodsClient.updateStock(stock);
+				if (!updateStock){
 					throw new RuntimeException("更新库存总账失败");
 				}
 				//新仓库添加库存
@@ -812,8 +816,8 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 					serviceStock.setBalanceQuantity(serviceStock.getInQuantity().add(serviceStock.getOutQuantity()));//结余数量 加
 					//入库金额加
 					serviceStock.setInAmount(serviceStock.getInAmount().add((stock.getInAmount().divide(stock.getInQuantity(), 5, RoundingMode.HALF_UP)).setScale(2, RoundingMode.HALF_UP).multiply(deliveryItems.getActualQuantity())));
-					R stockMessage = stockGoodsClient.updateStock(serviceStock);
-					if (!stockMessage.isSuccess()){
+					boolean stockMessage = stockGoodsClient.updateStock(serviceStock);
+					if (!stockMessage){
 						throw new RuntimeException("更新库存总账失败");
 					}
 				}
@@ -838,8 +842,8 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 					//出库金额减
 					serviceStock.setOutAmount(serviceStock.getOutAmount().subtract((serviceStock.getInAmount().divide(serviceStock.getInQuantity(), 5, RoundingMode.HALF_UP)).setScale(2, RoundingMode.HALF_UP).multiply(deliveryItems.getActualQuantity())));
 
-					R stockMessage = stockGoodsClient.updateStock(serviceStock);
-					if (!stockMessage.isSuccess()){
+					boolean stockMessage = stockGoodsClient.updateStock(serviceStock);
+					if (!stockMessage){
 						throw new RuntimeException("更新库存总账失败");
 					}
 				}
@@ -850,8 +854,8 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 				//入库金额减
 				stock.setInAmount(stock.getInAmount().subtract((serviceStock.getInAmount().divide(serviceStock.getInQuantity(), 5, RoundingMode.HALF_UP)).setScale(2, RoundingMode.HALF_UP).multiply(deliveryItems.getActualQuantity())));
 
-				R updateStock = stockGoodsClient.updateStock(stock);
-				if (!updateStock.isSuccess()){
+				boolean updateStock = stockGoodsClient.updateStock(stock);
+				if (!updateStock){
 					throw new RuntimeException("更新库存总账失败");
 				}
 			}
@@ -900,4 +904,25 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 		}
 		return false;
 	}
+
+	/**
+	 * 将Object转换成List类型
+	 *
+	 * @param obj   Object对象
+	 * @param clazz 数据类型
+	 * @param <T>   泛型类型
+	 * @return List类型
+	 */
+	public static <T> List<T> castToList(Object obj, Class<T> clazz) {
+		List<T> resList = new ArrayList<>();
+		// 如果不是List<?>对象,是没有办法转换的
+		if (obj instanceof List<?>) {
+			for (Object o : (List<?>) obj) {
+				// 将对应的元素进行类型转换
+				resList.add(clazz.cast(o));
+			}
+			return resList;
+		}
+		return resList;
+	}
 }

+ 48 - 25
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -57,6 +57,7 @@ import org.springblade.stock.entity.StockGoods;
 import org.springblade.stock.feign.IStockGoodsClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -126,6 +127,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 	private final JdModuleMapper moduleMapper;
 	private final JdCorpsMapper corpsMapper;
 	private IGoodsDescClient goodsDescClient;//获取商品信息
+	private final RedisTemplate<String, Object> redisTemplate;
 
 	//private final GoodsDescServiceImpl goodsDescService;
 
@@ -345,7 +347,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 			}
 
 		}*/
-
+		baseMapper.updateById(select);
 
 		String billStatus = null;//订单状态
 		if("681169".equals(AuthUtil.getTenantId())){
@@ -515,7 +517,6 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 				try {
 					//测试账套-收货生成凭证
 					this.testDeliverGoodsSaveVoucher(brand, select, accountName, corpName, corpNumber, wareHouse, purchaseTotalAmount, deliveryAmount, saleOrderNo, purchaseOrderNo);
-					baseMapper.updateById(select);
 				} catch (Exception exception) {
 					throw new SecurityException(exception.getMessage());
 				}
@@ -621,7 +622,9 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 
 		BigDecimal pricetotal = deliveryItems.stream().map(DeliveryItems::getDeliveryAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 		//明细总采购价
-		String acoount = CollectionUtils.isEmpty(deliveryItems) ? "0" : pricetotal.toString();
+		//String acoount = CollectionUtils.isEmpty(deliveryItems) ? "0" : pricetotal.toString();
+		//采购金额
+		String acoount = select.getPurchaseAmount().toString();
 
 		select.setDeliveryItemsList(deliveryItems);
 
@@ -649,31 +652,12 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 		}
 
 		Long storageId = select.getStorageId();
-		//收货凭证
-		if ("681169".equals(select.getTenantId())) {
-			String accountName = select.getBelongCompany();
-			if (!"青岛通用沃德轮胎有限公司".equals(accountName)) {
-				accountName="青岛达沃特轮胎有限公司";
-			}
-			JdTenant jdTenant = getJdTenant(accountName);
-			if(jdTenant != null) {
-				//todo
-				try {
-					//测试账套-收货生成凭证
-					this.testTakeGoodsSaveVoucher(brand, select, accountName, corpName, corpNumber, wareHouse, acoount, orderNo);
-					baseMapper.updateById(select);
-
-				} catch (Exception exception) {
-					throw new SecurityException(exception.getMessage());
-				}
-			}
-		}
-
 
 		if (select.getDeliveryStatus() == null || DeliveryStatusEnum.REVOCATION.getType().equals(select.getDeliveryStatus())) {
 			throw new SecurityException("此单据已收货或者不存在,禁止重复操作");
 		}
 
+		baseMapper.updateById(select);
 
 		//保存收货单主表 和 收货单明细
 		this.submitDelivery(select);
@@ -712,7 +696,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 				if ("JK".equals(select.getTradeType())) {
 					model.setCntrNo(e.getCntrNo());//箱号
 					model.setBillNo(e.getBillNo());//提单号
-					/*	model.setCorpId(delivery.getCorpId());*/
+					/*model.setCorpId(delivery.getCorpId());*/
 					model.setStorageId(select.getStorageId());//仓库
 					model.setContractNumber(e.getContractNumber());//采购订单号
 					model.setTradeType("JK");
@@ -821,6 +805,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 			delivery.setFreightQuantity(select.getTotalQuantity());
 			delivery.setFreightTime(date);
 			delivery.setFreightUser(AuthUtil.getUserName());
+			baseMapper.updateById(delivery);
 
 			Order temp = new Order();
 			temp.setId(select.getOrgId());
@@ -835,8 +820,26 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 			orderTemp.setDeliverQuantity(select.getTotalQuantity());
 			orderTemp.setDeliverTime(date);
 			orderDescClient.updateOrder(orderTemp);
-			baseMapper.updateById(delivery);
 		}
+
+		//收货凭证
+		if ("681169".equals(select.getTenantId())) {
+			String accountName = select.getBelongCompany();
+			if (!"青岛通用沃德轮胎有限公司".equals(accountName)) {
+				accountName="青岛达沃特轮胎有限公司";
+			}
+			JdTenant jdTenant = getJdTenant(accountName);
+			if(jdTenant != null) {
+				//todo
+				try {
+					//测试账套-收货生成凭证
+					this.testTakeGoodsSaveVoucher(brand, select, accountName, corpName, corpNumber, wareHouse, acoount, orderNo);
+				} catch (Exception exception) {
+					throw new SecurityException(exception.getMessage());
+				}
+			}
+		}
+
 	}
 
 	@Override
@@ -1684,4 +1687,24 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 
 	}
 
+	/**
+	 * 将Object转换成List类型
+	 *
+	 * @param obj   Object对象
+	 * @param clazz 数据类型
+	 * @param <T>   泛型类型
+	 * @return List类型
+	 */
+	public static <T> List<T> castToList(Object obj, Class<T> clazz) {
+		List<T> resList = new ArrayList<>();
+		// 如果不是List<?>对象,是没有办法转换的
+		if (obj instanceof List<?>) {
+			for (Object o : (List<?>) obj) {
+				// 将对应的元素进行类型转换
+				resList.add(clazz.cast(o));
+			}
+			return resList;
+		}
+		return resList;
+	}
 }

+ 7 - 2
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/vojo/JDYentries.java

@@ -16,9 +16,14 @@ public class JDYentries
 	private String dc;
 	//摘要: 类似于备注
 	private String explanation;
-	//借方金额(本位币)
+	/**
+	 * 借方金额(本位币)
+	 */
 	private String debitamount;
-	//贷方金额(本位币)
+
+	/**
+	 * 贷方金额(本位币)
+	 */
 	private String creditamount;
 	//科目id(必填)
 	private String account_id;

+ 3 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.java

@@ -26,6 +26,7 @@ import org.springblade.purchase.sales.excel.*;
 import org.springblade.purchase.sales.vo.*;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.stock.entity.StockGoods;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -225,4 +226,6 @@ public interface OrderMapper extends BaseMapper<Order> {
 	 * 销售明细对账导出
 	 */
 	List<OrderDetailedExcel> orderDetailedExport(@Param("order") OrderReconciliationVo order);
+
+	int updateStockGoods(StockGoods stockGoods);
 }

+ 3 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml

@@ -1424,4 +1424,7 @@ ORDER BY
             </if>
         </where>
     </select>
+    <update id="updateStockGoods" parameterType="org.springblade.stock.entity.StockGoods">
+        UPDATE business_stock_goods SET surplus_route_quantity = #{surplusRouteQuantity},locking_quantity = #{lockingQuantity} WHERE tenant_id = #{tenantId} AND id = #{id} AND is_deleted = 0
+    </update>
 </mapper>

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

@@ -24,6 +24,7 @@ import org.springblade.core.tool.api.R;
 import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.excel.*;
 import org.springblade.purchase.sales.vo.*;
+import org.springblade.stock.entity.StockGoods;
 
 import java.math.BigDecimal;
 import java.util.List;

+ 10 - 6
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -28,6 +28,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.trade.purchase.order.enums.OrderTypeEnum;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springblade.check.dto.AuditProecessDTO;
 import org.springblade.check.entity.AuditPathsActs;
 import org.springblade.check.entity.AuditPathsLevels;
@@ -79,6 +80,7 @@ import java.util.*;
  */
 @Service
 @AllArgsConstructor
+@Slf4j
 public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService {
 	/**
 	 * 订单费用明细表
@@ -130,6 +132,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 	private final RedisTemplate<String, Object> redisTemplate;
 
+	private final IRedisClient redisClient;//redis缓存处理
+
 	@Override
 	public IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order) {
 		List<OrderVO> orderVOList = baseMapper.selectOrderPage(page, order);
@@ -788,8 +792,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						// 增加锁定库存
 						oneStock.setLockingQuantity(lockingQuantity == null ? new BigDecimal("0").add(orderQuantity) : lockingQuantity.add(orderQuantity));
 						// 更新库存
-						R r = stockGoodsClient.updateStock(oneStock);
-						if (!r.isSuccess()) {
+						boolean goods = stockGoodsClient.updateStock(oneStock);
+						if (!goods) {
 							throw new SecurityException("锁定库存失败: 更新失败");
 						}
 					});
@@ -1108,8 +1112,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					// 减少锁定库存
 					oneStock.setLockingQuantity(lockingQuantity == null ? new BigDecimal("0") : lockingQuantity.subtract(orderQuantity));
 					// 更新库存
-					R r = stockGoodsClient.updateStock(oneStock);
-					if (!r.isSuccess()) {
+					boolean r = stockGoodsClient.updateStock(oneStock);
+					if (!r) {
 						throw new SecurityException("驳回失败: 更新库存失败");
 					}
 				});
@@ -1216,8 +1220,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						// 减少锁定库存
 						oneStock.setLockingQuantity(lockingQuantity == null ? new BigDecimal("0") : lockingQuantity.subtract(orderQuantity));
 						// 更新库存
-						R r = stockGoodsClient.updateStock(oneStock);
-						if (!r.isSuccess()) {
+						boolean r = stockGoodsClient.updateStock(oneStock);
+						if (!r) {
 							throw new SecurityException("撤销失败: 更新库存失败");
 						}
 					});

+ 5 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/controller/StockGoodsController.java

@@ -366,4 +366,9 @@ public class StockGoodsController extends BladeController {
 		return R.data(pages);
 	}
 
+	@PostMapping("/updateStockGoods")
+	public R updateStockGoods(StockGoods stockGoods) {
+		return R.data(stockGoodsService.updateStockGoods(stockGoods));
+	}
+
 }

+ 42 - 3
blade-service/blade-stock/src/main/java/org/springblade/stock/feign/StockGoodsClient.java

@@ -21,12 +21,14 @@ import org.springblade.stock.entity.StockGoods;
 import org.springblade.stock.service.IStockGoodsService;
 import org.springblade.stock.vo.StockGoodsVO;
 import org.springblade.system.user.feign.IUserClient;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
@@ -44,7 +46,7 @@ public class StockGoodsClient implements IStockGoodsClient {
 	private ICorpsDescClient corpsDescClient;//获取客户信息
 	private IGoodsDescClient goodsDescClient;//商品信息
 	private IUserClient userClient;//用户信息
-
+	private final RedisTemplate<String, Object> redisTemplate;
 
 	@Override
 	@GetMapping("stockgoods/stocklist")
@@ -185,8 +187,13 @@ public class StockGoodsClient implements IStockGoodsClient {
 	 */
 	@Override
 	@PostMapping(UPDATE_STOCK)
-	public R updateStock(StockGoods stockGoods) {
-		return R.data(stockGoodsService.updateById(stockGoods));
+	public boolean updateStock(StockGoods stockGoods) {
+		return stockGoodsService.updateById(stockGoods);
+	}
+	@Override
+	@PostMapping(UPDATE_STOCK_GOODS)
+	public int updateStockGoods(StockGoods stockGoods) {
+		return stockGoodsService.updateStockGoods(stockGoods);
 	}
 
 	/**
@@ -290,4 +297,36 @@ public class StockGoodsClient implements IStockGoodsClient {
 		}
 		return reduce;
 	}
+
+	/**
+	 * 获得所有库存帐信息
+	 */
+	@Override
+	public List<StockGoods> selectStockGoodsAll() {
+		LambdaQueryWrapper<StockGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(StockGoods::getIsDeleted, 0);
+		lambdaQueryWrapper.eq(StockGoods::getTenantId, AuthUtil.getTenantId());
+		return stockGoodsService.list(lambdaQueryWrapper);
+	}
+
+	/**
+	 * 将Object转换成List类型
+	 *
+	 * @param obj   Object对象
+	 * @param clazz 数据类型
+	 * @param <T>   泛型类型
+	 * @return List类型
+	 */
+	public static <T> List<T> castToList(Object obj, Class<T> clazz) {
+		List<T> resList = new ArrayList<>();
+		// 如果不是List<?>对象,是没有办法转换的
+		if (obj instanceof List<?>) {
+			for (Object o : (List<?>) obj) {
+				// 将对应的元素进行类型转换
+				resList.add(clazz.cast(o));
+			}
+			return resList;
+		}
+		return resList;
+	}
 }

+ 2 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.java

@@ -57,4 +57,6 @@ public interface StockGoodsMapper extends BaseMapper<StockGoods> {
 	@SqlParser(filter=true)
 	BigDecimal selectStockNumber(@Param("tenantId") String tenantId,@Param("goodsId") Long goodsId);
 
+	int updateStockGoods(StockGoods stockGoods);
+
 }

+ 3 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.xml

@@ -125,5 +125,8 @@ WHERE
 	AND tenant_id = #{tenantId}
 	GROUP BY goods_id
     </select>
+    <update id="updateStockGoods" parameterType="org.springblade.stock.entity.StockGoods">
+        UPDATE business_stock_goods SET surplus_route_quantity = #{surplusRouteQuantity},locking_quantity = #{lockingQuantity} WHERE tenant_id = #{tenantId} AND id = #{id} AND is_deleted = 0
+    </update>
 
 </mapper>

+ 2 - 0
blade-service/blade-stock/src/main/java/org/springblade/stock/service/IStockGoodsService.java

@@ -90,6 +90,8 @@ public interface IStockGoodsService extends IService<StockGoods> {
 	 */
 	R<StockGoods> updateMessage(StockGoods stockGoods);
 
+	int updateStockGoods(StockGoods stockGoods);
+
 
 	IPage<StockGoods> groupByStock(IPage<StockGoods> iPage, String tenantId, String contractNumber, String billNo, Long goodId, String createStartTime, String createEndTime);
 

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

@@ -28,6 +28,7 @@ import org.springblade.client.entity.GoodsDesc;
 import org.springblade.client.entity.StorageDesc;
 import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.client.feign.IGoodsDescClient;
+import org.springblade.client.feign.IRedisClient;
 import org.springblade.client.feign.IStorageClient;
 import org.springblade.client.vo.GoodsDescVO;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -72,6 +73,7 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 	 */
 	private final IUserClient userClient;
 	private final IStorageClient storageClient;
+	private final IRedisClient redisClient;//redis缓存处理
 
 	@Override
 	public IPage<StockGoodsVO> selectStockGoodsPage(IPage<StockGoodsVO> page, StockGoodsVO stockGoods) {
@@ -226,6 +228,7 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 		if (StringUtils.isNotBlank(storage)) {
 			message = message + "在基础资料中未查到仓库信息的商品有:" + storage.toString();
 		}
+		redisClient.basicData("stockGoods");
 		return R.data(message);
 	}
 
@@ -288,6 +291,11 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 	}
 
 	@Override
+	public int updateStockGoods(StockGoods stockGoods) {
+		return baseMapper.updateStockGoods(stockGoods);
+	}
+
+	@Override
 	public IPage<StockGoods> groupByStock(IPage<StockGoods> iPage, String tenantId, String contractNumber, String billNo, Long goodId, String createStartTime, String createEndTime) {
 		return baseMapper.groupByStock(iPage, AuthUtil.getTenantId(), contractNumber, billNo, goodId, createStartTime, createEndTime);
 	}

+ 4 - 4
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderServiceImpl.java

@@ -691,7 +691,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					data.setInAmount(data.getInAmount().add(item.getAmount()));//入库金额
 					data.setInQuantity(data.getInQuantity().add(item.getOrderQuantity()));
 					data.setBalanceAmount(data.getInAmount().subtract(data.getOutAmount()));//结余金额
-					R updateStock = stockGoodsClient.updateStock(data);
+					boolean updateStock = stockGoodsClient.updateStock(data);
 				}
 				//更改明细状态
 				item.setStatus(3);
@@ -722,7 +722,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				data.setSurplusRouteQuantity(data.getSurplusRouteQuantity().subtract(item.getOrderQuantity()));//可用数量
 				data.setInAmount(data.getInAmount().subtract(item.getAmount()));//入库金额
 				data.setBalanceAmount(data.getInAmount().subtract(data.getOutAmount()));//结余金额
-				R updateStock = stockGoodsClient.updateStock(data);
+				boolean updateStock = stockGoodsClient.updateStock(data);
 				//更改明细状态
 				item.setStatus(0);
 				item.setUpdateTime(new Date());
@@ -945,8 +945,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					// 减少锁定库存
 					oneStock.setLockingQuantity(lockingQuantity == null ? new BigDecimal("0") : lockingQuantity.subtract(orderQuantity));
 					// 更新库存
-					R r = stockGoodsClient.updateStock(oneStock);
-					if (!r.isSuccess()) {
+					boolean r = stockGoodsClient.updateStock(oneStock);
+					if (!r) {
 						throw new SecurityException("撤销失败: 更新库存失败");
 					}
 				});