Browse Source

应收应付相关逻辑

ioioio 4 years ago
parent
commit
2830693680

+ 4 - 0
blade-service-api/blade-check-api/src/main/java/org/springblade/check/vo/AuditOrderVO.java

@@ -6,6 +6,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.check.entity.AuditProecess;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 @Data
@@ -21,4 +22,7 @@ public class AuditOrderVO extends AuditProecess
 
 	 @ApiModelProperty(value = "订单日期")
  	 private Date orderDate;
+
+	@ApiModelProperty(value = "订单日期")
+	private BigDecimal amount;
 }

+ 3 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/OrderFees.java

@@ -175,5 +175,8 @@ public class OrderFees implements Serializable {
 	//@TableField(exist = false)
 	private String corpName;
 
+	@ApiModelProperty(value = "1.应收 2.应付")
+	private int feesType;
+
 
 }

+ 30 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/feign/IOrderFeesClient.java

@@ -0,0 +1,30 @@
+package org.springblade.purchase.sales.feign;
+
+import org.springblade.common.constant.LauncherConstant;
+import org.springblade.core.tool.api.R;
+import org.springblade.purchase.sales.entity.Order;
+import org.springblade.purchase.sales.entity.OrderFees;
+import org.springblade.purchase.sales.entity.OrderItems;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.validation.Valid;
+import java.math.BigDecimal;
+
+@FeignClient(
+	value = LauncherConstant.APPLICATION_PURCHASE_SALES_NAME
+)
+public interface IOrderFeesClient {
+
+
+
+	@GetMapping("/orderfees/detail")
+	R<OrderFees> detail(OrderFees orderFees);
+
+	@PostMapping("/orderfees/submit")
+	R submit(@RequestBody OrderFees orderFees);
+
+}

+ 8 - 0
blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/entity/Acc.java

@@ -287,4 +287,12 @@ public class Acc implements Serializable {
 	@TableField(exist = false)
 	private String createEndDate;
 
+	@ApiModelProperty(value = "采购or销售 费用明细id")
+	@TableField("Src_fees_id")
+	private Long srcFeesId;
+
+	@ApiModelProperty(value = "类型: 1.采购or销售主表货款申请 2. 采购or销售-费用明细申请")
+	@TableField("Src_type")
+	private int srcType;
+
 }

+ 8 - 0
blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/entity/Items.java

@@ -207,4 +207,12 @@ public class Items implements Serializable {
 	@ApiModelProperty(value = "本次金额")
 	private BigDecimal thisAmount;
 
+	@ApiModelProperty(value = "采购or销售 费用明细id")
+	@TableField("Src_fees_id")
+	private Long srcFeesId;
+
+	@ApiModelProperty(value = "类型: 1.采购or销售主表货款申请 2. 采购or销售-费用明细申请")
+	@TableField("Src_type")
+	private int srcType;
+
 }

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

@@ -2,6 +2,7 @@ package org.springblade.finance.feign;
 
 import io.swagger.annotations.ApiParam;
 import org.springblade.core.tool.api.R;
+import org.springblade.finance.entity.Settlement;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -27,5 +28,6 @@ public interface IFinanceClient
     @GetMapping("/settlement/getFinanceAcc")
 	R getFinanceAcc(@RequestParam("accSysNo")String accSysNo);
 
-
+	@GetMapping("/settlement/detail")
+	R<Settlement> detail(Settlement settlement);
 }

+ 2 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/OrderFees.java

@@ -161,5 +161,7 @@ public class OrderFees extends OrderBase {
 	@TableField(exist = false)
 	private String corpName;
 
+	@ApiModelProperty(value = "1.应收 2.应付")
+	private int feesType;
 
 }

+ 18 - 0
blade-service/blade-check/src/main/java/org/springblade/check/controller/AuditProecessController.java

@@ -35,6 +35,8 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.finance.entity.Settlement;
+import org.springblade.finance.feign.IFinanceClient;
 import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.feign.IOrderDescClient;
 import org.springblade.system.user.feign.IUserClient;
