Browse Source

2023年8月28日17:42:29

纪新园 2 years ago
parent
commit
9216786af3
19 changed files with 385 additions and 57 deletions
  1. 9 0
      blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/feign/IFinanceClient.java
  2. 4 4
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/ArchivesTrajectoryController.java
  3. 8 6
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TradingBoxController.java
  4. 10 9
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TradingBoxFeesController.java
  5. 11 11
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TradingBoxItemController.java
  6. 7 5
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TransportController.java
  7. 4 2
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TransportItemController.java
  8. 17 14
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TransportItemFeesController.java
  9. 1 1
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/RepairServiceImpl.java
  10. 1 1
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TradingBoxServiceImpl.java
  11. 1 1
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TransferServiceImpl.java
  12. 1 1
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java
  13. 60 0
      blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java
  14. 78 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/maintenance/service/impl/MaintenanceServiceImpl.java
  15. 6 0
      blade-service/trade-finance/pom.xml
  16. 1 0
      blade-service/trade-finance/src/main/java/org/springblade/finance/controller/AccController.java
  17. 11 0
      blade-service/trade-finance/src/main/java/org/springblade/finance/controller/SettlementController.java
  18. 2 0
      blade-service/trade-finance/src/main/java/org/springblade/finance/service/ISettlementService.java
  19. 153 2
      blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

+ 9 - 0
blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/feign/IFinanceClient.java

