Ver código fonte

财务结算新增逻辑判断、商城新增状态统计

1021934019@qq.com 4 anos atrás
pai
commit
af99fa5fb1

+ 4 - 0
blade-service-api/trade-finance-api/src/main/java/com/trade/finance/entity/Items.java

@@ -186,4 +186,8 @@ public class Items implements Serializable {
 	@ApiModelProperty(value = "来源主表(业务模块 主表 id)")
 	@TableField("Src_parent_id")
 	private Long srcParentId;
+
+	@ApiModelProperty(value = "关联账单表id(申请结算-请核时候绑定accId)")
+	@TableField("acc_id")
+	private Long accId;
 }

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

@@ -145,10 +145,10 @@ public class EntranceOrderController extends BladeController {
 				//获取订单明细
 				List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", item.getId()).eq("is_deleted", 0));
 				if (CollectionUtils.isNotEmpty(list)){
-					item.setOrderQuantity(list.stream().map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO,BigDecimal::add));//数量合计
-					item.setAmount(list.stream().map(OrderItems::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add));//销售金额
-					item.setPurchaseAmount(list.stream().map(OrderItems::getPurchaseAmount).reduce(BigDecimal.ZERO,BigDecimal::add));//采购金额
-					item.setActualQuantity(list.stream().map(OrderItems::getActualQuantity).reduce(BigDecimal.ZERO,BigDecimal::add));//发货数量
+					item.setOrderQuantity(list.stream().filter(e->e.getOrderQuantity()!=null).map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO,BigDecimal::add));//数量合计
+					item.setAmount(list.stream().filter(e->e.getAmount()!=null).map(OrderItems::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add));//销售金额
+					item.setPurchaseAmount(list.stream().filter(e->e.getPurchaseAmount()!=null).map(OrderItems::getPurchaseAmount).reduce(BigDecimal.ZERO,BigDecimal::add));//采购金额
+					item.setActualQuantity(list.stream().filter(e->e.getActualQuantity()!=null).map(OrderItems::getActualQuantity).reduce(BigDecimal.ZERO,BigDecimal::add));//发货数量
 				}
 
 			});

+ 44 - 0
blade-service/store-goods/src/main/java/com/store/goods/controller/OrderController.java

@@ -32,6 +32,7 @@ import javax.validation.Valid;
 
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.system.user.entity.User;
@@ -43,7 +44,9 @@ import com.store.goods.vo.OrderVO;
 import com.store.goods.service.IOrderService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 订单表 控制器
@@ -217,4 +220,45 @@ public class OrderController extends BladeController {
 	}
 
 
+	/**
+	 * 统计各订单状态数量
+	 * */
+	 @GetMapping("countOrderStatus")
+	 @ApiOperationSupport(order = 8)
+	 @ApiOperation(value = "统计各订单状态数量", notes = "无需传入")
+	 public R countOrderStatus()
+	 {
+		 Map<String,Object> map=new HashMap<>();
+		 map.put("obligation",0);
+		 map.put("waitDeliver",0);
+		 map.put("dispatched",0);
+		 map.put("waitAppraise",0);
+		 map.put("afterSales",0);
+		 LambdaQueryWrapper<Order> orderLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		 orderLambdaQueryWrapper.eq(Order::getIsDeleted,0);
+		 orderLambdaQueryWrapper.eq(Order::getTenantId, AuthUtil.getTenantId());
+		 orderLambdaQueryWrapper.eq(Order::getUserId,AuthUtil.getTenantId());
+		 List<Order> orderList = orderService.list();
+		 if(CollectionUtils.isNotEmpty(orderList))
+		 {
+			 //obligation 待付款
+			 long count1 = orderList.stream().filter(e -> e.getOrderStatus() == 0).count();
+			 map.put("obligation",count1);
+			 //waitDeliver 待发货
+			 long count2 = orderList.stream().filter(e -> e.getOrderStatus() == 1).count();
+			 map.put("waitDeliver",count2);
+			 //dispatched 待收货
+			 long count3 = orderList.stream().filter(e -> e.getOrderStatus() == 2).count();
+			 map.put("dispatched",count3);
+			 //waitAppraise 待评价
+			 long count4 = orderList.stream().filter(e -> e.getOrderStatus() == 3).count();
+			 map.put("waitAppraise",count4);
+			 //afterSales  售后中
+			 long count5 = orderList.stream().filter(e -> e.getOrderStatus() == 6).count();
+			 map.put("afterSales",count5);
+		 }
+		 return R.data(map);
+
+	 }
+
 }

