Browse Source

2022年11月2日20:16:47

纪新园 3 years ago
parent
commit
d4217c8761
20 changed files with 463 additions and 32 deletions
  1. 6 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/dto/CorpsDescDto.java
  2. 12 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java
  3. 101 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/OrderSettlementVo.java
  4. 10 0
      blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/vo/AppStockPartsVO.java
  5. 7 0
      blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/dto/SettlementDTO.java
  6. 6 0
      blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/feign/IFinanceClient.java
  7. 6 0
      blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/vojo/Acc.java
  8. 6 0
      blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/vojo/Items.java
  9. 8 0
      blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java
  10. 19 0
      blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescPartsController.java
  11. 1 1
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml
  12. 52 2
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/partsapp/AppPartsController.java
  13. 30 16
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  14. 6 1
      blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.xml
  15. 1 1
      blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java
  16. 51 6
      blade-service/trade-finance/src/main/java/org/springblade/finance/controller/AccController.java
  17. 19 0
      blade-service/trade-finance/src/main/java/org/springblade/finance/controller/ItemsController.java
  18. 12 0
      blade-service/trade-finance/src/main/java/org/springblade/finance/controller/SettlementController.java
  19. 2 0
      blade-service/trade-finance/src/main/java/org/springblade/finance/service/ISettlementService.java
  20. 108 5
      blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

+ 6 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/dto/CorpsDescDto.java

@@ -195,5 +195,11 @@ public class CorpsDescDto implements Serializable {
 	@ApiModelProperty(value = "备用电话")
 	private String telephone;
 
+	/**
+	 * app查询标识
+	 */
+	@TableField(exist = false)
+	private String appStatus;
+
 
 }

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

@@ -1056,6 +1056,18 @@ public class Order implements Serializable {
 	@TableField(exist = false)
 	private String collection;
 
+	/**
+	 * 账单id
+	 */
+	@TableField(exist = false)
+	private Long srcAccId;
+
+	/**
+	 * 电话
+	 */
+	@TableField(exist = false)
+	private String tel;
+
 
 
 }

+ 101 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/vo/OrderSettlementVo.java

@@ -0,0 +1,101 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.purchase.sales.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.finance.entity.InvoiceItem;
+import org.springblade.finance.vojo.Files;
+import org.springblade.finance.vojo.Items;
+import org.springblade.purchase.sales.entity.Order;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 批量收付费
+ *
+ * @author BladeX
+ * @since 2021-09-26
+ */
+@Data
+public class OrderSettlementVo implements Serializable {
+
+	@TableId
+	private Long id;
+	/**
+	 * 系统编号
+	 */
+	@ApiModelProperty(value = "系统编号")
+	@TableField("Sys_No")
+	private String sysNo;
+	/**
+	 * 客户id
+	 */
+	@ApiModelProperty(value = "客户id")
+	@TableField("Corp_id")
+	private Long corpId;
+	/**
+	 * 客户名称
+	 */
+	@ApiModelProperty(value = "客户名称")
+	@TableField("Corp_name")
+	private String corpName;
+	/**
+	 * 结算日期
+	 */
+	@ApiModelProperty(value = "结算日期")
+	private Date settlementDate;
+	/**
+	 * 金额
+	 */
+	@ApiModelProperty(value = "金额")
+	private BigDecimal amount;
+
+	/**
+	 * 溢付款
+	 */
+	@ApiModelProperty(value = "溢付款")
+	private BigDecimal overPayment;
+	/**
+	 * 本次溢付款
+	 */
+	@ApiModelProperty(value = "本次溢付款")
+	private BigDecimal caseOverPayment;
+
+	@ApiModelProperty(value = "账单id")
+	private Long accId;
+
+	@ApiModelProperty(value = "账户")
+	private String account;
+
+	@TableField(exist = false)
+	private List<Order> orderList;
+
+	@TableField(exist = false)
+	private List<Files> filesList;
+
+
+}

+ 10 - 0
blade-service-api/blade-stock-api/src/main/java/org/springblade/stock/vo/AppStockPartsVO.java

@@ -157,4 +157,14 @@ public class AppStockPartsVO {
 	 */
 	private Date updateTime;
 
+	/**
+	 * 期初库存
+	 */
+	private String arrears;
+
+	/**
+	 * 状态
+	 */
+	private String status;
+
 }

+ 7 - 0
blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/dto/SettlementDTO.java