@@ -42,6 +44,7 @@ import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -64,6 +67,8 @@ public class AuditProecessController extends BladeController {
 
 	private final ICorpsDescClient corpsDescClient;
 
+	private final IFinanceClient financeClient;
+
 	/**
 	 * 分页 审批流记录
 	 */
@@ -82,6 +87,7 @@ public class AuditProecessController extends BladeController {
 			auditProecessList.forEach(e->{
 				AuditOrderVO auditOrderVO=new AuditOrderVO();
 				BeanUtil.copyProperties(e,auditOrderVO);
+				//采购销售表相关数据
 				if(e.getBillId()!=null)
 				{
 					Order order = orderDescClient.getById(e.getBillId());
@@ -96,6 +102,18 @@ public class AuditProecessController extends BladeController {
 
 					}
 				}
+				//财务明细表相关数据
+				if(e.getSrcBillId()!=null)
+				{
+					Settlement settlement=new Settlement();
+					settlement.setId(e.getSrcBillId());
+					R<Settlement> detail = financeClient.detail(settlement);
+					if(detail.isSuccess())
+					{
+						BigDecimal amount = detail.getData().getAmount();
+						auditOrderVO.setAmount(amount);
+					}
+				}
 				auditOrderVOS.add(auditOrderVO);
 
 			});

+ 91 - 28
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -42,7 +42,9 @@ import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.client.feign.ISerialClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.purchase.sales.entity.Order;
+import org.springblade.purchase.sales.entity.OrderFees;
 import org.springblade.purchase.sales.feign.IOrderDescClient;
+import org.springblade.purchase.sales.feign.IOrderFeesClient;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -76,6 +78,8 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 
     private ICheckClient iCheckClient;
 
+    private final IOrderFeesClient orderFeesClient;
+
 
 
 	@Override
@@ -110,7 +114,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 				e.setUpdateUser(AuthUtil.getUserId());
 				e.setUpdateUserName(AuthUtil.getUser().getRoleName());
 				itemsMapper.updateById(e);
-				cancelPayAcc(settlementDTO,e);
+				cancelPayAcc(settlementDTO,e,e.getSrcType());
 			});
 		}
 		model.setItemsList(itemsList);
@@ -154,7 +158,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 					e.setCreateUser(AuthUtil.getUserId());
 					e.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 					itemsMapper.insert(e);
-					payAcc(settlementDTO,e);
+					payAcc(settlementDTO,e,e.getSrcType());
 				});
 			}
 		}
@@ -181,7 +185,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 						e.setCreateUser(AuthUtil.getUserId());
 						e.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 						itemsMapper.insert(e);
-						payAcc(settlementDTO,e);
+						payAcc(settlementDTO,e,e.getSrcType());
 					}
 					else
 					{
@@ -190,7 +194,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 						e.setUpdateUser(AuthUtil.getUserId());
 						e.setUpdateUserName(AuthUtil.getUser().getRoleName());
 						itemsMapper.updateById(e);
-						payAcc(settlementDTO,e);
+						payAcc(settlementDTO,e,e.getSrcType());
 					}
 
 				});
@@ -225,7 +229,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 
 	}
 	//撤销
-	public void  cancelPayAcc(SettlementDTO settlementDTO,Items items)
+	public void  cancelPayAcc(SettlementDTO settlementDTO,Items items,int type)
 	{
 		Long accId = items.getAccId();
 		if(accId==null)
@@ -251,29 +255,58 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 		}
 		accMapper.updateById(acc);
 		//修改原业务表数据
-		Long srcParentId = acc.getSrcParentId();
-		if(srcParentId==null)
-		{
-			throw new SecurityException("撤销账单失败,未获取到原业务信息");
-		}
-		Order client = orderDescClient.getById(srcParentId);
-		if(client==null)
+		if(type==1)
 		{
-			throw new SecurityException("撤销账单失败,未获取到原业务信息");
+			Long srcParentId = acc.getSrcParentId();
+			if(srcParentId==null)
+			{
+				throw new SecurityException("撤销账单失败,未获取到原业务信息");
+			}
+			Order client = orderDescClient.getById(srcParentId);
+			if(client==null)
+			{
+				throw new SecurityException("撤销账单失败,未获取到原业务信息");
+			}
+			//回退原业务表数据
+			if(client.getSettlmentAmount() == null)
+			{
+				throw new SecurityException("撤销账单失败,原业务表已收金额为空");
+			}
+			client.setSettlmentAmount(client.getSettlmentAmount().subtract(items.getThisAmount()));
+			orderDescClient.updateOrder(client);
 		}
