纪新园 2 роки тому
батько
коміт
17989d0293

+ 5 - 0
blade-service/blade-client/pom.xml

@@ -35,6 +35,11 @@
             <groupId>org.springblade</groupId>
             <artifactId>blade-core-boot</artifactId>
         </dependency>
+        <!--Job-->
+        <dependency>
+            <groupId>com.xuxueli</groupId>
+            <artifactId>xxl-job-core</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.springblade</groupId>
             <artifactId>blade-starter-excel</artifactId>

+ 24 - 35
blade-service/blade-client/src/main/java/org/springblade/client/scheduled/CorpsProfitTimer.java

@@ -28,64 +28,53 @@ import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.xxl.job.core.log.XxlJobLogger;
+
 /**
  * 定时任务-客户每月返利-每月1自动计算
- * */
+ */
 @Component
-@Configuration
-@EnableScheduling
-@Slf4j
 @AllArgsConstructor
-public class CorpsProfitTimer
-{
-    private final ICorpsDescService corpsDescService;
+public class CorpsProfitTimer {
+	private final ICorpsDescService corpsDescService;
 
 	private final IBasicCorpsProfitChangeService basicCorpsProfitChangeService;
 
-    private final IMessageClient messageClient;
-    private final ISchoolTeacherService schoolTeacherService;
-    private final IOrderDescClient orderDescClient;
+	private final IOrderDescClient orderDescClient;
 
-    //每月1号凌晨 开始检查,累计计算,目前只统计租户681169的返利情况
-	@Scheduled(cron="0 0 0 1 * ?")
-	public void creditDateCheck() throws ParseException
-	{
-		LambdaQueryWrapper<CorpsDesc> corpsDescLambdaQueryWrapper=new LambdaQueryWrapper<>();
+	//每月1号凌晨 开始检查,累计计算,目前只统计租户681169的返利情况
+	@Scheduled(cron = "0 0 0 1 * ?")
+	public void creditDateCheck() throws ParseException {
+		LambdaQueryWrapper<CorpsDesc> corpsDescLambdaQueryWrapper = new LambdaQueryWrapper<>();
 		corpsDescLambdaQueryWrapper
-			.eq(CorpsDesc::getIsDeleted,0)
-			.eq(CorpsDesc::getTenantId,"681169");
+			.eq(CorpsDesc::getIsDeleted, 0)
+			.eq(CorpsDesc::getTenantId, "681169");
 		List<CorpsDesc> corpsDescList = corpsDescService.list(corpsDescLambdaQueryWrapper);
-		if(CollectionUtils.isNotEmpty(corpsDescList))
-		{
+		if (CollectionUtils.isNotEmpty(corpsDescList)) {
 			List<CorpsDesc> descList = corpsDescList.stream().filter(e -> e.getMonthProfit() != null).collect(Collectors.toList());
-			if(CollectionUtils.isNotEmpty(descList))
-			{
-				log.info("=================开始处理返利================");
-				descList.forEach(e->{
+			if (CollectionUtils.isNotEmpty(descList)) {
+				descList.forEach(e -> {
 					//增加客户的总返利 和 可用返利,本月返利归零
 					BigDecimal monthProfit = e.getMonthProfit();
-					e.setProfitReturn(e.getProfitReturn().add(monthProfit==null?BigDecimal.ZERO:monthProfit));
-					e.setSurplusProfit(e.getSurplusProfit().add(monthProfit==null?BigDecimal.ZERO:monthProfit));
+					e.setProfitReturn(e.getProfitReturn().add(monthProfit == null ? BigDecimal.ZERO : monthProfit));
+					e.setSurplusProfit(e.getSurplusProfit().add(monthProfit == null ? BigDecimal.ZERO : monthProfit));
 					e.setMonthProfit(BigDecimal.ZERO);
 					corpsDescService.updateById(e);
 					//增加返利变动记录
-					BasicCorpsProfitChange basicCorpsProfitChange=new BasicCorpsProfitChange();
+					BasicCorpsProfitChange basicCorpsProfitChange = new BasicCorpsProfitChange();
 					basicCorpsProfitChange.setOrderId(-1L);
 					basicCorpsProfitChange.setOrderNo("定时任务增加返利");
-					basicCorpsProfitChange.setChangeProfitReturn(monthProfit==null?BigDecimal.ZERO:monthProfit);
-					basicCorpsProfitChange.setChangeSurplusProfit(monthProfit==null?BigDecimal.ZERO:monthProfit);
+					basicCorpsProfitChange.setChangeProfitReturn(monthProfit == null ? BigDecimal.ZERO : monthProfit);
+					basicCorpsProfitChange.setChangeSurplusProfit(monthProfit == null ? BigDecimal.ZERO : monthProfit);
 					basicCorpsProfitChange.setChangeMonthProfit(monthProfit.negate());
 					basicCorpsProfitChangeService.save(basicCorpsProfitChange);
 				});
-				log.info("=================处理返利结束================");
 			}
 		}
 
 
-
-
-
-
 	}
 
 /*	// 通济学校 每月计算校龄
@@ -97,10 +86,10 @@ public class CorpsProfitTimer
 		log.info("=================计算校龄结束================");
 	}*/
 
-/*	*//**
+	/**
 	 * 达沃特 48 小时内 为付款账单驳回审核 且释放库存
 	 */
-	@Scheduled(cron="0 0 2 * * ?")
+	@XxlJob("releaseStock")
 	public void releaseStock() {
 		//获取 48 小时内提交审核未 付款的销售订单
 		orderDescClient.releaseStock(null);

+ 49 - 18
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.deliver.goods.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -39,6 +40,7 @@ import org.springblade.deliver.goods.entity.DeliveryItems;
 import org.springblade.deliver.goods.enums.DeliveryEnum;
 import org.springblade.deliver.goods.enums.DeliveryStatusEnum;
 import org.springblade.deliver.goods.mapper.DeliveryItemsMapper;
+import org.springblade.deliver.goods.service.IDeliveryFeesService;
 import org.springblade.deliver.goods.service.IDeliveryItemsService;
 import org.springblade.deliver.goods.vo.*;
 import org.springblade.finance.feign.IFinanceClient;
@@ -50,6 +52,7 @@ 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.OrderFees;
 import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.feign.IOrderDescClient;
 import org.springblade.purchase.sales.feign.IOrderItemsClient;
@@ -70,6 +73,7 @@ import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -96,6 +100,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 	private final RedisTemplate<String, Object> redisTemplate;
 	private final IRedisClient redisClient;//redis缓存处理
 	private final ISysClient sysClient;//消息
+	private final IDeliveryFeesService deliveryFeesService;
 
 	@Override
 	public IPage<DeliveryItemsVO> selectDeliveryItemsPage(IPage<DeliveryItemsVO> page, DeliveryItemsVO deliveryItems) {
@@ -220,7 +225,8 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 
 		//从缓存中获得库存
 //		redisClient.basicData("all");
-		List<StockGoods> stockGoodsList = stockGoodsClient.selectStockGoodsAll();;
+		List<StockGoods> stockGoodsList = stockGoodsClient.selectStockGoodsAll();
+		;
 
 		if (CollectionUtils.isNotEmpty(collect)) {
 			List<DeliveryItems> deliveryItemsList1 = new ArrayList<>();
@@ -335,19 +341,19 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 						}
 					}
 				}
-				if (ObjectUtils.isNotNull(stockGoods)){
+				if (ObjectUtils.isNotNull(stockGoods)) {
 					stockGoodsList1.add(stockGoods);
 				}
-				if (ObjectUtils.isNotNull(goods)){
+				if (ObjectUtils.isNotNull(goods)) {
 					stockGoodsList1.add(goods);
 				}
-				if (ObjectUtils.isNotNull(stock)){
+				if (ObjectUtils.isNotNull(stock)) {
 					stockGoodsList1.add(stock);
 				}
 				deliveryItemsList1.add(deliveryItems);
 //				baseMapper.updateById(deliveryItems);
 			}
-			if (stockGoodsList1.size()>0){
+			if (stockGoodsList1.size() > 0) {
 				R res = stockGoodsClient.saveOrUpdateBatchList(stockGoodsList1);
 				if (!res.isSuccess()) {
 					throw new SecurityException(res.getMsg());
@@ -458,7 +464,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 	 * 发货减少库存账
 	 *
 	 * @param tradeType     单据类型 进口、出口、国内
-	 * @param stockGoods       库存账id
+	 * @param stockGoods    库存账id
 	 * @param deliveryItems 货物明细信息
 	 */
 	public StockGoods deliverGoods(String tradeType, StockGoods stockGoods, DeliveryItems deliveryItems, Integer deliveryType) {
@@ -522,7 +528,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 	 * 撤销发货
 	 *
 	 * @param tradeType     单据类型 进口、出口、国内
-	 * @param stockGoods       库存账id
+	 * @param stockGoods    库存账id
 	 * @param deliveryItems 货物明细信息
 	 */
 	public StockGoods revocationDeliverGoods(String tradeType, StockGoods stockGoods, DeliveryItems deliveryItems, Integer deliveryType) {
@@ -582,7 +588,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 	 * 撤销收货
 	 *
 	 * @param tradeType     单据类型 进口、出口、国内
-	 * @param stockGoods       库存账id
+	 * @param stockGoods    库存账id
 	 * @param deliveryItems 货物明细信息
 	 */
 	public StockGoods cancelStock(String tradeType, StockGoods stockGoods, DeliveryItems deliveryItems) {
@@ -591,9 +597,9 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 			throw new RuntimeException("库存账不存在");
 		}
 		BigDecimal actualQuantity = new BigDecimal("0.00");
-		if ("681169".equals(AuthUtil.getTenantId())){
+		if ("681169".equals(AuthUtil.getTenantId())) {
 			actualQuantity = deliveryItems.getActualQuantity() == null ? new BigDecimal("0") : deliveryItems.getArrivalQuantity();
-		}else{
+		} else {
 			actualQuantity = deliveryItems.getActualQuantity() == null ? new BigDecimal("0") : deliveryItems.getActualQuantity();
 		}
 		BigDecimal invoiceWeight = deliveryItems.getInvoiceWeight() == null ? new BigDecimal("0") : deliveryItems.getInvoiceWeight();
@@ -648,7 +654,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 	 * 收货单新增库存账
 	 *
 	 * @param tradeType     单据类型 进口、出口、国内
-	 * @param stockGoods       库存账
+	 * @param stockGoods    库存账
 	 * @param deliveryItems 货物明细信息
 	 */
 	public StockGoods receiving(String tradeType, StockGoods stockGoods, DeliveryItems deliveryItems) {
@@ -691,7 +697,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 						stockGoods.setStockPrice(new BigDecimal("0.00"));
 					}
 				}
-			}else{
+			} else {
 				if ("681169".equals(AuthUtil.getTenantId())) {
 					stockGoods.setBalanceQuantity(stockGoods.getBalanceQuantity().subtract(deliveryItems.getArrivalQuantity()));//结余数量
 					stockGoods.setSurplusRouteQuantity(stockGoods.getBalanceQuantity().subtract(stockGoods.getLockingQuantity()));//可用数量
@@ -784,7 +790,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 		} else {
 			stockGoods.setBalanceAmount(deliveryItems.getDeliveryAmount());
 		}
-		if (stockGoods.getBalanceAmount().compareTo(new BigDecimal("0.00")) > 0  &&
+		if (stockGoods.getBalanceAmount().compareTo(new BigDecimal("0.00")) > 0 &&
 			stockGoods.getBalanceQuantity().compareTo(new BigDecimal("0.00")) > 0) {
 			stockGoods.setStockPrice(stockGoods.getBalanceAmount().divide(stockGoods.getBalanceQuantity(), MathContext.DECIMAL32));
 		} else {
@@ -943,11 +949,36 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 		//对发货明细数据进行筛选 发货数量减去到货数量大于0 的
 		List<DeliveryItems> collect = list.stream().filter(e -> (e.getActualQuantity().subtract(e.getArrivalQuantity())).compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
 		if (CollectionUtils.isNotEmpty(collect)) {
+			List<BusinessOverpaymentItem> businessOverpaymentItemList = new ArrayList<>();
+			BigDecimal packageAmount = new BigDecimal("0.00");
+			List<OrderFees> orderFees = orderDescClient.getOrderFee(delivery.getSrcId());
+			if (ObjectUtils.isNotNull(orderFees) && orderFees.size() > 0) {
+				List<DeliveryFees> deliveryFees = deliveryFeesService.list(new LambdaQueryWrapper<DeliveryFees>()
+					.eq(DeliveryFees::getPid, delivery.getId())
+					.eq(DeliveryFees::getTenantId, AuthUtil.getTenantId())
+					.eq(DeliveryFees::getIsDeleted, 0));
+				if (ObjectUtils.isNotNull(deliveryFees) && deliveryFees.size() > 0) {
+					BigDecimal orderFeesAmount = orderFees.stream().map(OrderFees::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+					BigDecimal deliveryFeesAmount = deliveryFees.stream().map(DeliveryFees::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+					packageAmount = orderFeesAmount.subtract(deliveryFeesAmount);
+				}
+				if (new BigDecimal("0.00").compareTo(packageAmount) != 0){
+					BusinessOverpaymentItem overpaymentItem = new BusinessOverpaymentItem();
+					overpaymentItem.setBillNo(delivery.getSrcOrderNo());
+					overpaymentItem.setSrcOrderNo(delivery.getSysNo());
+					overpaymentItem.setOrderNo(delivery.getSysNo());
+					overpaymentItem.setSrcPid(delivery.getId());
+					overpaymentItem.setSrcId(delivery.getId());
+					overpaymentItem.setOverpayment(packageAmount);
+					businessOverpaymentItemList.add(overpaymentItem);
+				}
+			}
+
 			//获取溢付款金额 溢付款金额等于发货数量-到货数量的值 乘以单价 等于溢付款
 			amount = collect.stream().filter(e -> e.getPrice() != null).reduce(BigDecimal.ZERO, (x, y) -> {
 				return x.add((y.getActualQuantity().subtract(y.getArrivalQuantity())).multiply(y.getPrice()));
 			}, BigDecimal::add);
-			List<BusinessOverpaymentItem> businessOverpaymentItemList = new ArrayList<>();
+
 			collect.stream().forEach(item -> {
 				BusinessOverpaymentItem overpaymentItem = new BusinessOverpaymentItem();
 				overpaymentItem.setBillNo(delivery.getSrcOrderNo());
@@ -1003,7 +1034,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 					throw new RuntimeException("更新库存总账失败");
 				}*/
 				R res = stockGoodsClient.updateStock(stock);
-				if (!res.isSuccess()){
+				if (!res.isSuccess()) {
 					throw new RuntimeException(res.getMsg());
 				}
 				//新仓库添加库存
@@ -1023,7 +1054,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 						throw new RuntimeException("更新库存总账失败");
 					}*/
 					R ress = stockGoodsClient.updateStock(serviceStock);
-					if (!ress.isSuccess()){
+					if (!ress.isSuccess()) {
 						throw new RuntimeException(ress.getMsg());
 					}
 				}
@@ -1053,7 +1084,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 						throw new RuntimeException("更新库存总账失败");
 					}*/
 					R res = stockGoodsClient.updateStock(serviceStock);
-					if (!res.isSuccess()){
+					if (!res.isSuccess()) {
 						throw new RuntimeException(res.getMsg());
 					}
 				}
@@ -1069,7 +1100,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 					throw new RuntimeException("更新库存总账失败");
 				}*/
 				R res = stockGoodsClient.updateStock(stock);
-				if (!res.isSuccess()){
+				if (!res.isSuccess()) {
 					throw new RuntimeException(res.getMsg());
 				}
 			}

+ 26 - 23
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -771,16 +771,13 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 		String wareHouse = null;
 		String brand = null;
 		//客户信息
-		List<CorpsDesc> corpsDescList = castToList(redisTemplate.opsForValue().get("corps"), CorpsDesc.class);
-		CorpsDesc corpsDesc = corpsDescList.stream().filter(c -> c.getId().equals(corpId)).findFirst().orElse(null);
+		CorpsDesc corpsDesc = corpsDescClient.getCorpId(corpId);
 		if (corpsDesc != null) {
 			corpName = corpsDesc.getCname();
 			corpNumber = corpsDesc.getCode();
 		}
 		//仓库信息
-		List<StorageDesc> storageDescList = castToList(redisTemplate.opsForValue().get("storageDesc"), StorageDesc.class);
-		StorageDesc storageDesc = storageDescList.stream().filter(c -> c.getId().equals(select.getStorageId())).findFirst().orElse(null);
-		//StorageDesc storageDesc = iStorageClient.findById(select.getStorageId());
+		StorageDesc storageDesc = storageClient.findById(select.getStorageId());
 		if (storageDesc != null) {
 			wareHouse = storageDesc.getCname();
 		}
@@ -1872,15 +1869,13 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 			}
 		}
 		//客户信息
-		List<CorpsDesc> corpsDescList = castToList(redisTemplate.opsForValue().get("corps"), CorpsDesc.class);
-		CorpsDesc corpsDesc = corpsDescList.stream().filter(c -> c.getId().equals(corpId)).findFirst().orElse(null);
+		CorpsDesc corpsDesc = corpsDescClient.getCorpId(corpId);
 		if (corpsDesc != null) {
 			corpName = corpsDesc.getCname();
 			corpNumber = corpsDesc.getCode();
 		}
 		//仓库信息
-		List<StorageDesc> storageDescList = castToList(redisTemplate.opsForValue().get("storageDesc"), StorageDesc.class);
-		StorageDesc storageDesc = storageDescList.stream().filter(c -> c.getId().equals(select.getStorageId())).findFirst().orElse(null);
+		StorageDesc storageDesc = storageClient.findById(select.getStorageId());
 		if (storageDesc != null) {
 			wareHouse = storageDesc.getCname();
 		}
@@ -1948,14 +1943,18 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 			select.setWagonNumberOne(delivery.getWagonNumberOne());
 			select.setWagonNumberTwo(delivery.getWagonNumberTwo());
 			baseMapper.updateById(select);
-			Order temp = new Order();
-			temp.setId(select.getSrcId());//销售主表id
-			temp.setWagonNumberOne(select.getWagonNumberOne());
-			temp.setWagonNumberTwo(select.getWagonNumberTwo());
-			orderDescClient.updateOrder(temp);
+			Order details = orderDescClient.getById(select.getSrcId());
+			if (ObjectUtils.isNotNull(details) && "XS".equals(details.getBillType()) && "已完成".equals(details.getOrderStatus())){
+				throw new RuntimeException("客户已收货,操作失败");
+			}
+			details.setWagonNumberOne(select.getWagonNumberOne());
+			details.setWagonNumberTwo(select.getWagonNumberTwo());
+			orderDescClient.updateOrder(details);
 
-			Order orderTemp = new Order();
-			orderTemp.setId(select.getOrgId());//采购主表id
+			Order orderTemp = orderDescClient.getById(select.getOrgId());
+			if (ObjectUtils.isNotNull(orderTemp) && "XS".equals(orderTemp.getBillType()) && "已完成".equals(orderTemp.getOrderStatus())){
+				throw new RuntimeException("客户已收货,操作失败");
+			}
 			orderTemp.setWagonNumberOne(select.getWagonNumberOne());
 			orderTemp.setWagonNumberTwo(select.getWagonNumberTwo());
 			orderDescClient.updateOrder(orderTemp);
@@ -1978,14 +1977,18 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 			delivery.setWagonNumberOne(" ");
 			delivery.setWagonNumberTwo(" ");
 			baseMapper.updateById(delivery);
-			Order temp = new Order();
-			temp.setId(select.getSrcId());//销售主表id
-			temp.setWagonNumberOne(" ");
-			temp.setWagonNumberTwo(" ");
-			orderDescClient.updateOrder(temp);
+			Order details = orderDescClient.getById(select.getSrcId());
+			if (ObjectUtils.isNotNull(details) && "XS".equals(details.getBillType()) && "已完成".equals(details.getOrderStatus())){
+				throw new RuntimeException("客户已收货,操作失败");
+			}
+			details.setWagonNumberOne(" ");
+			details.setWagonNumberTwo(" ");
+			orderDescClient.updateOrder(details);
 
-			Order orderTemp = new Order();
-			orderTemp.setId(select.getOrgId());//采购主表id
+			Order orderTemp = orderDescClient.getById(select.getOrgId());
+			if (ObjectUtils.isNotNull(orderTemp) && "XS".equals(orderTemp.getBillType()) && "已完成".equals(orderTemp.getOrderStatus())){
+				throw new RuntimeException("客户已收货,操作失败");
+			}
 			orderTemp.setWagonNumberOne(" ");
 			orderTemp.setWagonNumberTwo(" ");
 			orderDescClient.updateOrder(orderTemp);