@@ -17,6 +17,10 @@
 package org.springblade.finance.dto;
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import org.springblade.finance.entity.InvoiceItem;
+import org.springblade.finance.vojo.Acc;
 import org.springblade.finance.vojo.Files;
 import org.springblade.finance.vojo.Items;
 import org.springblade.finance.vojo.Settlement;
@@ -49,4 +53,7 @@ public class SettlementDTO extends Settlement {
 	private String originBillType;
 
 	private String belongCompany;
+
+	@ApiModelProperty(value = "账单明细")
+	private List<Acc> accList;
 }

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

@@ -107,4 +107,10 @@ public interface IFinanceClient {
 	@GetMapping("/settlement/deleteBySrcId")
 	R deleteBySrcId(@RequestParam(value = "srcId") Long srcId);
 
+	/**
+	 * 查询账单详情(通过单据id)
+	 */
+	@GetMapping("/acc/selectBySrcId")
+	Acc selectBySrcId(@RequestParam("srcId") Long srcId);
+
 }

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

@@ -382,5 +382,11 @@ public class Acc implements Serializable {
 	@TableField(exist = false)
 	private String company;
 
+	/**
+	 * 本次收款
+	 */
+	@TableField(exist = false)
+	private BigDecimal currentAmount;
+
 
 }

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

@@ -241,4 +241,10 @@ public class Items implements Serializable {
 	 */
 	@TableField(exist = false)
 	private Date stockTime;
+
+	/**
+	 * 本次收款
+	 */
+	@TableField(exist = false)
+	private BigDecimal currentAmount;
 }

+ 8 - 0
blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java