-		//回退原业务表数据
-		if(client.getSettlmentAmount() == null)
+		//修改费用明细
+		else if(type==2)
 		{
-			throw new SecurityException("撤销账单失败,原业务表已收金额为空");
+			Long srcFeesId = acc.getSrcFeesId();
+			if(srcFeesId==null)
+			{
+				throw new SecurityException("撤销账单失败,未获取到原业务信息");
+			}
+			OrderFees orderFees=new OrderFees();
+			orderFees.setId(srcFeesId);
+			orderFees.setTenantId(AuthUtil.getTenantId());
+			R<OrderFees> detail = orderFeesClient.detail(orderFees);
+			if(detail==null)
+			{
+				throw new SecurityException("修改原单据失败");
+			}
+			OrderFees fees = detail.getData();
+			//回退原业务表数据
+			if(fees.getSettlmentAmount() == null)
+			{
+				throw new SecurityException("撤销账单失败,原业务表已收金额为空");
+			}
+			fees.setSettlmentAmount(fees.getSettlmentAmount().subtract(items.getThisAmount()));
+			orderFeesClient.submit(fees);
 		}
-		client.setSettlmentAmount(client.getSettlmentAmount().subtract(items.getThisAmount()));
-		orderDescClient.updateOrder(client);
+
 	}
 
 
 
     //修改财务账单和订单表已收金额
-	public void  payAcc(SettlementDTO settlementDTO,Items items)
+	public void  payAcc(SettlementDTO settlementDTO,Items items,int type)
 	{
 		Long accId = items.getAccId();
 		if(accId==null)
@@ -295,18 +328,46 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 		}
 		accMapper.updateById(acc);
 		//修改原业务表数据
-		Long srcParentId = acc.getSrcParentId();
-		if(srcParentId==null)
+		if(type==1)
+		{   Long srcParentId = acc.getSrcParentId();
+			if(srcParentId==null)
+			{
+				throw new SecurityException("操作失败,未获取到原业务信息");
+			}
+			Order client = orderDescClient.getById(srcParentId);
+			if(client==null)
+			{
+				throw new SecurityException("修改原单据失败");
+			}
+			client.setSettlmentAmount(client.getSettlmentAmount()!=null?client.getSettlmentAmount().add(items.getThisAmount()):new BigDecimal("0").add(items.getThisAmount()));
+			orderDescClient.updateOrder(client);
+
+		}
+		//修改费用明细数据
+		else if(type==2)
 		{
-			throw new SecurityException("操作失败,未获取到原业务信息");
+			Long srcFeesId = acc.getSrcFeesId();
+			if(srcFeesId==null)
+			{
+				throw new SecurityException("操作失败,未获取到原业务信息");
+			}
+			OrderFees orderFees=new OrderFees();
+			orderFees.setId(srcFeesId);
+			orderFees.setTenantId(AuthUtil.getTenantId());
+			R<OrderFees> detail = orderFeesClient.detail(orderFees);
+			if(detail==null)
+			{
+				throw new SecurityException("修改原单据失败");
+			}
+			OrderFees fees = detail.getData();
+			fees.setSettlmentAmount(fees.getSettlmentAmount()!=null?fees.getSettlmentAmount().add(items.getThisAmount()):new BigDecimal("0").add(items.getThisAmount()));
+			orderFeesClient.submit(fees);
 		}
-		Order client = orderDescClient.getById(srcParentId);
-        if(client==null)
-        {
-        	throw new SecurityException("修改原单据失败");
+		else
+		{
+			throw new SecurityException("操作失败,财务类型为空无法结算");
 		}
-		client.setSettlmentAmount(client.getSettlmentAmount()!=null?client.getSettlmentAmount().add(items.getThisAmount()):new BigDecimal("0").add(items.getThisAmount()));
-		orderDescClient.updateOrder(client);
+
 		//验证结算总金额是否超限
 
 		/*BigDecimal orderAmount = client.getSettlmentAmount();
@@ -550,6 +611,8 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 				acc.setStatus(0);
 				acc.setCreateUser(AuthUtil.getUserId());
 				acc.setCostType(e.getCostType());
+				acc.setSrcFeesId(e.getSrcFeesId());
+				acc.setSrcType(e.getSrcType());
 				accMapper.insert(acc);
 
 				//绑定accId,从申请表传递给结算表,后续结算时操作账单表的结算金额