@@ -85,6 +85,15 @@ public interface IFinanceClient {
 	R paymentApplyBoxTube(@Valid @RequestBody ApplyDTO dto);
 
 	/**
+	 * 销售生成账单
+	 *
+	 * @param dto
+	 * @return
+	 */
+	@PostMapping("settlement/paymentApplyPartsQB")
+	R paymentApplyPartsQB(@Valid @RequestBody ApplyDTO dto);
+
+	/**
 	 * 海运进出口生成账单
 	 *
 	 * @param dto

+ 4 - 4
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/ArchivesTrajectoryController.java

@@ -150,7 +150,7 @@ public class ArchivesTrajectoryController extends BladeController {
 				if (ObjectUtils.isNotNull(tradingBoxFeesList) && tradingBoxFeesList.size() > 0) {
 					//应付
 					List<String> payCorpId = new ArrayList<>();
-					List<Long> payCorpIds = tradingBoxFeesList.stream().filter(e -> e.getFeesType() == 1).map(TradingBoxFees::getCorpId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+					List<Long> payCorpIds = tradingBoxFeesList.stream().filter(e -> e.getFeesType() == 2).map(TradingBoxFees::getCorpId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 					for (Long str : payCorpIds) {
 						payCorpId.add(str.toString());
 					}
@@ -158,10 +158,10 @@ public class ArchivesTrajectoryController extends BladeController {
 					if (ObjectUtils.isNotNull(payCorpsDescList) && payCorpsDescList.size() > 0) {
 						archivesTrajectory_.setCorpNamePay(payCorpsDescList.stream().map(CorpsDesc::getCname).collect(Collectors.joining()));
 					}
-					archivesTrajectory_.setPay(tradingBoxFeesList.stream().filter(e -> e.getFeesType() == 1).map(TradingBoxFees::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+					archivesTrajectory_.setPay(tradingBoxFeesList.stream().filter(e -> e.getFeesType() == 2).map(TradingBoxFees::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 					//应收
 					List<String> collectCorpId = new ArrayList<>();
-					List<Long> collectCorpIds = tradingBoxFeesList.stream().filter(e -> e.getFeesType() == 2).map(TradingBoxFees::getCorpId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+					List<Long> collectCorpIds = tradingBoxFeesList.stream().filter(e -> e.getFeesType() == 1).map(TradingBoxFees::getCorpId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 					for (Long str : collectCorpIds) {
 						collectCorpId.add(str.toString());
 					}
@@ -170,7 +170,7 @@ public class ArchivesTrajectoryController extends BladeController {
 						archivesTrajectory_.setCorpNameCollect(collectCorpsDescList.stream().map(CorpsDesc::getCname).collect(Collectors.joining()));
 					}
 
-					archivesTrajectory_.setCollect(tradingBoxFeesList.stream().filter(e -> e.getFeesType() == 2).map(TradingBoxFees::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+					archivesTrajectory_.setCollect(tradingBoxFeesList.stream().filter(e -> e.getFeesType() == 1).map(TradingBoxFees::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				} else {
 					archivesTrajectory_.setPay(new BigDecimal("0.00"));
 					archivesTrajectory_.setCollect(new BigDecimal("0.00"));

+ 8 - 6
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TradingBoxController.java

@@ -156,14 +156,16 @@ public class TradingBoxController extends BladeController {
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
 		TradingBox tradingBox = tradingBoxService.getById(ids);
 		if (ObjectUtils.isNotNull(tradingBox)) {
-			if (!tradingBox.getCreateUser().equals(AuthUtil.getUserId())){
-				throw new RuntimeException("当前登录人没有删除该单据权限");
-			}
-			if(3 == tradingBox.getStatus()){
-				throw new RuntimeException("审核通过不允许删除");
+			if (!AuthUtil.getUserRole().contains("管理员")){
+				if (!tradingBox.getCreateUser().equals(AuthUtil.getUserId())){
+					throw new RuntimeException("当前登录人没有删除该单据权限");
+				}
+				if(3 == tradingBox.getStatus()){
+					throw new RuntimeException("审核通过不允许删除");
+				}
 			}
 		}
-		if (tradingBox.getType().equals("DCF")) {
+		if ("DCF".equals(tradingBox.getType())) {
 			LambdaQueryWrapper<TradingBoxFees> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 			lambdaQueryWrapper.eq(TradingBoxFees::getPid, tradingBox.getId()).eq(TradingBoxFees::getIsDeleted, 0).eq(TradingBoxFees::getTenantId, AuthUtil.getTenantId());
 			List<TradingBoxFees> tradingBoxFeesList = tradingBoxFeesService.list(lambdaQueryWrapper);

+ 10 - 9
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TradingBoxFeesController.java

@@ -26,7 +26,6 @@ import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
 import org.springblade.box.tube.entity.TradingBox;
 import org.springblade.box.tube.entity.TradingBoxFees;
-import org.springblade.box.tube.entity.TransportItemFees;
 import org.springblade.box.tube.service.ITradingBoxFeesService;
 import org.springblade.box.tube.service.ITradingBoxService;
 import org.springblade.box.tube.vo.TradingBoxFeesVO;
@@ -89,13 +88,13 @@ public class TradingBoxFeesController extends BladeController {
 			feesDescVOList = res.getData();
 		}
 		LambdaQueryWrapper<TradingBoxFees> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(tradingBoxFees.getCode()),TradingBoxFees::getCode,tradingBoxFees.getCode())
-			.eq(TradingBoxFees::getPid,tradingBoxFees.getPid())
-			.eq(TradingBoxFees::getIsDeleted,0)
-			.eq(TradingBoxFees::getFeesType,tradingBoxFees.getFeesType())
-			.eq(TradingBoxFees::getTenantId,AuthUtil.getTenantId())
+		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(tradingBoxFees.getCode()), TradingBoxFees::getCode, tradingBoxFees.getCode())
+			.eq(TradingBoxFees::getPid, tradingBoxFees.getPid())
+			.eq(TradingBoxFees::getIsDeleted, 0)
+			.eq(TradingBoxFees::getFeesType, tradingBoxFees.getFeesType())
+			.eq(TradingBoxFees::getTenantId, AuthUtil.getTenantId())
 			.orderByDesc(TradingBoxFees::getCreateTime);
-		IPage<TradingBoxFees> pages = tradingBoxFeesService.page(Condition.getPage(query),lambdaQueryWrapper);
+		IPage<TradingBoxFees> pages = tradingBoxFeesService.page(Condition.getPage(query), lambdaQueryWrapper);
 
 		for (TradingBoxFees item : pages.getRecords()) {
 			FeesDesc descVO = feesDescVOList.stream().filter(e -> e.getId().equals(item.getItemId())).findFirst().orElse(new FeesDescVO());
@@ -180,8 +179,10 @@ public class TradingBoxFeesController extends BladeController {
 	@RepeatSubmit
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
 		TradingBoxFees tradingBoxFees = tradingBoxFeesService.getById(ids);
-		if (ObjectUtils.isNotNull(tradingBoxFees) && !tradingBoxFees.getCreateUser().equals(AuthUtil.getUserId())){
-			throw new RuntimeException("当前登录人没有删除该单据权限");
+		if (!AuthUtil.getUserRole().contains("管理员")) {
+			if (ObjectUtils.isNotNull(tradingBoxFees) && !tradingBoxFees.getCreateUser().equals(AuthUtil.getUserId())) {
+				throw new RuntimeException("当前登录人没有删除该单据权限");
+			}
 		}
 		return R.status(tradingBoxFeesService.removeByIds(Func.toLongList(ids)));
 	}

+ 11 - 11
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TradingBoxItemController.java

@@ -17,18 +17,18 @@
 package org.springblade.box.tube.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-
-import javax.validation.Valid;
-
 import org.springblade.box.tube.entity.*;
 import org.springblade.box.tube.service.*;
+import org.springblade.box.tube.vo.TradingBoxItemVO;
 import org.springblade.common.annotation.RepeatSubmit;
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -36,10 +36,8 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.box.tube.vo.TradingBoxItemVO;
-import org.springblade.core.boot.ctrl.BladeController;
 
+import javax.validation.Valid;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -251,7 +249,7 @@ public class TradingBoxItemController extends BladeController {
 						}
 						archives.setStatus(tradingBoxItem.getStatus());
 						if (ObjectUtils.isNotNull(archivesR)) {
-							if ("BUY".equals(tradingBox.getType()) ) {
+							if ("BUY".equals(tradingBox.getType())) {
 								if (!"退租".equals(archivesR.getStatus()) && !"卖出".equals(archivesR.getStatus())) {
 									throw new RuntimeException("箱号:" + archivesR.getCode() + "已存在");
 								}
@@ -473,7 +471,7 @@ public class TradingBoxItemController extends BladeController {
 						archives.setContractNo(tradingBox.getContractNo());
 						archives.setBoxAccessStatus("");
 						if (ObjectUtils.isNotNull(archivesR)) {
-							if ("ZR".equals(tradingBox.getType()) ) {
+							if ("ZR".equals(tradingBox.getType())) {
 								if (!"退租".equals(archivesR.getStatus()) && !"卖出".equals(archivesR.getStatus())) {
 									throw new RuntimeException("箱号:" + archivesR.getCode() + "已存在");
 								}
@@ -568,8 +566,10 @@ public class TradingBoxItemController extends BladeController {
 	@RepeatSubmit
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
 		TradingBoxItem tradingBoxItem = tradingBoxItemService.getById(ids);
-		if (ObjectUtils.isNotNull(tradingBoxItem) && !tradingBoxItem.getCreateUser().equals(AuthUtil.getUserId())){
-			throw new RuntimeException("当前登录人没有删除该单据权限");
+		if (!AuthUtil.getUserRole().contains("管理员")) {
+			if (ObjectUtils.isNotNull(tradingBoxItem) && !tradingBoxItem.getCreateUser().equals(AuthUtil.getUserId())) {
+				throw new RuntimeException("当前登录人没有删除该单据权限");
+			}
 		}
 		return R.status(tradingBoxItemService.removeByIds(Func.toLongList(ids)));
 	}

+ 7 - 5
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TransportController.java

@@ -160,11 +160,13 @@ public class TransportController extends BladeController {
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
 		Transport transport = transportService.getById(ids);
 		if (ObjectUtils.isNotNull(transport)) {
-			if (!transport.getCreateUser().equals(AuthUtil.getUserId())) {
-				throw new RuntimeException("当前登录人没有删除该单据权限");
-			}
-			if (3 == transport.getStatus()) {
-				throw new RuntimeException("审核通过不允许删除");
+			if (!AuthUtil.getUserRole().contains("管理员")) {
+				if (!transport.getCreateUser().equals(AuthUtil.getUserId())) {
+					throw new RuntimeException("当前登录人没有删除该单据权限");
+				}
+				if (3 == transport.getStatus()) {
+					throw new RuntimeException("审核通过不允许删除");
+				}
 			}
 		}
 		return R.status(transportService.removeByIds(Func.toLongList(ids)));

+ 4 - 2
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TransportItemController.java

@@ -164,8 +164,10 @@ public class TransportItemController extends BladeController {
 	@RepeatSubmit
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
 		TransportItem transportItem = transportItemService.getById(ids);
-		if (ObjectUtils.isNotNull(transportItem) && !transportItem.getCreateUser().equals(AuthUtil.getUserId())){
-			throw new RuntimeException("当前登录人没有删除该单据权限");
+		if (!AuthUtil.getUserRole().contains("管理员")) {
+			if (ObjectUtils.isNotNull(transportItem) && !transportItem.getCreateUser().equals(AuthUtil.getUserId())) {
+				throw new RuntimeException("当前登录人没有删除该单据权限");
+			}
 		}
 		return R.status(transportItemService.removeByIds(Func.toLongList(ids)));
 	}

+ 17 - 14
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/controller/TransportItemFeesController.java

@@ -23,6 +23,7 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
+
 import javax.validation.Valid;
 
 import org.springblade.box.tube.entity.TradingBoxFees;
@@ -95,19 +96,19 @@ public class TransportItemFeesController extends BladeController {
 			feesDescVOList = res.getData();
 		}
 		LambdaQueryWrapper<TransportItemFees> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(transportItemFees.getCode()),TransportItemFees::getCode,transportItemFees.getCode())
-			.eq(TransportItemFees::getPid,transportItemFees.getPid())
-			.eq(TransportItemFees::getIsDeleted,0)
-			.eq(TransportItemFees::getFeesType,transportItemFees.getFeesType())
-			.eq(TransportItemFees::getTenantId,AuthUtil.getTenantId())
-		.orderByDesc(TransportItemFees::getCreateTime);
-		IPage<TransportItemFees> pages = transportItemFeesService.page(Condition.getPage(query),lambdaQueryWrapper);
+		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(transportItemFees.getCode()), TransportItemFees::getCode, transportItemFees.getCode())
+			.eq(TransportItemFees::getPid, transportItemFees.getPid())
+			.eq(TransportItemFees::getIsDeleted, 0)
+			.eq(TransportItemFees::getFeesType, transportItemFees.getFeesType())
+			.eq(TransportItemFees::getTenantId, AuthUtil.getTenantId())
+			.orderByDesc(TransportItemFees::getCreateTime);
+		IPage<TransportItemFees> pages = transportItemFeesService.page(Condition.getPage(query), lambdaQueryWrapper);
 		for (TransportItemFees item : pages.getRecords()) {
 			FeesDesc descVO = feesDescVOList.stream().filter(e -> e.getId().equals(item.getItemId())).findFirst().orElse(new FeesDescVO());
 			if (ObjectUtils.isNotNull(descVO)) {
 				item.setItemName(descVO.getCname());
 			}
-			if (ObjectUtils.isNotNull(item.getCorpId())){
+			if (ObjectUtils.isNotNull(item.getCorpId())) {
 				CorpsDesc corpsDesc = corpsDescClient.getCorpId(item.getCorpId());
 				if (ObjectUtils.isNotNull(corpsDesc)) {
 					item.setCorpName(corpsDesc.getCname());
@@ -157,11 +158,11 @@ public class TransportItemFeesController extends BladeController {
 	@RepeatSubmit
 	public R submit(@Valid @RequestBody TransportItemFees transportItemFees) {
 		Transport transport = new Transport();
-		if (ObjectUtils.isNotNull(transportItemFees.getPid())){
+		if (ObjectUtils.isNotNull(transportItemFees.getPid())) {
 			transport = transportService.getById(transportItemFees.getPid());
 		}
-		if (transportItemFees.getId() == null){
-			if (ObjectUtils.isNotNull(transport)){
+		if (transportItemFees.getId() == null) {
+			if (ObjectUtils.isNotNull(transport)) {
 				if ("CKZY".equals(transport.getBillType())) {
 					transportItemFees.setBillType("出口装运");
 				} else {
@@ -170,7 +171,7 @@ public class TransportItemFeesController extends BladeController {
 			}
 			transportItemFees.setCreateUser(AuthUtil.getUserId());
 			transportItemFees.setCreateTime(new Date());
-		}else{
+		} else {
 			transportItemFees.setUpdateTime(new Date());
 			transportItemFees.setUpdateUser(AuthUtil.getUserId());
 		}
@@ -187,8 +188,10 @@ public class TransportItemFeesController extends BladeController {
 	@RepeatSubmit
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
 		TransportItemFees transportItemFees = transportItemFeesService.getById(ids);
-		if (ObjectUtils.isNotNull(transportItemFees) && !transportItemFees.getCreateUser().equals(AuthUtil.getUserId())){
-			throw new RuntimeException("当前登录人没有删除该单据权限");
+		if (!AuthUtil.getUserRole().contains("管理员")) {
+			if (ObjectUtils.isNotNull(transportItemFees) && !transportItemFees.getCreateUser().equals(AuthUtil.getUserId())) {
+				throw new RuntimeException("当前登录人没有删除该单据权限");
+			}
 		}
 		return R.status(transportItemFeesService.removeByIds(Func.toLongList(ids)));
 	}

+ 1 - 1
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/RepairServiceImpl.java

@@ -637,7 +637,7 @@ public class RepairServiceImpl extends ServiceImpl<RepairMapper, Repair> impleme
 				if (1 == repairFees.getFeesType()) {
 					items.setSrcFeesType("收费");
 				} else {
-					items.setSrcFeesType("付费");
+					items.setSrcFeesType("申请");
 				}
 				items.setSrcBoxBillType(repairFees.getBillType());
 				items.setItemType(itemType);

+ 1 - 1
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TradingBoxServiceImpl.java

@@ -825,7 +825,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 				if (1 == tradingBoxFees.getFeesType()) {
 					items.setSrcFeesType("收费");
 				} else {
-					items.setSrcFeesType("付费");
+					items.setSrcFeesType("申请");
 				}
 				items.setSrcBoxBillType(tradingBoxFees.getBillType());
 				items.setItemType(tradingBox.getType());

+ 1 - 1
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TransferServiceImpl.java

@@ -525,7 +525,7 @@ public class TransferServiceImpl implements ITransferService {
 				if (1 == tradingBoxFees.getFeesType()) {
 					items.setSrcFeesType("收费");
 				} else {
-					items.setSrcFeesType("付费");
+					items.setSrcFeesType("申请");
 				}
 				items.setSrcBoxBillType(tradingBoxFees.getBillType());
 				items.setItemType(tradingBox.getType());

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

@@ -951,7 +951,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 		if (CollectionUtils.isNotEmpty(collect)) {
 			List<BusinessOverpaymentItem> businessOverpaymentItemList = new ArrayList<>();
 			BigDecimal packageAmount = new BigDecimal("0.00");
-			List<OrderFees> orderFees = orderDescClient.getOrderFee(delivery.getSrcId());
+			List<OrderFees> orderFees = orderDescClient.getOrderFee(delivery.getOrgId());
 			List<DeliveryFees> deliveryFees = deliveryFeesService.list(new LambdaQueryWrapper<DeliveryFees>()
 				.eq(DeliveryFees::getPid, delivery.getId())
 				.eq(DeliveryFees::getTenantId, AuthUtil.getTenantId())

+ 60 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java

@@ -411,6 +411,66 @@ public class PaymentServiceImpl implements IPaymentService {
 						wechatMark.setBillNo(re.getData().getSysNo());
 						maintenanceClient.updateMaintenance(re.getData());
 						maintenanceClient.updateMaintenanceFees(re.getData().getId() + "", re.getData().getTenantId());
+
+						BigDecimal amount = BigDecimal.ZERO;
+						BigDecimal quantity = BigDecimal.ZERO;
+						BigDecimal price = BigDecimal.ZERO;
+						ApplyDTO applyDTO = new ApplyDTO();
+						applyDTO.setCompanyid(1689158786813538306L);
+						applyDTO.setTradeType("YPJ");
+						applyDTO.setBelongCompany("青岛维尼科斯汽车服务有限公司");
+						applyDTO.setAccDate(maintenance.getRepairReportDate());
+						applyDTO.setDc("D");
+						applyDTO.setBillType("收费");
+						amount = amount.add(maintenance.getMaintenanceAmount());
+						quantity = quantity.add(new BigDecimal(1));
+						price = price.add(amount);
+						applyDTO.setSrcParentId(maintenance.getId());
+						applyDTO.setSrcSysno(maintenance.getSysNo());
+						applyDTO.setItemType("YPJ");
+						applyDTO.setCorpId(maintenance.getCorpId());
+						applyDTO.setSrcId(maintenance.getId());
+						applyDTO.setSrcFeesId(maintenance.getId());
+						applyDTO.setCurrency("CNY");
+						applyDTO.setExchangeRate(new BigDecimal("1"));
+						applyDTO.setTaxRate(BigDecimal.ZERO);
+						applyDTO.setSrcType(12);
+						applyDTO.setTradeType("YPJ");
+						applyDTO.setUnit("条");
+						applyDTO.setRemarks(maintenance.getRemarks());
+						//获取费用id
+						R<FeesDesc> fees = feesDescClient.getFeesByName("维修费");
+						if (fees.isSuccess() && fees.getData() != null) {
+							applyDTO.setCostType(fees.getData().getId().toString());
+						}
+						applyDTO.setQuantity(new BigDecimal(1));
+						applyDTO.setPrice(maintenance.getMaintenanceAmount());
+						applyDTO.setAmount(maintenance.getMaintenanceAmount());
+						applyDTO.setSrcDate(maintenance.getRepairReportDate());
+						applyDTO.setSrcBillNo(maintenance.getSysNo());
+						applyDTO.setAccSysNo(maintenance.getSysNo());
+						applyDTO.setSrcRefno(maintenance.getSysNo());
+						applyDTO.setRetrieval(maintenance.getRepairReportDate());
+						applyDTO.setCorpName(maintenance.getCorpName());
+						applyDTO.setAmount(amount);
+						applyDTO.setPrice(price);
+						applyDTO.setQuantity(quantity);
+						List<Settlement> settlementList = new ArrayList<>();
+						Settlement settlement = new Settlement();
+						settlement.setDc("d");
+						settlement.setBillType("收费");
+						settlement.setSettlementDate(new Date());
+						settlement.setAccount("微信支付");
+						settlement.setAmount(maintenance.getMaintenanceAmount());
+						settlement.setOverPayment(new BigDecimal("0.00"));
+						settlementList.add(settlement);
+						applyDTO.setSettlementList(settlementList);
+						//生成账单
+						R paymentApply = financeClient.paymentApplyPartsQB(applyDTO);
+						if (!paymentApply.isSuccess()) {
+							throw new RuntimeException(paymentApply.getMsg());
+						}
+
 						wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付成功");
 						wechatMark.setStatus(1);
 					} else {

+ 78 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/maintenance/service/impl/MaintenanceServiceImpl.java

@@ -23,12 +23,17 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springblade.client.entity.FeesDesc;
 import org.springblade.client.entity.Message;
 import org.springblade.client.feign.ICorpsArchivesClient;
+import org.springblade.client.feign.IFeesDescClient;
 import org.springblade.client.feign.IMessageClient;
 import org.springblade.client.feign.ISerialClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.finance.dto.ApplyDTO;
+import org.springblade.finance.feign.IFinanceClient;
+import org.springblade.finance.vojo.Acc;
 import org.springblade.pay.tonglianPayment.dto.PaymentDTO;
 import org.springblade.pay.tonglianPayment.entity.Parameters;
 import org.springblade.pay.tonglianPayment.fegin.IPaymentClient;
@@ -94,6 +99,12 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 	 */
 	private IUserClient userClient;
 
+	//费用
+	private final IFeesDescClient feesDescClient;
+
+	//财务
+	private final IFinanceClient financeClient;
+
 	@Override
 	public IPage<MaintenanceVO> selectMaintenancePage(IPage<MaintenanceVO> page, MaintenanceVO maintenance) {
 		return page.setRecords(baseMapper.selectMaintenancePage(page, maintenance));
@@ -524,6 +535,67 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 		return R.data(maintenance);
 	}
 
+	/**
+	 * 订单生成账单 并且推送财务消息
+	 *
+	 * @param maintenance 订单信息
+	 * @param billType    货款类型: 申请 收费 付费
+	 * @param itemType    付款类型: 采购 销售 收货 发货
+	 */
+
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
+	public void paymentApply(Maintenance maintenance, String billType, String itemType) {
+		BigDecimal amount = BigDecimal.ZERO;//对账金额   销售订单生成的金额  销售金额-本次使用返利金额+费用明细
+		BigDecimal quantity = BigDecimal.ZERO;//对账数量 数量为 就是轮胎条数的和
+		BigDecimal price = BigDecimal.ZERO;//对账单价
+		ApplyDTO applyDTO = new ApplyDTO();
+		applyDTO.setCompanyid(1689158786813538306L);
+		applyDTO.setTradeType("YPJ");
+		applyDTO.setBelongCompany("青岛维尼科斯汽车服务有限公司");
+		applyDTO.setAccDate(maintenance.getRepairReportDate());
+		applyDTO.setDc("D");
+		applyDTO.setBillType("收费");
+		amount = amount.add(maintenance.getMaintenanceAmount());
+		quantity = quantity.add(new BigDecimal(1));
+		price = price.add(amount);
+		applyDTO.setSrcParentId(maintenance.getId());
+		applyDTO.setSrcSysno(maintenance.getSysNo());
+		applyDTO.setItemType(itemType);
+		applyDTO.setCorpId(maintenance.getCorpId());
+		applyDTO.setSrcId(maintenance.getId());
+		applyDTO.setSrcFeesId(maintenance.getId());
+		applyDTO.setCurrency("CNY");
+		applyDTO.setExchangeRate(new BigDecimal("1"));
+		applyDTO.setTaxRate(BigDecimal.ZERO);
+		applyDTO.setSrcType(12);
+		applyDTO.setTradeType("YPJ");
+		applyDTO.setUnit("条");
+		applyDTO.setRemarks(maintenance.getRemarks());
+		//获取费用id
+		R<FeesDesc> fees = feesDescClient.getFeesByName("维修费");
+		if (fees.isSuccess() && fees.getData() != null) {
+			applyDTO.setCostType(fees.getData().getId().toString());
+		}
+		applyDTO.setQuantity(new BigDecimal(1));
+		applyDTO.setPrice(maintenance.getMaintenanceAmount());
+		applyDTO.setAmount(maintenance.getMaintenanceAmount());
+		applyDTO.setSrcDate(maintenance.getRepairReportDate());
+		applyDTO.setSrcBillNo(maintenance.getSysNo());
+		applyDTO.setAccSysNo(maintenance.getSysNo());
+		applyDTO.setSrcRefno(maintenance.getSysNo());
+		applyDTO.setRetrieval(maintenance.getRepairReportDate());
+		applyDTO.setCorpName(maintenance.getCorpName());
+		applyDTO.setAmount(amount);
+		applyDTO.setPrice(price);
+		applyDTO.setQuantity(quantity);
+		//生成账单
+		R paymentApply = financeClient.paymentApplyPartsQB(applyDTO);
+		if (!paymentApply.isSuccess()) {
+			throw new RuntimeException(paymentApply.getMsg());
+		}
+	}
+
 	@Override
 	public R scanPay(Maintenance maintenance) {
 		if (maintenance.getId() == null) {
@@ -548,6 +620,12 @@ public class MaintenanceServiceImpl extends ServiceImpl<MaintenanceMapper, Maint
 		if (maintenance.getId() == null) {
 			throw new RuntimeException("缺少必要参数");
 		}
+		Acc acc = financeClient.selectBySrcId(maintenance.getId());
+		if (ObjectUtils.isNotNull(acc) && (new BigDecimal("0.00").compareTo(acc.getSettlementAmount()) == 0 || ObjectUtils.isNull(acc.getSettlementAmount()))){
+			financeClient.deleteBySrcId(maintenance.getId());
+		}else {
+			throw new RuntimeException("账单已结算,撤销失败");
+		}
 		maintenance.setStatus(3);
 		maintenance.setUpdateTime(new Date());
 		maintenance.setUpdateUser(AuthUtil.getUserId());

+ 6 - 0
blade-service/trade-finance/pom.xml

@@ -121,6 +121,12 @@
             <version>2.8.2.RELEASE</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-sales-part-api</artifactId>
+            <version>2.8.2.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
 

+ 1 - 0
blade-service/trade-finance/src/main/java/org/springblade/finance/controller/AccController.java

@@ -238,6 +238,7 @@ public class AccController extends BladeController {
 			}
 		}
 		accLambdaQueryWrapper.eq(Acc::getStatus, 0);
+		accLambdaQueryWrapper.eq(StringUtils.isNotBlank(acc.getCurrency()), Acc::getCurrency, acc.getCurrency());
 		accLambdaQueryWrapper.orderByDesc(Acc::getCreateTime);
 		IPage<Acc> pages = new Page<>();
 		if ("1".equals(acc.getWhetherStatistics())) {

+ 11 - 0
blade-service/trade-finance/src/main/java/org/springblade/finance/controller/SettlementController.java

@@ -814,6 +814,17 @@ public class SettlementController extends BladeController {
 		return R.success("操作成功");
 	}
 
+	/**
+	 * 销售-收款结算(配件汽保)
+	 */
+	@PostMapping("/paymentApplyPartsQB")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "付销售-收款结算-生成-销售收费账单", notes = "传入销售申请对象")
+	public R paymentApplyPartsQB(@RequestBody ApplyDTO dto) {
+		settlementService.paymentApplyPartsQB(dto);
+		return R.success("操作成功");
+	}
+
 
 	/**
 	 * 删除单据账单

+ 2 - 0
blade-service/trade-finance/src/main/java/org/springblade/finance/service/ISettlementService.java

@@ -120,4 +120,6 @@ public interface ISettlementService extends IService<Settlement> {
 	Settlement cancelModifyHy(SettlementDTO dto);
 
 	boolean removeSettlementHy(List<Long> toLongList);
+
+	void paymentApplyPartsQB(ApplyDTO dto);
 }

+ 153 - 2
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -87,6 +87,8 @@ import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.feign.IOrderDescClient;
 import org.springblade.purchase.sales.feign.IOrderFeesClient;
 import org.springblade.purchase.sales.feign.IOrderItemsClient;
+import org.springblade.salesPart.feign.IMaintenanceClient;
+import org.springblade.salesPart.maintenance.entity.Maintenance;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
@@ -169,6 +171,8 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 
 	private final InvoiceItemMapper invoiceItemMapper;
 
+	private final IMaintenanceClient maintenanceClient;
+
 	private static final String DEFAULT_CHARSET = "UTF-8";
 
 	private static final String METHOD_POST = "POST";
@@ -913,6 +917,17 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 			shippingFeesR.getData().setSettlementAmount(decimal);
 			shippingFeesR.getData().setSettlementDate(null);
 			oceanShippingBillClient.updateOceanShippingFees(shippingFeesR.getData());
+		} else if (type == 12) {
+			Long srcFeesId = acc.getSrcFeesId();
+			if (srcFeesId == null) {
+				throw new SecurityException("操作失败,未获取到原业务信息");
+			}
+			Maintenance maintenance = new Maintenance();
+			maintenance.setStatus(4);
+			maintenance.setPaymentStatus("1");
+			maintenance.setSettlementAmount(new BigDecimal("0.00"));
+			maintenance.setId(acc.getSrcParentId());
+			maintenanceClient.updateMaintenance(maintenance);
 		}
 
 	}
@@ -1199,11 +1214,25 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 			accMapper.updateById(acc);
 			shippingFeesR.getData().setSettlementDate(new Date());
 			oceanShippingBillClient.updateOceanShippingFees(shippingFeesR.getData());
+		} else if (type == 12) {
+			BigDecimal receivedAmount = new BigDecimal("0.00");
+			if (ObjectUtils.isNotNull(items.getCurrentAmount())) {
+				receivedAmount = items.getCurrentAmount().add(ObjectUtils.isNotNull(items.getMemberBalance()) ? items.getMemberBalance() : new BigDecimal("0.00"));
+			} else {
+				receivedAmount = items.getThisAmount().add(ObjectUtils.isNotNull(items.getMemberBalance()) ? items.getMemberBalance() : new BigDecimal("0.00"));
+			}
+			receivedAmount = receivedAmount.add(acc.getSettlementAmount());
+			Maintenance maintenance = new Maintenance();
+			maintenance.setId(acc.getSrcId());
+			maintenance.setSettlementAmount(receivedAmount);
+			maintenance.setStatus(5);
+			maintenance.setPaymentStatus("2");
+			maintenanceClient.updateMaintenance(maintenance);
+			acc.setSettlementAmount(receivedAmount);
+			accMapper.updateById(acc);
 		} else {
 			throw new SecurityException("操作失败,财务类型为空无法结算");
 		}
-
-
 		//验证结算总金额是否超限
 
 		/*BigDecimal orderAmount = client.getSettlmentAmount();
@@ -3563,4 +3592,126 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 		baseMapper.deleteBatchIds(idList);
 		return true;
 	}
+
+	@Override
+	public void paymentApplyPartsQB(ApplyDTO dto) {
+		Acc acc = new Acc();
+		LambdaQueryWrapper<Acc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(Acc::getIsDeleted, 0);
+		if (ObjectUtils.isNotNull(dto.getTenantId())) {
+			lambdaQueryWrapper.eq(Acc::getTenantId, dto.getTenantId());
+		} else {
+			lambdaQueryWrapper.eq(Acc::getTenantId, AuthUtil.getTenantId());
+		}
+		lambdaQueryWrapper.eq(Acc::getSrcParentId, dto.getSrcParentId())
+			.eq(Acc::getSrcSysno, dto.getSrcSysno());
+		Acc selectAcc = accMapper.selectOne(lambdaQueryWrapper);
+		if (ObjectUtils.isNull(selectAcc)) {
+			BeanUtils.copyProperties(dto, acc);
+			acc.setAccDate(new Date());
+			acc.setCreateTime(new Date());
+			accMapper.insert(acc);
+		} else {
+			BeanUtils.copyProperties(selectAcc, acc);
+			BeanUtils.copyProperties(dto, acc);
+			Long id = selectAcc.getId();
+			if (ObjectUtils.isNotNull(dto.getSettlementList()) && dto.getSettlementList().size() > 0) {
+				for (Settlement settlement : dto.getSettlementList()) {
+					if (settlement.getId() == null) {
+						Settlement model = new Settlement();
+						model.setSalesCompany(dto.getCompanyid());
+						model.setSrcOrderno(acc.getAccSysNo());
+						model.setBillType(settlement.getBillType());
+						model.setCorpId(acc.getCorpId());
+						model.setCorpName(acc.getCorpName());
+						model.setPlanSettlementDate(acc.getRetrieval());
+						model.setSettlementDate(settlement.getSettlementDate());
+						model.setCurrency(acc.getCurrency());
+						model.setExchangeRate(acc.getExchangeRate());
+						model.setAmount(settlement.getAmount());
+						model.setAccountName(settlement.getAccountName());
+						model.setAccountBank(settlement.getAccountBank());
+						model.setAccountNo(settlement.getAccountNo());
+						model.setRemark(settlement.getRemark());
+						model.setFoundStatus("结算完成");
+						model.setFinanceStatus("结算完成");
+						model.setBillNo(acc.getSrcBillNo());
+						model.setDc(acc.getDc());
+						model.setSrcBillId(acc.getSrcId());
+						model.setItemType(acc.getItemType());
+						model.setSysNo(String.valueOf(System.currentTimeMillis()));
+						model.setPaymentStatus(dto.getPaymentStatus());
+						model.setPaymentType(dto.getPaymentType());
+						model.setMemberBalance(dto.getMemberBalance());
+						if (ObjectUtils.isNotNull(dto.getTenantId())) {
+							model.setTenantId(dto.getTenantId());
+						} else {
+							model.setTenantId(AuthUtil.getTenantId());
+							model.setCreateUser(AuthUtil.getUserId());
+						}
+						model.setCreateTime(new Date());
+						model.setAccId(acc.getId());
+						model.setAccount(settlement.getAccount());
+						model.setOverPayment(settlement.getOverPayment());
+						baseMapper.insert(model);
+
+						Items items = new Items();
+						items.setItemId(acc.getSrcFeesId());
+						items.setCorpId(acc.getCorpId());
+						items.setQuantity(acc.getQuantity());
+						items.setUnit(acc.getUnit());
+						items.setPrice(settlement.getAmount());
+						items.setAmount(settlement.getAmount());
+						items.setThisAmount(settlement.getAmount());
+						items.setSrcOrderno(acc.getSrcSysno());
+						items.setSrcBillNo(acc.getSrcBillNo());
+						items.setCurrency(acc.getCurrency());
+						items.setExchangeRate(acc.getExchangeRate());
+						items.setTaxRate(acc.getTaxRate());
+						items.setItemType(acc.getBillType());
+						items.setSrcParentId(acc.getSrcParentId());
+						items.setSrcFeesId(acc.getSrcFeesId());
+						items.setSrcType(acc.getSrcType());
+						items.setCostType(acc.getCostType());
+						items.setBillNo(acc.getSrcBillNo());
+						items.setTradeType(acc.getTradeType());
+						items.setAccId(id);
+						items.setPid(model.getId());
+						if (ObjectUtils.isNotNull(dto.getTenantId())) {
+							items.setTenantId(dto.getTenantId());
+						} else {
+							items.setTenantId(AuthUtil.getTenantId());
+							items.setCreateUser(AuthUtil.getUserId());
+							items.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+						}
+						items.setCreateTime(new Date());
+						items.setMemberBalance(dto.getMemberBalance());
+						items.setSettlmentAmount(settlement.getAmount());
+						items.setSettlementAmount(settlement.getAmount());
+						items.setTradeType(acc.getTradeType());
+						itemsMapper.insert(items);
+
+						/** 确认收款增加回填销售单未收款和已收款 */
+						BigDecimal receivedAmount = dto.getAmount();
+						Maintenance maintenance = new Maintenance();
+						maintenance.setId(acc.getSrcId());
+						maintenance.setSettlementAmount(receivedAmount);
+						maintenance.setStatus(5);
+						maintenance.setPaymentStatus("2");
+						maintenanceClient.updateMaintenance(maintenance);
+						acc.setSettlementAmount(receivedAmount);
+						accMapper.updateById(acc);
+						/** 确认收款增加回填销售单未收款和已收款 */
+					}
+					acc.setSettlementAmount(dto.getAmount());
+					acc.setId(id);
+					acc.setUpdateTime(new Date());
+					if (ObjectUtils.isNull(dto.getTenantId())) {
+						acc.setUpdateUser(AuthUtil.getUserId());
+					}
+					accMapper.updateById(acc);
+				}
+			}
+		}
+	}
 }