@@ -141,6 +141,10 @@ public class GoodsDescController extends BladeController {
 					 @RequestParam(name = "code", required = false) String code,
 					 @RequestParam(name = "goodsTypeId", required = false) String goodsTypeId,
 					 @RequestParam(name = "belongToCorpId", required = false) String belongToCorpId,
+					 @RequestParam(name = "status", required = false) String status,
+					 @RequestParam(name = "unit", required = false) String unit,
+					 @RequestParam(name = "remarks", required = false) String remarks,
+					 @RequestParam(name = "label", required = false) String label,
 					 @RequestParam(name = "artsVision", required = false) String artsVision) {
 		LambdaQueryWrapper<GoodsDesc> goodsDescLambdaQueryWrapper = new LambdaQueryWrapper<>();
 
@@ -174,8 +178,12 @@ public class GoodsDescController extends BladeController {
 		goodsDescLambdaQueryWrapper.like(!StringUtils.isBlank(cnameInt), GoodsDesc::getCnameInt, cnameInt);
 		goodsDescLambdaQueryWrapper.like(!StringUtils.isBlank(ename), GoodsDesc::getEname, ename);
 		goodsDescLambdaQueryWrapper.like(!StringUtils.isBlank(code), GoodsDesc::getCode, code);
+		goodsDescLambdaQueryWrapper.like(!StringUtils.isBlank(label), GoodsDesc::getCode, label);
+		goodsDescLambdaQueryWrapper.like(!StringUtils.isBlank(remarks), GoodsDesc::getCode, remarks);
 		goodsDescLambdaQueryWrapper.eq(GoodsDesc::getTenantId, AuthUtil.getTenantId());
 		goodsDescLambdaQueryWrapper.eq(GoodsDesc::getType, 0);
+		goodsDescLambdaQueryWrapper.eq(ObjectUtils.isNotNull(status),GoodsDesc::getStatus, status);
+		goodsDescLambdaQueryWrapper.eq(ObjectUtils.isNotNull(unit),GoodsDesc::getUnit, unit);
 		if (StringUtils.isNotEmpty(artsVision)) {
 			goodsDescLambdaQueryWrapper.and(i -> i.like(GoodsDesc::getArtsVision, artsVision).or().isNull(GoodsDesc::getArtsVision));
 		}

+ 19 - 0
blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescPartsController.java

@@ -43,6 +43,7 @@ import org.springblade.stock.feign.IStockGoodsClient;
 import org.springblade.stock.vo.StockGoodsVO;
 import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -173,4 +174,22 @@ public class GoodsDescPartsController extends BladeController {
 		redisClient.basicData("goods");
 		return R.status(status);
 	}
+
+	/**
+	 * 修改 商品详情表(禁用启用)
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入goodsDesc")
+	public R update(@Valid @RequestBody GoodsDesc goodsDesc) {
+		if (goodsDesc.getId() == null) {
+			return R.fail(500, "缺少参数");
+		}
+		R<List<OrderItems>> r = orderItemsClient.listByItemId(goodsDesc.getId(),null);
+		if (r.isSuccess() && r.getData().size()>0){
+			return R.fail(500, "该产品已有订单禁用失败");
+		}
+		boolean status = goodsDescService.updateById(goodsDesc);
+		return R.status(status);
+	}
 }

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

@@ -2495,7 +2495,7 @@ ORDER BY
                 AND BO.trade_type = #{order.tradeType}
             </if>
             <if test="order.time != null and order.time != '' and order.time == 1">
-                AND DATE_FORMAT(BO.busines_date,'%Y%m')=DATE_FORMAT(CURDATE(),'%Y%m');
+                AND DATE_FORMAT(BO.busines_date,'%Y%m')=DATE_FORMAT(CURDATE(),'%Y%m')
             </if>
             <if test="order.time != null and order.time != '' and order.time == 2">
                 AND PERIOD_DIFF(DATE_FORMAT(NOW(),'%Y%m'),DATE_FORMAT(BO.busines_date,'%Y%m'))

+ 52 - 2
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/partsapp/AppPartsController.java

@@ -38,10 +38,12 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.finance.feign.IFinanceClient;
+import org.springblade.finance.vojo.Acc;
 import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.service.IOrderItemsService;
 import org.springblade.purchase.sales.service.IOrderService;
+import org.springblade.purchase.sales.vo.OrderSettlementVo;
 import org.springblade.purchase.sales.vo.OrderVO;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
@@ -206,6 +208,10 @@ public class AppPartsController extends BladeController {
 						}
 					}
 				}
+				Acc acc = financeClient.selectBySrcId(item.getId());
+				if (ObjectUtils.isNotNull(acc)){
+					item.setSrcAccId(acc.getId());
+				}
 				//获取订单明细
 				/*List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", item.getId()).eq("is_deleted", 0));
 				if (CollectionUtils.isNotEmpty(list)) {
@@ -338,13 +344,57 @@ public class AppPartsController extends BladeController {
 	}
 
 	/**
-	 * 收付款
+	 * 收付款(单)
 	 */
 	@PostMapping("/collectPayment")
 	@ApiOperationSupport(order = 6)
-	@ApiOperation(value = "新增或修改", notes = "传入order")
+	@ApiOperation(value = "收付款(单)", notes = "传入order")
 	public R collectPayment(@Valid @RequestBody Order order) {
 		return orderService.collectPayment(order);
 	}
 
+	/**
+	 * 自定义分页 销售或采购订单表
+	 */
+	@GetMapping("/selectPageByCorp")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入order")
+	public R<IPage<Order>> selectPageByCorp(OrderVO order, Query query) {
+		LambdaQueryWrapper<Order> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(Order::getTenantId, SecureUtil.getTenantId());//租户id
+		lambdaQueryWrapper.eq(Order::getIsDeleted, 0);//订单是否有效
+		lambdaQueryWrapper.like(Func.isNotEmpty(order.getCorpId()), Order::getCorpId, order.getCorpId());//客户id
+		lambdaQueryWrapper.ge(Func.isNotEmpty(order.getOrderStartDate()), Order::getBusinesDate, order.getOrderStartDate());//订单日期开始
+		lambdaQueryWrapper.le(Func.isNotEmpty(order.getOrderEndDate()), Order::getBusinesDate, order.getOrderEndDate());//订单日期结束
+		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getBillType()), Order::getBillType, order.getBillType());
+		lambdaQueryWrapper.eq(Func.isNotEmpty(order.getTradeType()), Order::getTradeType, order.getTradeType());
+		if ("1".equals(order.getModular())) {
+			lambdaQueryWrapper.apply("debit_amount > settlment_amount");
+		}
+//		lambdaQueryWrapper.groupBy(Order::getCorpId);
+		IPage<Order> page = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
+
+		String corpIds = "";//客户拼接
+		for (Order orders : page.getRecords()) {
+			if (ObjectUtil.isNotEmpty(orders.getCorpId())) {
+				corpIds = corpIds + orders.getCorpId() + ",";
+			}
+		}
+		List<CorpsDesc> corpsDescList = corpsDescClient.selectByCorpIds(corpIds);
+		if (CollectionUtils.isNotEmpty(page.getRecords())) {
+			page.getRecords().stream().forEach(item -> {
+				if (item.getCorpId() != null) {
+					if (ObjectUtil.isNotEmpty(corpsDescList)) {
+						CorpsDesc corpsDesc = corpsDescList.stream().filter(d -> d.getId().equals(item.getCorpId())).findFirst().orElse(null);
+						if (ObjectUtils.isNotNull(corpsDesc)) {
+							item.setCorpsName(corpsDesc.getCname());
+							item.setTel(corpsDesc.getTel());
+						}
+					}
+				}
+			});
+		}
+		return R.data(page);
+	}
+
 }