+ 13 - 1
blade-service/trade-finance/src/main/java/com/trade/finance/controller/SettlementController.java

@@ -197,9 +197,21 @@ public class SettlementController extends BladeController {
 	public R check (@RequestBody Settlement settlement)
 	{
 		settlementService.check(settlement);
-		return R.success("操作成功");
+		return R.data(settlement);
 	}
 
 
+	/**
+	 * 销售-收款结算
+	 * */
+	@PostMapping("/paymentApply")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "付销售-收款结算-生成-销售收费账单", notes = "传入销售申请对象")
+	public R paymentApply (@RequestBody ApplyDTO dto)
+	{
+		settlementService.paymentApply(dto.getItemsList(),dto.getBillType());
+		return R.success("操作成功");
+	}
+
 
 }

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

@@ -50,4 +50,6 @@ public interface ISettlementService extends IService<Settlement> {
 
 	void check(Settlement settlement);
 
+	void paymentApply(List<Items> itemsList, String billType);
+
 }

+ 42 - 3
blade-service/trade-finance/src/main/java/com/trade/finance/service/impl/SettlementServiceImpl.java

@@ -72,9 +72,9 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 		Settlement model=new Settlement();
 		BeanUtils.copyProperties(settlementDTO,model);
 		List<Files> filesList = settlementDTO.getFilesList();
-		List<Items> itemsList = settlementDTO.getItemsList();
+ 		List<Items> itemsList = settlementDTO.getItemsList();
 		//如果id=null, 无论主表还是从表, 必然都是新增
-		Long id = settlementDTO.getId();
+ 		Long id = settlementDTO.getId();
 		if(id==null)
 		{
 
@@ -94,6 +94,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 					e.setCreateUser(AuthUtil.getUserId());
 					e.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 					itemsMapper.insert(e);
+					payAcc(settlementDTO,e);
 				});
 			}
 		}
@@ -119,6 +120,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 						e.setCreateUser(AuthUtil.getUserId());
 						e.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
 						itemsMapper.insert(e);
+						payAcc(settlementDTO,e);
 					}
 					else
 					{
@@ -138,6 +140,19 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 
 	}
 
+	public void  payAcc(SettlementDTO settlementDTO,Items items)
+	{
+		Long accId = items.getAccId();
+		Acc acc = accMapper.selectById(accId);
+		if(acc==null)
+		{
+		   throw new SecurityException("扣款账单失败");
+		}
+		//结算成功后,更新acc表金额,采购收费 销售付费
+		acc.setSettlementAmount(acc.getSettlementAmount()!=null?acc.getSettlementAmount().add(items.getAmount()):new BigDecimal("0").add(items.getAmount()));
+		accMapper.updateById(acc);
+	}
+
 	@Override
 	@Transactional
 	public void apply(List<Items> itemsList, String billType)
@@ -181,18 +196,42 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 			items.forEach(e->{
 				  Acc acc=new Acc();
                   BeanUtils.copyProperties(e,acc);
+				  acc.setId(null);
 				  acc.setAccSysNo(e.getSrcOrderno());
 				  acc.setSrcParentId(e.getSrcParentId());
-				  acc.setBillType(e.getItemType());
 				  acc.setBillType(settlement.getBillType());
 				  acc.setCreateTime(new Date());
 				  acc.setStatus(0);
 				  acc.setCreateUser(AuthUtil.getUserId());
 				  accMapper.insert(acc);
+
+				  //绑定accId,从申请表传递给结算表,后续结算时操作账单表的结算金额
+				  e.setAccId(acc.getId());
+				  itemsMapper.updateById(e);
+
 			});
 		}
 		settlement.setCheckStatus("请核成功");
 		baseMapper.updateById(settlement);
 	}
 
+	@Override
+	@Transactional
+	public void paymentApply(List<Items> itemsList, String billType)
+	{
+		itemsList.forEach(e->{
+			Acc acc=new Acc();
+			BeanUtils.copyProperties(e,acc);
+			acc.setId(null);
+			acc.setAccSysNo(e.getSrcOrderno());
+			acc.setSrcParentId(e.getSrcParentId());
+			acc.setBillType(billType);
+			acc.setCreateTime(new Date());
+			acc.setStatus(0);
+			acc.setCreateUser(AuthUtil.getUserId());
+			accMapper.insert(acc);
+		});
+
+	}
+
 }