+ 30 - 16
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -44,6 +44,7 @@ import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.finance.dto.ApplyDTO;
 import org.springblade.finance.feign.IFinanceClient;
+import org.springblade.finance.vojo.Acc;
 import org.springblade.finance.vojo.Items;
 import org.springblade.finance.vojo.Settlement;
 import org.springblade.purchase.sales.entity.*;
@@ -523,6 +524,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			//入库出库数量
 			order.setStorageQuantity(orderItemsList.stream().map(OrderItems::getStorageInQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 		}
+		if (ObjectUtils.isNull(order.getOrderAmount())){
+			order.setOrderAmount(order.getStorageAmount());
+		}
+		order.setDebitAmount(order.getOrderAmount());
+		order.setBalanceAmount(order.getOrderAmount());
 		baseMapper.updateById(order);
 		return R.data(order);
 	}
@@ -2050,6 +2056,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		//获取订单结算信息
 		List<Settlement> settlementList = financeClient.selectListBySrcId(order.getId());
 		orderMessage.setSettlementList(settlementList == null ? new ArrayList<>() : settlementList);
+		Acc acc = financeClient.selectBySrcId(orderMessage.getId());
+		if (ObjectUtils.isNotNull(acc)){
+			orderMessage.setSrcAccId(acc.getId());
+		}
 		return orderMessage;
 	}
 
@@ -2112,9 +2122,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		//获取订单结算信息
 		/*List<Settlement> settlementList = financeClient.selectListBySrcId(order.getId());
 		order.setSettlementList(settlementList);*/
-		if (ObjectUtils.isNotNull(selectOrder.getSettlmentAmount()) && order.getSettlementList().size() > 0) {
+//		if (ObjectUtils.isNotNull(selectOrder.getSettlmentAmount()) && order.getSettlementList().size() > 0) {
 			this.paymentApply(selectOrder, selectOrder.getBillType(), selectOrder.getTradeType());
-		}
+//		}
 //		}
 		return R.data(selectOrder);
 	}
@@ -2235,7 +2245,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 	@Override
 	public R collectPayment(Order order) {
-		Order selectOrder = baseMapper.selectById(order.getId());
+//		Order selectOrder = baseMapper.selectById(order.getId());
 		if (ObjectUtils.isNotNull(order.getCurrentAmount()) && !order.getCurrentAmount().equals(new BigDecimal(0))) {
 			List<Settlement> settlementList = new ArrayList<>();
 			if (ObjectUtils.isNotNull(order.getSettlementList()) && order.getSettlementList().size() > 0) {
@@ -2247,17 +2257,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			settlement.setAccount(order.getAccount());
 			settlement.setAmount(order.getCurrentAmount());
 			settlementList.add(settlement);
-			selectOrder.setSettlementList(settlementList);
-			this.paymentApply(selectOrder, selectOrder.getBillType(), selectOrder.getTradeType());
+			order.setSettlementList(settlementList);
+			this.paymentApply(order, order.getBillType(), order.getTradeType());
 		} else {
 			List<Settlement> settlementList1 = financeClient.selectListBySrcId(order.getId());
-			selectOrder.setSettlementList(settlementList1);
+			order.setSettlementList(settlementList1);
 			//获取订单结算信息
-			if (ObjectUtils.isNotNull(selectOrder.getSettlmentAmount()) && selectOrder.getSettlementList().size() > 0) {
-				this.paymentApply(selectOrder, selectOrder.getBillType(), selectOrder.getTradeType());
+			if (ObjectUtils.isNotNull(order.getSettlmentAmount()) && order.getSettlementList().size() > 0) {
+				this.paymentApply(order, order.getBillType(), order.getTradeType());
 			}
 		}
-		return R.data(selectOrder);
+		return R.data(order);
 	}
 
 	@Override
@@ -2756,7 +2766,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			}
 			applyDTO.setSettlementList(order.getSettlementList());
 
-			amount = amount.add(order.getStorageAmount());
+			amount = amount.add(order.getOrderAmount());
 			quantity = quantity.add(new BigDecimal(1));
 			price = price.add(amount);
 
@@ -2769,7 +2779,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			applyDTO.setCurrency("CNY");
 			applyDTO.setExchangeRate(order.getExchangeRate());
 			applyDTO.setTaxRate(BigDecimal.ZERO);
-			applyDTO.setSrcType(1);
+			applyDTO.setSrcType(4);
 			applyDTO.setTradeType(order.getTradeType());
 			applyDTO.setChargeMember(order.getChargeMember());
 			applyDTO.setUnit("条");
@@ -2793,15 +2803,19 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			applyDTO.setPrice(price);
 			applyDTO.setQuantity(quantity);
 			applyDTO.setReceivedAmount(order.getCurrentAmount());
-			applyDTO.setSettlementAmount(order.getSettlmentAmount());
+			if (ObjectUtils.isNotNull(order.getCurrentAmount())){
+				applyDTO.setSettlementAmount(order.getSettlmentAmount().add(order.getCurrentAmount()));
+			}
 			if (ObjectUtils.isNotNull(order.getSettlementList()) && order.getSettlementList().size() > 0) {
-				List<Settlement> settlementList = order.getSettlementList().stream().filter(o -> o.getAccId() != null).collect(Collectors.toList());
-				applyDTO.setId(settlementList.get(0).getAccId());
-
+			/*	List<Settlement> settlementList = order.getSettlementList().stream().filter(o -> o.getAccId() != null).collect(Collectors.toList());
+				if (ObjectUtils.isNotNull(settlementList) && settlementList.size() > 0){
+					applyDTO.setId(settlementList.get(0).getAccId());
+				}else{*/
+					applyDTO.setId(order.getSrcAccId());
+//				}
 				BigDecimal receivedAmount = order.getCurrentAmount();
 				receivedAmount = receivedAmount.add(order.getSettlmentAmount());
 				amount = amount.subtract(receivedAmount);
-
 				Order order1 = new Order();
 				order1.setId(order.getId());
 				order1.setSettlmentAmount(receivedAmount);

+ 6 - 1
blade-service/blade-stock/src/main/java/org/springblade/stock/mapper/StockGoodsMapper.xml

@@ -145,7 +145,9 @@
         t4.cname AS goodsType,
         t5.url AS url,
         t1.remarks AS remarks,
-        t1.update_time AS updateTime
+        t1.update_time AS updateTime,
+        t1.arrears AS arrears,
+        t1.status AS status
         FROM
         business_stock_goods t1
         LEFT JOIN basic_storage_desc t2 ON t1.storage_id = t2.id
@@ -168,6 +170,9 @@
             <if test="stock.labels != null and stock.labels != ''">
                 and find_in_set(t3.label,#{stock.labels})
             </if>
+            <if test="stock.status != null and stock.status != ''">
+                and t1.status = #{stock.status}
+            </if>
             <if test="stock.inventoryBalance != null and stock.inventoryBalance != '' and stock.inventoryBalance == 0">
                 and t1.surplus_route_quantity > 0
             </if>

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

@@ -99,7 +99,7 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 		LambdaQueryWrapper<StockGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(Func.isNotEmpty(corpId), StockGoods::getCorpId, corpId);//客户id
 		lambdaQueryWrapper.eq(Func.isNotEmpty(storageId), StockGoods::getStorageId, storageId);//仓库id
-		lambdaQueryWrapper.isNull(Func.isNull(storageId), StockGoods::getStorageId);//仓库id
+//		lambdaQueryWrapper.isNull(Func.isNull(storageId), StockGoods::getStorageId);//仓库id
 		lambdaQueryWrapper.eq(Func.isNotEmpty(goodId), StockGoods::getGoodsId, goodId);//商品id
 		lambdaQueryWrapper.eq(Func.isNotEmpty(itemType), StockGoods::getItemType, itemType);//产品型号
 		lambdaQueryWrapper.isNull(Func.isEmpty(itemType), StockGoods::getItemType);//产品型号

+ 51 - 6
blade-service/trade-finance/src/main/java/org/springblade/finance/controller/AccController.java

@@ -46,6 +46,7 @@ import org.springblade.finance.excel.FeeStatisticsExcelJTMC;
 import org.springblade.finance.service.IAccService;
 import org.springblade.finance.vo.AccVO;
 import org.springblade.finance.vojo.Acc;
+import org.springblade.purchase.sales.vo.OrderSettlementVo;
 import org.springblade.purchase.sales.vo.PurchaseOrderBExcel;
 import org.springblade.system.entity.Tenant;
 import org.springblade.system.feign.ITenantClient;
@@ -180,7 +181,7 @@ public class AccController extends BladeController {
 			if (e.getCorpId() != null) {
 				if (ObjectUtil.isNotEmpty(corpsDescList)) {
 					CorpsDesc corpsDesc = corpsDescList.stream().filter(d -> d.getId().equals(e.getCorpId())).findFirst().orElse(null);
-					if (ObjectUtils.isNotNull(corpsDesc)){
+					if (ObjectUtils.isNotNull(corpsDesc)) {
 						e.setCorpName(corpsDesc.getCname());
 					}
 				}
@@ -464,9 +465,9 @@ public class AccController extends BladeController {
 		}
 		List<CorpsDesc> corpsDescList = corpsDescClient.selectByCorpIds(corpIds);
 		pages.forEach(e -> {
-			if (e.getDc().equals("d")){
+			if (e.getDc().equals("d")) {
 				e.setDc("收费");
-			}else{
+			} else {
 				e.setDc("付费");
 			}
 			//录入人
@@ -482,7 +483,7 @@ public class AccController extends BladeController {
 			if (e.getCorpId() != null) {
 				if (ObjectUtil.isNotEmpty(corpsDescList)) {
 					CorpsDesc corpsDesc = corpsDescList.stream().filter(d -> d.getId().equals(e.getCorpId())).findFirst().orElse(null);
-					if (ObjectUtils.isNotNull(corpsDesc)){
+					if (ObjectUtils.isNotNull(corpsDesc)) {
 						e.setCorpName(corpsDesc.getCname());
 					}
 				}
@@ -491,7 +492,7 @@ public class AccController extends BladeController {
 			if (e.getCompanyid() != null) {
 				if (ObjectUtil.isNotEmpty(corpsDescList)) {
 					CorpsDesc corpsDesc = corpsDescList.stream().filter(d -> d.getId().equals(e.getCompanyid())).findFirst().orElse(null);
-					if (ObjectUtils.isNotNull(corpsDesc)){
+					if (ObjectUtils.isNotNull(corpsDesc)) {
 						e.setCompany(corpsDesc.getCname());
 					}
 				}
@@ -570,7 +571,7 @@ public class AccController extends BladeController {
 			if (e.getCorpId() != null) {
 				if (ObjectUtil.isNotEmpty(corpsDescList)) {
 					CorpsDesc corpsDesc = corpsDescList.stream().filter(d -> d.getId().equals(e.getCorpId())).findFirst().orElse(null);
-					if (ObjectUtils.isNotNull(corpsDesc)){
+					if (ObjectUtils.isNotNull(corpsDesc)) {
 						e.setCorpName(corpsDesc.getCname());
 					}
 				}
@@ -580,4 +581,48 @@ public class AccController extends BladeController {
 		return R.data(pages);
 	}
 
+
+	/**
+	 * 查询账单详情(通过单据id)
+	 */
+	@GetMapping("/selectBySrcId")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入acc")
+	public Acc selectBySrcId(@RequestParam("srcId") Long srcId) {
+		Acc acc = new Acc();
+		acc.setIsDeleted(0);
+		acc.setSrcId(srcId);
+		acc.setTenantId(SecureUtil.getTenantId());
+		Acc detail = accService.getOne(Condition.getQueryWrapper(acc));
+		return detail;
+	}
+
+	/**
+	 * 分页 财务账单
+	 */
+	@GetMapping("/corpAccList")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入acc")
+	public R<List<Acc>> corpAccList(Acc acc) {
+		LambdaQueryWrapper<Acc> accLambdaQueryWrapper = new LambdaQueryWrapper<>();
+
+		if (acc.getFlag() != null && acc.getFlag() == 1) {
+			accLambdaQueryWrapper.apply(" Amount - Settlement_Amount > 0");
+		}
+		accLambdaQueryWrapper.eq(StringUtils.isNotBlank(acc.getBillType()), Acc::getBillType, acc.getBillType())
+			.eq(acc.getCorpId() != null, Acc::getCorpId, acc.getCorpId())
+			.eq(StringUtils.isNotBlank(acc.getItemType()), Acc::getItemType, acc.getItemType())
+			.eq(StringUtils.isNotBlank(acc.getTradeType()), Acc::getTradeType, acc.getTradeType())
+			.eq(StringUtils.isNotBlank(acc.getDc()), Acc::getDc, acc.getDc())
+			.eq(Acc::getTenantId, SecureUtil.getTenantId())
+			.eq(Acc::getIsDeleted, 0)
+			.eq(Acc::getStatus, 0)
+			.orderByDesc(Acc::getCreateTime);
+		List<Acc> pages = accService.list(accLambdaQueryWrapper);
+		pages.forEach(e -> {
+			e.setOutstandingAmount(e.getAmount().subtract(e.getSettlementAmount()));
+		});
+		return R.data(pages);
+	}
+
 }

+ 19 - 0
blade-service/trade-finance/src/main/java/org/springblade/finance/controller/ItemsController.java

@@ -16,6 +16,9 @@
  */
 package org.springblade.finance.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.finance.vojo.Items;
 import org.springblade.finance.service.IItemsService;
 import org.springblade.finance.vo.ItemsVO;
@@ -122,5 +125,21 @@ public class ItemsController extends BladeController {
 		return R.status(itemsService.removeItems(Func.toLongList(ids)));
 	}
 
+	/**
+	 * 分页 结算明细
+	 */
+	@GetMapping("/selectList")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入items")
+	public R<IPage<Items>> selectList(Items items, Query query) {
+		LambdaQueryWrapper<Items> itemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		itemsLambdaQueryWrapper.eq(Items::getTenantId, AuthUtil.getTenantId())
+			.eq(Items::getIsDeleted,0)
+			.eq(ObjectUtils.isNotNull(items.getTradeType()),Items::getTradeType,items.getTradeType())
+			.eq(ObjectUtils.isNotNull(items.getTradeType()),Items::getSrcOrderno,items.getSrcOrderno());
+		IPage<Items> pages = itemsService.page(Condition.getPage(query), Condition.getQueryWrapper(items));
+		return R.data(pages);
+	}
+
 
 }

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

@@ -53,6 +53,7 @@ import org.springblade.finance.vo.SettlementVO;
 import org.springblade.finance.vojo.Acc;
 import org.springblade.finance.vojo.Items;
 import org.springblade.finance.vojo.Settlement;
+import org.springblade.purchase.sales.vo.OrderSettlementVo;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
@@ -667,4 +668,15 @@ public class SettlementController extends BladeController {
 		return R.data(accService.deleteBySrcId(srcId));
 	}
 
+	/**
+	 * 收付款(批量-配件)
+	 */
+	@PostMapping("/collectPaymentList")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "收付款(批量)", notes = "传入order")
+	public R collectPaymentList( @RequestBody SettlementDTO dto) {
+		Settlement modify = settlementService.modifyParts(dto);
+		return R.data(modify);
+	}
+
 }

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

@@ -100,4 +100,6 @@ public interface ISettlementService extends IService<Settlement> {
 	 * @param srcId
 	 */
     void deleteBySrcId(Long srcId);
+
+	Settlement modifyParts(SettlementDTO dto);
 }

+ 108 - 5
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -42,6 +42,7 @@ import org.springblade.client.feign.ISerialClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.deliver.goods.entity.DeliveryFees;
@@ -747,6 +748,19 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 			deliveryFees.setSettlmentAmount(deliveryFees.getSettlmentAmount() != null ? deliveryFees.getSettlmentAmount().add(items.getThisAmount()) : new BigDecimal("0").add(items.getThisAmount()));
 			accMapper.updateById(acc);
 			deliveryClient.submitFees(deliveryFees);
+		}  else if (type == 4) {
+			BigDecimal amount = BigDecimal.ZERO;
+			amount = acc.getAmount();
+			BigDecimal receivedAmount = items.getCurrentAmount();
+			receivedAmount = receivedAmount.add(acc.getSettlementAmount());
+			amount = amount.subtract(receivedAmount);
+			Order order1 = new Order();
+			order1.setId(acc.getSrcId());
+			order1.setSettlmentAmount(receivedAmount);
+			order1.setBalanceAmount(amount);
+			orderDescClient.updateOrder(order1);
+			acc.setSettlementAmount(receivedAmount);
+			accMapper.updateById(acc);
 		} else {
 			throw new SecurityException("操作失败,财务类型为空无法结算");
 		}
@@ -2288,7 +2302,8 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 	}
 
 	@Override
-	@Transactional
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public void paymentApplyParts(ApplyDTO dto) {
 		Acc acc = new Acc();
 		BeanUtils.copyProperties(dto, acc);
@@ -2300,8 +2315,6 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 		} else {
 			acc = accMapper.selectById(acc.getId());
 			Long id = acc.getId();
-			BigDecimal settlementAmount = new BigDecimal(0.00);
-			settlementAmount.add(acc.getSettlementAmount());
 			for (Settlement settlement : dto.getSettlementList()) {
 				if (settlement.getId() == null) {
 					Settlement model = new Settlement();
@@ -2361,9 +2374,8 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 					items.setTradeType(acc.getTradeType());
 					itemsMapper.insert(items);
 
-					settlementAmount = settlementAmount.add(settlement.getAmount());
 				}
-				acc.setSettlementAmount(settlementAmount);
+				acc.setSettlementAmount(dto.getSettlementAmount());
 				acc.setId(id);
 				acc.setUpdateTime(new Date());
 				acc.setUpdateUser(AuthUtil.getUserId());
@@ -2377,4 +2389,95 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 	public void deleteBySrcId(Long srcId) {
 		baseMapper.deleteBySrcId(srcId);
 	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
+	public Settlement modifyParts(SettlementDTO dto) {
+		Settlement model = new Settlement();
+		BeanUtils.copyProperties(dto, model);
+
+		List<Files> filesList = dto.getFilesList();
+		List<Acc> accList = dto.getAccList();
+		List<Items> itemsList = new ArrayList<>();
+		for (Acc acc:accList) {
+			Items items = new Items();
+			BeanUtils.copyProperties(acc, items);
+			items.setItemId(acc.getSrcFeesId());
+			items.setSrcOrderno(acc.getAccSysNo());
+			items.setItemType(acc.getBillType());
+			items.setBillNo(acc.getSrcBillNo());
+			items.setTradeType(acc.getTradeType());
+			itemsList.add(items);
+		}
+//		List<Items> itemsList = BeanUtil.copy(accList, Items.class);
+
+		//如果id=null, 无论主表还是从表, 必然都是新增
+		Long id = dto.getId();
+		if (id == null) {
+			model.setSysNo(dto.getBillType() + System.currentTimeMillis());
+			model.setFoundStatus("结算完成");
+			model.setTenantId(AuthUtil.getTenantId());
+			model.setCreateTime(new Date());
+			model.setCreateUser(AuthUtil.getUserId());
+			model.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+			baseMapper.insert(model);
+			dto.setId(model.getId());
+			dto.setSysNo(model.getSysNo());
+			dto.setFoundStatus("结算完成");
+			dto.setCreateTime(new Date());
+			dto.setCreateUserName(AuthUtil.getUserName());
+			if (CollectionUtils.isNotEmpty(itemsList)) {
+				itemsList.forEach(e -> {
+					e.setAccId(e.getId());
+					e.setId(null);
+					e.setPid(model.getId());
+					e.setTenantId(AuthUtil.getTenantId());
+					e.setCreateTime(new Date());
+					e.setCreateUser(AuthUtil.getUserId());
+					e.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+					e.setAmount(e.getCurrentAmount());
+					e.setThisAmount(e.getCurrentAmount());
+					itemsMapper.insert(e);
+					payAcc(dto, e, e.getSrcType());
+				});
+			}
+		}
+		//主表更新, 从表视情况更新新增
+		else {
+			model.setUpdateTime(new Date());
+			model.setUpdateUser(AuthUtil.getUserId());
+			model.setUpdateUserName(AuthUtil.getUser().getRoleName());
+			baseMapper.updateById(model);
+			if (CollectionUtils.isNotEmpty(itemsList)) {
+				itemsList.forEach(e -> {
+					if (e.getId() == null) {
+						e.setPid(model.getId());
+						e.setTenantId(AuthUtil.getTenantId());
+						e.setCreateTime(new Date());
+						e.setCreateUser(AuthUtil.getUserId());
+						e.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+						e.setAmount(e.getCurrentAmount());
+						e.setThisAmount(e.getCurrentAmount());
+						itemsMapper.insert(e);
+						payAcc(dto, e, e.getSrcType());
+					} else {
+						e.setAccId(e.getId());
+						e.setUpdateTime(new Date());
+						e.setUpdateUser(AuthUtil.getUserId());
+						e.setUpdateUserName(AuthUtil.getUser().getRoleName());
+						e.setAmount(e.getCurrentAmount());
+						e.setThisAmount(e.getCurrentAmount());
+						itemsMapper.updateById(e);
+						payAcc(dto, e, e.getSrcType());
+					}
+				});
+			}
+			model.setItemsList(itemsList);
+			model.setFoundStatus("结算完成");
+			//更新绑定
+			baseMapper.updateById(model);
+		}
+		return model;
+	}
 }